Я пытаюсь измерить сигнал phylogeneti c в двух переменных, дискретной и непрерывной. Для этого я использую δ-statisti c (Borges et al, 2018) и K-statisti c (Blomberg 2003) соответственно. У меня есть дерево и два вектора, соответствующие моим переменным. Строка кода для этих двух статистических данных следующая:
1) delta(vector, tree, lambda0, se, sim, thin, burn)
2) phylosig(tree, vector, method = "K")
Я получаю одно значение каждый раз. Но я хотел бы рандомизировать свои векторы, чтобы проверить значимость исходных значений. Я хотел бы сделать 1000 повторений, а затем перейти к простому тесту значимости, но, поскольку я новый пользователь R, я не знаю, как это сделать. Я думаю примерно так:
Для δ:
%first repetition
random_vector <- sample(vector)
random_delta <- delta(vector, tree, lambda0, se, sim, thin, burn)
write.xlsx(random_delta, path)
%second repetition
random_vector <- sample(random_vector)
random_delta <- delta(vector, tree, lambda0, se, sim, thin, burn)
write.xlsx(random_delta, path, append = TRUE)
И так далее, до тех пор, пока 1000 δ-статистики не будут сохранены в одном .xlsx, готовом к использованию в тесте. .
Для K, я думаю, это немного отличается, поскольку это больше не вектор, а таблица с двумя столбцами (виды, значения):
%first repetition
random_vector <- sample(vector)
names(random_vector) <- tree$tip.label
random_K <- phylosig(tree, vector, method = "K")
write.xlsx(random_K, path)
%second rep
random_vector <- sample(random_vector)
names(random_vector) <- tree$tip.label
random_K <- phylosig(tree, vector, method = "K")
write.xlsx(random_delta, path, append = TRUE)
Et c.
Я думал об этом, но может у кого-то есть другая идея. В любом случае, я в игре.
Надеюсь, я ясно дал понять.
РЕДАКТИРОВАТЬ: Спасибо за ваши ответы. Да, al oop - это именно то, что мне нужно. И да, запись всех значений в один вектор кажется более подходящим, я согласен с вами.
С δ-statisti c сигнал phylogeneti c тем более важен в данных, как δ в приоритете. Но что такое кайф? Вот почему я хочу сделать 1000 итераций, чтобы вычислить p-значение и продемонстрировать, является ли исходное значение «исключительным» или нет. То же самое с K, который находится между 0 и 1 в присутствии сигнала phylogeneti c.
Вот более явный пример:
> library(phytools)
> trait_delta <- c(2,1,3,1,1,3,1,3,2,1,1,2,2,2,2,1,1,3,1,1)
> trait_K <- c(2,1,3,1,1,3,1,3,2,1,1,2,2,2,2,1,1,3,1,1)
> set.seed(25)
> ns <- 20
> tree <- rtree(ns)
> plot(tree)
>
> #delta
> lambda0 <- 0.1
> se <- 0.5
> sim <- 10000
> thin <- 10
> burn <- 100
>
> delta <- delta(trait_delta,tree,lambda0,se,sim,thin,burn)
> rand_values_delta <- c(print(delta))
>
> #to loop 999 times
> rand_trait_delta <- sample(trait_delta)
> rand_delta <- delta(rand_trait_delta,tree,lambda0,se,sim,thin,burn)
> rand_values_delta <- append(rand_values_delta, print(rand_delta), after =
> length(rand_values_delta+1))
>
>
> #K
> names(trait_K) <- tree$tip.label
> K <- phylosig(tree, trait_K, method = "K")
> rand_values_K <- c(K)
>
> #to loop 999 times
> rand_trait_K <- sample(trait_K)
> names(rand_trait_K) <- tree$tip.label
> rand_K <- phylosig(tree, rand_trait_K, method = "K")
> rand_values_K <- append(rand_values_K, rand_K, after =
> length(rand_values_K+1))