Di R, apakah "glmnet" cocok dengan intersep?

10

Saya pas model linear dalam R menggunakan glmnet. Model asli (tidak diatur) dipasang menggunakan lmdan tidak memiliki istilah konstan (yaitu dalam bentuk lm(y~0+x1+x2,data)).

glmnetmengambil matriks prediktor dan vektor respons. Saya telah membaca glmnetdokumentasi, dan tidak dapat menemukan istilah yang konstan.

Jadi, adakah cara untuk meminta glmnetuntuk memaksakan kesesuaian linear melalui asalnya?

NPE
sumber

Jawaban:

12

Ya, intersep termasuk dalam model glmnet , tetapi itu tidak diatur (lih. Jalur Regularisasi untuk Model Linear Umum melalui Koordinat Keturunan , hal. 13). Rincian lebih lanjut tentang implementasi tentu bisa diperoleh dengan hati-hati melihat kode (untuk keluarga gaussian, itu adalah elnet()fungsi yang dipanggil oleh glmnet()), tetapi di Fortran.

Anda bisa mencoba dihukum paket, yang memungkinkan untuk menghapus mencegat dengan melewati unpenalized = ~0ke penalized().

> x <- matrix(rnorm(100*20),100,20)
> y <- rnorm(100)
> fit1 <- penalized(y, penalized=x, unpenalized=~0, 
                    standardize=TRUE) 
> fit2 <- lm(y ~ 0+x)
> plot((coef(fit1) + coef(fit2))/2, coef(fit2)-coef(fit1))

Untuk mendapatkan regularisasi Lasso, Anda dapat mencoba sesuatu seperti

> fit1b <- penalized(y, penalized=x, unpenalized=~0, 
                     standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)

Seperti yang dapat dilihat pada gambar berikut, ada sedikit perbedaan antara parameter regresi yang dihitung dengan kedua metode (kiri), dan Anda dapat memplot solusi jalur Lasso dengan sangat mudah (kanan).

teks alternatif

chl
sumber