Kolmogorov-Smirnov检验:当存在联系时,应用于离散变量的两样本检验的精确p值

Kolmogorov-Smirnov检验:当存在联系时,应用于离散变量的两样本检验的精确p值,r,R,我从不同的地方得到了两个样本。我感兴趣的参数是离散的(频率)。我对两个站点都做了模拟,所以我知道每个站点的随机分布概率。由于我的模拟,我知道我的参数与其平均值的偏差不是正态分布的,所以我进行了参数测试。我用一个样本Kolmogorov-Smirnov检查样本是否来自这些随机分布(示例数据,非真实): 如果我理解正确(2001),有一种方法可以通过蒙特卡罗模拟计算出精确的p值,即通过断开连接。如果我正确理解dgof包的包描述,它的蒙特卡罗模拟实现只适用于一个样本测试 所以我的问题是:当存在联系时,

我从不同的地方得到了两个样本。我感兴趣的参数是离散的(频率)。我对两个站点都做了模拟,所以我知道每个站点的随机分布概率。由于我的模拟,我知道我的参数与其平均值的偏差不是正态分布的,所以我进行了参数测试。我用一个样本Kolmogorov-Smirnov检查样本是否来自这些随机分布(示例数据,非真实):

如果我理解正确(2001),有一种方法可以通过蒙特卡罗模拟计算出精确的p值,即通过断开连接。如果我正确理解dgof包的包描述,它的蒙特卡罗模拟实现只适用于一个样本测试

所以我的问题是:当存在联系时,有人知道如何计算离散变量的两样本Kolmogorov-Smirnov检验在R中的精确p值吗

或者(虽然与R无关):如果没有人知道如何在可承受的工作量下完成这项工作,我会选择未修正的p值,并因此谨慎地讨论结果。但p值低于0.0001。事实上,我并不过分担心。但是我知道什么。。。你认为这是对的还是我在这件事上犯了严重的错误


提前感谢,在此之前我已经感谢您的阅读。

如评论中所述,实现引导Kolmogorov-Smirnov,即使用
nboots
参数对任意数量的重新采样进行蒙特卡罗模拟。我想这会给你你所需要的。

根本不知道你是否可以在这里申请KS。
Kolmogorov-Smirnov是一种非参数检验,仅适用于连续的x和y数据。我猜你的样本1和样本2不够连续。引用
?统计::ks.test

如果y是数字,则对x和y的零假设进行两个样本检验 从相同的连续分布中提取

另见:

解决方案:尝试执行卡方拟合优度测试
R
中,您可以使用
?chisq.test

理论可以在这里找到,例如:


看看。如果离散观测值在两个数据集中不相同,则Chisq.test可能不适用于这两个数据集,因为您需要先建立一个列联表?@iraserd:Thants不幸的是,有些相关,。自我激励让我走上了正确的方向,而且这个方案似乎在社区中得到了广泛的接受,因此我将以奖金奖励这个答案。感谢奖金。是工具箱中最强大的统计技术之一。我鼓励每个人都去调查一下。谢谢你的建议。上面提到的包裹看起来正是我想要的。我肯定也会仔细研究引导。
sample1 <- rep(1:5, c(25, 12, 12, 0, 1))
rand.prob1 <- c(.51, .28, .111, .08, 0.019)
StepProb1 <- stepfun(0:4, c(0, cumsum(rand.prob1)), right = T)
dgof::ks.test(sample1, StepProb1)

sample2 <- rep(1:5, c(19, 13, 10, 5, 3))
rand.prob2 <- c(.61, .18, .14, .05, 0.02)
StepProb2 <- stepfun(0:4, c(0, cumsum(rand.prob2)), right = T)
dgof::ks.test(sample2, StepProb2)
stats::ks.test(sample1, sample2)
dgof::ks.test(sample1, sample2)