はじめに
matplotlib FuncAnimationによる、ガンマ分布の形状母数と尺度母数が変化するアニメーションについて説明する。
形状母数が変化するアニメーション
コード
解説
モジュールのインポート
gamma分布を計算するため、scipy.stats
からgammaをimport。
軸範囲と軸ラベル、グリッドの設定
データの生成
形状母数 \(\alpha\)、尺度母数 \(\beta\) の確率分布関数\(p(x)\)は、以下の式のようになる。
$${p(x|\alpha,\beta)=\frac{\beta^{\alpha}}{\Gamma(\alpha)} x^{\alpha-1}e^{-\beta x}}$$
gamma.pdf(x,1,scale=1)で,形状母数が1,尺度母数が1のガンマ分布の確率密度関数の値を取得する。
xがlinspaceで0〜50まであるので、xとyでガンマ分布が描ける。
aは1から30まで60stepで変化させる。
アニメーションの設定
まずグラフを入れるために空のリストlinesを作成する。
アニメーションでは古いプロットを消す必要があるので、
linesにグラフが入っている場合は、lines.pop().remove()で消す。
a[num]で形状母数の要素を順に変化させていく。
line,でプロットを作成して、linesに入れていく。
ax.set_titleでタイトルに形状母数の値を表示。
アニメーションの表示
FuncAnimationでanimationの表示。updateを60step実行してアニメーションとする。intervalは100 ms なので6秒のアニメーションとなる。
to_html5_videoでHTMLビデオ化。
尺度母数が変化するアニメーション
コード
解説
データの生成
尺度母数は0.05〜3まで60stepで変化させる。
アニメーションの設定
形状母数の場合と同様に、bの値を順次変化させて、アニメーションとする。
参考
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JTVCUHl0aG9uJTVEc2NpcHklMjBzdGF0cyVFMyU4MSVBRSVFNCVCRCVCRiVFMyU4MSU4NCVFNiU5NiVCOSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9OGYxZTg0ZGUzOWJhZmFlMGVmYTYzZDgxNTA1NWRjZWM&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzdXBlcnNhaWFrdWppbiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NDM4YTY0ZDdkYWRmMTQxNDhkYTFiMzYzY2M5NjlkNjA&blend-x=142&blend-y=486&blend-mode=normal&s=c7b8bbfe84996e2b1dd8c61d3df80525)
[Python]scipy statsの使い方 - Qiita
scipy で正規分布に従うランダムデータの作り方連続確率分布Uniform Distribution(一様分布)一様分布はscipy.stats.uniformを使う。確率密度分布pdf…
scipy.stats.gamma — SciPy v1.14.0 Manual
コメント