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

Kombinasi dari 4 peubah (X1, X2, X3, X4)

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