Independent Exercise: Practice Data Science

Name : Naufal Akmal Rizqulloh
NIM : G6401231065
Day, Date (PRactice) : Wednesday, 23 September 2026 (4)
Teacher : Dr. Bagus Sartono, S.Si, M.Si
Grade :


Preparation

Memuat package dan data yang diperlukan, serta menangani missing values.

library(ISLR2)
library(tidyverse)
library(broom)
library(car)
library(leaps)

data("Hitters")
hitters <- Hitters %>% drop_na()

1. Fit a linear regression model using all predictors

Membuat model regresi linear berganda dengan semua prediktor yang ada pada dataset hitters.

mod_full_all <- lm(Salary ~ ., data = hitters)
summary(mod_full_all)
## 
## Call:
## lm(formula = Salary ~ ., data = hitters)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -907.62 -178.35  -31.11  139.09 1877.04 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  163.10359   90.77854   1.797 0.073622 .  
## AtBat         -1.97987    0.63398  -3.123 0.002008 ** 
## Hits           7.50077    2.37753   3.155 0.001808 ** 
## HmRun          4.33088    6.20145   0.698 0.485616    
## Runs          -2.37621    2.98076  -0.797 0.426122    
## RBI           -1.04496    2.60088  -0.402 0.688204    
## Walks          6.23129    1.82850   3.408 0.000766 ***
## Years         -3.48905   12.41219  -0.281 0.778874    
## CAtBat        -0.17134    0.13524  -1.267 0.206380    
## CHits          0.13399    0.67455   0.199 0.842713    
## CHmRun        -0.17286    1.61724  -0.107 0.914967    
## CRuns          1.45430    0.75046   1.938 0.053795 .  
## CRBI           0.80771    0.69262   1.166 0.244691    
## CWalks        -0.81157    0.32808  -2.474 0.014057 *  
## LeagueN       62.59942   79.26140   0.790 0.430424    
## DivisionW   -116.84925   40.36695  -2.895 0.004141 ** 
## PutOuts        0.28189    0.07744   3.640 0.000333 ***
## Assists        0.37107    0.22120   1.678 0.094723 .  
## Errors        -3.36076    4.39163  -0.765 0.444857    
## NewLeagueN   -24.76233   79.00263  -0.313 0.754218    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 315.6 on 243 degrees of freedom
## Multiple R-squared:  0.5461, Adjusted R-squared:  0.5106 
## F-statistic: 15.39 on 19 and 243 DF,  p-value: < 2.2e-16

2. Perform backward selection

Melakukan backward selection menggunakan fungsi regsubsets dengan kriteria evaluasi model hingga 19 prediktor (maksimal).

reg_backward_all <- regsubsets(Salary ~ ., data = hitters, method = "backward", nvmax = 19)
summary_backward_all <- summary(reg_backward_all)

3. Perform forward selection

Melakukan forward selection menggunakan fungsi regsubsets.

reg_forward_all <- regsubsets(Salary ~ ., data = hitters, method = "forward", nvmax = 19)
summary_forward_all <- summary(reg_forward_all)

4. Determine the model based on BIC

Mencari jumlah variabel dengan nilai BIC terkecil untuk masing-masing metode (backward dan forward).

# Backward Selection berdasarkan BIC terkecil
best_backward_all <- which.min(summary_backward_all$bic)
cat("Jumlah prediktor terbaik (Backward):", best_backward_all, "\n")
## Jumlah prediktor terbaik (Backward): 8
coef(reg_backward_all, id = best_backward_all)
##  (Intercept)        AtBat         Hits        Walks        CRuns         CRBI 
##  117.1520434   -2.0339209    6.8549136    6.4406642    0.7045391    0.5273238 
##       CWalks    DivisionW      PutOuts 
##   -0.8066062 -123.7798366    0.2753892
# Forward Selection berdasarkan BIC terkecil
best_forward_all <- which.min(summary_forward_all$bic)
cat("Jumlah prediktor terbaik (Forward):", best_forward_all, "\n")
## Jumlah prediktor terbaik (Forward): 6
coef(reg_forward_all, id = best_forward_all)
##  (Intercept)        AtBat         Hits        Walks         CRBI    DivisionW 
##   91.5117981   -1.8685892    7.6043976    3.6976468    0.6430169 -122.9515338 
##      PutOuts 
##    0.2643076

5. Compare the variables selected by forward and backward selection

Berdasarkan hasil pemodelan menggunakan kriteria nilai BIC terkecil, dapat dilihat perbandingan variabel yang terpilih:

  • Forward Selection (6 prediktor): AtBat, Hits, Walks, CRBI, DivisionW, PutOuts.
  • Backward Selection (8 prediktor): AtBat, Hits, Walks, CRuns, CRBI, CWalks, DivisionW, PutOuts.

Keduanya memilih variabel utama yang sama, namun backward selection menyertakan 2 variabel ekstra yaitu CRuns dan CWalks. Hal ini bisa terjadi karena metode komputasinya yang berbeda arah dalam mengeliminasi/menambahkan variabel.

6. Perform diagnostic checks on the resulting model

Kita akan menggunakan model dari hasil Backward Selection (8 prediktor) untuk melakukan uji diagnostik.

# Membangun ulang model regresi linear berdasarkan hasil backward selection (8 prediktor)
mod_final <- lm(Salary ~ AtBat + Hits + Walks + CRuns + CRBI + CWalks + Division + PutOuts, data = hitters)

# Menampilkan 4 plot asumsi dasar secara simultan
par(mfrow = c(2, 2))
plot(mod_final)

par(mfrow = c(1, 1))

Normality of Residuals

Uji normalitas sisaan menggunakan uji Shapiro-Wilk.

shapiro.test(residuals(mod_final))

shapiro.test(residuals(mod_final))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(mod_final)
## W = 0.91571, p-value = 5.075e-11

Homoscedasticity

Melihat plot dari sisaan terhadap nilai dugaan (fitted values) untuk melihat pola variansinya.

plot(
  fitted(mod_final),
  residuals(mod_final),
  xlab = "Fitted Value",
  ylab = "Residual"
)
abline(h = 0, lty = 2)

Influential Observations

Mengidentifikasi amatan amatan yang berpengaruh kuat menggunakan nilai Cook’s Distance.

cook_final <- cooks.distance(mod_final)
plot(
  cook_final,
  type = "h",
  ylab = "Cook's Distance"
)
abline(
  h = 4 / nrow(hitters),
  lty = 2
)

# Menampilkan 5 amatan dengan nilai Cook's distance terbesar
order(cook_final, decreasing = TRUE)[1:5]
## [1] 173 189 201  21  77

7. Provide an interpretation of the analysis results

Interpretasi Hasil Analisis:

  1. Pemilihan Model: Melalui metode iteratif stepwise selection (forward dan backward), kita dapat menyederhanakan jumlah prediktor pada model yang tadinya 19 prediktor menjadi sebuah model yang jauh lebih sederhana, tanpa membuang banyak akurasi. Pada kasus dataset ini, meminimumkan nilai BIC menuntun kita memilih 6 prediktor pada metode forward dan 8 prediktor pada metode backward.
  2. Perbandingan Forward dan Backward: Terdapat perbedaan hasil akhir di antara keduanya. Forward selection menghasilkan model yang sedikit lebih ringkas (6 variabel) dibanding backward (8 variabel). Hal ini wajar terjadi; karena sifat arah pencarian yang berlawanan (maju vs mundur), keduanya terkadang berhenti pada kombinasi optimal (local optimum) yang berbeda, meskipun sama-sama menggunakan metrik evaluasi BIC. Keduanya tetap berhasil mendeteksi prediktor-prediktor krusial seperti AtBat, Hits, Walks, CRBI, DivisionW, dan PutOuts.
  3. Uji Asumsi Residual (Normality): Uji Shapiro-Wilk normality test menghasilkan nilai p-value yang teramat kecil (\(p = 5.075 \times 10^{-11}\), jauh di bawah ambang \(\alpha = 0.05\)). Artinya kita menolak hipotesis nol, sehingga residual terbukti tidak berdistribusi normal. Plot Q-Q Residuals memperkuat hal ini, di mana bagian ekor/ujung (khususnya untuk amatan pemain bernilai ekstrem seperti Mike Schmidt, Ozzie Smith, dan Dale Murphy) sangat menyimpang dari garis putus-putus teoretis.
  4. Uji Asumsi Homoskedastisitas: Asumsi ragam yang konstan tidak terpenuhi (terjadi heteroskedastisitas). Hal ini tervisualisasi dengan sangat jelas pada Plot Residuals vs Fitted, di mana sebaran sisaan membentuk pola corong/terompet yang semakin melebar ke kanan (varians residual membesar untuk dugaan gaji yang besar). Plot Scale-Location juga mengonfirmasi hal ini dengan garis tren merah yang memiliki slope (kemiringan) positif.
  5. Pengaruh Amatan (Influential Observations): Uji Cook’s Distance mengidentifikasi banyak titik amatan yang nilai pengaruhnya menembus garis batas toleransi (garis putus-putus horizontal). Berdasarkan pengurutan Cook’s distance, lima amatan paling berpengaruh kuat adalah pada urutan/indeks baris 173, 189, 201, 21, dan 77. Amatan indeks 173 dan 189 memiliki paku (spike) pengaruh yang sangat menjulang di grafiknya (melebihi jarak 0.15 dan 0.10). Amatan amatan tersebut (seperti amatan atas pemain Mike Schmidt dan Pete Rose) dapat secara luar biasa “menarik” garis regresi ke arahnya sehingga akurasi model untuk sisa data yang lain menjadi terdistorsi.

Kesimpulan / Tindakan Lanjutan: Mengingat asumsi klasik regresi linear berganda (Normalitas dan Homoskedastisitas) gagal terpenuhi secara cukup berat akibat keberadaan nilai ekstrem, model ini belum ideal/layak digunakan. Langkah perbaikan yang direkomendasikan adalah melakukan transformasi matematik pada variabel respon (contohnya melakukan log(Salary) mengingat ini berkaitan dengan rentang besaran gaji uang), atau beralih menggunakan pendekatan Robust Regression.