Belajar Membuat Model Regresi Linear - part 2 (Multivariat)
Pada tulisan sebelumnya saya
telah menjelaskan bagaimana caranya membuat persamaan regresi linear
sederhana dua peubah (
dan
) dari nol.
Sekarang kita akan “naik kelas” untuk membuat fungsi regresi linear
multivariat. Apa maksudnya?
Regresi linear multivariat adalah suatu metode curve fitting yang melibatkan banyak peubah (minimal 3 peubah).
Misalkan saya memiliki
buah data sebagai berikut:
,
lalu kita hendak membuat persamaan regresi berikut ini:
.
Bagaimana cara kita melakukannya?
Pada tulisan sebelumnya, saya mendefinisikan error sebagai jarak antara nilai real dan nilai prediksi. Lantas bagaimana jika ada banyak peubah yang terlibat?
Pada prinsipnya sama saja. Kita bisa menggunakan cara serupa. Namun saya akan menuliskannya dalam bentuk aljabar yang sudah pasti lebih mudah.
Oke, perhatikan baik-baik.
Misalkan saya memiliki
buah data dengan
buah
peubah. Maka ekspektasi kita adalah:
Saya akan menuliskannya dalam bentuk matriks berikut ini:
Jika pada kasus sebelumnya bentuk matriks yang terlibat adalah
sehingga kita bisa dengan mudah mencari inverse-nya. Kali ini bentuk
matriksnya belum tentu square.
Dengan menggunakan definisi error yang sama dengan sebelumnya:
Lantas bagaimana caranya jika banyak sekali
baris datanya?
Saya akan lakukan tweaks seperti ini:
Bentuk di atas adalah bentuk standar yang sama dengan penjelasan di regresi linear pada post sebelumnya.
Lalu bisa didapatkan
dengan cara:
Mudah kan?
Contoh Data
Mari kita uji dengan data sebagai berikut:
x1 | x2 | x3 | y |
---|---|---|---|
9.4613622 | 5.728766 | 5.613302 | 4.8671258 |
4.7552507 | 7.256177 | 3.844687 | -4.9219371 |
0.4248520 | 5.805974 | 7.641063 | -1.3056084 |
0.8551548 | 5.034001 | 2.932985 | 0.8666642 |
4.6697967 | 7.814850 | 5.191525 | -3.1814307 |
8.0950196 | 6.993034 | 2.132023 | -0.6851769 |
3.0362108 | 5.147998 | 6.680297 | -0.2432966 |
3.9336177 | 7.221097 | 6.474840 | -1.3675767 |
9.6568974 | 8.365813 | 2.419801 | -8.1331265 |
3.7773536 | 5.778266 | 5.588382 | -0.9119664 |
Pertama-tama kita akan buat matriks sebagai berikut:
n = length(x1)
x0 = rep(1,n)
X = cbind(x0,x1,x2,x3)
t_X = t(X)
Y = y
# matriks X
X
## x0 x1 x2 x3
## [1,] 1 9.4613622 5.728766 5.613302
## [2,] 1 4.7552507 7.256177 3.844687
## [3,] 1 0.4248520 5.805974 7.641063
## [4,] 1 0.8551548 5.034001 2.932985
## [5,] 1 4.6697967 7.814850 5.191525
## [6,] 1 8.0950196 6.993034 2.132022
## [7,] 1 3.0362108 5.147998 6.680297
## [8,] 1 3.9336177 7.221097 6.474840
## [9,] 1 9.6568974 8.365813 2.419801
## [10,] 1 3.7773536 5.778266 5.588382
Oke, kita akan cari nilai konstantanya sebagai berikut:
solve(t_X %*% X) %*% t_X %*% Y
## [,1]
## x0 12.1226798
## x1 0.5049704
## x2 -2.7614293
## x3 0.3932123
Kita bandingkan dengan hasil base R sebagai berikut:
lm(y ~ x1 + x2 + x3)
##
## Call:
## lm(formula = y ~ x1 + x2 + x3)
##
## Coefficients:
## (Intercept) x1 x2 x3
## 12.1227 0.5050 -2.7614 0.3932
Bagaimana? Sama kan hasilnya?
What’s Next?
Sebagaimana yang telah saya sampaikan pada tulisan sebelumnya, metode matriks seperti ini akan memudahkan kita saat membuat model-model regresi (baik linear atau tidak) yang tidak umum. Saya akan tunjukkan contoh lainnya di tulisan berikutnya.
if you find this article helpful, support this blog by clicking the ads.