メインコンテンツへスキップ

分散分析(ANOVA)— F値の直感を掴む

3群以上の平均を比較するとき、なぜt検定を繰り返してはいけないのか。群間分散と群内分散の比がF値になる構造を、スライダーで動かして体感する。

I.07 / ANOVA

分散分析(ANOVA) — F値の直感を掴む

カイ二乗検定は「カテゴリのズレ」を測った。では「3グループ以上の平均値に差があるか?」はどう調べる? t検定を何度も繰り返すと偽陽性が膨らむ — 分散分析(ANOVA)なら、全グループを一度に比較できる。

「群間分散(グループ平均のばらつき)÷ 群内分散(グループ内のばらつき)」がF値。
群間が大きく群内が小さいほど「グループ間に差がある」と判定される。スライダーで動かして体感しよう。

実験ガイド — 多重比較の問題
  1. Step 1: ▶ 100回 をクリック — 差がない3群でt検定を3回繰り返す試行を100回実施。
  2. Step 2: 赤い点の割合を確認 — 理論上14.3%のはずが、実測値はどうなる?
  3. Step 3: ▶ 1000回 で試行を追加 — 試行数が増えると14.3%に収束していく。

▶ なぜt検定を繰り返してはいけないか

まず「ANOVAがなぜ必要か」を体験。差がない3群(N(0,1)×20人)でt検定を3回繰り返すと、偽陽性はどこまで膨らむ?
試行回数 0
偽陽性 0
偽陽性率 0.0%

// 「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値を体感する
  1. Step 1: 群間の差をゼロにする → F値が1付近に。全群が「同じ集団」のように見える。
  2. Step 2: 群間の差を大きくする → F値が上がり、p値が下がる。棄却域に入る瞬間を確認。
  3. Step 3: 群内のばらつきを大きくする → 同じ差でもF値が下がる。「差があっても検出できない」体験。
  4. Step 4: サンプルサイズを増やす → F値が上がる。大きなサンプルほど小さな差を検出できる(検出力)。

▶ 群間分散 vs 群内分散 — F値をスライダーで体感

F
群間 df
群内 df
p
SSB
SSW
η²
判定

// 分散分析表

要因SSdfMSFp
群間(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で有意 = どの群に差があるか分かる」?

実はこれ、わかりません。ANOVAが教えてくれるのは「どこかに差がある」だけ。
どの群同士かを突き止めるには、Tukey法やBonferroni法などの多重比較が必要です。

「t検定を何回もやればいいのでは?」

ページ上部のシミュレーションを見てください。3群の比較で t 検定を繰り返すと、本当は差がなくても約14.3%の確率で「有意」が出てしまいます。
ANOVAは、この「偽陽性の膨張」を防いで全体の α を5%に保てる方法です。

「F値が大きい = 効果も大きい」?

サンプルサイズが大きいと、ほんの少しの差でもF値は大きくなります。
「実際にどれくらい差があるか」は効果量(η²)で見るのがおすすめです。

// 試験で聞かれやすいところ

統計検定や大学の期末試験では、以下のパターンがよく出ます。

  • 分散分析表の穴埋め — SS と df が与えられて「MSとF値を求めよ」。上の具体例をなぞれば解ける計算問題です
  • 自由度の公式 — 群間 = k−1、群内 = N−k、全体 = N−1
  • 「t検定を繰り返すと何が問題か」 — 多重比較の問題を論述させる問題。シミュレーションの14.3%の話がそのまま使えます
  • 前提条件 — 正規性・等分散性・独立性の3つ
次は —関係を直線で捕まえる M.01 相関係数