Многофакторная множественная регрессия в R

68

У меня есть 2 зависимые переменные (DV), на каждую из которых может влиять набор из 7 независимых переменных (IV). DV являются непрерывными, в то время как набор IV состоит из смеси непрерывных и двоично-закодированных переменных. (В коде ниже непрерывные переменные пишутся заглавными буквами, а двоичные переменные строчными.)

Цель исследования - выяснить, как на эти DV влияют переменные IV. Я предложил следующую модель многомерной множественной регрессии (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 
Andrej
источник

Ответы:

78

Короче говоря, это происходит потому , что база-R manova(lm())использует последовательные модели сравнения для так называемого типа I суммы квадратов, в то время как car«с Manova()по умолчанию использует модель сравнение для II типа суммы квадратов.

Я предполагаю, что вы знакомы с подходом сравнения моделей к ANOVA или регрессионного анализа. Этот подход определяет эти тесты, сравнивая ограниченную модель (соответствующую нулевой гипотезе) с неограниченной моделью (соответствующей альтернативной гипотезе). Если вы не знакомы с этой идеей, я рекомендую «Maxwell & Delaney» «Разработка экспериментов и анализ данных» (2004).

Для SS типа I ограниченная модель в регрессионном анализе для вашего первого предиктора 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). Е.

Поскольку обе функции основаны на сравнении разных моделей, они приводят к разным результатам. Трудно ответить на вопрос, какой из них предпочтительнее - это действительно зависит от ваших гипотез.

Далее предполагается, что вы знакомы с тем, как статистика многомерных тестов, такая как трассировка Пиллаи-Бартлетта, рассчитывается на основе нулевой модели, полной модели и пары моделей с неограниченным неограниченным доступом. Для краткости я рассматриваю только предикторы cи H, и только тест на 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                                           

Для сравнения, результат от car«ы Manova()функции , используя тип SS 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 ***

Теперь вручную проверьте оба результата. Сначала создайте матрицу дизайна и сравните с матрицей дизайна 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 я плюс их проекция и , что приводит к матрице .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: след .(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

Обратите внимание, что вычисления для ортогональных проекций имитируют математическую формулу, но численно являются плохой идеей. crossprod()Вместо этого нужно действительно использовать QR-разложения или SVD в сочетании с .

каракал
источник
3
Мой очень большой +1 за этот хорошо иллюстрированный ответ.
ЧЛ
Интересно, что хотя я использую lmфункцию, я провожу многомерную регрессию только путем указания более чем одной переменной respose внутри lmфункции. Я узнал, что использование lmфункции, когда мои данные на самом деле являются многомерными, дает ошибочный результат для стандартной ошибки. Но в этом случае my.model <- lm(cbind(A, B) ~ c + d + e + f + g + H + I); будет vcov(my.model )недооценивать стандартную ошибку или lmбудет разумно корректировать корреляцию между зависимыми переменными?
пользователь 31466
6

Ну, у меня все еще нет достаточного количества очков, чтобы комментировать предыдущий ответ, и поэтому я пишу его как отдельный ответ, поэтому, пожалуйста, извините меня. (Если возможно, пожалуйста, подтолкните меня к 50 точкам повторения;)

Итак, вот 2cents: Тестирование ошибок типа I, II и III, по сути, является вариацией из-за несбалансированности данных. (Defn Unbalanced: несоответствующее количество наблюдений в каждой из страт). Если данные сбалансированы, тесты на ошибки типа 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, а затем оцениваем взаимодействие AB с учетом A и B (Это где несбалансированные данные, различия вступают в силу. Когда мы оцениваем сначала основной эффект, а затем основной из других и тогда взаимодействие в «последовательности»)

Тип II:

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

Тип III:

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

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

Таким образом, мы проверили взаимодействие во время типа II, и взаимодействие было значительным. Теперь нам нужно использовать тип III, так как он учитывает термин взаимодействия.

Как уже сказал @caracal, когда данные сбалансированы, факторы ортогональны, и типы I, II и III дают одинаковые результаты. Надеюсь, это поможет !

Раскрытие: Большая часть этого не моя собственная работа. Я нашел эту превосходную страницу связанной, и мне захотелось свалить ее дальше, чтобы сделать ее проще.

Mandar
источник