簡體   English   中英

雙邊ks測試循環,得到p.value

[英]two sided ks test loop, get p.value

我有一列數據,我從中獲取50%的隨機子樣本。 我正在進行雙面ks測試,以比較50%的數據與100%的數據的分布,看看分布是否仍然非常重要。

為了達到我的目標,我想將其作為1000的循環運行,以獲得1000個隨機子樣本的平均p值。 這行代碼為我的50%樣本的隨機子集提供了單個p值:

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

我需要一行代碼來運行1000次,每次在一列中保存得到的(不同的)p值,然后我可以平均。 我正在嘗試上班的代碼如下所示:

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

但是,這不會存儲多個p值

還試過這個:

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

在for循環中,您將在每次迭代中覆蓋x ,這意味着您將僅保存最后一次迭代的p值。 試試這個:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM