【发布时间】:2016-05-16 18:22:32
【问题描述】:
我有一列数据,我从中抽取 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))
我希望这很清楚,并且非常感谢任何帮助解决这个问题!
问
【问题讨论】:
-
这没有任何意义。您知道子样本是从完整变量中提取的,因此您知道 null 为真。你为什么做这个?您在这里的最终目标是什么?
-
感谢您的回复!我正在比较抽样策略的代表性,我有一个来自一种方法的 137 个样本的数据集,我的问题是需要多少样本才能通过随机抽样在统计上满足相同的代表性。因为整个数据集的空间覆盖非常好,所以不需要重新采样,因为我可以随机抽取一个子集。我的变量分布不正常,所以我想我可以通过使用两侧 ks 检验来确定 50% 的子样本是否代表完整样本的分布。
-
reply continue 唯一的问题是,50% 样本的随机子集可以给我一个介于 0.5 和 1 之间的 p 值,具体取决于我随机抽取的次数子样本。为了解决这个问题,我想我可以从随机化中获取 p 值 1000 次并对结果进行平均。只是还没有很好地学习 r 来构建代码。希望能解释一下
标签: r p-value kolmogorov-smirnov