lme4 혼합 모델에서 효과의 p- 값 (의미 확인)을 얻는 방법


56

혼합 모델에 맞추기 위해 R의 lme4를 사용합니다.

lmer(value~status+(1|experiment)))

가치가 지속되는 곳, 상태와 실험이 요인이며

Linear mixed model fit by REML 
Formula: value ~ status + (1 | experiment) 
  AIC   BIC logLik deviance REMLdev
 29.1 46.98 -9.548    5.911    19.1
Random effects:
 Groups     Name        Variance Std.Dev.
 experiment (Intercept) 0.065526 0.25598 
 Residual               0.053029 0.23028 
Number of obs: 264, groups: experiment, 10

Fixed effects:
            Estimate Std. Error t value
(Intercept)  2.78004    0.08448   32.91
statusD      0.20493    0.03389    6.05
statusR      0.88690    0.03583   24.76

Correlation of Fixed Effects:
        (Intr) statsD
statusD -0.204       
statusR -0.193  0.476

지위의 영향이 중요하다는 것을 어떻게 알 수 있습니까? R은 값만보고 하고 p- 값은 보고 하지 않습니다 .tp


1
tH0:β=βnullF

답변:


61

GLMM FAQ 에는이 주제에 대한 많은 정보가 있습니다. 그러나 특정 경우에는 다음을 사용하는 것이 좋습니다.

library(nlme)
m1 <- lme(value~status,random=~1|experiment,data=mydata)
anova(m1)

lmer(더 빠른 속도, 교차 임의 효과 처리, GLMM ...) 제공 하는 것들이 필요하지 않기 때문 입니다. lme정확히 동일한 계수 및 분산 추정값을 제공해야하지만 df 및 p- 값도 계산 해야 합니다 (이것은 "고전적인"설계에서 의미가있는 것처럼 보입니다). 임의의 용어를 고려할 수도 있습니다 ~status|experiment(블록 간 상태 효과의 변동을 허용하거나 실험 별 상태 상호 작용 포함). 위의 포스터는 t통계가 너무 커서 p- 값이 <0.05가 될 것이라는 것이 정확하지만 "실제"p- 값을 원한다고 상상할 수 있습니다.


3
나는이 대답에 대해 모른다. lmer같은 종류의 p- 값을 쉽게보고 할 수 있지만 유효한 이유는 없습니다. 여기에 저를 괴롭히는 "실제"p- 값이 있다는 의견입니다. 하나의 가능한 컷오프를 찾을 수 있으며 합리적인 컷오프가 통과되었다고 주장 할 수 있습니다. 그러나 실제 p- 값이 있다고 주장 할 수는 없습니다.
John

11
고전적인 디자인 (균형, 중첩 등)의 경우 실제로 p-vae가 있다고 주장 할 수 있다고 생각합니다. 즉, 귀무 가설 (베타 = 0) 인 경우 관측 된 크기 이상의 베타 추정치가 될 확률이 있습니다. lme4는 이러한 분모 df를 제공하지 않습니다. 특정 모델이 클래식 분모 df를 계산하는 휴리스틱이 작동 할 때 lme4 모델 구조에서 일반적으로 감지하기가 더 어렵 기 때문에 믿습니다.
벤 볼커

summary(m1)대신 시도하십시오 (nlme 패키지와 함께 사용)
jena

36

lmerTest 패키지를 사용할 수 있습니다 . 설치 /로드하면 lmer 모델이 확장됩니다. 예를 들어

library(lmerTest)
lmm <- lmer(value~status+(1|experiment)))
summary(lmm)
anova(lmm)

p- 값으로 결과를 제공합니다. p- 값이 올바른 경우 약간의 논란이 있지만, 원하는 경우이 값을 얻을 수 있습니다.


28

포기 p- 값을 처리 할 수 ​​있고 ( ) 해야하는 경우 다음을 통해 상태의 영향에 대한 증거의 가중치를 나타내는 가능성 비율을 계산할 수 있습니다.

#compute a model where the effect of status is estimated
unrestricted_fit = lmer(
    formula = value ~ (1|experiment) + status
    , REML = F #because we want to compare models on likelihood
)
#next, compute a model where the effect of status is not estimated
restricted_fit = lmer(
    formula = value ~ (1|experiment)
    , REML = F #because we want to compare models on likelihood
)
#compute the AIC-corrected log-base-2 likelihood ratio (a.k.a. "bits" of evidence)
(AIC(restricted_fit)-AIC(unrestricted_fit))*log2(exp(1))

16
가능성 비율은 점근 적입니다. 즉 잔차 분산 추정치의 불확실성을 고려하지 않습니다.
Ben Bolker

5
마지막 줄에 관심이 있습니다. 결과의 해석은 무엇입니까? 내가 볼 수있는 출처가 있습니까?
mguzmann

13

문제는 이러한 모델의 p- 값 계산이 간단하지 않다는 것입니다. 여기에서 논의를 참조 하여 lme4패키지 작성자 가 의도적으로 출력에 p- 값을 포함하지 않도록 선택했습니다. 이를 계산하는 방법을 찾을 수 있지만 반드시 올바른 것은 아닙니다.


9

당신이 요구하는 것을 고려하십시오. 상태의 영향에 대한 전체 p- 값이 0.05와 같은 임의의 컷오프 값을 통과하는지 여부를 알고 싶다면 쉽습니다. 먼저 전체 효과를 확인하려고합니다. 에서 얻을 수 있습니다 anova.

m <- lmer(...) #just run your lmer command but save the model
anova(m)

이제 F 값이 있습니다. 그것을 가져 와서 일부 F 테이블 에서 찾을 수 있습니다 . 가장 낮은 가능한이자를 선택하십시오. 자유도. 컷오프는 약 20이 될 것입니다. 귀하의 F 는 그보다 클 수 있지만 틀릴 수 있습니다. 그렇지 않은 경우에도 여기에있는 실험 수를 사용하여 기존 분산 분석 계산에서 자유도를 확인하십시오. 그 값을 고수하면 컷오프에 대해 약 5로 줄어 듭니다. 이제 연구에 쉽게 전달할 수 있습니다. ANOVA가 모델링하는 값을 집계하는 대신 모든 데이터 포인트를 모델링하기 때문에 모델의 'true'df가 그보다 높습니다.

실제로 정확한 p- 값을 원한다면 그에 대한 이론적 진술을 기꺼이하지 않는 한 그러한 것은 없습니다. Pinheiro & Bates (2001, 그리고 주제에 관한 더 많은 책을 읽으면 ...이 답변의 다른 링크를 참조하십시오)를 읽고 특정 df에 대한 논쟁을 치르면 사용할 수 있습니다. 그러나 실제로 정확한 p- 값을 찾지는 않습니다. 정확한 p- 값을보고해서는 안되며 컷오프 만 통과했기 때문에 이것을 언급합니다.

데이터에서 추출 할 최종적이고 중요한 정보로 p- 값에 대한 합격점을 고수한다는 전체 아이디어가 일반적으로 잘못 안내되기 때문에 Mike Lawrence의 답변을 고려해야합니다. 실제로 알아야 할 정보가 충분하지 않습니다.) Mike는 재미있는 LR 계산 버전을 사용하고 있지만 많은 문서를 찾기가 어려울 수 있습니다. AIC를 사용하여 모델 선택 및 해석을 살펴보면 마음에들 것입니다.


9

편집 :이 방법은 최신 버전의 lme4에서 더 이상 지원되지 않습니다. 이 답변 에서 제안한대로 pbx101에서 lmerTest 패키지를 사용하십시오 .

p- 값이 표시되지 않는 이유에 대한 lme4 작성자의 R 목록에 게시물 이 있습니다 . 그는 languageR 패키지에서 pvals.fnc를 사용하여 MCMC 샘플을 대신 사용할 것을 제안합니다.

library("lme4")
library("languageR")
model=lmer(...)
pvals.fnc(model)

예와 세부 사항 은 http://www2.hawaii.edu/~kdrager/MixedEffectsModels.pdf 를 참조 하십시오 .


3
lme4는 더 이상 지원하지 않습니다. 이 게시물은 내가 방금했던 것처럼 사람들이 이것을 찾아야하기 위해 업데이트 될 수 있습니다.
timothy.s.lau

5

의 결합 된 효과 status가에 미치는 영향에 대해 value알고 싶으십니까? 그렇다면 패키지 의 Anova함수를 사용할 수 있습니다 car( anovabase 의 함수 와 혼동하지 마십시오 R).

dat <- data.frame(
  experiment = sample(c("A","B","C","D"), 264, replace=TRUE), 
  status = sample(c("D","R","A"), 264, replace=TRUE), 
  value = runif(264)   
)
require(lme4)
(fm <- lmer(value~status+(1|experiment), data=dat))

require(car)
Anova(fm)

패키지를 ?Anova로드 한 후 살펴보십시오 car.


car::Anova()Michelle이 연결하는 p- 값 계산과 관련된 끈적 끈적한 문제를 어떻게 피할 수 있습니까?
Mike Lawrence

나는하지 않지만 내 추측은 그것을 무시함으로써 끈적 끈적한 문제를 피할 수 있다는 것입니다! 원래 게시물을 다시 읽은 후 질문을 오해했을 수도 있습니다. OP가 고정 효과 매개 변수에 대해 정확한 p- 값을 원하면 문제가있는 것입니다. 그러나 OP가 의미가 있는지 알고 싶다면 t- 값이 정확한 p- 값을 계산하는 방법에 대한 불확실성보다 크다고 생각합니다. (즉, 그들은 중요하다.)
smillig

1
통계의 전반적인 효과를 찾기 위해 분산 계산으로 리디렉션하는 것이 확실히 좋은 생각이라고 생각하지만 p- 값을 미세화하는 것이 확실하지는 않습니다. 정규 anova명령은 당신에게 F를 줄 것입니다.
John

나는 이것이 명백한 것보다 조금 더 끈적 끈적하다고 생각합니다. 분산을 최소화하려는 경우 분산 분석을 실행하는 것이 유효하지만 질문 문구에서 OP는 변수의 한계 효과, null에 대한 테스트 계수 를 설정하려고한다고 생각 합니다.
Firebug

0

이 기능 pvals.fnc은 lme4에서 더 이상 지원되지 않습니다. lmerTest 패키지를 사용하면 Kenward-Roger의 근사치와 같은 다른 방법을 사용하여 p- 값을 계산할 수 있습니다

model=lmer(value~status+1|experiment)
anova(model, ddf="Kenward-Roger")

0

afex 패키지를로드하면 lme4 패키지의 lmer 함수 출력에 p- 값이 인쇄됩니다 (afex를 사용할 필요는 없으며로드 만하면됩니다).

library(lme4)  #for mixed model
library(afex)  #for p-values

고정 효과를 위해 lmer (yourmodel)의 출력에 p- 값 열이 자동으로 추가됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.