Python:如何从数据中拟合伽玛分布?

时间:2016-12-05 17:10:51

标签: python scipy statistics distribution

我有一个数据集,我正在尝试查看哪个是最佳分布。

在第一次尝试中,我试图用.git来填充它,所以

rayleigh

enter image description here

我正在尝试使用y, x = np.histogram(data, bins=45, normed=True) param = rayleigh.fit(y) # distribution fitting # fitted distribution xx = linspace(0,45,1000) pdf_fitted = rayleigh.pdf(xx,loc=param[0],scale=param[1]) pdf = rayleigh.pdf(xx,loc=0,scale=8.5) fig,ax = plt.subplots(figsize=(7,5)) plot(xx,pdf,'r-', lw=5, alpha=0.6, label='rayleigh pdf') plot(xx,pdf,'k-', label='Data') plt.bar(x[1:], y) ax.set_xlabel('Distance, '+r'$x [km]$',size = 15) ax.set_ylabel('Frequency, '+r'$P(x)$',size=15) ax.legend(loc='best', frameon=False) 分配而不成功

gamma

enter image description here

2 个答案:

答案 0 :(得分:0)

我的猜测是你有大部分原始数据为0,所以拟合的alpha值最终低于1(0.34),你得到的变形形状的奇点为0.条形图不包括零(x [1:])所以你看不到左边那个巨大的酒吧。

我可以做对吗?

答案 1 :(得分:0)

不幸的是,scipy.stats.gamma的文档不完整。

假设您有一些“原始”数据,形式为data = array([a1,a2,a3,.....]),这些可以是您实验的结果。

您可以将这些原始值提供给fit方法:gamma.fit(data),它将为您返回三个参数a,b,c = gamma.fit(data)。这些是伽玛曲线的“形状”,“位置”和“比例”,更适合您的数据(而非实际数据)的“分布历史”。

我从网上问题中注意到很多人对此感到困惑。他们具有数据分布,并尝试使用gamma.fit进行拟合。这是错误的。

方法gamma.fit需要原始数据,而不是数据的分布。 大概可以解决我们几个人的问题。

GR