我正在尝试将我的数据拟合到连续 PDF 之一(我建议它是伽马或对数正态分布的)。数据由大约 6000 个正浮点数组成。但是 Kolmogorov-Smirnov 检验的结果完全驳斥了我提供非常低的 p 值的期望。
数据经验分布
配电配件

Python代码:
import numpy
import sys
import json
import matplotlib.pyplot as plt
import scipy
from scipy.stats import *
dist_names = ['gamma', 'lognorm']
limit = 30
def distro():
#input file
with open(sys.argv[1]) as f:
y = numpy.array(json.load(f))
#output
results = {}
size = y.__len__()
x = scipy.arange(size)
h = plt.hist(y, bins=limit, color='w')
for dist_name in dist_names:
dist = getattr(scipy.stats, dist_name)
param = dist.fit(y)
goodness_of_fit = kstest(y, dist_name, param)
results[dist_name] = goodness_of_fit
pdf_fitted = dist.pdf(x, *param) * size
plt.plot(pdf_fitted, label=dist_name)
plt.xlim(0, limit-1)
plt.legend(loc='upper right')
for k, v in results.iteritems():
print(k, v)
plt.show()
这是输出:
- p 值几乎为 0
'lognorm', (0.1111486360863001, 1.1233698406822002e-66) - p 值为 0
'gamma', (0.30531260123096859, 0.0)
这是否意味着我的数据不符合伽马分布?..但它们看起来很相似......