R中的多元多元回归

机器算法验证 r 多元分析 马诺瓦 多重回归 多元回归
2022-01-28 00:52:03

我有 2 个因变量 (DV),每个变量的分数都可能受到 7 个自变量 (IV) 的影响。DV 是连续的,而 IV 集由连续和二进制编码变量的混合组成。(在下面的代码中,连续变量用大写字母书写,二进制变量用小写字母书写。)

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

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

为了解释结果,我称之为两个陈述:

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

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

使用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

使用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 
2个回答

简而言之,这是因为 base-Rmanova(lm())对所谓的 I 类平方和使用顺序模型比较,而默认情况下,carManova()II 类平方和使用模型比较。

我假设您熟悉方差分析或回归分析的模型比较方法。这种方法通过将受限模型(对应于零假设)与非受限模型(对应于备择假设)进行比较来定义这些检验。如果你不熟悉这个想法,我推荐 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 Trace)。为简洁起见,我只考虑预测变量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                                           

为了比较,使用 SS 类型 IIcar的函数的结果。Manova()

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

SS 类型 I 的受限和非受限模型加上它们的投影,导致矩阵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

SS 类型 II 的受限和非受限模型加上它们的投影,导致矩阵PrIPuIIBII=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()

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

所以这里是 2cents: I 类、II 类和 III 类错误测试本质上是由于数据不平衡而导致的变化。(定义不平衡:在每个层中没有相同数量的观察值)。如果数据是平衡的 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 的影响,然后估计给定 A 和 B 的交互作用 AB (这是不平衡数据的地方,差异开始出现。因为我们首先估计主要影响,然后是其他和主要影响然后以“顺序”进行交互)

类型二:

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

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

类型 II 检验 A 后 B 和 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 都给出相同的结果。我希望这有帮助 !

披露:大部分不是我自己的作品。我发现这个很棒的页面有链接 ,我想进一步简化它以使其更简单。