Memuat
Memuat
Regresi Logistik Biner untuk Pendidikan dan Pembelajaran
0 kali dilihat
Memodelkan peluang lulus tepat waktu berdasarkan IPK semester awal dan jam kerja paruh waktu dengan regresi logistik biner, dengan data sintetis sebagai ilustrasi. Regresi logistik biner memodelkan peluang terjadinya suatu kejadian (ya/tidak) dari beberapa prediktor melalui fungsi logit dan menafsirkan pengaruhnya sebagai odds ratio. Cocok untuk skripsi/tesis yang variabel terikatnya dikotomis, seperti gagal bayar, lulus tepat waktu, atau status penyakit.

Memodelkan peluang lulus tepat waktu berdasarkan IPK semester awal dan jam kerja paruh waktu dengan regresi logistik biner, dengan data sintetis sebagai ilustrasi.
| Peran | Variabel | Satuan |
|---|---|---|
| Utama | Lulus tepat waktu | 0/1 |
| Pendukung 1 | IPK semester awal | score |
| Pendukung 2 | Jam kerja paruh waktu | hours |
Model logistik untuk Lulus tepat waktu signifikan secara keseluruhan (uji LR p < 0.001, McFadden R2 = 0.257). Kenaikan satu simpangan baku IPK semester awal mengalikan odds dengan 4.67 (p < 0.001, odds naik). Model membedakan kedua kelas dengan AUC 0.822 dan akurasi 74.2% pada ambang 0.5.
Dihitung dari data sintetis sebagai ilustrasi, bukan dari penelitian nyata.
Regresi logistik biner memodelkan peluang terjadinya suatu kejadian (ya/tidak) dari beberapa prediktor melalui fungsi logit dan menafsirkan pengaruhnya sebagai odds ratio. Cocok untuk skripsi/tesis yang variabel terikatnya dikotomis, seperti gagal bayar, lulus tepat waktu, atau status penyakit.
Laporkan odds ratio beserta interval kepercayaan 95% dan p-value; OR di atas 1 berarti peluang kejadian naik, di bawah 1 berarti turun. Sertakan uji likelihood ratio, pseudo R2 McFadden, AUC, dan akurasi sebagai ukuran kebaikan model.
Skrip awal singkat dengan nama variabel proyek ini. Versi yang diserahkan disesuaikan dengan data Anda dan diberi komentar lengkap.
# Contoh kode R: Binary Logistic Regression
suppressPackageStartupMessages({
library(ggplot2)
library(patchwork)
library(pROC)
})
set.seed(42)
# ---- Gaya grafik ----
pal <- c("#1f6feb", "#e8590c", "#2f9e44", "#ae3ec9", "#f59f00")
warna <- list(bg = "#f4f6fa", panel = "#ffffff", teks = "#1f2933", redup = "#5f6b78", grid = "#e3e8ee", bar = "#1d3557")
tata <- 1
theme_set(theme_minimal(base_size = 11) + theme(legend.position = "bottom"))
# ---- Data sintetis ----
n <- 200
d <- data.frame(early_semester_gpa = rnorm(n, 50, 10),
part_time_work_hours = rnorm(n, 30, 6))
z1 <- as.numeric(scale(d$early_semester_gpa))
z2 <- as.numeric(scale(d$part_time_work_hours))
b0 <- runif(1, -0.8, 0.3)
b1 <- runif(1, 0.8, 1.5)
b2 <- runif(1, 0.25, 0.75) * sample(c(-1, 1), 1)
d$on_time_graduation <- rbinom(n, 1, plogis(b0 + b1 * z1 + b2 * z2)) # 1 = kejadian terjadi, 0 = tidak
write.csv(d, "data_contoh.csv", row.names = FALSE)
# ---- Analisis: regresi logistik biner (glm, family binomial) ----
fit <- glm(on_time_graduation ~ early_semester_gpa + part_time_work_hours, family = binomial, data = d)
s <- summary(fit)
print(s)
or_tab <- exp(cbind(OR = coef(fit), confint.default(fit))) # odds ratio per satuan + CI Wald 95%
print(round(or_tab, 4))
# Odds ratio per 1 simpangan baku (lebih mudah dibandingkan antarprediktor)
sdx <- c(sd(d$early_semester_gpa), sd(d$part_time_work_hours))
se_b <- s$coefficients[2:3, 2]
or_sd <- data.frame(var = c("early_semester_gpa", "part_time_work_hours"),
or = exp(coef(fit)[2:3] * sdx),
lo = exp((coef(fit)[2:3] - 1.96 * se_b) * sdx),
hi = exp((coef(fit)[2:3] + 1.96 * se_b) * sdx),
p = s$coefficients[2:3, 4])
print(or_sd)
# ---- Uji kelayakan model ----
fit0 <- glm(on_time_graduation ~ 1, family = binomial, data = d)
lr <- anova(fit0, fit, test = "Chisq") # uji likelihood ratio (omnibus)
print(lr)
p_lr <- lr[2, "Pr(>Chi)"]
r2_mcf <- 1 - as.numeric(logLik(fit)) / as.numeric(logLik(fit0)) # pseudo R2 McFadden
d$peluang <- fitted(fit)
roc_obj <- pROC::roc(d$on_time_graduation, d$peluang, quiet = TRUE)
auc_v <- as.numeric(pROC::auc(roc_obj))
d$kelas <- as.integer(d$peluang >= 0.5)
print(table(Aktual = d$on_time_graduation, Prediksi = factor(d$kelas, levels = 0:1))) # matriks klasifikasi
akurasi <- mean(d$kelas == d$on_time_graduation)
cat(sprintf("AUC = %.3f; akurasi (ambang 0.5) = %.3f; McFadden R2 = %.3f\n", auc_v, akurasi, r2_mcf))
# ---- Grafik ----
# Kurva peluang prediksi menurut X1 (X2 ditahan pada rata-ratanya) dengan pita 95%
g <- data.frame(early_semester_gpa = seq(min(d$early_semester_gpa), max(d$early_semester_gpa), length.out = 120), part_time_work_hours = mean(d$part_time_work_hours))
pr <- predict(fit, newdata = g, type = "link", se.fit = TRUE)
g$m <- plogis(pr$fit); g$lo <- plogis(pr$fit - 1.96 * pr$se.fit); g$hi <- plogis(pr$fit + 1.96 * pr$se.fit)
p1 <- ggplot() +
geom_jitter(data = d, aes(early_semester_gpa, on_time_graduation), height = 0.04, width = 0, colour = pal[1], alpha = 0.35, size = 1.5) +
geom_ribbon(data = g, aes(early_semester_gpa, ymin = lo, ymax = hi), fill = pal[2], alpha = 0.2) +
geom_line(data = g, aes(early_semester_gpa, m), colour = pal[2], linewidth = 1.2) +
scale_y_continuous(breaks = c(0, 0.25, 0.5, 0.75, 1)) +
labs(title = "Predicted probability (observed 0/1 jittered)", x = "early_semester_gpa", y = "P(event = 1)")
dr <- data.frame(fpr = 1 - roc_obj$specificities, tpr = roc_obj$sensitivities)
dr <- dr[order(dr$fpr, dr$tpr), ]
p2 <- ggplot(dr, aes(fpr, tpr)) +
geom_abline(slope = 1, intercept = 0, linetype = "dashed", colour = warna$redup) +
geom_area(fill = pal[3], alpha = 0.15) +
geom_path(colour = pal[3], linewidth = 1.1) +
annotate("text", x = 0.62, y = 0.18, label = sprintf("AUC = %.3f", auc_v), colour = warna$teks, size = 3.6) +
labs(title = "ROC curve", x = "1 - specificity", y = "Sensitivity")
p3 <- ggplot(or_sd, aes(or, var)) +
geom_vline(xintercept = 1, linetype = "dashed", colour = warna$redup) +
geom_segment(aes(x = lo, xend = hi, yend = var), colour = pal[1], linewidth = 1.1) +
geom_point(colour = pal[2], size = 3.2) +
geom_text(aes(label = sprintf("%.2f", or)), vjust = -1.1, colour = warna$teks, size = 3.2) +
scale_x_log10() +
labs(title = "Odds ratio per 1 SD (95% CI, log scale)", x = "Odds ratio", y = NULL)
p_hasil <- if (tata == 1) p1 | (p2 / p3) else p1 / (p2 | p3)
print(p_hasil)
Berkas proyek aslinya tersedia. Bukan sekadar gambar di atas: Anda mendapat proyek R yang siap dijalankan. Berkas bisa diunduh setelah pembayaran, dan kami kirim lewat WhatsApp atau email.
ZIP: analisis.R + data_contoh.csv + BACA-DULU.txt
Pilih seberapa banyak bantuan yang Anda perlukan. Setiap paket yang lebih tinggi sudah mencakup semua item paket di bawahnya. Harga belum termasuk PPN 11%.
Paket 1
Rp 300.000
belum termasuk PPN 11%
Waktu pengerjaan: 3 hari kerja
Output: Berkas R + gambar hasil
Yang Anda terima
Paket 2 · paling dipilih
Rp 900.000
belum termasuk PPN 11%
Waktu pengerjaan: 7 hari kerja
Output: Kode + analisis + bahan interpretasi
Termasuk semua item Paket 1, ditambah
Paket 3
Rp 2.000.000
belum termasuk PPN 11%
Waktu pengerjaan: 12-15 hari kerja
Output: Kode + analisis + pendampingan hingga siap dipresentasikan
Termasuk semua item Paket 1 & 2, ditambah
Ya. Berkas proyek aslinya berupa ZIP berisi skrip analisis.R lengkap, data_contoh.csv, dan petunjuk BACA-DULU.txt. Berkas bisa diunduh setelah pembayaran, dan kami kirim lewat WhatsApp atau email. Untuk data Anda sendiri (Paket 2 dan 3), skrip disesuaikan dengan dataset Anda.
Cocok. Regresi Logistik Biner lazim dipakai pada jenjang ini di bidang Pendidikan dan Pembelajaran. Analisis kami sesuaikan dengan pertanyaan penelitian, data Anda sendiri, dan ketentuan dosen pembimbing.
Bukan. Lembar hasil dihitung dari data sintetis sebagai ilustrasi jenis keluaran R Studio. Untuk pesanan Anda, metode yang sama dijalankan pada data penelitian Anda sendiri.
Itu tujuan paketnya. Setiap skrip diberi komentar, dan Paket 3 mencakup dua sesi pendampingan serta latihan tanya jawab supaya Anda bisa menjelaskan metode dan hasilnya saat seminar dan sidang.
Tiap proyek punya tiga paket: Paket 1 (kode dan penjelasan) Rp 300.000, Paket 2 (analisis data Anda dan interpretasi) Rp 900.000, dan Paket 3 (pendampingan lengkap) Rp 2.000.000, belum termasuk PPN 11%. Data yang besar, metode tambahan, atau tenggat ketat menyesuaikan penawaran setelah konsultasi singkat.
Lembar hasil memakai data sintetis sebagai ilustrasi. R adalah bahasa pemrograman proyek R Foundation; RStudio dan Posit adalah merek dagang Posit PBC.
Kembali ke portofolio R Studio