将数据适合所有可能的分布,并返回最佳拟合



我有一个示例数据,我想获得最佳的拟合分布。我有几个链接,这表明我可以从scipy.stats导入分布,但是后来我不知道手动的数据类型。我想要类似于MATLAB中的allfitdist()的东西,这些内容试图将数据拟合到20个分布左右并返回最佳拟合。

allfitdist()的链接:http://www.mathworks.in/matlabcentral/fileexchange/34943-fit-all-valid-parametric-parametric-prametric-probibality-distribiness-to-data

任何帮助都是非常明显的。谢谢。

您只需创建Scipy中所有可用发行版的列表即可。一个带有两个分布和随机数据的示例:

import numpy as np
import scipy.stats as st

data = np.random.random(10000)
distributions = [st.laplace, st.norm]
mles = []
for distribution in distributions:
    pars = distribution.fit(data)
    mle = distribution.nnlf(pars, data)
    mles.append(mle)
results = [(distribution.name, mle) for distribution, mle in zip(distributions, mles)]
best_fit = sorted(zip(distributions, mles), key=lambda d: d[1])[0]
print 'Best fit reached using {}, MLE value: {}'.format(best_fit[0].name, best_fit[1])

最新更新