Nama : Fairuz Ardhan Haunan

NIM : 220605110038

Kelas : Linear Algebra A

Dosen Pengampu : Prof. Dr. Suhartono, M.Kom.

Jurusan : Teknik Informatika

Universitas : UIN Maulana Malik Ibrahim Malang

Regresi Linear Sederhana

Regresi Linear Sederhana adalah sebuah regresi linear dengan satu penjelasan variabel. Untuk mempelajari materi ini, kita akan menggunakan data set “Boston” yang berasal dari package MASS di R. Data set Boston memiliki 506 data observasi dari rumah-rumah yang berada di area Boston. Kita upload data set tersebut.

library(MASS)
data(Boston)

Dengan data set tersebut, anggap saja kita akan memprediksikan nilai median dari orang-orang yang tinggal di rumah area Boston berdasarkan rata-rata jumlah kamar. Variable “medv” (nilai median dari rumah-rumah dalam ribuan dolar) adalah variable yang mendasar dan variable “rm” (rata-rata angka dari ruangan pada sebuah rumah) adalah variable yang independent. Dalam data sains dan juga statistik, dependent variable disebut sebagai variabel respons dan variable yang independet sebagai variabel explanatory.

Sekarang kita akan melihat 100 observasi pertama dari data set “Boston” ;

Boston2 <- Boston[1:100,]

Kita gunakan fungsi Im() untuk menyamakan data ke garis regresi linear

fit2 <- lm(medv ~ rm, data=Boston2)

Variabel response harus berada di sisi kiri dari tanda ~ dan variable explanatory harus berada pada sisi kanan dari fungsi Im(). Saat ini variable fit2 mengandung seluruh hasil dari fungsi Im(). Gunakan fungsi summary() untuk melihat yang kita miliki

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

Kita dapat menampilkan diagram plot dari Summary tersebut dengan menggunakan package ggplot2

require(ggplot2)
## Loading required package: ggplot2
require(ggthemes)
## Loading required package: 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

Multiple Regresi Linear

Sebelumnya, kita telah mempelajari bahwasannya harga dari rumah-rumah di Boston berdasarkan jumlah adanya kamar adalah

House price = 10.2235 · Number of rooms − 41.4283.

Namun, apabila sebuah rumah memiliki dua kamar maka perkiraan harga kamarnya menjadi :

House price = 10.2235 · (2) − 41.4283 = −20.9813.

Untuk menjalankan banyak regresi linear, kita akan menggunakan kembali fungsi Im(). Kita akan memprediksikan harga rumah dari varabel “medv” sebagai variable response, yang berdasar pada variable explanatory “crim”, “zn”, “indus”, “rm”, “age”, ’dis”, “tax”, dan “rad”.

fit3 <- lm(medv ~ crim + zn + indus + rm + age + dis + tax + rad,
data=Boston2)

variabel “fit3” mengandung semua hasil dari fungsi Im(). Kita gunakan fungsi summary() untuk melihat yang kita miliki.

summary(fit3)
## 
## Call:
## lm(formula = medv ~ crim + zn + indus + rm + age + dis + tax + 
##     rad, data = Boston2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.5135 -1.3478 -0.2007  1.1933  8.1711 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.054e+01  4.515e+00  -4.549 1.66e-05 ***
## crim        -2.130e+00  7.378e-01  -2.887  0.00486 ** 
## zn          -4.792e-04  1.321e-02  -0.036  0.97113    
## indus       -1.893e-01  9.849e-02  -1.922  0.05770 .  
## rm           8.322e+00  5.424e-01  15.342  < 2e-16 ***
## age         -6.504e-02  9.905e-03  -6.566 3.12e-09 ***
## dis         -1.700e-01  2.378e-01  -0.715  0.47663    
## tax         -8.882e-03  5.834e-03  -1.522  0.13138    
## rad         -1.404e-02  2.022e-01  -0.069  0.94479    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.204 on 91 degrees of freedom
## Multiple R-squared:  0.873,  Adjusted R-squared:  0.8618 
## F-statistic: 78.16 on 8 and 91 DF,  p-value: < 2.2e-16

Kemudian data diatas akan kita visualisasikan dengan menggunakan package-package dibawah ini :

library(rgl)
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(scatterplot3d)
library(FactoClass)
## Loading required package: ade4
## Loading required package: ggrepel
## Loading required package: xtable
library(MASS)
Boston2 <- Boston[1:50,]

Lalu kita samakan data dengan sejumlah regresi linear dengan variabel “rm” dan “age” melalui fungsi Im().

fit3 <- lm(medv ~ rm +age, data=Boston2)
sp <- scatterplot3d::scatterplot3d(Boston2$rm,
Boston2$age,
Boston2$medv,
angle = 45)
sp$plane3d(fit3, lty.box = "solid")#,
# polygon_args = list(col = rgb(.1, .2, .7, .5)) # Fill color
orig <- sp$xyz.convert(Boston2$rm,
Boston2$age,
Boston2$medv)
plane <- sp$xyz.convert(Boston2$rm,
Boston2$age, fitted(fit3))
i.negpos <- 1 + (resid(fit3) > 0)
segments(orig$x, orig$y, plane$x, plane$y,
col = c("blue", "red")[i.negpos],
lty = 1) # (2:1)[i.negpos]
sp <- FactoClass::addgrids3d(Boston2$rm,
Boston2$age,
Boston2$medv,
angle = 45,
grid = c("xy", "xz", "yz"))