こんにちは!
データサイエンティストのウマたん(@statistics1012)です!
今回はF検定について解説していきます。F検定は主に2つの目的で用いられることが多いです。初めに「2変数のばらつきが同じである」という帰無仮説の検定、次に「複数の群の平均が同じである」という帰無仮説の検定が挙げられます!今回は前者の方を解説していきます!
この記事では、そんなF検定の定義と評価指標について解説していきながらPythonで実装していきます!
・F検定の定義について解説!
・PythonでF検定を見てみよう!
以下のYoutube動画でも解説していますのであわせてチェックしてみてください!
目次
F検定について解説!
まずはF検定でも、「2変数のばらつきが同じである」という帰無仮説の検定を見ていきましょう!
例で考えていきましょう!ある学校の2つのクラスで数学のテストを行ったと考えます。
クラスの点数はそれぞれ以下のようになったとしましょう!
Class_A = [90,88,85,84,80,79,78,74,71,69,60]
Class_B = [99,97,89,75,73,68,65,64,61,59,40]
それぞれのクラスから抽出したテスト結果はそれぞれ11人分です。
この時、2つのクラスは同じくらいの成績を持つ生徒で構成されていると考え、テストの点数のばらつきは大体同じであるといった仮説が考えられます。
このような問題設定が出た場合、「等分散性の検定」と呼ばれるF検定の出番となります!
ここからはF検定の手順を解説していきます!
手順その1:仮説設定
検定には必ず帰無仮説と対立仮説があります。
帰無仮説とは「ある仮説が正しいのか検証するための仮説」です。大抵は「差がない」ことを示していることが多いです。
一方、対立仮説とは「帰無仮説とは反対の意を持つ仮説」です。大抵は「差がある」ことを示していることが多いです。
今回において、帰無仮説は「2つのクラスの点数のばらつきには差がない」、対立仮説は「2つのクラスの点数のばらつきには差がある」と設定できますね!
帰無仮説:\((σ_{1})^{2} = (σ_{2})^{2}\)
対立仮説:\((σ_{1})^{2} ≠ (σ_{2})^{2}\)
手順その2:有意水準の設定
次に有意水準を設定します。有意水準を設定することで、帰無仮説を棄却できるか決まってきます。一般的には0.05 or 0.01ですが、今回は有意水準を0.05で設定します!
手順その3:F分布を用いた計算
次はF検定の肝となるF分布を用いた計算を解説していきます。
ある変数が正規分布\(N(μ_{1},(σ_{1})^{2})\)に従い、別の変数が正規分布正規分布\(N(μ_{2},(σ_{2})^{2})\)が従っているとき、Fは自由度\((n_{1}-1,n_{2}-1)\)のF分布に従います。
この時、それぞれの母集団から抽出した不偏分散を\(V_{1}\)、\(V_{2}\)と表す時、
\(F = \frac{V_{1}/(σ_{1})^{2}}{V_{2}/(σ_{2})^{2}} or \frac{V_{2}/(σ_{2})^{2}}{V_{1}/(σ_{1})^{2}}\)
となります。
今回の帰無仮説は\((σ_{1})^{2} = (σ_{2})^{2}\)なので、帰無仮説下のFは以下の通りになりますね!この式から不偏分散の比を表していることが分かります!
\(F = \frac{V_{1}}{V_{2}} or \frac{V_{2}}{V_{1}}\)
今回の例では、\(V_{1}=80.4, V_{2}=309.56\)となりました。
すると、\(F= \frac{V_{2}}{V_{1}}=3.85\)となりますね。
棄却域・p値の算出
Fを求めることができたので、F分布表を見ながら有意かどうか見ていきます。
F検定における棄却域は以下の通りです。不偏分散の大きさによって式が変化していることに注意してください!
\(V_{1} \geq V_{2} : V_{1}/V_{2} \geq F(n_{1}-1,n_{2}-1; α)\)
\(V_{2} \geq V_{1} : V_{2}/V_{1} \geq F(n_{2}-1,n_{1}-1; α)\)
今回の例題では\(V_{2}\geq V_{1}\)です。
サンプルサイズはそれぞれ11。
そしてネットや参考書などに記載されているF分布表を見てみると、\(F(10,10; 0.05)=2.98\)となるので、先ほど算出したF値3.85の方が大きくなります。
したがって有意となるため、帰無仮説は棄却されるので、\((σ_{1})^{2}\)は\((σ_{2})^{2}\)と異なると考えられます!
F検定をPythonで実装!
実際にF検定をPythonで実装してみましょう!
import statistics as stat
from scipy.stats import f
Class_A = [90,88,85,84,80,79,78,74,71,69,60]
Class_B = [99,97,89,75,73,68,65,64,61,59,40]
print("グループAの不偏分散:", stat.variance(Class_A))
print("グループBの不偏分散:", stat.variance(Class_B))
F = stat.variance(Class_B)/stat.variance(Class_A)
p_value = 1 - f.cdf(F, len(Class_A)-1, len(Class_B)-1)
print("P値:", p_value)
グループAの不偏分散: 80.4
グループBの不偏分散: 309.56363636363636
P値: 0.022250069092957125
ここではp値が算出されました。
p値とは「今回の事象が帰無仮説において、実際の結果と同程度の結果が起きる確率」とされています。もしp値が低ければ、実際の結果が帰無仮説において起きる可能性は非常に低いことを示すところがポイントです!
つまり帰無仮説が棄却されることにつながります!
F検定 まとめ
本記事ではF検定についてまとめました!
検定にはt検定、カイ二乗検定もあるので、ぜひ勉強してみましょう!また統計的検定を基礎から学びたい方にはこちらの記事も参照してみて下さい!
このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。
そして僕の経験を詰め込んだデータサイエンス特化のスクール「スタアカ(スタビジアカデミー)」を運営していますので,興味のある方はぜひチェックしてみてください!
AIデータサイエンス特化スクール「スタアカ」
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組みあわせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコースになっています!
Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
データサイエンスに関する記事はこちら!
データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください!