web-dev-qa-db-ja.com

pythonでアルファおよびベータパラメータを使用してガンマ分布をプロットする方法

アルファ= 29(スケール)およびベータ= 3(サイズ)のガンマ分布をプロットしたいと思います。つまり、Gamma(29,3)のpdfをプロットしたいのです。 ドキュメント に従って、pythonガンマ関数にパラメーターaとxしかなく、サイズパラメーターが存在しない場合、どうすればよいですか?

locはベータ版だと思いましたが、実際にはオフセットされていると思うので、以下のコードは間違っています...

import numpy as np
import scipy.stats as stats 
from matplotlib import pyplot as plt

x = np.linspace (0, 100, 200) 
y1 = stats.gamma.pdf(x, a=29, loc=3) #a is alpha, loc is beta???
plt.plot(x, y1, "y-", label=(r'$\alpha=29, \beta=3$')) 


plt.ylim([0,0.08])
plt.xlim([0,150])
plt.show()
10
14wml

ドキュメントによると、scaleパラメータ(theta)を使用したいのですが、thetaの逆であるベータを定義しているので、1/betaの値でスケールを渡します。この例では、1/3または0.33333。

したがって、次のことを試してください。

y1 = stats.gamma.pdf(x, a=29, scale=0.33333)
16
Scratch'N'Purr

@Hielkeが答えたように、scipy.stats 1.4.1 documentation で説明されている限り、スカラーパラメーターはベータに等しいようです。実際、最初に開発された機能は次のとおりです。

gamma.pdf(x, a) = x^(a-1) * exp(-x) / gamma(a)

xを2つのオプションパラメータlocscaleの組み合わせで置き換えると、次のようになります。

x = (y - loc) / scale

持っている必要があります:

gamma.pdf(x, a) = (y - loc)^(a-1) * exp( -(y - loc)/scale ) / (scale^(a-1) * gamma(a))

loc =を使用すると、通常定義されているガンマ分布の式が認識されます。 scaleの逆数を掛けると、この関数でscale = betaと結論でき、locはオフセットです

実際、私はドキュメントの説明を詳しく説明しようとしました:

具体的には、gamma.pdf(x、a、loc、scale)は、gamma.pdf(y、a)/ scale with y =(x-loc)/ scaleと同じです。

0
eidal