Regresi berganda multivariat dalam R

68

Saya memiliki 2 variabel dependen (DV) yang masing-masing skornya mungkin dipengaruhi oleh himpunan 7 variabel independen (IV). DVs adalah kontinu, sedangkan himpunan IV terdiri dari campuran variabel kode kontinu dan biner. (Dalam kode di bawah ini, variabel kontinu ditulis dalam huruf besar dan variabel biner dalam huruf kecil.)

Tujuan dari penelitian ini adalah untuk mengungkap bagaimana DVs ini dipengaruhi oleh variabel IVs. Saya mengusulkan model multivariate multiple regression (MMR) berikut:

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

Untuk menginterpretasikan hasil, saya memanggil dua pernyataan:

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

Output dari kedua panggilan disisipkan di bawah dan sangat berbeda. Adakah yang bisa menjelaskan pernyataan mana di antara keduanya yang harus dipilih untuk merangkum hasil MMR dengan benar, dan mengapa? Setiap saran akan sangat dihargai.

Output menggunakan summary(manova(my.model))pernyataan:

> 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

Output menggunakan Manova(my.model)pernyataan:

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

Jawaban:

78

Secara singkat menyatakan, ini karena dasar-R ini manova(lm())menggunakan perbandingan model sekuensial untuk disebut Tipe I jumlah kuadrat, sedangkan car's Manova()secara default menggunakan perbandingan model untuk jumlah Tipe II dari kotak.

Saya berasumsi Anda sudah terbiasa dengan pendekatan perbandingan model untuk ANOVA atau analisis regresi. Pendekatan ini mendefinisikan tes-tes ini dengan membandingkan model terbatas (sesuai dengan hipotesis nol) dengan model tidak terbatas (sesuai dengan hipotesis alternatif). Jika Anda tidak terbiasa dengan ide ini, saya sarankan Maxwell & Delaney yang sangat baik "Merancang eksperimen dan menganalisis data" (2004).

Untuk tipe I SS, model terbatas dalam analisis regresi untuk prediktor pertama Anda cadalah model-nol yang hanya menggunakan istilah absolut:, di lm(Y ~ 1)mana Ydalam kasus Anda adalah DV multivarian yang ditentukan oleh cbind(A, B). Model yang tidak dibatasi kemudian menambahkan prediktor c, yaitu lm(Y ~ c + 1).

Untuk tipe II SS, model tidak terbatas dalam analisis regresi untuk prediktor pertama Anda cadalah model lengkap yang mencakup semua prediktor kecuali untuk interaksinya, yaitu lm(Y ~ c + d + e + f + g + H + I),. Model terbatas menghilangkan prediktor cdari model tidak terbatas, yaitu lm(Y ~ d + e + f + g + H + I),.

Karena kedua fungsi bergantung pada perbandingan model yang berbeda, keduanya menghasilkan hasil yang berbeda. Pertanyaan mana yang lebih disukai sulit untuk dijawab - itu benar-benar tergantung pada hipotesis Anda.

Berikut ini mengasumsikan Anda terbiasa dengan bagaimana statistik uji multivariat seperti Pillai-Bartlett Trace dihitung berdasarkan pada model nol, model lengkap, dan pasangan model terbatas-tidak terbatas. Untuk singkatnya, saya hanya mempertimbangkan prediktor cdan H, dan hanya menguji 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                                           

Sebagai perbandingan, hasil dari car's Manova()fungsi menggunakan SS tipe 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 ***

Sekarang verifikasi kedua hasil secara manual. Bangun matriks desain terlebih dahulu dan bandingkan dengan matriks desain R.X

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

Sekarang tentukan proyeksi orthogonal untuk model lengkap ( , menggunakan semua prediktor). Ini memberi kita matriks .Pf=X(XX)1XW=Y(IPf)Y

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

Terbatas dan tak terbatas model untuk SS tipe I ditambah proyeksi mereka dan , yang mengarah ke matriks .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

Terbatas dan tak terbatas model untuk SS tipe II ditambah proyeksi mereka dan , yang mengarah ke matriks .PrIPuIIBII=Y(PuIIPPrII)Y

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

Pillai-Bartlett jejak untuk kedua jenis SS: jejak .(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

Perhatikan bahwa perhitungan untuk proyeksi orthogonal meniru rumus matematika, tetapi merupakan ide buruk secara numerik. Seseorang harus benar-benar menggunakan QR-decompositions atau SVD crossprod()sebagai gantinya.

caracal
sumber
3
+1 saya yang sangat besar untuk respons yang digambarkan dengan baik ini.
chl
Saya bertanya-tanya bahwa meskipun menggunakan lmfungsi saya melakukan regresi multivariat hanya dengan menentukan lebih dari satu variabel respose di dalam lmfungsi. Saya telah belajar bahwa dengan menggunakan lmfungsi ketika data saya sebenarnya multivariat memberikan hasil yang salah untuk kesalahan standar. Tetapi dalam hal ini my.model <- lm(cbind(A, B) ~ c + d + e + f + g + H + I); akan vcov(my.model )meremehkan kesalahan standar atau lmakan secara cerdas menyesuaikan korelasi antara variabel dependen?
pengguna 31466
6

Yah, saya masih tidak punya cukup poin untuk mengomentari jawaban sebelumnya dan itulah sebabnya saya menulisnya sebagai jawaban terpisah, jadi tolong maafkan saya. (Jika memungkinkan tolong dorong saya ke atas 50 poin rep;)

Jadi, inilah 2 sen: Pengujian kesalahan tipe I, II dan III pada dasarnya adalah variasi karena data tidak seimbang. (Defn Tidak Seimbang: Tidak memiliki jumlah pengamatan yang sama di setiap strata). Jika data seimbang Pengujian kesalahan Tipe I, II dan III memberikan hasil yang sama persis.

Jadi apa yang terjadi ketika data tidak seimbang?

Pertimbangkan model yang mencakup dua faktor A dan B; Oleh karena itu ada dua efek utama, dan interaksi, AB. SS (A, B, AB) menunjukkan model penuh SS (A, B) menunjukkan model tanpa interaksi. SS (B, AB) menunjukkan model yang tidak memperhitungkan efek dari faktor A, dan seterusnya.

Notasi ini sekarang masuk akal. Ingatlah itu.

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)

Tipe I, juga disebut "kuadrat" jumlah kuadrat:

1) SS(A) for factor A.

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

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

Jadi kami memperkirakan efek utama dari A pertama mereka, efek dari B diberikan A, dan kemudian memperkirakan interaksi AB diberikan A dan B (Di sinilah menjadi data yang tidak seimbang, perbedaan menendang. Ketika kami memperkirakan efek utama pertama dan kemudian utama dari yang lain dan lalu interaksi dalam "urutan")

Tipe II:

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

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

Tipe II menguji signifikansi efek utama A setelah B dan B setelah A. Mengapa tidak ada SS (AB | B, A)? Peringatan adalah bahwa metode tipe II dapat digunakan hanya ketika kita sudah menguji interaksi menjadi tidak signifikan. Mengingat bahwa tidak ada interaksi (SS (AB | B, A) tidak signifikan) tes tipe II memiliki kekuatan yang lebih baik daripada tipe III

Tipe III:

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

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

Jadi kami menguji interaksi selama tipe II dan interaksi signifikan. Sekarang kita perlu menggunakan tipe III karena memperhitungkan istilah interaksi.

Seperti yang sudah dikatakan @caracal, Ketika data seimbang, faktor-faktornya ortogonal, dan tipe I, II dan III semuanya memberikan hasil yang sama. Saya harap ini membantu !

Pengungkapan: Sebagian besar bukan pekerjaan saya sendiri. Saya menemukan halaman luar biasa ini ditautkan dan terasa seperti merebusnya lebih jauh untuk membuatnya lebih sederhana.

Mandar
sumber