两侧 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)
我有一列数据,我从中抽取了 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)