Tuberkulosis (TB) merupakan penyakit menular yang masih menjadi permasalahan kesehatan masyarakat di Indonesia. Dalam praktik pelayanan kesehatan, tidak semua pasien TB dapat ditegakkan diagnosisnya melalui pemeriksaan bakteriologis, sehingga sebagian pasien didiagnosis secara klinis berdasarkan gejala, pemeriksaan penunjang, dan pertimbangan medis (Liza Munira et al., n.d.).
Status klinis pasien tuberkulosis yang didiagnosis secara klinis dapat dipengaruhi oleh berbagai faktor demografis dan klinis, seperti usia, jenis kelamin, status pernikahan, pekerjaan, serta adanya penyakit penyerta (komorbiditas). Identifikasi faktor-faktor tersebut penting untuk mendukung pengambilan keputusan klinis dan meningkatkan kualitas penanganan pasien TB (Fadmi et al., 2025).
Karena status klinis bersifat dikotomi, regresi logistik biner merupakan metode yang tepat untuk menganalisis hubungan antara faktor-faktor tersebut dengan status klinis pasien. Oleh karena itu, penelitian ini bertujuan untuk menganalisis faktor-faktor yang berhubungan dengan status klinis pasien tuberkulosis yang didiagnosis secara klinis di Rumah Sakit X Kota Semarang menggunakan metode regresi logistik biner.
Data yang digunakan dalam penelitian ini merupakan data sekunder yang diperoleh dari rekam medis pasien tuberkulosis di Rumah Sakit X Kota Semarang. Unit analisis penelitian adalah individu pasien yang didiagnosis tuberkulosis secara klinis dan tercatat dalam data rumah sakit.
Variabel respon dalam penelitian ini adalah status klinis pasien yang bersifat dikotomi. Variabel penjelas meliputi faktor demografis dan klinis, yaitu usia, jenis kelamin, status pernikahan, status pekerjaan, serta keberadaan penyakit penyerta (komorbiditas). Data usia dicatat dalam bentuk numerik, sedangkan variabel lainnya berupa data kategorik (Supriyanto; Ilham, Ahmad ,2024).
Pengolahan dan analisis data dilakukan menggunakan perangkat lunak R dengan metode regresi logistik biner untuk mengidentifikasi faktor-faktor yang berhubungan dengan status klinis pasien tuberkulosis.
library(readxl)
data <- read_excel(file.choose())
# Cek struktur data
View(data)
head(data)
str(data)
## tibble [1,077 × 6] (S3: tbl_df/tbl/data.frame)
## $ status_klinnis : num [1:1077] 0 0 1 0 0 0 1 0 0 0 ...
## $ age_klinis : num [1:1077] 56 21 74 30 61 71 49 45 76 36 ...
## $ sex_klinis : num [1:1077] 1 0 1 0 0 0 0 1 1 1 ...
## $ marital_status_klinis: num [1:1077] 0 0 1 0 1 1 0 1 0 1 ...
## $ occupation_klinis : num [1:1077] 1 0 0 1 0 0 0 1 0 1 ...
## $ comorbidities_klinis : num [1:1077] 1 1 1 1 1 1 1 0 1 1 ...
Exploratory Data Analysis (EDA) dilakukan untuk memberikan gambaran awal mengenai karakteristik data pasien tuberkulosis yang digunakan dalam penelitian. Pada tahap ini, analisis difokuskan pada statistika deskriptif dan pendefinisian variabel yang akan digunakan dalam pemodelan regresi logistik biner.
# statistika deskriptif
library(psych)
describe(data)
Data terdiri dari 1.077 pasien TB. Rata-rata usia pasien adalah 48,69 tahun dengan variasi yang cukup besar. Variabel kategorik seperti jenis kelamin, status pernikahan, pekerjaan, dan komorbiditas memiliki distribusi yang relatif seimbang. Rata-rata probabilitas hasil prediksi model sebesar 0,38, sedangkan hasil klasifikasi menunjukkan sebagian besar pasien diprediksi berada pada kategori negatif. Secara umum, data memiliki variasi yang memadai dan layak digunakan untuk analisis regresi logistik biner.
#definisikan variabel
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data <- data %>%
mutate(
status_klinnis = as.factor(status_klinnis),
sex_klinis = as.factor(sex_klinis),
marital_status_klinis = as.factor(marital_status_klinis),
occupation_klinis = as.factor(occupation_klinis),
comorbidities_klinis = as.factor(comorbidities_klinis)
)
Penelitian ini menggunakan metode regresi logistik biner untuk menganalisis hubungan antara faktor demografis dan klinis dengan status klinis pasien tuberkulosis. Variabel respon bersifat dikotomi (0 dan 1), sedangkan variabel penjelas meliputi usia, jenis kelamin, status pernikahan, status pekerjaan, dan komorbiditas. Estimasi parameter dilakukan dengan metode Maximum Likelihood Estimation dan pengujian signifikansi menggunakan taraf nyata 5%. Analisis data dilakukan menggunakan perangkat lunak R.
#model regresi logistik biner
model_logit <- glm(status_klinnis ~ age_klinis +
sex_klinis +
marital_status_klinis +
occupation_klinis +
comorbidities_klinis,
data = data,
family = binomial(link = "logit"))
summary(model_logit)
##
## Call:
## glm(formula = status_klinnis ~ age_klinis + sex_klinis + marital_status_klinis +
## occupation_klinis + comorbidities_klinis, family = binomial(link = "logit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.428659 0.226581 -1.892 0.05851 .
## age_klinis 0.005238 0.003469 1.510 0.13101
## sex_klinis1 -0.118104 0.138136 -0.855 0.39256
## marital_status_klinis1 0.092195 0.134660 0.685 0.49356
## occupation_klinis1 -0.433161 0.141847 -3.054 0.00226 **
## comorbidities_klinis1 -0.166254 0.152731 -1.089 0.27635
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1434.9 on 1076 degrees of freedom
## Residual deviance: 1418.9 on 1071 degrees of freedom
## AIC: 1430.9
##
## Number of Fisher Scoring iterations: 4
Hasil analisis regresi logistik biner menunjukkan bahwa status pekerjaan merupakan satu-satunya variabel yang berpengaruh signifikan terhadap status klinis pasien tuberkulosis (p = 0,002). Koefisien regresi yang bernilai negatif menunjukkan bahwa pasien dengan kategori pekerjaan tertentu memiliki peluang yang lebih rendah untuk berada pada status klinis positif dibandingkan dengan kategori referensi.
Sementara itu, variabel usia, jenis kelamin, status pernikahan, dan komorbiditas tidak menunjukkan pengaruh yang signifikan terhadap status klinis pasien (p > 0,05). Meskipun usia memiliki koefisien positif, pengaruhnya secara statistik tidak signifikan. Secara keseluruhan, model menunjukkan bahwa faktor pekerjaan memiliki peran penting dalam menentukan status klinis pasien tuberkulosis pada data penelitian ini.
# Odds Ratio
OR <- exp(coef(model_logit))
OR
## (Intercept) age_klinis sex_klinis1
## 0.6513820 1.0052522 0.8886034
## marital_status_klinis1 occupation_klinis1 comorbidities_klinis1
## 1.0965785 0.6484563 0.8468309
Nilai odds ratio menunjukkan bahwa usia sedikit meningkatkan peluang status klinis positif (OR = 1,005), namun pengaruhnya kecil. Jenis kelamin dan komorbiditas memiliki peluang lebih rendah dibandingkan kategori referensi (OR < 1). Status pernikahan menunjukkan peluang sedikit lebih tinggi (OR = 1,097). Status pekerjaan memiliki pengaruh paling kuat, di mana pasien dengan kategori pekerjaan tertentu memiliki peluang sekitar 35% lebih rendah untuk berada pada status klinis positif (OR = 0,648).
# Confidence Interval Odds Ratio
CI <- exp(confint(model_logit))
## Waiting for profiling to be done...
CI
## 2.5 % 97.5 %
## (Intercept) 0.4136585 1.0060310
## age_klinis 0.9989470 1.0125533
## sex_klinis1 0.6783139 1.1660970
## marital_status_klinis1 0.8417620 1.4273747
## occupation_klinis1 0.4898689 0.8545545
## comorbidities_klinis1 0.6283857 1.1441332
Berdasarkan interval kepercayaan 95%, hanya variabel status pekerjaan yang memiliki rentang nilai odds ratio tidak melewati angka 1 (0,49–0,85), sehingga berpengaruh signifikan terhadap status klinis pasien tuberkulosis. Variabel usia, jenis kelamin, status pernikahan, dan komorbiditas memiliki interval kepercayaan yang mencakup nilai 1, sehingga tidak menunjukkan pengaruh yang signifikan secara statistik.
Hasil ini konsisten dengan uji signifikansi parameter pada model regresi logistik biner, yang menunjukkan bahwa status pekerjaan merupakan faktor yang berhubungan signifikan dengan status klinis pasien TB.
#Uji Signifikansi Model (Likelihood Ratio Test)
anova(model_logit, test = "Chisq")
Berdasarkan Analysis of Deviance, variabel usia (age_klinis) dan status pekerjaan (occupation_klinis) memberikan kontribusi signifikan terhadap model regresi logistik biner. Usia signifikan pada taraf 5% (p = 0,0499), menunjukkan bahwa penambahan usia berhubungan dengan perubahan status klinis pasien TB. Status pekerjaan menunjukkan pengaruh yang lebih kuat (p = 0,0018), sehingga menjadi faktor yang paling berkontribusi dalam menjelaskan variasi status klinis.
Sementara itu, variabel jenis kelamin, status pernikahan, dan komorbiditas tidak menunjukkan pengaruh yang signifikan karena nilai p lebih besar dari 0,05. Hal ini mengindikasikan bahwa ketiga variabel tersebut tidak memberikan tambahan penjelasan yang berarti terhadap model setelah variabel lain dimasukkan.
#Prediksi Probabilitas
data$probabilitas <- predict(model_logit, type = "response")
head(data$probabilitas)
## 1 2 3 4 5 6
## 0.2988401 0.3810941 0.4419676 0.2950625 0.4543337 0.4673487
plot(data$probabilitas,
xlab = "Observasi",
ylab = "Probabilitas Status Klinis = 1",
main = "Plot Probabilitas Prediksi Regresi Logistik Biner",
pch = 16)
boxplot(probabilitas ~ status_klinnis,
data = data,
xlab = "Status Klinis",
ylab = "Probabilitas Prediksi",
main = "Distribusi Probabilitas Prediksi")
Plot menunjukkan bahwa sebagian besar probabilitas prediksi berada pada kisaran 0,30–0,45 dengan variasi yang relatif kecil antar observasi, menandakan peluang status klinis = 1 yang moderat dan cukup stabil. Boxplot berdasarkan status klinis memperlihatkan median probabilitas pada kelompok status = 1 sedikit lebih tinggi dibandingkan status = 0, namun distribusinya saling tumpang tindih, sehingga kemampuan model dalam membedakan kedua kelompok masih terbatas. Nilai probabilitas contoh yang berada di rentang menengah ini menunjukkan bahwa hasil klasifikasi sangat dipengaruhi oleh nilai cut-off yang digunakan.
#Klasifikasi
data$prediksi <- ifelse(data$probabilitas >= 0.5, 1, 0)
table(Aktual = data$status_klinnis,
Prediksi = data$prediksi)
## Prediksi
## Aktual 0 1
## 0 659 4
## 1 410 4
data$prediksi <- ifelse(data$probabilitas >= 0.5, 1, 0)
plot(data$probabilitas,
jitter(as.numeric(as.character(data$status_klinnis))),
xlab = "Probabilitas Prediksi",
ylab = "Status Klinis Aktual",
main = "Plot Klasifikasi Regresi Logistik",
pch = 16)
abline(v = 0.5, col = "red", lwd = 2, lty = 2)
Tabel konfusi menunjukkan bahwa model sangat konsisten dalam mengklasifikasikan pasien dengan status klinis 0, yang tercermin dari jumlah prediksi benar yang tinggi pada kelompok tersebut. Untuk status klinis 1, jumlah prediksi benar masih terbatas, yang menunjukkan bahwa model cenderung berhati-hati dan hanya mengklasifikasikan kasus sebagai 1 ketika probabilitasnya benar-benar kuat. Secara umum, hasil ini menggambarkan bahwa model memiliki ketepatan tinggi pada kelompok mayoritas dan sudah mampu memberikan dasar prediksi awal yang baik, meskipun masih terbuka peluang pengembangan lebih lanjut untuk meningkatkan deteksi pada status klinis 1.
Hasil plot klasifikasi menunjukkan bahwa model regresi logistik cenderung memberikan prediksi yang konservatif dengan konsentrasi probabilitas yang dominan di bawah ambang batas 0,5. Meskipun model berhasil mengidentifikasi kelompok negatif dengan cukup konsisten, terlihat adanya tantangan dalam mengklasifikasikan kelompok positif secara optimal karena distribusi datanya masih bersinggungan di area probabilitas yang rendah. Keberadaan satu titik prediksi dengan probabilitas tinggi menunjukkan adanya potensi model dalam mengenali karakteristik spesifik tertentu, namun secara keseluruhan model ini masih memerlukan pengembangan lebih lanjut. Hal ini menjadi peluang yang baik untuk melakukan optimasi, seperti penyesuaian variabel atau metode pembobotan, guna meningkatkan sensitivitas model dalam mendeteksi status klinis positif di masa mendatang.
fadmi, f. r., rahmawati, r., fitriyanti, f., mulyani, s., & justin, w. o. s. (2025). Logistic Regression Analysis For Pulmonary Tuberculosis Related to Environmental Factors in Katobu Health Centre. indonesian journal of health sciences research and development (ijhsrd), 7(1), 94–102. https://doi.org/10.36566/ijhsrd/vol7.iss1/301 liza munira, s., suriani simarmata, o., muhammad noor farid, m., ariyati, r., jusniar ariati, m., silalahi, a., mardawaning hanggarjita elly sardi sam, sk., nabila febby yeni, s., & agung sudilaksono, s. (n.d.). Laporan Hasil Studi Inventori Tuberkulosis Indonesia 2023-2024. supriyanto, supriyanto; ilham, ahmad (2024), “Comprehensive Dataset on Suspected Tuberculosis (tbc) Patients in Semarang, Indonesia”, mendeley data, v2, doi: 10.17632/gn4xjcdvxv.2