data_supervisor <- read.csv("C:/Users/USER/Downloads/Data Supervisor.csv")
data_supervisor
## Y X1 X2 X3 X4
## 1 43 51 30 39 61
## 2 63 64 51 54 63
## 3 71 70 68 69 76
## 4 61 63 45 47 54
## 5 81 78 56 66 71
## 6 43 55 49 44 54
## 7 58 67 42 56 66
## 8 71 75 50 55 70
## 9 72 82 72 67 71
## 10 67 61 45 47 62
## 11 64 53 53 58 58
## 12 67 60 47 39 59
## 13 69 62 57 42 55
## 14 68 83 83 45 59
## 15 77 77 54 72 79
## 16 81 90 50 72 60
## 17 74 85 64 69 79
## 18 65 60 65 75 55
## 19 65 70 46 57 75
## 20 50 58 68 54 64
## 21 50 40 33 34 43
## 22 64 61 52 62 66
## 23 53 66 52 50 63
## 24 40 37 42 58 50
## 25 63 54 42 48 66
## 26 66 77 66 63 88
## 27 78 75 58 74 80
## 28 48 57 44 45 51
## 29 85 85 71 71 77
## 30 82 82 39 59 64
cor(data_supervisor[1:5], data_supervisor$Salary)
## Y X1 X2 X3 X4
## Y 1.0000000 0.8254176 0.4261169 0.6236782 0.5901390
## X1 0.8254176 1.0000000 0.5582882 0.5967358 0.6691975
## X2 0.4261169 0.5582882 1.0000000 0.4933310 0.4454779
## X3 0.6236782 0.5967358 0.4933310 1.0000000 0.6403144
## X4 0.5901390 0.6691975 0.4454779 0.6403144 1.0000000
# Model dengan X1 dan X3
model_x1_x3 <- lm(Y ~ X1 + X3, data = data_supervisor)
summary(model_x1_x3)
##
## Call:
## lm(formula = Y ~ X1 + X3, data = data_supervisor)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.5568 -5.7331 0.6701 6.5341 10.3610
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.8709 7.0612 1.398 0.174
## X1 0.6435 0.1185 5.432 9.57e-06 ***
## X3 0.2112 0.1344 1.571 0.128
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.817 on 27 degrees of freedom
## Multiple R-squared: 0.708, Adjusted R-squared: 0.6864
## F-statistic: 32.74 on 2 and 27 DF, p-value: 6.058e-08
Model X1 + X3 tidak dapat dianggap sebagai model terbaik jika X3 tidak signifikan (p-value > 0.05).
# Model 2
model2 <- lm(Y ~ X1 + X3, data = data_supervisor)
# Model 3
model3 <- lm(Y ~ X1 + X2 + X3, data = data_supervisor)
# Bandingkan dengan anova (uji F)
anova(model2, model3)
## Analysis of Variance Table
##
## Model 1: Y ~ X1 + X3
## Model 2: Y ~ X1 + X2 + X3
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 27 1254.7
## 2 26 1224.6 1 30.033 0.6376 0.4318
Menolak H₀; peubah tambahan pada model ke-3 berdampak terhadap model (p-value < 0.05).
2^4 - 1 = 15
library(leaps)
## Warning: package 'leaps' was built under R version 4.4.3
# Seleksi subset terbaik
leaps_result <- regsubsets(Y ~ X1 + X2 + X3 + X4, data = data_supervisor, nbest = 1)
# Lihat ringkasan
summary_leaps <- summary(leaps_result)
# Tampilkan model dengan nilai adj. R2 dan Cp
summary_leaps$adjr2
## [1] 0.6699325 0.6863867 0.6821203 0.6696595
summary_leaps$cp
## [1] 1.976859 1.632823 3.019249 5.000000
Model 11 (X1 + X3) adalah kandidat kuat, tapi bukan satu-satunya. Model X1, X1 + X2, atau X1 + X2 + X3 juga potensial tergantung kriteria
# Stepwise (both directions)
stepwise_model <- step(lm(Y ~ 1, data = data_supervisor),
scope = list(lower = ~1, upper = ~X1 + X2 + X3 + X4),
direction = "both")
## Start: AIC=150.93
## Y ~ 1
##
## Df Sum of Sq RSS AIC
## + X1 1 2927.58 1369.4 118.63
## + X3 1 1671.41 2625.6 138.16
## + X4 1 1496.48 2800.5 140.09
## + X2 1 780.22 3516.7 146.92
## <none> 4297.0 150.93
##
## Step: AIC=118.63
## Y ~ X1
##
## Df Sum of Sq RSS AIC
## + X3 1 114.73 1254.6 118.00
## <none> 1369.4 118.63
## + X4 1 11.10 1358.3 120.38
## + X2 1 7.52 1361.9 120.46
## - X1 1 2927.58 4297.0 150.93
##
## Step: AIC=118
## Y ~ X1 + X3
##
## Df Sum of Sq RSS AIC
## <none> 1254.7 118.00
## - X3 1 114.73 1369.4 118.63
## + X2 1 30.03 1224.6 119.28
## + X4 1 1.19 1253.5 119.97
## - X1 1 1370.91 2625.6 138.16
# Forward selection
forward_model <- step(lm(Y ~ 1, data = data_supervisor),
scope = list(lower = ~1, upper = ~X1 + X2 + X3 + X4),
direction = "forward")
## Start: AIC=150.93
## Y ~ 1
##
## Df Sum of Sq RSS AIC
## + X1 1 2927.58 1369.4 118.63
## + X3 1 1671.41 2625.6 138.16
## + X4 1 1496.48 2800.5 140.09
## + X2 1 780.22 3516.7 146.92
## <none> 4297.0 150.93
##
## Step: AIC=118.63
## Y ~ X1
##
## Df Sum of Sq RSS AIC
## + X3 1 114.733 1254.7 118.00
## <none> 1369.4 118.63
## + X4 1 11.102 1358.3 120.38
## + X2 1 7.519 1361.9 120.46
##
## Step: AIC=118
## Y ~ X1 + X3
##
## Df Sum of Sq RSS AIC
## <none> 1254.7 118.00
## + X2 1 30.0326 1224.6 119.28
## + X4 1 1.1877 1253.5 119.97
model_x1 <- lm(Y ~ X1, data = data_supervisor)
summary(model_x1)
##
## Call:
## lm(formula = Y ~ X1, data = data_supervisor)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.8799 -5.9905 0.1783 6.2978 9.6294
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.37632 6.61999 2.172 0.0385 *
## X1 0.75461 0.09753 7.737 1.99e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.993 on 28 degrees of freedom
## Multiple R-squared: 0.6813, Adjusted R-squared: 0.6699
## F-statistic: 59.86 on 1 and 28 DF, p-value: 1.988e-08
kesimpulan :
Peubah X1 adalah peubah paling signifikan dan layak dipertahankan dalam semua model.
Penambahan X2 dan X3 dapat meningkatkan kinerja model, tetapi X3 sendiri tidak signifikan, sehingga penggunaannya perlu dipertimbangkan secara hati-hati.
Dari seleksi subset dan uji F-sekuensial, model yang optimal antara lain:
Model X1
Model X1 + X2
Model X1 + X2 + X3
Model 11 (X1 + X3) bukan satu-satunya model terbaik, apalagi jika X3 tidak signifikan.
Metode stepwise dan forward memberikan hasil serupa tapi proses seleksinya berbeda.
Model terbaik akhir sebaiknya mempertimbangkan keseimbangan antara kesederhanaan model (parsimonious) dan kemampuan prediksi (adj. R² dan Cp).
library(leaps)
# Lakukan seleksi subset
leaps_result <- leaps::regsubsets(Y ~ X1 + X2 + X3 + X4, data = data_supervisor, nbest = 1)
summary_leaps <- summary(leaps_result)
summary_leaps$adjr2
## [1] 0.6699325 0.6863867 0.6821203 0.6696595
summary_leaps$cp # Untuk melihat nilai Cp tiap model
## [1] 1.976859 1.632823 3.019249 5.000000