分散分析(ANOVA)— F値の直感を掴む
3群以上の平均を比較するとき、なぜt検定を繰り返してはいけないのか。群間分散と群内分散の比がF値になる構造を、スライダーで動かして体感する。
分散分析(ANOVA) — F値の直感を掴む
「群間分散(グループ平均のばらつき)÷ 群内分散(グループ内のばらつき)」がF値。
群間が大きく群内が小さいほど「グループ間に差がある」と判定される。スライダーで動かして体感しよう。
- Step 1: ▶ 100回 をクリック — 差がない3群でt検定を3回繰り返す試行を100回実施。
- Step 2: 赤い点の割合を確認 — 理論上14.3%のはずが、実測値はどうなる?
- Step 3: ▶ 1000回 で試行を追加 — 試行数が増えると14.3%に収束していく。
▶ なぜt検定を繰り返してはいけないか
// 「5%なら安心」が通用しないワケ
t検定を1回やるとき、「本当は差がないのに"差がある"と言ってしまう」確率は5%。ここまでは大丈夫。
でも同じ検定を3回繰り返すと、話がだいぶ変わります。
コイン投げで考えてみると
「20面サイコロを振って1が出る確率」は5%。でも3回振って「1回も1が出ない」確率は 0.95³ ≈ 85.7%。
つまり「少なくとも1回は1が出る」確率は 14.3%。検定もまったく同じ構造です。
3群のペアワイズ比較(A-B、A-C、B-C)は3回のt検定。
「3回とも間違えない」のが85.7%、「少なくとも1回間違える」のが14.3%。
5%のつもりが約3倍に膨らんでいます。グループが増えるともっと深刻:5群なら40%、10群なら90%以上。
ANOVAはこの問題を避けるために「全グループをまとめて1回で検定する」方法です。
上のシミュレーションで見た「偽陽性の膨張」を、一度の検定で回避するのがこのF検定(ANOVA)です。
実験ガイド — F値を体感する- Step 1: 群間の差をゼロにする → F値が1付近に。全群が「同じ集団」のように見える。
- Step 2: 群間の差を大きくする → F値が上がり、p値が下がる。棄却域に入る瞬間を確認。
- Step 3: 群内のばらつきを大きくする → 同じ差でもF値が下がる。「差があっても検出できない」体験。
- Step 4: サンプルサイズを増やす → F値が上がる。大きなサンプルほど小さな差を検出できる(検出力)。
▶ 群間分散 vs 群内分散 — F値をスライダーで体感
// 分散分析表
| 要因 | SS | df | MS | F | p |
|---|---|---|---|---|---|
| 群間(B) | — | — | — | — | — |
| 群内(W) | — | — | — | ||
| 全体 | — | — |
// F値って結局なにをしている?
3つのクラスのテスト結果を比べたいとします。
「クラスごとの平均が離れている」= 教え方に差がありそう。
「でもクラス内の個人差も大きい」= たまたまかもしれない。
F値は、この2つを比べた数字です。
「クラス間のばらつき」÷「クラス内のばらつき」 —— それだけ。
分子が大きいほど「グループ間に差がありそうだ」と判断できます。
公式にすると↓こうなりますが、いきなり暗記しなくて大丈夫です。
上のグラフをドラッグして、スライダーを動かしながら眺めるほうが先。
・SSB(群間変動)= グループ平均が全体平均からどれだけズレているか
・SSW(群内変動)= 各グループの中でデータがどれだけ散らばっているか
・df で割って「1自由度あたり」に揃えたのが MS
・F ≈ 1 なら「差があるとは言えない」、F が大きいほど「差がありそう」
どのくらい大きければ有意かは、自由度と有意水準 α で決まります。
インタラクティブ確率分布表で臨界値を確認できます。
// 手を動かしてみよう — テスト成績の例
3つの教授法 A・B・C を各15人で比較したとします。
① まず平均を見る
群A = 65点、群B = 72点、群C = 73点、全体平均 = 70点
② 群間変動 SSB を計算
各群の人数 × (群平均 − 全体平均)² を足す
= 15×(65−70)² + 15×(72−70)² + 15×(73−70)² = 15×(25+4+9) = 570
③ 群内変動 SSW
各群内でデータが平均からどれだけ散らばっているかの合計 = 仮に 2520
④ 自由度を出す
dfB = 群の数−1 = 3−1 = 2
dfW = 全人数−群の数 = 45−3 = 42
⑤ MSを出してF値へ
MSB = 570÷2 = 285、MSW = 2520÷42 = 60
F = 285÷60 = 4.75
⑥ 判定
F(2, 42) の臨界値(α=0.05)は約 3.22。
4.75 > 3.22 → 棄却(少なくとも1つの群に差がある)。
——ただし「どの群とどの群か」は、まだわかりません(→ 多重比較が必要)。
// ここで引っかかりやすいポイント
実はこれ、わかりません。ANOVAが教えてくれるのは「どこかに差がある」だけ。
どの群同士かを突き止めるには、Tukey法やBonferroni法などの多重比較が必要です。
ページ上部のシミュレーションを見てください。3群の比較で t 検定を繰り返すと、本当は差がなくても約14.3%の確率で「有意」が出てしまいます。
ANOVAは、この「偽陽性の膨張」を防いで全体の α を5%に保てる方法です。
サンプルサイズが大きいと、ほんの少しの差でもF値は大きくなります。
「実際にどれくらい差があるか」は効果量(η²)で見るのがおすすめです。
// 試験で聞かれやすいところ
統計検定や大学の期末試験では、以下のパターンがよく出ます。
- 分散分析表の穴埋め — SS と df が与えられて「MSとF値を求めよ」。上の具体例をなぞれば解ける計算問題です
- 自由度の公式 — 群間 = k−1、群内 = N−k、全体 = N−1
- 「t検定を繰り返すと何が問題か」 — 多重比較の問題を論述させる問題。シミュレーションの14.3%の話がそのまま使えます
- 前提条件 — 正規性・等分散性・独立性の3つ