分散共分散行列の同等性の検定     Last modified: Aug 27, 2015

例題

 「表 1.に示すような 2 群 3 変数のデータにおいて,2 群の分散共分散行列が同等か,有意水準 $5\%$ で検定しなさい。」

表 1.2 群 3 変数のデータ
$X_{1}$ $X_{2}$ $X_{3}$
1 2.9 161.7 120.8
1 2.3 114.8 85.2
1 2.0 128.4 92.0
1 3.2 149.2 97.3
1 2.7 126.0 81.1
1 4.4 133.8 107.6
1 4.1 161.3 114.0
1 2.1 111.5 77.3
2 4.8 198.7 172.9
2 3.6 199.3 157.9
2 2.0 188.4 152.7
2 4.9 183.6 164.2
2 3.9 173.5 172.2
2 4.4 184.9 163.2


検定手順:

  1. 前提

  2. 2 群の $p$ 変量データにおいて,各群の平均偏差データ行列を $\matrix{X}_{1}$,$\matrix{X}_{2}$ とする。
    $\matrix{X}_{1}$,$\matrix{X}_{2}$ はそれぞれ $n_1 \times p$,$n_2 \times p$ データ行列の各要素から対応する平均値を引いたものである。

    > ( dat <- matrix(c(
    + 	1, 2.9, 161.7, 120.8,
    + 	1, 2.3, 114.8, 85.2,
    + 	1, 2, 128.4, 92,
    + 	1, 3.2, 149.2, 97.3,
    + 	1, 2.7, 126, 81.1,
    + 	1, 4.4, 133.8, 107.6,
    + 	1, 4.1, 161.3, 114,
    + 	1, 2.1, 111.5, 77.3,
    + 	2, 4.8, 198.7, 172.9,
    + 	2, 3.6, 199.3, 157.9,
    + 	2, 2, 188.4, 152.7,
    + 	2, 4.9, 183.6, 164.2,
    + 	2, 3.9, 173.5, 172.2,
    + 	2, 4.4, 184.9, 163.2
    + ), byrow=TRUE, ncol=4) )
    
          [,1] [,2]  [,3]  [,4]
     [1,]    1  2.9 161.7 120.8
     [2,]    1  2.3 114.8  85.2
     [3,]    1  2.0 128.4  92.0
     [4,]    1  3.2 149.2  97.3
     [5,]    1  2.7 126.0  81.1
     [6,]    1  4.4 133.8 107.6
     [7,]    1  4.1 161.3 114.0
     [8,]    1  2.1 111.5  77.3
     [9,]    2  4.8 198.7 172.9
    [10,]    2  3.6 199.3 157.9
    [11,]    2  2.0 188.4 152.7
    [12,]    2  4.9 183.6 164.2
    [13,]    2  3.9 173.5 172.2
    [14,]    2  4.4 184.9 163.2
    
    > ( X1 <- dat[1:8, 2:4] ) # 後述のように var 関数を使うときには平均偏差データ行列でなくてもよい
    
         [,1]  [,2]  [,3]
    [1,]  2.9 161.7 120.8
    [2,]  2.3 114.8  85.2
    [3,]  2.0 128.4  92.0
    [4,]  3.2 149.2  97.3
    [5,]  2.7 126.0  81.1
    [6,]  4.4 133.8 107.6
    [7,]  4.1 161.3 114.0
    [8,]  2.1 111.5  77.3
    
    > ( X2 <- dat[9:14, 2:4] )
    
         [,1]  [,2]  [,3]
    [1,]  4.8 198.7 172.9
    [2,]  3.6 199.3 157.9
    [3,]  2.0 188.4 152.7
    [4,]  4.9 183.6 164.2
    [5,]  3.9 173.5 172.2
    [6,]  4.4 184.9 163.2
    
  3. 各群の分散共分散行列を $\matrix{S}_{1} = \displaystyle \frac{\matrix{X}_{1}' \matrix{X}_{1}}{ n_1 - 1 }$,$\matrix{S}_{2} = \displaystyle \frac{\matrix{X}_{2}' \matrix{X}_{2} }{ n_2 - 1 }$ とする。

    例題では,

    \[ \begin{align*} \matrix{S}_1 &= \left ( \begin{array}{rrr} 0.799821 & 10.323 & 9.56482 \\ 10.323 & 383.843 & 278.871 \\ 9.56482 & 278.871 & 253.281 \end{array} \right ) \\ \\ \matrix{S}_2 &= \left ( \begin{array}{rrr} 1.15067 & -0.0966667 & 6.228 \\ -0.0966667 & 96.3067 & -19.092 \\ 6.228 & -19.092 & 62.379 \end{array} \right ) \end{align*} \]

    > ( S1 <- var(X1) )
    
               [,1]      [,2]       [,3]
    [1,]  0.7998214  10.32304   9.564821
    [2,] 10.3230357 383.84268 278.870893
    [3,]  9.5648214 278.87089 253.281250
    
    > ( S2 <- var(X2) )
    
                [,1]         [,2]    [,3]
    [1,]  1.15066667  -0.09666667   6.228
    [2,] -0.09666667  96.30666667 -19.092
    [3,]  6.22800000 -19.09200000  62.379
    
    
  4. 2 群をプールした分散共分散行列 $\matrix{S}_{*}$ は,1 変量の平均値の差の検定(t 検定)で,2 群をプールしたときの分散を求めるときの式を行列に拡張したものである。

    \[ \matrix{S}_{*} = \frac{(n_1-1)\matrix{S}_1 + (n_2-1)\matrix{S}_2}{n_1+n_2-2} \] 例題では,

    \[ \begin{align*} \matrix{S}_1 &= \left ( \begin{array}{rrr} 0.946007 & 5.98149 & 8.17448 \\ 5.98149 & 264.036 & 154.72 \\ 8.17448 & 154.72 & 173.739 \end{array} \right ) \\ \end{align*} \]

    > ( n1 <- nrow(X1) )
    [1] 8
    
    > ( n2 <- nrow(X2) )
    [1] 6
    
    > ( S <- ((n1-1)*S1+(n2-1)*S2) / (n1+n2-2) )
    
              [,1]       [,2]       [,3]
    [1,] 0.9460069   5.981493   8.174479
    [2,] 5.9814931 264.036007 154.719688
    [3,] 8.1744792 154.719688 173.738646
  5. $\nu_{1} = n_1 - 1$,$\nu_{2} = n_2 - 1$ とおき,$| \matrix{S}_{*} |$ などを行列式として,

    \[ -2\ln{V} = (\nu_1+\nu_2)\ln|\matrix{S}_{*} | -\nu_1\ln|\matrix{S}_{1} | -\nu_2\ln|\matrix{S}_{2} | \] \[ b = 1-\left ( \frac{1}{\nu_1}+\frac{1}{\nu_2}-\frac{1}{\nu_1+\nu_2} \right ) \cdot \frac{2p^2+3p-1}{6(p+1)} \] とし,次式により $\chi^2_0$ を求める。

    \[ \chi_0^2=b\ (-2\ln V) \] 例題では,$| \matrix{S}_{1} | = 8520.68$,$| \matrix{S}_{2} | = 2780.09$,$| \matrix{S}_{*} | = 12021.40$ より $-2 \ln V = 9.73042$,また $b = 0.718849$ となるから,$\chi^2_0 = 6.99471$ である。

    > ( nu1 <- n1-1 )
    [1] 7
    
    > ( nu2 <- n2-1 )
    [1] 5
    
    > ( det.S1 <- det(S1) )
    [1] 8520.683
    
    > ( det.S2 <- det(S2) )
    [1] 2780.086
    
    > ( det.S <- det(S) )
    [1] 12021.45
    
    > ( a <- (nu1+nu2)*log(det(S)) - nu1*log(det(S1)) - nu2*log(det(S2)) )
    [1] 9.730422
    
    > ( p <- ncol(X1) )
    [1] 3
    
    > ( b <- 1-(1/nu1 + 1/nu2 -1/(nu1+nu2)) * (2*p^2+3*p-1)/6/(p+1) )
    [1] 0.7188492
    
    > ( chisq <- b*a )
    [1] 6.994706
    
  6. $\chi^2_0$ は,自由度 $\displaystyle \frac{p\ ( p + 1 )}{2}$ の $\chi^2$ 分布に従う。

    例題では,自由度は $6$ である。

    > ( df <- p*(p+1)/2 )
    [1] 6
    
  7. 有意確率を $P = \Pr \{ \chi^2 \geqq \chi^2_0 \}$ とする。
    $\chi^2$ 分布表,または$\chi^2$ 分布の上側確率の計算を参照すること。

    例題では,自由度 6 の $\chi^2$ 分布において,$\Pr\{\chi^2 \geqq 12.59\}= 0.05$ であるから,$P = \Pr\{\chi^2 \geqq 6.9917\}\gt 0.05$ である(正確な有意確率:$P = 0.3213371$)。

    > ( P <- pchisq(chisq, df, lower.tail=FALSE) )
    [1] 0.3213371
    
  8. 帰無仮説の採否を決める。

    例題では,有意水準 $5\%$ で検定を行うとすれば($\alpha = 0.05$),$P \gt \alpha$ であるから,帰無仮説は棄却できない。すなわち,「2 群の分散共分散行列は等しくないとはいえない」。


演習問題


応用問題


・ 計算プログラム [R] [Python]
・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI