Regression Model

Dataset

Dataset yang digunakan pada tugas ini

dataset = import("dataset_regresi.csv")[,-1]
dataset %>% kbl %>% kable_styling() %>% scroll_box(height = "200px")
x1 x2 x3 y
19.5 43.1 29.1 11.9
24.7 49.8 28.2 22.8
30.7 51.9 37.0 18.7
29.8 54.3 31.1 20.1
19.1 42.2 30.9 12.9
25.6 53.9 23.7 21.7
31.4 58.5 27.6 27.1
27.9 52.1 30.6 25.4
22.1 49.9 23.2 21.3
25.5 53.5 24.8 19.3
31.1 56.6 30.0 25.4
30.4 56.7 28.3 27.2
18.7 46.5 23.0 11.7
19.7 44.2 28.6 17.8
14.6 42.7 21.3 12.8
29.5 54.4 30.1 23.9
27.7 55.3 25.7 22.6
30.2 58.6 24.6 25.4
22.7 48.2 27.1 14.8
25.2 51.0 27.5 21.1

dimana :

  1. X1 : Triceps Skinfold Thickness
  2. X2 : Thigh Circumference
  3. X3 : Midarm Circumference
  4. Y : Body fat

Multicollinearity

Plot korelasi

Memeriksa dengan menampilkan plot korelasi :

# Create the plots
pairs(dataset %>%  select(x1:x3), lower.panel = panel.cor,upper.panel = upper.panel)

Dari grafik terlihat Triceps Skinfold Thickness berkorelasi erat dengan Thigh Circumference. Severe multicollinearity mungkin terjadi diantara dua variabel tersebut karena nilai korelasi di atas 0.8.

Variance Inlaction Factors (VIF)

# Create the plots
model1 = lm(y~.,data = dataset)

vif(model1)
##       x1       x2       x3 
## 708.8429 564.3434 104.6060

Dari perhitungan VIF, dapat dilihat pula X1,X2 danX3` memiliki nila VIF >5 yang menandakan adanya severe multicollinearity

Heterogeneity of Variance

Pada tahap sebelumnya terlihat adanya severe multicollinearity antara variabel penjelas X1 dan X2. Untuk itu heteroskedasitas akan diperiksa pada dua model yang memisahkan X1 dan X2. \[Y = \beta_0+\beta_1X_1+\beta_2 X_3 \] dan

\[Y = \beta_0+\beta_1X_2+\beta_2X_3 \]

Model pertama

Pemeriksaan residual terhadap urutan observasinya

model.opt1 =  lm(y~x1+x3,data = dataset)
plotModel(model.opt1,dataset)

Untuk melihat lebih dalam, residual diurukan berdasarkan X2 yang tidak digunakan dalam model pertama

plotModel(model.opt1,dataset,dataset$x2)

Dari kedua plot tidak tampak adanya heteroskedasitas.

Model kedua

Pemeriksaan residual terhadap urutan observasinya

model.opt2 = lm(y~x2+x3,data = dataset)
plotModel(model.opt2,dataset)

Untuk melihat lebih dalam, residual diurukan berdasarkan X1 yang tidak digunakan dalam model pertama

plotModel(model.opt2,dataset,dataset$x2)

Dari kedua plot tidak tampak adanya heteroskedasitas.

Adjusted RSquared

Karena kedua model tidak melanggar asumsi heteroskedasitas, akan dipilih satu diantara kedua model sebelum dilakukan pemeriksaan outlier

summary(model.opt1)
## 
## Call:
## lm(formula = y ~ x1 + x3, data = dataset)
## 
## 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    
## x1            1.0006     0.1282   7.803 5.12e-07 ***
## x3           -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
summary(model.opt2)
## 
## Call:
## lm(formula = y ~ x2 + x3, data = dataset)
## 
## 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 ** 
## x2            0.85088    0.11245   7.567 7.72e-07 ***
## x3            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

Dari kedua model di atas terlihat, model pertama memiliki nilai Adjusted R-Squared relatif lebih tinggi. Terlihat pula pada model kedua variabel X3 menjadi tidak signifikan pada uji t.

Outliers

Hat Matrix Diagonal (HMD)

Pertama dilakukan pemeriksaan HMD.

model.bf =  lm(y~x1+x3,data = dataset)
hatva = data.frame(hatv= hatvalues(model.bf)) %>% mutate(idx = 1:20 )
plotHatv = ggplot(data =hatva ,aes(x =idx,y=hatv,ylim = 0.8))+ylim(0,0.8)+
  geom_point()+ 
  geom_text(  label= 1:20,  nudge_x = .35, nudge_y = 0.02) +
  labs(x ="ith observation",y="hat value i", title = "Hat values plot") + 
  geom_abline(aes(intercept =9/20,slope=0 ))
plotHatv

Dari plot di atas terlihat tidak ada hat values yang melebihi nilai batas 9/20. Sehingga bisa disimpulkan tidak terdapat outliers pada data

Studentized Residuals

datstud = data.frame(student = rstudent(model.bf))

plotStu = ggplot(data =datstud ,aes(x = 1:20 ,y=student,ylim = 0.8))+ylim(-3,3)+
  geom_point()+ 
  geom_text(  label= 1:20,  nudge_x = .35, nudge_y = 0.02) +
  labs(x ="ith observation",y="Studentized Residuals", title = "Studentized Residuals plot") + 
  geom_abline(aes(intercept =2,slope=0 )) +geom_abline(aes(intercept =-2,slope=0 ))
plotStu

Dari plot di atas terlihat seluruh nilai studentized residuals tidak ada yang melewati range (2,-2). Sehingga disimpulkan tidak terdapat outliers pada data.

Final Model

Dari excercise di atas maka model yang disarankan untuk variabel tak bebas body fat adalah \[Body Fat = \beta_0+\beta_1* Triceps\_Skinfold\_Thickness+\beta_2* Midarm\_Circumference \]


  1. Jodi Jhouranda Siregar, IPB University, ↩︎