Kali ini kita akan membahas tentang Regresi Linier. Lebih tepatnya tentang regresi linier sederhana.
Apa itu regresi linier?
Regresi linear adalah salah satu model statistik tertua dan merupakan dasar bagi model lainnya. Regresi linear menggunakan alat-alat dari aljabar linear untuk memetakan set data input dengan bidang linear dalam ruang Rd. Dalam banyak situasi, kita ingin memprediksi nilai-nilai berdasarkan informasi lainnya. Sebagai contoh, jika kita ingin membeli rumah dan kita mengirim penawaran kepada penjual, kita mencoba mendapatkan “tebakan terbaik” untuk harga terbaik yang dapat kita tawarkan berdasarkan informasi lainnya, seperti luas rumah, lokasi rumah, dan sebagainya. Regresi linear adalah model paling sederhana untuk memprediksi atau menebak harga rumah dalam situasi ini.
Dalam pembelajaran mesin (machine learning), regresi linear adalah model pembelajaran terbimbing (supervised learning), sedangkan dalam statistik, regresi linear adalah model statistik inferensial. Dalam bab ini, kita akan membahas dasar-dasar regresi linear dan bagaimana kita mengaplikasikan alat-alat dari aljabar linear untuk menyesuaikan data input ke model regresi linear.
Regresi linear dalam konteks aljabar linear adalah metode untuk memodelkan hubungan linier antara variabel independen (disebut juga sebagai fitur atau variabel prediktor) dan variabel dependen (disebut juga sebagai variabel target atau variabel respons).
Dalam regresi linear, tujuan utama adalah untuk mencari hubungan linier antara variabel independen dan variabel dependen, yang dapat diwakili oleh persamaan garis. Persamaan regresi linear dapat dituliskan sebagai:
y = b0 + b1x1 + b2x2 + … + bn*xn
Di mana:
y adalah variabel dependen (variabel target) yang ingin kita prediksi, x1, x2, …, xn adalah variabel independen (fitur) yang digunakan untuk memprediksi y, b0, b1, b2, …, bn adalah koefisien regresi yang menentukan kecenderungan dan pengaruh masing-masing variabel independen terhadap variabel dependen, Persamaan ini dapat diperluas hingga n fitur yang relevan. Tujuan dalam regresi linear adalah menemukan nilai yang optimal untuk koefisien b0, b1, b2, …, bn sehingga model regresi linear memberikan perkiraan yang paling akurat untuk variabel dependen berdasarkan fitur-fitur yang diberikan.
Regresi linear sederhana (simple linear regression) adalah regresi linear dengan satu variabel penjelas (explanatory variable) atau yang juga dikenal sebagai variabel independen, dan satu variabel respon (response variable) atau yang juga dikenal sebagai variabel dependen.
Simple Linear Regression
Untuk regresi linear sederhana, kita menyesuaikan data sebagai persamaan linear sehingga:
library(magick)
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
inp_img <- image_read("slr.png")
plot(inp_img)
inp_img1 <- image_read("keterangan.png")
plot(inp_img1)
Bagaimana cara kita menemukan “garis terbaik” untuk regresi sederhana? Bagaimana kita mengukur “kesalahan terkecil”? Untuk mengilustrasikannya, kita akan menggunakan 100 data pertama dari dataset “Boston” yang terdapat dalam paket MASS.
inp_img2 <- image_read("simplelinearregression.png")
inp_img3 <- image_read("slr2.png")
plot(inp_img2)
plot(inp_img3)
Di R, kita bisa menggunakan fungsi head() untuk melihat 100 observasi pertama dalam dataset “Boston”. Fungsi head() ini digunakan untuk menampilkan beberapa baris teratas dari dataset.
library(MASS)
# Memuat dataset Boston
data(Boston)
Boston2 <-Boston[1:100,]
Boston2
## crim zn indus chas nox rm age dis rad tax ptratio black
## 1 0.00632 18.0 2.31 0 0.5380 6.575 65.2 4.0900 1 296 15.3 396.90
## 2 0.02731 0.0 7.07 0 0.4690 6.421 78.9 4.9671 2 242 17.8 396.90
## 3 0.02729 0.0 7.07 0 0.4690 7.185 61.1 4.9671 2 242 17.8 392.83
## 4 0.03237 0.0 2.18 0 0.4580 6.998 45.8 6.0622 3 222 18.7 394.63
## 5 0.06905 0.0 2.18 0 0.4580 7.147 54.2 6.0622 3 222 18.7 396.90
## 6 0.02985 0.0 2.18 0 0.4580 6.430 58.7 6.0622 3 222 18.7 394.12
## 7 0.08829 12.5 7.87 0 0.5240 6.012 66.6 5.5605 5 311 15.2 395.60
## 8 0.14455 12.5 7.87 0 0.5240 6.172 96.1 5.9505 5 311 15.2 396.90
## 9 0.21124 12.5 7.87 0 0.5240 5.631 100.0 6.0821 5 311 15.2 386.63
## 10 0.17004 12.5 7.87 0 0.5240 6.004 85.9 6.5921 5 311 15.2 386.71
## 11 0.22489 12.5 7.87 0 0.5240 6.377 94.3 6.3467 5 311 15.2 392.52
## 12 0.11747 12.5 7.87 0 0.5240 6.009 82.9 6.2267 5 311 15.2 396.90
## 13 0.09378 12.5 7.87 0 0.5240 5.889 39.0 5.4509 5 311 15.2 390.50
## 14 0.62976 0.0 8.14 0 0.5380 5.949 61.8 4.7075 4 307 21.0 396.90
## 15 0.63796 0.0 8.14 0 0.5380 6.096 84.5 4.4619 4 307 21.0 380.02
## 16 0.62739 0.0 8.14 0 0.5380 5.834 56.5 4.4986 4 307 21.0 395.62
## 17 1.05393 0.0 8.14 0 0.5380 5.935 29.3 4.4986 4 307 21.0 386.85
## 18 0.78420 0.0 8.14 0 0.5380 5.990 81.7 4.2579 4 307 21.0 386.75
## 19 0.80271 0.0 8.14 0 0.5380 5.456 36.6 3.7965 4 307 21.0 288.99
## 20 0.72580 0.0 8.14 0 0.5380 5.727 69.5 3.7965 4 307 21.0 390.95
## 21 1.25179 0.0 8.14 0 0.5380 5.570 98.1 3.7979 4 307 21.0 376.57
## 22 0.85204 0.0 8.14 0 0.5380 5.965 89.2 4.0123 4 307 21.0 392.53
## 23 1.23247 0.0 8.14 0 0.5380 6.142 91.7 3.9769 4 307 21.0 396.90
## 24 0.98843 0.0 8.14 0 0.5380 5.813 100.0 4.0952 4 307 21.0 394.54
## 25 0.75026 0.0 8.14 0 0.5380 5.924 94.1 4.3996 4 307 21.0 394.33
## 26 0.84054 0.0 8.14 0 0.5380 5.599 85.7 4.4546 4 307 21.0 303.42
## 27 0.67191 0.0 8.14 0 0.5380 5.813 90.3 4.6820 4 307 21.0 376.88
## 28 0.95577 0.0 8.14 0 0.5380 6.047 88.8 4.4534 4 307 21.0 306.38
## 29 0.77299 0.0 8.14 0 0.5380 6.495 94.4 4.4547 4 307 21.0 387.94
## 30 1.00245 0.0 8.14 0 0.5380 6.674 87.3 4.2390 4 307 21.0 380.23
## 31 1.13081 0.0 8.14 0 0.5380 5.713 94.1 4.2330 4 307 21.0 360.17
## 32 1.35472 0.0 8.14 0 0.5380 6.072 100.0 4.1750 4 307 21.0 376.73
## 33 1.38799 0.0 8.14 0 0.5380 5.950 82.0 3.9900 4 307 21.0 232.60
## 34 1.15172 0.0 8.14 0 0.5380 5.701 95.0 3.7872 4 307 21.0 358.77
## 35 1.61282 0.0 8.14 0 0.5380 6.096 96.9 3.7598 4 307 21.0 248.31
## 36 0.06417 0.0 5.96 0 0.4990 5.933 68.2 3.3603 5 279 19.2 396.90
## 37 0.09744 0.0 5.96 0 0.4990 5.841 61.4 3.3779 5 279 19.2 377.56
## 38 0.08014 0.0 5.96 0 0.4990 5.850 41.5 3.9342 5 279 19.2 396.90
## 39 0.17505 0.0 5.96 0 0.4990 5.966 30.2 3.8473 5 279 19.2 393.43
## 40 0.02763 75.0 2.95 0 0.4280 6.595 21.8 5.4011 3 252 18.3 395.63
## 41 0.03359 75.0 2.95 0 0.4280 7.024 15.8 5.4011 3 252 18.3 395.62
## 42 0.12744 0.0 6.91 0 0.4480 6.770 2.9 5.7209 3 233 17.9 385.41
## 43 0.14150 0.0 6.91 0 0.4480 6.169 6.6 5.7209 3 233 17.9 383.37
## 44 0.15936 0.0 6.91 0 0.4480 6.211 6.5 5.7209 3 233 17.9 394.46
## 45 0.12269 0.0 6.91 0 0.4480 6.069 40.0 5.7209 3 233 17.9 389.39
## 46 0.17142 0.0 6.91 0 0.4480 5.682 33.8 5.1004 3 233 17.9 396.90
## 47 0.18836 0.0 6.91 0 0.4480 5.786 33.3 5.1004 3 233 17.9 396.90
## 48 0.22927 0.0 6.91 0 0.4480 6.030 85.5 5.6894 3 233 17.9 392.74
## 49 0.25387 0.0 6.91 0 0.4480 5.399 95.3 5.8700 3 233 17.9 396.90
## 50 0.21977 0.0 6.91 0 0.4480 5.602 62.0 6.0877 3 233 17.9 396.90
## 51 0.08873 21.0 5.64 0 0.4390 5.963 45.7 6.8147 4 243 16.8 395.56
## 52 0.04337 21.0 5.64 0 0.4390 6.115 63.0 6.8147 4 243 16.8 393.97
## 53 0.05360 21.0 5.64 0 0.4390 6.511 21.1 6.8147 4 243 16.8 396.90
## 54 0.04981 21.0 5.64 0 0.4390 5.998 21.4 6.8147 4 243 16.8 396.90
## 55 0.01360 75.0 4.00 0 0.4100 5.888 47.6 7.3197 3 469 21.1 396.90
## 56 0.01311 90.0 1.22 0 0.4030 7.249 21.9 8.6966 5 226 17.9 395.93
## 57 0.02055 85.0 0.74 0 0.4100 6.383 35.7 9.1876 2 313 17.3 396.90
## 58 0.01432 100.0 1.32 0 0.4110 6.816 40.5 8.3248 5 256 15.1 392.90
## 59 0.15445 25.0 5.13 0 0.4530 6.145 29.2 7.8148 8 284 19.7 390.68
## 60 0.10328 25.0 5.13 0 0.4530 5.927 47.2 6.9320 8 284 19.7 396.90
## 61 0.14932 25.0 5.13 0 0.4530 5.741 66.2 7.2254 8 284 19.7 395.11
## 62 0.17171 25.0 5.13 0 0.4530 5.966 93.4 6.8185 8 284 19.7 378.08
## 63 0.11027 25.0 5.13 0 0.4530 6.456 67.8 7.2255 8 284 19.7 396.90
## 64 0.12650 25.0 5.13 0 0.4530 6.762 43.4 7.9809 8 284 19.7 395.58
## 65 0.01951 17.5 1.38 0 0.4161 7.104 59.5 9.2229 3 216 18.6 393.24
## 66 0.03584 80.0 3.37 0 0.3980 6.290 17.8 6.6115 4 337 16.1 396.90
## 67 0.04379 80.0 3.37 0 0.3980 5.787 31.1 6.6115 4 337 16.1 396.90
## 68 0.05789 12.5 6.07 0 0.4090 5.878 21.4 6.4980 4 345 18.9 396.21
## 69 0.13554 12.5 6.07 0 0.4090 5.594 36.8 6.4980 4 345 18.9 396.90
## 70 0.12816 12.5 6.07 0 0.4090 5.885 33.0 6.4980 4 345 18.9 396.90
## 71 0.08826 0.0 10.81 0 0.4130 6.417 6.6 5.2873 4 305 19.2 383.73
## 72 0.15876 0.0 10.81 0 0.4130 5.961 17.5 5.2873 4 305 19.2 376.94
## 73 0.09164 0.0 10.81 0 0.4130 6.065 7.8 5.2873 4 305 19.2 390.91
## 74 0.19539 0.0 10.81 0 0.4130 6.245 6.2 5.2873 4 305 19.2 377.17
## 75 0.07896 0.0 12.83 0 0.4370 6.273 6.0 4.2515 5 398 18.7 394.92
## 76 0.09512 0.0 12.83 0 0.4370 6.286 45.0 4.5026 5 398 18.7 383.23
## 77 0.10153 0.0 12.83 0 0.4370 6.279 74.5 4.0522 5 398 18.7 373.66
## 78 0.08707 0.0 12.83 0 0.4370 6.140 45.8 4.0905 5 398 18.7 386.96
## 79 0.05646 0.0 12.83 0 0.4370 6.232 53.7 5.0141 5 398 18.7 386.40
## 80 0.08387 0.0 12.83 0 0.4370 5.874 36.6 4.5026 5 398 18.7 396.06
## 81 0.04113 25.0 4.86 0 0.4260 6.727 33.5 5.4007 4 281 19.0 396.90
## 82 0.04462 25.0 4.86 0 0.4260 6.619 70.4 5.4007 4 281 19.0 395.63
## 83 0.03659 25.0 4.86 0 0.4260 6.302 32.2 5.4007 4 281 19.0 396.90
## 84 0.03551 25.0 4.86 0 0.4260 6.167 46.7 5.4007 4 281 19.0 390.64
## 85 0.05059 0.0 4.49 0 0.4490 6.389 48.0 4.7794 3 247 18.5 396.90
## 86 0.05735 0.0 4.49 0 0.4490 6.630 56.1 4.4377 3 247 18.5 392.30
## 87 0.05188 0.0 4.49 0 0.4490 6.015 45.1 4.4272 3 247 18.5 395.99
## 88 0.07151 0.0 4.49 0 0.4490 6.121 56.8 3.7476 3 247 18.5 395.15
## 89 0.05660 0.0 3.41 0 0.4890 7.007 86.3 3.4217 2 270 17.8 396.90
## 90 0.05302 0.0 3.41 0 0.4890 7.079 63.1 3.4145 2 270 17.8 396.06
## 91 0.04684 0.0 3.41 0 0.4890 6.417 66.1 3.0923 2 270 17.8 392.18
## 92 0.03932 0.0 3.41 0 0.4890 6.405 73.9 3.0921 2 270 17.8 393.55
## 93 0.04203 28.0 15.04 0 0.4640 6.442 53.6 3.6659 4 270 18.2 395.01
## 94 0.02875 28.0 15.04 0 0.4640 6.211 28.9 3.6659 4 270 18.2 396.33
## 95 0.04294 28.0 15.04 0 0.4640 6.249 77.3 3.6150 4 270 18.2 396.90
## 96 0.12204 0.0 2.89 0 0.4450 6.625 57.8 3.4952 2 276 18.0 357.98
## 97 0.11504 0.0 2.89 0 0.4450 6.163 69.6 3.4952 2 276 18.0 391.83
## 98 0.12083 0.0 2.89 0 0.4450 8.069 76.0 3.4952 2 276 18.0 396.90
## 99 0.08187 0.0 2.89 0 0.4450 7.820 36.9 3.4952 2 276 18.0 393.53
## 100 0.06860 0.0 2.89 0 0.4450 7.416 62.5 3.4952 2 276 18.0 396.90
## lstat medv
## 1 4.98 24.0
## 2 9.14 21.6
## 3 4.03 34.7
## 4 2.94 33.4
## 5 5.33 36.2
## 6 5.21 28.7
## 7 12.43 22.9
## 8 19.15 27.1
## 9 29.93 16.5
## 10 17.10 18.9
## 11 20.45 15.0
## 12 13.27 18.9
## 13 15.71 21.7
## 14 8.26 20.4
## 15 10.26 18.2
## 16 8.47 19.9
## 17 6.58 23.1
## 18 14.67 17.5
## 19 11.69 20.2
## 20 11.28 18.2
## 21 21.02 13.6
## 22 13.83 19.6
## 23 18.72 15.2
## 24 19.88 14.5
## 25 16.30 15.6
## 26 16.51 13.9
## 27 14.81 16.6
## 28 17.28 14.8
## 29 12.80 18.4
## 30 11.98 21.0
## 31 22.60 12.7
## 32 13.04 14.5
## 33 27.71 13.2
## 34 18.35 13.1
## 35 20.34 13.5
## 36 9.68 18.9
## 37 11.41 20.0
## 38 8.77 21.0
## 39 10.13 24.7
## 40 4.32 30.8
## 41 1.98 34.9
## 42 4.84 26.6
## 43 5.81 25.3
## 44 7.44 24.7
## 45 9.55 21.2
## 46 10.21 19.3
## 47 14.15 20.0
## 48 18.80 16.6
## 49 30.81 14.4
## 50 16.20 19.4
## 51 13.45 19.7
## 52 9.43 20.5
## 53 5.28 25.0
## 54 8.43 23.4
## 55 14.80 18.9
## 56 4.81 35.4
## 57 5.77 24.7
## 58 3.95 31.6
## 59 6.86 23.3
## 60 9.22 19.6
## 61 13.15 18.7
## 62 14.44 16.0
## 63 6.73 22.2
## 64 9.50 25.0
## 65 8.05 33.0
## 66 4.67 23.5
## 67 10.24 19.4
## 68 8.10 22.0
## 69 13.09 17.4
## 70 8.79 20.9
## 71 6.72 24.2
## 72 9.88 21.7
## 73 5.52 22.8
## 74 7.54 23.4
## 75 6.78 24.1
## 76 8.94 21.4
## 77 11.97 20.0
## 78 10.27 20.8
## 79 12.34 21.2
## 80 9.10 20.3
## 81 5.29 28.0
## 82 7.22 23.9
## 83 6.72 24.8
## 84 7.51 22.9
## 85 9.62 23.9
## 86 6.53 26.6
## 87 12.86 22.5
## 88 8.44 22.2
## 89 5.50 23.6
## 90 5.70 28.7
## 91 8.81 22.6
## 92 8.20 22.0
## 93 8.16 22.9
## 94 6.21 25.0
## 95 10.59 20.6
## 96 6.65 28.4
## 97 11.34 21.4
## 98 4.21 38.7
## 99 3.57 43.8
## 100 6.19 33.2
Kemudian kita menggunakan fungsi lm() untuk
menyesuaikan data ke garis regresi linear:
fit2 <-lm(medv~rm,data=Boston2)
Variabel respons harus berada di sisi kiri dari tanda ~ dan variabel penjelas harus berada di sisi kanan dalam fungsi lm(). Sekarang variabel “fit2” akan berisi semua hasil dari fungsi lm(). Gunakan fungsi summary() untuk melihat hasilnya:
summary(fit2);
##
## Call:
## lm(formula = medv ~ rm, data = Boston2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.7668 -1.9506 0.3969 2.2360 5.8490
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -41.4283 4.0616 -10.20 <2e-16 ***
## rm 10.2235 0.6495 15.74 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.172 on 98 degrees of freedom
## Multiple R-squared: 0.7166, Adjusted R-squared: 0.7137
## F-statistic: 247.8 on 1 and 98 DF, p-value: < 2.2e-16
Bagian yang paling penting yang harus difokuskan adalah perkiraan nilai beta1 dan beta0:
Yaitu pada bagian ini :
Coefficients: Estimate Std.ErrortvaluePr(>|t|) (Intercept)
-41.42834.0616-10.20<2e-16 rm 10.2235
0.649515.74<2e-16 — Signif. codes:0
’0.001**'0.01
’0.05*.'0.1’1
inp_img4 <- image_read("slr3.png")
plot(inp_img4)
Untuk memplotkan di gambar yang ditunjukkan oleh gambar 7.1, kita dapat menggunakan package ggplot 2, seperti berikut:
library(ggplot2)
library(ggthemes)
require(ggplot2)
require(ggthemes)
fit2 <- lm(medv ~ rm, data=Boston2)
ggplot2 <- ggplot()+
geom_point(aes(x =Boston2$rm,y=fit2$fitted.values),shape=1,
alpha =0.2)+geom_line(data=fortify(fit2),
aes(x =rm,y=.fitted),color="green")+
geom_segment(aes(x =Boston2$rm,xend=Boston2$rm,
y =fit2$fitted.values,yend=Boston2$medv))+
geom_point(data =Boston2,aes(x=rm,y=medv),color="red")+
theme_tufte()
ggplot2
Di atas ini adalah output yang akan ditampilkan pad gambar 7.1 di atas.
Sekian pembahasan kita kali ini tentang Regresi Linear Sederhana.