Diabetes merupakan salah satu penyakit kronis yang banyak terjadi di masyarakat. Analisis statistik dapat digunakan untuk mengetahui faktor-faktor yang mempengaruhi kemungkinan seseorang menderita diabetes. Pada laporan ini digunakan metode regresi logistik biner untuk menganalisis hubungan beberapa variabel kesehatan terhadap kemungkinan seseorang mengalami diabetes.
data <- read.csv("diabetes.csv")
head(data)
## Pregnancies Glucose BloodPressure SkinThickness Insulin BMI
## 1 6 148 72 35 0 33.6
## 2 1 85 66 29 0 26.6
## 3 8 183 64 0 0 23.3
## 4 1 89 66 23 94 28.1
## 5 0 137 40 35 168 43.1
## 6 5 116 74 0 0 25.6
## DiabetesPedigreeFunction Age Outcome
## 1 0.627 50 1
## 2 0.351 31 0
## 3 0.672 32 1
## 4 0.167 21 0
## 5 2.288 33 1
## 6 0.201 30 0
Dataset ini berisi beberapa variabel kesehatan seperti jumlah kehamilan, kadar glukosa darah, tekanan darah, BMI, usia, serta variabel outcome yang menunjukkan apakah seseorang menderita diabetes atau tidak.
str(data)
## 'data.frame': 768 obs. of 9 variables:
## $ Pregnancies : int 6 1 8 1 0 5 3 10 2 8 ...
## $ Glucose : int 148 85 183 89 137 116 78 115 197 125 ...
## $ BloodPressure : int 72 66 64 66 40 74 50 0 70 96 ...
## $ SkinThickness : int 35 29 0 23 35 0 32 0 45 0 ...
## $ Insulin : int 0 0 0 94 168 0 88 0 543 0 ...
## $ BMI : num 33.6 26.6 23.3 28.1 43.1 25.6 31 35.3 30.5 0 ...
## $ DiabetesPedigreeFunction: num 0.627 0.351 0.672 0.167 2.288 ...
## $ Age : int 50 31 32 21 33 30 26 29 53 54 ...
## $ Outcome : int 1 0 1 0 1 0 1 0 1 1 ...
summary(data)
## Pregnancies Glucose BloodPressure SkinThickness
## Min. : 0.000 Min. : 0.0 Min. : 0.00 Min. : 0.00
## 1st Qu.: 1.000 1st Qu.: 99.0 1st Qu.: 62.00 1st Qu.: 0.00
## Median : 3.000 Median :117.0 Median : 72.00 Median :23.00
## Mean : 3.845 Mean :120.9 Mean : 69.11 Mean :20.54
## 3rd Qu.: 6.000 3rd Qu.:140.2 3rd Qu.: 80.00 3rd Qu.:32.00
## Max. :17.000 Max. :199.0 Max. :122.00 Max. :99.00
## Insulin BMI DiabetesPedigreeFunction Age
## Min. : 0.0 Min. : 0.00 Min. :0.0780 Min. :21.00
## 1st Qu.: 0.0 1st Qu.:27.30 1st Qu.:0.2437 1st Qu.:24.00
## Median : 30.5 Median :32.00 Median :0.3725 Median :29.00
## Mean : 79.8 Mean :31.99 Mean :0.4719 Mean :33.24
## 3rd Qu.:127.2 3rd Qu.:36.60 3rd Qu.:0.6262 3rd Qu.:41.00
## Max. :846.0 Max. :67.10 Max. :2.4200 Max. :81.00
## Outcome
## Min. :0.000
## 1st Qu.:0.000
## Median :0.000
## Mean :0.349
## 3rd Qu.:1.000
## Max. :1.000
Statistik deskriptif memberikan gambaran umum mengenai karakteristik data yang digunakan dalam analisis.
model <- glm(Outcome ~ Glucose + BMI + Age,
data = data,
family = binomial)
summary(model)
##
## Call:
## glm(formula = Outcome ~ Glucose + BMI + Age, family = binomial,
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -8.393743 0.666067 -12.602 < 2e-16 ***
## Glucose 0.032512 0.003329 9.767 < 2e-16 ***
## BMI 0.081590 0.013526 6.032 1.62e-09 ***
## Age 0.030157 0.007632 3.951 7.77e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 993.48 on 767 degrees of freedom
## Residual deviance: 755.68 on 764 degrees of freedom
## AIC: 763.68
##
## Number of Fisher Scoring iterations: 5
Model regresi logistik digunakan karena variabel respon (Outcome) bersifat biner, yaitu 0 untuk tidak diabetes dan 1 untuk diabetes.
exp(coef(model))
## (Intercept) Glucose BMI Age
## 0.0002262787 1.0330459317 1.0850104106 1.0306163084
Nilai odds ratio menunjukkan perubahan peluang terjadinya diabetes untuk setiap kenaikan satu unit pada variabel prediktor.
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
vif(model)
## Glucose BMI Age
## 1.021630 1.019062 1.038263
Jika nilai VIF < 10 maka tidak terdapat masalah multikolinearitas antar variabel prediktor.
pred <- ifelse(predict(model, type="response") > 0.5, 1, 0)
table(Prediksi = pred, Aktual = data$Outcome)
## Aktual
## Prediksi 0 1
## 0 439 117
## 1 61 151
Confusion matrix digunakan untuk melihat performa model dalam mengklasifikasikan data diabetes dan non-diabetes.
plot(data$Glucose, data$BMI,
xlab = "Glucose",
ylab = "BMI",
main = "Hubungan Glucose dan BMI")
Grafik ini menunjukkan hubungan antara kadar glukosa darah dan indeks massa tubuh (BMI).
Berdasarkan hasil analisis regresi logistik, beberapa variabel seperti Glucose, BMI, dan Age memiliki pengaruh terhadap kemungkinan seseorang mengalami diabetes. Model regresi logistik dapat digunakan untuk memprediksi kemungkinan diabetes berdasarkan faktor kesehatan tertentu.