SCIPY Kolmogorov-Smirnov检验即使使用从给定分布生成的随机数据也会产生小的p值



data=np.随机.多变量_正常(均值=[0,0],cov=[[1,0],[0,1]],大小=1000(

cdfx=多变量正规(均值=[0,0],cov=[[1,0],[0,1]](。cdf

ks_1samp(x=数据,cdf=cdfx(

KstestResult(统计=0.9930935227267083,p值=0.0(

p值不应该高吗?

Kolmogorov-Smirnov检验适用于单变量分布。参见";不止一个维度上的Kolmogorov–Smirnov统计";用于讨论多元泛化。

ks_1samp期望输入x是一维的,并且期望cdf函数是单变量分布的CDF。它不会验证这些属性,因此如果没有达到预期,则行为是未定义的(显然是无稽之谈(。

对于单变量正态分布,它如您所期望的那样工作:

In [20]: from scipy.stats import ks_1samp, norm
In [21]: x = norm.rvs(size=1000)
In [22]: ks_1samp(x, norm.cdf)
Out[22]: KstestResult(statistic=0.025983100250768443, pvalue=0.5011047711453744)

相关内容

  • 没有找到相关文章

最新更新