好的,所以我尝试使用kstest的scipys实现来评估哪个分布最适合数据。我对kstest工作原理的理解是,统计数据表示空假设的概率(即返回的概率是所讨论的模型对数据错误的概率)。对于0.0到1.0之间的均匀分布,这与预期差不多
a=np.random.uniform(大小=4999)
打印(scipy.stats.kstest(a,'uniform',args=(0.0,1.0)))
KstestResult(统计=0.010517039009963702,p值=0.63796173656227928)
然而,当我将均匀分布的界从(0.0,1.0)移到(2.0,3.0)时,K-S统计量异常高
a=np.随机.均匀(2.0,3.0,尺寸=4999)
打印(scipy.stats.kstest(a,'uniform',args=(2.0,3.0)))
KstestResult(统计=0.66671700832788283,p值=0.0)
在第二种情况下,检验统计量的值是否应该较低,因为所传递的参数近似于以前的分布?

最佳答案

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参数,即宽度。

关于python - scipy kstest在不同范围内不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42183717/

10-12 22:02