이것이 R에서 lme4로 혼합 효과 모델을 분석 할 수있는 적절한 방법입니까?


14

불균형 반복 측정 데이터를 분석하도록 설정했으며, 대부분의 통계 패키지가 ANOVA (즉, 유형 III 제곱합)로이를 처리하는 방식이 잘못되었음을 읽었습니다. 따라서 혼합 효과 모델을 사용하여 이러한 데이터를 분석하고 싶습니다. 에서 혼합 모델에 대해 많이 읽었 R지만 여전히 R혼합 효과 모델에 익숙하지 않고 제대로 작동하고 있다고 확신하지 못합니다. 아직 "전통적인"방법으로 이혼 할 수는 없지만 여전히 과 사후 테스트 가 필요 합니다.

다음 접근법이 의미가 있는지 또는 끔찍한 일을하고 있는지 알고 싶습니다. 내 코드는 다음과 같습니다.

# load packages
library(lme4)
library(languageR)
library(LMERConvenienceFunctions)
library(coda)
library(pbkrtest)

# import data
my.data <- read.csv("data.csv")

# create separate data frames for each DV & remove NAs
region.data <- na.omit(data.frame(time=my.data$time, subject=my.data$subject, dv=my.data$dv1))

# output summary of data
data.summary <- summary(region.data)

# fit model
# "time" is a factor with three levels ("t1", "t2", "t3")
region.lmer <- lmer(dv ~ time + (1|subject), data=region.data)

# check model assumptions
mcp.fnc(region.lmer)

# remove outliers (over 2.5 standard deviations)
rm.outliers <- romr.fnc(region.lmer, region.data, trim=2.5)
region.data <- rm.outliers$data
region.lmer <- update(region.lmer)

# re-check model assumptions
mcp.fnc(region.lmer)

# compare model to null model
region.lmer.null <- lmer(dv ~ 1 + (1|subject), data=region.data)
region.krtest <- KRmodcomp(region.lmer, region.lmer.null)

# output lmer summary
region.lmer.summary <- summary(region.lmer)

# run post hoc tests
t1.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

region.lmer <- lmer(dv ~ relevel(time,ref="t2") + (1|subject), data=region.data)
t2.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

region.lmer <- lmer(dv ~ relevel(time,ref="t3") + (1|subject), data=region.data)
t3.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

# Get mcmc mean and 50/95% HPD confidence intervals for graphs
# repeated three times and stored in a matrix (not shown here for brevity)
as.numeric(t1.pvals$fixed$MCMCmean)
as.numeric(t1.pvals$fixed$HPD95lower)
as.numeric(t1.pvals$fixed$HPD95upper)
HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)
    HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)

내가 가진 몇 가지 구체적인 질문 :

  1. 혼합 효과 모델을 분석하는 올바른 방법입니까? 그렇지 않다면 대신 무엇을해야합니까?
  2. mcp.fnc의 출력 비평 도표가 모델 가정을 검증하기에 충분합니까, 아니면 추가 단계를 수행해야합니까?
  3. 혼합 모델이 유효하려면 데이터가 정규성과 동성애에 대한 가정이 필요하다는 것을 알았습니다. mcp.fnc에 의해 생성 된 비평 도표를 살펴보면 "정상적으로 정상적인"것이 무엇인지 아닌지를 어떻게 판단합니까? 나는 이것에 대한 느낌을 얻을 필요가 있습니까, 아니면 그들의 일을하는 처방 된 방법입니까? 이러한 가정과 관련하여 혼합 모형이 얼마나 강력합니까?
  4. 샘플에서 대상의 ~ 20 특성 (바이오 마커)에 대해 세 시점 사이의 차이를 평가해야합니다. 내가 수행 한 모든 테스트를보고하거나 (중요하지 않은지), 여러 비교를 위해 어떤 형태의 수정이 필요한가?

실험과 관련하여 좀 더 정확하게하기 위해 몇 가지 세부 사항이 있습니다. 우리는 치료를 받았을 때 많은 참가자들을 세로로 따라 갔다. 치료 시작 전과 후 2 시점에 여러 바이오 마커를 측정했습니다. 내가보고 싶은 것은 세 시점 사이에 이러한 바이오 마커에 차이가 있는지 여부입니다.

나는이 튜토리얼 에서 내가하고있는 일의 대부분을 기초로하고 있지만, 나의 필요와 내가 읽은 것에 따라 약간의 변화를 주었다. 내가 변경 한 내용은 다음과 같습니다.

  1. pvals.fnc와 t1-t2, t2-t3 및 t1-t3 비교를 얻기 위해 "time"요소의 레벨을 재조정하십시오 (languageR 패키지에서)
  2. 가능성 비율 테스트 대신 Kenward-Roger의 접근 방식 (pbkrtest 패키지 사용)을 기반으로 근사 F- 검정을 사용하여 혼합 모델을 null 모델과 비교
  3. LMERConvenienceFunctions 패키지를 사용하여 가정을 확인하고 특이 치를 제거하십시오 (혼합 모델이 특이 치에 매우 민감하다는 것을 읽었 기 때문에)

1
(+1) 정교하게 구성된 (여러) 질문.
chl

답변:


22

귀하의 질문은 "큰"것이므로 일반적인 의견과 팁으로 시작하겠습니다.

일부 배경 읽기 및 유용한 패키지

혼합 모델 사용에 대한 자습서 소개 중 일부를 살펴보아야합니다. Baayen et al (2008)부터 시작하는 것이 좋습니다 languageR. Baayen은의 저자입니다 . Barr et al (2013)은 랜덤 효과 구조와 관련된 몇 가지 문제를 논의하고 Ben Bolker는 현재의 개발자 중 한 명입니다 lme4. Baayen et al은 부트 스트랩 핑 / 순열 테스트 (뒤에있는 것들 mcp.fnc) 의 사용에 대해 많은 시간을 소비하기 때문에 질문에 특히 좋습니다 .

문학

Florian Jaeger는 그의 실험실 블로그 에서 혼합 모델의 실용적인 측면에 많은 것들을 가지고 있습니다.

시각화와 같은 혼합 모델을 테스트하는 데 유용 R 패키지의 숫자도있다 lmerTest하고 effects. effects패키지는 당신이 선형 회귀과 자신감 간격 뒤에서가는 플롯 수 있기 때문에 특히 좋다.

적합도 및 모델 비교

-값은 혼합 모델을 비교하는 데 가장 성가신 방법이며 일반적으로 어떤 것도 좋은 방법이 아닙니다. 이 이유 더그 베이츠 (lme4의 원래 저자)는이를 포함하는 것이 필요하다 생각하지 않는 이유는. 당신이 정말로 그런 식으로 가고 싶다면 (그리고 나는 당신에게 간절히 부탁드립니다), 위에서 언급 한 lmerTest것은 그것들을 계산하고 처리하기위한 추가 기능을 제공합니다.

모형을 비교하는 더 좋은 방법은 로그 우도 또는 AIC 및 BIC와 같은 다양한 정보 이론적 기준입니다. AIC 및 BIC의 경우 일반적인 규칙은 "작을수록 좋습니다"이지만 더 많은 모델 자유도에 대해 벌칙을 적용하고 "절대"좋은 또는 나쁜 값이 없기 때문에주의해야합니다. AIC 및 로그 가능성 모델에 대한 요약 정보를 얻으려면 anova()오버로드 된 함수를 사용하여 mer객체 를 받아 들일 수 있습니다. 양해 바랍니다χ2주어진 값 은 중첩 된 모델 간의 비교에만 유효합니다 . 그럼에도 불구하고 결과는 다른 비교에서도 표 형식으로 사용하기에 매우 좋습니다. 중첩 된 모델의 경우χ2 테스트하고 필요하지 않습니다 -두 모델을 직접 비교하는 값. 이것의 단점은 당신의 착용감이 얼마나 좋은지 즉시 명확하지 않다는 것입니다.

개별 효과 (예 : 기존 분산 분석에서 볼 수있는 효과)를 보려면 -모델의 고정 효과에 대한 값 ( summary()실수하지 않은 경우의 일부 임 ). 일반적으로 무엇이든||>2좋은 것으로 간주됩니다 (Baayen et al. 도우미 기능을 사용하여 고정 효과에 직접 액세스 할 수도 있습니다 fixef().

또한 고정 효과가 너무 밀접하게 연관되어 있지 않아야합니다. 다중 공선 성이 모델 가정을 위반합니다. Florian Jaeger는 몇 가지 가능한 해결책뿐만 아니라 이것에 약간의 글을 썼습니다 .

여러 비교

질문 # 4를 좀 더 직접적으로 다루겠습니다. 정답은 기본적으로 기존 분산 분석의 모범 사례와 동일하지만 불행히도 대부분의 연구자들에게 큰 불확실성이있는 것으로 보입니다. 선형 혼합 효과 모델과 ANOVA는 일반 선형 모델을 기반으로하기 때문에 기존 분산 분석과 동일합니다. 혼합 모델에 임의 효과에 대한 추가 항이 있다는 것뿐입니다. 차이가 있고 시간의 효과를 비교하려면 모델에 시간을 포함시켜야합니다. 우연히도 시간에 차이가 있는지 여부를 판단 할 수있는 편리한 방법을 제공합니다. 시간에 대한 주요 (고정) 효과가 있습니까? 이 경로를 사용하는 단점은 모델이 훨씬 더 복잡해지고 단일 "슈퍼"가된다는 것입니다 매개 변수로 시간이있는 모델은 매개 변수로 시간이없는 세 개의 작은 모델보다 계산하는 데 시간이 더 오래 걸립니다. 실제로 혼합 모델에 대한 고전적인 튜토리얼 예제는sleepstudy 매개 변수로 시간을 사용합니다.

다른 특성이 예측 변수인지 종속 변수인지는 알 수 없었습니다. 그것들이 예측 인이라면, 그것들을 모두 하나의 모델로 던져서 어느 모델이 가장 큰지 알 수 있습니다-값이지만 상호 작용을 허용하지 않고 계산하는 데 시간이 오래 걸리더라도이 모델은 엄청나게 복잡합니다. 더 빠르고 잠재적으로 쉬운 방법은 각 예측 변수에 대해 서로 다른 모델을 계산하는 것입니다. foreach루프를 사용하여 코어 수만큼 병렬 처리 하는 것이 좋습니다. lme4매트릭스 연산을 병렬로 수행하지 않으므로 각 코어에서 다른 모델을 병렬로 계산할 수 있습니다. (짧은 소개를 참조하십시오 여기에 당신이 가장 적합한 예측 찾기 위해 각 모델의 AIC와 BIC를 비교할 수 있습니다, 그리고). (이 경우에는 중첩되지 않으므로χ2 통계량.)

특성이 종속 변수 인 경우 어쨌든 다른 모델을 계산해야하며 AIC 및 BIC를 사용하여 결과를 비교할 수 있습니다.


자세한 답변 감사합니다! 제공된 참조 중 일부를 읽었지만 다른 참조를 확실히 살펴 보겠습니다. 내가 p- 값의 악을 이해하는 한, 리뷰어는 불행히도 (적어도 지금은) 다르게 생각합니다. 베이츠가 권장 한대로 mcmc 샘플링을 사용하고 있습니다. 이는 MCMC 샘플링을 사용합니다. 특성은 DV이며, 명확히하기 위해 더 많은 정보를 추가 할 것입니다.
댄보
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.