統計学

F検定についてPythonを使いながら解説!

F検定 アイキャッチ
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、F検定について解説してきます。まず検定とはある仮説が正しいか確認するために用いる手法です。その中でもF検定は2種類あります。ひとつは「2変数のばらつきが同じである」という仮説が正しいか確認する、もうひとつは「複数の群の平均が同じである」という仮説が正しいか確認します。今回は2変数のばらつきを確認するF検定について解説を行いつつ、Pythonで実装していきます!

こんにちは!

データサイエンティストのウマたん(@statistics1012)です!

今回はF検定について解説していきます。F検定は主に2つの目的で用いられることが多いです。初めに「2変数のばらつきが同じである」という帰無仮説の検定、次に「複数の群の平均が同じである」という帰無仮説の検定が挙げられます!今回は前者の方を解説していきます!

この記事では、そんなF検定の定義と評価指標について解説していきながらPythonで実装していきます!

・F検定の定義について解説!
・PythonでF検定を見てみよう!

以下のYoutube動画でも解説していますのであわせてチェックしてみてください!

F検定について解説!

stories Data-pana

まずは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検定の出番となります!

ここからは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検定は使えるんだ!

F検定をPythonで実装!

stories pc

実際に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値が低ければ、実際の結果が帰無仮説において起きる可能性は非常に低いことを示すところがポイントです!

つまり帰無仮説が棄却されることにつながります!

ウマたん
ウマたん
p値が0.02225…なので、帰無仮説下において今回の標本分布が得られる確率は2%程度でしか起こらないことが分かるので有意と分かるね!つまりクラスのテストのばらつきは等しくないと分かった!

F検定 まとめ

Happy
本記事ではF検定についてまとめました!

検定にはt検定カイ二乗検定もあるので、ぜひ勉強してみましょう!また統計的検定を基礎から学びたい方にはこちらの記事も参照してみて下さい!

統計的検定とは
統計的検定とは?具体例と種類について見ていこう!当サイト【スタビジ】の本記事では、統計検定の具体例と種類についてまとめていきます。おさえておきたいのはt検定とカイ二乗検定の2つ!この2つの意味と使い方をしっかりおさえておくことでビジネスレベルでは問題ありません。...

このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。

そして僕の経験を詰め込んだデータサイエンス特化のスクール「スタアカ(スタビジアカデミー)」を運営していますので,興味のある方はぜひチェックしてみてください!

AIデータサイエンス特化スクール「スタアカ」

スタアカトップ
【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組みあわせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

当メディアが運営するスクールです。

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコースになっています!

Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

データサイエンスに関する記事はこちら!

【初心者必見】統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!...
デーサイエンス本
【データサイエンティスト厳選18冊】データサイエンスを学ぶ上でオススメな本・教材!当ブログ【スタビジ】の本記事では、データサイエンスを学ぶ上でオススメできる本を厳選して紹介していきます。ここではデータサイエンティストになるために習得するスキルをデータサイエンスと称しております。いくつかの観点に切り分けて見ていきます。...

データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください!

データサイエンティスト スクール
【徹底比較】データサイエンティストのための学習ができるスクール9選! スクール名 オススメ度 価格の安さ サポート体制 公式サイト テックアカデミー ...
スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら