一般化線形モデルとしての t 検定

glm 関数と t 検定

t 検定は 2 つの実験群の間の平均に有意差があるかどうを検定する方法である。R では t.test 関数を利用することで検定を行うことができる。t 検定を利用するデータの分布は正規分布でなければならない。これを一般線形モデルという。一方、一般線形モデルを一般化させた一般化線形モデルが提唱されている。ここでは、一般化線形モデルを用いて t 検定を行う例を示す。

等分散のときの t 検定

サンプルデータを作成する。1 群のデータを変数 y1 に保存し、2 群のデータを変数 y2 に保存する。また、両群のデータを一つのベクトルの格納した変数を y とする。2 つの群の分散は同じものとする。

y1 <- rnorm(10, 7)
y2 <- rnorm(10, 9)
y <- c(y1, y2)

1 群の平均を β1 とし、2 群の平均を β2 として、一般化線形モデルは次のようにモデル化できる。

\[ \mathbf{y} = \mathbf{X}\mathbf{\beta} + \mathbf{e} \] \[ \begin{pmatrix} y_{11} \\ y_{12} \\ \vdots \\ y_{21} \\ y_{22} \\ \vdots \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 1 & 0 \\ \vdots & \vdots \\ 0 & 1 \\ 0 & 1 \\ \vdots & \vdots \end{pmatrix} \begin{pmatrix} \beta_{1} \\ \beta_{2} \end{pmatrix} \]

ここで、デザイン行列 X を作成する。デザイン行列は 2 列になっているので、それぞれの列を単独に作成して変数 f1f2 に保存する。

f1 <- factor(c(rep(1, 10), rep(0, 10)))
f2 <- factor(c(rep(0, 10), rep(1, 10)))

サンプルデータの生成およびデザイン行列の作成が終えると、glm 関数で解析してみると以下のような結果となった。

summary(glm(y ~ f1 + f2, family = gaussian()))
## Call:
## glm(formula = y ~ f1 + f2, family = gaussian())
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.1347  -1.0608   0.1207   1.3558   2.2955  
## 
## Coefficients: (1 not defined because of singularities)
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   8.8796     0.4798  18.506 3.66e-13 ***
## f11          -1.7768     0.6786  -2.618   0.0174 *  
## f21               NA         NA      NA       NA    
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
## 
## (Dispersion parameter for gaussian family taken to be 2.3022)
## 
##     Null deviance: 57.224  on 19  degrees of freedom
## Residual deviance: 41.440  on 18  degrees of freedom
## AIC: 77.328
## 
## Number of Fisher Scoring iterations: 2

glm 関数の解析結果をみると、 f11 の項の t value は -2.618 であり、Pr は 0.0174 となったことがわかる。

同様なデータを利用して、t 検定を行うと結果は以下のようになる。t 検定の結果も glm と同様に t は -2.618、p-value は 0.01741 となったことがわかる。

t.test(y1, y2, var.equal = T)
## 	Two Sample t-test
## 
## data:  y1 and y2
## t = -2.6185, df = 18, p-value = 0.01741
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3.2023683 -0.3511763
## sample estimates:
## mean of x mean of y 
##  7.102817  8.879589 

分散が異なるときの t 検定

分散が異なるときの t 検定も一般化線形モデルで解析できる。分散が同じであるとき、モデル作成する際に用いたパラメータは β1 と β2 だけであった。つまり、2 つの群の分散を考慮せずに、2 つの群の平均だけを考慮していた。そこで、比較する 2 つの群において、その分散が異なる場合、分散もモデルに入れる必要がある。

\[ \begin{pmatrix} y_{11} \\ y_{12} \\ \vdots \\ y_{21} \\ y_{22} \\ \vdots \end{pmatrix} = \begin{pmatrix} 1 & 1 & 0 & 0 \\ 1 & 1& 0 & 0 \\ \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 1 &1 \\ \vdots & \vdots & \vdots & \vdots \end{pmatrix} \begin{pmatrix} \beta_{1\mu} \\ \beta_{1\sigma^{2}} \\ \beta_{2\mu} \\ \beta_{2\sigma^{2}} \end{pmatrix} \]

R でサンプルデータとデザイン行列を作成する。

y1 <- rnorm(10, 7, 3)
y2 <- rnorm(10, 9, 5)
y <- c(y1, y2)
f1 <- factor(c(rep(1, 10), rep(0, 10)))
f2 <- factor(c(rep(0, 10), rep(1, 10)))

glm 関数で解析を行った結果。

summary(glm(y ~ f1 + f1 + f2 + f2, family = gaussian()))
## Call:
## glm(formula = y ~ f1 + f1 + f2 + f2, family = gaussian())
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.6950  -2.3092  -0.9273   1.8008   6.3276  
## 
## Coefficients: (1 not defined because of singularities)
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   10.330      1.046   9.875 1.08e-08 ***
## f11           -2.925      1.479  -1.977   0.0636 .  
## f21               NA         NA      NA       NA    
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
## 
## (Dispersion parameter for gaussian family taken to be 10.94159)
## 
##     Null deviance: 239.72  on 19  degrees of freedom
## Residual deviance: 196.95  on 18  degrees of freedom
## AIC: 108.5
## 
## Number of Fisher Scoring iterations: 2

t.test 関数で解析を行った結果。

t.test(y1, y2, var.equal = F)
## 	Welch Two Sample t-test
## 
## data:  y1 and y2
## t = -1.977, df = 17.078, p-value = 0.06441
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -6.0445702  0.1953398
## sample estimates:
## mean of x mean of y 
##  7.405189 10.329804