2016-05-15 2 views
0

У меня есть столбец данных, из которого я беру рандомизированные подпрограммы 50%. Я выполняю двухсторонний тест ks, чтобы сравнить распределение 50% данных со 100% данных, чтобы узнать, по-прежнему ли распределяется распределение.двухсторонний ks test loop, get p.value

Для достижения моих целей я хочу запустить это как цикл 1000, чтобы получить среднее значение p из 1000 рандомизированных подкадров. Эта строка кода дает мне один р-значение для случайного подмножества 50% моего образца:

dat50=dat[sample(nrow(dat),replace=F,size=0.50*nrow(dat)),] 
ks.test(dat[,1],dat50[,1], alternative="two.sided") 

мне нужна строка кода, который будет работать это в 1000 раз экономии в результате (другое) р значение каждого время в столбце, которое я могу затем усреднить. Код, который я пытаюсь работать выглядит следующим образом:

x <- numeric(100) 
for (i in 1:100){ 
    x<- ks.test(dat[,7],dat50[,7], alternative="two.sided") 
    x<-x$p.value 
} 

Однако это не хранит множество р-значения

также попытался это:

get.p.value <- function(df1, df2) { 
    x <- rf(5, df1=df1, df2=df2) 
    p.value <- ks.test(dat[,6],dat50[,6], alternative="two.sided")$p.value 
} 
replicate (2000, get.p.value(df1 = 5, df2 = 10)) 

Я надеюсь, что понятно и я был бы признателен за любую помощь в решении этого!

Q

+2

Это не имеет никакого смысла. Вы знаете, что подвыборка была взята из полной переменной, поэтому вы знаете, что значение null является истинным. Зачем ты это делаешь? Какова ваша конечная цель здесь? – gung

+0

Спасибо за ответ! Я сравниваю репрезентативность стратегий выборки, у меня есть набор данных из 137 образцов из одного метода, и мой вопрос заключается в том, сколько выборок потребуется для того, чтобы статистическая сопоставление с одинаковой репрезентативностью проводилось с помощью случайной выборки. Поскольку пространственный охват полного набора данных очень хорош, нет необходимости в повторной выборке, потому что я могу взять произвольное подмножество. Распределения моих переменных не являются нормальными, поэтому я думаю, что могу определить, является ли 50% подвыборка репрезентативной для распределения полной выборки с использованием двухстороннего теста ks. –

+0

* ответ продолжался * Проблема только в том, что случайное подмножество в 50% образца может дать мне значение p где-то между 0,5 и 1 в зависимости от того, сколько раз я беру случайную подвыборку. Чтобы решить эту проблему, я подумал, что могу взять значения р из рандомизации 1000 раз и усреднить результат. Просто не достаточно научился г достаточно, чтобы построить код. Надеюсь, что это объясняет –

ответ

0

В ваш цикл перезаписи x в каждой итерации это означает, что вы только сохранить р-значение для последней итерации. Попробуйте вместо этого:

x <- numeric(100) 
for (i in 1:length(x)) 
    x[i] <- ks.test(dat[,17], dat[sample(nrow(dat), replace=F, size=0.5*nrow(dat)),7])$p.value 

Вы можете получить тот же результат с помощью replicate с:

replicate(100, ks.test(dat[,7], dat[sample(nrow(dat), replace=F, size=0.5*nrow(dat)),7])$p.value) 
+0

Большое спасибо! Кажется, что первая строка сработала! –

+0

Код «replicate» выглядит как: Ошибка в данных [sample (nrow (dat), replace = F, size = 0.5 * nrow (dat)),: Объект типа «замыкание» не является подмножеством Также я не знаю, где найти значения p для этого. Я могу вспомнить их в первом коде, просто нажав «x». Первый код работает сон, хотя так снова спасибо! –

+0

Исправлена ​​опечатка в примере '' 'replicate'''. – DGKarlsson