縦断的データセットの分析でaov()とlme()を使用することの違いは何ですか?


13

縦断的データの使用aov()lme()分析の違いと、これら2つの方法の結果の解釈方法の違いを教えてください。

以下は、私が使用して同じデータセットを分析aov()し、lme()そして2つの異なる結果を得ました。でaov()、私は治療の相互作用によって時間的に有意な結果を得たが、線形混合モデルを当てはめ、治療の相互作用によって時間は軽微であります。

> UOP.kg.aov <- aov(UOP.kg~time*treat+Error(id), raw3.42)
> summary(UOP.kg.aov)

Error: id
          Df  Sum Sq Mean Sq F value Pr(>F)
treat      1   0.142  0.1421  0.0377 0.8471
Residuals 39 147.129  3.7725               

Error: Within
            Df  Sum Sq Mean Sq  F value  Pr(>F)    
time         1 194.087 194.087 534.3542 < 2e-16 ***
time:treat   1   2.077   2.077   5.7197 0.01792 *  
Residuals  162  58.841   0.363                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

> UOP.kg.lme <- lme(UOP.kg~time*treat, random=list(id=pdDiag(~time)), 
                    na.action=na.omit, raw3.42)
> summary(UOP.kg.lme)
Linear mixed-effects model fit by REML
 Data: raw3.42 
       AIC      BIC    logLik
  225.7806 248.9037 -105.8903

Random effects:
 Formula: ~time | id
 Structure: Diagonal
        (Intercept)      time  Residual
StdDev:   0.6817425 0.5121545 0.1780466

Fixed effects: UOP.kg ~ time + treat + time:treat 
                 Value Std.Error  DF   t-value p-value
(Intercept)  0.5901420 0.1480515 162  3.986059  0.0001
time         0.8623864 0.1104533 162  7.807701  0.0000
treat       -0.2144487 0.2174843  39 -0.986042  0.3302
time:treat   0.1979578 0.1622534 162  1.220053  0.2242
 Correlation: 
           (Intr) time   treat 
time       -0.023              
treat      -0.681  0.016       
time:treat  0.016 -0.681 -0.023

Standardized Within-Group Residuals:
         Min           Q1          Med           Q3          Max 
-3.198315285 -0.384858426  0.002705899  0.404637305  2.049705655 

Number of Observations: 205
Number of Groups: 41 

回答:


18

説明に基づいて、単一の治療係数を持つ反復測定モデルがあるようです。データセット(raw3.42)にアクセスできないため、nlmeパッケージのOrthodontデータを使用して、ここで何が行われているかを説明します。データ構造は同じです(2つの異なるグループ(この場合は男性と女性)の反復測定)。

次のコードを実行すると:

library(nlme)
data(Orthodont)

res <- lme(distance ~ age*Sex, random = ~ 1 | Subject, data = Orthodont)
anova(res)

次の結果が得られます。

            numDF denDF  F-value p-value
(Intercept)     1    79 4123.156  <.0001
age             1    79  122.450  <.0001
Sex             1    25    9.292  0.0054
age:Sex         1    79    6.303  0.0141

実行する場合:

res <- aov(distance ~ age*Sex + Error(Subject), data = Orthodont)
summary(res)

あなたが取得します:

Error: Subject
          Df Sum Sq Mean Sq F value   Pr(>F)   
Sex        1 140.46 140.465  9.2921 0.005375 **
Residuals 25 377.91  15.117                    

Error: Within
          Df  Sum Sq Mean Sq  F value  Pr(>F)    
age        1 235.356 235.356 122.4502 < 2e-16 ***
age:Sex    1  12.114  12.114   6.3027 0.01410 *  
Residuals 79 151.842   1.922                     

F検定はまったく同じであることに注意してください。

lme()使用list(id=pdDiag(~time))モデルへのランダム切片でなく、ランダムなスロープを追加しただけでなく、。さらに、を使用pdDiagすることにより、ランダムインターセプトとスロープ間の相関をゼロに設定しています。これは、指定したモデルとは異なるモデルであるaov()ため、異なる結果が得られます。


ありがとう@Wolfgang; あなたの説明は大いに役立ちます。私が次に持っている質問はこれです。実際、単一の治療因子で反復測定モデルを分析しています。各被験者は、治療AまたはBのいずれかにランダムに割り当てられます。その後、0分、15分、30分、60分、120分、180分で測定されます。私の理解では、時間は0から180分までの単なるサンプルであるため、時間はランダムな要素である必要があります。だから、私はする必要があります:lme(UOP.kg〜time * treat、random =〜time | id、raw3.42)?
biostat_newbie

はい、しかし私はそれをこのように考えるでしょう:あなたは本質的に回帰線の切片と勾配(時間通りのUOP.kgの)が同じ治療グループ内の被験者間で(ランダムに)異なることを許しています。これがrandom =〜time | idの動作です。このモデルが示すことは、切片と勾配の変動の推定量です。さらに、time:treat相互作用の項は、平均勾配がAとBで異なるかどうかを示します
ウォルフガング

ありがとう@Wolfgang!Error(Subject/age)私はいくつかのチュートリアルを調べたので、それを使用できます/ageか?それはその要素に沿って繰り返される測定を意味しますか?これはあなたと同じError(Subject)ですか?もう1つの質問は、データが不均衡でaovありlme、結果が異なる場合があるということです。
breezeintopl

1

私はちょうどあなたがインストールしたいかもしれないことを追加しcarたパッケージや使用をAnova()、このパッケージの代わりに提供するanova()ためにあるためaov()lm()オブジェクトは、バニラのanova()ためにしながら、不均等なサンプルサイズのために間違った結果を与える正方形の連続合計を、使用していますlme()、それはどちらかのタイプを使用しています-IまたはタイプIIIの二乗和はtype引数に応じて異なりますが、タイプIIIの二乗和は限界に違反します。つまり、相互作用を主効果と同じように扱います。

R-helpリストには、タイプIとタイプIIIの二乗和について良いことは何もありませんが、これらは唯一のオプションです!図を移動します。

編集:実際には、重要な相互作用用語がある場合、タイプIIは有効ではないように見えます。相互作用がある場合、誰でもできることはタイプIIIを使用することです。私はによってそれにチップオフしまった私自身の質問のいずれかに答え順番にに私を指摘していること、このポスト


0

私には、各IDごとに複数のメジャーがあるように見えます。aovでこれらを集計する必要があります。これは、その分析で不当に電力を増加させるためです。集計を行うと結果が同じになるとは言いませんが、結果をより類似させる必要があります。

dat.agg <- aggregate(UOP.kg ~ time + treat + id, raw3.42, mean)

次に、データをdat.aggに置き換える前と同じようにaovモデルを実行します。

また、私はanova(lme)が結果を比較するためにあなたがしたいことであると信じています。効果の方向と大きさは、モデルの分散とエラーの比率と同じではありません。

(ところで、集約データに対してlme分析を行うべきではありませんが、anova(lme)をチェックすると、aovとほぼ同じ結果が得られます)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.