Berurusan dengan multikolinieritas

13

Saya telah belajar bahwa dengan menggunakan vif()metode carpaket, kita dapat menghitung tingkat multikolinieritas input dalam suatu model. Dari wikipedia , jika vifnilainya lebih besar dari 5itu 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, lbdan tbmenderita 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 ubdan 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^2nilai dan juga tidak ada banyak perbedaan dalam kesalahan dari satu-keluar-keluar tes CV di kedua kasus di atas.

Pertanyaan saya adalah:

  1. Apakah boleh untuk menghindari masalah multikolinearitas dengan mengambil interaksi seperti yang ditunjukkan di atas?

  2. Apakah ada cara yang lebih baik untuk menyajikan masalah multikolinieritas dibandingkan dengan hasil metode vif di atas.

Tolong berikan saya saran Anda.

Terima kasih.

samarasa
sumber
Apakah model Anda log-log regresi (interaksi sebagai batasan sama ok dengan mereka)? Di wiki ada artikel yang lebih lengkap mengenai multikolinearitas masalah en.wikipedia.org/wiki/Multicollinearity Juga saya sarankan untuk mengeksplorasi tag multikolinearitas di situs ini, tampaknya menjadi pertanyaan yang sering diajukan.
Dmitrij Celov
@ Dmitrij Celov: Terima kasih. Tidak, model saya adalah regresi linier sederhana tanpa log ...
samarasa

Jawaban:

11

Anda tampaknya memasukkan istilah interaksi ub:lb, tetapi tidak ubdan lbdiri 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-bijaksana ubdan lb.

VIFj hanya mana adalah nilai ketika Anda menjalankan regresi dengan variabel prediktor asli Anda sebagai kriteria yang diprediksi oleh semua prediktor yang tersisa (juga merupakan elemen diagonal ke- dari , kebalikan dari matriks korelasi dari prediktor). Nilai VIF 50 dengan demikian menunjukkan bahwa Anda mendapatkan dari 0,98 ketika memprediksi dengan prediktor lain, menunjukkan bahwa hampir sepenuhnya berlebihan (sama untuk , dari 0,97).11Rj2Rj2R2jjRx1R2ubublbR2

Saya akan mulai melakukan semua korelasi berpasangan antara prediktor, dan menjalankan regresi yang disebutkan sebelumnya untuk melihat variabel mana yang memprediksi ubdan lbuntuk melihat apakah redundansi mudah dijelaskan. Jika demikian, Anda dapat menghapus prediktor yang berlebihan. Anda juga dapat melihat regresi ridge ( lm.ridge()dari paket MASSdalam 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.XtXXκλmaxλminλmaxλmin0XtXkappa(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)))

caracal
sumber
Mengenai catatan pertama: untuk model multivarian, sepertinya tidak masalah untuk meninggalkan hanya istilah interaksi, karena yang terakhir hanya berarti Anda membatasi koefisien untuk 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 balogub+aloglb=alogublbublb
Dmitrij Celov
@ Dmitrij: Tidak, ub + lb + sb = 100.
samarasa
Apakah ada representasi grafis yang bagus untuk multikolinieritas? Tolong sarankan saya jika ada metode dalam R untuk ini.
samarasa
2
pairs()scatterplot3dκ2perturb
1

Anda juga harus mempertimbangkan nilai-P selama pertimbangan variabel.

  1. Jika P-Value sangat rendah (p <0,05) maka dan VIF tinggi (> 5) maka mungkin Anda harus mempertimbangkan variabel tidak penting lainnya. Dan membangun kembali model Anda.
  2. Jika Anda memiliki P-value dan VIF keduanya tinggi maka variabel ini akan menjadi tidak signifikan.
Manish Kumar
sumber