Dalam analisis data, sering kali kita tidak hanya ingin mengetahui hubungan antar variabel, tetapi juga ingin memprediksi suatu kejadian. Pada penelitian ini, kita ingin mengetahui faktor-faktor yang memengaruhi kelulusan mahasiswa.
X₁ = Jam belajar X₂ = Kehadiran (%) X₃ = Metode belajar (kategorik: 0 = offline, 1 = online) Y = Nilai ujian
Berbeda dengan regresi linear yang memprediksi nilai kontinu, pada kasus ini variabel dependen berbentuk kategori (lulus/tidak lulus), sehingga metode yang tepat digunakan adalah regresi logistik.
data <- read.csv("D:/Youtube/Regresi/Logistic Regression/logistic1.csv")
head(data)
## X1 X2 X3 Y
## 1 6 85 Online Tidak Lulus
## 2 14 72 Offline Lulus
## 3 10 90 Online Lulus
## 4 8 76 Offline Tidak Lulus
## 5 15 88 Online Lulus
## 6 12 70 Offline Tidak Lulus
# Encoding Data
Y <- ifelse(data$Y=="Lulus",1,0)
X1 <- data$X1
X2 <- data$X2
X3 <- as.factor(ifelse(data$X3 == "Offline", 0,1))
Model dibentuk menggunakan fungsi glm() dengan family = binomial.
model_logit <- glm(Y ~ X1 + X2 + X3, family = binomial)
summary(model_logit)
##
## Call:
## glm(formula = Y ~ X1 + X2 + X3, family = binomial)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -96.4861 47.0112 -2.052 0.0401 *
## X1 1.9074 0.9783 1.950 0.0512 .
## X2 0.9692 0.4682 2.070 0.0385 *
## X31 0.4108 2.7413 0.150 0.8809
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 62.6869 on 49 degrees of freedom
## Residual deviance: 7.3864 on 46 degrees of freedom
## AIC: 15.386
##
## Number of Fisher Scoring iterations: 10
Berdasarkan hasil estimasi model, diperoleh persamaan logit sebagai berikut:
\[ \ln \left(\frac{p}{1-p}\right) = -96.4861 + 1.9074X_1 + 0.9692X_2 + 0.4108X_3 \]
Interpretasi Koefisien: - X₁ (Jam Belajar) memiliki koefisien sebesar 1.9074 dengan nilai signifikansi 0.0512 (mendekati signifikan pada α = 5%). Artinya, peningkatan jam belajar cenderung meningkatkan peluang kelulusan mahasiswa.
X₂ (Kehadiran) memiliki koefisien sebesar 0.9692 dengan nilai signifikansi 0.0385 (< 0.05). Artinya, kehadiran berpengaruh signifikan dalam meningkatkan peluang kelulusan.
X₃ (Metode Belajar) memiliki koefisien sebesar 0.4108 dengan nilai signifikansi 0.8809 (> 0.05). Artinya, metode belajar (online/offline) tidak berpengaruh signifikan terhadap kelulusan.
exp(coef(model_logit))
## (Intercept) X1 X2 X31
## 1.249144e-42 6.735230e+00 2.635716e+00 1.507986e+00
Nilai odds ratio diperoleh sebagai berikut:
X₁ = 6.73 → setiap kenaikan 1 jam belajar meningkatkan peluang lulus sebesar 6.73 kali
X₂ = 2.64 → setiap kenaikan 1% kehadiran meningkatkan peluang lulus sebesar 2.64 kali
X₃ = 1.51 → metode online meningkatkan peluang 1.51 kali, namun tidak signifikan
data$prob <- predict(model_logit, type = "response")
head(data[, c("X1","X2","X3","Y","prob")])
## X1 X2 X3 Y prob
## 1 6 85 Online Tidak Lulus 0.095085591
## 2 14 72 Offline Lulus 0.498990969
## 3 10 90 Online Lulus 0.999963644
## 4 8 76 Offline Tidak Lulus 0.000514640
## 5 15 88 Online Lulus 0.999999982
## 6 12 70 Offline Tidak Lulus 0.003150465
data$pred_class <- ifelse(data$prob > 0.5, 1, 0)
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
confusionMatrix(as.factor(data$pred_class), as.factor(Y))
## Confusion Matrix and Statistics
##
## Reference
## Prediction 0 1
## 0 15 1
## 1 1 33
##
## Accuracy : 0.96
## 95% CI : (0.8629, 0.9951)
## No Information Rate : 0.68
## P-Value [Acc > NIR] : 1.249e-06
##
## Kappa : 0.9081
##
## Mcnemar's Test P-Value : 1
##
## Sensitivity : 0.9375
## Specificity : 0.9706
## Pos Pred Value : 0.9375
## Neg Pred Value : 0.9706
## Prevalence : 0.3200
## Detection Rate : 0.3000
## Detection Prevalence : 0.3200
## Balanced Accuracy : 0.9540
##
## 'Positive' Class : 0
##
Accuracy = 0.96 (96%) Model mengklasifikasikan 96% data dengan benar (48 dari 50 observasi benar).
Sensitivity = 0.9375 Artinya: Dari seluruh data yang benar-benar kelas 0, model berhasil menangkap 93,75%
Specificity = 0.9706 Dari seluruh data yang kelas 1, model mampu mengenali 97,06% dengan benar
F1 Score (≈ 0.9375) → model seimbang dan stabil
library(DescTools)
##
## Attaching package: 'DescTools'
## The following objects are masked from 'package:caret':
##
## MAE, RMSE
PseudoR2(model_logit, which = "Nagelkerke")
## Nagelkerke
## 0.9364083
Model mampu menjelaskan sekitar 93.64% variasi peluang kelulusan, yang menunjukkan bahwa model memiliki daya jelaskan yang sangat kuat.