線形混合効果モデルの作成
library(lme4) library(lmerTest) library(ggplot2) library(sjPlot) library(sjmisc) ###### ## Data # 2条件×2条件で複数のitemを学習した際の交互作用を見たい。 # 従来は2 × 2 ANOVAを使用。 # 反復測定デザインでの線形混合効果モデル # 従属変数がordinalの場合は一般化線形モデル ###### ## Model Description # model.1: Fixed Slope and Intercept (通常の重回帰分析) model.1 <- lm(time ~ context + task + context : task, data = dat) # model.2: Fixed Slope and Random Intercept model.2 <- lmer(time ~ context * task + (1 | pid) + (1 | item), data = dat) # model.3: Random Slope and Intercept for Participant model.3 <- lmer(time ~ context * task + (context * task | pid) + (1 | item), data = dat) # model.4: Random Slope and Intercept for Item model.4 <- lmer(time ~ context * task + (1 | pid) + (context * task | item), data = dat) # model.5: Random Slope and Intercept model.5 <- lmer(time ~ context * task + (context * task | pid) + (context * task | item), data = dat) # model.6: Random Slope and Fixed Intercept model.6 <- lmer(time ~ context * task + (0 + context * task | pid) + (0 + context * task | item), data = dat)
結果の出力
# model.5のresult
# 推定は制限付き最尤法 (REstricted Maximum Likelihood: REML)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Random effects:
Groups Name Variance Std.Dev. Corr
pid (Intercept) 47092.55330 217.0081872
contextInference 50916.21911 225.6462256 0.5078033
taskL2 Encoding 119031.08661 345.0088211 -0.9420790 -0.7317704
contextInference:taskL2 Encoding 28409.22954 168.5503769 -0.4110683 -0.9849593 0.6299649
item (Intercept) 4325.32673 65.7672162
contextInference 64765.47703 254.4906227 -0.3634969
taskL2 Encoding 3073.53653 55.4394853 -0.2236544 0.9892944
contextInference:taskL2 Encoding 85287.52427 292.0402785 0.2757869 -0.9957147 -0.9985507
Residual 135505.00395 368.1100433
Number of obs: 468, groups: pid, 39; item, 12
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 1111.4737935 62.0879817 19.0270620 17.90159 2.3017e-13 ***
contextInference 234.0348502 101.4480998 13.4981795 2.30694 0.037490 *
taskL2 Encoding -145.8921141 79.2168372 36.4956415 -1.84168 0.073660 .
contextInference:taskL2 Encoding -215.7250504 121.0971969 14.4739459 -1.78142 0.095832 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
モデル選択
## ANOVAによるモデル選択 (AIC)
# AICに有意差がない場合は最もシンプルなモデルを選択
anova(model.2, model.3, model.4, model.5)
Models:
model2: time ~ context * task + (1 | pid) + (1 | item)
model3: time ~ context * task + (context * task | pid) + (1 | item)
model4: time ~ context * task + (1 | pid) + (context * task | item)
model5: time ~ context * task + (context * task | pid) + (context * task | item)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
model2 7 6998.220645 7027.259923 -3492.110323 6984.220645
model3 16 6993.191945 7059.567438 -3480.595973 6961.191945 23.02870 9 0.0061322 **
model4 16 6997.952820 7064.328313 -3482.976410 6965.952820 0.00000 0 1.0000000
model5 25 6996.968969 7100.680677 -3473.484485 6946.968969 18.98385 9 0.0253306 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
結果の可視化
## plot
# Fixed-effectのみを描画する場合はtype = "eff"
# Interactionを描画する場合はtype = "int"
# Fixed-effectがカテゴリー変数の場合
p1 <-
plot_model(
model.a, type = "int", facet.grid = F,
title = "", fill.alpha = 0.8, geom.size = 1, show.ci = T
)
# Fixed-effectが連続変数の場合
p2 <-
plot_model(
model.b, type = "int", facet.grid = F,
title = "", fill.alpha = 0.8, geom.size = 1, show.ci = T
)
# Three-Way Interaction (Mean±1SD法)
p3 <-
plot_model(
model.c, type = "int", facet.grid = F,
title = "", legend.title = "Task Condition",
fill.alpha = 0.8, geom.size = 1, show.ci = T, mdrt.values = "meansd"
)
p3 + labs(x = "LSA Value", y = "Log Transformed Reaction Time")

