library(DT) 
library(car)

1 Pertama, kita akan memasukkan data yang kita miliki.

setwd("D:/Julian Salomo/Matana/Analisis Regresi")
bodyfat <-read.csv('bodyfat.csv')[,c(-6,-7)]
datatable(bodyfat)

2 Kedua, kita menghitung nilai korelasinya.

round(cor(bodyfat),4)
##            BodyFat_Y Weight_X1 Chest_X2 Abdomen_X3 Hip_X4
## BodyFat_Y     1.0000    0.5556   0.6928     0.8315 0.5929
## Weight_X1     0.5556    1.0000   0.8988     0.8470 0.9102
## Chest_X2      0.6928    0.8988   1.0000     0.9111 0.8268
## Abdomen_X3    0.8315    0.8470   0.9111     1.0000 0.8416
## Hip_X4        0.5929    0.9102   0.8268     0.8416 1.0000

Dari hasil ini, kita dapat melihat beberapa nilai korelasi yang lebih dari 0.8, yang menandakan adanya multikolinieritas.

3 Menghitung VIF

Selain dengan menghitung nilai korelasi, kita juga dapat mendeteksi multikolinieritas dengan melihat nilai VIFnya

model = lm(BodyFat_Y~., data = bodyfat)
vif(model)
##  Weight_X1   Chest_X2 Abdomen_X3     Hip_X4 
##   9.843675   9.312587   7.043387   6.823786

Kita mendapatkan beberapa variabel dengan nilai VIF > 5, yang mana menandakan adanya multikolinieritas.

4 Menghapus variabel dengan nilai VIF terbesar.

Untuk memperbaiki masalah multikolinieritas, kita perlu menghapus variabel dengan nilai VIF tertinggi, yakni Weight_X1

model <- lm(BodyFat_Y~Chest_X2+
              Abdomen_X3+
              Hip_X4,
            data = bodyfat)
vif(model)
##   Chest_X2 Abdomen_X3     Hip_X4 
##   6.344235   6.882931   3.696819

Karena masih ada VIF > 5, kita akan menghapus 1 variabel lagi dengan nilai VIF tertinggi, yakni Abdomen_X3

model <- lm(BodyFat_Y~Chest_X2+
              Hip_X4,
            data = bodyfat)
vif(model)
## Chest_X2   Hip_X4 
## 3.159999 3.159999

Karena semua nilai VIF telah < 5, maka masalah multikolinieritas telah teratasi.