lmer 模型使用哪種多重比較方法:lsmeans 還是 glht?
我正在使用混合效應模型分析數據集,該模型具有一個固定效應(條件)和兩個隨機效應(參與者由於內部設計和配對)。該模型是使用
lme4
包生成的:exp.model<-lmer(outcome~condition+(1|participant)+(1|pair),data=exp)
.接下來,我對沒有固定效應(條件)的模型進行了該模型的似然比檢驗,並有顯著差異。我的數據集中有 3 個條件,所以我想進行多重比較,但我不確定使用哪種方法。我在 CrossValidated 和其他論壇上發現了許多類似的問題,但我仍然很困惑。
據我所見,人們建議使用
**1.**包
lsmeans
-lsmeans(exp.model,pairwise~condition)
它給了我以下輸出:condition lsmean SE df lower.CL upper.CL Condition1 0.6538060 0.03272705 47.98 0.5880030 0.7196089 Condition2 0.7027413 0.03272705 47.98 0.6369384 0.7685443 Condition3 0.7580522 0.03272705 47.98 0.6922493 0.8238552 Confidence level used: 0.95 $contrasts contrast estimate SE df t.ratio p.value Condition1 - Condition2 -0.04893538 0.03813262 62.07 -1.283 0.4099 Condition1 - Condition3 -0.10424628 0.03813262 62.07 -2.734 0.0219 Condition2 - Condition3 -0.05531090 0.03813262 62.07 -1.450 0.3217 P value adjustment: tukey method for comparing a family of 3 estimates
**2.**包的
multcomp
兩種不同方式——使用mcp
glht(exp.model,mcp(condition="Tukey"))
導致Simultaneous Tests for General Linear Hypotheses Multiple Comparisons of Means: Tukey Contrasts Fit: lmer(formula = outcome ~ condition + (1 | participant) + (1 | pair), data = exp, REML = FALSE) Linear Hypotheses: Estimate Std. Error z value Pr(>|z|) Condition2 - Condition1 == 0 0.04894 0.03749 1.305 0.392 Condition3 - Condition1 == 0 0.10425 0.03749 2.781 0.015 * Condition3 - Condition2 == 0 0.05531 0.03749 1.475 0.303 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Adjusted p values reported -- single-step method)
並使用
lsm
glht(exp.model,lsm(pairwise~condition))
導致Note: df set to 62 Simultaneous Tests for General Linear Hypotheses Fit: lmer(formula = outcome ~ condition + (1 | participant) + (1 | pair), data = exp, REML = FALSE) Linear Hypotheses: Estimate Std. Error t value Pr(>|t|) Condition1 - Condition2 == 0 -0.04894 0.03749 -1.305 0.3977 Condition1 - Condition3 == 0 -0.10425 0.03749 -2.781 0.0195 * Condition2 - Condition3 == 0 -0.05531 0.03749 -1.475 0.3098 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Adjusted p values reported -- single-step method)
如您所見,這些方法給出了不同的結果。這是我第一次使用 R 和 stats,所以可能出了點問題,但我不知道在哪裡。我的問題是:
提出的方法之間有什麼區別?我在一個相關問題的答案中讀到它是關於自由度(
lsmeans
vs.glht
)的。 是否有一些規則或建議何時使用哪一種,即方法 1 適合這種類型的數據集/模型等? **我應該報告哪個結果?**在不知道更好的情況下,我可能只是去報告我得到的最高 p 值以確保安全,但如果有更好的理由會很好。謝謝
不是一個完整的答案…
與其他兩種方法的區別在於
glht(myfit, mcp(myfactor="Tukey"))
,這種方法使用“z”統計量(正態分佈),而其他方法使用“t”統計量(學生分佈)。“z”統計量與具有無限自由度的“t”統計量相同。這種方法是一種漸近方法,它提供的 p 值和置信區間比其他方法更小。如果數據集很小,p 值可能太小,置信區間可能太短。當我運行時
lsmeans(myfit, pairwise~myfactor)
出現以下消息:Loading required namespace: pbkrtest
這意味著
lsmeans
(對於lmer
模型)使用pbkrtest
實現 Kenward & Rogers 方法的包來獲取“t”統計量的自由度。這種方法旨在提供比漸近方法更好的 p 值和置信區間(自由度很大時沒有區別)。現在,關於 和 之間的區別
lsmeans(myfit, pairwise~myfactor)$contrasts
,glht(myfit, lsm(pairwise~factor)
我剛剛做了一些測試,我的觀察結果如下:
lsm
是lsmeans
包和multcomp
包之間的接口(參見?lsm
)- 對於平衡的設計,結果之間沒有區別
- 對於不平衡的設計,我觀察到結果之間的微小差異(標準誤差和 t 比率)
不幸的是,我不知道這些差異的原因是什麼。看起來
lsm
調用lsmeans
只是為了得到線性假設矩陣和自由度,但lsmeans
使用不同的方法來計算標準誤差。