R !!!emmeans {{outline}} ---- https://cran.r-project.org/web/packages/emmeans/vignettes/comparisons.html !Quick start guide https://cran.r-project.org/web/packages/emmeans/vignettes/AQuickStart.html * モデルに含まれる値の全体の平均 means * モデルに含まれる特定の条件に限った平均 marginal means !使い方:その前提は、model(glmの結果など)ができていること。 {{pre emm.result <- emmeans(モデル, "条件") で平均値を取得して contrasts(emm.result, ...) で比較するか pairs(emm.result) ペアにして比較 }} !要因が一つの場合 {{pre emm.result <- emmeans(モデル, "要因名") もしくは emm.result <- emmeans(モデル, ~ 要因名) と表記(~つけて、引用符なし) }} これで、emm.resultの中に平均値が入る * ペアにして比較する場合 {{pre contrast(emm.result, "pairwise") もしくは pairs(emm.result) }} !要因が二つの場合(交互作用なし) * 要因を一つずつ扱う {{pre emm.result.1 <- emmeans(モデル, ~ 要因1) pairs(emm.result.1) emm.result.2 <- emmeans(モデル, ~ 要因2) pairs(emm.result.2) }} !交互作用のある二要因 {{pre emm.result <- emmeans(モデル, ~ 要因1 * 要因2) }} * 多重比較 {{pre pairs(emm.result, simple = "要因1") で、もう一つの要因2あたりの単純主効果 pairs(emm.result, simple = "要因2") で、もう一つの要因1あたりの単純主効果 }} * p値の補正は、Tukeyで行われる。 !交互作用のある二要因の例 * 時間time(1,2,3)と条件cond(control, experiment) {{pre emm.result <- emmeans(モデル, ~ time * cond) emm.result time cond emmean SE df lower.CL upper.CL 1 control 65.8 4.27 30.8 57.0 74.5 2 control 66.2 4.27 30.8 57.5 75.0 3 control 69.2 4.27 30.8 60.5 78.0 1 experiment 61.0 3.07 51.4 54.8 67.2 2 experiment 89.8 3.07 51.4 83.6 95.9 3 experiment 78.2 3.07 51.4 72.1 84.4 Degrees-of-freedom method: kenward-roger Confidence level used: 0.95 }} * 時間timeのレベル間での単純主効果の多重比較 {{pre pairs(emm.result, simple="time") cond = control: contrast estimate SE df t.ratio p.value time1 - time2 -0.5 3.49 76 -0.143 0.9888 time1 - time3 -3.5 3.49 76 -1.002 0.5776 time2 - time3 -3.0 3.49 76 -0.859 0.6675 cond = experiment: contrast estimate SE df t.ratio p.value time1 - time2 -28.8 3.49 76 -8.235 <.0001 time1 - time3 -17.2 3.49 76 -4.941 <.0001 time2 - time3 11.5 3.49 76 3.294 0.0042 }} * 注意点は、estimateの値は、対比(contrast)しているレベル間の差 * 差は、文字通り、前のレベルの値から後ろのレベルの値を引いた数値 * 例:experiment群の最初の対比 ** time1 - time2 = -28.8 は ** 61.0 - 89.8 = -28.8 ということ ** time1(事前テスト)の値より、time2(事後テスト)の値が大きいので、マイナスになっている。 * 逆にするには、オプション(, reverse = TRUE)をつける。 {{pre pairs(emm.result, simple="time", reverse = TRUE) cond = experiment: contrast estimate SE df t.ratio p.value time2 - time1 28.8 3.49 76 8.235 <.0001 }} !emmip() emmip(emm.result, cond ~ time) {{ref_image emmip.png}} ! ref_grid() {{pre ref_grid.result <- ref_grid(モデル) emmip(ref_grid.result, cond ~ time) }} {{ref_image emmip.png}} !使用例一覧 https://cran.r-project.org/web/packages/emmeans/vignettes/vignette-topics.html !注意 * 要因が複数ある場合は、emmeans(モデル, pairwise ~ 要因1 * 要因2) という構文は使わないように。 ** 別々のステップに分けること ** pairwise ~ の構文は、要因が一つの時にだけ使うように ---- !多重比較 *GLMでモデルを作って、そのモデルにおける要因の水準間の多重比較を行う。 *例:1,2,3の学年間で、IPSynのスコアに差があるか? !モデル ipsyn.model0 <- glm(ipsyn ~ year, data, family=gaussian) !平均と信頼区間 {{pre hikaku0 <- emmeans(ipsyn.model0, specs="year") year emmean SE df lower.CL upper.CL 1 54.8 1.022 131 52.7 56.8 2 64.3 0.958 131 62.5 66.2 3 69.5 1.034 131 67.4 71.5 }} !多重比較検定 * 補正の方法 adjust="bonferroni" adjust="holm" {{pre pairs(hikaku0, adjust="bonferroni") contrast estimate SE df t.ratio p.value 1 - 2 -9.58 1.40 131 -6.840 <.0001 1 - 3 -14.68 1.45 131 -10.099 <.0001 2 - 3 -5.11 1.41 131 -3.622 0.0012 }} !プロット {{pre plot(hikaku0, comparison=T) }} {{ref_image hikaku0.png}} * 別のプロット {{pre plot(allEffects(ipsyn.model0)) }} {{ref_image ipsyn-year.png}}