2 개의 개체-내 요인에 대해 R에서 lme / lmer로 반복 측정 ANOVA


19

반복 측정 ANOVA에 대한 결과를 복제하기 lme위해 nlme패키지 를 사용하려고합니다 aov. 단일 요인 반복 측정 실험과 대상 간 요인 하나와 대상 내 요인 하나를 사용하는 2 요인 실험에 대해이 작업을 수행했지만 2 요인 실험을 수행하는 데 어려움을 겪고 있습니다. -인자를 고려한다.

아래에 예가 나와 있습니다. AB고정 효과 계수이고 subject랜덤 영향 인자이다.

set.seed(1)
d <- data.frame(
    Y = rnorm(48),
    subject = factor(rep(1:12, 4)),
    A = factor(rep(1:2, each=24)),
    B = factor(rep(rep(1:2, each=12), 2)))

summary(aov(Y ~ A*B + Error(subject/(A*B)), data=d))  # Standard repeated measures ANOVA

library(nlme)
# Attempts:
anova(lme(Y ~ A*B, data=d, random = ~ 1 | subject))  # not same as above
anova(lme(Y ~ A*B, data=d, random = ~ 1 | subject/(A+B)))  # gives error

Pinheiro and Bates 책에서 이에 대한 설명을 볼 수 없었지만 간과했을 수도 있습니다.

답변:


15

피팅 aov하는 것을 스트립 플롯이라고 하며 랜덤 효과 와 랜덤 효과가 교차 lme되기 때문에 맞추기가 까다 롭습니다 .subject:Asubject:B

첫 번째 시도는와 동일하며 aov(Y ~ A*B + Error(subject), data=d)모든 무작위 효과를 포함하지는 않습니다. 두 번째 시도는 옳은 생각이지만 lme을 사용한 교차 임의 효과의 구문은 매우 까다 롭습니다.

사용 lme으로부터 nlme패키지하는 코드는 것

lme(Y ~ A*B, random=list(subject=pdBlocked(list(~1, pdIdent(~A-1), pdIdent(~B-1)))), data=d)

사용 lmer으로부터 lme4패키지, 코드 같은 것

lmer(Y ~ A*B + (1|subject) + (1|A:subject) + (1|B:subject), data=d)    

R-help의 스레드는 도움이 될 수 있습니다 (그리고 nlme코드를 얻은 곳 ).

http://www.biostat.wustl.edu/archives/html/s-news/2005-01/msg00091.html

http://permalink.gmane.org/gmane.comp.lang.r.lme4.devel/3328

http://www.mail-archive.com/r-help@stat.math.ethz.ch/msg10843.html

이 마지막 링크는 Pinheiro / Bates의 p.165; 도움이 될 수도 있습니다.

편집 : 또한 데이터 세트에서 일부 분산 성분이 음수이므로 lme에 임의 효과를 사용할 수 없으므로 결과가 다릅니다. 모든 양의 분산 성분이있는 데이터 세트는 8의 시드를 사용하여 만들 수 있습니다. 결과는 동의합니다. 자세한 내용은 이 답변 을 참조하십시오.

또한주의 lme에서 nlme올바르게 자유의 분모도를 계산하지 않는 F-통계의 p 값을 동의하지만, 그래서,과 lmer에서는 lme4이 불균형 교차 임의 효과의 존재에 매우 까다로운 때문에 너무하지,하지 않을 수 않습니다 심지어 현명한 일을해야합니다. 그러나 그것은 내가 여기에 들어가고 싶은 것 이상입니다.


애런, 나는 당신의 lmer 코드가 정확하다고 생각하지 않습니다. OP aov호출은 단순히 표준 반복 측정 설계이며 lmer로로 분석 lmer(Y~A*B+(1|subject))합니다. (S 전반에 걸친 영향 분산 및 상관 관계를 추정 할 수있는보다 복잡한 모델에 대해서는이 답변을 참조하십시오 : stats.stackexchange.com/questions/13166/rs-lmer-cheat-sheet/… )
Mike Lawrence

4
OP의 aov call에는 세 가지 임의 효과가 있습니다. lmer위의 코드 로 복제하는 것이 정확합니다. 귀하의 lmer코드는 하나의 임의 효과가 있습니다. 상황에 따라 달라집니다.
Aaron-복직 자 Monica Monica

또한 연결된 답변에 교차 임의 효과의 예가 없습니다.
Aaron-복직 자 Monica Monica

6

당신이하려는 모든 것이 첫 번째 시도가 정답입니다. nlme ()는 컴포넌트 사이와 컴포넌트 내에서 작동하므로 따로 지정할 필요가 없습니다.

당신이 겪고있는 문제는 모델을 지정하는 방법을 모르기 때문에가 아닙니다. 반복 측정 ANOVA와 혼합 효과가 동일하지 않기 때문입니다. 때때로 ANOVA와 혼합 효과 모델의 결과가 일치합니다. 이는 분산 분석에서와 같이 데이터를 집계하고이 둘을 모두 계산할 때 특히 그렇습니다. 그러나 일반적으로 올바르게 수행하면 결론은 비슷하지만 결과는 거의 동일하지 않습니다. 예제 데이터는 S 내에서 각 측정 값을 자주 복제하는 실제 반복 측정 값과 다릅니다. 분산 분석을 수행 할 때 일반적으로 각 복제에 대해 집계하여 각 주제에 대한 영향을 추정합니다. 혼합 효과 모델링에서는 그런 일이 없습니다. 원시 데이터로 작업합니다. 그렇게하면

[제외 적으로, lme () 대신 lmer () (lme4 패키지에서)를 사용하면 예제의 효과에 대한 ANOVA와 정확히 일치하는 SS 및 MS 값을 얻을 수 있습니다.


1
모든 것이 균형 잡힌 경우 혼합 모델을 사용하는 결과 (즉, ML 또는 REML로 추정값 얻기)와 분산 분석 (즉, 모멘트로 추정값 얻기)을 사용한 결과는 거의 동일하다고 생각합니다. 이 경우 문제는 두 방법을 사용하여 동일한 모델을 맞추는 구문입니다.
복원 모니카

무엇을 성취하려고하는지 잘 모르겠습니다. 관계를 더 잘 이해하기 위해 결과를 복제하는 방법을 배우려는 것처럼 보였습니다. nlme로 수행하려는 작업을 수행 할 수 없습니다. 방금 lmer를 보았는데도 불가능합니다 (적어도 ANOVA와 동일한 효과에 대해 MS를보고하지만). 분산 분석 결과를 원하면 분산 분석을 수행하십시오. 실제 데이터를 올바르게 사용하면 두 데이터가 거의 동일하지 않습니다.
John

1
또한 첫 번째 시도는 교차 임의 효과를 제대로 설명하지 않으므로 올바르지 않습니다.
복원 모니카

1
존, 답변 주셔서 감사합니다. 이 작업을 수행 한 이유는이 사이트 어딘가에서 ANOVA를 반복해서 반복해서 측정하는 것이 더 이상 권장되지 않으며 혼합 효과 모델이 선호되기 때문입니다. 어떤 이유로 나는 두 가지 방법이 균형 잡힌 디자인에 대해 동일한 결과를 줄 것이라는 인상을 받았으며 이것을 확인하려고했습니다.
mark999

애런, 나는 그것을 대략 동등한 것으로 간주되는 것에 대한 정답으로 받아 들였습니다. 일반적으로 반복 측정 값을 복제하는 첫 번째 단계로 권장되는 사항입니다. 완벽하게 일치하는 것처럼 '올바른'것은 없습니다. 더 많은 랜덤 효과를 추가해도 문제가 해결되지 않습니다. 귀하가 언급 한 답변 중 하나가 귀하가 작성한 솔루션을 권장합니다. 그러나 그것은 내가 말한 것과는 완전히 다른 ANOVA 결과 (모델은 다르지만 ANOVA는 아님)는 아닙니다. 필자는 저자가 OP가 요구 한 것과 일치하려고 시도했지만 합리적인 모델이 아닙니다.
John
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.