混合効果モデルの多重比較


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

そして、もちろん、時間をかけて同じことができます。

2つの質問があります。

  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)のChapter〜7とSearle(1971)のChapter〜7.3を参照してください。

私はそれらの本にアクセスできませんが、おそらく誰かがここにいますか?


InvivoStat(invivostat.co.uk)をご覧ください。探しているタイプの分析を行う必要があります

回答:


29

場合timeGenotypeの両方のカテゴリ予測されている、彼らはのように見える、とあなたがお互いにすべての時間/遺伝子型のペアを比較することに興味があるように、あなたはただ一つの対話変数を作成し、その上にテューキーのコントラストを使用することができます。

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関数を使いやすくするために設定されています。

組み込みデータセットの1つ(Genotypeの代わりにDietを使用)を使用して、2つのアプローチの尤度、予測値などが同じであることを示しました。

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

唯一の違いは、仮説のテストが簡単なことです。たとえば、最初のモデルでは2つの予測子が相互作用するかどうかをテストするのは簡単ですが、2番目のモデルではこれを明示的にテストすることはありません。一方、2つの予測子の結合効果は、最初のモデルではなく2番目のモデルで簡単にテストできます。他の仮説はテスト可能であり、それらを設定するのは単なる作業です。


3
glhtlmeモデルで指定された自由度を使用します。これらの自由度が適切かどうかわかりません...?
ステファンローラン

2
また、これがどのように行われるのが最適かについても興味があります。ただし、このアプローチは、異なるモデル(本質的には相互作用のみをテストするモデル)からの効果を与えています。2番目のモデルには、2つの潜在的な主効果がまったく含まれていません。これは、最初のモデルの効果をチェックする適切な方法ではないようです。
マーカスモリセイ14年

@Aniko、私はあなたがしたように2つのカテゴリー変数を1つに結合することを考えていましたが、変数の1つだけが主題内にあり、もう1つが間にあるので、私はヘスタイズしました。これがうまくいかないことを確認できますか?この例では、Animal/timeどれが現在の要因の1つではないかを確認しました。lmeは本当にunderstandこれですか?
toto_tico

@toto_tico、応答を編集して、2番目のモデルが最初のモデルと同等であることを示しました。
アニコ

3
@toto_tico、再現可能な例を挙げました。そうでないとall.equal(resid(model1), resid(model2))推測する前に、それらが同じであることを試してみてはいかがですか?固定効果のパラメーター化のみが異なります。TimeDiet純粋な相互作用の用語ではない、それはと等価ではないTime:Dietが、むしろへTime + Diet + Time:Diet
アニコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.