如何在R语言K-S检验中指定位置、尺度及形状参数
R中单样本K-S检验的分布参数指定方法
要使检验结果有效,必须提前指定位置、尺度和形状参数。如果这些参数是从样本数据中估算得到的,会导致检验结果无效。如果您不知道这些参数,建议使用严谨性稍低的检验方法,例如经验分布函数相关文章中提到的检验方案。
R的ks.test函数支持在分布函数名后直接传入对应分布的预定义参数,这些参数依次对应目标分布的位置、尺度、形状参数,必须使用预先确定的理论值,不可使用样本估算的结果,以下是针对你两个测试场景的修正方案:
场景1:检验样本是否服从N(1,4)正态分布
正态分布pnorm的参数如下:
- 位置参数:
mean(均值) - 尺度参数:
sd(标准差,注意N(1,4)的方差为4,对应标准差为2)
无形状参数。
你原有代码未指定参数,默认对比标准正态分布N(0,1),修正后代码为:
ks.test(rnorm(10, 1, 4), "pnorm", mean = 1, sd = 2)
场景2:检验样本是否服从自由度为5的t分布
t分布pt的核心形状参数为df(自由度),标准t分布默认位置参数为0、尺度参数为1,你生成的rt(10,5)为标准t(5)分布,原有代码错误使用正态分布作为对比基准,修正后代码为:
ks.test(rt(10, 5), "pt", df = 5)
注意事项
- 上述代码中传入的
mean=1、sd=2、df=5均为生成数据时的已知理论参数,符合K-S检验的有效性要求。如果使用样本计算得到的均值、标准差、自由度代入,检验结果会失效。 - 样本量为10时K-S检验的检验效能极低,很难检出分布间的真实差异,条件允许的话建议提升样本量。
- 如果你无法预定义分布的全部参数,建议改用Lilliefors检验等适配参数估计场景的适配方法。
内容的提问来源于stack exchange,提问作者Statistical scientist
相关产品推荐
相关产品推荐

