Analisis Regresi Logistik untuk Mengetahui Karakteristik yang Mempengaruhi Tingkat Kematian/Mortalitas pada Pasien Covid-19

Alfi Zahrain

Mei 2023

1 PENDAHULUAN

1.1 Latar Belakang

Statistik adalah kumpulan fakta berbentuk angka yang disusun dan memiliki arti penting dan menggambarkan keterangan tertentu. Statistik bisa digunakan sebagai alat menganalisis dan membuat keputusan (Malik dan Chusni, 2018). Sedangkan statistika adalah sebuah disiplin ilmu dan kumpulan metode yang digunakan untuk mengumpulkan, menyajikan, menganalisis, menginterpretasi, dan mempresentasikan data dengan tujuan memberikan informasi yang bermanfaat. Pada zaman ini, statistika memiliki banyak aplikasi dalam berbagai bidang kehidupan, termasuk bidang kesehatan.

Pada beberapa tahun kemarin, dunia tengah dilanda wabah penyakit Coronavirus disease 2019 (Covid-19). Daya penyebarannya yang cepat menyebabkan jumlah orang yang terpapar dan meninggal cepat meningkat (Simatupang dan Arcana, 2021). Indonesia bahkan menempati urutan pertama dengan jumlah kasus tertinggi di Asia Tenggara, padahal saat itu Covid-19 di Indonesia sendiri baru dikonfirmasi tidak lama sebelumnya. Vaksin memang menjadi salah satu cara pencegahan. Akan tetapi, terlepas dari itu setiap orang memiliki risiko berbeda-beda. Ada kelompok orang dengan risiko kematian tinggi apabila terjangkit Covid-19 dan ada juga yang sebaliknya. Untuk mengatasi hal tersebut, penting untuk dilakukan penelitian untuk mengetahui faktor apa saja yang meningkatkan tingkat kematian pasien yang terjangkit Covid-19.

1.2 Tinjauan Pustaka

1.2.1 Statistika Deskriptif

Statistik deskriptif adalah metode statistik yang digunakan untuk menganalisis data dengan cara menggambarkan atau mendeskripsikan data yang telah terkumpul tanpa bermaksud membuat kesimpulan umum atau generalisasi (Sholikhah, 2016). Tujuan dari statistik deskriptif adalah untuk memberikan gambaran tentang karakteristik, pola, dan distribusi data yang diamati. Metode ini tidak melibatkan inferensi statistik atau generalisasi terhadap populasi yang lebih besar, melainkan hanya fokus pada analisis dan interpretasi data yang ada. Statistik deskriptif sering digunakan untuk ringkasan data, seperti menghitung nilai rata-rata, median, variasi, dan persentil, serta membuat diagram, grafik, atau tabel untuk memvisualisasikan data.

1.2.2 Analisis Regresi Logistik Biner

Analisis regresi logistik merupakan salah satu alat statistik yang digunakan untuk memodelkan hubungan antara variabel independen dan variabel dependen. Analisis regresi umumnya menggunakan variabel respon kuantitatif, tetapi pada analisis regresi logistik data yang digunakan berupa data kategori atau kualitatif (Anisa dan Rifai, 2022). Regresi logistik biner adalah metode analisis regresi logistik yang digunakan untuk mempelajari hubungan antara satu variabel respons yang berbentuk biner (dikotomis) dengan satu atau lebih variabel penjelas. Metode ini digunakan untuk memprediksi probabilitas kejadian atau tidak kejadian suatu peristiwa yang memiliki dua kemungkinan hasil. Dalam konteks ini, variabel respons biasanya dikodekan sebagai 0 atau 1, yang mewakili dua hasil yang mungkin. Regresi logistik biner membantu memahami pengaruh variabel penjelas terhadap kemungkinan hasil yang berbeda dalam bentuk odds ratio atau probabilitas. Data dengan dua kategori ini merupakan bentuk yang paling dasar dari data kategorikal.

1.3 Data

Data yang digunakan dalam analisis ini adalah data mentah dari situs Kaggle dengan pemilik Ikemura, K. (2021). Dalam data pasien Covid-19 tersebut terdapat 53 variabel dan 4314 sampel yang diamati. Akan tetapi, pada analisis regresi logistik kali ini hanya akan menggunakan 1 variabel dependent dan 5 variabel independent. Diantaranya adalah:

  1. \(Y\) = death (1=Ya, 0=Tidak)
  2. \(X_1\) = gender (1=Laki-laki, 0=Perempuan)
  3. \(X_2\) = age (1=50+, 0=50-)
  4. \(X_3\) = pulseOx (0=Tidak Normal, 1=Normal)
  5. \(X_4\) = resprate (0=Tidak Normal, 1=Normal)
  6. \(X_5\) = charlson (0=Komorbid Ringan, 1=Komorbid Berat)

2 SOURCE CODE

2.1 Library

> library(plotrix)
> library(readr)
> library(rmarkdown)
> library(knitr)
> library(tinytex)

Library yang dipakai adalah plotrix untuk membuat pie chart, readr untuk menginput data format csv yang akan digunakan. Sedangkan rmarkdown, knitr, dan tinytex diperlukan dalam membuat dokumen Rmarkdown.

2.2 Menginput Data dan Membentuk Data Frame

> data <- read_csv("C:/Users/lenovo1/OneDrive/Documents/covid mortality prediction.csv")
> data
# A tibble: 50 x 6
     age gender death pulseOx resprate charlson
   <dbl>  <dbl> <dbl>   <dbl>    <dbl>    <dbl>
 1     1      0     1       0        0        1
 2     1      0     1       1        1        1
 3     1      1     1       1        1        0
 4     1      0     0       1        1        0
 5     1      0     1       1        1        0
 6     1      0     0       1        1        0
 7     1      0     1       1        0        0
 8     1      0     0       0        0        0
 9     1      1     1       1        0        1
10     1      0     1       0        1        0
# ... with 40 more rows
> 
> X1 <- as.factor(data$gender)
> X2 <- as.factor(data$age)
> X3 <- as.factor(data$pulseOx)
> X4 <- as.factor(data$resprate)
> X5 <- as.factor(data$charlson)
> Y <- as.factor(data$death)
> df <- data.frame(X1,X2,X3,X4,X5,Y)
> str(df)
'data.frame':   50 obs. of  6 variables:
 $ X1: Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 2 1 ...
 $ X2: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ X3: Factor w/ 2 levels "0","1": 1 2 2 2 2 2 2 1 2 1 ...
 $ X4: Factor w/ 2 levels "0","1": 1 2 2 2 2 2 1 1 1 2 ...
 $ X5: Factor w/ 2 levels "0","1": 2 2 1 1 1 1 1 1 2 1 ...
 $ Y : Factor w/ 2 levels "0","1": 2 2 2 1 2 1 2 1 2 2 ...

Data dipanggil dengan perintah read_csv(). Gambaran banyaknya observasi dan karakteristik variabel ditampilkan dengan perintah str().

2.3 Pie Chart Mortalitas Pasien Covid-19

> COVID19 <- table(df$Y)
> COVID19

 0  1 
30 20 
> 
> kategori <- c("Sembuh = ","Meninggal = ")
> persentase <- round(COVID19/sum(COVID19)*100)
> kategori <- paste(kategori, persentase)
> kategori <- paste(kategori,'%', sep = '')
> pie3D(COVID19, labels = kategori, col = c('green','red'), main="Persentase Mortalitas Pasien COVID-19")

Pembentukkan pie chart 3D dilakukan dengan membentuk tabel kategori dari respon Y dengan nama COVID19. Setelah ditabulasikan, membentuk kategori Meninggal dan Sembuh, serta menghitung persentase tiap kategori yang nantinya menentukan luasan pie chart dengan perintah round(). Selanjutnya, pie chart 3D dibentuk dengan data yang divisualisasikan yaitu COVID19.

2.4 Histogram Mortalitas Pasien Covid-19 Berdasarkan Jenis Kelamin

> counts <- table(df$Y,df$X1)
> barplot(counts, main="Mortalitas Pasien Covid-19 Berdasarkan Jenis Kelamin", xlab=" ", col=c("grey", "black"), legend=rownames(counts), beside=TRUE)

Sebelum membentuk histogram, dibentuk tabulasi data terlebih dahulu untuk menghitung banyaknya kategori pada variabel Y yang merupakan laki-laki dan perempuan dengan perintah table(). Pembentukkan histogram dilakukan dengan perintah barplot().

2.5 Analisis Regresi Logistik Biner

> modellog <- glm(Y~X1+X2+X3+X4+X5, data=df, family=binomial)
> summary(modellog)

Call:
glm(formula = Y ~ X1 + X2 + X3 + X4 + X5, family = binomial, 
    data = df)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9173  -0.7942  -0.3482   0.9698   1.8006  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -2.9816     1.4208  -2.098   0.0359 *
X11           1.2510     0.7170   1.745   0.0811 .
X21           2.8412     1.1908   2.386   0.0170 *
X31          -1.2604     0.7763  -1.623   0.1045  
X41           0.4086     0.8574   0.477   0.6337  
X51           0.5541     0.7327   0.756   0.4495  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 67.301  on 49  degrees of freedom
Residual deviance: 49.104  on 44  degrees of freedom
AIC: 61.104

Number of Fisher Scoring iterations: 5

Pembentukan model regresi logistik dilakukan dengan menggunakan perintah glm() yang nantinya disimpan dengan nama modellog. Untuk memunculkan ringkasan dari model tersebut, digunakan perintah summary().

Untuk mencari nilai G2 atau G-squared, digunakan perintah pR2 berikut untuk kemudian dipakai dalam menentukan kesignifikansian model.

> pR2 <- function(modellog) {
+   deviance <- sum(modellog$deviance)
+   null_deviance <- sum(modellog$null.deviance)
+   return(1-deviance/null_deviance)
+ }
> pR2(modellog)
[1] 0.2703782
> qchisq(0.95, df=4)
[1] 9.487729
> beta <- coef(modellog)
> oddsratio <- exp(beta)
> cbind(beta,oddsratio)
                  beta   oddsratio
(Intercept) -2.9815511  0.05071411
X11          1.2509588  3.49369096
X21          2.8411979 17.13628071
X31         -1.2603891  0.28354368
X41          0.4085820  1.50468262
X51          0.5540961  1.74036718

Koefisien penduga disimpan ke dalam vektor beta dengan perintah coef(). Setelah itu, dicari nilai odds ratio tiap penduga parameter menggunakan perintah exp().

> yp_topi <- fitted(modellog)
> data$yp_topi <- yp_topi
> data
# A tibble: 50 x 7
     age gender death pulseOx resprate charlson yp_topi
   <dbl>  <dbl> <dbl>   <dbl>    <dbl>    <dbl>   <dbl>
 1     1      0     1       0        0        1   0.602
 2     1      0     1       1        1        1   0.392
 3     1      1     1       1        1        0   0.564
 4     1      0     0       1        1        0   0.270
 5     1      0     1       1        1        0   0.270
 6     1      0     0       1        1        0   0.270
 7     1      0     1       1        0        0   0.198
 8     1      0     0       0        0        0   0.465
 9     1      1     1       1        0        1   0.600
10     1      0     1       0        1        0   0.567
# ... with 40 more rows
> class <- table(data$death, data$yp_topi > 0.5)
> class
   
    FALSE TRUE
  0    23    7
  1     6   14

Variabel class akan mendefinisikan tabel kontingensi dari observasi data mortalitas pasien Covid-19 tersebut.

3 HASIL DAN PEMBAHASAN

3.1 Statistika Deskriptif

Berdasarkan output yang telah diperoleh sebelumnya, maka didapatkan pie chart sebagai berikut.


 0  1 
30 20 

Dari pie chart di atas, dapat diketahui bahwa terdapat 60% pasien Covid-19 sembuh, serta sisanya sebanyak 40% meninggal. Untuk mengetahui jumlah pasien lebih detailnya, dibentuk histogram sebagai berikut dengan memperhatikan gender atau jenis kelaminnya.

Dari histogram di atas, bisa dilihat bahwa pasien Perempuan memiliki frekuensi sembuh lebih besar daripada laki-laki, sedangkan pasien laki-laki memiliki frekuensi meninggal dunia yang lebih banyak dari perempuan.

3.2 Uji Signifikansi Keseluruhan Model

[1] 0.2703782
[1] 9.487729

Pada output tersebut diperolah G2 sebesar 0.2703782 di mana G2 < Chi-Square sehingga \(H_0\) ditolak. Maka, dengan tingkat kepercayaan 95%, belum ada cukup bukti untuk menyatakan bahwa model tidak berpengaruh signifikan terhadap mortalitas pasien Covid-19.

[1] 0.2703782

Dengan nilai R-Square sebesar 0.2703782, diketahui bahwa variabel independen (\(X_1\), \(X_2\), \(X_3\), \(X_4\), \(X_5\)) bisa menjelaskan 27.03782% tingkat mortalitas pasien Covid-19.

3.3 Uji Parsial Parameter Model

Pemodelan analisis regresi logistik biner menghasilkan output sebagai berikut.


Call:
glm(formula = Y ~ X1 + X2 + X3 + X4 + X5, family = binomial, 
    data = df)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9173  -0.7942  -0.3482   0.9698   1.8006  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -2.9816     1.4208  -2.098   0.0359 *
X11           1.2510     0.7170   1.745   0.0811 .
X21           2.8412     1.1908   2.386   0.0170 *
X31          -1.2604     0.7763  -1.623   0.1045  
X41           0.4086     0.8574   0.477   0.6337  
X51           0.5541     0.7327   0.756   0.4495  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 67.301  on 49  degrees of freedom
Residual deviance: 49.104  on 44  degrees of freedom
AIC: 61.104

Number of Fisher Scoring iterations: 5

Berdasarkan output di atas, dapat dilihat bahwa variabel \(X21\) memiliki p-value kurang dari \(\alpha\) (0.05) sehingga memberikan keputusan menolak \(H_0\). Oleh karena itu, disimpulkan bahwa umur berpengaruh signifikan terhadap mortalitas pasien Covid-19.

3.4 Model Regresi Logistik

Dari hasil output yang didapatkan, diperoleh bahwa model logistik yang terbentuk yaitu: \[ \pi(x) = \frac {exp (-2.9816+1.2510+2.8412-1.2604+0.4086+0.5541)}{1+exp (-2.9816+1.2510+2.8412-1.2604+0.4086+0.5541)} \] \[ g(x) = ln[\frac{\pi(x)}{1-\pi(x)}] = -2.9816 + 1.2510X_1 + 2.8412X_2 - 1.2604X_3 + 0.4086X_4 + 0.5541X_5 \]

3.5 Odds Ratio

                  beta   oddsratio
(Intercept) -2.9815511  0.05071411
X11          1.2509588  3.49369096
X21          2.8411979 17.13628071
X31         -1.2603891  0.28354368
X41          0.4085820  1.50468262
X51          0.5540961  1.74036718
  1. Gender/Jenis Kelamin (\(X_1\))

Peluang pasien berjenis kelamin laki-laki mengalami kematian pada pasien Covid-19 bernilai sebesar 3.49369096 kali dibandingkan perempuan.

  1. Age/Usia (\(X_2\))

Peluang pasien berusia di atas 50 tahun mengalami kematian pada pasien Covid-19 bernilai sebesar 17.13628071 kali dibandingkan pasien berusia di bawah 50 tahun.

  1. Pulse Oximetry Level/Kadar Oksigen (\(X_3\))

Peluang pasien dengan kadar oksigen normal mengalami kematian pada pasien Covid-19 bernilai sebesar 0.28354368 kali dibandingkan pasien dengan kadar oksigen tidak normal.

  1. Respiratory Rate/Tingkat Pernapasan (\(X_4\))

Peluang pasien dengan tingkat pernapasan normal mengalami kematian pada pasien Covid-19 bernilai sebesar 1.50468262 kali dibandingkan pasien dengan tingkat pernapasan tidak normal.

  1. Charlson Score (\(X_5\))

Peluang pasien dengan nilai Charlson tinggi atau dengan komorbid berat mengalami kematian pada pasien Covid-19 bernilai sebesar 1.74036718 kali dibandingkan pasien dengan nilai Charlson rendah atau yang memiliki kormobid ringan.

3.6 Klasifikasi Model

# A tibble: 50 x 7
     age gender death pulseOx resprate charlson yp_topi
   <dbl>  <dbl> <dbl>   <dbl>    <dbl>    <dbl>   <dbl>
 1     1      0     1       0        0        1   0.602
 2     1      0     1       1        1        1   0.392
 3     1      1     1       1        1        0   0.564
 4     1      0     0       1        1        0   0.270
 5     1      0     1       1        1        0   0.270
 6     1      0     0       1        1        0   0.270
 7     1      0     1       1        0        0   0.198
 8     1      0     0       0        0        0   0.465
 9     1      1     1       1        0        1   0.600
10     1      0     1       0        1        0   0.567
# ... with 40 more rows
   
    FALSE TRUE
  0    23    7
  1     6   14
  • Dari 30 amatan dengan Y=0, hanya 7 yang diklasifikasikan dengan benar.
  • Dari 20 amatan dengan Y=1, hanya 14 yang diklasifikasikan dengan benar.
  • Tingkat akurasi model sebesar \(\frac{23+14}{50}(100\%)=74\%\)

4 DAFTAR PUSTAKA

Anisa, L., & Rifai, N. A. K. (2022). Analisis Regresi Logistik Biner dengan Metode PMLE pada Penyakit Covid-19. Jurnal Riset Statistika (JRS), 2(2), 129–136.

Ikemura, K., dll. (2021). Using automated machine learning to predict the mortality of patients with COVID-19: prediction model development study, J. Med. Internet Res. 23(2), e23458.

Malik, A., & Chusni, M. M. (2018). Pengantar Statistika Pendidikan (1st ed.). Yogyakarta: Deepublish.

Sholikhah, A. (2016). Statistik Deskriptif dalam Penelitian Kualitatif. KOMUNIKA, 10(2), 342–362.

Simatupang, M. D., & Arcana, I. M. (2021). Risiko Kematian Pasien Covid-19 dan Faktor yang Memengaruhinya. Seminar Nasional Official Statistics 2021, 889–898.