gpt4 book ai didi

python - Scipy kstest 对于相似的值集返回不同的 p 值

转载 作者:行者123 更新时间:2023-12-01 01:43:20 28 4
gpt4 key购买 nike

在Python 3.6.5和scipy 1.1.0中,当我运行Kolmogorov-Smirnov测试来检查均匀分布时,如果我向kstest函数提供一行,我会得到两个相反的结果(从p值的角度来看)或列向量:

from scipy import stats
import numpy as np

>>> np.random.seed(seed=123)
>>> stats.kstest(np.random.uniform(low=0, high=1, size=(10000, 1)), 'uniform')

KstestResult(statistic=0.9999321616877249, pvalue=0.0)

>>> np.random.seed(seed=123)
>>> stats.kstest(np.random.uniform(low=0, high=1, size=(1, 10000)), 'uniform')

KstestResult(statistic=0.9999321616877249, pvalue=0.00013567662455016283)

你知道为什么会出现这种情况吗?

最佳答案

docstring of kstest中提到当 kstest 的第一个参数是数组时,它应该是一个一维数组。在您的示例中,您传递的是二维数组(其中一个维度在每种情况下都是微不足道的)。事实证明,当输入数组是二维时,kstest 中的代码不会执行您期望的操作。

简单的修复方法是在将数组传递给 kstest 之前将其展平。 ravel() 方法可以用来做到这一点。例如,

In [50]: np.random.seed(seed=123)

In [51]: x = np.random.uniform(low=0, high=1, size=(10000, 1))

In [52]: stats.kstest(x.ravel(), 'uniform')
Out[52]: KstestResult(statistic=0.008002577626569918, pvalue=0.5437230826096209)

In [53]: np.random.seed(seed=123)

In [54]: x = np.random.uniform(low=0, high=1, size=(1, 10000))

In [55]: stats.kstest(x.ravel(), 'uniform')
Out[55]: KstestResult(statistic=0.008002577626569918, pvalue=0.5437230826096209)

关于python - Scipy kstest 对于相似的值集返回不同的 p 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51644710/

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