Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么scipy.stats.gamma.pdf返回0的数组?_Python_Scipy_Statistics_Gamma_Scipy.stats - Fatal编程技术网

Python 为什么scipy.stats.gamma.pdf返回0的数组?

Python 为什么scipy.stats.gamma.pdf返回0的数组?,python,scipy,statistics,gamma,scipy.stats,Python,Scipy,Statistics,Gamma,Scipy.stats,我试图绘制一个数据负载,并确定它是如何分布的,我很容易根据我的直方图绘制正态分布和贝塔分布 然而,当我尝试对gamma分布执行相同的操作时,它只返回一个基本为零的数组。我的代码如下所示 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 =

我试图绘制一个数据负载,并确定它是如何分布的,我很容易根据我的直方图绘制正态分布和贝塔分布

然而,当我尝试对gamma分布执行相同的操作时,它只返回一个基本为零的数组。我的代码如下所示

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")

有人知道我犯的错误吗?

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

x=np.linspace(最小(数据),最大(数据),1000)
ag、bg、cg=统计伽马拟合(数据,1)
pdf_gamma=stats.gamma.pdf(x,ag,bg,cg)
plt.plot(x,pdf_gamma,label=“gamma(a=1)”)
ag、bg、cg=统计伽马拟合(数据)
pdf_gamma=stats.gamma.pdf(x,ag,bg,cg)
plt.plot(x,pdf_gamma,label=“gamma(a=Free)”)
plt.legend()
plt.show()

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

x=np.linspace(最小(数据),最大(数据),1000)
ag、bg、cg=统计伽马拟合(数据,1)
pdf_gamma=stats.gamma.pdf(x,ag,bg,cg)
plt.plot(x,pdf_gamma,label=“gamma(a=1)”)
ag、bg、cg=统计伽马拟合(数据)
pdf_gamma=stats.gamma.pdf(x,ag,bg,cg)
plt.plot(x,pdf_gamma,label=“gamma(a=Free)”)
plt.legend()
plt.show()

从gamma拟合中删除1不会对返回的数组进行任何更改。您对此绝对确定吗?是的,我确定。我试过使用和不使用1,但数组仍然充满了零。我有一些类似于gamma的东西。。。希望能报告一些发现。@Eoin我发现scipy的伽玛射线有时会因大数而失效。我还不知道为什么。您可以尝试使用scipy.stats.gamma.rvs方法生成一些伽马分布的假设数据,然后进行拟合和绘图。你有其他想法吗?从gamma拟合中删除1不会对返回的数组进行任何更改。你绝对确定吗?是的,我确定。我试过使用和不使用1,但数组仍然充满了零。我有一些类似于gamma的东西。。。希望能报告一些发现。@Eoin我发现scipy的伽玛射线有时会因大数而失效。我还不知道为什么。您可以尝试使用scipy.stats.gamma.rvs方法生成一些伽马分布的假设数据,然后进行拟合和绘图。你有没有想到别的?