Belajar Membuat Model Regresi Linear - part 3 (Polinomial)
Pada tulisan sebelumnya saya telah menjelaskan bagaimana caranya membuat persamaan regresi linear banyak peubah peubah ( dan ) dari nol. Sekarang kita akan “naik kelas” lagi untuk membuat fungsi regresi polinomial untuk satu peubah. Apa maksudnya?
Kita akan membuat fungsi curve fitting yang nonlinear.
Misalkan saya memiliki buah pasang 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. Kali ini sama saja. Kita menggunakan definisi dan cara perhitungan yang sama.
Misalkan saya memiliki buah data dengan banyak pangkat polinom. Maka ekspektasi kita adalah:
Dengan prinsip yang sama dengan sebelumnya, saya akan tuliskan sebagai:
Dengan menggunakan definisi error yang sama dengan sebelumnya:
Lantas bagaimana caranya jika banyak sekali baris datanya?
Saya akan lakukan tweaks seperti berikut sehingga bisa didapatkan dengan cara:
Sama persis dengan kasus sebelumnya.
Contoh Data
Mari kita uji dengan data sebagai berikut:
x | y |
---|---|
0.1030594 | 10.03643 |
6.6158269 | 108.52542 |
6.6398528 | 58.55689 |
5.9707812 | 36.79973 |
6.0138707 | 82.08803 |
6.1532501 | 128.75940 |
1.7079283 | 12.43348 |
4.0524876 | 42.71331 |
5.2412899 | 55.77129 |
3.2658923 | 27.75798 |
dan saya akan membuat fungsi regresi polinom orde 3 berikut: .
Pertama-tama kita akan buat matriks sebagai berikut:
n = length(x)
x0 = rep(1,n)
X = cbind(x0,x1 = x,x2 = x^2,x3 = x^3)
t_X = t(X)
Y = y
# matriks X
X
## x0 x1 x2 x3
## [1,] 1 0.1030594 0.01062125 0.00109462
## [2,] 1 6.6158269 43.76916561 289.56922339
## [3,] 1 6.6398528 44.08764554 292.73547778
## [4,] 1 5.9707812 35.65022847 212.85971489
## [5,] 1 6.0138707 36.16664115 217.50150461
## [6,] 1 6.1532501 37.86248731 232.97735542
## [7,] 1 1.7079283 2.91701910 4.98205950
## [8,] 1 4.0524876 16.42265599 66.55261024
## [9,] 1 5.2412899 27.47111992 143.98410361
## [10,] 1 3.2658923 10.66605234 34.83417790
Oke, kita akan cari nilai konstantanya sebagai berikut:
solve(t_X %*% X) %*% t_X %*% Y
## [,1]
## x0 10.752155
## x1 -5.219467
## x2 3.831712
## x3 -0.188765
Maka kita dapatkan persamaan sebagai berikut:
y = 10.752 + (-5.219) x + (3.832) x^2 + (-0.189 x^3)
Mari kita prediksi nilai dan kita hitung error-nya.
x | y | prediksi_y | error |
---|---|---|---|
0.1030594 | 10.03643 | 10.25463 | -0.218 |
6.6158269 | 108.52542 | 89.21886 | 19.307 |
6.6398528 | 58.55689 | 89.71546 | -31.159 |
5.9707812 | 36.79973 | 75.97168 | -39.172 |
6.0138707 | 82.08803 | 76.84839 | 5.240 |
6.1532501 | 128.75940 | 79.69452 | 49.065 |
1.7079283 | 12.43348 | 12.07473 | 0.359 |
4.0524876 | 42.71331 | 39.95524 | 2.758 |
5.2412899 | 55.77129 | 61.45404 | -5.683 |
3.2658923 | 27.75798 | 27.99596 | -0.238 |
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.