1

我正在尝试绘制大量数据并确定其分布方式,我很容易根据直方图绘制正态分布和 Beta 分布。

直方图和密度图。具有正态分布和 beta 分布。

但是,当我尝试对伽玛分布做同样的事情时,它只会返回一个大部分为零的数组。我的代码如下所示。

plt.figure()
sns.distplot(data,bins=50)
x = np.linspace(min(data),max(data),1000)
mu, std = norm.fit(data)
p = norm.pdf(x, mu, std)
plt.plot(x,p)
ag,bg,cg = stats.gamma.fit(data,1)  
pdf_gamma = stats.gamma.pdf(x,ag,bg,cg)  
plt.plot(x, pdf_gamma, label="Gamma")
ab,bb,cb,db = stats.beta.fit(data)  
pdf_beta = stats.beta.pdf(x, ab, bb,cb, db)  
plt.plot(x, pdf_beta, label="Beta")

有谁知道我犯的错误?

4

1 回答 1

0

您调用ag,bg,cg = stats.gamma.fit(data,1)了 ,它将形状参数a设置为 1。您不想要这个。要查看这是在做什么,请尝试在有和没有设置的情况下绘制估计的 gamma PDF a=1

x = np.linspace(min(data),max(data),1000)
ag,bg,cg = stats.gamma.fit(data, 1)
pdf_gamma = stats.gamma.pdf(x,ag,bg,cg)
plt.plot(x, pdf_gamma, label="Gamma (a = 1)")

ag,bg,cg = stats.gamma.fit(data)
pdf_gamma = stats.gamma.pdf(x,ag,bg,cg)
plt.plot(x, pdf_gamma, label="Gamma (a = Free)")
plt.legend()
plt.show()
于 2020-04-24T11:43:16.067 回答