R Markdown

Pendahuluan

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.

Import Data

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.

Struktur Data

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 ...

Statistik Deskriptif

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 Regresi Logistik

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.

Odds Ratio

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.

Uji Multikolinearitas

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.

Confusion Matrix

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.

Visualisasi

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).

Kesimpulan

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.