Karma efektler modelinde çoklu karşılaştırmalar


31

Bir karma efekt modeli kullanarak bazı verileri analiz etmeye çalışıyorum. Topladığım veriler zaman içinde farklı genotipteki bazı genç hayvanların ağırlığını temsil ediyor.

Burada önerilen yaklaşımı kullanıyorum: https://gribblelab.wordpress.com/2009/03/09/repeated-measures-anova-using-r/

Özellikle 2 numaralı çözümü kullanıyorum

Bu yüzden benim gibi bir şey var

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

Şimdi, bazı çoklu karşılaştırmalar yapmak istiyorum. Kullanarak multcompyapabilirim:

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

Ve tabii ki, zamanla aynı şeyi yapabilirim.

İki sorum var:

  1. mcpZaman ve Genotip arasındaki etkileşimi görmek için nasıl kullanırım ?
  2. Koşarken glhtbu uyarıyı alıyorum:

    covariate interactions found -- default contrast might be inappropriate

    Bunun anlamı ne? Güvenle görmezden gelebilir miyim? Ya da önlemek için ne yapmalıyım?

EDIT: Bu PDF'i şöyle derdim :

Bu durumda ilgi parametrelerini otomatik olarak belirlemek mümkün olmadığından, çoklu hesaptaki mcp () varsayılan olarak yalnızca temel etkiler için karşılaştırmalar oluşturacak, değişkenleri ve etkileşimleri dikkate almayacaktır . 1.1-2 sürümünden bu yana, sırasıyla argümanları interaction_average = TRUE ve covariate_average = TRUE argümanlarını kullanarak etkileşimli terimler ve değişkenler üzerinde ortalama belirleyebilir, oysaki 1.0-0'den eski sürümler etkileşimli terimler üzerinden otomatik olarak ortalaması alınır. Ancak, kullanıcılara istedikleri kontrast kümesini manuel olarak yazmalarını öneririz.Bunu, genellikle yüksek dereceli etkileşim terimleri olan modellerde meydana gelen, varsayılan kontrastın ne olduğuna dair bir şüphe olduğunda bunu yapmanız gerekir. Bu konuda daha fazla tartışma ve örnekler için Hsu (1996), Bölüm ~ 7 ve Searle (1971), Bölüm ~ 7.3'e bakınız.

Bu kitaplara erişimim yok, ama belki burada birileri var?


InvivoStat'a ( invivostat.co.uk ) bakınız, aradığınız analiz türünü yapmalı

Yanıtlar:


29

Eğer timeve Genotypeikisi de kategorik birer tahmin / genotip çiftleri birbirine, o zaman sadece bir etkileşim değişkeni oluşturabilir ve üzerinde Tukey tezat kullanmak göründükleri ve her zaman karşılaştırarak ilgilenen gibidir:

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")) 

Diğer kontrastlarla ilgileniyorsanız, linfctargümanın kontrastlar için bir katsayı matrisi alabileceği olgusunu kullanabilirsiniz - bu şekilde istediğiniz karşılaştırmaları tam olarak yapabilirsiniz.

DÜZENLE

TimeGenoTahminde bulunan modelin tahminde bulunan orijinal modelden farklı olduğu yorumlarında bazı endişeler ortaya çıkmaktadır Time * Genotype. Durum bu değil, modeller eşdeğerdir. Tek fark, glhtfonksiyonun kullanımını kolaylaştırmak için ayarlanan sabit efektlerin parametrelenmesidir .

İki yaklaşımın aynı olasılık, öngörülen değerler, vb olduğunu göstermek için yerleşik veri kümelerinden birini (Genotip yerine Diyet vardır) kullandım:

> # 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

Tek fark, hangi hipotezlerin test edilmesinin kolay olduğudur. Örneğin, ilk modelde iki öngörücünün etkileşip etkileşmediğini test etmek kolaydır, ikinci modelde bunun için açık bir test yoktur. Öte yandan, iki kestiricinin ortak etkisinin ikinci modelde test edilmesi kolaydır, ancak birincisinde değil. Diğer hipotezler test edilebilir, bunları ayarlamak daha fazla çalışmadır.


3
glhtlme modelinde verilen serbestlik derecelerini kullanır. Bu serbestlik derecelerinin uygun olduğundan emin değilim ...?
Stéphane Laurent,

2
Bunun en iyi nasıl yapıldığını da merak ediyorum. Bununla birlikte, bu yaklaşım, sadece bir etkileşimi test eden farklı bir modelden etki yaratıyor. İkinci model hiç iki potansiyel ana etki içermez. Bu, ilk modeldeki etkileri kontrol etmek için uygun bir yöntem gibi görünmüyor.
Marcus Morrisey,

@Aniko, 2 kategorik değişkeni sizin yaptığınız gibi bir tanede birleştirmeyi düşünüyordum, ancak değişkenlerden sadece biri konu içinde olduğu için diğerinin arasında olduğunu belirtti. Bunun önemli olmadığını onaylayabilir misiniz? Örnekte sakladığınız örnekte Animal/timehangisinin faktörlerden biri olmadığını farkettim . Bana gerçekten understandbu mu?
toto_tico

@ toto_tico, ikinci modelin birincisine denk olduğunu göstermek için cevabı değiştirdim.
Aniko,

3
@ toto_tico, size tekrarlanabilir bir örnek verdim. Neden all.equal(resid(model1), resid(model2))başka türlü bir tahminde bulunmadan önce aynı olduklarını görmeyi denemiyorsunuz ? Sadece sabit etkiler parametreleştirmesi farklıdır. TimeDietSaf etkileşim terimi değildir ve bu demek değildir Time:Diet, bunun yerine Time + Diet + Time:Diet.
Aniko,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.