Значение P перестановок в R - PullRequest
0 голосов
/ 04 марта 2019

Я довольно новичок в r

Я выполняю тест перестановки в R, чтобы определить, является ли процент вхождения некоторого SNP отрицательным или нет. Мои данные задают вектор значений 52K. Я делаю тестvia Loop as is:

R1_H <- R1[,12] #extract the vector from a dataframe

niter=100000       #set the number of iterations
out <- rep(0,length(R1_H))

for (i in 1:niter){
out = out + (R1_H <= sample(R1_H)) #compare my ocurrence against a 
                                 #sample of the entire population
}

pvalue=out/niter #determine the pvalue
R1$pvalueF = pvalue #print the pvalue

Проблема в том, что этот путь чрезвычайно медленный и требует много ресурсов.Кто-нибудь думает, что более эффективный способ сделать это?Большое спасибо

1 Ответ

0 голосов
/ 04 марта 2019

Я не совсем уверен, что вы делаете.Но несколько баллов.В R встроена функция replicate, специально разработанная для такого рода вещей.Один из вариантов, который вы можете использовать:

my_vector <- replicate(niter, 
                   expr = (R1_H <= sample(R1_H, replace = T)))

, который будет повторять expr для niter раз.В этом случае он выполнит выборку с заменой и вернет матрицу с количеством точек данных в столбцах R1_H и 10k.Тогда вы можете сделать что-то вроде:

mean(colMeans(my_vector))

Чтобы получить "pvalue", о котором вы пытаетесь сообщить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...