Багатовимірна множинна регресія в R


68

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

Метою дослідження є виявити, як впливають на ці ВВ змінні IV. Я запропонував таку модель багатоваріантної множинної регресії (MMR):

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

Для інтерпретації результатів я закликаю два твердження:

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

Виходи з обох викликів вставляються нижче і значно відрізняються. Може хтось, будь ласка, пояснить, яке твердження серед двох слід вибрати, щоб правильно узагальнити результати ЗМР, і чому? Будь-яка пропозиція буде дуже вдячна.

Виведення з використанням 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 

Відповіді:


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).

Для SS II типу необмеженою моделлю в регресійному аналізі для вашого першого прогноктора cє повна модель, яка включає всі предиктори, за винятком їх взаємодій, тобто lm(Y ~ c + d + e + f + g + H + I). Обмежена модель видаляє предиктор cіз необмеженої моделі, тобто lm(Y ~ d + e + f + g + H + I).

Оскільки обидві функції покладаються на порівняння різних моделей, вони призводять до різних результатів. На питання, який з них є кращим, важко відповісти - це дійсно залежить від ваших гіпотез.

Далі випливає, що ви знайомі з тим, як обчислюється багатоваріантна статистика випробувань, як Pillai-Bartlett Trace, виходячи з нульової моделі, повної моделі та пари моделей з обмеженим обмеженням. Для стислості я вважаю лише прогнози 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's 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 плюс їх проекція і , що призводить до матриці . P u I I B I I = Y ( P u I I - P P r I I ) YPrIPuIIBII=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

Зауважимо, що обчислення для ортогональних проекцій імітують математичну формулу, але чисельно є поганою ідеєю. Справді слід використовувати QR-декомпозиції або SVD у поєднанні з crossprod()замість цього.


3
Мій дуже великий +1 за цю чудово проілюстровану відповідь.
chl

Мені цікаво, що, використовуючи lmфункцію, я веду багатоваріантну регресію лише за допомогою вказання більше однієї змінної відповіді всередині lmфункції. Я дізнався, що за допомогою lmфункції, коли мої дані фактично багатофакторні, дають помилковий результат для стандартної помилки. Але в цьому випадку my.model <- lm(cbind(A, B) ~ c + d + e + f + g + H + I); буде vcov(my.model )недооцінювати стандартну помилку чи lmрозумно налаштовувати співвідношення між залежними змінними?
користувач 31466

6

Ну, у мене все ще не вистачає балів, щоб прокоментувати попередню відповідь, і тому я пишу це як окрему відповідь, тому, будь ласка, прости мене. (Якщо можливо, будь ласка, натисніть мене на 50 пунктів повторення;)

Отже, ось два відсотки: тестування помилок типу I, II та III по суті є різницею через неврівноваженість даних. (Визначення незбалансованого: Не має однакової кількості спостережень у кожній з верств). Якщо дані збалансовані, тестування помилок типу I, II та III дає абсолютно однакові результати.

Отже, що відбувається при незбалансованості даних?

Розглянемо модель, яка включає два фактори A і B; Тому існують два основні наслідки та взаємодія, AB. SS (A, B, AB) вказує на повну модель SS (A, B) вказує на модель без взаємодії. SS (B, AB) вказує модель, яка не враховує впливу фактора А тощо.

Це позначення зараз має сенс. Просто майте це на увазі.

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 тестів на значущість основного ефекту А після В і В після А. Чому немає СС (АВ | В, А)? Caveat - метод 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 дають однакові результати. Я сподіваюся, що це допомагає!

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.