【问题标题】:Python: how to fit a gamma distribution from data?Python:如何从数据中拟合伽马分布?
【发布时间】:2017-04-20 03:56:27
【问题描述】:

我有一个数据集,我想看看哪个是最好的分布。

在第一次尝试中,我尝试将其与rayleigh 匹配,所以

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 分发做同样的事情,但没有成功

y, x = np.histogram(net1['distance'], bins=45, normed=True)
xx = linspace(0,45,1000)
ag,bg,cg = gamma.fit(y)  
pdf_gamma = gamma.pdf(xx, ag, bg,cg)  
fig,ax = plt.subplots(figsize=(7,5))
# fitted distribution
plot(xx,pdf_gamma,'r-', lw=5, alpha=0.6, label='gamma pdf')
plot(xx,pdf_gamma,'k-')
plt.bar(x[1:], y, label='Data')
ax.set_xlabel('Distance, '+r'$x [km]$',size = 15)
ax.set_ylabel('Frequency, '+r'$P(x)$',size=15)
ax.legend(loc='best', frameon=False)

【问题讨论】:

  • ag、bg、cg 得到什么?
  • 用于缩放曲线。
  • 我的意思是数字是多少
  • ag = 0.3487208935787377, bg=2.642125282765536e-05, cg=0.028141488538963526
  • stackoverflow.com/questions/29208440/… 的答案可能正是您所需要的。

标签: python scipy statistics distribution


【解决方案1】:

我的猜测是,您的大部分原始数据都为 0,因此拟合的 alpha 最终低于 1 (0.34),并且您会得到奇异性为 0 的递减形状。条形图不包括零(x[1:]) 所以你看不到左边的大条。

我是对的吗?

【讨论】:

  • 我仔细检查了原始数据集中没有任何零
  • 真的很别扭。但是我没有你的数据来测试。例如,你能在 R 中做同样的事情吗?如果您得到相同的估计值,这将是一个很好的快速测试。
【解决方案2】:

不幸的是 scipy.stats.gamma 没有很好的文档记录。

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

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

我从网上的问题中注意到许多人感到困惑。他们有一个数据分布,并尝试用 gamma.fit 拟合它。这是错误的。

gamma.fit 方法需要您的原始数据,而不是您的数据分布。 这大概会解决我们中少数人的问题。

GR

【讨论】:

    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2018-12-20
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多