<<目次へ


分散分析と回帰分析



このページの趣旨 「分散分析と回帰分析は結果として同じことをやっている」ということを理解する。


 [推定と検定]のページにある[1元配置分散分析]であげられている例を考えてみよう。

 これは最も単純な例で,観測地という1つの要因があり,その要因にはA地点,B地点,C地点という3つの水準が含まれている。まずはこれを通常通り「3群の平均値の差の検定」として分散分析してみよう。

Table 1
A地点(cm) B地点(cm) C地点(cm)
No.1 23.5 16.5 28.8
No.2 20.9 17.0 26.5
No.3 19.2 15.9 30.1
No.4 21.0 18.2 29.5
No.5 23.8 20.1 26.9
No.6 20.4 16.4 27.0
> x <- c(
+ 23.5, 20.9, 19.2, 21.0, 23.8, 20.4,
+ 16.5, 17.0, 15.9, 18.2, 20.1, 16.4,
+ 28.8, 26.5, 30.1, 29.5, 26.9, 27.0)
> g <- rep(1:3, c(6, 6, 6))
> myData <- data.frame(x = x, g = as.factor(g))
> summary(aov(x~g, myData))
            Df Sum Sq Mean Sq F value    Pr(>F)    
g            2 355.34  177.67  66.326 3.560e-08 ***
Residuals   15  40.18    2.68                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

 結果を見て分かるように,観測地によってマスの体長が異なっているようである。ただし,これはA地点とB地点とを比べてどちらが大きいかということには着目していない。そのような場合は多重比較を行う必要があるが,ここでは触れない。

 続いてこれを「ダミー変数を用いた回帰分析」によって分析を試みてみよう。下の表はTable 1のデータをダミー変数に置き換えたもので,x11は「A地点で観測された1匹目(No.1)のマス」であることを示している。x21は「A地点-2匹目」,x31は「A地点-3匹目」といったようになっている。

Table 2
A地点 B地点 C地点 マスの体長
x11 1 0 0 23.5
x21 1 0 0 20.9
x31 1 0 0 19.2
x41 1 0 0 21.0
x51 1 0 0 23.8
x61 1 0 0 20.4
x12 0 1 0 16.5
x22 0 1 0 17.0
x32 0 1 0 15.9
x42 0 1 0 18.2
x52 0 1 0 20.1
x62 0 1 0 16.4
x13 0 0 1 28.8
x23 0 0 1 26.5
x33 0 0 1 30.1
x43 0 0 1 29.5
x53 0 0 1 26.9
x63 0 0 1 27.0

 この表において,観測地点を独立変数,マスの体長を従属変数として回帰分析を行ってみる。なお,実際に分析するときは独立変数を1つだけ削除して行う必要がある。今回はA地点のデータ列を削除した。

> dat
      [,1] [,2] [,3]
 [1,]    0    0 23.5
 [2,]    0    0 20.9
 [3,]    0    0 19.2
 [4,]    0    0 21.0
 [5,]    0    0 23.8
 [6,]    0    0 20.4
 [7,]    1    0 16.5
 [8,]    1    0 17.0
 [9,]    1    0 15.9
[10,]    1    0 18.2
[11,]    1    0 20.1
[12,]    1    0 16.4
[13,]    0    1 28.8
[14,]    0    1 26.5
[15,]    0    1 30.1
[16,]    0    1 29.5
[17,]    0    1 26.9
[18,]    0    1 27.0
> result <- lm(dat[,3] ~ dat[,1] + dat[,2])
> summary(result)

Call:
lm(formula = dat[, 3] ~ dat[, 1] + dat[, 2])

Residuals:
    Min      1Q  Median      3Q     Max 
-2.2667 -1.1167 -0.5167  1.2375  2.7500 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  21.4667     0.6682  32.127 3.02e-15 ***
dat[, 1]     -4.1167     0.9449  -4.357 0.000564 ***
dat[, 2]      6.6667     0.9449   7.055 3.91e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 1.637 on 15 degrees of freedom
Multiple R-Squared: 0.8984,     Adjusted R-squared: 0.8849 
F-statistic: 66.33 on 2 and 15 DF,  p-value: 3.560e-08 

 結果を分かりやすくまとめると次のようになる。A地点の係数は0になっているが,要するにこれは「A地点のマスの体長を基準(=0)としている」ということである。つまりB地点のマスの体長はA地点よりも-4.12小さいということであり,C地点では6.67大きいということである。

(マスの体長) = 21.47 + 0 * (A地点) - 4.12 * (B地点) + 6.67 * (C地点)

 なおこの回帰方程式についての分散分析表を作成すると次のとおりになる。これは最初にやった分散分析の場合と一致している。ただし2元配置の場合はこうにならないことを了承しておいて欲しい。

$anova
        平方和 自由度   平均平方     F 値         P 値
回帰 355.34333      2 177.671667 66.32565 3.559632e-08
残差  40.18167     15   2.678778       NA           NA
全体 395.52500     17  23.266176       NA           NA

 それから最後にもう1つ面白いことを紹介しておこう。上の回帰方程式の定数項である21.47と各地点の係数を足してみて欲しい。すると,これは各観測地点のマスの体長の平均値と一致するのだ。

Table 3
定数項 + 係数 平均値
A地点 21.4667 + 0 = 21.47 21.47
B地点 21.4667 - 4.1167 = 17.35 17.35
C地点 21.4667 + 6.6667 = 28.13 28.13

 数学的にいえば分散分析も回帰分析も同じ線形モデルであるので結果が同じであることは当たり前なのです。まぁ,この辺りの詳しい理屈までは理解しなくても良いでしょう。