Memuat Paket

Memuat semua paket tambahan yang digunakan.

library(GGally)
library(dplyr)

Memuat Data

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 Model Regresi

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)

Analisis Model

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.

Model Baru dan Pemilihan Model

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

Asumsi regresi linier harus terpenuhi sebelum menggunakan model yang sudah dibuat sebelumnya. Adapun beberapa asumsi regresi linier adalah: linearitas, normalitas, dan autokorelasi.

Linearitas

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

Normalitas

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

Autokorelasi

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

Session Info:

## 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