Dalam regresi linear sederhana, tujuan utama adalah mencari hubungan linier antara variabel independen (x) dan variabel dependen (y), yang dapat diwakili oleh persamaan garis lurus. Persamaan regresi linear sederhana dapat dituliskan sebagai:
y = b0 + b1x
Di mana: - y adalah variabel dependen (variabel target) yang ingin kita prediksi, - x adalah variabel independen (fitur) yang digunakan untuk memprediksi y, - b0 adalah intersep, yaitu nilai prediksi y ketika x = 0, - b1 adalah koefisien regresi, yang menentukan kecenderungan dan pengaruh variabel independen terhadap variabel dependen.
Dalam regresi linear sederhana, tujuan kita adalah menemukan nilai optimal untuk koefisien b0 dan b1, sehingga model regresi linear memberikan perkiraan yang paling akurat untuk variabel dependen berdasarkan variabel independen yang diberikan. Dengan menggunakan teknik statistik dan metode seperti metode kuadrat terkecil, kita dapat mengestimasi nilai koefisien yang optimal untuk mencocokkan garis regresi dengan data yang ada.
Dengan memahami regresi linear sederhana, kita dapat menganalisis dan memprediksi hubungan antara variabel independen dan dependen dalam konteks yang lebih sederhana. Regresi linier sederhana adalah fondasi penting dalam pemodelan regresi yang lebih kompleks dan dapat digunakan dalam berbagai bidang, termasuk ekonomi, ilmu sosial, ilmu alam, dan lainnya.
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.