我读过 Kolmogorov-Smirnov 检验不应用于检验其参数已从样本中估计的分布的拟合优度。
将我的样本一分为二并使用前半部分进行参数估计和第二部分进行 KS 测试是否有意义?
提前致谢
我读过 Kolmogorov-Smirnov 检验不应用于检验其参数已从样本中估计的分布的拟合优度。
将我的样本一分为二并使用前半部分进行参数估计和第二部分进行 KS 测试是否有意义?
提前致谢
更好的方法是通过模拟计算 p 值的临界值。问题是,当您根据数据而不是使用假设值来估计参数时,KS 统计量的分布不遵循零分布。
相反,您可以忽略 KS 测试中的 p 值,而是从与真实数据大小相同的候选分布(具有一组有意义的参数)中模拟一堆数据集。然后为每组估计参数并使用估计的参数进行 KS 测试。您的 p 值将是模拟集中比原始数据更极端的测试统计数据的比例。
添加示例
这是一个使用 R 的示例(希望使用其他程序的人可以阅读/理解)。
使用正态分布作为原假设的简单示例:
tmpfun <- function(x, m=0, s=1, sim=TRUE) {
if(sim) {
tmp.x <- rnorm(length(x), m, s)
} else {
tmp.x <- x
}
obs.mean <- mean(tmp.x)
obs.sd <- sd(tmp.x)
ks.test(tmp.x, 'pnorm', mean=obs.mean, sd=obs.sd)$statistic
}
set.seed(20200319)
x <- rnorm(25, 100, 5)
out <- replicate(1000, tmpfun(x))
hist(out)
abline(v=tmpfun(x, sim=FALSE))
mean(out >= tmpfun(x, sim=FALSE))
该函数将根据实际数据 (sim=FALSE) 计算 KS 检验统计量,或者根据具有指定均值和 sd 的正态分布模拟相同大小的新数据集。然后在任何一种情况下,都将计算与具有与样本(原始或模拟)相同的均值和 sd 相同的正态分布的测试统计量。
然后代码运行 1,000 次模拟(随意更改和重新运行)以获取/近似在 NULL 下的测试统计分布(但带有估计的参数),然后最终将原始数据的测试统计与这个 NULL 分布进行比较。
我们可以模拟整个过程(模拟中的模拟)以查看它与默认 p 值的比较:
tmpfun2 <- function(B=1000) {
x <- rnorm(25, 100, 5)
out <- replicate(B, tmpfun(x))
p1 <- mean(out >= tmpfun(x, sim=FALSE))
p2 <- ks.test(x, 'pnorm', mean=mean(x), sd=sd(x))$p.value
return(c(p1=p1, p2=p2))
}
out <- replicate(1000, tmpfun2())
par(mfrow=c(2,1))
hist(out[1,])
hist(out[2,])
对于我的模拟,基于模拟的 p 值的直方图相当一致(这应该是因为 NULL 为真),但ks.test
函数的 p 值与 1.0 相比更加集中。
您可以通过让原始数据来自不同的分布或使用不同的 Null 分布等来更改模拟中的任何内容以估计功率。正态可能是最简单的,因为均值和方差是独立的,可能需要更多调整其他分布。
样本拆分可能会减少统计量分布的问题,但不会消除它。
您的想法避免了估计值相对于总体值“太接近”的问题,因为它们基于相同的样本。
你并没有避免他们仍然是估计的问题。检验统计量的分布不是列表中的分布。
在这种情况下,它会增加零下的拒绝率,而不是显着降低它。
更好的选择是使用假设参数未知的测试,例如 Shapiro Wilk。
如果您喜欢 Kolmogorov-Smirnov 类型的测试,您可以采用 Lilliefors 测试的方法。
即使用KS统计量但检验统计量的分布反映参数估计的效果——模拟参数估计下检验统计量的分布。(它不再是免分发的,因此您需要为每个分发创建新表。)
http://en.wikipedia.org/wiki/Lilliefors_test
Liliefors 对正态和指数情况使用了模拟,但您可以轻松地对任何特定分布进行模拟;在 R 之类的东西中,模拟 10,000 或 100,000 个样本并在零值下获得检验统计量的分布只是瞬间的问题。
[另一种选择可能是考虑 Anderson-Darling,它确实有同样的问题,但是从 D'Agostino 和 Stephens 的书(Goodness-of-fit-techniques)来看,它似乎对它不太敏感。你可以调整 Lilliefors 的想法,但他们建议进行一个相对简单的调整,似乎效果很好。]
但是还有其他方法;有一系列拟合优度的平滑测试,例如(例如,参见 Rayner 和 Best 的书),在许多特定情况下可以处理参数估计。
* 效果仍然相当大——可能比通常认为可以接受的要大;陌陌对此表示担忧是对的。如果较高的 I 类错误率(和更平坦的功率曲线)是一个问题,那么这可能不是一个改进!
恐怕这解决不了问题。我认为问题不在于参数是从同一样本估计的,而是从任何样本估计的。KS 检验的通常零分布的推导不考虑参考分布参数中的任何估计误差,而是将它们视为给定的。另请参阅Durbin 1973,他详细讨论了这个问题并提供了解决方案。