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 :
X1: Triceps Skinfold ThicknessX2: Thigh CircumferenceX3: Midarm CircumferenceY: 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.
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
Untuk melihat lebih dalam, residual diurukan berdasarkan
X2 yang tidak digunakan dalam model pertama
Dari kedua plot tidak tampak adanya heteroskedasitas.
Model kedua
Pemeriksaan residual terhadap urutan observasinya
Untuk melihat lebih dalam, residual diurukan berdasarkan
X1 yang tidak digunakan dalam model pertama
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
##
## 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
##
## 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 ))
plotHatvDari 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 ))
plotStuDari 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 \]
Jodi Jhouranda Siregar, IPB University, jodijhouranda@apps.ipb.ac.id↩︎