Hồi quy đa biến trong R


68

Tôi có 2 biến phụ thuộc (DV) mỗi điểm có thể bị ảnh hưởng bởi tập hợp 7 biến độc lập (IV). DV là liên tục, trong khi bộ IV bao gồm một hỗn hợp các biến được mã hóa liên tục và nhị phân. (Trong mã bên dưới các biến liên tục được viết bằng chữ in hoa và biến nhị phân bằng chữ in thường.)

Mục đích của nghiên cứu là khám phá cách các DV này bị ảnh hưởng bởi các biến IV. Tôi đã đề xuất mô hình hồi quy đa biến (MMR) sau đây:

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

Để giải thích kết quả tôi gọi hai câu:

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

Đầu ra từ cả hai cuộc gọi được dán bên dưới và khác nhau đáng kể. Ai đó có thể vui lòng giải thích tuyên bố nào trong số hai nên được chọn để tóm tắt chính xác kết quả của MMR không, và tại sao? Bất kỳ đề nghị sẽ được đánh giá rất cao.

Đầu ra sử dụng summary(manova(my.model))câu lệnh:

> 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

Đầu ra sử dụng Manova(my.model)câu lệnh:

> 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 

Câu trả lời:


78

Tóm lại tuyên bố, đây là bởi vì cơ sở-R manova(lm())sử dụng so sánh mô hình tuần tự cho Loại cái gọi là tôi tổng bình phương, trong khi car's Manova()theo mặc định sử dụng so sánh mô hình cho Type II tổng bình phương.

Tôi giả sử bạn đã quen thuộc với phương pháp so sánh mô hình với ANOVA hoặc phân tích hồi quy. Cách tiếp cận này xác định các thử nghiệm này bằng cách so sánh một mô hình bị hạn chế (tương ứng với giả thuyết null) với một mô hình không bị hạn chế (tương ứng với giả thuyết thay thế). Nếu bạn không quen với ý tưởng này, tôi khuyên bạn nên sử dụng "Thiết kế thí nghiệm và phân tích dữ liệu" tuyệt vời của Maxwell & Delaney (2004).

Đối với SS loại I, mô hình bị hạn chế trong phân tích hồi quy cho dự đoán đầu tiên của bạn clà mô hình null chỉ sử dụng thuật ngữ tuyệt đối : lm(Y ~ 1), Ytrong trường hợp của bạn sẽ là DV đa biến được xác định bởi cbind(A, B). Các mô hình không bị hạn chế sau đó thêm dự đoán c, tức là lm(Y ~ c + 1).

Đối với SS loại II, mô hình không bị giới hạn trong phân tích hồi quy cho dự đoán đầu tiên của bạn clà mô hình đầy đủ bao gồm tất cả các dự đoán ngoại trừ tương tác của chúng, nghĩa là , lm(Y ~ c + d + e + f + g + H + I). Mô hình bị hạn chế loại bỏ yếu tố dự đoán ckhỏi mô hình không bị hạn chế, nghĩa là , lm(Y ~ d + e + f + g + H + I).

Vì cả hai chức năng dựa trên so sánh mô hình khác nhau, chúng dẫn đến kết quả khác nhau. Câu hỏi nào thích hợp hơn là khó trả lời - nó thực sự phụ thuộc vào giả thuyết của bạn.

Điều gì sau đây giả định rằng bạn quen thuộc với cách thống kê kiểm tra đa biến như Pillai-Bartlett Trace được tính toán dựa trên mô hình null, mô hình đầy đủ và cặp mô hình bị hạn chế. Để cho ngắn gọn, tôi chỉ xem xét các yếu tố dự đoán cH, và chỉ thử nghiệm cho 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                                           

Để so sánh, kết quả từ car's Manova()chức năng sử dụng SS loại 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 ***

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

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

PrIPuIIBII=Y(PuIIPPrII)Y

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

(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

Lưu ý rằng các tính toán cho các phép chiếu trực giao bắt chước công thức toán học, nhưng là một ý tưởng tồi về mặt số lượng. crossprod()Thay vào đó, người ta thực sự nên sử dụng phân tách QR hoặc SVD kết hợp với .


3
+1 rất lớn của tôi cho phản hồi minh họa độc đáo này.
chl

Tôi tự hỏi rằng mặc dù sử dụng lmhàm nhưng tôi chỉ tiến hành hồi quy đa biến bằng cách chỉ định nhiều hơn một biến hô hấp bên trong lmhàm. Tôi đã học được rằng bằng cách sử dụng lmhàm khi dữ liệu của tôi thực sự là đa biến cho kết quả sai cho lỗi tiêu chuẩn. Nhưng trong trường hợp my.model <- lm(cbind(A, B) ~ c + d + e + f + g + H + I); này sẽ vcov(my.model )đánh giá thấp lỗi tiêu chuẩn hay lmsẽ điều chỉnh một cách thông minh mối tương quan giữa các biến phụ thuộc?
người dùng 31466

6

Chà, tôi vẫn không có đủ điểm để bình luận về câu trả lời trước đó và đó là lý do tại sao tôi viết nó như một câu trả lời riêng biệt, vì vậy xin hãy tha thứ cho tôi. (Nếu có thể xin vui lòng đẩy tôi qua 50 điểm đại diện;)

Vì vậy, đây là 2cents: Kiểm tra lỗi loại I, II và III về cơ bản là các biến thể do dữ liệu không cân bằng. (Defn Unbalbal: Không có số lượng quan sát bằng nhau trong mỗi tầng). Nếu dữ liệu được cân bằng, kiểm tra lỗi Loại I, II và III cho kết quả chính xác như nhau.

Vậy điều gì xảy ra khi dữ liệu bị mất cân bằng?

Hãy xem xét một mô hình bao gồm hai yếu tố A và B; do đó có hai hiệu ứng chính và tương tác AB. SS (A, B, AB) biểu thị mô hình SS đầy đủ (A, B) biểu thị mô hình không có tương tác. SS (B, AB) chỉ ra mô hình không tính đến các hiệu ứng từ yếu tố A, v.v.

Ký hiệu này bây giờ có ý nghĩa. Chỉ cần ghi nhớ nó.

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)

Loại I, còn được gọi là tổng bình phương "tuần tự":

1) SS(A) for factor A.

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

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

Vì vậy, chúng tôi ước tính tác động chính của A trước tiên, hiệu ứng của B đã cho A và sau đó ước tính tương tác AB đã cho A và B (Đây là nơi dữ liệu bị mất cân bằng, sự khác biệt bắt đầu. Vì chúng tôi ước tính tác động chính trước rồi đến chính khác và sau đó tương tác theo một "trình tự")

Loại II:

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

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

Loại II kiểm tra tầm quan trọng của tác dụng chính của A sau B và B sau A. Tại sao không có SS (AB | B, A)? Hãy cẩn thận là phương pháp loại II chỉ có thể được sử dụng khi chúng tôi đã kiểm tra sự tương tác là không đáng kể. Cho rằng không có tương tác (SS (AB | B, A) không đáng kể) thử nghiệm loại II có sức mạnh tốt hơn loại III

Loại III:

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

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

Vì vậy, chúng tôi đã thử nghiệm sự tương tác trong loại II và tương tác là rất đáng kể. Bây giờ chúng ta cần sử dụng loại III vì nó tính đến thuật ngữ tương tác.

Như @caracal đã nói, Khi dữ liệu được cân bằng, các yếu tố là trực giao và các loại I, II và III đều cho kết quả tương tự. Tôi hi vọng cái này giúp được !

Tiết lộ: Hầu hết đó không phải là công việc của riêng tôi. Tôi tìm thấy trang tuyệt vời này được liên kết và cảm thấy như đun nó xuống hơn nữa để làm cho nó đơn giản hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.