我发现解释随机样本形状的方式对 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 具有相同的数据,只是它们的形状不同。pvalues完全不同。是由于错误还是我错过了正确使用 kstest 的某些要点?
谢谢!