分析纵向数据集时使用aov()和lme()有什么区别?


14

谁能告诉我使用aov()lme()分析纵向数据之间的区别,以及如何解释这两种方法的结果?

下面,我使用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 

Answers:


19

根据您的描述,您似乎有一个具有单个处理因子的重复测量模型。由于我无权访问数据集(raw3.42),因此我将使用nlme包中的Orthodont数据来说明发生了什么。数据结构是相同的(两个不同组的重复测量-在这种情况下,是男性和女性)。

如果运行以下代码:

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 2011年

是的,但是我会这样想:您实质上是在同一治疗组中的受试者之间(随机地)允许回归线的截距和斜率(UOP.kg随时间变化)。这就是random =〜time | id要做的。模型将告诉您的是截距和斜率中估计的可变性量。此外,时间:治疗相互作用项表明A和B 的平均斜率是否不同
Wolfgang

谢谢@沃尔夫冈!Error(Subject/age)自从查阅了一些教程后,我可以使用,说这/age意味着沿着该因素重复测量吗?这和你的一样Error(Subject)吗?另一个问题是:不平衡数据,aov并且lme可以有不同的结果,不是吗?
breezeintopl

1

我只想补充一点,您可能希望安装该car软件包并使用Anova()该软件包提供的内容,而不是anova()因为for aov()lm()object,vanilla 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几乎相同)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.