Analisis Regresi Linear Berganda dan Regresi LASSO pada Data Persentase Lemak Tubuh Pria

Library

library(corrplot)
library(car)
library(glmnet)
library(factoextra)

Data

Dataset yang digunakan merupakan data kandungan persentase lemak tubuh dari 252 amatan, yaitu pria, beserta 14 pengukuran kondisi tubuh yang seluruhnya bertipe numerik.

dt.model <- read.csv("C:\\Users\\ASUS\\Downloads\\Soal UAS Smt 5\\dataModel.csv", sep = ";")
head(dt.model)
##   No    Y X1   X2    X3   X4   X5    X6    X7    X8   X9  X10  X11  X12  X13
## 1  1 12.6 23 70.0 172.1 23.7 36.2  93.1  85.2  94.5 59.0 37.3 21.9 32.0 27.4
## 2  2  6.9 22 78.6 183.5 23.4 38.5  93.6  83.0  98.7 58.7 37.3 23.4 30.5 28.9
## 3  3 24.6 22 69.9 168.3 24.7 34.0  95.8  87.9  99.2 59.6 38.9 24.0 28.8 25.2
## 4  4 10.9 26 83.8 183.5 24.9 37.4 101.8  86.4 101.2 60.1 37.3 22.8 32.4 29.4
## 5  5 27.8 24 83.6 181.0 25.6 34.4  97.3 100.0 101.9 63.2 42.2 24.0 32.2 27.7
## 6  6 20.6 24 95.4 189.9 26.5 39.0 104.5  94.4 107.8 66.0 42.0 25.6 35.7 30.6
##    X14
## 1 17.1
## 2 18.2
## 3 16.6
## 4 18.2
## 5 17.7
## 6 18.8

Menghapus Kolom No

Dilakukan penghapusan terhadap kolom yang tidak digunakan dalam analisis, yaitu kolom No.

dt.model1 <- dt.model[,-1]

Periksa Korelasi

Dilakukan pemeriksaan terhadap korelasi antar peubah penjelas. Korelasi yang kuat antar peubah penjelas ini dapat mengindikasikan adanya multikolinearitas.

kor <- cor(dt.model1[,-1])
corrplot(kor, method = "number",
         is.corr = T, type = "lower", 
         diag = F, number.cex = 0.8)

Plot korelasi di atas memperlihatkan hubungan antar peubah penjelas pada data. Dapat dilihat bahwa terdapat korelasi yang kuat antara peubah X2 dengan seluruh peubah penjelas lainnya, kecuali X1 dan X3. Sebagian besar korelasi bernilai positif dan mendekati satu, yang mengindikasikan adanya multikolinearitas antar peubah penjelas.

Periksa Multikolinearitas

mod1 <- lm(Y~., data = dt.model1)
vif(mod1)
##        X1        X2        X3        X4        X5        X6        X7        X8 
##  2.251927 33.722299  2.253757 16.151978  4.430814 10.685381 13.350737 15.143865 
##        X9       X10       X11       X12       X13       X14 
##  7.962503  4.827959  1.945075  3.675477  2.193314  3.380745

Indikasi adanya multikolinearitas ditandai dengan nilai VIF > 10. Berdasarkan output di atas, terdapat lima peubah dengan nilai VIF yang besar (VIF > 10), yaitu X2, X4, X6, X7, dan X8.

Regresi Linier Berganda

summary(mod1)
## 
## Call:
## lm(formula = Y ~ ., data = dt.model1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -10.262  -2.590  -0.106   2.906   9.281 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -15.08665   16.09640  -0.937  0.34957    
## X1            0.05690    0.03004   1.894  0.05938 .  
## X2           -0.17844    0.10989  -1.624  0.10573    
## X3           -0.02090    0.04070  -0.513  0.60816    
## X4            0.06094    0.27788   0.219  0.82660    
## X5           -0.44552    0.21842  -2.040  0.04248 *  
## X6           -0.03114    0.09780  -0.318  0.75048    
## X7            0.87895    0.08547  10.283  < 2e-16 ***
## X8           -0.20381    0.13702  -1.487  0.13822    
## X9            0.22750    0.13558   1.678  0.09466 .  
## X10          -0.00151    0.22980  -0.007  0.99476    
## X11           0.15667    0.20756   0.755  0.45110    
## X12           0.14848    0.16006   0.928  0.35453    
## X13           0.42908    0.18487   2.321  0.02114 *  
## X14          -1.47923    0.49678  -2.978  0.00321 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.996 on 237 degrees of freedom
## Multiple R-squared:  0.749,  Adjusted R-squared:  0.7342 
## F-statistic: 50.52 on 14 and 237 DF,  p-value: < 2.2e-16

Berdasarkan hasil uji signifikansi parameter di atas, tidak seluruh parameter signifikan pada taraf nyata 5%. Peubah yang memiliki p-value < α = 0.05 adalah X5, X7, X13, dan X14 sehingga keempat peubah tersebut signifikan terhadap model yang digunakan, yaitu model penuh dengan seluruh peubah penjelas. Sepuluh peubah penjelas lainnya tidak signifikan pada model penuh yang digunakan.

Regresi LASSO

Regresi LASSO merupakan metode regresi berganda yang digunakan untuk menyusutkan koefisien taksiran mendekati angka nol, juga menyeleksi peubah-peubah penjelas sehingga menghasilkan model dengan peubah yang memiliki pengaruh terhadap peubah respon. Peubah penjelas yang tidak memiliki pengaruh terhadap peubah respon (tidak signifikan dalam model) dikeluarkan dari model. Regresi LASSO digunakan pada peubah yang berdistribusi normal baku sehingga diatur standardize = TRUE

set.seed(123)
lambdas <- 10^seq(2, -3, by = -.1)
lasso_reg <- cv.glmnet(as.matrix(dt.model1[,-1]), dt.model1[,1], alpha = 1, 
                       lambda = lambdas, standardize = TRUE, nfolds = 5)

# Best lambda
lambda_best <- lasso_reg$lambda.min 
lambda_best
## [1] 0.03981072

Model regresi LASSO dibangun dengan alpha = 1. Dilakukan setting nilai lambda yang akan dikeluarkan, yaitu 10^seq(2, -3, by = -.1) yang berjumlah 51 lambda dari nilai 100 sampai dengan 0.001. Lambda optimum bernilai 0.0398 yang didapatkan dari lambda minimum lasso_reg

lasso_model <- glmnet(as.matrix(dt.model1[,-1]), dt.model1[,1], alpha = 1, 
                      lambda = lambda_best, standardize = TRUE)
lasso_model
## 
## Call:  glmnet(x = as.matrix(dt.model1[, -1]), y = dt.model1[, 1], alpha = 1,      lambda = lambda_best, standardize = TRUE) 
## 
##   Df  %Dev  Lambda
## 1 11 74.71 0.03981

Output di atas menghasilkan persentase deviasi dari lambda optimum, yaitu 74.71%.

coef(lasso_reg, s = "lambda.min")
## 15 x 1 sparse Matrix of class "dgCMatrix"
##                       s1
## (Intercept) -12.80156732
## X1            0.05429336
## X2           -0.13208900
## X3           -0.03396280
## X4            .         
## X5           -0.39346800
## X6            .         
## X7            0.81893191
## X8           -0.13601518
## X9            0.15375537
## X10           .         
## X11           0.06467199
## X12           0.10353417
## X13           0.37693849
## X14          -1.42397649

Output di atas merupakan nilai intersep dan koefisien regresi dari masing-masing peubah penjelas yang selanjutnya digunakan untuk membuat persamaan model regresi LASSO. Pada output tersebut, terlihat tidak ada koefisien untuk peubah X4, X6, dan X10 yang berarti peubah penjelas tersebut tidak memiliki pengaruh terhadap peubah respon sehingga dikeluarkan dari model.