読者です 読者をやめる 読者になる 読者になる

野次馬エンジニア道

野次馬な気持ちでプログラミングをあれこれと綴ります

分散分析 - 一元配置

用語がなんか独特なのでまとめてみる。

分散分析 (analysis of variance)

因子・水準と平方和

3つ以上の母集団の平均の比較。実験として取り上げるものを因子(factor)、因子に与える上限を水準(level)と呼ぶ。因子と水準との組み合わせからなる実験条件のことを処理(treatment)と呼ぶ。

分散分析はデータ全体の変動の大きさ(総平方和)を水準変更による変動(級間平方和)と同一条件化の変動(誤差平方和)とに分解して行う。

級間平方和を郡間平方和、誤差平方和を郡内平方和とも呼ぶ。

一元配置 (one-way layout)

1因子実験のこと。{a} 個の水準の処理を {A_1,A_2,\cdots,A_a} としたときに、水準 {A_i}{r_i} 回繰り返し {j} 番目の標本が {y_{ij}} として得られたときに

{ \displaystyle
y_{ij} = \mu_{i} + \varepsilon_{ij} = \mu + \alpha_i +\varepsilon_{ij}, \quad i = 1,\cdots,a, \quad j = 1,\cdots, n_r, \quad  \varepsilon_{ij} \sim N(0,\sigma^2)
}

とモデルを置く。ここでデータの総数を {n} とすると、

  • {\mu = \sum r_i \mu_i / n} を一般平均(grand mean)
  • {\alpha_i = \mu_i - \mu } を効果(effect)

と呼ぶ。効果は、{\sum r_i \alpha_i} = 0 になっている。

平方和の分解

水準毎の計と総計を

{ \displaystyle
y_{i\cdot}= \sum_{j} y_{ij},\quad y_{\cdot\cdot} =  \sum_{i} \sum_{j} y_{ij}
}

その平均と総平均を

{ \displaystyle
\overline{y}_{i\cdot} = \frac{y_{i\cdot}}{r_i}, \quad \overline{y}_{\cdot\cdot} =  \frac{y_{\cdot\cdot} }{n}
}

総平方和 {S_T} を 級間平方和{S_A} と誤差平方和 {S_e} に分解する。

ここで、{ y_{ij} - \overline{y}_{\cdot\cdot} = (\overline{y}_{i\cdot}-\overline{y}_{\cdot\cdot} ) +  (y_{ij}-\overline{y}_{i\cdot} ) } を両辺を2乗して加えると、

{  \displaystyle
\sum_{i}\sum_{j}(y_{ij} - \overline{y}_{\cdot\cdot})^2 = \sum_{i}r_i(\overline{y}_{i\cdot}-\overline{y}_{\cdot\cdot} )^2 +  \sum_{i}\sum_{j}(y_{ij}-\overline{y}_{i\cdot} )^2
}

{  S_T = S_A + S_e} の形になる。交差項が、

{ \displaystyle
\sum_{i}\sum_{j}(\overline{y}_{i\cdot}-\overline{y}_{\cdot\cdot} )(y_{ij}-\overline{y}_{i\cdot} ) =  \sum_{i}\{ (\overline{y}_{i\cdot}-\overline{y}_{\cdot\cdot} )\sum_{j}(y_{ij}-\overline{y}_{i\cdot} ) \} = 0
}

となるのを利用する。

期待値

標本 {y_{ij}} 水準毎の標本平均 {\overline{y}_{i\cdot}} 標本の総合平均 {\overline{y}_{\cdot\cdot}} は、

{ \displaystyle
y_{ij} = \mu + \alpha_i +\varepsilon_{ij}, \quad \varepsilon_{ij} \sim N(0,\sigma^2), \quad E[ \varepsilon_{ij}^2] = \sigma^2
}

{ \displaystyle
\overline{y}_{i\cdot} = \mu + \alpha_i +\overline{\varepsilon}_{i\cdot}, \quad \varepsilon_{i\cdot} \sim N(0,\frac{\sigma^2}{r_i}), \quad E[ \overline{\varepsilon}_{i\cdot}^2] = \frac{\sigma^2}{r}
}

{ \displaystyle
\overline{y}_{\cdot\cdot} = \mu +\overline{\varepsilon}_{\cdot\cdot}, \quad \varepsilon_{\cdot\cdot} \sim N(0,\frac{\sigma^2}{n}), \quad E[ \overline{\varepsilon}_{\cdot\cdot}^2] = \frac{\sigma^2}{n}
}

なので

{  \displaystyle
E[S_A] = E[ \sum_{i}r(\overline{y}_{i\cdot}-\overline{y}_{\cdot\cdot} )^2 ] = E[ \sum_{i}r_i(\alpha_i +\overline{\varepsilon}_{i\cdot} - \overline{\varepsilon}_{\cdot\cdot})^2 ]
}

{  \displaystyle
= (a-1)\sigma^2 + \sum_{i}r\alpha_i^2
}

{  \displaystyle
E[S_e] = E[ \sum_{i}\sum_{j}(y_{ij}-\overline{y}_{i\cdot} )^2 ] = E[ \sum_{i}\sum_{j}(\varepsilon_{ij} - \overline{\varepsilon}_{i\cdot} )^2 ]
}

{  \displaystyle
= (n-a)\sigma^2
}

平方和の比による検定

全ての水準で平均が等しい { \mu_1=\mu_2=\cdots=\mu_a} 帰無仮説 {H_0} は、 { \alpha_1=\alpha_2=\cdots=\alpha_a = 0 } と同じ。

平方和の期待値の結果から、

  • 誤差平方和の {S_e/\sigma^2} は自由度 {\nu_e = n  -  a  }{\chi^2} 分布に従う
  • 級間平方和の {S_A/\sigma^2} は自由度 {\nu_A = a  - 1}{\chi^2} 分布に従う

ので、それぞれ自由度で割った平均平方(mean square)で比をとった

{ \displaystyle
 F = \frac{S_A/\nu_A}{S_e/\nu_e} \sim F(\nu_A,\nu_e)
}

F分布を用いて検定を行う。平均が等しければF分布は1に近くなる。

分散分析表

解析結果は下記のようになる。

変動要因 変動(平方和) 自由度 分散(平均平方和)
因子A {S_A=\sum_{i}r_i(\overline{y}_{i\cdot}-\overline{y}_{\cdot\cdot} )^2} a-1 {\frac{S_A}{a-1}}
残差 {S_e = \sum_{i}\sum_{j}(y_{ij}-\overline{y}_{i\cdot} )^2} n-a { \frac{S_e}{n-a}}
合計 {S_T = \sum_{i}\sum_{j}(y_{ij} - \overline{y}_{\cdot\cdot})^2} n - 1 { \frac{S_T}{n-1}}

平方和の計算

平方和の分解の式よりも下記の方が楽。

{ \displaystyle
S_T = \sum_{i} \sum_{j}(y_{ij}-\overline{y}_{\cdot\cdot} )^2 = \sum_{i} \sum_{j}y_{ij}^2 - \frac{1}{n}\sum_{i}  y_{\cdot\cdot}^2
}

{ \displaystyle
S_A = S_T - S_e = \frac{1}{r}\sum_{i}  y_{i\cdot}^2  - \frac{1}{n}\sum_{i}  y_{\cdot\cdot}^2 = \sum_{i} r (y_{i\cdot} - y_{\cdot\cdot})^2
}

{ \displaystyle
S_e = S_T - S_A
}

寄与率

{S_A } は水準の違いによるデータのばらつきの程度、{ S_e} は誤差によるデータのばらつきの度合い。ここで 寄与率(相関率) { \rho}

{ \rho = \frac{S_A}{S_T} = 1 - \frac{S_e}{S_T} }

とする。水準による違いが大きければこの値は1に近づく。逆に誤差による影響が大きければ0に近づく。

Rによる出力例

Rで分散分析を行うには,aov()を用いる。分散分析表はanovaで表示する。

> anova(aov(y ~ F))
Analysis of Variance Table

Response: y
          Df  Sum Sq Mean Sq F value    Pr(>F)    
F          2 25.5226 12.7613  32.268 1.485e-05 ***
Residuals 12  4.7457  0.3955                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1