R中的多元多元回归


68

我有2个因变量(DV),每个因变量的得分可能受7个独立变量(IV)的影响。DV是连续的,而IV则由连续变量和二进制编码变量组成。(在下面的代码中,连续变量用大写字母写,二进制变量用小写字母写。)

该研究的目的是揭示IV变量如何影响这些DV。我提出了以下多元多元回归(MMR)模型:

my.model <- lm(cbind(A, B) ~ c + d + e + f + g + H + I)

为了解释结果,我调用两个语句:

  1. summary(manova(my.model))
  2. Manova(my.model)

这两个调用的输出都粘贴在下面,并且有很大的不同。有人可以解释一下应该适当选择总结MMR结果的两种说法中的哪一种吗?为什么?任何建议将不胜感激。

使用using的输出summary(manova(my.model))

> summary(manova(my.model))
           Df   Pillai approx F num Df den Df    Pr(>F)    
c           1 0.105295   5.8255      2     99  0.004057 ** 
d           1 0.085131   4.6061      2     99  0.012225 *  
e           1 0.007886   0.3935      2     99  0.675773    
f           1 0.036121   1.8550      2     99  0.161854    
g           1 0.002103   0.1043      2     99  0.901049    
H           1 0.228766  14.6828      2     99 2.605e-06 ***
I           1 0.011752   0.5887      2     99  0.556999    
Residuals 100                                              
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

使用using的输出Manova(my.model)

> library(car)
> Manova(my.model)

Type II MANOVA Tests: Pillai test statistic
  Df test stat approx F num Df den Df    Pr(>F)    
c  1  0.030928   1.5798      2     99   0.21117    
d  1  0.079422   4.2706      2     99   0.01663 *  
e  1  0.003067   0.1523      2     99   0.85893    
f  1  0.029812   1.5210      2     99   0.22355    
g  1  0.004331   0.2153      2     99   0.80668    
H  1  0.229303  14.7276      2     99 2.516e-06 ***
I  1  0.011752   0.5887      2     99   0.55700    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Answers:


78

简单地说,这是因为基础-R的manova(lm())使用为正方形的所谓I型和顺序模型的比较,而carManova()默认使用的模型比较了正方形的II型总和。

我假设您熟悉ANOVA或回归分析的模型比较方法。这种方法通过将受限模型(对应于原假设)与非受限模型(对应于替代假设)进行比较来定义这些检验。如果您不熟悉此想法,我建议您使用Maxwell&Delaney出色的“设计实验和分析数据”(2004年)。

对于I型SS,回归分析中第一个预测变量的受限模型为c空模型,该模型仅使用绝对项:lm(Y ~ 1)Y在您的情况下为定义的多元DV cbind(A, B)。然后,无限制模型添加预测变量c,即lm(Y ~ c + 1)

对于II型SS,您的第一个预测变量的回归分析中的不受限制模型c是完整模型,其中包括除相互作用以外的所有预测变量,即lm(Y ~ c + d + e + f + g + H + I)。受限模型c从非受限模型(即)中删除预测变量lm(Y ~ d + e + f + g + H + I)

由于两个函数都依赖于不同的模型比较,因此它们会导致不同的结果。一个更可取的问题很难回答-它实际上取决于您的假设。

接下来的内容假定您熟悉如何根据空模型,完整模型以及一对不受限制的模型来计算多元测试统计信息(如Pillai-Bartlett跟踪)。为简便起见,我仅考虑预测变量cH,仅测试c

N <- 100                             # generate some data: number of subjects
c <- rbinom(N, 1, 0.2)               # dichotomous predictor c
H <- rnorm(N, -10, 2)                # metric predictor H
A <- -1.4*c + 0.6*H + rnorm(N, 0, 3) # DV A
B <-  1.4*c - 0.6*H + rnorm(N, 0, 3) # DV B
Y <- cbind(A, B)                     # DV matrix
my.model <- lm(Y ~ c + H)            # the multivariate model
summary(manova(my.model))            # from base-R: SS type I
#           Df  Pillai approx F num Df den Df  Pr(>F)    
# c          1 0.06835   3.5213      2     96 0.03344 *  
# H          1 0.32664  23.2842      2     96 5.7e-09 ***
# Residuals 97                                           

为了进行比较,使用II型SS carManova()函数的结果。

library(car)                           # for Manova()
Manova(my.model, type="II")
# Type II MANOVA Tests: Pillai test statistic
#   Df test stat approx F num Df den Df  Pr(>F)    
# c  1   0.05904   3.0119      2     96 0.05387 .  
# H  1   0.32664  23.2842      2     96 5.7e-09 ***

现在,手动验证两个结果。首先建立设计矩阵并与R的设计矩阵进行比较。X

X  <- cbind(1, c, H)
XR <- model.matrix(~ c + H)
all.equal(X, XR, check.attributes=FALSE)
# [1] TRUE

现在,使用所有预测变量定义整个模型的正交投影()。这给我们矩阵。Pf=X(XX)1XW=Y(IPf)Y

Pf  <- X %*% solve(t(X) %*% X) %*% t(X)
Id  <- diag(N)
WW  <- t(Y) %*% (Id - Pf) %*% Y

I型SS的受限和非受限模型加上它们的投影和,矩阵。PrIPuIBI=Y(PuIPPrI)Y

XrI <- X[ , 1]
PrI <- XrI %*% solve(t(XrI) %*% XrI) %*% t(XrI)
XuI <- X[ , c(1, 2)]
PuI <- XuI %*% solve(t(XuI) %*% XuI) %*% t(XuI)
Bi  <- t(Y) %*% (PuI - PrI) %*% Y

II型SS的受限和非受限模型及其投影和,矩阵。 P u I I B I I = Y 'P u I I - P P r I IYPrIPuIIBII=Y(PuIIPPrII)Y

XrII <- X[ , -2]
PrII <- XrII %*% solve(t(XrII) %*% XrII) %*% t(XrII)
PuII <- Pf
Bii  <- t(Y) %*% (PuII - PrII) %*% Y

两种SS的Pillai-Bartlett迹线:迹线。(B+W)1B

(PBTi  <- sum(diag(solve(Bi  + WW) %*% Bi)))   # SS type I
# [1] 0.0683467

(PBTii <- sum(diag(solve(Bii + WW) %*% Bii)))  # SS type II
# [1] 0.05904288

请注意,正交投影的计算模仿了数学公式,但在数值上不是一个好主意。实际上,应该将QR分解或SVD与之组合使用crossprod()


3
我非常大的+1,足以说明问题。
chl

我想知道,尽管使用lm函数,但我仅通过在lm函数中指定多个respose变量来进行多元回归。我了解到,lm当我的数据实际上是多变量时,通过使用函数可以得出标准错误的错误结果。但是在这种情况下my.model <- lm(cbind(A, B) ~ c + d + e + f + g + H + I);vcov(my.model )低估标准误差还是lm会智能地调整因变量之间的相关性?
用户31466

6

好吧,我仍然没有足够的观点来评论先前的答案,这就是为什么我将其作为单独的答案来编写,所以请原谅我。(如果可能的话,请让我超过50个代表点;)

所以这里是2美分:类型I,II和III错误测试本质上是由于数据不平衡而引起的变化。(Defn不平衡:在每个层中没有相同数量的观测值)。如果数据平衡,则类型I,II和III的错误测试将得出完全相同的结果。

那么,当数据不平衡时会发生什么呢?

考虑一个包含两个因素A和B的模型;因此,有两个主要作用,以及一个相互作用AB。SS(A,B,AB)表示完整模型SS(A,B)表示没有交互的模型。SS(B,AB)表示该模型未考虑因素A的影响,依此类推。

现在,这种表示法变得有意义。只要记住它。

SS(AB | A, B) = SS(A, B, AB) - SS(A, B)

SS(A | B, AB) = SS(A, B, AB) - SS(B, AB)

SS(B | A, AB) = SS(A, B, AB) - SS(A, AB)

SS(A | B)     = SS(A, B) - SS(B)

SS(B | A)     = SS(A, B) - SS(A)

类型I,也称为“顺序”平方和:

1) SS(A) for factor A.

2) SS(B | A) for factor B.

3) SS(AB | B, A) for interaction AB.

因此,我们先估算A的主要影响,然后先估算B的影响,然后估算给定A和B的相互作用AB(这是数据不平衡的地方,差异开始显现。我们先估算主要影响,然后估算其他的主要影响,然后以“顺序”进行交互)

第二类:

1) SS(A | B) for factor A.

2) SS(B | A) for factor B.

II型检验B后A和B后A的主要作用的重要性。为什么没有SS(AB | B,A)?请注意,只有在我们已经测试交互作用不重要的情况下,才能使用II型方法。假设没有交互作用(SS(AB | B,A)无关紧要),II型测试比III型测试具有更好的功效

第三类:

1) SS(A | B, AB) for factor A.

2) SS(B | A, AB) for factor B.

因此,我们测试了II型交互作用,并且交互作用很明显。现在,我们需要使用类型III,因为它考虑了交互作用项。

就像@caracal已经说过的那样,当数据平衡时,因子是正交的,并且类型I,II和III都给出相同的结果。我希望这有帮助 !

披露:大部分不是我自己的作品。我发现链接了这个出色的页面 ,感觉就像将其进一步煮沸以使其更简单。

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.