Estoy intentando ajustar mis datos a la de la PDF continua (sugiero que sea de distribución gamma o lognormal). Los datos consisten en unos 6000 flotantes positivos. Pero los resultados de la prueba de Kolmogorov-Smirnov refutan por completo mis expectativas, ya que los valores p son muy bajos.
Distribución empírica de los datos
Ajuste de la distribución
Código 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()
Este es el resultado:
- El valor p es casi 0
'lognorm', (0.1111486360863001, 1.1233698406822002e-66)
- El valor p es 0
'gamma', (0.30531260123096859, 0.0)
¿Significa que mis datos no se ajustan a la distribución gamma?. Pero parecen tan similares...