2

好的,所以我尝试使用 kstest 的 scipys 实现来评估哪种分布最适合数据。我对 kstest 工作原理的理解是,该统计量表示零假设的概率(即返回的概率是相关模型对数据错误的概率)。对于 0.0 和 1.0 之间的均匀分布,这与预期的一样

a = np.random.uniform(大小=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) 时,KS 统计量异常高

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)

第二种情况下的检验统计量的值是否也应该很低,因为通过的参数与以前一样接近分布?

4

1 回答 1

4

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

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

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

于 2017-02-12T05:33:44.963 回答