こんにちは。今日は、統計学に関する内容です!
最近、統計検定の勉強をしているのですが、その中でいろいろな統計分布の種類があることを知ったは良いものの、違いが直感的によく分からず、実務に活かせる気がしなかったので、実際に絵や式を書いてみながら自分の頭を整理しておきたいと思います。
今回はその中でもF分布について整理してみたいと思います。
なお、各内容の詳細については、他のWebサイトに分かりやすい説明があれば、そちらを引用させていただき、紹介させていただいております。
それでは早速参ります!
Contents
F分布の理論
概要
F分布もカイ二乗分布と同様に、標本分布の1つで、推論統計学でよく利用される分布です。標本分布とは、ある統計量に対する母集団自体の分布ではなく、その標本における確率分布を表ています。
独立に $$ \chi^2(m_{1}), \chi^2(m_{2}) $$に従う2つの確率変数W_{1}, W_{2}がある時、それぞれをその自由度で割って比をとたった 、 統計量 $$ F = \frac{W_{1}/m_{1}}{W_{2}/m_{2}}$$ が従う分布を、自由度$$m_{1},m_{2}$$のF分布と呼びます。 F分布は、区間推定や検定で利用されることになります。こちらについても今後整理の記事を書こうと思います。確率関数(確率密度関数)
もはや覚えられるレベルではありません・・が、実務的にも、統計検定向けにも、覚えておく必要はないようです。
Pythonによる実装サンプル
Scipyを使って簡単に実装する
F分布は、Scipyが提供するメソッドで簡単に再現できてしまいます!
文法については以下から確認できます。
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.f.html
以下は、自由度がそれぞれ(10,20)、(5,15)のF分布の形状を再現するコードになります。
from scipy.stats import f
## Parameter: Degree of Freedom
n11 = 10
n12 = 20
n21 = 5
n22 = 15
mean, var, skew, kurt = f.stats(n11,n12, moments='mvsk')
#Mean
print("Mean:", mean)
#Var
print("Var:", var)
#Skew
print("Skew:", skew)
#Kurt
print("Kurt:", kurt)
x = np.linspace(f.ppf(0.01, n11, n12), f.ppf(0.99, n11, n12), 100)
plt.plot(x, f.pdf(x, n11,n12),lw=5, alpha=0.6, label='f pdf (10,20)')
x = np.linspace(f.ppf(0.01, n21, n22), f.ppf(0.99, n21, n22), 100)
plt.plot(x, f.pdf(x, n21,n22),lw=5, alpha=0.6, label='f pdf (5, 15)')
plt.legend()
一から実装する
(確認中)
確率分布についてもっと勉強するなら・・・
確率分布は、統計検定2級の出題範囲となっています。理論的な部分をもっと勉強されたい方は、以下のテキストを読まれると、体系的に学ぶことができます。
私もこちらで勉強しています。統計検定の公式テキストではありますが、比較的に分かりやすく解説されており、何より知識が体系的に整理されているので全体像を掴んで、理論の概要を理解するには良いと思います。
このテキストで分かりづらいと思った部分は、部分毎にネットで詳しく解説された記事を探したり、Udemyなどのオンラインコンテンツを利用していけば十分に理解が深まると思います。
Udemy講座
以上、確率分布について勉強したり実験してみたことをまとめた記事でした。
最後までご覧いただきありがとうございました!