Kriteria Pemilihan Model Terbaik

A. Metode Seleksi Peubah Penjelas

Input Data

data_sup = read.csv("C:/Users/MUTHI'AH IFFA/Downloads/Semester 4/Analisis Regresi/Minggu 8/Minggu 8/Data Supervisor.csv")
data_sup
##     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
str(data_sup)
## 'data.frame':    30 obs. of  5 variables:
##  $ Y : int  43 63 71 61 81 43 58 71 72 67 ...
##  $ X1: int  51 64 70 63 78 55 67 75 82 61 ...
##  $ X2: int  30 51 68 45 56 49 42 50 72 45 ...
##  $ X3: int  39 54 69 47 66 44 56 55 67 47 ...
##  $ X4: int  61 63 76 54 71 54 66 70 71 62 ...
head(data_sup)
##    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
summary(data_sup)
##        Y               X1             X2              X3              X4       
##  Min.   :40.00   Min.   :37.0   Min.   :30.00   Min.   :34.00   Min.   :43.00  
##  1st Qu.:58.75   1st Qu.:58.5   1st Qu.:45.00   1st Qu.:47.00   1st Qu.:58.25  
##  Median :65.50   Median :65.0   Median :51.50   Median :56.50   Median :63.50  
##  Mean   :64.63   Mean   :66.6   Mean   :53.13   Mean   :56.37   Mean   :64.63  
##  3rd Qu.:71.75   3rd Qu.:77.0   3rd Qu.:62.50   3rd Qu.:66.75   3rd Qu.:71.00  
##  Max.   :85.00   Max.   :90.0   Max.   :83.00   Max.   :75.00   Max.   :88.00
cbind(kolom = ncol(data_sup),
  baris = nrow(data_sup))
##      kolom baris
## [1,]     5    30

Tangani Missing Value

karena dalam data ini tidak ada missing value, maka tahapan ini bisa dilewati

Menentukan Peubah

Memasukkan terlebih dahulu peubah dengan nilai korelasi tertinggi antara peubah penjelas terhadap peubah respon yang akan dimasukkan ke dalam model

# == korelasi all X vs Y 
cor(data_sup[1:5], data_sup$Y)
##         [,1]
## Y  1.0000000
## X1 0.8254176
## X2 0.4261169
## X3 0.6236782
## X4 0.5901390

karena peubah X1 memiliki nilai korelasi antara peubah penjelas dan respon tertinggi. maka X4 dimasukkan terlebih dahulu ke dalam model

Model 1 : Y = bo
model1 = lm(Y~1, data = data_sup)
summary(model1)
## 
## Call:
## lm(formula = Y ~ 1, data = data_sup)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -24.6333  -5.8833   0.8667   7.1167  20.3667 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   64.633      2.222   29.08   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12.17 on 29 degrees of freedom

model1 memiliki p-value<2e-16 artinya p-value<0.05 (alpha). Sehingga dapat dikatakan bahwa peubah X1 berpengaruh nyata terhadap Y pada taraf nyata 5%

Model 2 : Y = bo+b1X1 (memasukkan X1 ke dalam model)
model2 = lm(Y~X1, data = data_sup)
summary(model2)
## 
## Call:
## lm(formula = Y ~ X1, data = data_sup)
## 
## 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

Memilih peubah penjelas lain yang akan dimasukkan ke dalam model berdasarkan nilai korelasi tertinggi antara peubah respon dengan peubah penjelas sisanya.

library(car)
## Loading required package: carData
model = lm(Y~ X1 + X2 + X3 + X4, data = data_sup)
vif(model)
##       X1       X2       X3       X4 
## 2.228135 1.542830 1.944395 2.165584
cor(data_sup[1:5], data_sup$Y)
##         [,1]
## Y  1.0000000
## X1 0.8254176
## X2 0.4261169
## X3 0.6236782
## X4 0.5901390
model 3 : Y = b0 + b1X1 + b2X2 + b3X3 (memasukkan X3 ke dalam model 2)
model3 = lm(Y~ X1 + X3, data = data_sup)
summary(model3)
## 
## Call:
## lm(formula = Y ~ X1 + X3, data = data_sup)
## 
## 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

Hasil analisis uji-t menunjukkan bahwa p-value X1 = 9.57e-06>0.05 (alpha) yang artinya peubah X1 tidak berpengaruh signifikan terhadap Y pada taraf 5%

Uji-F Sekuensial

Memasukkan X3 ke dalam model untuk menentukan apakah peubah X3 berpengaruh signifikan ketika dimasukkan ke dalam model

Jumlah Kuadrat (JK_CRBI) dari model 2
aov(model2)
## Call:
##    aov(formula = model2)
## 
## Terms:
##                       X1 Residuals
## Sum of Squares  2927.584  1369.382
## Deg. of Freedom        1        28
## 
## Residual standard error: 6.993319
## Estimated effects may be unbalanced
JK_X1 = summary(aov(model2))[[1]]["X1", "Sum Sq"]
JK.b1 = JK_X1
cbind(JK_X1)
##         JK_X1
## [1,] 2927.584
# JK(X1, X3) dari model 3
aov(model3)
## Call:
##    aov(formula = model3)
## 
## Terms:
##                        X1        X3 Residuals
## Sum of Squares  2927.5843  114.7334 1254.6490
## Deg. of Freedom         1         1        27
## 
## Residual standard error: 6.816779
## Estimated effects may be unbalanced
JK_X1 = summary(aov(model3))[[1]]["X1", "Sum Sq"]
JK_X3 = summary(aov(model3))[[1]]["X3", "Sum Sq"]
JK.b1 = JK_X1
JK.b2 = JK_X3
cbind(JK.b1 = JK_X1, JK.b2 = JK_X3)
##         JK.b1    JK.b2
## [1,] 2927.584 114.7334
JK.b1b2 = JK_X1 + JK_X3
cbind(JK.b1b2)
##       JK.b1b2
## [1,] 3042.318
Uji-F Sekuensial model; 2 dan 3

Hipotesis uji H0: b2 = 0 vs H1: b2 != 0

JK.b2_b1 = JK.b1b2 - JK.b1 #JK(b2|b1)
cbind(JK.b2_b1)
##      JK.b2_b1
## [1,] 114.7334
Menghitung nilai F-hit

Mencari nilai F-hit dengan menentukan KT.res dan membandingan F-hit dengan F-tab

KT.b2_b1 = JK.b2_b1/1 #KT(b2|b1)
KT.res = summary(aov(model3))[[1]]["Residual", "Sum Sq"]
cbind(KT.b2_b1, KT.res)
##      KT.b2_b1   KT.res
## [1,] 114.7334 1254.649
Menentukan nilai F-hitung
F_hit = KT.b2_b1/KT.res
F_tab = qf(0.95, 1, (nrow(data_sup)-3))
cbind(F_hit, F_tab)
##           F_hit    F_tab
## [1,] 0.09144665 4.210008

F-hit = 0.091<F-tab = 3.877, artinya tak tolak H0. Sehingga dapat dikatakan bahwa peubah X3 tidak perlu ditambahkan ke dalam model 2 karena tidak berpengaruh signifikan

All Possible Regression

Menguji semua kemungkinan model subset regresi dari semua kandidat peubah penjelas. Banyaknya model yang mungkin yaitu 2^k-1, dengan K=jumlah peubah penjelas.

str(data_sup)
## 'data.frame':    30 obs. of  5 variables:
##  $ Y : int  43 63 71 61 81 43 58 71 72 67 ...
##  $ X1: int  51 64 70 63 78 55 67 75 82 61 ...
##  $ X2: int  30 51 68 45 56 49 42 50 72 45 ...
##  $ X3: int  39 54 69 47 66 44 56 55 67 47 ...
##  $ X4: int  61 63 76 54 71 54 66 70 71 62 ...
head(data_sup)
##    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
library(olsrr)
## 
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
## 
##     rivers

jumlah kombinasi model = 2^k-1, k = jumlah peubah penjelas

# Buat model penuh
full.model = lm(Y ~ X1 + X2 + X3 + X4, data = data_sup)

# Menggunakan fungsi ols_step_all_possible
ols_step_all_possible(full.model)
##    Index N  Predictors  R-Square Adj. R-Square Mallow's Cp
## 1      1 1          X1 0.6813142     0.6699325    1.976859
## 3      2 1          X3 0.3889745     0.3671521   27.640838
## 4      3 1          X4 0.3482640     0.3249877   31.214733
## 2      4 1          X2 0.1815756     0.1523461   45.848013
## 6      5 2       X1 X3 0.7080152     0.6863867    1.632823
## 7      6 2       X1 X4 0.6838979     0.6604830    3.750034
## 5      7 2       X1 X2 0.6830639     0.6595872    3.823252
## 10     8 2       X3 X4 0.4506703     0.4099792   24.224669
## 8      9 2       X2 X3 0.4075138     0.3636260   28.013299
## 9     10 2       X2 X4 0.3815018     0.3356872   30.296846
## 11    11 3    X1 X2 X3 0.7150044     0.6821203    3.019249
## 13    12 3    X1 X3 X4 0.7082916     0.6746329    3.608557
## 12    13 3    X1 X2 X4 0.6862100     0.6500034    5.547063
## 14    14 3    X2 X3 X4 0.4587139     0.3962578   25.518541
## 15    15 4 X1 X2 X3 X4 0.7152237     0.6696595    5.000000

Evaluasi Umum Model :

  1. R-sq : menunjukkan seberapa baik model menjelaskan variansi pada peubah respon Y. Semakin besar nilainya (R-sq>=1), semakin baik model.
  2. Adj R-sq : lebih akurat daripada R-sq. Semakin besar nilainya, menunjukkan model lebih efisien
  3. Jumlah Predictors (N) : cari jumlah predictor seminimal mungkin, tetapi memiliki nilai R-sq & Adj R-sq tertinggi

dalam kasus ini model dengan jumlah predictors paling sedikit, namun dengan nilai R-sq serta Adj R-sq terbesar adalah model index 1 (X1) dan model ke-5 (X1,X3). Dengan masing-masing nilai R-sq dan Adj R-sq nya adalah 0.681 & 0.669 serta 0.708 & 0.686. Kemudian masing-masing nilai cp Mallow’s dari model index ke-1 dan ke-5 adalah 1.976 dan 1.63.

Model index ke-1 dapat dipilih jika mengutamakan kesederhanaan model, tetapi mungkin model ini tidak dapat mengungkap komplektisitas hubungan dengan variabel lainnya karena hanya melibatkan 1 prediktor.

Model index ke-5 bisa digunakan jika ketika menginginkan keakuratan prediksi dan model ini dapat menjelaskan lebih banyak variabel. Model ini lebih unggul karena nilai R-sq dan Adj R-sq yang tinggi serta nilai cp Malow’s yang lebih kecil.

Forward Selection

Diawali dengan model tak lengkap lalu memasukkan peubah penjelas satu per satu ke dalam model berdasarkan nilai korelasi terbesar. Setiap peubah yang sudah masuk ke dalam model tidak dapat dihapus/dikeluarkan kembali. Proses berhenti jika tidak ada lagi peubah penjelas yang signifikan yang tersisa.

full = lm(Y~ X1 + X2 + X3 + X4, data = data_sup)
null = lm(Y~1, data = data_sup)

Melakukan proses stepwise forward selection

step(null, scope = list(lower = null, upper = full), 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
## 
## Call:
## lm(formula = Y ~ X1 + X3, data = data_sup)
## 
## Coefficients:
## (Intercept)           X1           X3  
##      9.8709       0.6435       0.2112
fw = ols_step_forward_p(full.model)
fw
## 
## 
##                              Stepwise Summary                              
## -------------------------------------------------------------------------
## Step    Variable        AIC        SBC       SBIC        R2       Adj. R2 
## -------------------------------------------------------------------------
##  0      Base Model    238.070    240.873    150.751    0.00000    0.00000 
##  1      X1            205.764    209.967    120.906    0.68131    0.66993 
##  2      X3            205.139    210.744    120.967    0.70802    0.68639 
## -------------------------------------------------------------------------
## 
## Final Model Output 
## ------------------
## 
##                          Model Summary                          
## ---------------------------------------------------------------
## R                       0.841       RMSE                 6.467 
## R-Squared               0.708       MSE                 41.822 
## Adj. R-Squared          0.686       Coef. Var           10.547 
## Pred R-Squared          0.640       AIC                205.139 
## MAE                     5.612       SBC                210.744 
## ---------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##  AIC: Akaike Information Criteria 
##  SBC: Schwarz Bayesian Criteria 
## 
##                                ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression    3042.318         2       1521.159    32.735    0.0000 
## Residual      1254.649        27         46.468                     
## Total         4296.967        29                                    
## --------------------------------------------------------------------
## 
##                                  Parameter Estimates                                   
## --------------------------------------------------------------------------------------
##       model     Beta    Std. Error    Std. Beta      t       Sig      lower     upper 
## --------------------------------------------------------------------------------------
## (Intercept)    9.871         7.061                 1.398    0.174    -4.618    24.359 
##          X1    0.644         0.118        0.704    5.432    0.000     0.400     0.887 
##          X3    0.211         0.134        0.204    1.571    0.128    -0.065     0.487 
## --------------------------------------------------------------------------------------
head(fw)
## $metrics
##   step variable        r2    adj_r2      aic      sbc     sbic mallows_cp
## 1    1       X1 0.6813142 0.6699325 205.7638 209.9674 120.9063   1.976859
## 2    2       X3 0.7080152 0.6863867 205.1387 210.7435 120.9666   1.632823
##       rmse
## 1 6.756188
## 2 6.466965
## 
## $model
## 
## Call:
## lm(formula = paste(response, "~", paste(preds, collapse = " + ")), 
##     data = l)
## 
## Coefficients:
## (Intercept)           X1           X3  
##      9.8709       0.6435       0.2112  
## 
## 
## $others
## $others$base_model
## 
## Call:
## lm(formula = paste(response, "~", 1), data = data)
## 
## Coefficients:
## (Intercept)  
##       64.63  
## 
## 
## $others$full_model
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data_sup)
## 
## Coefficients:
## (Intercept)           X1           X2           X3           X4  
##    11.83354      0.69115     -0.10289      0.24633     -0.02551

Backward Selection

Diawali dengan model yang lengkap (seluruh peubah penjelas ada di dalam model). Lalu mengeluarkan tiap peubah penjelas satu per satu dimulai dari signifikansi

step(full, direction = "backward")
## Start:  AIC=121.25
## Y ~ X1 + X2 + X3 + X4
## 
##        Df Sum of Sq    RSS    AIC
## - X4    1      0.94 1224.6 119.28
## - X2    1     29.79 1253.5 119.97
## <none>              1223.7 121.25
## - X3    1    124.67 1348.3 122.16
## - X1    1   1102.21 2325.9 138.52
## 
## Step:  AIC=119.28
## Y ~ X1 + X2 + X3
## 
##        Df Sum of Sq    RSS    AIC
## - X2    1     30.03 1254.7 118.00
## <none>              1224.6 119.28
## - X3    1    137.25 1361.9 120.46
## - X1    1   1321.28 2545.9 139.23
## 
## 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
## - X1    1   1370.91 2625.6 138.16
## 
## Call:
## lm(formula = Y ~ X1 + X3, data = data_sup)
## 
## Coefficients:
## (Intercept)           X1           X3  
##      9.8709       0.6435       0.2112
bw = ols_step_backward_p(full.model)
bw
## 
## 
##                              Stepwise Summary                              
## -------------------------------------------------------------------------
## Step    Variable        AIC        SBC       SBIC        R2       Adj. R2 
## -------------------------------------------------------------------------
##  0      Full Model    208.389    216.796    125.172    0.71522    0.66966 
##  1      X4            206.412    213.418    122.789    0.71500    0.68212 
##  2      X2            205.139    210.744    120.967    0.70802    0.68639 
## -------------------------------------------------------------------------
## 
## Final Model Output 
## ------------------
## 
##                          Model Summary                          
## ---------------------------------------------------------------
## R                       0.841       RMSE                 6.467 
## R-Squared               0.708       MSE                 41.822 
## Adj. R-Squared          0.686       Coef. Var           10.547 
## Pred R-Squared          0.640       AIC                205.139 
## MAE                     5.612       SBC                210.744 
## ---------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##  AIC: Akaike Information Criteria 
##  SBC: Schwarz Bayesian Criteria 
## 
##                                ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression    3042.318         2       1521.159    32.735    0.0000 
## Residual      1254.649        27         46.468                     
## Total         4296.967        29                                    
## --------------------------------------------------------------------
## 
##                                  Parameter Estimates                                   
## --------------------------------------------------------------------------------------
##       model     Beta    Std. Error    Std. Beta      t       Sig      lower     upper 
## --------------------------------------------------------------------------------------
## (Intercept)    9.871         7.061                 1.398    0.174    -4.618    24.359 
##          X1    0.644         0.118        0.704    5.432    0.000     0.400     0.887 
##          X3    0.211         0.134        0.204    1.571    0.128    -0.065     0.487 
## --------------------------------------------------------------------------------------

Model akhir yang diperoleh sama seperti model akhir yang diperoleh dari forward selection

Stepwise Regression

Digunakan untuk mencari model terbaik dan dapat mengatasi multikolinearitas. Stepwise Regressioon ini adalah kombinasi dari forward dan backward selection. Proses ini diawali dari model tak lengkap, lalu memasukkan peubah X berdasarkan nilai korelasi tertinggi (langkah forward selction). Peubah yang sudah masuk dan keluar dapat ditambahkan dan dihilangkan kembali.

Metode ini menggunakan 2 taraf nyata, yaitu taraf nyata masuk dan keuar yang besar nilainya berdasarkan bidang yang diteliti

step(null, scope = list(lower = null, upper = full), 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
## 
## Call:
## lm(formula = Y ~ X1 + X3, data = data_sup)
## 
## Coefficients:
## (Intercept)           X1           X3  
##      9.8709       0.6435       0.2112

Hasil model Stepwise Regression sama dengan hasil model dari metode Forward dan Backward selection

B. Kriteria Model Terbaik

Best Subset Regression

memilih model kombinasi terbaik dari variabel penjelas (X) yang memberikan model terbaik dalam menjelaskan peubah respon (Y). Mengevaluasi semua kemungkinan kombinasi dari peubah penjelas untuk menentukan model terbaik berdasarkan kriteria baku seperti nilai R-sq, Adj R-sq, dan Pred. R-sq, Cp Mallow’s terkecil, dan AIC terkecil

bs.hc = ols_step_best_subset(full.model)
bs.hc
##  Best Subsets Regression  
## --------------------------
## Model Index    Predictors
## --------------------------
##      1         X1          
##      2         X1 X3       
##      3         X1 X2 X3    
##      4         X1 X2 X3 X4 
## --------------------------
## 
##                                                     Subsets Regression Summary                                                     
## -----------------------------------------------------------------------------------------------------------------------------------
##                        Adj.        Pred                                                                                             
## Model    R-Square    R-Square    R-Square     C(p)       AIC         SBIC        SBC         MSEP         FPE       HSP       APC  
## -----------------------------------------------------------------------------------------------------------------------------------
##   1        0.6813      0.6699      0.6379    1.9769    205.7638    120.9063    209.9674    1467.4370    52.1669    1.8114    0.3642 
##   2        0.7080      0.6864      0.6402    1.6328    205.1387    120.9666    210.7435    1396.1991    51.1153    1.7872    0.3569 
##   3        0.7150      0.6821       0.629    3.0192    206.4119    122.7889    213.4179    1417.2894    53.3807    1.8840    0.3727 
##   4        0.7152      0.6697      0.6039    5.0000    208.3888    125.1725    216.7960    1475.2072    57.1048    2.0395    0.3987 
## -----------------------------------------------------------------------------------------------------------------------------------
## AIC: Akaike Information Criteria 
##  SBIC: Sawa's Bayesian Information Criteria 
##  SBC: Schwarz Bayesian Criteria 
##  MSEP: Estimated error of prediction, assuming multivariate normality 
##  FPE: Final Prediction Error 
##  HSP: Hocking's Sp 
##  APC: Amemiya Prediction Criteria
head(bs.hc)
## $metrics
##   mindex n  predictors   rsquare      adjr   predrsq       cp      aic     sbic
## 1      1 1          X1 0.6813142 0.6699325 0.6378690 1.976859 205.7638 120.9063
## 2      2 2       X1 X3 0.7080152 0.6863867 0.6402193 1.632823 205.1387 120.9666
## 3      3 3    X1 X2 X3 0.7150044 0.6821203 0.6290159 3.019249 206.4119 122.7889
## 4      4 4 X1 X2 X3 X4 0.7152237 0.6696595 0.6039177 5.000000 208.3888 125.1725
##        sbc     msep      fpe       apc      hsp
## 1 209.9674 1467.437 52.16695 0.3642124 1.811352
## 2 210.7435 1396.199 51.11533 0.3568703 1.787249
## 3 213.4179 1417.289 53.38071 0.3726865 1.884025
## 4 216.7960 1475.207 57.10480 0.3986868 2.039457

Berdasarkan hasil Best Subset Regression, dapat dikatakan model terbaik adalah model dengan index 1 dan 2 dengan nilai cp Mallow’s dan AIP terkecil (1.97.. & 1.63) serta nilai R-sq dan Adj R-sq terbesar.

Validasi Model

PRESS (Prediction Sum of Square)

PRESS merupakan metode untuk mengukur seberapa baik model regresi memprediksi data baru atau data yang tidak digunakan dalam pembuatan model. Metode ini merupakan kombinasi dari all possible regression, analisis sisaan, dan teknik validasi yang digunakan untuk mengukur validitas model.

Model terbaik memiliki nilai PRESS yang kecil

PRESS1 = ols_press(lm(Y~X1, data = data_sup))
PRESS2 = ols_press(lm(Y~X1 + X3, data = data_sup))
PRESS3 = ols_press(lm(Y~X1 + X2 + X3, data = data_sup))
PRESS4 = ols_press(lm(Y~X1 + X2 + X3 + X4, data = data_sup))
cbind(PRESS1, PRESS2, PRESS3, PRESS4)
##        PRESS1   PRESS2   PRESS3   PRESS4
## [1,] 1556.065 1545.966 1594.106 1701.952

Model ke-1(X1) dan ke-3 (X1,X3) dapat dikatakan sebagai model terbaik karena memiliki nilai PRESS terkecil di antara model yang lainnya. Nilai PRESS dari masing-masing model adalah

PRESS model ke-1 = 1556.065
PRESS model ke-2 = 1545.966