はじめに
F分布は統計学における重要な確率分布で、分散分析などに用いられます。この記事では、ipywidgetsを使って自由度をIntSliderで対話的に調整し、F分布のグラフを動的に表示する方法を解説します。
解説
モジュールのインポートなど
バージョン
データの生成
Scipyのstatsモジュールにあるf分布の確率密度関数(pdf)を使ってデータを作成します。両方の自由度を10に設定し、x軸の値にはパーセントポイント関数(ppf)を使用して、確率が1%から99%の範囲に対応する値を割り当てます。
データを表示すると以下のようになります。

Intsliderで自由度を調整して表示
IntSliderで最小値(min)を1、最大値(max)を100、刻み幅(step)を1、初期値(value)を10に設定した2つのスライダーを作成します。
関数f(pha1,pha2)はスライダーの値が変更されたときに実行されます。この関数はx軸の値とF分布を計算し、プロットにデータをセットすることでグラフを更新します。
2つのスライダーを横に並べて表示するためにHBoxコンテナに配置し、display()関数で画面に表示します。
Intsliderで自由度調整し、有意水準(0.05)を塗りつぶして表示
TextareaウィジェットでF分布の有意水準のF値を表示します。
f_ind = np.argmin(np.abs(x_-f_95))は有意水準(0.05)に対応するインデックスを求めるコードです。このインデックス以降の領域をax.fill_between(x_[f_ind:], f_pdf[f_ind:], 0, fc=”pink”, alpha=.75)で塗りつぶして視覚的に表示します。 このax.fill_between()の戻り値をリストに格納し、リストの内容をクリアすることで、プロット上の塗りつぶし領域を更新時に消去できるようにします。
まとめ
ipywidgetsのIntSliderを使うことで、F分布の自由度を対話的に調整し、グラフの変化をリアルタイムで確認できます。これにより、F分布の性質や自由度による変化を直感的に理解することができ、統計学の学習や教育に役立ちます。
コメント