scipy kstest在不同的范围内不一致

时间:2017-02-12 02:51:33

标签: python scipy statistics kolmogorov-smirnov

好的,所以我尝试使用scsteys实现kstest作为评估哪种分布最适合数据的方法。我对kstest如何工作的理解是统计量表示零假设的概率(即返回的概率是所讨论的模型对数据是错误的概率)。这与0.0和1.0之间均匀分布的预期相同

  

a = np.random.uniform(size = 4999)

     

print(scipy.stats.kstest(a,'uniform',args =(0.0,1.0)))

     

KstestResult(统计= 0.010517039009963702,pvalue = 0.63796173656227928)

然而,当我将均匀分布范围从(0.0,1.0)移到(2.0,3.0)时,K-S统计数据奇怪地高

  

a = np.random.uniform(2.0,3.0,size = 4999)

     

print(scipy.stats.kstest(a,'uniform',args =(2.0,3.0)))

     

KstestResult(统计= 0.66671700832788283,pvalue = 0.0)

在第二种情况下,测试统计量的值也不应该低,因为传递的参数与之前一样接近分布吗?

1 个答案:

答案 0 :(得分:4)

numpy(由您使用)和scipy.stats(由ks test使用)uniform版本的工作方式不同:

>>> np.random.uniform(2,3,5000).max()
2.9999333044165271
>>> stats.uniform(2,3).rvs(5000).max()
4.9995316751114043

numpy中,第二个参数被解释为上限,在scipy.stats中它是scale参数,即宽度。