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 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
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"))