アルファ= 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()
ドキュメントによると、scaleパラメータ(theta)を使用したいのですが、thetaの逆であるベータを定義しているので、1/betaの値でスケールを渡します。この例では、1/3または0.33333。
したがって、次のことを試してください。
y1 = stats.gamma.pdf(x, a=29, scale=0.33333)
@Hielkeが答えたように、scipy.stats 1.4.1 documentation で説明されている限り、スカラーパラメーターはベータに等しいようです。実際、最初に開発された機能は次のとおりです。
gamma.pdf(x, a) = x^(a-1) * exp(-x) / gamma(a)
xを2つのオプションパラメータlocとscaleの組み合わせで置き換えると、次のようになります。
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と同じです。