- ANOVA後の多重比較には多くの方法が開発されているが、ここで紹介した方法が基本になると思われる。
- ノンパラメトリック法も開発されているが極端な不等分散には注意が必要である。
- 新たな多重比較が次々に開発されているので、新たな情報に注意すべきである。
9.5. 多重比較法
医学と統計(32)〜(34),
(40,41),
(50,51) 投稿から。
一元分散分析(ANOVA)は 2つ以上の群(水準)での母平均について差があるかどうかを検定しますが,どの水準間に差があるかは
分かりません。そこで多重比較(multiple comparison)を行うのですが、
多重比較には、
・事前比較(planned comparisons)としてア・プリオな比較(a ptiori comparisons)と呼ばれるもの、
・事後比較(post-hoc comparisons)としてア・ポステリオリな比較(a posteriori comparisons)と呼ばれるもの、
があり、
ANOVA が有意であれば事後比較を行うとする考え方が一般に言われています。しかし、ANOVA と事後比較は異なる分析であるので、
ANOVA が有意かどうかに関係なく事後比較を行うという考え方もあります 。
多くは、シェフェ法(Sheffe)を除き、ANOVA で有意でなければ多重比較も有意でないとは言えません。
例題で統計解析環境「R」の方法を見てみましょう。
「血清コレステロール値の時系列変化」、医学と統計(34)は脱コレステロール剤投与による被験者6名の効果を見たものです。 (t0=投与前、t1〜t4=投与1ヶ月〜4ヶ月後)
「R」でデータフレームを次により作ります。
dat<- data.frame(
time=factor(c(rep(1,5),rep(2,5),rep(3,5),rep(4,5),rep(5,5),rep(6,5)),
labels=c("t0","t1","t2","t3","t4","t5")),
value=c(
220 , 219 , 235 , 217 , 205,
224 , 230 , 186 , 179 , 172,
235 , 209 , 190 , 190 , 142,
200 , 195 , 180 , 160 , 155,
265 , 245 , 252 , 225 , 208,
180 , 184 , 155 , 136 , 138))
dat
dat.frame を確認して下さい。
このデータフレームで多重比較を行ってみます。
以下の方法( Dunnett , Williams , Tukey's HSD , Holm )は”Holm” を除き、いずれも正規分布と等分散を仮定して行います。
9.5.1. ダネットの方法(Dunnett)
データフレームの「time = t0」を対照として、他群との母平均の大きさの違いをみる手法です。
「R」コマンド
dun1 <- aov(value ~ time, data=dat)
summary(dun1)
「R」の出力結果は次の通りです。
> summary(dun1)
..... | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
time | 5 | 20527 | 4105.3 | 7.1941 | 0.0003067 |
Residuals | 24 | 13696 | 570.6 | ..... | ..... |
上記の一元配置分散分析表の結果から、「time」は高度に有意(p=0.0003)であると言えます。
よって、
事後比較(post-hoc comparisons)として、投与前(t0)と他群を比較し有意な他群を調べる必要があります。
そこで、
引き続き、次の「R」コマンドを実行します。
library(multcomp)
dun2 <- glht(dun1, linfct = mcp(time = "Dunnett"))
summary(dun2)
Dunnnettの結果は次の通りです。
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Dunnett Contrasts
Fit: aov(formula = value ~ time, data = dat)
Linear Hypotheses:
.......... | Estimate | Std. Error | t value | Pr(>|t|) |
t1 - t0 == 0 | -21.00 | 15.11 | -1.390 | 0.51065 |
t2 - t0 == 0 | -26.00 | 15.11 | -1.721 | 0.31698 |
t3 - t0 == 0 | -41.20 | 15.11 | -2.727 | 0.04654 |
t4 - t0 == 0 | 19.80 | 15.11 | 1.311 | 0.56385 |
t5 - t0 == 0 | -60.60 | 15.11 | -4.011 | 0.00226 |
「Estimate」の95%信頼限界は、
confint(dun2, level=0.95)
として、次の様になります。
Linear Hypotheses:
......... | .Estimate | lwr | upr |
t1 - t0 == 0 | -21.0000 | -61.7186 | 19.7186 |
t2 - t0 == 0 | -26.0000 | -66.7186 | 14.7186 |
t3 - t0 == 0 | -41.2000 | -81.9186 | -0.4814 |
t4 - t0 == 0 | 19.8000 | -20.9186 | 60.5186 |
t5 - t0 == 0 | -60.6000 | -101.3186 | -19.8814 |
この出力結果から、投与前(t0)に比べて3ヶ月後(t3)と5ヶ月後(t5)が有意(両側検定)となっています。
95%信頼限界(lwr , upr)で"0"を含まないこと。
よって、
5ヶ月後(t5)が高度に有意であり、脱コレステロール剤は5ヶ月で効果が見られたと判断されます。
.......... | Estimate | lwr | upr |
t1 - t0 == 0 | -21.0000 | -61.7186 | 19.7186 |
t2 - t0 == 0 | -26.0000 | -66.7186 | 14.7186 |
t3 - t0 == 0 | -41.2000 | -81.9186 | -0.4814 |
t4 - t0 == 0 | 19.8000 | -20.9186 | 60.5186 |
t5 - t0 == 0 | -60.6000 | -101.3186 | -19.8814 |
この出力結果から、投与前(t0)に比べて3ヶ月後(t3)と5ヶ月後(t5)が有意(両側検定)となっています。
95%信頼限界(lwr , upr)で"0"を含まないこと。
よって、
5ヶ月後(t5)が高度に有意であり、脱コレステロール剤は5ヶ月で効果が見られたと判断されます。
9.5.2. ウイリアムス(Williams) の方法
Dannettでのデータを見ると、血中コレステロール値は時系列的に減少の傾向が見られます。
この様に、一定の減少あるいは増加の傾向が見られるときは、ここでの方法を検討すると良いでしょう。
使用するデータは Dunnett の
Williams では投与時(t0)より減少していることを検定しますので片側検定(alternative="less")とします。
もし、漸増なら片側検定(alternative="greater")とします。
library(multcomp)
wila1 <- aov(value ~ time, data=dat)
wila2 <- glht(wila1, alternative="less", linfct=mcp(time = "Williams"))
summary(wila2)
Williams の結果は次の通りです。
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Williams Contrasts
Fit: aov(formula = value ~ time, data = dat)
Linear Hypotheses:
.......... | Estimate | Std. Error | t value | Pr(<t) |
C 1 >= 0 | -60.60 | 15.11 | -4.011 | <0.001 |
C 2 >= 0 | -20.40 | 13.08 | -1.559 | 0.1174 |
C 3 >= 0 | -27.33 | 12.34 | -2.216 | 0.0366 |
C 4 >= 0 | -27.00 | 11.94 | -2.261 | 0.0328 |
C 5 >= 0 | -25.80 | 11.70 | -2.205 | 0.0376 |
この結果から、血中コレステロール値は投与3ヶ月後より減少しており、
脱コレステロール剤の効果が見られると判断されます。
この様に、一定の傾向で漸減漸増しているデータには Dunnett よりも検出力が高い方法です。
9.5.3. チューキーのHSD(Tukey's HSD:Tukey's Honestly Significant Difference)
ANOVAで有意差が認められたとき、どの組合せで有意な差があったかを判断するのなら、
ここでのTukey's HSD を用いることが出来る(Tukey-Cramer と言う)。
標本数が不揃いでも適用できる。
ANOVA で有意にならなくても Tukey's HSD で有意になれば、この方法を採用しても良いと言われている。
使用する例題は前節と同じ「dat」(data.frame)です。
「R」コマンド
Tuk1<- aov(value~ time, data=dat)
Tuk2<- TukeyHSD(Tuk1)
Tuk2
Tukey's HSD の結果は次の通りです。
Tukey multiple comparisons of means 95% family-wise confidence level
Fit: aov(formula = value ~ time, data = dat)
$time
.......... | diff | lwr | upr | p adj |
t1-t0 | -21.0 | -67.7137474 | 25.713747 | 0.7323975 |
t2-t0 | -26.0 | -72.7137474 | 20.713747 | 0.5320201 |
t3-t0 | -41.2 | -87.9137474 | 5.513747 | 0.1062979 |
t4-t0 | 19.8 | -26.9137474 | 66.513747 | 0.7765088 |
t5-t0 | -60.6 | -107.3137474 | -13.886253 | 0.0060336 |
t2-t1 | -5.0 | -51.7137474 | 41.713747 | 0.9994007 |
t3-t1 | -20.2 | -66.9137474 | 26.513747 | 0.7621188 |
t4-t1 | 40.8 | -5.9137474 | 87.513747 | 0.1119705 |
t5-t1 | -39.6 | -86.3137474 | 7.113747 | 0.1305433 |
t3-t2 | -15.2 | -61.9137474 | 31.513747 | 0.9113747 |
t4-t2 | 45.8 | -0.9137474 | 92.513747 | 0.0569079 |
t5-t2 | -34.6 | -81.3137474 | 12.113747 | 0.2365345 |
t4-t3 | 61.0 | 14.2862526 | 107.713747 | 0.0056606 |
t5-t3 | -19.4 | -66.1137474 | 27.313747 | 0.7905486 |
t5-t4 | -80.4 | -127.1137474 | -33.686253 | 0.0002407 |
次により、
グラフにして、95% 信頼限界で"0"を含まない組合せを見ると良いでしょう。
library(graphics)
plot(Tuk2)
9.5.4. Holmの方法
前節までの方法はいずれも正規分布と等分散を仮定して行いました。
ここでは、ノンパラメトリックにも適用できる「Holm」(Bonferroni の改良版) の方法を紹介します。
しかし、正規分布からは外れているが不等分散を保障するものではありません。
使用する例題は前節までと同じ「dat」(data.frame)です。
「R」コマンド
dat<- data.frame(
time=factor(c(rep(1,5),rep(2,5),rep(3,5),rep(4,5),rep(5,5),rep(6,5)),
labels=c("t0","t1","t2","t3","t4","t5")),
value=c(
220 , 219 , 235 , 217 , 205,
224 , 230 , 186 , 179 , 172,
235 , 209 , 190 , 190 , 142,
200 , 195 , 180 , 160 , 155,
265 , 245 , 252 , 225 , 208,
180 , 184 , 155 , 136 , 138))
dat
attach(dat)
pairwise.t.test ( value, time, p.adjust.method="holm" , data=dat)
出力結果は次の通りです。
Pairwise comparisons using t tests with pooled SD
data: value and time
..... | t0 | t1 | t2 | t3 | t4 |
t1 | 1.00000 | - | - | - | - |
t2 | 0.68695 | 1.00000 | - | - | - |
t3 | 0.12931 | 1.00000 | 1.00000 | - | - |
t4 | 1.00000 | 0.12931 | 0.06910 | 0.00671 | - |
t5 | 0.00671 | 0.13475 | 0.24881 | 1.00000 | 0.00028 |
P value adjustment method: holm
ボンフェロローニ(Bonferroni )なら、次の様になります。
pairwise.t.test ( value, time, p.adjust.method="bonferroni" , data=dat)
Pairwise comparisons using t tests with pooled SD
data: value and time
..... | t0 | t1 | t2 | t3 | t4 |
t1 | 1.00000 | - | - | - | - |
t2 | 1.00000 | 1.00000 | - | - | - |
t3 | 0.17633 | 1.00000 | 1.00000 | - | - |
t4 | 1.00000 | 0.18738 | 0.08637 | 0.00719 | - |
t5 | 0.00769 | 0.22459 | 0.46653 | 1.00000 | 0.00028 |
P value adjustment method: bonferroni
「Holm」と「Bonferroni」の出力結果を見ても分かるように、「Bonferroni」の検出力が低いようです。
通常は「Holm」の使用をおすすめします。
戻る 次へ 目次へ TOPへ