対応のあるt検定とANOVA


今回は、「対応のあるt検定」について考えます。対応のあるt 検定を意識したデータ構造は以下のようになります。下の図は、ある薬剤を投与前と投与後の体重の変化を示しています。検証したい命題は「ある薬剤を投与した前後で体重は変化するか」です。

対応のないt検定と比較する目的で、下の表を提示します。各群のデータは順番は入れ替えてあるものの、上の表と同じです。薬剤投与を受けた人と薬剤投与を受けなかった人は別の人を想定します。つまり、上の表の2倍の人数が下の表では動員されていることとなります。



これから、Rを用いて対応のある場合と対応のない場合で、薬剤投与による効果
> pre <- c(67, 70, 78, 65, 75, 77, 70, 76, 79, 83)
> post <- c(66, 68, 78, 63, 74, 76, 68, 75, 78, 82)

> negative <- c(78,67,75,65,70,77,70,83,79,76)
> positive <- c(68,66,78,75,82,78,76,63,68,74)

#ドットプロット
> source("http://aoki2.si.gunma-u.ac.jp/R/src/dot_plot.R", encoding="euc-jp")
#対応あり
> annot <- factor(c(rep("pre", 10), rep("post", 10), rep("negative", 10), rep("positive", 10)))
> dat <- c(pre, post, positive, negative)
> dot.plot(annot, dat)
#対応のあるt検定
> t.test(pre, post, paired=T)

 Paired t-test

data: pre and post 
t = 6, df = 9, p-value = 0.0002025
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 0.7475686 1.6524314 
sample estimates:
mean of the differences 
                    1.2 

#対応のないt検定
> t.test(negative, positive, paired=F)

 Welch Two Sample t-test

data: negative and positive 
t = 0.4494, df = 17.91, p-value = 0.6585
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -4.411489 6.811489 
sample estimates:
mean of x mean of y 
     74.0 72.8 

驚くことに対応のあるt検定では有意差が検出されたのに、対応のないt検定では有意差が検出されませんでした。
この理由は、個人によるばらつきを対応のあるt検定によって制御できたことにあります。対応のないt検定の場合、個人差によるばらつきが残差に入ってしまうため、残差の分散が大きくなり、その結果薬剤の投与という要因による効果を検出するには至らなかったのです。これはまさにANOVAの考え方そのものです。というか、一般線形モデルの本質的な部分です。

対応のある一元配置分散分析を行うことで、薬剤と人という二つの要因による効果の大きさについて検証することができます。

> dat
 [1] 67 70 78 65 75 77 70 76 79 83 66 68 78 63 74 76 68 75 78 82


> drug <- factor(c(rep("negative", 10), rep("positive",10)))
> drug
 [1] negative negative negative negative negative negative negative negative
 [9] negative negative positive positive positive positive positive positive
[17] positive positive positive positive
Levels: negative positive

> person <- factor(rep(c("Hiroshi", "Takeshi", "Yamato", "Keita", "Tetsuya", "Shinta", "Yohei", "Daichi", "Yusuke", "Daisuke"),2))
> person 
[1] Hiroshi Takeshi Yamato Keita Tetsuya Shinta Yohei Daichi Yusuke 
[10] Daisuke Hiroshi Takeshi Yamato Keita Tetsuya Shinta Yohei Daichi 
[19] Yusuke Daisuke
10 Levels: Daichi Daisuke Hiroshi Keita Shinta Takeshi Tetsuya Yamato ... Yusuke

#drugとpersonの二つの要因を考慮してANOVAを行う。ただし、drugとpersonの間に交互作用はないものとする。
> summary(aov(dat~drug+person)) 
               Df  Sum Sq     Mean   Sq      F value    Pr(>F)    
drug         1           7.2              7.20           36.0    0.000202 ***
person      9        639.8            71.09         355.4    2.16e-10 ***
Residuals 9             1.8             0.20                     
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 


#drugだけを要因として考えてANOVA
> summary(aov(dat~drug))
               Df  Sum Sq     Mean   Sq      F value    Pr(>F)   
drug         1           7.2              7.20        0.202     0.658
Residuals  18      641.6            35.64     


drugとpersonを考慮してANOVAを行うと残差(Residuals)の平方和(Mean Sq)が小さくなり、その結果F valueが大きくなることがわかります。F valueを求めるには、

F value = (drugのMean Sq) / (ResidualsのMean Sq)

です。
このように、対応のあるt検定はanovaにおいて、要因を追加することにより系統誤差を制御していることになるのです。その結果、説明できない誤差(すなわち残差)が小さくなるため、F値は大きくなり、その結果、小さなp値が出やすくなります。

以上のことから、実験結果に影響を及ぼす要因はできるだけ見いだしておいて、制御できるものは実験デザインによって制御することが大事であると言えます。

【参考文献】
山田剛史ほか『Rによるやさしい統計学』オーム社 2008 150-156, 175-179pp