lmer 모델에서 사후 테스트를 수행하는 방법은 무엇입니까?


18

이것은 내 데이터 프레임입니다.

Group   <- c("G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3")
Subject <- c("S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","S14","S15")
Value   <- c(9.832217741,13.62390117,13.19671612,14.68552076,9.26683366,11.67886655,14.65083473,12.20969772,11.58494621,13.58474896,12.49053635,10.28208078,12.21945867,12.58276212,15.42648969,9.466436017,11.46582655,10.78725485,10.66159358,10.86701127,12.97863424,12.85276916,8.672953949,10.44587257,13.62135205,13.64038394,12.45778874,8.655142642,10.65925259,13.18336949,11.96595556,13.5552118,11.8337142,14.01763101,11.37502161,14.14801305,13.21640866,9.141392359,11.65848845,14.20350364,14.1829714,11.26202565,11.98431285,13.77216009,11.57303893)

data <- data.frame(Group, Subject, Value)

그런 다음 선형 혼합 효과 모델을 실행하여 "값"에 대한 3 개의 그룹 차이를 비교합니다. 여기서 "제목"은 임의의 요소입니다.

library(lme4)
library(lmerTest)
model <- lmer (Value~Group + (1|Subject), data = data)
summary(model)

결과는 다음과 같습니다.

Fixed effects:
            Estimate Std. Error       df t value Pr(>|t|)    
(Intercept) 12.48771    0.42892 31.54000  29.114   <2e-16 ***
GroupG2     -1.12666    0.46702 28.00000  -2.412   0.0226 *  
GroupG3      0.03828    0.46702 28.00000   0.082   0.9353    

그러나 Group2와 Group3을 비교하는 방법은 무엇입니까? 학술 기사의 컨벤션은 무엇입니까?

답변:


16

emmeans::emmeans()또는 lmerTest::difflsmeans(), 또는을 사용할 수 있습니다 multcomp::glht().

나는 emmeans(이전 lsmeans)을 선호합니다 .

library(emmeans)
emmeans(model, list(pairwise ~ Group), adjust = "tukey")

참고 difflsmeans는 여러 비교를 정정 할 수 없으며 Emmeans에서 사용하는 Kenward-Roger 방법 대신 자유도를 계산하기 위해 Satterthwaite 방법을 사용합니다.

library(lmerTest)
difflsmeans(model, test.effs = "Group")

multcomp::glht()방법은 이 질문에 대한 다른 답변 인 Hack-R에 설명되어 있습니다.

또한, 당신은 ANOVA의 P-값 로딩으로 얻을 수있는 lmerTest다음 사용을 anova.

library(lmerTest)
anova(model)

명확하게하기 위해, 당신은 각 주제에 대해 가치가 세 번 평가되도록 의도 했습니까? 그룹이 개체 간이 아니라 개체 내에있는 것처럼 보입니다.


1
나는 lsmeans 패키지가 emmeans 를 위해 더 이상 사용되지 않는다고 Kayle Sawyer의 응답 에 덧붙이고 싶습니다 .
Downhiller

라이브러리를 지정하는 경우 anova ()에 lme4 :: lmer ()가 아닌 lmerTest :: lmer ()를 사용하여 p- 값을 표시해야합니다.
Kayle Sawyer 2018

11

lmer모델을 맞추고 나면 다음 과 같이 모델 객체에서 ANOVA, MANOVA 및 다중 비교 절차를 수행 할 수 있습니다.

library(multcomp)
summary(glht(model, linfct = mcp(Group = "Tukey")), test = adjusted("holm"))
   Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: lmer(formula = Value ~ Group + (1 | Subject), data = data)

Linear Hypotheses:
             Estimate Std. Error z value Pr(>|z|)  
G2 - G1 == 0 -1.12666    0.46702  -2.412   0.0378 *
G3 - G1 == 0  0.03828    0.46702   0.082   0.9347  
G3 - G2 == 0  1.16495    0.46702   2.494   0.0378 *
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- holm method)

학술 논문의 컨벤션은 필드, 저널 및 특정 주제에 따라 크게 달라질 수 있습니다. 따라서이 경우 관련 기사를 검토하고 그 내용을 확인하십시오.


감사합니다. 그러나 실제로 어떤 조정이 사용 되었습니까? 터키 나 홀름? 사후 테스트에 왜 둘 다 나타나는가?
Ping Tang

@PingTang 천만에요. 모든 쌍 다중 비교의 Bonferroni-Holm 수정입니다. 물론 그것은 하나의 옵션 일뿐입니다. 당신은 또한 할 수 있습니다 summary(glht(model, linfct = mcp(Group = "Tukey"))). 당신은에서 참조 확인을 수행 할 수있는 다양한 테스트의 전체 학술 / 통계 설명을 보려면 ?glhtmulticomp더 일반적입니다. 나는 1996 년 Hsu가 주요한 것이라고 생각한다.
Hack-R

3
mcp함수 인 @PingTang Group = Tukey은 변수 "Group"에있는 모든 짝 그룹을 비교하는 것을 의미합니다. Tukey 조정을 의미하지는 않습니다.
Sal Mangiafico
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.