การถดถอยหลายตัวแปรหลายตัวแปรใน R


68

ฉันมี 2 ตัวแปรตาม (DVs) ซึ่งแต่ละคะแนนอาจได้รับอิทธิพลจากชุดของตัวแปรอิสระ 7 ตัว (IVs) DV เป็นแบบต่อเนื่องในขณะที่ชุดของ IV ประกอบด้วยการผสมผสานของตัวแปรแบบต่อเนื่องและแบบไบนารี (ในรหัสด้านล่างตัวแปรต่อเนื่องจะเขียนด้วยตัวอักษรตัวพิมพ์ใหญ่และตัวแปรไบนารีในตัวอักษรตัวพิมพ์เล็ก)

จุดประสงค์ของการศึกษาคือการเปิดเผยว่า DVs เหล่านี้ได้รับอิทธิพลจากตัวแปร 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 

คำตอบ:


78

กล่าวสั้น ๆ นี้เป็นเพราะฐานของ R manova(lm())ใช้การเปรียบเทียบรูปแบบตามลำดับสำหรับสิ่งที่เรียกว่าประเภทผลรวมของสแควร์ในขณะที่car's Manova()โดยค่าเริ่มต้นใช้การเปรียบเทียบแบบจำลองสำหรับ Type II ผลรวมของสี่เหลี่ยม

ฉันถือว่าคุณคุ้นเคยกับวิธีการเปรียบเทียบแบบจำลองกับ ANOVA หรือการวิเคราะห์การถดถอย วิธีการนี้จะกำหนดการทดสอบเหล่านี้โดยการเปรียบเทียบแบบจำลองที่ จำกัด (สอดคล้องกับสมมติฐานว่าง) กับแบบจำลองที่ไม่ จำกัด (สอดคล้องกับสมมติฐานทางเลือก) หากคุณไม่คุ้นเคยกับแนวคิดนี้ฉันขอแนะนำ Maxwell & Delaney ที่ยอดเยี่ยมของ "การออกแบบการทดลองและการวิเคราะห์ข้อมูล" (2004)

สำหรับประเภทที่เอสเอสในรูปแบบที่ถูก จำกัด ในการวิเคราะห์การถดถอยสำหรับการทำนายครั้งแรกของคุณcเป็นโมฆะเป็นรูปแบบที่ใช้เฉพาะในระยะที่แน่นอน: lm(Y ~ 1)ซึ่งYในกรณีของคุณจะเป็น DV cbind(A, B)หลายตัวแปรที่กำหนดโดย รูปแบบไม่ จำกัด แล้วเพิ่มทำนายคือclm(Y ~ c + 1)

สำหรับประเภทที่สองเอสเอสในรูปแบบที่ไม่ จำกัด ในการวิเคราะห์การถดถอยสำหรับการทำนายครั้งแรกของคุณเป็นแบบเต็มรูปแบบซึ่งรวมถึงการพยากรณ์ทั้งหมดยกเว้นสำหรับการติดต่อของพวกเขาคือc lm(Y ~ c + d + e + f + g + H + I)รูปแบบที่ถูก จำกัด เอาทำนายcจากแบบจำลองที่ไม่ จำกัด lm(Y ~ d + e + f + g + H + I)เช่น

เนื่องจากฟังก์ชั่นทั้งสองนั้นขึ้นอยู่กับการเปรียบเทียบแบบจำลองที่แตกต่างกันจึงนำไปสู่ผลลัพธ์ที่แตกต่างกัน คำถามที่ตอบยากกว่าจะตอบ - ขึ้นอยู่กับสมมติฐานของคุณ

สิ่งต่อไปนี้จะถือว่าคุณคุ้นเคยกับการคำนวณสถิติการทดสอบหลายตัวแปรเช่น Pillai-Bartlett Trace โดยคำนวณจากโมเดลแบบโมฆะแบบเต็มรูปแบบและแบบจำลองที่ไม่ จำกัด จำนวนคู่ เพื่อความกระชับฉันเพียงพิจารณาพยากรณ์cและและการทดสอบเฉพาะสำหรับHc

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

ตอนนี้ตรวจสอบผลทั้งสองด้วยตนเอง สร้างเมทริกซ์การออกแบบก่อนและเปรียบเทียบกับเมทริกซ์การออกแบบของ RX

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

ตอนนี้กำหนดการฉายฉากสำหรับแบบจำลองเต็มรูปแบบ (โดยใช้ตัวทำนายทั้งหมด) นี้จะช่วยให้เราเมทริกซ์YPf=X(XX)1XW=Y(IPf)Y

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

จำกัด และไม่ จำกัด รุ่นสำหรับประเภทเอสเอสผมบวกกับการคาดการณ์ของพวกเขาและที่นำไปสู่ matrixYPrIPuIBI=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

จำกัด และรูปแบบที่ไม่ จำกัด สำหรับเอสเอสชนิดที่สองบวกประมาณการของพวกเขาและนำไปสู่การเมทริกซ์YPrIPuIIBII=Y(PuIIPPrII)Y

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

พีไล-Bartlett ร่องรอยสำหรับทั้งสองประเภทของเอสเอส: ร่องรอยของB(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-decompositions หรือ SVD ร่วมกับcrossprod()แทน


3
+1 ที่ยิ่งใหญ่ของฉันสำหรับการตอบสนองที่แสดงออกมาอย่างนี้
chl

ฉันสงสัยว่าถึงแม้ว่าการใช้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: การทดสอบข้อผิดพลาด Type 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 จากนั้นประมาณปฏิสัมพันธ์ AB ที่ให้ไว้ A และ B (นี่คือที่ที่ข้อมูลไม่สมดุล, ความแตกต่างเตะในขณะที่เราประเมินผลหลักก่อนแล้วหลักอื่น ๆ และ จากนั้นปฏิสัมพันธ์ใน "ลำดับ")

ประเภทที่สอง:

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

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

การทดสอบ Type II มีนัยสำคัญของผลกระทบหลักของ A หลังจาก B และ B หลังจาก A ทำไมจึงไม่มี SS (AB | B, A) Caveat เป็นวิธีการแบบที่สองที่สามารถใช้ได้เฉพาะเมื่อเราได้ทดสอบแล้วว่าการโต้ตอบนั้นไม่มีนัยสำคัญ เนื่องจากไม่มีการทำงานร่วมกัน (SS (AB | B, A) ไม่มีนัยสำคัญ) การทดสอบแบบ II มีอำนาจดีกว่าแบบ III

ประเภทที่สาม:

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

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

ดังนั้นเราจึงทดสอบการโต้ตอบระหว่าง type II และการโต้ตอบอย่างมีนัยสำคัญ ตอนนี้เราจำเป็นต้องใช้ type III เนื่องจากคำนึงถึงคำศัพท์ที่ใช้ในการโต้ตอบ

ดังที่ @ caracal ได้กล่าวไปแล้วเมื่อข้อมูลมีความสมดุลปัจจัยจะเป็นแบบฉากและประเภทที่ 1, II และ III ล้วนให้ผลลัพธ์เหมือนกัน ฉันหวังว่านี่จะช่วยได้ !

การเปิดเผยข้อมูล: ส่วนใหญ่ไม่ใช่งานของฉันเอง ฉันพบหน้าเว็บที่ยอดเยี่ยมนี้เชื่อมโยงกัน และรู้สึกเหมือนกำลังต้มมันลงไปอีกเพื่อให้ง่ายขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.