Analisis regresi, baik linear maupun non linear memodelkan hubungan variabel dependen dengan independen. Akan tetapi, pada beberapa kasus terdapat outlier pada data, maka digunakan regresi robust. Regresi robust merupakan metode yang bertujuan menghasilkan model regresi yang lebih stabil dan akurat bahkan dalam kasus data yang tidak normal. Dalam kasus ini, ingin menganalisis hubungan harapan hidup dengan beberapa variabel prediktor berupa kasus kematian dewasa, tingkat pendidikan, dan kasus kematian bayi.
Dataset ini diambil dari format excel yaitu data_case_method - dataset.xlsx yang berisi informasi tentang harapan hidup, informasi kesehatan, serta informasi ekonomi dan demografi tentang 179 negara dari tahun 2000 hingga 2015. Dataset yang disesuaikan memiliki 21 variabel atau kolom yang berbeda dan 2.864 baris atau entri data. Syntax berikut menampilkan lima data pertama dari dataset.
library(readxl)
data_case_method_dataset <- read_excel("D:/SMT 6/SIM/RMarkdown/data_case_method - dataset.xlsx")
knitr::kable(head(data_case_method_dataset, 5))
| No | Country | Region | Year | Infant_deaths | Under_five_deaths | Adult_mortality | Alcohol_consumption | Hepatitis_B | Measles | BMI | Polio | Diphtheria | Incidents_HIV | GDP_per_capita | Population_mln | Thinness_ten_nineteen_years | Thinness_five_nine_years | Schooling | Economy_status_Developed | Economy_status_Developing | Life_expectancy |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Turkiye | Middle East | 2015 | 11.1 | 13.0 | 105.8240 | 1.32 | 97 | 65 | 27.8 | 97 | 97 | 0.08 | 11006 | 78.53 | 4.9 | 4.8 | 7.8 | 0 | 1 | 76.5 |
| 2 | Spain | European Union | 2015 | 2.7 | 3.3 | 57.9025 | 10.35 | 97 | 94 | 26.0 | 97 | 97 | 0.09 | 25742 | 46.44 | 0.6 | 0.5 | 9.7 | 1 | 0 | 82.8 |
| 3 | India | Asia | 2007 | 51.5 | 67.9 | 201.0765 | 1.57 | 60 | 35 | 21.2 | 67 | 64 | 0.13 | 1076 | 1183.21 | 27.1 | 28.0 | 5.0 | 0 | 1 | 65.4 |
| 4 | Guyana | South America | 2006 | 32.8 | 40.5 | 222.1965 | 5.68 | 93 | 74 | 25.3 | 92 | 93 | 0.79 | 4146 | 0.75 | 5.7 | 5.5 | 7.9 | 0 | 1 | 67.0 |
| 5 | Israel | Middle East | 2012 | 3.4 | 4.3 | 57.9510 | 2.89 | 97 | 89 | 27.0 | 94 | 94 | 0.08 | 33995 | 7.91 | 1.2 | 1.1 | 12.8 | 1 | 0 | 81.7 |
Gunakan metode analisis regresi dengan Ordinary Least Square (OLS) atau Metode Kudrat Terkecil (MKT) untuk mengestimasi model regresi awal.
# Membangun model regresi berganda
mkt <- lm(Life_expectancy ~ Adult_mortality + Schooling + Infant_deaths , data=data_case_method_dataset)
# Menampilkan ringkasan model
summary(mkt)
##
## Call:
## lm(formula = Life_expectancy ~ Adult_mortality + Schooling +
## Infant_deaths, data = data_case_method_dataset)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.6727 -1.0174 -0.0169 1.0427 5.1513
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 80.0666353 0.1578773 507.14 <2e-16 ***
## Adult_mortality -0.0484974 0.0004093 -118.48 <2e-16 ***
## Schooling 0.2667687 0.0146391 18.22 <2e-16 ***
## Infant_deaths -0.1291953 0.0022604 -57.16 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.516 on 2860 degrees of freedom
## Multiple R-squared: 0.974, Adjusted R-squared: 0.974
## F-statistic: 3.576e+04 on 3 and 2860 DF, p-value: < 2.2e-16
residu_data=resid(mkt)
Dapat dilihat bahwa model menghasilkan R2 adjusted sebesar 97,40% yang artinya bahwa variabel kasus kematian dewasa, tingkat pendidikan, dan kasus kematian bayi berpengaruh terhadap harapan hidup sebesar 97,40% dan 2,6% dipengaruhi oleh faktor lainnya di luar model.
Uji asumsi klasik adalah persyaratan statistik yang harus dipenuhi pada analisis regresi yang berbasis ordinary least square (OLS). Jika ada asumsi yang dilanggar, maka tidak dapat digunakan. Maka dari itu, digunakan regresi robust.
Langkah pertama untuk melakukan uji asumsi klasik adalah memanggil library yang diperlukan sebagai berikut:
#Uji asumsi klasik
library(car)
## Loading required package: carData
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dengan fungsi yang disediakan dalam library “lmtest” dapat digunakan untuk menguji asumsi klasik regresi seperti normalitas residual, homoskedastisitas, tidak adanya autokorelasi, dan lain-lain. Sedangkan fungsi library “car” adalah “vif()” untuk menguji multikolinearitas.
Berikut merupakan penyajian syntax R untuk melakukan uji normalitas menggunakan uji Shapiro-Wilk pada residu regresi. Uji Shapiro-Wilk adalah salah satu metode yang umum digunakan untuk menguji apakah suatu sampel berasal dari populasi yang terdistribusi secara normal.
normality_test <- shapiro.test(residu_data)
cat("Nilai p-value dari uji normalitas:")
## Nilai p-value dari uji normalitas:
print(normality_test$p.value)
## [1] 0.0005654226
Berdasarkan nilai p-value, dapat disimpulkan bahwa terdapat bukti yang cukup kuat untuk menolak hipotesis nol bahwa residu regresi terdistribusi secara normal. Artinya, residu regresi tidak mengikuti distribusi normal.
Uji homoskedastisitas digunakan untuk menguji asumsi bahwa varians residual dalam model regresi adalah konstan. Asumsi ini penting dalam analisis regresi karena ketidakhomoskedastisitas dapat menghasilkan bias dalam estimasi parameter dan mengganggu interpretasi hasil regresi.
Homoskedasticity_test <- bptest(mkt)
cat("Nilai p-value dari uji homoskedastisitas:")
## Nilai p-value dari uji homoskedastisitas:
print(Homoskedasticity_test$p.value)
## BP
## 3.044425e-08
Berdasarkan nilai p-value yang diperoleh, menunjukkan bahwa terdapat bukti yang kuat untuk menolak hipotesis nol bahwa varians residual dalam model regresi adalah konstan (homoskedastisitas). Dengan demikian, dapat disimpulkan bahwa terdapat ketidakhomoskedastisitas dalam data.
Uji autokorelasi atau uji non-autokorelasi dalam konteks regresi adalah pengujian apakah terdapat hubungan linier antara nilai residual pada suatu observasi dengan nilai residual pada observasi sebelumnya. Jika terdapat autokorelasi, berarti terdapat pola ketergantungan antara residual-residual tersebut.
autocorr_test <- dwtest(mkt)
cat("Nilai p-value dari uji autokorelasi:")
## Nilai p-value dari uji autokorelasi:
print(autocorr_test$p.value)
## [1] 0.5903459
Berdasarkan nilai dapat disimpulkan tidak terdapat cukup bukti statistik untuk menolak hipotesis nol bahwa tidak ada autokorelasi dalam residu model. Artinya, tidak ada indikasi kuat adanya autokorelasi dalam data.
Untuk melakukan uji multikolinearitas, dapat digunakan metode Variance Inflation Factor (VIF). VIF mengukur sejauh mana variabel independen terkait erat dengan variabel lain dalam model regresi. Semakin tinggi nilai VIF, semakin tinggi tingkat multikolinearitas. Nilai VIF >10 menunjukkan adanya multikolinearitas yang signifikan.
multicol_test <- vif(mkt)
print(multicol_test)
## Adult_mortality Schooling Infant_deaths
## 2.754629 2.683741 4.823978
Berdasarkan output, dapat disimpulkan bahwa tidak ada indikasi kuat mengenai masalah multikolinearitas pada model tersebut.
Pendeteksian pencilan dilakukan dengan menggunakan nilai difference in fitted value (DFFITS). Suatu data dikatakan sebagai pencilan jika nilai DFFITS> nilai pembandingnya.
dffits_values <- dffits(mkt)
nilai_pembanding <- 2 * (sqrt(3/2864))
cat("\nNilai Pembanding DFFITS:", nilai_pembanding)
##
## Nilai Pembanding DFFITS: 0.06472978
jumlah_outlier <- sum(abs(dffits_values) > nilai_pembanding)
cat("\n\nJumlah Data Outlier:", jumlah_outlier)
##
##
## Jumlah Data Outlier: 242
Hasil identifikasi menunjukkan bahwa sebanyak 242 data dari 2864 merupakan data outlier.
Adanya beberapa uji asumsi klasik yang dilanggar dan adanya pencilan pada data menyebabkan taksiran model regresi belum dapat dikatakan baik. Sehingga perlu dilakukan alternatif lain untuk mengestimasi parameter. Parameter yang lebih tahan terdapat pencilan salah satunya dengan metode regresi robust estimasi M dengan fungsi pembobot Huber. Proses ini menggunakan cara iteratif.
Proses iteratif dimulai dengan menentukan estimasi awal koefisien regresi yang diperoleh dengan metode kuadrat terkecil yang kemudian dihitung nilai residual dan nilai sig serta pembobot w. Nilai residual dari model iterasi 1 digunakan untuk iterasi ke-2. Itetrasi akan terus berlanjut hingga diperoleh nilai beta hat yang konvergen atau sama dengan hasil iterasi sebelumnya.
# Inisialisasi matriks untuk menyimpan hasil koefisien
koefisien <- matrix(NA, nrow = 10, ncol = 4)
# Menghitung residu awal
residu <- resid(mkt)
# Pengulangan loop untuk estimasi M-pembobot Huber
for (i in 1:10) {
# Menghitung sig
sig <- median(abs(residu - median(residu))) / 0.6745
# Menghitung nilai ui
u <- residu / sig
# Menghitung pembobot
pembobot <- ifelse(abs(u) > 1.345, 1.345 / abs(u), 1)
# Membangun model regresi dengan pembobot
model <- lm(Life_expectancy ~ Adult_mortality + Schooling + Infant_deaths, data = data_case_method_dataset, weights = pembobot)
# Menyimpan hasil koefisien
koefisien[i, ] <- coef(model)
# Menghitung residu
residu <- model$residuals
}
# Menampilkan tabel hasil koefisien
library(knitr)
knitr::kable(koefisien, caption = "Hasil Koefisien Iterasi")
| 80.18527 | -0.0489696 | 0.2640274 | -0.1289269 |
| 80.21434 | -0.0490814 | 0.2630640 | -0.1289062 |
| 80.22179 | -0.0491085 | 0.2627726 | -0.1289128 |
| 80.22385 | -0.0491157 | 0.2626846 | -0.1289167 |
| 80.22442 | -0.0491176 | 0.2626589 | -0.1289183 |
| 80.22453 | -0.0491178 | 0.2626530 | -0.1289192 |
| 80.22456 | -0.0491179 | 0.2626516 | -0.1289195 |
| 80.22456 | -0.0491179 | 0.2626512 | -0.1289196 |
| 80.22456 | -0.0491179 | 0.2626511 | -0.1289197 |
| 80.22456 | -0.0491179 | 0.2626511 | -0.1289197 |
# Membangun model regresi dengan pembobot dari iterasi terakhir
model_terakhir <- lm(Life_expectancy ~ Adult_mortality + Schooling + Infant_deaths, data = data_case_method_dataset, weights = pembobot)
# Menampilkan summary model terakhir
summary(model_terakhir)
##
## Call:
## lm(formula = Life_expectancy ~ Adult_mortality + Schooling +
## Infant_deaths, data = data_case_method_dataset, weights = pembobot)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -3.1075 -1.0327 -0.0274 1.0290 3.2505
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 80.224564 0.147500 543.90 <2e-16 ***
## Adult_mortality -0.049118 0.000386 -127.25 <2e-16 ***
## Schooling 0.262651 0.013630 19.27 <2e-16 ***
## Infant_deaths -0.128920 0.002130 -60.52 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.378 on 2860 degrees of freedom
## Multiple R-squared: 0.977, Adjusted R-squared: 0.9769
## F-statistic: 4.042e+04 on 3 and 2860 DF, p-value: < 2.2e-16
Dapat dilihat bahwa model menghasilkan R2 adjusted sebesar 97,69% yang artinya bahwa variabel kasus kematian dewasa, tingkat pendidikan, dan kasus kematian bayi berpengaruh terhadap harapan hidup sebesar 97,69% dan 2,31% dipengaruhi oleh faktor lainnya di luar model.
Ternyata hasil perhitungan beta hat tiap iterasi berhenti pada iterasi ke-10. Jadi dengan menggunakan estimasi-M memakai fungsi pembobot Huber diperoleh taksiran model regresi sebagai berikut
\[ \hat{Y} = 80.22456 - 0.0491179 X_1 + 0.2626511 X_2 - 0.1289197 X_3 \]
Interpretasi dari model regresi robust dengan estimasi M yaitu kasus kematian dewasa, tingkat pendidikan, dan kasus kematian bayi memiliki pengaruh terhadap harapan hidup.Setiap kenaikan satu unit kasus kematian dewasa (𝑋1) maka akan menurunkan angka harapan hidup sebesar -0.0491179 unit. Setiap kenaikan satu unit tingkat pendidikan (𝑋2) maka akan meningkatkan angka harapan hidup sebesar 0.2626511 unit. Serta, setiap kenaikan satu unit kasus kematian bayi (𝑋3) maka akan menurunkan angka harapan hidup sebesar -0.1289197 unit.