使用scipy.stats.kstest查看随机生成的数字是否遵循指定的分布

时间:2020-05-12 19:26:40

标签: python scipy

我正在尝试从具有指定参数的所选分布中生成随机数,然后使用Kolmogorov-Smirnov检验来查看数字是否确实遵循该分布。

http://localhost:9000/assets/ui/assets/fonts/solway/fonts/Solway-Light.ttf

enter image description here

import matplotlib.pyplot as plt
from scipy.stats import johnsonsu
values = johnsonsu.rvs(0.4, 1.27, loc = 3.50, scale = 5.97, size = 10000)
plt.hist(values, bins = 25)
plt.show()

我认为KS检验的原假设是样本数据遵循指定的分布(在此示例中为johnson su)。因此,p值小于0.05会否定原假设,并且我们得出结论,数据不遵循分布?是不是应该相反或者我缺少什么?

1 个答案:

答案 0 :(得分:1)

如果我将分发参数的完整列表传递给arg参数,我将得到您期望的结果,即:

import scipy.stats as stats

n = 10_000
values = stats.johnsonsu.rvs(0.4, 1.27, loc=3.50, scale=5.97, size=n)

print(stats.kstest(values, 'johnsonsu', N=n, args=(0.4, 1.27, 3.5, 5.97)))
KstestResult(statistic=0.007110068990121343, pvalue=0.6928424801510613)
相关问题