Python stats.kstest bug?



我发现解释随机样本形状的方法对kstest有很大的影响。我尝试以下代码:

import numpy as np
from scipy import stats
N = 260
np.random.seed(1)
X = np.random.rand(N)
Xarray = X.reshape(N,1)
XarrayT = Xarray.T
print('X' + str(X.shape) + ': ' + str(stats.kstest(X, 'uniform') ) )
print( 'Xarray' + str(Xarray.shape) + ':' + str( stats.kstest(Xarray, 'uniform') ) )
print( 'XarrayT' + str(XarrayT.shape) + ': ' + str( stats.kstest(XarrayT, 'uniform') ) )

它给出的结果是:

X(260,): KstestResult(statistic=0.052396054203786291, pvalue=0.46346349447418866)
Xarray(260, 1):KstestResult(statistic=0.99988562518265511, pvalue=0.0)
XarrayT(1, 260): KstestResult(statistic=0.99988562518265511, pvalue=0.00022874963468977327)

其中X,Xarray,XarrayT具有相同的数据,只是它们具有不同的形状。而且p值完全不同。是由于错误还是我错过了某个点以正确使用 kstest?

谢谢!

好吧,scipy kstest 文档告诉我们它应该是一个 1d 数组。

如果我们运行以下内容:

print('X ' + 'ndimensions=' + str(X.ndim) + ' ' + (str(stats.kstest(X, 'uniform'))))

我们在目标数组中看到 1 个维度。

输出:

X ndimensions=1 KstestResult(statistic=0.052396054203786291, pvalue=0.46346349447418866)

但是,当我们尝试其他Xarray时:

print('Xarray ' + 'ndimensions=' + str(Xarray.ndim) + ' ' + (str(stats.kstest(Xarray, 'uniform'))))
Xarray ndimensions=2 KstestResult(statistic=0.99988562518265511, pvalue=0.0)

这对我来说表明,在输入数组中使用二维正在搞砸柯尔莫哥罗夫-斯米尔诺夫测试的拟合优度。

我还建议阅读这个堆栈溢出问题的答案

相关内容

  • 没有找到相关文章

最新更新