Bisakah Anda menambahkan istilah polinomial ke regresi linier berganda?

8

Saya agak bingung tentang kapan Anda harus atau tidak harus menambahkan istilah polinomial ke model regresi linier berganda. Saya tahu polinomial digunakan untuk menangkap kelengkungan dalam data, tetapi sepertinya selalu dalam bentuk:

y=x1+x2+x12+x22+x1x2+c

Bagaimana jika Anda tahu bahwa ada hubungan linear antara dan , tetapi hubungan non-linear antara y dan x_2 ? Bisakah Anda menggunakan model dalam bentuk:yx1yx2

y=x1+x2+x22+c

Saya kira pertanyaan saya adalah, apakah valid untuk menghentikan istilah x12 dan istilah x1x2 , atau apakah Anda harus mengikuti bentuk generik model regresi polinomial?

Amy K
sumber
5
Hanya untuk catatan kelengkapan bahwa jika Anda memiliki x2 dalam model, Anda harus memiliki x juga. Cari situs ini untuk prinsip marginalitas untuk info lebih lanjut. Saya tahu Anda tidak menyarankan melakukannya tetapi informasinya mungkin membantu.
mdewey
Sangat aneh melihat sesuatu seperti dan menyebutnya model regresi linier, tetapi jelas demikian. Ingat bahwa itu ada hubungannya dengan linearitas dalam koefisien. Saya sarankan video Monk Matematika pada ini: m.youtube.com/watch?v=rVviNyIR-fI . Lima belas menit mungkin tampak seperti waktu yang dihabiskan untuk hal ini, tetapi Anda tidak akan pernah lupa bahwa regresi linier dapat melibatkan perilaku nonlinear. Mungkin sebagai pertanyaan untuk OP: apakah model regresi linier? y=ax+bx2y=ax+bx2
Dave
@mdewey, pernyataan Anda terlalu umum untuk menjadi benar dan / atau masuk akal di semua pengaturan. Saya dapat dengan mudah membayangkan model yang didefinisikan dengan tetapi tanpa . Misalnya kasus di mana proses menghasilkan data adalah atau di mana mana (dan ), atau di mana model hanyalah perkiraan yang lebih baik (dibandingkan dengan yang termasuk ) untuk proses pembuatan data apa pun yang kita hadapi. x2xy=β0+β1x2+εy=β0+β1z+εx=zz>0x
Richard Hardy

Jawaban:

14

Selain jawaban yang sangat bagus @ mkt, saya pikir saya akan memberikan contoh khusus untuk Anda lihat sehingga Anda dapat mengembangkan beberapa intuisi.

Hasilkan Data untuk Contoh

Untuk contoh ini, saya membuat beberapa data menggunakan R sebagai berikut:

set.seed(124)

n <- 200
x1 <- rnorm(n, mean=0, sd=0.2)
x2 <- rnorm(n, mean=0, sd=0.5)

eps <- rnorm(n, mean=0, sd=1)

y = 1 + 10*x1 + 0.4*x2 + 0.8*x2^2 + eps

Seperti yang dapat Anda lihat di atas, data berasal dari model , di mana adalah istilah kesalahan acak yang didistribusikan secara normal dengan berarti dan varians tidak dikenal . Selanjutnya, , , dan , sementara . y=β0+β1x1+β2x2+β3x22+ϵϵ0σ2β0=1β1=10β2=0.4β3=0.8σ=1

Visualisasikan Data yang Dihasilkan melalui Coplots

Dengan data yang disimulasikan pada variabel hasil y dan variabel prediktor x1 dan x2, kita dapat memvisualisasikan data ini menggunakan coplots :

library(lattice)

coplot(y ~ x1 | x2,  
       number = 4, rows = 1,
       panel = panel.smooth)

coplot(y ~ x2 | x1,  
       number = 4, rows = 1,
       panel = panel.smooth)

Koplot yang dihasilkan ditunjukkan di bawah ini.

Coplot pertama menunjukkan scatterplots y versus x1 ketika x2 milik empat rentang nilai yang diamati (yang tumpang tindih) dan meningkatkan masing-masing plot scatter ini dengan fit yang mulus, mungkin non-linear yang bentuknya diperkirakan dari data.

masukkan deskripsi gambar di sini

Coplot kedua menunjukkan scatterplots y versus x2 ketika x1 milik empat rentang nilai yang diamati (yang tumpang tindih) dan meningkatkan masing-masing plot scatter ini dengan fit halus.

masukkan deskripsi gambar di sini

Coplot pertama menunjukkan bahwa masuk akal untuk menganggap bahwa x1 memiliki efek linier pada y ketika mengendalikan x2 dan bahwa efek ini tidak bergantung pada x2.

Coplot kedua menunjukkan bahwa masuk akal untuk menganggap bahwa x2 memiliki efek kuadratik pada y ketika mengendalikan x1 dan bahwa efek ini tidak bergantung pada x1.

Pasang Model yang Ditentukan dengan Benar

Coplots menyarankan untuk mencocokkan model berikut dengan data, yang memungkinkan untuk efek linear x1 dan efek kuadratik dari x2:

m <- lm(y ~ x1 + x2 + I(x2^2))  

Bangun Komponen Sisa Komponen Plus untuk Model yang Ditentukan dengan Benar

Setelah model yang ditentukan dengan benar dipasang ke data, kita dapat memeriksa komponen ditambah plot residual untuk setiap prediktor yang termasuk dalam model:

library(car)

crPlots(m)

Komponen ini ditambah plot residual ditunjukkan di bawah ini dan menunjukkan bahwa model tersebut ditentukan dengan benar karena tidak menunjukkan bukti nonlinier, dll. Memang, dalam masing-masing plot, tidak ada perbedaan yang jelas antara garis biru putus-putus yang menunjukkan efek linear dari prediktor yang sesuai, dan garis magenta padat menunjukkan efek non-linear dari prediktor dalam model.

masukkan deskripsi gambar di sini

Pas dengan Model yang Tidak Benar

Mari kita mainkan advokat iblis dan katakan bahwa model lm () kita sebenarnya tidak ditentukan dengan benar (mis. Salah spesifikasi), dalam arti bahwa ia menghilangkan istilah kuadratik I (x2 ^ 2):

m.mis <-  lm(y ~ x1 + x2)

Bangun Komponen Sisa Komponen Plus untuk Model yang Ditentukan Tidak Benar

Jika kita akan membangun komponen ditambah plot residual untuk model yang tidak ditentukan spesifikasi, kita akan segera melihat saran non-linearitas efek x2 dalam model yang salah ditentukan:

crPlots(m.mis)

Dengan kata lain, seperti yang terlihat di bawah ini, model yang salah ditentukan gagal menangkap efek kuadrat dari x2 dan efek ini muncul di komponen ditambah plot sisa yang sesuai dengan prediktor x2 dalam model yang salah ditentukan.

masukkan deskripsi gambar di sini

Kesalahan spesifikasi efek x2 dalam model m. Ini juga akan terlihat jelas ketika memeriksa plot residu yang terkait dengan model ini terhadap masing-masing prediktor x1 dan x2:

par(mfrow=c(1,2))
plot(residuals(m.mis) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m.mis) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Seperti yang terlihat di bawah ini, plot residu yang terkait dengan m.mis versus x2 menunjukkan pola kuadratik yang jelas, menunjukkan bahwa model m.m gagal menangkap pola sistematis ini.

masukkan deskripsi gambar di sini

Tambahkan Model yang Tidak Ditentukan dengan Benar

Untuk menentukan model m.mis dengan benar, kita perlu menambahkannya sehingga juga termasuk istilah I (x2 ^ 2):

m <- lm(y ~ x1 + x2 + I(x2^2)) 

Berikut adalah plot residual versus x1 dan x2 untuk model yang ditentukan dengan benar ini:

par(mfrow=c(1,2))
plot(residuals(m) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Perhatikan bahwa pola kuadrat yang sebelumnya terlihat dalam plot residual versus x2 untuk model mispecified m.m sekarang telah menghilang dari plot residual versus x2 untuk model m yang ditentukan dengan benar.

Perhatikan bahwa sumbu vertikal semua plot residual versus x1 dan x2 yang ditampilkan di sini harus dilabeli sebagai "Residual". Untuk beberapa alasan, R Studio memotong label itu.

masukkan deskripsi gambar di sini

Isabella Ghement
sumber
11

Ya, apa yang Anda sarankan itu baik-baik saja. Ini benar-benar valid dalam model untuk memperlakukan respons terhadap satu prediktor sebagai linier dan yang berbeda sebagai polinomial. Ini juga sepenuhnya baik untuk menganggap tidak ada interaksi antara para prediktor.

mkt - Pasang kembali Monica
sumber
1
Hai. Hanya keraguan yang terkait. Jika kedua dan adalah regressor, dan mengatakan benar-benar positif, akankah ada masalah multikolinieritas? Apakah mungkin bahwa koefisien akan memiliki kesalahan standar yang lebih besar? xx2x
Dayne
@Dayne Pertanyaan bagus! Ini adalah masalah yang dibahas dengan baik di sini dan di sini
mkt - Reinstate Monica
1
@mkt Tautan tersebut memberikan pendekatan yang benar-benar terpisah dari gagasan Ingolifs tentang polinomial ortogonal. Adakah pemikiran tentang pendekatan polinomial ortogonal?
Dave
1
@Dave Tidak tahu terlalu banyak tentang itu, aku takut. Mungkin baik untuk mengajukan pertanyaan baru tentang membandingkan pendekatan.
mkt - Reinstate Monica
7

Anda harus berhati-hati menggunakan polinomial Orthogonal jika Anda akan menambahkan istilah polinomial.

Mengapa? Tanpa mereka, Anda memiliki masalah menyerupai colinearity . Di wilayah tertentu, akan terlihat sangat mirip dengan , dan parabola akan melakukan pekerjaan yang layak untuk memasang garis lurus.x2x

Mengamati:

masukkan deskripsi gambar di sini

Ini adalah polinomial .x,x2,x3

Antara 0 dan 1,5 ketiga kurva meningkat secara monoton dan sementara mereka kurva berbeda satu sama lain, mereka akan memberikan kualitas yang cocok ketika x berkorelasi positif dengan y. Dengan menggunakan ketiganya dalam kode Anda

y ~ x + x^2 + x^3

Anda pada dasarnya menggunakan bentuk redundan agar sesuai dengan data Anda.

Polinomial ortogonal pada dasarnya memberi Anda ruang gerak tambahan ketika pas, dan setiap polinomial pada dasarnya tidak tergantung pada yang lain.

masukkan deskripsi gambar di sini

Tiga polinomial derajat 1,2 dan 3 dihasilkan oleh fungsi poli () di R.

Mungkin alih-alih secara eksplisit menganggapnya sebagai polinomial, Anda malah menganggapnya sebagai 'komponen tren' atau sesuatu:

x mewakili 'lebih banyak selalu lebih baik' (atau lebih buruk jika koefisiennya negatif). Jika Anda melakukan regresi pada kualitas musik vs cowbell , Anda memerlukan komponen ini.

x2 mewakili semacam zona goldilocks. Jika Anda melakukan regresi pada selera makanan vs jumlah garam, komponen ini akan menonjol.

x3 mungkin tidak akan menjadi komponen yang dominan dengan sendirinya (satu-satunya contoh yang dapat saya pikirkan adalah Berapa Banyak Orang Tahu vs Berapa Banyak Mereka Pikir Mereka Tahu ), tetapi kehadirannya akan mempengaruhi bentuk dan simetri dari dan istilah.xx2

Ada banyak matematika sulit yang terlibat dalam polinomial ortogonal, tetapi untungnya Anda hanya perlu tahu dua hal:

  1. Polinomial ortogonal hanya ortogonal pada suatu wilayah tertentu. Contoh yang saya berikan melibatkan polinomial yang hanya ortogonal antara 0 dan 1,5.
  2. Jika Anda menggunakan R, gunakan fungsi poli () untuk membuat polinomial Anda. poli (x, n) dengan n adalah derajat polinomial tertinggi. Itu akan membuat mereka ortogonal untuk Anda atas domain data Anda .x
Ingolif
sumber
2
Ini sangat menarik dan bukan sesuatu yang pernah saya dengar sebelumnya. Apakah Anda memiliki referensi yang mengatakan bahwa ini perlu atau berguna? Dan berguna untuk prediksi atau inferensi parameter? Dan apakah Anda tahu perintah Python untuk "poli"?
Dave
Berbagai segi regresi polinomial ortogonal telah dibahas di sini dan di sini dan banyak lagi.
Jason
Jawaban yang bagus, dan terima kasih telah menyampaikannya lebih baik daripada pos yang ada dalam pikiran saya. :)
Jason
1
@Ingolifs: Ini adalah penjelasan terbaik dari polinomial ortogonal yang pernah saya baca sejauh ini di situs ini! Saya setuju dengan Dave bahwa akan sangat membantu untuk mengomentari jawaban Anda tentang kegunaan polinomial ortogonal untuk prediksi atau inferensi parameter.
Isabella Ghement
1
+1 tetapi hati-hati dengan polykarena jika Anda mencoba predictdengan itu akan mereparasi polinomial pada sampel prediksi; yaitu kita mendapatkan sampah.
usεr11852
0

Tidak ada aturan yang mengatakan Anda harus menggunakan semua variabel Anda. Jika Anda mencoba untuk memprediksi penghasilan, dan variabel fitur Anda adalah SSN, tahun sekolah, dan usia, dan Anda ingin menjatuhkan SSN karena Anda mengharapkan korelasi antara itu dan pendapatan menjadi palsu, itulah keputusan Anda untuk membuat keputusan. Model tidak valid hanya karena ada variabel lain yang secara teoritis bisa Anda sertakan, tetapi tidak. Memutuskan istilah polinomial apa yang akan dimasukkan hanyalah salah satu dari banyak keputusan mengenai pemilihan fitur.

Sementara model polinomial sering dimulai dengan semua istilah yang dimasukkan, itu hanya agar semuanya dapat dievaluasi berapa banyak mereka menambahkan ke model. Jika sepertinya istilah tertentu sebagian besar hanya overfitting, itu bisa dijatuhkan di iterasi model selanjutnya. Regularisasi, seperti regresi laso, dapat menjatuhkan variabel yang kurang bermanfaat secara otomatis. Secara umum, lebih baik untuk memulai suatu model yang memiliki terlalu banyak variabel, dan memotongnya menjadi yang paling berguna, daripada memulainya dengan hanya variabel yang Anda pikir harus bergantung pada model, dan mungkin kehilangan hubungan Anda. tidak mengharapkan.

Akumulasi
sumber