はじめに
この記事では、matplotlibのFuncAnimationを使用して、ポアソン分布のパラメータλを変化させたときの分布の変化をアニメーションで表示する方法について解説しています。ポアソン分布は離散確率分布の一種で、一定時間内に発生する事象の回数などを表現するのに適しています。記事では、λの値を徐々に大きくしていくことで、分布の形状がどのように変化するかを視覚的に示しています。
コード
解説
モジュールのインポート
ポアソン分布を計算するために、scipy.statsモジュールからpoissonをインポートします。
軸範囲と軸ラベル、目盛りの間隔の設定
ax.xaxis.set_major_locator(ticker.MultipleLocator(2)) によってx軸の目盛りの表示間隔を2に設定しています。
データの生成
xは0〜20までの整数値をlinspaceで生成し、λは1から15まで100ステップで変化させます。
アニメーションの設定
まず、グラフを表示するために空のリストlinesをupdate関数の外部に作成します。
アニメーションでは古いプロットを消去する必要があります。そのため、linesにグラフが格納されている場合は、lines.pop().remove()メソッドを使用して削除します。
パラメータλと整数値xの確率質量分布関数\(p(x)\)は、以下の式のようになる。 $$p(x) = \frac{e^{-\lambda}\lambda^x}{x!}$$ poisson.pmf(x,lam[num])で異なるλにおけるポアソン分布の確率密度関数の値を取得する。lline,でプロットを作成して、linesに追加していきます。
marker=”o”でマーカーの形状を、 markersize=10でマーカーの大きさを、 markeredgewidth=1.5でマーカーの線の太さを、 markeredgecolor=”k”でマーカーの線の色を、 markerfacecolor=”m”でマーカーの塗りつぶしの色を、 color=’navy’でマーカーを結ぶ線の色を
設定できます。
ax.set_titleを使用してタイトルにλの値を表示します。
アニメーションの表示
FuncAnimationを使用してアニメーションを表示します。updateを100ステップ実行してアニメーションを生成し、intervalを100ミリ秒に設定することで、全体で10秒のアニメーションとなります。
Jupyter Notebook上では、HTML(ani.to_html5_video)を実行することでアニメーションを表示できます。
まとめ
matplotlibのFuncAnimationを使えば、ポアソン分布のパラメータλの変化に応じた分布の形状変化を視覚的に理解しやすいアニメーションとして表現できます。これにより、統計学や確率論の学習において、抽象的な概念をより直感的に把握することが可能になります。
コメント