Ketika memasukkan polinomial dan interaksi di antara mereka, multikolinieritas dapat menjadi masalah besar; satu pendekatan adalah melihat polinomial ortogonal.
Secara umum, polinomial ortogonal adalah keluarga polinomial yang ortogonal berkenaan dengan beberapa produk dalam.
Jadi misalnya dalam kasus polinomial di beberapa daerah dengan fungsi bobot w, produk dalam adalah ∫bSebuahw ( x )halm( x )haln( x ) dx - orthogonality membuat produk dalam itu 0
kecuali kalau m = n.
Contoh paling sederhana untuk polinomial kontinu adalah polinomial Legendre, yang memiliki fungsi bobot konstan selama interval nyata hingga (biasanya lebih [ - 1 , 1 ]).
Dalam kasus kami, ruang (pengamatan itu sendiri) terpisah, dan fungsi berat kami juga konstan (biasanya), sehingga polinomial ortogonal adalah sejenis diskrit yang setara dengan polinomial Legendre. Dengan konstanta yang termasuk dalam prediksi kami, produk dalam adalah sederhanahalm( x)Thaln( x ) =∑sayahalm(xsaya)haln(xsaya).
Sebagai contoh, pertimbangkan x = 1 , 2 , 3 , 4 , 5
Mulai dengan kolom konstan, hal0( x ) =x0= 1. Polinomial selanjutnya adalah bentuka x - b, tapi kami tidak khawatir tentang skala saat ini, jadi hal1( x ) = x -x¯= x - 3. Polinomial berikutnya akan berbentukSebuahx2+ b x + c; ternyata ituhal2( x ) = ( x - 3)2- 2 =x2- 6 x + 7 ortogonal dengan dua sebelumnya:
x p0 p1 p2
1 1 -2 2
2 1 -1 -1
3 1 0 -2
4 1 1 -1
5 1 2 2
Seringkali basis juga dinormalisasi (menghasilkan keluarga ortonormal) - yaitu, jumlah kuadrat dari setiap istilah ditetapkan menjadi beberapa konstanta (katakanlah, untuk n, atau untuk n - 1, sehingga simpangan baku adalah 1, atau mungkin paling sering, untuk 1).
Cara-cara untuk melakukan orthogonalisasi seperangkat alat prediksi polinomial termasuk ortogonisasi Gram-Schmidt, dan dekomposisi Cholesky, meskipun ada banyak pendekatan lain.
Beberapa keuntungan dari polinomial ortogonal:
1) multikolinieritas bukan masalah - prediktor ini semuanya ortogonal.
2) Koefisien pesanan rendah tidak berubah saat Anda menambahkan istilah . Jika Anda sesuai gelark polinomial melalui polinomial ortogonal, Anda tahu koefisien kesesuaian semua polinomial orde rendah tanpa pemasangan kembali.
Contoh dalam R ( cars
data, menghentikan jarak terhadap kecepatan):
Di sini kami mempertimbangkan kemungkinan bahwa model kuadrat mungkin cocok:
R menggunakan poly
fungsi untuk mengatur prediktor polinomial ortogonal:
> p <- model.matrix(dist~poly(speed,2),cars)
> cbind(head(cars),head(p))
speed dist (Intercept) poly(speed, 2)1 poly(speed, 2)2
1 4 2 1 -0.3079956 0.41625480
2 4 10 1 -0.3079956 0.41625480
3 7 4 1 -0.2269442 0.16583013
4 7 22 1 -0.2269442 0.16583013
5 8 16 1 -0.1999270 0.09974267
6 9 10 1 -0.1729098 0.04234892
Mereka ortogonal:
> round(crossprod(p),9)
(Intercept) poly(speed, 2)1 poly(speed, 2)2
(Intercept) 50 0 0
poly(speed, 2)1 0 1 0
poly(speed, 2)2 0 0 1
Berikut plot dari polinomial:
Inilah output model linier:
> summary(carsp)
Call:
lm(formula = dist ~ poly(speed, 2), data = cars)
Residuals:
Min 1Q Median 3Q Max
-28.720 -9.184 -3.188 4.628 45.152
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 42.980 2.146 20.026 < 2e-16 ***
poly(speed, 2)1 145.552 15.176 9.591 1.21e-12 ***
poly(speed, 2)2 22.996 15.176 1.515 0.136
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 15.18 on 47 degrees of freedom
Multiple R-squared: 0.6673, Adjusted R-squared: 0.6532
F-statistic: 47.14 on 2 and 47 DF, p-value: 5.852e-12
Berikut ini plot plot kuadrat: