Saya menggunakan paket 'lars' dalam R dengan kode berikut:
> library(lars)
> set.seed(3)
> n <- 1000
> x1 <- rnorm(n)
> x2 <- x1+rnorm(n)*0.5
> x3 <- rnorm(n)
> x4 <- rnorm(n)
> x5 <- rexp(n)
> y <- 5*x1 + 4*x2 + 2*x3 + 7*x4 + rnorm(n)
> x <- cbind(x1,x2,x3,x4,x5)
> cor(cbind(y,x))
y x1 x2 x3 x4 x5
y 1.00000000 0.74678534 0.743536093 0.210757777 0.59218321 0.03943133
x1 0.74678534 1.00000000 0.892113559 0.015302566 -0.03040464 0.04952222
x2 0.74353609 0.89211356 1.000000000 -0.003146131 -0.02172854 0.05703270
x3 0.21075778 0.01530257 -0.003146131 1.000000000 0.05437726 0.01449142
x4 0.59218321 -0.03040464 -0.021728535 0.054377256 1.00000000 -0.02166716
x5 0.03943133 0.04952222 0.057032700 0.014491422 -0.02166716 1.00000000
> m <- lars(x,y,"step",trace=T)
Forward Stepwise sequence
Computing X'X .....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 4 added
LARS Step 3 : Variable 3 added
LARS Step 4 : Variable 2 added
LARS Step 5 : Variable 5 added
Computing residuals, RSS etc .....
Saya punya dataset dengan 5 variabel kontinu dan saya mencoba menyesuaikan model dengan variabel tunggal (dependen) y. Dua prediktor saya sangat berkorelasi satu sama lain (x1, x2).
Seperti yang Anda lihat pada contoh di atas, fungsi lars dengan opsi 'stepwise' pertama-tama memilih variabel yang paling berkorelasi dengan y. Variabel berikutnya untuk memasukkan model adalah variabel yang paling berkorelasi dengan residual. Memang, itu adalah x4:
> round((cor(cbind(resid(lm(y~x1)),x))[1,3:6]),4)
x2 x3 x4 x5
0.1163 0.2997 0.9246 0.0037
Sekarang, jika saya melakukan opsi 'laso':
> m <- lars(x,y,"lasso",trace=T)
LASSO sequence
Computing X'X ....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 2 added
LARS Step 3 : Variable 4 added
LARS Step 4 : Variable 3 added
LARS Step 5 : Variable 5 added
Ini menambahkan kedua variabel berkorelasi ke model dalam dua langkah pertama. Ini kebalikan dari apa yang saya baca di beberapa makalah. Sebagian besar kemudian mengatakan bahwa jika ada sekelompok variabel di antaranya korelasinya sangat tinggi, maka 'laso' cenderung memilih hanya satu variabel dari kelompok secara acak.
Bisakah seseorang memberikan contoh perilaku ini? Atau jelaskan, mengapa variabel saya x1, x2 ditambahkan ke model satu demi satu (bersama)?
R
panggilan yang dibuat OP dan output terkait yang ia berikan, Anda akan melihat bahwa ia memang menggunakan laso. Seperti yang saya yakin Anda tahu, tweak kecil dari algoritma lars menghasilkan jalur regularisasi laso.Jawaban:
Masalah collinearity terlalu dibesar-besarkan!
Thomas, Anda mengartikulasikan sudut pandang umum, bahwa jika prediktor berkorelasi, bahkan teknik pemilihan variabel terbaik hanya mengambil satu secara acak dari kelompok itu. Untungnya, itulah cara menggarisbawahi kemampuan regresi untuk mengungkap kebenaran! Jika Anda memiliki tipe variabel penjelas yang tepat (eksogen), regresi berganda menjanjikan untuk menemukan efek dari masing-masing variabel yang menahan variabel lainnya konstan. Sekarang jika variabel berkorelasi sempurna, maka ini benar-benar mustahil. Jika variabel berkorelasi, mungkin lebih sulit, tetapi dengan ukuran data yang ditetapkan saat ini, itu tidak terlalu sulit.
Collinearity adalah masalah rendah informasi. Lihatlah parodi kolinearitas ini oleh Art Goldberger di blog Dave Giles . Cara kita berbicara tentang kolinearitas akan terdengar konyol jika diterapkan pada mean daripada koefisien regresi parsial.
Masih belum yakin? Sudah waktunya untuk beberapa kode.
Saya telah membuat variabel berkorelasi tinggi x1 dan x2, tetapi Anda dapat melihat dalam plot di bawah ini bahwa ketika x1 mendekati -1, kita masih melihat variabilitas dalam x2.
Sekarang saatnya menambahkan "kebenaran":
Dapatkah regresi biasa berhasil di tengah-tengah masalah kolinearitas yang perkasa?
Oh ya itu bisa:
Sekarang saya tidak berbicara tentang LASSO, yang menjadi fokus pertanyaan Anda. Tetapi izinkan saya bertanya kepada Anda ini. Jika regresi sekolah lama dengan eliminasi mundur tidak tertipu oleh kolinearitas, mengapa Anda berpikir bahwa LASSO yang canggih akan melakukannya?
sumber
Jawaban Ben mengilhami saya untuk melangkah lebih jauh di jalan yang dia berikan, apa yang akan terjadi jika "kebenaran", y, ada dalam situasi lain.
Dalam contoh asli, y tergantung pada dua variabel yang sangat berkorelasi x1 dan x2. Dengan asumsi ada variabel lain, x3, katakan
"Kebenaran" y sekarang didefinisikan sebagai berikut
Apa yang akan terjadi pada regresi?
Ada efek collinearity yang kuat. Kesalahan standar x2 terlalu besar. Namun, regresi linier mengidentifikasi x2 sebagai variabel yang tidak signifikan.
Bagaimana dengan kasus regresi lain?
Variabel x2 tidak signifikan, dan direkomendasikan untuk dihapus oleh regresi linier.
Dari hasil di atas, collinearity bukan masalah dalam regresi linier, dan memeriksa VIF tidak terlalu membantu.
Mari kita lihat situasi lain. x3 = c (1: N) # N didefinisikan sebelumnya, N = 1000, x3 tidak dalam skala yang sama dengan x1.
"Kebenaran" y didefinisikan sama seperti di atas
Apa yang akan terjadi pada regresi?
Ada efek collinearity yang kuat. Kesalahan standar x1, x2 terlalu besar. Regresi linier gagal mengidentifikasi variabel penting x1.
Bagaimana dengan kasus regresi lain?
Variabel x2 tidak signifikan, dan direkomendasikan untuk dihapus oleh regresi linier.
Catatan: regresi y pada x1 dan x3. Perhatikan bahwa kesalahan standar x1 hanya 0,03.
Berdasarkan hasil di atas, kesimpulan saya adalah itu
sumber