R_Mixed-Effects_model の変更点 - アールメカブ

アールメカブ


R_Mixed-Effects_model の変更点


[[Rの備忘録]]

* 切片 [#i19a0e3c]
lme4 パッケージでモデル式の指定として
 dat.lmer <- lmer(y ~ x1 + (1|x2) + (1|x3), data = dat)
のように使うことになるが,
 (1|x2)
が random effect であり,縦棒の右はグループ化を表す変数,
左の1は,この変数に対して切片を推定することを意味する.この変数に対する各レコード(被験者)の実測値は,ここで推定された切片に対する差として調整されたことになる.各レコードごとの調整値は
 ranef(dat.lmer)
として確認できる.この出力は,モデルのパラメータにもとづく ''BLUP'' である.

ただ,各レコードごとにプラスあるいはマイナスされた調整値はパラメータではない.
推定されるのは,そのランダム項の分散である(平均は 0 である).

lme4 パッケージの出力には random effect のパラメータ(Random Intercept)が含まれている.

以下は例.Subject (被験者)に Word に反応させる実験 (Trial)を繰り返した場合,Subject ごとに遅い早いがあるだけでなく,Word によって難しい易しいがある(らしい).

 > lexdec3.lmer = lmer(RT ~ Trial + (1|Subject) + (1|Word), 
   lexdec3)
 > lexdec3.lmer
 Linear mixed model fit by REML 
 Formula: RT ~ Trial + (1 | Subject) + (1 | Word) 
    Data: lexdec3 
    AIC   BIC logLik deviance REMLdev
  -1241 -1215  625.7    -1274   -1251
 Random effects:
  Groups   Name        Variance  Std.Dev.
  Word     (Intercept) 0.0046579 0.068249
  Subject  (Intercept) 0.0186282 0.136485
  Residual             0.0225642 0.150214
 Number of obs: 1557, groups: Word, 79; Subject, 21
 
 Fixed effects:
               Estimate Std. Error t value
 (Intercept)  6.394e+00  3.217e-02  198.76
 Trial       -1.835e-04  8.194e-05   -2.24
 
 Correlation of Fixed Effects:
       (Intr)
 Trial -0.268

ランダム項の Variance は BLUP で推定されたパラメータである.
このモデルにもとづく各サンプルのランダム効果を ranef() で確認できるが,これは BLUP の推定を利用した結果である.従って
 > var(ranef(lexdec3.lmer)$Word)
             (Intercept)
 (Intercept) 0.003732365
としても同じ数値は表示されない.

* 傾き [#r42d3214]

切片に加えて,ランダム項のサンプルごとに異なる傾きを推定する場合は
 lmer(y ~ x1 + (1+x1|x2) + (1|x3), data = dat)
のように使うことになる.これは x2 と固定項とした場合に x1 との皇后作用を検討するのに等しい.
のように使うことになる.これは x2 と固定項とした場合に x1 との交互作用を検討するのに等しい.
この場合,x2 の切片と傾きの相関が新たにパラメータとして推定されるが,これを防ぐには次のように 0 を左辺に指定する.
 lmer(y ~ x1 + (0+x1|x2) + (1|x3), data = dat)

たとえば次のモデルでは Subject (被験者)に実験 (Trial)を繰り返した場合,実験慣れしてくる被験者,逆に疲れて反応鈍くなる被験者,そのどちらでもない被験者とばらつきが出る.この被験者のばらつきをランダムなスロープとして表すモデルである.

lexdec3.lmerA = lmer(RT ~ Trial + (1+Trial|Subject) + (1|Word), 
data = lexdec3)
print(lexdec3.lmerA, corr = FALSE)
 > lexdec3.lmerA = lmer(RT ~ Trial + (1+Trial|Subject) + (1|Word), 
    data = lexdec3)
 > print(lexdec3.lmerA, corr = FALSE)