首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于相似的值集,sets返回不同的p-值。

对于相似的值集,sets返回不同的p-值。
EN

Stack Overflow用户
提问于 2018-08-02 02:35:53
回答 1查看 389关注 0票数 1

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

代码语言:javascript
运行
复制
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)

你知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 03:10:10

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

简单的修复方法是在将数组传递给kstest之前先将其扁平化。可以使用ravel()方法来完成这一任务。例如,

代码语言:javascript
运行
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51644710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档