Bagaimana cara menangani multikolinieritas saat melakukan pemilihan variabel?

28

Saya memiliki dataset dengan 9 variabel independen kontinu. Saya mencoba untuk memilih antara variabel-variabel ini sesuai model untuk persentase tunggal (tergantung) variabel, Score. Sayangnya, saya tahu akan ada kolinearitas yang serius antara beberapa variabel.

Saya sudah mencoba menggunakan stepAIC()fungsi dalam R untuk pemilihan variabel, tetapi metode itu, anehnya, tampaknya sensitif terhadap urutan variabel yang tercantum dalam persamaan ...

Ini kode R saya (karena ini adalah data persentase, saya menggunakan transformasi logit untuk Skor):

library(MASS)
library(car)

data.tst = read.table("data.txt",header=T)
data.lm = lm(logit(Score) ~ Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 +
             Var8 + Var9, data = data.tst)

step = stepAIC(data.lm, direction="both")
summary(step)

Untuk beberapa alasan, saya menemukan bahwa variabel-variabel yang terdaftar di awal persamaan akhirnya dipilih oleh stepAIC()fungsi, dan hasilnya dapat dimanipulasi dengan mendaftar, misalnya,Var9 pertama (mengikuti tilde).

Apa cara yang lebih efektif (dan kurang kontroversial) dalam pemasangan model di sini? Saya sebenarnya tidak mati-matian dalam menggunakan regresi linier: satu-satunya hal yang saya inginkan adalah dapat memahami mana dari 9 variabel yang benar-benar mendorong variasi dalam Scorevariabel. Lebih disukai, ini akan menjadi beberapa metode yang memperhitungkan potensi kuat untuk kolinearitas dalam 9 variabel ini.

Julie
sumber
6
Collinearity akan berarti, namun Anda melakukan analisis, bahwa pada dasarnya tidak mungkin untuk menentukan apakah satu variabel 'mendorong' variasi lebih atau kurang dari variabel yang sangat collinear. Dengan mengingat batasan ini, Anda dapat mencoba laso sebagai alat untuk memilih sejumlah kecil variabel yang diprediksi secara optimal, kemudian melaporkan serangkaian variabel yang dipilihnya dan variabel-variabel dengan set yang sangat collinear. Laso yang dikelompokkan adalah pilihan lain.
tamu
4
@guest: Laso tidak bekerja dengan baik di hadapan collinearity yang kuat, terutama yang berkaitan dengan masalah pemilihan model.
kardinal
2
@ cardinal, laso tidak apa-apa tetapi jika beberapa variabel berkorelasi itu akan cenderung untuk memilih hanya satu dari mereka, itulah sebabnya saya menyarankan melihat set variabel yang sangat collinear. Memutuskan untuk menggunakan sesuatu yang lebih kompleks daripada 'standar' ini akan membutuhkan evaluasi utilitas, dan gagasan yang lebih kuat tentang tujuan model ini.
Tamu
2
Anda mungkin ingin melihat fungsi bicreg {package BMA}. Perhatikan bahwa Anda memerlukan dataset kasus lengkap agar dapat berfungsi dengan baik. Saya merasa sangat berguna untuk pemilihan model.
Dominic Comtois
1
@guest: Ya, itu sangat tergantung pada cara di mana parameter regularisasi dipilih. Sebenarnya, dalam rezim tertentu, laso memiliki (dapat dibuktikan) kecenderungan untuk lebih pilih parameter. OP telah bertanya "satu-satunya hal yang saya inginkan adalah dapat memahami yang mana dari 9 variabel yang benar-benar mendorong variasi dalam Scorevariabel", yang merupakan kalimat yang mungkin terlalu saya fokuskan. Di hadapan kolinearitas yang kuat, laso tidak akan membantu dengan itu, setidaknya dalam interpretasi yang lebih ketat dari komentar OP.
kardinal

Jawaban:

14

Pertama, sumber yang sangat bagus untuk masalah ini adalah T. Keith, Regresi Berganda dan Beyond. Ada banyak bahan dalam buku ini tentang pemodelan jalur dan pemilihan variabel dan saya pikir Anda akan menemukan jawaban lengkap untuk pertanyaan Anda di sana.

Salah satu cara untuk mengatasi multikolinearitas adalah dengan memusatkan prediktor, yaitu mengurangi rata-rata satu seri dari setiap nilai. Regresi Ridge juga dapat digunakan ketika data sangat kolinear. Akhirnya, regresi sekuensial dapat membantu dalam memahami hubungan sebab-akibat antara para prediktor, bersama dengan menganalisis urutan waktu dari peristiwa-peristiwa prediktor.

Apakah semua 9 variabel menunjukkan kolinearitas? Untuk diagnosis Anda dapat menggunakan faktor inflasi varians Cohen 2003. Nilai VIF> = 10 menunjukkan collinearity tinggi dan kesalahan standar meningkat. Saya mengerti Anda lebih tertarik pada hubungan sebab akibat antara prediktor dan hasil. Jika tidak, multikolinieritas tidak dianggap sebagai masalah serius untuk prediksi, karena Anda dapat mengonfirmasi dengan memeriksa MAE dari data sampel terhadap model yang dibuat dengan menambahkan prediktor Anda satu per satu. Jika prediktor Anda memiliki kekuatan prediksi marjinal, Anda akan menemukan bahwa MAE menurun bahkan di hadapan model multikolinieritas.

Robert Kubrick
sumber
16

Karena sangat sulit untuk menentukan variabel mana yang akan dijatuhkan, seringkali lebih baik untuk tidak menjatuhkan variabel. Dua cara untuk melanjutkan sepanjang garis ini adalah (1) menggunakan metode reduksi data (misalnya, pengelompokan variabel atau komponen utama) dan memasukkan skor ringkasan ke dalam model, bukan variabel individu dan (2) menempatkan semua variabel dalam model tetapi tidak menguji untuk efek dari satu variabel yang disesuaikan dengan efek dari variabel yang bersaing. Untuk (2), tes chunk dari variabel yang bersaing kuat karena variabel collinear bergabung dalam keseluruhan tes multi-derajat kebebasan asosiasi, daripada bersaing satu sama lain seperti ketika Anda menguji variabel secara individual.

Frank Harrell
sumber
dapatkah kamu dengan mudahnya menjelaskanand put summary scores into the model
SIslam
1
Catatan Kursus Saya di biostat.mc.vanderbilt.edu/rms masuk ke detail
Frank Harrell
1

Jika Anda ingin melakukan pemilihan variabel dengan adanya collinearity tinggi, saya dapat merekomendasikan paket l0ara , yang cocok dengan L0 yang dikenakan sanksi GLM menggunakan prosedur punggungan adaptif berulang yang berulang-ulang. . Karena metode ini pada akhirnya didasarkan pada regresi teregulasi ridge, metode ini dapat menangani kolinearitas dengan sangat baik, dan dalam simulasi saya menghasilkan lebih sedikit false positive sementara masih memberikan kinerja prediksi yang bagus juga dibandingkan dengan misalnya LASSO, jaring elastis atau LASSO adaptif. Atau, Anda juga bisa mencoba paket L0Learndengan kombinasi penalti L0 dan L2. Hukuman L0 kemudian mendukung sparsity (yaitu model kecil) sementara hukuman L2 mengatur collinearity. Jaring elastis (yang menggunakan kombinasi penalti L1 dan L2) juga sering disarankan, tetapi dalam pengujian saya ini menghasilkan cara yang lebih positif palsu, ditambah koefisien akan sangat bias. Bias ini dapat Anda singkirkan jika Anda menggunakan metode hukuman L0 sebagai gantinya (alias subset terbaik) - ini disebut penaksir oracle, yang secara bersamaan mendapatkan koefisien parameter yang konsisten dan tidak bias. Parameter regularisasi dalam semua metode ini perlu dioptimalkan melalui validasi silang untuk memberikan kinerja prediksi sampel yang optimal. Jika Anda juga ingin mendapatkan tingkat signifikansi dan interval kepercayaan pada parameter Anda, maka Anda juga dapat melakukan ini melalui bootstrap nonparametrik.

Algoritma adaptif ridge iteratif l0ara(kadang-kadang disebut sebagai ridge adaptif rusak), seperti jaring elastis, memiliki efek pengelompokan, yang akan menyebabkannya untuk memilih variabel yang sangat berkorelasi dalam kelompok segera setelah mereka akan memasuki model Anda. Ini masuk akal - misalnya jika Anda memiliki dua variabel hampir collinear dalam model Anda, itu akan membagi efeknya secara merata pada keduanya.

Jika Anda menganalisis data proporsi, Anda lebih baik menggunakan model regresi logistik btw - l0arapaket memungkinkan Anda melakukan itu dalam kombinasi dengan penalti L0; untuk L0Learnpaket ini akan didukung segera.

Tom Wenseleers
sumber