配对t检验是线性混合效应建模的特例


20

我们知道,配对t检验只是单向重复测量(或对象内)ANOVA以及线性混合效应模型的一种特殊情况,可以用Rme中的lme()函数的lme()函数进行演示如下所示。

#response data from 10 subjects under two conditions
x1<-rnorm(10)
x2<-1+rnorm(10)

# Now create a dataframe for lme
myDat <- data.frame(c(x1,x2), c(rep("x1", 10), rep("x2", 10)), rep(paste("S", seq(1,10), sep=""), 2))
names(myDat) <- c("y", "x", "subj")

当我运行以下配对t检验时:

t.test(x1, x2, paired = TRUE)

我得到了这个结果(由于随机生成器,您将得到不同的结果):

t = -2.3056, df = 9, p-value = 0.04657

使用ANOVA方法,我们可以获得相同的结果:

summary(aov(y ~ x + Error(subj/x), myDat))

# the F-value below is just the square of the t-value from paired t-test:
          Df  F value Pr(>F)
x          1  5.3158  0.04657

现在,对于以下两种情况,假设正定对称对称相关矩阵,我可以在lme中使用以下模型获得相同的结果:

summary(fm1 <- lme(y ~ x, random=list(subj=pdSymm(form=~x-1)), data=myDat))

# the 2nd row in the following agrees with the paired t-test
# (Intercept) -0.2488202 0.3142115  9 -0.7918878  0.4488
# xx2          1.3325786 0.5779727  9  2.3056084  0.0466

或另一个模型,假设两个条件的相关矩阵具有复合对称性:

summary(fm2 <- lme(y ~ x, random=list(subj=pdCompSymm(form=~x-1)), data=myDat))

# the 2nd row in the following agrees with the paired t-test
# (Intercept) -0.2488202 0.4023431  9 -0.618428  0.5516
# xx2          1.3325786 0.5779727  9  2.305608  0.0466

借助配对的t检验和单向重复测量方差分析,我可以将传统的单元均值模型记为

Yij = μ + αi + βj + εij, i = 1, 2; j = 1, ..., 10

其中i索引条件,J索引对象,Y IJ是响应变量,μ是用于整体平均值的固定效果常数,α 为条件的固定效果,β Ĵ为受试者以下N(0随机效应,σ p 2)(σ p 2是总体方差),以及ε IJ是残余以下N(0,σ 2)(σ 2是受试者内方差)。

我以为上面的单元均值模型不适用于lme模型,但是麻烦的是,我无法针对两种具有相关结构假设的lme()方法提出合理的模型。原因是lme模型似乎比上述单元均值模型具有更多的随机成分参数。至少lme模型还提供完全相同的F值,自由度和p值,而gl不能。更具体地讲,gls给出了不正确的DF,原因是它没有考虑到每个对象都有两次观察的事实,导致DF大大膨胀。在指定随机效果时,lme模型很可能过于参数化,但我不知道该模型是什么,参数是什么。因此,对于我来说,这个问题仍未解决。


2
不太确定您要问什么。您写下的模型恰好是随机效应模型的模型。相关结构是由随机效应引起的。
亚伦-恢复莫妮卡

@Aaron:细胞均值模型中的随机效应βj应当遵循N(0,σp2)。我的困惑是,这个术语(只有一个参数σp2)与lme模型中由复合对称性或简单对称矩阵指定的相关结构如何关联?
bluepole

当您计算同一主题的两个观测值之间的相关性时,相关性为sigma_p ^ 2 /(sigma_p ^ 2 + sigma ^ 2),因为它们共享相同的beta_j。参见第8页的Pinheiro / Bates。同样,您所写的随机效应模型等效于复合对称性。其他相关结构则更为复杂。
亚伦-恢复莫妮卡

@Aaron:谢谢!我已经读过Pinheiro / Bates的书,但仍然无法弄清楚随机效果的细节。相关性更高的页面似乎是第160-161页的示例。而且,从lme()输出的具有复合对称性假设的随机效应似乎与单元均值模型中σp2//(σp2+σ2)的相关性不一致。仍然对模型结构感到困惑。
bluepole

好吧,几乎等同于复合对称。在CS中,相关可以是负的,但不能具有随机效应。也许那就是您与众不同的地方。有关详细信息,请参见stats.stackexchange.com/a/14185/3601
亚伦-恢复莫妮卡2012年

Answers:


16

可以通过计算来自同一个人的两个观察值之间的相关性来观察模型的等效性,如下所示:

ÿ一世Ĵ=μ+α一世+βĴ+ϵ一世ĴβĴñ0σp2ϵ一世Ĵñ0σ2CØvÿ一世ķÿĴķ=CØvμ+α一世+βķ+ϵ一世ķμ+αĴ+βķ+ϵĴķ=CØvβķβķ=σp2V一种[Rÿ一世ķ=V一种[RÿĴķ=σp2+σ2σp2/σp2+σ2

但是请注意,这些模型并不完全等效,因为随机效应模型会迫使相关性为正。CS模型和t检验/方差分析模型则没有。

编辑:还有两个其他差异。首先,CS和随机效应模型假定随机效应为正态性,但t检验/方差分析模型则不然。其次,CS和随机效应模型使用最大似然拟合,而方差分析使用均方拟合。当一切平衡时,他们会达成共识,但不一定是在更复杂的情况下。最后,我会警惕使用各种拟合的F / df / p值来衡量模型的一致性。有关更多详细信息,请参见Doug Bates在df上著名的熨平板。(结束编辑)

R代码的问题在于您没有正确指定相关结构。您需要使用glscorCompSymm相关结构。

生成数据以便产生主观效果:

set.seed(5)
x <- rnorm(10)
x1<-x+rnorm(10)
x2<-x+1 + rnorm(10)
myDat <- data.frame(c(x1,x2), c(rep("x1", 10), rep("x2", 10)), 
                    rep(paste("S", seq(1,10), sep=""), 2))
names(myDat) <- c("y", "x", "subj")

然后,您将了解如何拟合随机效应和复合对称模型。

library(nlme)
fm1 <- lme(y ~ x, random=~1|subj, data=myDat)
fm2 <- gls(y ~ x, correlation=corCompSymm(form=~1|subj), data=myDat)

随机效应模型的标准误差为:

m1.varp <- 0.5453527^2
m1.vare <- 1.084408^2

CS模型的相关性和残差为:

m2.rho <- 0.2018595
m2.var <- 1.213816^2

它们等于预期的值:

> m1.varp/(m1.varp+m1.vare)
[1] 0.2018594
> sqrt(m1.varp + m1.vare)
[1] 1.213816

其他相关结构通常不适合随机效果,而只需指定所需的结构即可。一个常见的例外是AR(1)+随机效应模型,该模型具有随机效应,并且对同一随机效应的观测值之间具有AR(1)相关性。

EDIT2:当我适合这三个选项时,除了gls不会尝试猜测感兴趣项的df之外,我得到的结果完全相同。

> summary(fm1)
...
Fixed effects: y ~ x 
                 Value Std.Error DF   t-value p-value
(Intercept) -0.5611156 0.3838423  9 -1.461839  0.1778
xx2          2.0772757 0.4849618  9  4.283380  0.0020

> summary(fm2)
...
                 Value Std.Error   t-value p-value
(Intercept) -0.5611156 0.3838423 -1.461839  0.1610
xx2          2.0772757 0.4849618  4.283380  0.0004

> m1 <- lm(y~ x + subj, data=myDat)
> summary(m1)
...
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  -0.3154     0.8042  -0.392  0.70403   
xx2           2.0773     0.4850   4.283  0.00204 **

(此处的截距不同,因为使用默认编码,它不是所有主题的均值,而是第一个主题的均值。)

还需要注意的是,较新的lme4软件包给出了相同的结果,但甚至没有尝试计算p值。

> mm1 <- lmer(y ~ x + (1|subj), data=myDat)
> summary(mm1)
...
            Estimate Std. Error t value
(Intercept)  -0.5611     0.3838  -1.462
xx2           2.0773     0.4850   4.283

再次感谢您的帮助!我从单元均值模型的角度了解这一部分。但是,具有复合对称性的lme()结果如下:随机效应:公式:〜x-1 | 子结构:复合对称性StdDev xx1 1.1913363 xx2 1.1913363 Corr:-0.036残差0.4466733。我仍然无法将这些数字与单元均值模型进行协调。也许您可以进一步帮助我解决这些数字?
bluepole

另外,对具有其他相关结构(例如简单对称矩阵)的模型公式有何想法?
bluepole

我知道了!我应该仔细阅读您在其他主题中的回答。我曾经考虑过使用gls(),但未能弄清楚相关性规范。有趣的是,具有随机效应的复合对称结构的lme()仍呈现相同的t值,但似乎随机效应的方差不能直接解释。非常感谢您的帮助!
bluepole

经过一番思考后,我感到我最初的困惑仍未解决。是的,可以使用gls来展示相关结构和均方朗姆酒,但是其下方的模型与配对t检验(或通常为单向重复测量方差分析)并不完全相同,并且这种评估是来自gls的错误DF和p值进一步支持。相比之下,我的具有复合对称性的lme命令提供了相同的F,DF和p值。我唯一感到困惑的是,如我的原始文章所述,如何对lme模型进行参数化。有什么帮助吗?
bluepole

不确定如何为您提供帮助。您能写出您认为这两种不同的模型是什么吗?您如何思考其中之一是错误的。
亚伦-恢复莫妮卡

3

您可能还考虑使用mixed包中的函数afex以Kenward-Roger df近似值返回p值,该值返回相同的p值作为配对的t检验:

library(afex)
mixed(y ~ x + (1|subj), type=3,method="KR",data=myDat) 

要么

library(lmerTest)
options(contrasts=c('contr.sum', 'contr.poly'))
anova(lmer(y ~ x + (1|subj),data=myDat),ddf="Kenward-Roger")
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.