Python 3.x 如何在python中使最佳概率分布模型适合我的数据?

Python 3.x 如何在python中使最佳概率分布模型适合我的数据?,python-3.x,scipy,simulation,distribution,Python 3.x,Scipy,Simulation,Distribution,我有大约20000行这样的数据 Id | value 1 30 2 3 3 22 .. n 27 我对数据进行了统计,平均值为33.85,中位数为30.99,最小值为2.8,最大值为206,95%置信区间为0.21。。所以大多数值都在33左右,还有一些异常值(有点)。。所以它看起来像一个长尾分布 我对发行版和python都是新手,我尝试了class fitter,尝试了Scipy包中的许多发行版,loglaplace发行版显示了最低的错误(尽管不理解) 我阅读了这篇文章

我有大约20000行这样的数据

Id | value
1    30
2    3
3    22
..
n    27
我对数据进行了统计,平均值为33.85,中位数为30.99,最小值为2.8,最大值为206,95%置信区间为0.21。。所以大多数值都在33左右,还有一些异常值(有点)。。所以它看起来像一个长尾分布

我对发行版和python都是新手,我尝试了class fitter,尝试了Scipy包中的许多发行版,loglaplace发行版显示了最低的错误(尽管不理解)

我阅读了这篇文章中的几乎所有问题,总结了两种方法(1)拟合分布模型,然后在我的模拟中绘制随机值(2)计算不同组值的频率,但这个解决方案的值不会超过206,例如


如果我的数据是值(数字),那么在python中适合数据分布的最佳方法是什么,就像在模拟中我需要绘制数字一样。随机数必须与我的数据具有相同的模式。我还需要通过绘制数据和模型曲线来验证模型是否能够很好地呈现我的数据。

一种方法是根据贝叶斯信息标准(称为BIC)选择最佳模型。 OpenTURNS实现了一种自动选择方法()

假设您有一个数组
x=[0,1,2,3,4,5,6,7,8,9,10]
,下面是一个简单的示例:

import openturns as ot
# Define x as a Sample object. It is a sample of size 11 and dimension 1
sample = ot.Sample([[xi] for xi in x])

# define distributions you want to test on the sample
tested_distributions = [ot.WeibullMaxFactory(), ot.NormalFactory(), ot.UniformFactory()]

# find the best distribution according to BIC and print its parameters
best_model, best_bic = ot.FittingTest.BestModelBIC(sample, tested_distributions)
print(best_model)
>>> Uniform(a = -0.769231, b = 10.7692)

您可以使用
GetContinuousUniVariateFactories
创建所有单变量工厂的列表,但这可能会返回
直方图
分布。在某些情况下,这可能令人失望。