本記事では, R で分散分析 (一元配置) を行う手順を紹介します.
分散分析とは
そもそも, 分散分析とは一体どういった統計的手法なのでしょうか.
2 つのグループの平均を比較するときは, t 検定を行いますが, 3 つ以上のグループの平均を比較するときに, t 検定を用いることはできません. 3 つ以上のグループの平均値の差の検定は, 分散分析という方法を用います.
たとえば以下のような表があり, これが何かの調査結果だとします. 何でもいいんですが, x が花の品種 a, b, c で, y が種子の重さにしましょう. a, b, c の種子重さには, 差があるでしょうか.
検定の手順ですが, まずは, 統計解析の基本である, 帰無仮説, 対立仮説を立てます.
ここでは, a, b, c の母平均が等しいかどうかを検定しますので,
- 帰無仮説 H0: μ1 = μ2 = μ3
- 対立仮説 H1: 少なくとも 1 つの母平均が他の母平均と異なる
というふうになります.
続いて有意水準を設定します. 慣例に倣って,
- 有意水準 α = 0.05
としましょう.
続いて, 使用する統計的手法の決定ですが, 今回は, 要因が 1 つ (品種だけ) ですので, 一元配置分散分析を行うことになります. これが, 要因が 2 つになる, たとえば「品種と施肥量によって, 種子の重さは変化するのか?」になると, 二元配置分散分析になります.
R で一元配置分散分析
R で一元配置分散分析をする関数は「oneway.test」です.
たとえば上の表を csv ファイルか何かで作り, data1 として R へ読み込んだ場合,
oneway.test(y ~ x, data=data1, var.equal=T)
と入力すれば, 結果を得ることができます.
結果は,
One-way analysis of means
data: y and x
F = 4.5688, num df = 2, denom df = 18, p-value = 0.02485
と表示されます.
この p-value が α=0.05 より小さければ, 帰無仮説が棄却され, 品種間の種子の重さに差があるということになります. この場合は「差がある」ということになりますね.
なお,
summary(aov(y ~ x, data=data1))
で, 分散分析表を得ることができます.
Df Sum Sq Mean Sq F value Pr(>F)
x 2 1.637 0.8186 4.569 0.0248 *
Residuals 18 3.225 0.1792Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
多重比較: Tukey HSD 法
しかしこれでは, どの品種とどの品種の間に差があるかまではわかりません. それを行うのが多重比較です.
多重比較の方法はさまざまありますが, ここでは, Tukey の HSD 法を紹介します.
R で Tukey HSD 法を実行するには,「TukeyHSD」関数を使えば良いわけですが (そのまんま過ぎる…), 今まで使用してきた data1 を用いると,
TukeyHSD(aov(y ~ x, data=data1))
となります.
これで,
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = y ~ x, data = data1)
$x
diff lwr upr p adj
b-a -0.61000000 -1.1874374 -0.032562556 0.0374637
c-a -0.57285714 -1.1502946 0.004580301 0.0520448
c-b 0.03714286 -0.5402946 0.614580301 0.9852646
という結果を得ることができます.
p adj (もっとも右の値) をみると, a-b 間しか, α=0.05 を下回っていませんね. ということは, a-b 間には, 平均の差はあります = 有意な差はありますが, a-c 間, b-c 間にはないということになります. ただ, a-c 間は, p 値 = 0.052 ですので,「ない」と切り捨てるには微妙な値ではあります.
ところで, 論文などを読むと, 多重比較の有意差を示す表に, アルファベットがついていることがあります. それについては, 以下の記事を参考にしてください.