Pemilihan Model Regresi Terbaik

Library

library(tidyverse) #package untuk manipulasi data dan visualisasi data 

library(modelr) #package untuk menghitung performa model regresi

library(broom) # package untuk membangun data frame berisi ukuran kebaikan model regresi

library (leaps)
library(MASS)

Data

library(readxl)
lemak<- read.csv("D://bodyfat.csv")
head(lemak)
##   Triceps Thigh Midarm Bodyfat
## 1    19.5  43.1   29.1    11.9
## 2    24.7  49.8   28.2    22.8
## 3    30.7  51.9   37.0    18.7
## 4    29.8  54.3   31.1    20.1
## 5    19.1  42.2   30.9    12.9
## 6    25.6  53.9   23.7    21.7

Introduction Pemilihan Model Regresi Terbaik

model1<-lm(Bodyfat~Triceps,data=lemak) #gunakan data lemak

model2<-lm(Bodyfat~Thigh,data=lemak) 

model3<-lm(Bodyfat~Midarm,data=lemak) 

model4<-lm(Bodyfat~Triceps+Thigh,data=lemak) 

model5<-lm(Bodyfat~Triceps+Midarm,data=lemak) 

model6<-lm(Bodyfat~Thigh+Midarm,data=lemak) 

model7<-lm(Bodyfat~Triceps+Thigh+Midarm,data=lemak) 

Berdasarkan beberapa kemungkinan model di atas. pemilihan model terbaik dapat dilakukan dengan memperhatikan nilai-nilai R^2, adjusted R^2, RMSE, MAE, Cp Mallows, AIC, dan BIC.

  • Model regresi yang terbaik adalah model regresi yang mempunyai nilai R^2 dan Adjusted R^2 yang tinggi. Nilai R^2 yang tinggi berarti model regresi semakin dapat menjelaskan keragaman data.

  • Model regresi yang terbaik adalah model regresi dengan nilai RMSE, MAE, Cp Mallows, AIC, dan BIC (Bayesian Information Criterion) yang rendah.

Menghitung nilai \(R^2\) , RMSE, dan MAPE

m1<-data.frame(R2 = rsquare(model1, data = lemak), RMSE = rmse(model1, data = lemak),MAE = mae(model1, data = lemak))

m2<-data.frame(R2 = rsquare(model2, data = lemak), RMSE = rmse(model2, data = lemak),MAE = mae(model2, data = lemak))

m3<-data.frame(R2 = rsquare(model3, data = lemak), RMSE = rmse(model3, data = lemak),MAE = mae(model3, data = lemak))


m4<-data.frame(R2 = rsquare(model4, data = lemak), RMSE = rmse(model4, data = lemak),MAE = mae(model4, data = lemak))


m5<-data.frame(R2 = rsquare(model5, data = lemak), RMSE = rmse(model5, data = lemak),MAE = mae(model5, data = lemak))


m6<-data.frame(R2 = rsquare(model6, data = lemak), RMSE = rmse(model6, data = lemak),MAE = mae(model6, data = lemak))

m7<-data.frame(R2 = rsquare(model7, data = lemak), RMSE =  rmse(model7, data = lemak),MAE = mae(model7,data = lemak))

datam<-rbind(m1,m2,m3,m4,m5,m6,m7)
datam<-as.data.frame(datam)

list_model<-rbind("model1","model2","model3","model4","model5","model6","model7")

gabungan<-cbind(list_model,datam)
gabungan
##   list_model        R2     RMSE      MAE
## 1     model1 0.7110966 2.675067 2.242023
## 2     model2 0.7710414 2.381425 1.978078
## 3     model3 0.0202903 4.926144 4.261653
## 4     model4 0.7780518 2.344683 1.929108
## 5     model5 0.7861598 2.301458 1.928153
## 6     model6 0.7757123 2.357008 1.937555
## 7     model7 0.8013586 2.218162 1.885628

Menghitung Kriteria R2 adjusted, AIC, dan BIC

a1<-glance(model1) %>% dplyr::select(adj.r.squared,  AIC, BIC)

a2<-glance(model2) %>% dplyr::select(adj.r.squared, AIC, BIC)

a3<-glance(model3) %>% dplyr::select(adj.r.squared, AIC, BIC)

###---- model 4-6 silakan dicoba mandiri-------##

a7<-glance(model7) %>% dplyr::select(adj.r.squared, AIC, BIC)

dataa<-rbind(a1,a2,a3,a7)
dataa<-as.data.frame(dataa)

list_modela<-rbind("model1","model2","model3","model7")

gabungana<-cbind(list_modela,dataa)
gabungana
##   list_modela adj.r.squared       AIC      BIC
## 1      model1    0.69504643 102.11652 105.1037
## 2      model2    0.75832149  97.46550 100.4527
## 3      model3   -0.03413801 126.53980 129.5270
## 4      model7    0.76411328  98.62471 103.6034

Perhitungan Manual RMSE, MAE, R2, R2 Adjusted, Cp Mallow

anova(model1)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27  44.305 3.024e-06 ***
## Residuals 18 143.12    7.95                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
JKG1<-143.12    
JKT1<-143.12+352.27  
KTG1<-7.95                  
n<-length(lemak$Bodyfat)

RMSE1 <- sqrt(mean((model1$residuals)^2))
RMSE1
## [1] 2.675067
MAE1 <- mean(abs(model1$residuals))
MAE1
## [1] 2.242023
Rsquare1<-(1-JKG1/JKT1)
Rsquare1
## [1] 0.7110963
AdjRSquare1<-1-((n-1)/JKT1)*KTG1 #n adalahbanyaknya data
AdjRSquare1
## [1] 0.6950887
anova(model7)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27 57.2768 1.131e-06 ***
## Thigh      1  33.17   33.17  5.3931   0.03373 *  
## Midarm     1  11.55   11.55  1.8773   0.18956    
## Residuals 16  98.40    6.15                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
KTG7<-6.15
Cp1 <- JKG1/KTG7+ 2*(1+1)-20 #Cp untuk model 1
Cp1
## [1] 7.271545

Penerapan Model Regresi

Pembagian Training Testing Data

set.seed(100) # setting seed to reproduce results of random sampling

trainingRowIndex <- sample(1:nrow(lemak), 0.8*nrow(lemak)) # row indices for training data

trainingData <- lemak[trainingRowIndex, ] # model training data

testData <- lemak[-trainingRowIndex, ] # test data

Model Regresi (data training)

lmMod <- lm(Bodyfat~Triceps +Thigh +Midarm , data=trainingData) # build the model

summary(lmMod)
## 
## Call:
## lm(formula = Bodyfat ~ Triceps + Thigh + Midarm, data = trainingData)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5906 -1.1278  0.2629  1.6161  4.3792 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  216.597    125.614   1.724   0.1103  
## Triceps        7.318      3.799   1.926   0.0781 .
## Thigh         -5.413      3.242  -1.669   0.1209  
## Midarm        -3.779      2.025  -1.866   0.0867 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.604 on 12 degrees of freedom
## Multiple R-squared:  0.7605, Adjusted R-squared:  0.7007 
## F-statistic:  12.7 on 3 and 12 DF,  p-value: 0.000493

Prediksi Data Test dengan Model Regresi

distPred <- predict(lmMod, testData) # predict fat
actuals_preds <- data.frame(cbind(actuals=testData$Bodyfat,  predicteds=distPred)) # make actuals_predicteds dataframe.

correlation_accuracy <- cor(actuals_preds)

head(actuals_preds)
##    actuals predicteds
## 1     11.9   16.02194
## 5     12.9   11.16413
## 18    25.4   27.42603
## 20    21.1   21.01678
min_max_accuracy <- mean(apply(actuals_preds, 1, min) / apply(actuals_preds, 1, max))#MinMaxAcuracy

mape <- mean(abs((actuals_preds$predicteds - actuals_preds$actuals))/actuals_preds$actuals) # Mean Absolute Percentage Deviation (MAPE)
library(DMwR)
DMwR::regr.eval(actuals_preds$actuals,actuals_preds$predicteds)
##       mae       mse      rmse      mape 
## 1.9917627 6.0288315 2.4553679 0.1411634

Pemilihan model terbaik dapat diulang dengan memodelkan ke-7 kemungkinan model yang dapat dibentuk kemudian dibandingkan nilai-nilai kriteria kebaikan model.

Terdapat beberapa metode pemilihan model regresi terbaik selain memodelkan satu persatu, diantaranya yaitu, Seleksi forward, backward, dan stepwise.

Pemilihan Model dengan Metode Seleksi Maju (Forward)

Data yang digunakan adalah data lemak (bodyfat)

Korelasi

cor(lemak) #pilih var independen dengan cor tertinggi dengan Y
##           Triceps     Thigh    Midarm   Bodyfat
## Triceps 1.0000000 0.9238425 0.4577772 0.8432654
## Thigh   0.9238425 1.0000000 0.0846675 0.8780896
## Midarm  0.4577772 0.0846675 1.0000000 0.1424440
## Bodyfat 0.8432654 0.8780896 0.1424440 1.0000000

Memilih Variabel Independen Pertama

Variabel Thigh dipilih karena memiliki korelasi yang paling kuat dibandingkan dua variabel lainnya.

model1<-lm(Bodyfat~Thigh,data=lemak) #Thigh terpilih

summary(model1)
## 
## Call:
## lm(formula = Bodyfat ~ Thigh, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.4949 -1.5671  0.1241  1.3362  4.4084 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -23.6345     5.6574  -4.178 0.000566 ***
## Thigh         0.8565     0.1100   7.786  3.6e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.51 on 18 degrees of freedom
## Multiple R-squared:  0.771,  Adjusted R-squared:  0.7583 
## F-statistic: 60.62 on 1 and 18 DF,  p-value: 3.6e-07
anova(model1)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value  Pr(>F)    
## Thigh      1 381.97  381.97  60.617 3.6e-07 ***
## Residuals 18 113.42    6.30                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  • Nilai koefisen determinasi (R2) sebesar 0.771 atau 77.1% yang berarti keragaman fat yang mampu dijelaskan oleh variabel thigh adalah sebesar 77.1% dan 22.9% lainnnya dijelaskan oleh faktor lain di luar model

  • Dengan α = 0.01, p-value untuk β0 < α, disimpulkan β0 memiliki nilai tidak sama dengan nol (signifikan). Diperoleh p-value untuk β1 < α disimpulkan β1 memiliki nilai tidak sama dengan nol.

  • Pada anova diperoleh p-value = 3.6e-07 < 0.01 maka dapat disimpulkan β1 memiliki nilai tidak sama dengan nol dan dapat dikatakan bahwa Thigh berpengaruh secara signifikan terhadap fat dan persamaan regresi dugaan untuk Thigh sebagai variabel peubah bebas yang masuk pertama kali adalah fat = -23.635 + 0.857 Thigh.

Memilih variabel independen kedua dan ketiga

  • Selanjutnya, nilai kuadrat korelasi parsial Y dengan X1 (Thigh) dikontrol terhadap X3 (Triceps) yang paling besar setelah Thigh sesuai pada tabel di atas. Sehingga disusun model regresi Y terhadap X3 dan X1, serta dilakukan uji t dan anova.
model2a<-lm(Bodyfat~Thigh+Triceps,data=lemak) #Thigh var kontrol
summary(model2a)
## 
## Call:
## lm(formula = Bodyfat ~ Thigh + Triceps, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9469 -1.8807  0.1678  1.3367  4.0147 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) -19.1742     8.3606  -2.293   0.0348 *
## Thigh         0.6594     0.2912   2.265   0.0369 *
## Triceps       0.2224     0.3034   0.733   0.4737  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.543 on 17 degrees of freedom
## Multiple R-squared:  0.7781, Adjusted R-squared:  0.7519 
## F-statistic:  29.8 on 2 and 17 DF,  p-value: 2.774e-06
anova(model2a)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Thigh      1 381.97  381.97  59.057 6.281e-07 ***
## Triceps    1   3.47    3.47   0.537    0.4737    
## Residuals 17 109.95    6.47                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  • Nilai koefisen determinasi (R2) sebesar 0.778 atau 77.8% yang berarti keragaman bodyfat yang mampu dijelaskan oleh variabel Thigh dan Triceps adalah sebesar 77.8% dan 22.8% lainnnya dijelaskan oleh faktor lain di luar model

  • Hasil Uji t:

Dengan α = 0.05, diperoleh p-value untuk β0 < 0.05 sehingga disimpulkan β0 memiliki nilai yang tidak sama dengan nol, diperoleh p-value untuk β1 < 0.05 sehigga juga disimpulkan β1 memiliki nilai yang tidak sama dengan nol, dan diperoleh p-value untuk β2 > 0.05 sehingga disimpulkan β2 memiliki nilai sama dengan nol.

  • Berdasarkan hasil di atas dapat disimpulkan bahwa Triceps dapat dikeluarkan dari model karena tidak memiliki pengaruh yang signifikan terhadap model.

  • Variabel yang terakhir adalah Midarm dengan hasil sebagai berikut:

model2b<-lm(Bodyfat~Thigh+Midarm,data=lemak) #Thigh var kontrol
summary(model2b)
## 
## Call:
## lm(formula = Bodyfat ~ Thigh + Midarm, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0777 -1.8296  0.1893  1.3545  4.1275 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -25.99695    6.99732  -3.715  0.00172 ** 
## Thigh         0.85088    0.11245   7.567 7.72e-07 ***
## Midarm        0.09603    0.16139   0.595  0.55968    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.557 on 17 degrees of freedom
## Multiple R-squared:  0.7757, Adjusted R-squared:  0.7493 
## F-statistic:  29.4 on 2 and 17 DF,  p-value: 3.033e-06
anova(model2b)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Thigh      1 381.97  381.97  58.441 6.737e-07 ***
## Midarm     1   2.31    2.31   0.354    0.5597    
## Residuals 17 111.11    6.54                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  • Hasil Uji t:

Dengan α = 0.05, diperoleh p-value untuk β2 (Midarm) > 0.05 sehingga disimpulkan β2 memiliki nilai yang sama dengan nol. Dengan demikian variabel Midarm dapat dikeluarkan dari Model.

R-Square Parsial

Model Terbaik

model2c<-lm(Bodyfat~Thigh,data=lemak) 
summary(model2c) #Thigh yang terpilih
## 
## Call:
## lm(formula = Bodyfat ~ Thigh, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.4949 -1.5671  0.1241  1.3362  4.4084 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -23.6345     5.6574  -4.178 0.000566 ***
## Thigh         0.8565     0.1100   7.786  3.6e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.51 on 18 degrees of freedom
## Multiple R-squared:  0.771,  Adjusted R-squared:  0.7583 
## F-statistic: 60.62 on 1 and 18 DF,  p-value: 3.6e-07

Bodyfat = -23.635 + 0.857 Thigh

Metode Forward dengan Menggunakan Fungsi di R

fs <- regsubsets(Bodyfat~ ., nvmax = 3, method="forward",data=lemak) #nvmax jumlah var independen

hasil<-summary(fs)

which.min(hasil$cp) #nilai yang muncul menunjukkan model terbaik dengan nilai Cp terrendah terdiri dari berapa variable 
## [1] 1
which.min(hasil$bic) # model terbaik dengan nilai BIC terrendah
## [1] 1
which.max(hasil$adjr2) #model terbaik dengan nilai R2 tertinggi
## [1] 3
coef(fs,1) #1 adalah jumlah variabel yang dipilih berdasarkan ukuran kebaikan model yang dipilih
## (Intercept)       Thigh 
## -23.6344891   0.8565466

Berdasarkan hasil di atas dapat disimpulkan bahwa model terbaiknya adalah:

Bodyfat = -23.635 + 0.857 Thigh

Pemilihan Model dengan Metode Seleksi Mundur (Backward)

Model Regresi dengan semua variabel independen

model1<-lm(Bodyfat~.,data=lemak) #model dengan seluruh var independen

summary(model1)
## 
## Call:
## lm(formula = Bodyfat ~ ., data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7263 -1.6111  0.3923  1.4656  4.1277 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)  117.085     99.782   1.173    0.258
## Triceps        4.334      3.016   1.437    0.170
## Thigh         -2.857      2.582  -1.106    0.285
## Midarm        -2.186      1.595  -1.370    0.190
## 
## Residual standard error: 2.48 on 16 degrees of freedom
## Multiple R-squared:  0.8014, Adjusted R-squared:  0.7641 
## F-statistic: 21.52 on 3 and 16 DF,  p-value: 7.343e-06
anova(model1)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27 57.2768 1.131e-06 ***
## Thigh      1  33.17   33.17  5.3931   0.03373 *  
## Midarm     1  11.55   11.55  1.8773   0.18956    
## Residuals 16  98.40    6.15                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Penyeleksian variabel independen pertama

model1<-lm(Bodyfat~Triceps+Thigh+Midarm,data=lemak)
anova(model1)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27 57.2768 1.131e-06 ***
## Thigh      1  33.17   33.17  5.3931   0.03373 *  
## Midarm     1  11.55   11.55  1.8773   0.18956    
## Residuals 16  98.40    6.15                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model2<-lm(Bodyfat~Midarm+Thigh+Triceps,data=lemak)
anova(model2)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Midarm     1  10.05   10.05  1.6343    0.2193    
## Thigh      1 374.23  374.23 60.8471 7.684e-07 ***
## Triceps    1  12.70   12.70  2.0657    0.1699    
## Residuals 16  98.40    6.15                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model3<-lm(Bodyfat~Midarm+Triceps+Thigh,data=lemak)
anova(model3)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Midarm     1  10.05   10.05  1.6343    0.2193    
## Triceps    1 379.40  379.40 61.6886 7.034e-07 ***
## Thigh      1   7.53    7.53  1.2242    0.2849    
## Residuals 16  98.40    6.15                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Koefisien determinasi parsial

  • Berdasarkan hasil perhitungan di atas dapat diketahui bahwa variabel Thigh memiliki koef determinasi parsial paling kecil sehingga diperiksa dengan pengujian menggunakan Uji F.

  • Hasil uji F menunjukkan variabel Thigh memiliki p-value > 0.05 sehingga dapat disimpulkan bahwa β3 (Thigh) memiliki nilai yang sama dengan nol. Dengan demikian variabel Thigh dapat dikeluarkan dari Model.

Penyeleksian kembali variabel independen berikutnya

model4<-lm(Bodyfat~Midarm+Triceps,data=lemak) 
model5<-lm(Bodyfat~Triceps+Midarm,data=lemak)
anova(model4)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Midarm     1  10.05   10.05  1.6131    0.2212    
## Triceps    1 379.40  379.40 60.8856 5.117e-07 ***
## Residuals 17 105.93    6.23                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(model5)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27 56.5312 8.406e-07 ***
## Midarm     1  37.19   37.19  5.9674   0.02579 *  
## Residuals 17 105.93    6.23                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Koefisien determinasi parsial

  • Berdasarkan hasil perhitungan di atas dapat diketahui bahwa variabel Midarm memiliki koef determinasi parsial paling kecil sehingga diperiksa dengan pengujian menggunakan Uji F.

  • Hasil uji F menunjukkan variabel Midarm memiliki p-value < 0.05 sehingga dapat disimpulkan bahwa β2 (Midarm) memiliki nilai yang tidak sama dengan nol. Dengan demikian dapat disimpulkan bahwa variabel Midarm tidak dikeluarkan dari Model.

Pengujian parsial β0, β1, dan β2

summary(model5)
## 
## Call:
## lm(formula = Bodyfat ~ Triceps + Midarm, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.8794 -1.9627  0.3811  1.2688  3.8942 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   6.7916     4.4883   1.513   0.1486    
## Triceps       1.0006     0.1282   7.803 5.12e-07 ***
## Midarm       -0.4314     0.1766  -2.443   0.0258 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.496 on 17 degrees of freedom
## Multiple R-squared:  0.7862, Adjusted R-squared:  0.761 
## F-statistic: 31.25 on 2 and 17 DF,  p-value: 2.022e-06

Hasil Uji t:

Berdasarkan hasil di atas dapat disimpulkan bahwa β1 dan β2 tidak sama dengan nol karena p-value < 0.05. sedangkan β0 memiliki p-value > 0.05 sehingga β0 dikeluarkan dari model.

Model Terbaik

summary(model5)
## 
## Call:
## lm(formula = Bodyfat ~ Triceps + Midarm, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.8794 -1.9627  0.3811  1.2688  3.8942 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   6.7916     4.4883   1.513   0.1486    
## Triceps       1.0006     0.1282   7.803 5.12e-07 ***
## Midarm       -0.4314     0.1766  -2.443   0.0258 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.496 on 17 degrees of freedom
## Multiple R-squared:  0.7862, Adjusted R-squared:  0.761 
## F-statistic: 31.25 on 2 and 17 DF,  p-value: 2.022e-06

Bodyfat = 1.0006 β1 - 0.4314β2

Metode Backward dengan fungsi R

bs <- regsubsets(Bodyfat ~ ., data=lemak, nvmax = 3, method = "backward") #nvmax jumlah varindependen

hasil<-summary(bs)

which.min(hasil$cp)#bernilai 2 berarti var yang terpilih ada dua
## [1] 2
which.min(hasil$bic)
## [1] 2
which.max(hasil$adjr2)
## [1] 3
coef(bs,2) #2 adalah jumlah var terpilih
## (Intercept)     Triceps      Midarm 
##    6.791627    1.000585   -0.431442

Bodyfat = 1.0006 β1 - 0.4314β2

Metode Seleksi Bertahap (Stepwise)

Korelasi

cor(lemak) #pilih var independen dengan cor tertinggi dg Y -> Vriabel Thigh
##           Triceps     Thigh    Midarm   Bodyfat
## Triceps 1.0000000 0.9238425 0.4577772 0.8432654
## Thigh   0.9238425 1.0000000 0.0846675 0.8780896
## Midarm  0.4577772 0.0846675 1.0000000 0.1424440
## Bodyfat 0.8432654 0.8780896 0.1424440 1.0000000

Memilih variabel independen pertama

model1<-lm(Bodyfat~Thigh,data=lemak) #Thigh
summary(model1)
## 
## Call:
## lm(formula = Bodyfat ~ Thigh, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.4949 -1.5671  0.1241  1.3362  4.4084 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -23.6345     5.6574  -4.178 0.000566 ***
## Thigh         0.8565     0.1100   7.786  3.6e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.51 on 18 degrees of freedom
## Multiple R-squared:  0.771,  Adjusted R-squared:  0.7583 
## F-statistic: 60.62 on 1 and 18 DF,  p-value: 3.6e-07
anova(model1)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value  Pr(>F)    
## Thigh      1 381.97  381.97  60.617 3.6e-07 ***
## Residuals 18 113.42    6.30                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dapat disimpulkan variabel bebas Thigh mempunyai pengaruh yang signifikan terhadap variabel dependen bedasarkan nilai p-value yang kurang dari 0.05.

Memilih variabel independen berikutnya

Untuk memilih var berikutnya yang masuk, diperiksa kuadrat korelasi parsial variabel independen tersisa terhadap var dependen dikontrol yaitu variabel yang sudah masuk terlebih dahulu. Variabel yang masuk berikutnya yaitu variabel dengan nilai korelasi parsial terbesar.

model2<-lm(Bodyfat~Thigh+Midarm,data=lemak) 
anova(model2)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Thigh      1 381.97  381.97  58.441 6.737e-07 ***
## Midarm     1   2.31    2.31   0.354    0.5597    
## Residuals 17 111.11    6.54                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model3<-lm(Bodyfat~Thigh+Triceps,data=lemak) 
anova(model3)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Thigh      1 381.97  381.97  59.057 6.281e-07 ***
## Triceps    1   3.47    3.47   0.537    0.4737    
## Residuals 17 109.95    6.47                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil di atas dapat diketahui bahwa variabel yang memiliki kuadrat korelasi parsial terbesar adalah variabel triceps. Sehingga variabel yang akan dimasukkan berikutnya adalah Triceps dan Thigh.

Model Regresi dengan Thigh dan Triceps

model3<-lm(Bodyfat~Thigh+Triceps,data=lemak) 
anova(model3)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Thigh      1 381.97  381.97  59.057 6.281e-07 ***
## Triceps    1   3.47    3.47   0.537    0.4737    
## Residuals 17 109.95    6.47                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Sampai di sini langkah yang dilakukan masih sama seperti metode forward, langkah berikutnya adalah bagian penggabungan dengan metode backward, yaitu pemeriksaan apakah kalau tadinya Triceps masuk terlebih dahulu, apakah pengaruh Thigh masih berarti.

Tahap Backward (Triceps dan Thigh)

model4<-lm(Bodyfat~Triceps+Thigh,data=lemak) 
anova(model4)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27 54.4661 1.075e-06 ***
## Thigh      1  33.17   33.17  5.1284    0.0369 *  
## Residuals 17 109.95    6.47                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  • Berdasarka hasil di atas dapat diketahui bahwa variabel Thigh memiliki p-value < 0.05 sehigga variabel ini masih dapat dimasukkan ke dalam model.

  • Selanjutnya , Periksa kuadrat korelasi parsial variabel independen tersisa terhadap var dependen dikontrol yaitu variabel yang sudah masuk terlebih dahulu. Variabel yang masuk berikutnya yaitu variabel dengan nilai korelasi parsial kuadrat terbesar.

model5<-lm(Bodyfat~Triceps+Midarm,data=lemak) 
anova(model5)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27 56.5312 8.406e-07 ***
## Midarm     1  37.19   37.19  5.9674   0.02579 *  
## Residuals 17 105.93    6.23                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

  • Hasil di atas menunjukkan bahwa variabel Midarm dan Triceps memiliki nilai korelasi parsial kuadrat lebih besar dari pada Triceps dan Thigh sehingga varaibel yang akan digunakan adalah Midarm.

  • Susun model regresi Y terhadap Triceps dan Midarm serta lakukan uji hipotesis secara keseluruhan dan uji parsial untuk variabel baru yang masuk.

model5<-lm(Bodyfat~Triceps+Midarm,data=lemak) 
anova(model5)
## Analysis of Variance Table
## 
## Response: Bodyfat
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Triceps    1 352.27  352.27 56.5312 8.406e-07 ***
## Midarm     1  37.19   37.19  5.9674   0.02579 *  
## Residuals 17 105.93    6.23                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(model5)
## 
## Call:
## lm(formula = Bodyfat ~ Triceps + Midarm, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.8794 -1.9627  0.3811  1.2688  3.8942 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   6.7916     4.4883   1.513   0.1486    
## Triceps       1.0006     0.1282   7.803 5.12e-07 ***
## Midarm       -0.4314     0.1766  -2.443   0.0258 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.496 on 17 degrees of freedom
## Multiple R-squared:  0.7862, Adjusted R-squared:  0.761 
## F-statistic: 31.25 on 2 and 17 DF,  p-value: 2.022e-06
  • Hasil di atas menunjukkan bahwa variabel Triceps dan Midarm memiliki p-value < 0.05 sehingga dapat disimpulkan model terbaik dari hasil seleksi stepwise adalah:

Bodyfat = 1.0006β1 -0.4314β2

Metode Stepwise dengan fungsi R

model<-lm(Bodyfat~.,data=lemak)
selectedModel<-step(model) 
## Start:  AIC=39.87
## Bodyfat ~ Triceps + Thigh + Midarm
## 
##           Df Sum of Sq     RSS    AIC
## - Thigh    1    7.5293 105.934 39.342
## <none>                  98.405 39.867
## - Midarm   1   11.5459 109.951 40.086
## - Triceps  1   12.7049 111.110 40.296
## 
## Step:  AIC=39.34
## Bodyfat ~ Triceps + Midarm
## 
##           Df Sum of Sq    RSS    AIC
## <none>                 105.93 39.342
## - Midarm   1     37.19 143.12 43.359
## - Triceps  1    379.40 485.34 67.782
summary(selectedModel)
## 
## Call:
## lm(formula = Bodyfat ~ Triceps + Midarm, data = lemak)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.8794 -1.9627  0.3811  1.2688  3.8942 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   6.7916     4.4883   1.513   0.1486    
## Triceps       1.0006     0.1282   7.803 5.12e-07 ***
## Midarm       -0.4314     0.1766  -2.443   0.0258 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.496 on 17 degrees of freedom
## Multiple R-squared:  0.7862, Adjusted R-squared:  0.761 
## F-statistic: 31.25 on 2 and 17 DF,  p-value: 2.022e-06