Saya telah belajar bahwa dengan menggunakan vif()
metode car
paket, kita dapat menghitung tingkat multikolinieritas input dalam suatu model. Dari wikipedia , jika vif
nilainya lebih besar dari 5
itu kita dapat mempertimbangkan bahwa input tersebut menderita masalah multikolinieritas. Sebagai contoh, saya telah mengembangkan model regresi linier menggunakan lm()
metode dan vif()
memberikan sebagai berikut. Seperti yang kita lihat, masukan ub
, lb
dan tb
menderita multikolinearitas.
vif(lrmodel)
tb ub lb ma ua mb sa sb
7.929757 50.406318 30.826721 1.178124 1.891218 1.364020 2.113797 2.357946
Untuk menghindari masalah multikolinieritas dan dengan demikian untuk membuat model saya lebih kuat, saya telah mengambil interaksi antara ub
dan lb
, dan sekarang tabel vif model baru adalah sebagai berikut:
tb ub:lb ma mb sa sb ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218
Tidak ada banyak perbedaan dalam R^2
nilai dan juga tidak ada banyak perbedaan dalam kesalahan dari satu-keluar-keluar tes CV di kedua kasus di atas.
Pertanyaan saya adalah:
Apakah boleh untuk menghindari masalah multikolinearitas dengan mengambil interaksi seperti yang ditunjukkan di atas?
Apakah ada cara yang lebih baik untuk menyajikan masalah multikolinieritas dibandingkan dengan hasil metode vif di atas.
Tolong berikan saya saran Anda.
Terima kasih.
sumber
Jawaban:
Anda tampaknya memasukkan istilah interaksi
ub:lb
, tetapi tidakub
danlb
diri mereka sendiri sebagai prediktor terpisah. Ini akan melanggar apa yang disebut "prinsip marginalitas" yang menyatakan bahwa istilah tingkat tinggi hanya boleh menyertakan variabel yang ada dalam istilah tingkat rendah ( Wikipedia sebagai permulaan ). Secara efektif, Anda sekarang termasuk prediktor yang hanya produk elemen-bijaksanaub
danlb
.ub
ub
lb
Saya akan mulai melakukan semua korelasi berpasangan antara prediktor, dan menjalankan regresi yang disebutkan sebelumnya untuk melihat variabel mana yang memprediksi
ub
danlb
untuk melihat apakah redundansi mudah dijelaskan. Jika demikian, Anda dapat menghapus prediktor yang berlebihan. Anda juga dapat melihat regresi ridge (lm.ridge()
dari paketMASS
dalam R).Diagnosis multikolinieritas yang lebih maju menggunakan struktur nilai eigen mana adalah matriks desain regresi (yaitu, semua prediktor sebagai vektor-kolom). Kondisi adalah mana dan adalah yang terbesar dan terkecil ( ) eigen dari . Di R, Anda dapat menggunakan , di mana model biasanya menggunakan variabel standar.XtX X κ λm a x√λm i n√ λm a x λm i n ≠ 0 XtX
kappa(lm(<formula>))
lm()
Secara geometris, memberi Anda gambaran tentang bentuk awan data yang dibentuk oleh para prediktor. Dengan 2 prediktor, scatterplot mungkin terlihat seperti elips dengan 2 sumbu utama. kemudian memberi tahu Anda bagaimana "pipih" elips itu, yakni ukuran untuk rasio panjang sumbu terbesar dengan panjang sumbu utama terkecil. Dengan 3 prediktor, Anda mungkin memiliki bentuk cerutu, dan 3 sumbu utama. Semakin "rata" awan data Anda ke beberapa arah, semakin banyak variabel yang digunakan saat diambil bersamaan.κ κ
Ada beberapa aturan praktis untuk nilai tidak kritis (saya mendengar kurang dari 20). Tetapi maklum tidak berubah di bawah transformasi data yang hanya mengubah unit variabel - seperti standardisasi. Ini tidak seperti VIF: akan memberi Anda hasil yang sama (selama tidak ada istilah multiplikasi dalam model), tetapi dan hampir pasti akan berbeda.κ κ
vif(lm(y ~ x1 + x2))
vif(lm(scale(y) ~ scale(x1) + scale(x2)))
kappa(lm(y ~ x1 + x2))
kappa(lm(scale(y) ~ scale(x1) + scale(x2)))
sumber
ub
lb
( ) , tetapi untuk model regresi linier umum itu seperti yang Anda tunjukkan (+1) ^ _ ^ Ngomong-ngomong - batas bawah, ub - batas atas ?! jika demikian membuat perbedaan dari dua , mungkin itu adalah transformasi yang lebih baik. u b - l bpairs()
scatterplot3d
perturb
Anda juga harus mempertimbangkan nilai-P selama pertimbangan variabel.
sumber