혼합 효과 모델에 대한 다중 비교


31

혼합 효과 모델을 사용하여 일부 데이터를 분석하려고합니다. 내가 수집 한 데이터는 시간이 지남에 따라 다른 유전자형의 일부 젊은 동물의 무게를 나타냅니다.

나는 여기에 제안 된 접근법을 사용하고 있습니다 : https://gribblelab.wordpress.com/2009/03/09/repeated-measures-anova-using-r/

특히 솔루션 # 2를 사용하고 있습니다.

그래서 나는 같은 것을 가지고있다.

require(nlme)
model <- lme(weight ~ time * Genotype, random = ~1|Animal/time, 
         data=weights)    
av <- anova(model)

이제 여러 비교를하고 싶습니다. 사용 multcomp내가 할 수있는 :

require(multcomp)
comp.geno <- glht(model, linfct=mcp(Genotype="Tukey"))
print(summary(comp.geno))

물론 시간이 지나도 같은 일을 할 수 있습니다.

두 가지 질문이 있습니다.

  1. mcpTime과 Genotype 간의 상호 작용을 보려면 어떻게해야 합니까?
  2. 실행할 glht때이 경고가 나타납니다.

    covariate interactions found -- default contrast might be inappropriate

    무슨 뜻이에요? 안전하게 무시해도 되나요? 아니면 어떻게 피해야합니까?

편집 : 나는 이 PDF 를 발견 했습니다 :

이 경우 관심있는 매개 변수를 자동으로 결정하는 것이 불가능하기 때문에 multcomp의 mcp ()는 기본적으로 공변량 및 상호 작용을 무시하고 주요 효과에 대한 비교 만 생성 합니다. 버전 1.1-2부터는 인수 interaction_average = TRUE 및 covariate_average = TRUE 인수를 사용하여 상호 작용 항과 공변량에 대해 평균을 지정할 수 있지만, 1.0-0보다 오래된 버전은 상호 작용 항에 대해 자동으로 평균화됩니다. 그러나 사용자에게 원하는 대비 세트를 수동으로 작성하는 것이 좋습니다.기본 대비가 무엇을 측정하는지에 대해 의문이 생길 때마다이를 수행해야합니다. 이는 일반적으로 고차 상호 작용 항이있는 모델에서 발생합니다. 이 문제에 대한 추가 토론과 예는 Hsu (1996), 7 장 및 Searle (1971), 3 장 ~ 7.3을 참조하십시오.

나는 그 책들에 접근 할 수 없지만 여기 누군가가 가지고 있는가?


InvivoStat ( invivostat.co.uk ) 를 살펴보면 원하는 분석 유형을 수행해야합니다.

답변:


29

경우 timeGenotype두 범주 예측이 / 유전자형 쌍은 서로, 당신은 단지 하나 개의 상호 작용 변수를 만들 수 있습니다, 그 위에 Tukey의 대조를 사용 그들은 것으로 나타납니다, 당신은 모든 시간을 비교에 관심이로 :

weights$TimeGeno <- interaction(weigths$Time, weights$Geno)
model <- lme(weight ~ TimeGeno, random = ~1|Animal/time, data=weights) 
comp.timegeno <- glht(model, linfct=mcp(TimeGeno="Tukey")) 

다른 대비에 관심이 있다면 linfct인수가 대비에 대한 계수 매트릭스를 취할 수 있다는 사실을 사용할 수 있습니다.이 방법을 사용하면 원하는 비교를 정확하게 설정할 수 있습니다.

편집하다

의견에 TimeGeno예측 변수가 적용된 모형이 예측 변수가 적용된 원래 모형과 다르다는 의견이 Time * Genotype있습니다. 그렇지 않습니다 . 모델은 동일합니다. 유일한 차이점은 고정 효과의 매개 변수화입니다.이 효과는 glht기능을 보다 쉽게 ​​사용할 수 있도록 설정되었습니다 .

내장 데이터 세트 중 하나 (Genotype 대신 Diet가 있음)를 사용하여 두 접근법이 동일한 가능성, 예측 값 등을 가지고 있음을 보여주었습니다.

> # extract a subset of a built-in dataset for the example
> data(BodyWeight)
> ex <- as.data.frame(subset(BodyWeight, Time %in% c(1, 22, 44)))
> ex$Time <- factor(ex$Time)
> 
> #create interaction variable
> ex$TimeDiet <- interaction(ex$Time, ex$Diet)
    > 
    > model1 <- lme(weight ~ Time * Diet, random = ~1|Rat/Time,  data=ex)    
    > model2 <- lme(weight ~ TimeDiet, random = ~1|Rat/Time, data=ex)    
    > 
    > # the degrees of freedom, AIC, BIC, log-likelihood are all the same 
    > anova(model1, model2)
           Model df      AIC      BIC    logLik
    model1     1 12 367.4266 387.3893 -171.7133
    model2     2 12 367.4266 387.3893 -171.7133
    Warning message:
    In anova.lme(model1, model2) :
      fitted objects with different fixed effects. REML comparisons are not meaningful.
    > 
    > # the second model collapses the main and interaction effects of the first model
    > anova(model1)
                numDF denDF   F-value p-value
    (Intercept)     1    26 1719.5059  <.0001
    Time            2    26   28.9986  <.0001
    Diet            2    13   85.3659  <.0001
    Time:Diet       4    26    1.7610  0.1671
    > anova(model2)
                numDF denDF   F-value p-value
    (Intercept)     1    24 1719.5059  <.0001
    TimeDiet        8    24   29.4716  <.0001
    > 
    > # they give the same predicted values
    > newdata <- expand.grid(Time=levels(ex$Time), Diet=levels(ex$Diet))
    > newdata$TimeDiet <- interaction(newdata$Time, newdata$Diet)
> newdata$pred1 <- predict(model1, newdata=newdata, level=0)
    > newdata$pred2 <- predict(model2, newdata=newdata, level=0)
> newdata
  Time Diet TimeDiet   pred1   pred2
1    1    1      1.1 250.625 250.625
2   22    1     22.1 261.875 261.875
3   44    1     44.1 267.250 267.250
4    1    2      1.2 453.750 453.750
5   22    2     22.2 475.000 475.000
6   44    2     44.2 488.750 488.750
7    1    3      1.3 508.750 508.750
8   22    3     22.3 518.250 518.250
9   44    3     44.3 530.000 530.000

유일한 차이점은 가설을 쉽게 테스트 할 수 있다는 것입니다. 예를 들어, 첫 번째 모형에서는 두 예측 변수가 상호 작용하는지 여부를 쉽게 테스트 할 수 있으며 두 번째 모형에서는 이에 대한 명시적인 검정이 없습니다. 반면에 두 예측 변수의 결합 효과는 두 번째 모형에서 테스트하기 쉽지만 첫 번째 모형에서는 테스트 할 수 없습니다. 다른 가설은 테스트가 가능하며,이를 설정하는 것이 더 많은 작업입니다.


3
glhtlme 모델에 주어진 자유도를 사용합니다. 이 자유도가 적절한 지 잘 모르겠습니다 ...?
Stéphane Laurent

2
나는 이것이 어떻게 가장 잘되는지 궁금합니다. 그러나이 접근 방식은 본질적으로 상호 작용을 테스트하는 다른 모델의 효과를 제공합니다. 두 번째 모델에는 두 가지 주요 효과가 전혀 포함되어 있지 않습니다. 이것은 첫 번째 모델에서 효과를 확인하기위한 적절한 방법이 아닌 것 같습니다.
Marcus Morrisey 4

@ Aniko, 방금 한 것처럼 2 개의 범주 형 변수를 하나로 결합하려고 생각했지만 변수 중 하나만 주제 내에 있고 다른 하나는 사이에 있기 때문에 hesited했습니다. 이것이 수학적이지 않다는 것을 확인할 수 있습니까? 나는 예에서 당신 Animal/time이 지금 어떤 요소가 아닌 것을 유지한다는 것을 알았습니다 . 정말 understand이거에요?
toto_tico

@toto_tico, 두 번째 모델이 첫 번째 모델과 동일하다는 응답을 편집했습니다.
Aniko

3
@toto_tico, 나는 당신에게 재현 가능한 예를 주었다. 왜 all.equal(resid(model1), resid(model2))그렇지 않으면 추측하기 전에 그것들이 동일하다는 것을 알고 시도 하지 않습니까? 고정 효과 매개 변수 만 다릅니다. TimeDiet은 순수한 상호 작용 용어가 아니며에 해당하는 Time:Diet것이 아니라에 해당합니다 Time + Diet + Time:Diet.
Aniko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.