Library:
> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")1 PENDAHULUAN
1.1 Latar Belakang
Penyakit jantung menjadi masalah yang menyebabkan kematian bagi seluruh dunia. Terdapat faktor-faktor yang mempengaruhi adanya risiko yang dialami dari gejala penyakit jantung seperti jenis kelamin (laki-laki atau perempuan), perokok saat ini (ya atau tidak), pernah mengalami stroke (ya atau tidak), memiliki hipertensi (ya atau tidak) dan penderita diabetes (ya atau tidak). Banyak faktor lainnya yang memiliki kemungkinan menjadi faktor dari penyakit jantung. Penting adanya upaya untuk mempresiksi risiko penyakit jantung dari berbagai faktor sebagai pencegahan untuk penyakit jantung. Upaya tersebut dapat dilakukan dengan melakukan analisis regresi logistik berdasarkan faktor dari risiko yang ada. Analisis regresi logistik yang dilakukan terhadap prediksi risiko penyakit jantung dengan beberapa variabel, yaitu:
Variabel respon:
- Y: Risiko penyakit jantung koroner (0: tidak, 1: ya)
Variabel prediktor:
X1: Jenis kelamin (0: laki-laki, 1: perempuan)
X2: Perokok saat ini (0: tidak, 1: ya)
X3: Prevalen stroke (0: tidak, 1: ya)
X4: Prevalen hipertensi (0: tidak, 1: ya)
X5: Diabetes (0: tidak, 1: ya)
Analisis regesi logistik merupakan metode yang dapat digunakan untuk memodelkan hubungan dari variabel dependen (Y) dan variabel independen (X). Mengidentifikasikan faktor-faktor risiko yang signifikan dengan menghitung peluang berdasarkan faktor-faktor yang ada sehingga dapat melihat variabel prediktor (X) yang kuat dalam mempengaruhi variabel respon (Y).
Analisis regresi logistik dapat menghasilkan model yang mendukung dalam memprediksi kemungkinan atau mengindentifikasi dari hal yang ingin diteliti seperti kemungkinan seseorang terkena penyakit jantung. Informasi yang diperoleh membantu dalam pengambilan keputusan.
2 TINJAUAN PUSTAKA
2.1 Analisis Regresi
Menurut Roflin (2023), analisis regresi adalah analisis yang berguna untuk mempelajari hubungan antara satu atau beberapa variabel bebas dengan satu variabel terikat dengan bentuk model regresi. Analisis regresi bertujuan untuk melihat hubungan pengaruh variabel prediktor (X) terhadap variabel respon (Y) yang merupakan data numerik dan data kategorik untuk variabel prediktor dan data kategorik untuk variabel respon.
Menurut Hadi (2004), tugas pokok analisis regresi adalah:
Mencari korelasi antara respon dengan prediktor
Menguji terdapat korelasi yang signifikan atau tidak
Mencari persamaan garis regresi
Terdapat beberapa jenis model regresi yaitu regresi tunggal dan model regresi ganda (Roflin, 2023), yaitu:
\[ y_{i} = {β_0 + β_1x_i + ε_i} \]
dan
\[ y_{i} = {β_0 + β_1x_{1i} + \dots + β_kx_{ki} + ε_i} \]
Model analisis regresi tunggal dan analisis regresi ganda untuk mengetahui pengaruh variabel independen terhadap variabel dependen.
2.2 Analisis Regresi Logistik
Analisis regresi logistik merupakan penelitian yang sering dilakukan dalam penelitian bidang ilmu kesehatan terutama dalam menganalisis signifikansi pengaruh variabel faktor resiko terhadap kejadian. Analisis regresi logistik atau logit bagian dari regresi nonlinier. Regresi logistik terbagi menjadi regresi logistik biner, regresi logistik multinomial dan regresi logistik ordinal.
2.3 Regresi Logistik Biner
Regresi logistik biner merupakan bentuk regresi non-linier yang memiliki variabel terikat berupa variabel biner (bernilai 0 dan 1) yang memiliki sebaran bernoulli.
\[ f_{y_i} = {π(x_i)^{y_i}(1-π(x_i)^{1-y_i})}, y_i=0,1 \]
Model regresi logistik biner mempelajari hubungan satu atau lebih variabel bebas dengan satu variabel tidak bebas. Dimana terdapat bentuk model regresi logistik biner secara matematis, yaitu:
\[ π_i(x) = \frac{exp(β_0 + β_1x_{1i} + \dots + β_px_{pi})}{1+exp(β_0 + β_1x_{1i} + \dots + β_px_{pi})} \]
dan
\[ {ln} (\frac{π(x)}{1-π(x)}) = g(x_{ki}) = β_0 + β_1x_i + \dots + β_kx_k \]
Fungsi linier yang membantu dalam memenuhi asumsi untuk setiap observasi dari variabel tertentu.
2.4 Regresi Logistik Multinomial
Regresi logistik multinomial merupakan bentuk regresi non-linier yang memiliki variabel terikat berupa variabel kategori yang memiliki sebaran multinomial (Roflin, 2004).
\[ f(x, n, p) = {\frac{n!}{x_1!x_2!...x_k!}}{p^{x_1}_1p^{x_2}_2...p^{x_k}_k} \]
Model regresi logistik multinomial mempelajari hubungan lebih dari dua variabel bebas dengan satu variabel tidak bebas. Dimana terdapat bentuk model regresi logistik multinomial secara matematis, yaitu:
\[ π_k(x_i) = \frac{exp(β_0 + β_1x_{1i} + \dots + β_px_{pi})}{1+exp(β_0 + β_1x_{1i} + \dots + β_px_{pi})} \]
dan
\[ {ln} (\frac{π_k(x_i)}{1-π_k(x_i)}) = g_j(x_i) = β_0 + β_1x_{1i} + \dots + β_px_{pi} \]
Fungsi linier yang membantu dalam memenuhi asumsi untuk setiap observasi dari variabel tertentu.
2.5 Regresi Logistik Ordinal
Regresi logistik ordinal merupakan bentuk regresi non-linier yang memiliki variabel biner berupa variabel dua kategori (ordinal atau tingkatan).
Model regresi logistik ordinal mempelajari hubungan variabel bebas dengan variabel tidak bebas. Dimana terdapat bentuk model regresi logistik ordinal secara matematis, yaitu:
\[ P(Y<=r|x)=π_i(x) = \frac{exp(β_r + \sum β_jx_{ji})}{1+exp(β_r + \sum β_jx_{ji})} \]
dan
\[ {ln} (\frac{P(Y<=r|x_i)}{1-P(Y<=r|x_i)}) = logit(P(Y<=r|x_i)) \]
\[ β_{0r} + \sum β_jx_{ji} = logit(P(Y<=r|x_i)) \]
Fungsi linier yang membantu dalam memenuhi asumsi untuk setiap observasi dari variabel tertentu.
2.6 Asumsi Non Multikolinieritas
Asumsi non multikolinieritas dilakukan untuk membuktikan ada atau tidak korelasi antara variabel bebas. Asumsi dapat diperhitungkan dengan nilai VIF (Variance Inflation Factor).
\[ VIF_j= \frac{1}{1-R^2_j}, j=1,2,...,k \]
Asumsi terpenuhi ketika nilai VIF kurang dari 10, dapat juga dilakukan uji Bartlett
H0: p=1 (tidak terdapat korelasi antar variabel)
H1: p=! 1 (terdapat korelasi antar variabel)
\[ χ^2 = {-(n-1-\frac{2p+5}{6}).ln|p|} \]
2.7 Uji Signifikansi Keseluruhan Model
Uji signifikansi keseluruhan model dilakukan untuk membuktikan keberartian koefisien β secara keseluruhan (Pentury, 2016).
H0: β1 = β2 = … = βj = 0
H1: Minimal ada satu βj =! 0, j= 1,2,…,p
\[ G = -2 log(\frac{L_0}{L_p}) <menyebar-secara> χ^2_p \]
Keputusan: tolak H0 ketika nilai statistik uji-G > χ^2 atau P-value < alpha
2.8 Uji Parsial
Uji parsial dilakukan untuk membuktikan variabel prediktor signifikan atau tidak dengan layak masuk dalam model atau tidak (Pentury, 2016). Uji parsial diuji dengan Wald Test.
H0: βk = 0
H1: βk =! 0, k= 1,2,…,p
\[ W = \frac{ˆβ_k}{SE(ˆβ_k)} \]
Keputusan: tolak H0 ketika nilai statistik uji-W>Z alpha/2 atau P-value < alpha
2.9 Odds Ratio
Odds ratio diinterpretasikan sebagai penjelas dari interpretasi regresi logistik, dimana peluang sukses (π) terhadap peluang gagal (1-π). Nilai odds ratio berada dalam 0 < odds < ∞.
\[ odds = exp(ˆβ_{jk}) \]
2.10 Uji Kelayakan Model
Uji kelayakan model dilakukan untuk membuktikan model regresi dapat mempresentasikan data pengamatan. Uji kelayakan model dilakukan dengan Hosmer and Lemeshow Test.
H0: Model layak
H1: Model tidak layak
Keputusan: tolak H0 ketika nilai sig < alpha
3 SOURCE CODE
3.1 Input Data
> library(readxl)
> Mini_Project_RegLog <- read_excel("Mini Project RegLog.xlsx")
> str(Mini_Project_RegLog)
tibble [4,238 × 6] (S3: tbl_df/tbl/data.frame)
$ jeniskelamin : num [1:4238] 1 0 1 0 0 0 0 0 1 1 ...
$ perokoksaatini : num [1:4238] 0 0 1 1 1 0 0 1 0 1 ...
$ prevalenStroke : num [1:4238] 0 0 0 0 0 0 0 0 0 0 ...
$ prevalenHyp : num [1:4238] 0 0 0 1 0 1 0 0 1 1 ...
$ diabetes : num [1:4238] 0 0 0 0 0 0 0 0 0 0 ...
$ penyakitjantungkoroner: num [1:4238] 0 0 0 1 0 0 1 0 0 0 ...
>
> Y <- as.factor(Mini_Project_RegLog$penyakitjantungkoroner)
> X1 <- as.factor(Mini_Project_RegLog$jeniskelamin)
> X2 <- as.factor(Mini_Project_RegLog$perokoksaatini)
> X3 <- as.factor(Mini_Project_RegLog$prevalenStroke)
> X4 <- as.factor(Mini_Project_RegLog$prevalenHyp)
> X5 <- as.factor(Mini_Project_RegLog$diabetes)
>
> library(rmarkdown)
> data1 <- paged_table(data.frame(X1,X2,X3,X4,X5,Y))
> data13.2 Uji Non Multikolinieritas
> library(pscl)
> reg1 <- glm(X1~X2+X3+X4+X5,family = binomial, data = data1)
> summary1 <- data.frame(pR2(reg1))
fitting null model for pseudo-r2
> r2_1 <- summary1$pR2.reg1[6]
> R_1 <- 1/(1-r2_1)
> R_1
[1] 1.056336
>
> reg2 <- glm(X2~X1+X3+X4+X5,family = binomial, data = data1)
> summary2 <- data.frame(pR2(reg2))
fitting null model for pseudo-r2
> r2_2 <- summary2$pR2.reg2.[6]
> R_2 <- 1/(1-r2_2)
> R_2
[1] 1.073971
>
> reg3 <- glm(X3~X1+X2+X4+X5,family = binomial, data = data1)
> summary3 <- data.frame(pR2(reg3))
fitting null model for pseudo-r2
> r2_3 <- summary3$pR2.reg3.[6]
> R_3 <- 1/(1-r2_3)
> R_3
[1] 1.089689
>
> reg4 <- glm(X4~X1+X2+X3+X5,family = binomial, data = data1)
> summary4 <- data.frame(pR2(reg4))
fitting null model for pseudo-r2
> r2_4 <- summary4$pR2.reg4.[6]
> R_4 <- 1/(1-r2_4)
> R_4
[1] 1.029916
>
> reg5 <- glm(X5~X1+X2+X3+X4,family = binomial, data = data1)
> summary5 <- data.frame(pR2(reg5))
fitting null model for pseudo-r2
> r2_5 <- summary5$pR2.reg5.[6]
> R_5 <- 1/(1-r2_5)
> R_5
[1] 1.0365163.3 Model Regresi Logistik
> model_regresi <- glm(Y~X1+X2+X3+X4+X5, family = binomial, data = data1)
> model_regresi
Call: glm(formula = Y ~ X1 + X2 + X3 + X4 + X5, family = binomial,
data = data1)
Coefficients:
(Intercept) X11 X21 X31 X41 X51
-2.4385 0.4753 0.1480 1.1729 0.9621 1.0604
Degrees of Freedom: 4237 Total (i.e. Null); 4232 Residual
Null Deviance: 3612
Residual Deviance: 3421 AIC: 34333.4 Uji Signifikansi Keseluruhan Model
> pR2(model_regresi)
fitting null model for pseudo-r2
llh llhNull G2 McFadden r2ML
-1.710551e+03 -1.805775e+03 1.904479e+02 5.273302e-02 4.394339e-02
r2CU
7.662092e-02
> qchisq(0.95,4)
[1] 9.4877293.5 Uji Parsial Parameter Model
> summary(model_regresi)
Call:
glm(formula = Y ~ X1 + X2 + X3 + X4 + X5, family = binomial,
data = data1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.3159 -0.5492 -0.4391 -0.4091 2.2460
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.43849 0.08689 -28.063 < 2e-16 ***
X11 0.47526 0.08993 5.285 1.26e-07 ***
X21 0.14796 0.09080 1.630 0.10319
X31 1.17289 0.41863 2.802 0.00508 **
X41 0.96211 0.08908 10.801 < 2e-16 ***
X51 1.06041 0.20980 5.054 4.32e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 3611.5 on 4237 degrees of freedom
Residual deviance: 3421.1 on 4232 degrees of freedom
AIC: 3433.1
Number of Fisher Scoring iterations: 43.6 Koefisien Determinasi
> Rsq<-1-(3421.1/3611.5)
> Rsq
[1] 0.052720483.7 Odds Ratio
> beta <- (coef(model_regresi))
> beta
(Intercept) X11 X21 X31 X41 X51
-2.4384883 0.4752634 0.1479572 1.1728913 0.9621125 1.0604131
>
> OR_beta<-exp(beta)
> OR_beta
(Intercept) X11 X21 X31 X41 X51
0.08729271 1.60843783 1.15946330 3.23132201 2.61721962 2.88756365
>
> cbind(beta,OR_beta)
beta OR_beta
(Intercept) -2.4384883 0.08729271
X11 0.4752634 1.60843783
X21 0.1479572 1.15946330
X31 1.1728913 3.23132201
X41 0.9621125 2.61721962
X51 1.0604131 2.887563653.8 Membentuk Klasifikasi
> class<-table(data1$Y,fitted(model_regresi)>0.5)
> class
FALSE TRUE
0 3581 13
1 628 163.9 Uji Kelayakan Model
> library(generalhoslem)
> logitgof(data1$Y,fitted(model_regresi))
Hosmer and Lemeshow test (binary model)
data: data1$Y, fitted(model_regresi)
X-squared = 15.703, df = 5, p-value = 0.007744
> qchisq(0.95,5)
[1] 11.07054 HASIL DAN PEMBAHASAN
4.1 Model Regresi Logistik
Berdasarkan data diperoleh model yang terbentuk:
\[ π_i(x) = \frac{exp( -2.43849 + 0.47526X_1 + 0.14796X_2 + 1.17289X_3 + 0.96211X_4 + 1.06041X_5)}{1+exp( -2.43849 + 0.47526X_1 + 0.14796X_2 + 1.17289X_3 + 0.96211X_4 + 1.06041X_5)} \]
\[ g(x_{ki}) = {ln} (\frac{π(x)}{1-π(x)}) = -2.43849 + 0.47526X_1 + 0.14796X_2 + 1.17289X_3 + 0.96211X_4 + 1.06041X_5 \]
4.2 Uji Signifikansi Keseluruhan Model
Berdasarkan hasil uji signifikansi keseluruhan model pada output, diperoleh nilai G2 sebesar 190.4479 dan nilai Chi-Square tabel sebesar 9.487729.
Keputusan: G2 = 190.4479 > Chi-Square tabel = 9.487729, maka H0 ditolak.
Kesimpulan: Dengan hasil output yang diperoleh, dapat disimpulan bahwa nilai G2 lebih besar dibandingkan dengan nilai Chi-Square sehingga model signifikan atau minimal terdapat satu variabel yang berpengaruh terhadap terjadinya risiko penyakit jantung koroner.
4.3 Uji Parsial Parameter Model
Berdasarkan hasil uji parsial parameter model pada output, diperoleh:
- Nilai variabel X1
P-value variabel X1 sebesar 0.000000126 dan alpha sebesar 0.05.
Keputusan: P-value = 0.000000126 < alpha = 0.05, maka H0 ditolak.
Kesimpulan: Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa sudah cukup bukti untuk menyatakan jenis kelamin berpengaruh signifikan terhadap risiko penyakit jantung koroner.
- Nilai variabel X2
P-value variabel X2 sebesar 0.10319 dan alpha sebesar 0.05.
Keputusan: P-value = 0.10319 > alpha = 0.05, maka H0 diterima.
Kesimpulan: Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa sudah cukup bukti untuk menyatakan perokok saat ini tidak berpengaruh signifikan terhadap risiko penyakit jantung koroner.
- Nilai variabel X3
P-value variabel X3 sebesar 0.00508 dan alpha sebesar 0.05.
Keputusan: P-value = 0.00508 < alpha = 0.05, maka H0 ditolak.
Kesimpulan:Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa sudah cukup bukti untuk menyatakan prevalen stroke berpengaruh signifikan terhadap risiko penyakit jantung koroner.
- Nilai variabel X4
P-value variabel X4 sebesar 0.0000000000000002 dan alpha sebesar 0.05.
Keputusan: P-value = 0.0000000000000002 < alpha = 0.05, maka H0 ditolak.
Kesimpulan: Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa sudah cukup bukti untuk menyatakan prevalen hipertensi berpengaruh signifikan terhadap risiko penyakit jantung koroner.
- Nilai variabel X5
P-value variabel X5 sebesar 0.000000432 dan alpha sebesar 0.05.
Keputusan: P-value = 0.000000432 < alpha = 0.05, maka H0 ditolak.
Kesimpulan: Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa sudah cukup bukti untuk menyatakan diabetes berpengaruh signifikan terhadap risiko penyakit jantung koroner.
4.4 Koefisien Determinasi
Berdasarkan hasil koefisien determinasi pada output, diperoleh nilai koefisien determinasi sebesar 0.05272048 dapat diketahui bahwa variabel independen (X1, X2, X3, X4, X5) dapat menjelaskan 5.27% variabel risiko penyakit jantung koroner dan 94.73% lainnya dijelaskan oleh variabel di luar model.
4.5 Odds Ratio
Berdasarkan hasil odds ratio pada output, diperoleh:
Apabila seluruh nilai variabel prediktor bernilai nol maka variabel risiko penyakit jantung koroner bernilai 0.08729271 satuan.
Apabila nilai variabel jenis kelamin dinaikkan 1 satuan maka nilai variabel risiko penyakit jantung koroner meningkat sebesar 1.60843783 kali.
Apabila nilai variabel perokok saat ini dinaikkan 1 satuan maka nilai variabel risiko penyakit jantung koroner meningkat sebesar 1.15946330 kali.
Apabila nilai variabel prevalen stroke dinaikkan 1 satuan maka nilai variabel risiko penyakit jantung koroner meningkat sebesar 3.23132201 kali.
Apabila nilai variabel prevalen hipertensi dinaikkan 1 satuan maka nilai variabel risiko penyakit jantung koroner meningkat sebesar 2.61721962 kali.
Apabila nilai variabel diabetes dinaikkan 1 satuan maka nilai variabel risiko penyakit jantung koroner meningkat sebesar 2.88756365 kali.
4.6 Klasifikasi
Berdasarkan hasil membentuk klasifikasi pada output, diperoleh dari 3594 amatan dengan Y=0, hanya 13 yang diklasifikasikan dengan benar sedangkan dari 644 amatan dengan Y=1, hanya 16 diantaranya diklasifikasikan dengan benar.
\[ (\frac{16+13}{100})*100\% = 29\% \]
Jadi, dapat disimpulkan bahwa tingkat akurasi model sebesar 29%.
4.7 Uji Kelayakan Model
Berdasarkan hasil uji kelayakan model pada output, diperoleh P-value sebesar 0.007744 dan alpha sebesar 0.05.
Keputusan: P-value = 0.007744 < alpha = 0.05, maka H0 ditolak.
Kesimpulan: Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa model yang terbentuk tidak layak digunakan.
5 KESIMPULAN
Berdasarkan data dan hasil output yang diperoleh pada pengujian analisis regresi logistik, dapat disimpulkan bahwa dari variabel jenis kelamin, perokok saat ini, prevalen stroke, prevalen hipertensi, dan diabetes terdapat 4 variabel prediktor yang memiliki pengaruh terhadap variabel respon, yaitu variabel jenis kelamin, prevalen stroke, prevalen hipertensi, dan diabetes memberikan pengaruh signifikan terhadap variabel risiko penyakit jantung koroner.
6 DAFTAR PUSTAKA
Hadi, S. (2004). Analisis regresi. Penerbit Andi.
Kaggle. (2023, June 1). Retrieved from https://www.kaggle.com/datasets/dileep070/heart-disease-prediction-using-logistic-regression
Pentury, T., Aulele, S. N., & Wattimena, R. (2016). Analisis Regresi Logistik Ordinal. BAREKENG: Jurnal Ilmu Matematika Dan Terapan, 10(1), 55-60.
Roflin. E., Riana. F., Munarsih. E., Pariyana, Liberty, I. A.(2023). Regresi Logistik Biner dan Multinomial.Pekalongan:NEM.