Uji F-Sekuensial

Uji F-sekuensial digunakan untuk melihat pengaruh r peubah penjelas yang ditambahkan ke dalam model

data <- read.csv("C:/Users/mhdha/Downloads/Data Supervisor (1).csv")
data_supervisor <- na.omit (data)
str(data_supervisor)
## '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_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

Penentuan peubah yang akan dimasukkan ke dalam model didasarkan pada nilai korelasi antara peubah penjelas terhadap peubah respon. Peubah penjelas dengan korelasi paling tinggi dimasukkan terlebih dahulu.

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

Peubah X1 dimasukkan ke model 1 (model tanpa peubah penjelas) terlebih dahulu sehingga menjadi model 2

## Model 1: Y=b0
model1 <- lm(Y~1, data = data_supervisor)
summary(model1)
## 
## Call:
## lm(formula = Y ~ 1, data = data_supervisor)
## 
## 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

Peubah X1 berpengaruh nyata terhadap Y pada taraf nyata 5%.

## model 2: Y=b0+b1X1 (memasukkan X1 ke model)
model2 <- lm(Y~X1, data = data_supervisor)
summary(model2)
## 
## 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

Selanjutnya, memilih peubah penjelas lain yang akan dimasukkan ke dalam model berdasarkan nilai korelasi antara peubah respon dengan peubah penjelas sisanya.

cor(data_supervisor[c(3:5)], data_supervisor$Y)
##         [,1]
## X2 0.4261169
## X3 0.6236782
## X4 0.5901390

Peubah X3 akan dimasukkan ke dalam model 2 sehingga menjadi model 3

## Model 3: Y=b0+b1X1+b3X3 (memasukkan X3 ke model 2)
model3 <- lm(Y~X1+X3, data = data_supervisor)
summary(model3)
## 
## 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

Hasil uji t di atas menunjukkan bahwa peubah X3 tidak berpengaruh nyata terhadap Y pada taraf nyata 5%. Untuk menentukan apakah X3 memberikan pengaruh ketika dimasukkan ke dalam model, digunakan uji F-sekuensial seperti berikut

## JK(X1) 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.b1 <- 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.b1b2 <- 2927.5843 +114.7334
## Uji F skuensial model 2 dan 3
# H0: b2 = 0 vs H1: b2 != 0
# menghitung F hitung
JK.b2_b1 <- JK.b1b2 - JK.b1 #JK(b2|b1)
JK.b2_b1
## [1] 114.7337
KT.b2_b1 <- JK.b2_b1/1 #KT(b2|b1)
KT.res <- 114.7337 #KT(b1,b2)

F.hit <- KT.b2_b1/KT.res
F.tabel <- qf(0.95, 1, (nrow(data_supervisor)-3))
cbind(F.hit, F.tabel)
##      F.hit  F.tabel
## [1,]     1 4.210008

F hitung dari output diatas lebih kecil dari pada F tabel sehingga menerima H0. Artinya, Peubah X2 tidak perlu ditambahkan ke dalam model 2.

All Possible Regression

Pada metode ini, akan diuji semua kemungkinan model subset regresi dari semua kandidat peubah penjelas. Banyaknya model yang mungkin yaitu \(2^k−1\), di mana k = banyaknya peubah penjelas.

str(data_supervisor)
## '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_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
library(olsrr)
## Warning: package 'olsrr' was built under R version 4.4.3
## 
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
## 
##     rivers
#jumlah kombinasi model = 2^k-1, k=# peubah penjelas
full.model <- lm(Y~., data = data_supervisor)
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

Berdasarkan output di atas, model ke 1, 5, 6, 11, dan 13 menghasilkan nilai \(R^2\) dan \(Adj. R^2\) sangat besar serta Mallow’s Cp yang kecil mendekati k+1.

Forward Selection

Forward selection diawali dengan model tanpa peubah penjelas, kemudian memasukkan peubah penjelas satu per satu ke dalam model berdasarkan nilai korelasi seperti contoh uji F-sekuensial di atas. Setiap peubah yang masuk ke dalam model tidak akan dikeluarkan. Proses seleksi akan berhenti jika tidak ada lagi peubah penjelas yang signifikan di antara yang tersisa.

full <- lm(Y ~ ., data = data_supervisor)
null <- lm(Y ~ 1, data = data_supervisor)
##== 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_supervisor)
## 
## 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 
## --------------------------------------------------------------------------------------

Backward Selection

Backward selection diawali dengan model penuh (semua peubah penjelas ada di dalam model), kemudian mengeluarkan peubah penjelas satu per satu berdasarkan signifikansi hasil uji F-parsial. Setiap peubah penjelas yang dikeluarkan dari model tidak akan dimasukkan kembali. Proses seleksi akan berhenti jika tidak ada lagi peubah penjelas yang tidak signifikan di antara yang tersisa.

##== Backward selection 
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_supervisor)
## 
## 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 
## --------------------------------------------------------------------------------------

Stepwise Regression

Stepwise Regression digunakan untuk mencari model terbaik dan dapat mengatasi multikolinearitas. Metode tersebut mengombinasikan forward dan backward selection. Proses seleksi diawali dari model tanpa peubah penjelas, lalu memasukkan peubah X berdasarkan nilai korelasi tertinggi (langkah selanjutnya seperti forward selection). Peubah penjelas yang sudah masuk ke dalam model, dapat dikeluarkan menggunakan backward selection. Pada metode ini, digunakan dua taraf nyata, yaitu taraf nyata masuk dan keluar yang besar nilainya berdasarkan bidang yang diteliti.

##== Stepwise
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_supervisor)
## 
## Coefficients:
## (Intercept)           X1           X3  
##      9.8709       0.6435       0.2112

Kriteria Model Terbaik

Best Subset Regression

Memilih model terbaik dari beberapa model subset regresi terbaik (dari hasil all possible regression) berdasarkan beberapa kriteria baku seperti memiliki nilai \(R^2\), \(Adj. R^2\), dan \(Pred. R^2\) terbesar, Mallow’s Cp terkecil, serta 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

Validasi Model

PRESS (Prediction Sum of Square)

PRESS merupakan kombinasi dari all possible regression, analisis sisaan, dan teknik validasi yang digunakan untuk mengukur validitas model. Model yang baik memiliki nilai PRESS yang kecil.

##== PRESS
PRESS1 <- ols_press(lm(Y~X1, data = data_supervisor))
PRESS2 <- ols_press(lm(Y~X1+X3, data = data_supervisor))
PRESS3 <- ols_press(lm(Y~X1+X2+X3, data = data_supervisor))
PRESS4 <- ols_press(lm(Y~X1+X2+X3+X4, data = data_supervisor))
PRESS5 <- ols_press(full.model)
cbind(PRESS1, PRESS2, PRESS3, PRESS4, PRESS5)
##        PRESS1   PRESS2   PRESS3   PRESS4   PRESS5
## [1,] 1556.065 1545.966 1594.106 1701.952 1701.952

Model Pertama masih dapat dikatakan sebagai model terbaik karena memiliki PRESS kedua paling kecil setelah model ke-2