Regressão múltipla multivariada em R

68

Eu tenho 2 variáveis ​​dependentes (DVs), cada uma cuja pontuação pode ser influenciada pelo conjunto de 7 variáveis ​​independentes (IVs). Os DVs são contínuos, enquanto o conjunto de IVs consiste em uma mistura de variáveis ​​codificadas contínuas e binárias. (No código abaixo, variáveis ​​contínuas são escritas em letras maiúsculas e variáveis ​​binárias em letras minúsculas.)

O objetivo do estudo é descobrir como esses DVs são influenciados pelas variáveis ​​IVs. Propus o seguinte modelo de regressão múltipla multivariada (MMR):

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

Para interpretar os resultados, chamo duas declarações:

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

As saídas de ambas as chamadas são coladas abaixo e são significativamente diferentes. Alguém pode explicar qual afirmação entre as duas deve ser escolhida para resumir adequadamente os resultados da MMR e por quê? Qualquer sugestão seria muito apreciada.

Saída usando a summary(manova(my.model))instrução:

> 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

Saída usando a Manova(my.model)instrução:

> 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 
Andrej
fonte

Respostas:

78

Resumidamente, isso ocorre porque a base-R manova(lm())usa comparações de modelos sequenciais para a chamada soma dos quadrados do Tipo I, enquanto que car, Manova()por padrão, usa comparações de modelos para a soma dos quadrados do Tipo II.

Suponho que você esteja familiarizado com a abordagem de comparação de modelos para ANOVA ou análise de regressão. Essa abordagem define esses testes comparando um modelo restrito (correspondente a uma hipótese nula) a um modelo irrestrito (correspondente à hipótese alternativa). Se você não está familiarizado com essa idéia, recomendo o excelente "Projetando experimentos e analisando dados" de Maxwell & Delaney (2004).

Para SS tipo I, o modelo restrito em uma análise de regressão para o seu primeiro preditor cé o modelo nulo, que usa apenas o termo absoluto:, lm(Y ~ 1)onde, Yno seu caso, seria o DV multivariado definido por cbind(A, B). O modelo irrestrito adiciona preditor c, ou seja lm(Y ~ c + 1).

Para SS tipo II, o modelo irrestrito em uma análise de regressão para o seu primeiro preditor cé o modelo completo que inclui todos os preditores, exceto suas interações, ou seja lm(Y ~ c + d + e + f + g + H + I),. O modelo restrito remove o preditor cdo modelo irrestrito, ou seja lm(Y ~ d + e + f + g + H + I),.

Como ambas as funções se baseiam em diferentes comparações de modelos, elas resultam em diferentes resultados. A pergunta que é preferível é difícil de responder - depende realmente de suas hipóteses.

O que segue pressupõe que você esteja familiarizado com o modo como as estatísticas de teste multivariadas, como o Pillai-Bartlett Trace, são calculadas com base no modelo nulo, no modelo completo e no par de modelos restritos e irrestritos. Por uma questão de brevidade, considero apenas preditores ce H, e apenas testo 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                                           

Para comparação, o resultado a partir carda Manova()função usando SS tipo II.

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 ***

Agora verifique manualmente os dois resultados. Construa a matriz de design primeiro e compare com a matriz de design de R.X

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

Agora defina a projeção ortogonal para o modelo completo ( , usando todos os preditores). Isto dá-nos a matriz .Pf=X(XX)1XW=Y(IPf)Y

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

Modelos restritos e sem restrições para o tipo SS I além da sua projecções e , levando a matriz .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

Modelos restritos e sem restrições para o SS tipo II mais as suas projecções e , levando a matriz .PrIPuIIBII=Y(PuIIPPrII)Y

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

Traço Pillai-Bartlett para ambos os tipos de SS: traço de .(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

Observe que os cálculos para as projeções ortogonais imitam a fórmula matemática, mas são uma má ideia numericamente. Deve-se realmente usar decomposições QR ou SVD em combinação com crossprod().

caracal
fonte
3
Meu +1 muito grande por esta resposta bem ilustrada.
chl
Gostaria de saber que, embora usando a lmfunção, estou conduzindo uma regressão multivariada apenas especificando mais de uma variável de respose dentro da lmfunção. Aprendi que, ao usar a lmfunção quando meus dados são realmente multivariados, obtém-se um resultado incorreto para o erro padrão. Mas, neste caso my.model <- lm(cbind(A, B) ~ c + d + e + f + g + H + I); , vcov(my.model )subestimará o erro padrão ou lmajustará inteligentemente a correlação entre as variáveis ​​dependentes?
precisa
6

Bem, ainda não tenho pontos suficientes para comentar sobre a resposta anterior e é por isso que estou escrevendo como uma resposta separada, então, por favor, me perdoe. (Se possível, envie-me os 50 pontos de repetição;)

Então, aqui estão os 2 centavos: Os testes de erros do tipo I, II e III são essencialmente variações devido ao desequilíbrio dos dados. (Defn desequilibrado: sem um número igual de observações em cada um dos estratos). Se os dados estiverem equilibrados, os testes de erro do tipo I, II e III fornecerão exatamente os mesmos resultados.

Então, o que acontece quando os dados são desequilibrados?

Considere um modelo que inclua dois fatores A e B; existem, portanto, dois efeitos principais e uma interação, AB. SS (A, B, AB) indica o modelo completo SS (A, B) indica o modelo sem interação. SS (B, AB) indica o modelo que não leva em consideração os efeitos do fator A e assim por diante.

Essa notação agora faz sentido. Apenas mantenha isso em mente.

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)

Tipo I, também chamado soma dos quadrados "sequencial":

1) SS(A) for factor A.

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

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

Portanto, estimamos o efeito principal de A primeiro, efeito de B dado A e, em seguida, estimamos a interação AB dada A e B (É nesse ponto que estão sendo desequilibrados os dados, as diferenças surgem. Conforme estimamos primeiro o efeito principal e depois o principal de outros e interação em uma "sequência")

Tipo II:

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

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

O tipo II testa a significância do efeito principal de A após B e B após A. Por que não há SS (AB | B, A)? Advertência é que o método do tipo II pode ser usado apenas quando já testamos a interação como insignificante. Dado que não há interação (SS (AB | B, A) é insignificante), o teste do tipo II tem melhor poder sobre o tipo III

Tipo III:

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

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

Por isso, testamos a interação durante o tipo II e a interação foi significativa. Agora precisamos usar o tipo III, pois ele leva em consideração o termo de interação.

Como o @caracal já disse, quando os dados são equilibrados, os fatores são ortogonais e os tipos I, II e III apresentam os mesmos resultados. Eu espero que isso ajude !

Divulgação: A maior parte não é meu próprio trabalho. Encontrei esta excelente página vinculada e senti vontade de reduzi-la ainda mais para torná-la mais simples.

Mandar
fonte