Memuat semua paket tambahan yang digunakan.
library(GGally)
library(dplyr)
Data yang digunakan adalah dari R (R data set),
mtcars
. Data ini digunakan untuk memprediksi efisiensi
bahan bakar mobil.
data("mtcars")
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Membuat tiga model regresi linier untuk memprediksi mpg berdasarkan prediktor (variabel X) yang berbeda. Prediktor yang digunakan adalah cyl pada model pertama (regresi linier sederhana), cyl, wt, dan hp pada model kedua (regresi linier berganda), serta cyl dan hp pada model ketiga (regresi linier berganda).
Model regresi dapat dibuat menggunakan fungsi lm()
.
# RLS
rls <- lm(formula = mpg ~ cyl, data = mtcars)
# RLB
rlb1 <- lm(mtcars$mpg ~ mtcars$cyl + mtcars$wt + mtcars$hp)
rlb2 <- lm(mtcars$mpg ~ mtcars$cyl + mtcars$hp)
Setiap model dievaluasi dengan memeriksa ringkasannya, hal ini dapat
dilakukan dengan fungsi summary()
. Ringkasan tersebut
memberikan informasi tentang koefisien, standar eror, nilai t
(t-value), nilai p (p-value), dan R-kuadrat.
# RLS
summary(rls)
##
## Call:
## lm(formula = mpg ~ cyl, data = mtcars)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.9814 -2.1185 0.2217 1.0717 7.5186
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 37.8846 2.0738 18.27 < 2e-16 ***
## cyl -2.8758 0.3224 -8.92 6.11e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.206 on 30 degrees of freedom
## Multiple R-squared: 0.7262, Adjusted R-squared: 0.7171
## F-statistic: 79.56 on 1 and 30 DF, p-value: 6.113e-10
# RLB
summary(rlb1)
##
## Call:
## lm(formula = mtcars$mpg ~ mtcars$cyl + mtcars$wt + mtcars$hp)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.9290 -1.5598 -0.5311 1.1850 5.8986
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 38.75179 1.78686 21.687 < 2e-16 ***
## mtcars$cyl -0.94162 0.55092 -1.709 0.098480 .
## mtcars$wt -3.16697 0.74058 -4.276 0.000199 ***
## mtcars$hp -0.01804 0.01188 -1.519 0.140015
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.512 on 28 degrees of freedom
## Multiple R-squared: 0.8431, Adjusted R-squared: 0.8263
## F-statistic: 50.17 on 3 and 28 DF, p-value: 2.184e-11
summary(rlb2)
##
## Call:
## lm(formula = mtcars$mpg ~ mtcars$cyl + mtcars$hp)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.4948 -2.4901 -0.1828 1.9777 7.2934
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 36.90833 2.19080 16.847 < 2e-16 ***
## mtcars$cyl -2.26469 0.57589 -3.933 0.00048 ***
## mtcars$hp -0.01912 0.01500 -1.275 0.21253
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.173 on 29 degrees of freedom
## Multiple R-squared: 0.7407, Adjusted R-squared: 0.7228
## F-statistic: 41.42 on 2 and 29 DF, p-value: 3.162e-09
Berdasarkan hasil ringkasan, model dengan prediktor cyl, wt, dan hp (rlb1) memiliki nilai R-kuadrat tertinggi, yang menunjukkan bahwa model tersebut memberikan kesesuaian data terbaik di antara ketiga model. Prediktor hp menunjukan tidak signifikan secara statistik secara konsisten dengan adanya prediktor lain secara konsisten.
Berdasarkan hasil analisis model, prediktor hp dapat dieliminasi karena secara konsisten tidak signifikan secara statistik.
Pemilihan model dengan membandingkannya menggunakan residual sum of squares (RSS), R-kuadrat (koefisien determinasi), dan Akaike Information Criterion (AIC). Model terbaik adalah model yang memiliki nilai RSS yang rendah, koefisien determinasi yang tinggi, dan nilai AIC terendah.
# model baru
new.model <- lm(mtcars$mpg ~ mtcars$cyl + mtcars$wt)
summary(new.model)
##
## Call:
## lm(formula = mtcars$mpg ~ mtcars$cyl + mtcars$wt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.2893 -1.5512 -0.4684 1.5743 6.1004
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 39.6863 1.7150 23.141 < 2e-16 ***
## mtcars$cyl -1.5078 0.4147 -3.636 0.001064 **
## mtcars$wt -3.1910 0.7569 -4.216 0.000222 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.568 on 29 degrees of freedom
## Multiple R-squared: 0.8302, Adjusted R-squared: 0.8185
## F-statistic: 70.91 on 2 and 29 DF, p-value: 6.809e-12
# pemilihan model
AIC(rls)
## [1] 169.3064
AIC(rlb1)
## [1] 155.4766
AIC(rlb2)
## [1] 169.5618
AIC(new.model)
## [1] 156.0101
Model baru memiliki nilai R-kuadrat yang tidak berbeda jauh dengan model rlb1, yang menunjukkan bahwa eliminasi prediktor hp tidak memberikan efek yang signifikan. Meskipun nilai AIC sedikit lebih rendang dibandingkan dengan model rlb1.
Berdasarkan hasil analisis, model baru dengan prediktor cyl dan wt merupakan model yang paling sesuai untuk data. Karena semua prediktor signifikan secara statistik dan nilai AIC yang rendah.
Asumsi regresi linier harus terpenuhi sebelum menggunakan model yang sudah dibuat sebelumnya. Adapun beberapa asumsi regresi linier adalah: linearitas, normalitas, dan autokorelasi.
Hubungan antara variabel tidak bebas (respon) dan variabel bebas (prediktor) harus linier.
new.model$fitted.values
## 1 2 3 4 5 6 7 8
## 22.27914 21.46545 26.25203 20.38052 16.64696 19.59873 16.23213 23.47588
## 9 10 11 12 13 14 15 16
## 23.60352 19.66255 19.66255 14.63665 15.72158 15.56203 10.87130 10.31607
## 17 18 19 20 21 22 23 24
## 10.56816 26.63494 28.50166 27.79965 25.78934 16.39168 16.66291 15.37057
## 25 26 27 28 29 30 31 32
## 15.35461 27.48055 26.82640 28.82714 17.50852 21.80050 16.23213 24.78418
plot(new.model$fitted.values, new.model$residuals)
abline(0, 0, col = "red")
qqnorm(new.model$residuals)
qqline(new.model$residuals, col = "red")
Distribusi dari residu harus mengikuti distribusi normal, untuk mengecek asumsi ini dapat menggunakan histogram.
# histogram dari residu yang belum distandarisasi
hist(residuals(new.model), col = "#56B4E9", freq = FALSE)
# residu terstandarisasi
std_Res <- (residuals(new.model) - mean(residuals(new.model))) / sd(residuals(new.model))
# histogram dari residu yang distandarisasi
hist(std_Res, col = "#56B4E9", freq = FALSE)
curve(dnorm, add = TRUE) #menambahkan kurva normal
Prediktor tidak saling berkorelasi antara satu dengan lainnya.
ggpairs(new.model)
Jika asumsi terpenuhi maka analisis regresi linier dapat dilakukan, tetapi jika tidak maka analisis regresi linier tidak dapat dilakukan. Jika ingin tetap melakukannya, maka data perlu diproses terlebih dahulu (transformasi data).
## R version 4.3.2 (2023-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=English_United States.utf8
## [2] LC_CTYPE=English_United States.utf8
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.utf8
##
## time zone: Asia/Jakarta
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] dplyr_1.1.4 GGally_2.2.1 ggplot2_3.5.0
##
## loaded via a namespace (and not attached):
## [1] gtable_0.3.4 jsonlite_1.8.8 highr_0.10 compiler_4.3.2
## [5] tidyselect_1.2.0 Rcpp_1.0.12 ggstats_0.5.1 tidyr_1.3.1
## [9] jquerylib_0.1.4 scales_1.3.0 yaml_2.3.8 fastmap_1.1.1
## [13] R6_2.5.1 plyr_1.8.9 labeling_0.4.3 generics_0.1.3
## [17] knitr_1.45 tibble_3.2.1 munsell_0.5.0 bslib_0.6.1
## [21] pillar_1.9.0 RColorBrewer_1.1-3 rlang_1.1.3 utf8_1.2.4
## [25] cachem_1.0.8 xfun_0.42 sass_0.4.8 cli_3.6.2
## [29] withr_3.0.0 magrittr_2.0.3 digest_0.6.34 grid_4.3.2
## [33] rstudioapi_0.15.0 lifecycle_1.0.4 vctrs_0.6.5 evaluate_0.23
## [37] glue_1.7.0 farver_2.1.1 fansi_1.0.6 colorspace_2.1-0
## [41] rmarkdown_2.25 purrr_1.0.2 tools_4.3.2 pkgconfig_2.0.3
## [45] htmltools_0.5.7