gpt4 book ai didi

python - python 的 ss.kstest 与 R 的 ks.test 的结果冲突(测试样本是否均匀分布)

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:01 25 4
gpt4 key购买 nike

我有兴趣检查样本 A (n=25) 是否均匀分布。这是我在 Python 中检查它的方法:

import scipy.stats as ss
A=[9,9,9,4,9,6,7,8,9,4,5,2,4,9,6,7,3,4,2,4,5,6,8,9,9]
ss.kstest(A,'uniform', args=(min(A),max(A)), N=25)

返回:(0.22222222222222221, 0.14499771178796239),也就是说,p 值为 ~0.15,检验不能拒绝样本 A 来自均匀分布。

这就是我在 R 中计算相同内容的方式:

A=c(9,9,9,4,9,6,7,8,9,4,5,2,4,9,6,7,3,4,2,4,5,6,8,9,9)
ks.test(A,punif,min(A),max(A))

结果:D = 0.32,p 值 = 0.01195。对于 R,应该在通常显着性水平 0.05 (!!!) 拒绝原假设

如果我正确阅读了文档,这两个函数都默认执行双面测试。另外,我知道 KS 测试主要用于连续变量,但这可以解释 Python 和 R 产生的对比近似值吗?或者,我是否在语法上犯了一些明显的错误?

最佳答案

scipy.stats 中任何 cdf 的参数是位置和比例。对于均匀分布,这是 loc = 最小 x 值,其中均匀密度为 1,比例为均匀密度为 1 的区间宽度。使用 args = (min(A), max(A)-min(A )) 在 python 中将给出 R 给出的 D 值。

p 值仍然不同。这是因为 KS 检验对重复值不稳健。它旨在与连续分布一起使用,并且期望不会出现重复的 y 值。在存在重复数据的情况下,使用不同的算法来尝试估计 p。如果您在另一个数据样本上重新运行您的代码而不重复,并将 args 设置为 loc 和 scale,您应该在 R 和 Python 中获得相同的 p 值。

关于python - python 的 ss.kstest 与 R 的 ks.test 的结果冲突(测试样本是否均匀分布),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com