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.