Analisis Regresi Linear Berganda
Efisiensi Bahan Bakar
Dataset yang kita gunakan untuk analisis regresi berganda kali ini adalah dataset autompg. Dataset autompg adalah dataset untuk memprediksi konsumsi bahan bakar siklus kota dalam mil per galon (mpg) berdasarkan 3 atribut diskrit multi-nilai dan 5 atribut kontinu.
Kalian dapat mendownload dataset nya di sini:
| Variable_Name | Role | Type | Missing |
|---|---|---|---|
| mpg | Target | Continuous | no |
| cyl | Feature | Multi-valued Discrete | no |
| disp | Feature | Continuous | no |
| hp | Feature | Continuous | no |
| wt | Feature | Continuous | no |
| acc | Feature | Continuous | no |
| year | Feature | Multi-valued Discrete | no |
Berdasarkan tabel variabel di atas, dataset Auto MPG terdiri dari satu variabel target dan beberapa variabel prediktor. Variabel mpg berperan sebagai variabel dependen (target) yang bersifat kontinu, karena nilainya berada pada rentang tertentu dan dapat berupa bilangan pecahan.
Seluruh variabel lainnya seperti disp, hp, wt, dan acc dikategorikan sebagai variabel kontinu karena merepresentasikan ukuran fisik atau performa kendaraan yang dapat bernilai real (tidak terbatas pada bilangan bulat saja).
Sementara itu, variabel cyl dan year termasuk dalam kategori multi-valued discrete, karena memiliki sejumlah nilai diskrit yang terbatas namun lebih dari dua kategori.
Selain itu, berdasarkan hasil identifikasi, tidak terdapat missing value pada seluruh variabel dalam dataset, sehingga data dinyatakan lengkap dan siap digunakan untuk analisis lebih lanjut tanpa perlu dilakukan penanganan data hilang.
DISCLAIMER!, kita akan menganalisis variabel-variabel kontinu.
## mpg cyl disp hp wt acc year
## 1 18 8 307 130 3504 12.0 70
## 2 15 8 350 165 3693 11.5 70
## 3 18 8 318 150 3436 11.0 70
## 4 16 8 304 150 3433 12.0 70
## 5 17 8 302 140 3449 10.5 70
## 6 15 8 429 198 4341 10.0 70
Pada dataset terdapat lima variabel kontinu, yaitu MPG, Displacement (disp), Horsepower (hp), Weight (wt), Acceleration (acc) di mana;
## mpg cyl disp hp wt
## Min. : 9.00 Min. :3.000 Min. : 68.0 Min. : 46.0 Min. :1613
## 1st Qu.:17.00 1st Qu.:4.000 1st Qu.:105.0 1st Qu.: 75.0 1st Qu.:2224
## Median :22.45 Median :4.000 Median :151.0 Median : 94.5 Median :2811
## Mean :23.42 Mean :5.479 Mean :194.7 Mean :104.6 Mean :2980
## 3rd Qu.:29.00 3rd Qu.:8.000 3rd Qu.:293.2 3rd Qu.:128.0 3rd Qu.:3618
## Max. :46.60 Max. :8.000 Max. :455.0 Max. :230.0 Max. :5140
## acc year
## Min. : 8.00 Min. :70.00
## 1st Qu.:13.80 1st Qu.:73.00
## Median :15.50 Median :76.00
## Mean :15.55 Mean :75.95
## 3rd Qu.:17.07 3rd Qu.:79.00
## Max. :24.80 Max. :82.00
pairs(cbind(MPG = mpg,
Displacement = disp,
Horsepower=hp,
Weight=wt,
Acceleration=acc),
pch=21,
main = "Plot Pencar Variabel Kontinu",
bg = "#f2b5b5",
col.main = "lightpink3",
col.lab = "lightblue3",
col.axis = "red2")library(psych)
pairs.panels(cbind(MPG = mpg,
Displacement = disp,
Horsepower=hp,
Weight=wt,
Acceleration=acc),
pch=21,
bg = "#f2b5b5",
col.main = "lightpink3",
col.lab = "lightblue3",
col.axis = "red2")## [,1]
## [1,] 18
## [2,] 15
## [3,] 18
## [4,] 16
## [5,] 17
## [6,] 15
## disp hp wt acc
## [1,] 1 307 130 3504 12.0
## [2,] 1 350 165 3693 11.5
## [3,] 1 318 150 3436 11.0
## [4,] 1 304 150 3433 12.0
## [5,] 1 302 140 3449 10.5
## [6,] 1 429 198 4341 10.0
## [,1]
## 45.128499848
## disp -0.005973789
## hp -0.043131278
## wt -0.005289997
## acc -0.017322657
## [1] 45.1285
## [1] -0.005973789
## [1] -0.04313128
## [1] -0.005289997
## [1] -0.005289997
##
## Call:
## lm(formula = mpg ~ disp + hp + wt + acc, data = autompg)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.3587 -2.7980 -0.3478 2.1985 16.2607
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 45.1284998 2.4750464 18.233 < 2e-16 ***
## disp -0.0059738 0.0067249 -0.888 0.37493
## hp -0.0431313 0.0166403 -2.592 0.00991 **
## wt -0.0052900 0.0008129 -6.507 2.38e-10 ***
## acc -0.0173227 0.1264545 -0.137 0.89111
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.256 on 385 degrees of freedom
## Multiple R-squared: 0.7065, Adjusted R-squared: 0.7034
## F-statistic: 231.6 on 4 and 385 DF, p-value: < 2.2e-16
persamaan regresi dugaan dari data tersebut:
\(\hat{y}\) = 45.128 - 0.00597\(x_1\) - 0.04313\(x_2\) - 0.00529\(x_3\) - 0.01732\(x_4\)
Estimasi parameter regresi nya :
y <- matrix(c(mpg),ncol=1)
x <- cbind(1,disp,hp,wt,acc)
n <- nrow(autompg)
J <- matrix(1, n, n) #matriks persegi dengan elemen 1
JKT <- t(y)%*%(y) - ((1/nrow(autompg))*t(y)%*%J%*%(y))
JKT## [,1]
## [1,] 23761.67
## [,1]
## [1,] 6974.882
## [,1]
## [1,] 16786.79
## [1] 4
## [,1]
## [1,] 4196.697
## [,1]
## [1,] 18.11658
Fhitung <- KTR/KTG
anova_table <- data.frame(
Sumber = c("Regresi", "Galat", "Total"),
Db = c(k, n-k-1, k+n-k-1),
JK = c(JKR, JKG, JKT),
KT = c(KTR, KTG, ""),
F = c(Fhitung, "", "")
)
knitr::kable(anova_table, digits = 3, caption = "Tabel ANOVA",align = "c")| Sumber | Db | JK | KT | F |
|---|---|---|---|---|
| Regresi | 4 | 16786.790 | 4196.69749641875 | 231.64959013812 |
| Galat | 385 | 6974.882 | 18.1165763941844 | |
| Total | 389 | 23761.672 |
## Analysis of Variance Table
##
## Response: mpg
## Df Sum Sq Mean Sq F value Pr(>F)
## disp 1 15391.8 15391.8 849.5997 < 2.2e-16 ***
## hp 1 383.2 383.2 21.1501 5.770e-06 ***
## wt 1 1011.4 1011.4 55.8298 5.361e-13 ***
## acc 1 0.3 0.3 0.0188 0.8911
## Residuals 385 6974.9 18.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] 16786.79
## [1] 6974.882
## [1] 23761.67
## [1] 4
## [1] 385
## [1] 389
## [1] 4196.697
## [1] 18.11658
## [1] 231.6496
## Warning: package 'GGally' was built under R version 4.5.3
## Loading required package: ggplot2
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
## The following object is masked from 'autompg':
##
## mpg
Berdasarkan dari plot pencar:
y <- matrix(c(mpg),ncol=1)
x <- cbind(1,disp,hp,wt,acc)
n <- nrow(autompg)
J <- matrix(1, n, n)
JKT <- t(y)%*%(y) - ((1/nrow(autompg))*t(y)%*%J%*%(y))
b <- (solve(t(x)%*%(x))) %*% (t(x)%*%(y))
JKG <- t(y)%*%(y) - t(b)%*%t(x)%*%(y)
Koef_Det <- 1 - (JKG/JKT)
Koef_Det## [,1]
## [1,] 0.706465
Koefisien determinasi (\(R^2\)) sebesar 0.7065 menunjukkan bahwa 70.65% keragaman dari mpg dapat dijelaskan oleh keragaman variabel prediktor yang digunakan dalam model, yaitu displacement, horsepower, weight, dan acceleration. Sementara itu, sisanya sebesar 29.35% dijelaskan oleh faktor lain di luar model.
y <- matrix(c(mpg),ncol=1)
x <- cbind(1,disp,hp,wt,acc)
n <- nrow(autompg)
k <- ncol(x)-1
J <- matrix(1, n, n)
JKT <- t(y)%*%(y) - ((1/nrow(autompg))*t(y)%*%J%*%(y))
b <- (solve(t(x)%*%(x))) %*% (t(x)%*%(y))
JKG <- t(y)%*%(y) - t(b)%*%t(x)%*%(y)
Adjusted_Det <- 1 - ((JKG / (n - k - 1)) / (JKT / (n - 1)))
Adjusted_Det## [,1]
## [1,] 0.7034153
Koefisien determinasi terkoreksi (\(R^2_a\)) sebesar 0.7034 menunjukkan bahwa setelah mempertimbangkan jumlah variabel prediktor dalam model, sebesar 70.34% keragaman pada variabel mpg masih dapat dijelaskan oleh model. Nilai ini tidak jauh berbeda dengan (\(R^2\)), sehingga dapat dikatakan bahwa model yang digunakan sudah cukup baik dan tidak mengalami penambahan variabel yang tidak relevan.
\(H_0 : \beta_1 = \beta_2 = \beta_3 = \beta_4 = 0\)
\(H_1 : \exists \, \beta_i \neq 0,\; i = 1,2,3,4\)
## [1] 3.368207
\(H_0\) ditolak jika \(F > 3.3682\)
y <- matrix(c(mpg),ncol=1)
x <- cbind(1,disp,hp,wt,acc)
n <- nrow(autompg)
k <- ncol(x)-1
J <- matrix(1, n, n)
JKT <- t(y)%*%(y) - ((1/nrow(autompg))*t(y)%*%J%*%(y))
b <- (solve(t(x)%*%(x))) %*% (t(x)%*%(y))
JKG <- t(y)%*%(y) - t(b)%*%t(x)%*%(y)
JKR <- JKT - JKG
Fhit <- (JKR/k)/(JKG/(n-k-1))
Fhit## [,1]
## [1,] 231.6496
Hitung standar error bagi b, \(s\{b\}\)
\[
s^2\{b\} = KTG (X'X)^{-1}
\]
\[
s^2\{b\} =
\begin{bmatrix}
s^2\{b_0\} & s\{b_0,b_1\} & \cdots & s\{b_0,b_{4}\} \\
s\{b_1,b_0\} & s^2\{b_1\} & \cdots & s\{b_1,b_{4}\} \\
\vdots & \vdots & \ddots & \vdots \\
s\{b_{4},b_0\} & s\{b_{4},b_1\} & \cdots & s^2\{b_{4}\}
\end{bmatrix}
\]
y <- matrix(c(mpg),ncol=1)
x <- cbind(1,disp,hp,wt,acc)
n <- nrow(autompg)
k <- ncol(x)-1
KTG <- JKG/(n-k-1)
KTG <- as.numeric(KTG) #karena hasil KTG masih berupa tipe matriks bukan num
KTG## [1] 18.11658
## disp hp wt acc
## 6.1258547866 3.201830e-03 -2.713213e-02 1.304766e-04 -2.736350e-01
## disp 0.0032018299 4.522438e-05 -2.923356e-05 -3.835957e-06 1.596262e-04
## hp -0.0271321342 -2.923356e-05 2.768982e-04 -5.669372e-06 1.335547e-03
## wt 0.0001304766 -3.835957e-06 -5.669372e-06 6.608454e-07 -4.889691e-05
## acc -0.2736349808 1.596262e-04 1.335547e-03 -4.889691e-05 1.599075e-02
## disp hp wt acc
## 2.475046421 0.006724907 0.016640259 0.000812924 0.126454519