Regresi logistik merupakan teknik analisis data untuk mengetahui hubungan antara dua atau lebih variabel data dengan tujuan untuk dapat memprediksi nilai variabel respons. Penerapan regresi logistik sangat luas dan dapat ditemukan di kegiatan sehari-hari. Data yang digunakan adalah data hasil tes diabetes berdasarkan dari beberapa faktor yaitu faktor glukosa, faktor insulin, dan faktor silsilah atau riwayat diabetes sebelumnya.
Statistika deskriptif merupakan statistik yang membahas mengenai tentang pengumpulan data,pengolahan data, mendeskripsian dan menganalisis data tanpa melakukan proses penarikan kesimpulan. Penyajian data pada statistika deskriptif dapat membuat dalam bentuk grafik, diagram, atau dengan menyajikan karakteristik dari ukuran pemusatan dan penyebaran.
Odds suatu kejadian \(X\), dinyatakan sebagai \(O(X)\) yang merupakan probabilitas (peluang) antara 2 outcome dari suatu variabel biner. Atau dengan kata lain, peluang terjadinya suatu kejadian \(X\) dengan peluang tidak terjadinya kejadian \(X\). Dapat dirumuskan sebagai berikut: \[O(X) = \frac{P(X)}{1-P(X)}\] Apabila peristiwa terjadi suatu kejadian \(X\) dinyatakan dengan \(X=1\) dan peristiwa tidak terjadinya dinyatakann dengan \(X=0\), maka odds kejadian X adalah \[O(X=1) = \frac{P(X=1)}{1-P(X=1)}\]
Log Odds kejadian \(X\) disebut juga logit \(X\) \[\text{logit}(X) = \text{ln}(odds X) = \text{ln} \frac{P(X=1)}{1-P(X=1)} =\beta_0+\beta_1 X_1+...+\beta_p X_p\]
Rasio antara odds \(Y\) dengan syarat prediktor \(X=1\) dengan odds \(Y\) dengan syarat prediktor \(X=0\) dan dapat dituliskan: \[OR = \frac{a/b}{c/d} = \frac{ad}{bc}\]
Model regresi logistik sederhana merupakan model regresi logistik dengan 1 prediktor variabel kontinu atau indikator yang dapat dinyatakan dalam bentuk: \[\text{logit}(Y) = \beta_0 + \beta_1X\] Variabel dengan nilai 0 atau 1 dapat dituliskan sebagai berikut: \[\text{logit}(Y) = \text{ln}(odds Y) = \text{ln} \frac{P(Y=1}{1-P(Y=1)}\] dan dapat diperoleh \[P(Y=1) = \frac{1}{1+exp(-(\beta_0+\beta_1X))}\]
Regresi logistik biner digunakan untuk menjelaskan keterkaitan hubungan antara variabel respon dengan variabel prediktor dengan variabel yang digunakan berskala nominal atau ordinal. Terdapat 2 kategori pilihan yaitu sukses atau gagal dengan notasi yang digunakan adalah \(Y=0\) untuk pilihan gagal dan \(Y=1\) untuk pilihan sukses. Distribusi yang digunakan dalam regresi logistik biner ialah distribusi bernoulli. Model regresi logistik yang diasumsikan bebasdapat dilambangkan dengan: \[\pi(x) = \frac{exp(\beta_0+\beta_1X_1+...+\beta_pX_p)}{1+\beta_0+\beta_1X_1+...+\beta_pX_p}\] dimana nilai \(\pi(x)\) merupakan peluang kejadian sukses dengan nilai probabilitas \(0\le \pi(x) \le1\) dan p adalah jumlah prediktor. Karena nilai persamaan tersebut merupakan persamaan non-linier mala dapat menggunakan rumus berikut: \[g(x) = ln\frac{\pi(x)}{1-\pi(x)} = \beta_0+\beta_1+...+\beta_pX_p\]
Salah satu asumsi yang tidak boleh dilanggar adalah asumsi multikolineriatas. Metode pengujiannya menggunakan VIF (Variance Inflection Factor) dengan rumus: \[VIF = \frac{1}{\frac{1}{1-R^2}}\] Apabila nilai VIP >= 10 maka kemungkinan multikolineriaritas tinggi dan sebaliknya.
Uji signifikansi digunakan untuk mengetahui apakah variabel prediktor berpengaruh terhadap variabel respon atau tidak. Uji signifikansi parsial dilakukan menguji secara individu(masing-masing)tiap prediktor menggunakan rumus berikut: \[w = \frac{\beta_j}{SE(\beta_j)}\] Adapula uji signifikansi simultan yaitu menguji keseluruhan variabel prediktor dengan rumus: \[G = -2log(\frac{L_0}{L_1})\] dimana \(L_o\) merupakan likelihood model terbatas dan \(L_1\) merupakan model dengan semua variabel
Disebut Goodness of fit digunakan untuk menilai/melihat seberapa baik model regresi yang dihasilkan untuk menjelaskan data yang diamati. Statistik uji yang digunakan adalah: \[C =\sum_j = \frac{(O_j - n_j\pi_j)^2}{n_j\pi_j(1-\pi_j)}\]
Rumus perhitungan untuk tabel klasifikasi adalah: \[\text{Ketetapan klasifikasi} = \frac{\text{Jumlah prediksi benar}}{\text{Jumlah total data}} = APER\] Ketepatan klasifikasi = 100% - APER(%)
\(Y\) = Outcome \(X1\) = Glucouse \(X2\) = Insulin \(X3\) = Diabetes Pedigree Function
Keterangan: Outcome: jika 1: Positif Diabetes, 0: Negatif Diabetes Glucouse: konsentrasi glukosa plasma 2 jam dalam tes toleransi glukosa oral Insulin: insulin serum 2 jam (mu U/ml) Diabetes Pedigree Function:Silsilah atau riwayat diabetes
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
data_diabetes <- read_excel("C:/Users/Aulia/Downloads/diabetes.xlsx")
data_diabetes
## # A tibble: 30 × 4
## Glucose Insulin DiabetesPedigreeFunction Outcome
## <dbl> <dbl> <dbl> <dbl>
## 1 148 0 0.627 1
## 2 85 0 0.351 0
## 3 183 0 0.672 1
## 4 89 94 0.167 0
## 5 137 168 2.29 1
## 6 116 0 0.201 0
## 7 78 88 0.248 1
## 8 115 0 0.134 0
## 9 197 543 0.158 1
## 10 125 0 0.232 1
## # ℹ 20 more rows
View(data_diabetes)
Y <- data_diabetes$Outcome
X1 <- data_diabetes$Glucose
X2 <- data_diabetes$Insulin
X3 <- data_diabetes$DiabetesPedigreeFunction
data <- data.frame(Y,X1,X2,X3)
data
## Y X1 X2 X3
## 1 1 148 0 0.627
## 2 0 85 0 0.351
## 3 1 183 0 0.672
## 4 0 89 94 0.167
## 5 1 137 168 2.288
## 6 0 116 0 0.201
## 7 1 78 88 0.248
## 8 0 115 0 0.134
## 9 1 197 543 0.158
## 10 1 125 0 0.232
## 11 0 110 0 0.191
## 12 1 168 0 0.537
## 13 0 139 0 1.441
## 14 1 189 846 0.398
## 15 1 166 175 0.587
## 16 1 100 0 0.484
## 17 1 118 230 0.551
## 18 1 107 0 0.254
## 19 0 103 83 0.183
## 20 1 115 96 0.529
## 21 0 126 235 0.704
## 22 0 99 0 0.388
## 23 1 196 0 0.451
## 24 1 119 0 0.263
## 25 1 143 146 0.254
## 26 1 125 115 0.205
## 27 1 147 0 0.257
## 28 0 97 140 0.487
## 29 0 145 110 0.245
## 30 0 117 0 0.337
summary(data)
## Y X1 X2 X3
## Min. :0.0 Min. : 78.0 Min. : 0.0 Min. :0.1340
## 1st Qu.:0.0 1st Qu.:107.8 1st Qu.: 0.0 1st Qu.:0.2352
## Median :1.0 Median :122.0 Median : 0.0 Median :0.3440
## Mean :0.6 Mean :130.1 Mean :102.3 Mean :0.4608
## 3rd Qu.:1.0 3rd Qu.:146.5 3rd Qu.:133.8 3rd Qu.:0.5350
## Max. :1.0 Max. :197.0 Max. :846.0 Max. :2.2880
Output di atas merupakan perhitungan statistika deskriptif dari seluruh variabel.
modelX1 <- lm(X1~X2+X3, data=data)
vif_X1 <- 1/ (1-summary(modelX1)$r.squared)
vif_X1
## [1] 1.277362
modelX2 <- lm(X2~X1+X3, data=data)
vif_X2 <- 1/ (1-summary(modelX2)$r.squared)
vif_X2
## [1] 1.243428
modelX3 <- lm(X3~X1+X2, data=data)
vif_X3 <- 1/ (1-summary(modelX3)$r.squared)
vif_X3
## [1] 1.03122
VIF <- data.frame(vif_X1, vif_X2, vif_X3)
VIF
## vif_X1 vif_X2 vif_X3
## 1 1.277362 1.243428 1.03122
Berdasarkan output yang dihasilkan, yaitu nilai kurang dari 10 yang artinya tidak terjadi multikolinieritas antar variabel prediktor. Sehingga data dapat digunakan.
modelreg <- glm(Y~X1+X2+X3, family = "binomial", data=data)
summary(modelreg)
##
## Call:
## glm(formula = Y ~ X1 + X2 + X3, family = "binomial", data = data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.7532 -0.9954 0.3485 0.9249 1.7951
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.629493 2.300706 -2.012 0.0442 *
## X1 0.039338 0.019643 2.003 0.0452 *
## X2 0.002154 0.005031 0.428 0.6685
## X3 -0.068448 1.029368 -0.066 0.9470
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 40.381 on 29 degrees of freedom
## Residual deviance: 32.560 on 26 degrees of freedom
## AIC: 40.56
##
## Number of Fisher Scoring iterations: 5
Berdasarkan model tersebut didapatkan model regresi logistik adalah sebagai berikut: \[g(x) = -4.63 + 0.04X_1+0.002X_2-0.07X_3\] Dapat disimpulkan bahwa: - Ketika semua variabel 0 - Saat variabel \(X_1\) ketika meningkat satu satuan dan variabel lain konstan maka kemungkinan positif diabetes adalah 0.04 - Saat variabel \(X_2\) ketika meningkat satu satuan dan variabel lain konstan maka kemungkinan positif diabetes adalah 0.002 - Saat variabel \(X_3\) ketika meningkat satu satuan dan variabel lain konstan maka peluang kemungkinan positif diabetes akan menurun sebesar 0.07
summary(modelreg)
##
## Call:
## glm(formula = Y ~ X1 + X2 + X3, family = "binomial", data = data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.7532 -0.9954 0.3485 0.9249 1.7951
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.629493 2.300706 -2.012 0.0442 *
## X1 0.039338 0.019643 2.003 0.0452 *
## X2 0.002154 0.005031 0.428 0.6685
## X3 -0.068448 1.029368 -0.066 0.9470
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 40.381 on 29 degrees of freedom
## Residual deviance: 32.560 on 26 degrees of freedom
## AIC: 40.56
##
## Number of Fisher Scoring iterations: 5
library(pscl)
## Warning: package 'pscl' was built under R version 4.2.3
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
pR2(modelreg)
## fitting null model for pseudo-r2
## llh llhNull G2 McFadden r2ML r2CU
## -16.2801384 -20.1903500 7.8204232 0.1936674 0.2294731 0.3102134
db <- 2
qchisq(0.95,db)
## [1] 5.991465
Berdasarkan hasil uji simultan, dapat diketahui dari rasio likelihood bahwa nilai chi-square (5.99) < \(G^2\) (7.82). Dapat disimpulkan bahwa mendapat cukup bukti bahwa ke-3 variabel prediktor berpengaruh secara signifikan terhadap variabel respons diabetes.
beta <- coef(modelreg)
OR_beta <- exp(beta)
odds_ratio <- cbind(beta, OR_beta)
odds_ratio
## beta OR_beta
## (Intercept) -4.629492734 0.009759709
## X1 0.039338191 1.040122184
## X2 0.002154359 1.002156681
## X3 -0.068447749 0.933842253
Dapat diketahui: - Variabel \(X_1\) bertambah 1 satuan maka kecenderungan terjadinya diabetes akan meningkat sebeesar 1.04 kali lipat. - Variabel \(X_2\) bertambah 1 satuan maka kecenderungan terjadinya diabetes akan meningkat sebeesar 1 kali lipat. - Variabel \(X_3\) bertambah 1 satuan maka kecenderungan terjadinya diabetes akan meningkat sebesar 0.94 kali lipat.
library(ResourceSelection)
## Warning: package 'ResourceSelection' was built under R version 4.2.3
## ResourceSelection 0.3-6 2023-06-27
hoslem.test(data$Y, fitted(modelreg))
##
## Hosmer and Lemeshow goodness of fit (GOF) test
##
## data: data$Y, fitted(modelreg)
## X-squared = 6.3191, df = 8, p-value = 0.6115
Rsq <- 1-(32.560/40.381)
Rsq
## [1] 0.1936802
p-value lebih dari \(\alpha\) sehingga dapat disimpulkan bahwa model yang terbentuk layak digunakan.
crosstab <- table(data$Y, fitted(modelreg)>0.5)
crosstab
##
## FALSE TRUE
## 0 9 3
## 1 3 15
Akurasi <- ((3+15)/(9+3+3+15))*100
print(paste(Akurasi,"%"))
## [1] "60 %"
Dihitung tingkat akurasi dan didapatkan hasil 60%
Berdasarkan hasil pengujian di atas, dapat ditemukan bahwa model regresi logistik pada kasus dia tas adalah: \[g(x) = -4.63 + 0.04X_1+0.002X_2-0.07X_3\] Didapatkan pula kesimpulanbahwa ketiga variabel prediktor masih layak digunakan dalam pemodelan regresi logistik dikarenakan memiliki nilai VIF kurang dari 10 serta keakuratan data sebesar 60%.
Agresti, A., n.d. An Introduction Categorical Data Analysis. 2nd ed.United States of America: s.n.
Hidayati, T., Handayani, I. & Ikasari, I. H., 2019. Statistika Dasar Panduang Bagi Dosen dan Mahasiswa.Purwokerto: CV. Pena Persada.
Jagadish, K., 2019. Diabetics prediction using logistic regression. [Online] Available at: https://www.kaggle.com/datasets/kandij/diabetes-dataset [Accessed 1 6 2024].
Johnson, R., & Wichern, D. (1992). Applied Multivariate Statistical Analysis. Prentice Hall New Jersey.