Regresi bertahap di R - Bagaimana cara kerjanya?


15

Saya mencoba memahami perbedaan mendasar antara regresi bertahap dan mundur dalam R menggunakan fungsi langkah. Untuk regresi bertahap saya menggunakan perintah berikut

  step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both")

Saya mendapat output di bawah ini untuk kode di atas.

meneruskan

Untuk pemilihan variabel mundur saya menggunakan perintah berikut

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward")

Dan saya mendapat output di bawah ini untuk mundur

ke belakang

Seperti yang saya mengerti, ketika tidak ada parameter yang ditentukan, seleksi bertahap bertindak sebagai mundur kecuali jika parameter "atas" dan "lebih rendah" ditentukan dalam R. Namun dalam output pemilihan bertahap, ada + disp yang ditambahkan dalam langkah ke-2. Apa fungsi yang ingin dicapai dengan menambahkan + disp lagi dalam pemilihan bertahap? Mengapa R menambahkan + disp pada langkah ke-2 sedangkan hasilnya sama (nilai-nilai AIC dan nilai-nilai pemilihan model) seperti pemilihan mundur. Bagaimana tepatnya R bekerja dalam pemilihan bertahap?

Saya benar-benar ingin memahami bagaimana fungsi ini bekerja di R. Terima kasih sebelumnya atas bantuannya!

Jawaban:


16

Mungkin akan lebih mudah untuk memahami bagaimana regresi bertahap dilakukan dengan melihat semua 15 model lm yang mungkin.

Inilah quickie untuk menghasilkan formula untuk semua 15 kombinasi.

library(leaps)
tmp<-regsubsets(mpg ~ wt + drat + disp + qsec, data=mtcars, nbest=1000, really.big=T, intercept=F)
all.mods <- summary(tmp)[[1]]
all.mods <- lapply(1:nrow(all.mods, function(x)as.formula(paste("mpg~", paste(names(which(all.mods[x,])), collapse="+"))))

head(all.mods)
[[1]]
mpg ~ drat
<environment: 0x0000000013a678d8>

[[2]]
mpg ~ qsec
<environment: 0x0000000013a6b3b0>

[[3]]
mpg ~ wt
<environment: 0x0000000013a6df28>

[[4]]
mpg ~ disp
<environment: 0x0000000013a70aa0>

[[5]]
mpg ~ wt + qsec
<environment: 0x0000000013a74540>

[[6]]
mpg ~ drat + disp
<environment: 0x0000000013a76f68>

Nilai AIC untuk masing-masing model diekstraksi dengan:

all.lm<-lapply(all.mods, lm, mtcars)

sapply(all.lm, extractAIC)[2,]
 [1]  97.98786 111.77605  73.21736  77.39732  63.90843  77.92493  74.15591  79.02978  91.24052  71.35572
[11]  63.89108  65.90826  78.68074  72.97352  65.62733

Mari kita kembali ke langkah-regresi Anda. Nilai extractAIC untuk lm (mpg ~ wt + drat + disp + qsec) adalah 65.63 (setara dengan model 15 dalam daftar di atas).

Jika model menghapus disp (-disp), maka lm (mpg ~ wt + drat + qsec) adalah 63.891 (atau model 11 dalam daftar).

Jika model tidak menghapus apa pun (tidak ada), maka AIC masih 65,63

Jika model menghapus qsec (-qsec), maka lm (mpg ~ wt + drat + disp) adalah 65,908 (model 12).

dll.

Pada dasarnya ringkasan mengungkapkan penghapusan bertahap satu istilah dari model lengkap Anda dan membandingkan nilai extractAIC, dengan mendaftarkannya dalam urutan menaik. Karena nilai AIC yang lebih kecil lebih cenderung menyerupai model KEBENARAN, langkah mempertahankan model (-disp) di langkah pertama.

Proses ini diulangi lagi, tetapi dengan model retained (-disp) sebagai titik awal. Istilah dapat dikurangkan ("mundur") atau dikurangkan / ditambahkan ("keduanya") untuk memungkinkan perbandingan model. Karena nilai AIC terendah dalam perbandingan masih model (-disp), proses berhenti dan model yang dihasilkan diberikan.

Sehubungan dengan permintaan Anda: "Apa fungsi yang ingin dicapai dengan menambahkan + disp lagi dalam pemilihan bertahap?", Dalam hal ini, itu tidak benar-benar melakukan apa-apa, karena model terbaik di semua 15 model adalah model 11 , yaitu lm (mpg ~ wt + drat + qsec).

Namun, dalam model rumit dengan sejumlah besar prediktor yang membutuhkan banyak langkah untuk menyelesaikannya, penambahan kembali istilah yang dihapus pada awalnya sangat penting untuk memberikan cara yang paling lengkap untuk membandingkan persyaratan.

Semoga ini bisa membantu.


6
"Karena nilai AIC yang lebih kecil lebih cenderung menyerupai model KEBENARAN" adalah langsung salah. Pembuatan model langkah-bijaksana memiliki kemungkinan yang sama untuk mempertahankan prediksi palsu untuk menolak prediksi sebenarnya ... di antara sejumlah masalah lain: stats.stackexchange.com/questions/115843/…
Alexis

2
Jelas itu bohong. Itu sebabnya pemilihan model berdasarkan kriteria tunggal (seperti regresi bertahap) agak naif.
Adam Quek

@Alexis menyukai rekomendasi Anda dalam jawaban Anda di tautan.
Adam Quek

3

Di sini respons yang disederhanakan. Pertama, kedua prosedur mencoba untuk mengurangi AIC dari model yang diberikan, tetapi mereka melakukannya dengan cara yang berbeda. Kemudian, perbedaan mendasar adalah bahwa dalam prosedur seleksi mundur Anda hanya bisa membuang variabel dari model pada langkah apa pun, sedangkan dalam pemilihan bertahap Anda juga bisa menambahkan variabel ke model.

Tentang output dalam pemilihan bertahap, secara umum output menunjukkan Anda memesan alternatif untuk mengurangi AIC Anda, jadi baris pertama pada setiap langkah adalah pilihan terbaik Anda. Lalu, ada +dispdi baris ketiga karena menambahkan variabel itu ke model Anda akan menjadi pilihan terbaik ketiga Anda untuk mengurangi AIC Anda. Tetapi jelas, karena alternatif terbaik Anda adalah <none>, itu berarti tidak melakukan apa-apa, prosedur berhenti dan memberi Anda hasil yang sama seperti dalam seleksi mundur.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.