具有离散数据的Kolmogorov-Smirnov:在R中正确使用dgof :: ks.test是什么?


23

初学者问题:

我想测试两个离散数据集是否来自同一分布。我建议进行一次Kolmogorov-Smirnov检验。

Conover(《实用非参数统计》,3d)似乎说Kolmogorov-Smirnov检验可用于此目的,但其行为是“保守的”且具有离散分布,我不确定这在这里意味着什么。

DavidR 在另一个问题上评论说:“ ...您仍然可以基于KS统计量进行α级测试,但是您必须找到其他方法来获得临界值,例如通过仿真。”

dgof R软件包(articlecran)中的ks.test()版本增加了stats软件包的ks.test()默认版本中不存在的某些功能。除其他外,dgof :: ks.test包含以下参数:

Simulation.p.value:仅在离散拟合优度测试中指示是否通过蒙特卡洛模拟计算p值的逻辑。

Simulator.p.value = T的目的是完成DavidR的建议吗?

即使是这样,我也不确定是否可以真正使用dgof :: ks.test进行两个样本的测试。看起来它仅提供了两个样本的连续分布测试:

如果y是数字,则对从相同连续分布中得出x和y的零假设进行两次抽样检验。

或者,y可以是命名连续(累积)分布函数(或此类函数)的字符串,或给出离散分布的ecdf函数(或stepfun类的对象)。在这些情况下,对生成x的分布函数为分布y ...的零进行一次样本检验。

(背景细节:严格来说,我的基础分布是连续的,但是数据往往位于少数几个点附近。每个点都是模拟的结果,并且是-1和1之间的10或20个实数的平均值1.到模拟结束时,这些数字几乎总是非常接近.9或-.9,因此均值聚集在几个值附近,我将它们视为离散值,模拟很复杂,我没有认为数据遵循众所周知的分布的原因。)

忠告?


我刚刚注意到G博士在这里的评论暗示我需要ks.boot,但我仍然想知道dgof :: ks.test的模拟选项是否可以工作,以及“收敛”的含义是什么。
火星

Answers:


16

这是对@jbrucks扩展名的回答(但也回答了原来的问题)。

排列检验是一个关于2个样本是否来自相同种群/分布或是否存在差异的一般测试。选择一个感兴趣的统计数据,可以是KS检验统计数据,也可以是平均值差异或中位数差异或方差比或...(无论对您的问题最有意义的是,您都可以在可能的条件下进行模拟以查看哪个统计信息可以为您带来最佳效果),然后在原始的2个样本上计算该统计信息。然后,您在组之间随机置换观察值(将所有数据点分组到一个大池中,然后将它们随机分成与原始样本大小相同的2个组),并计算置换样本的关注统计量。重复一遍,样本统计信息的分布将构成您的零分布,然后将原始统计信息与此分布进行比较以形成检验。请注意,零假设是分布是相同的,而不仅仅是均值/中位数/等。相等。

如果您不想假设分布是相同的,但是想测试均值/中位数/等值的差异。那么您可以进行引导。

如果您知道数据来自什么分布(或至少愿意假设分布),则可以对参数的均等性进行似然比测试(将模型与两组的单个参数集进行比较)带有单独的参数集)。似然比测试通常使用卡方分布,在许多情况下(无符号),该分布很好,但是如果您使用小样本量或在边界附近测试参数(例如,方差为0),则近似值可能不是很好,您可以再次使用置换检验来获得更好的空分布。

这些测试均适用于连续或离散分布。您还应该包括一些功效的度量或置信区间,以指示不确定性的数量,重要性的缺乏可能是由于功效低或统计上的显着差异实际上仍然没有意义。


格雷格,谢谢。这是对jbruck问题的非常有用的一般答案,对我也有帮助。(我的问题更具体。也许范围太窄,无法期待答案。)
火星

1
@火星,我想我的回答至少间接回答了你的部分问题。常规KS检验不存在任何联系,并在原假设下使用理论模型进行检验统计。有了关系,理论模型并不精确,但是您可以改用模拟(置换测试,从零距离模拟等)来计算零分布并因此获得p值,等等。我想这就是模拟你提到的论点确实如此。
格雷格·斯诺
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.