[matplotlib animation] 10. ガンマ分布のアニメーション

matplotlib Animation

はじめに

matplotlib FuncAnimationによる、ガンマ分布の形状母数と尺度母数が変化するアニメーションについて説明する。

形状母数が変化するアニメーション

コード

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

解説

モジュールのインポート

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ビデオ化。

尺度母数が変化するアニメーション

コード

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

解説

データの生成

尺度母数は0.05〜3まで60stepで変化させる。

アニメーションの設定

形状母数の場合と同様に、bの値を順次変化させて、アニメーションとする。

参考

[Python]scipy statsの使い方 - Qiita
scipy で正規分布に従うランダムデータの作り方連続確率分布Uniform Distribution(一様分布)一様分布はscipy.stats.uniformを使う。確率密度分布pdf…
scipy.stats.gamma — SciPy v1.13.0 Manual

コメント