好的,所以我尝试使用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)
在第二种情况下,测试统计量的值也不应该低,因为传递的参数与之前一样接近分布吗?
答案 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
参数,即宽度。