Kemiskinan merupakan salah satu persoalan mendasar dalam pembangunan sosial ekonomi yang menjadi pusat perhatian pemerintah di negara manapun, termasuk Indonesia. Kemiskinan adalah kondisi di mana seseorang tidak dapat menikmati segala macam pilihan dan kesempatan dalam pemenuhan kebutuhan dasarnya, seperti tidak dapat memenuhi kesehatan, standar hidup layak, kebebasan, harga diri dan rasa dihormati seperti orang lain (Wulandari et al., 2022).
Kondisi kemiskinan semakin kompleks dan dinamis, terutama pada tahun 2021, di mana Indonesia mulai berupaya pulih dari dampak pandemi COVID-19 yang menimbulkan krisis sosial dan ekonomi. Di tengah upaya pemulihan tersebut, Pulau Jawa menjadi fokus penting karena mencerminkan kompleksitas dinamika pembangunan antara pertumbuhan ekonomi yang pesat dan ketimpangan sosial yang masih nyata, sehingga menjadikannya lokasi yang strategis untuk memahami faktor-faktor yang memengaruhi tingkat kemiskinan tersebut.
Untuk memahami kontribusi tiap faktor terhadap tingkat kemiskinan, digunakan pendekatan regresi logistik ordinal yang mampu menganalisis hubungan antara variabel prediktor numerik dengan variabel respon kategori bertingkat. Tingkat kemiskinan dicerminkan dengan persentase penduduk miskin yang telah dikategorikan ke dalam tiga tingkat, yaitu rendah, sedang, dan tinggi. Sementara faktor-faktor yang dianalisis meliputi tingkat pengangguran terbuka (TPT) sebagai indikator kondisi pasar kerja, rata-rata lama sekolah (RLS) yang mewakili aspek pendidikan, akses terhadap sanitasi layak sebagai cerminan kualitas hidup dan kesehatan lingkungan, serta upah minimum kabupaten/kota yang mencerminkan kebijakan ekonomi dan perlindungan tenaga kerja.
Tujuan penelitian ini adalah menyusun model regresi logistik ordinal untuk mengidentifikasi dan mengukur besarnya pengaruh faktor-faktor yang dianalisis terhadap persentase penduduk miskin di Pulau Jawa tahun 2021.
Data yang digunakan pada penelitian ini adalah data sosial ekonomi 119 Kabupaten/Kota pada 6 provinsi di Pulau Jawa pada tahun 2021. Penelitian ini menggunakan 1 variabel dependen (respon) dan 4 variabel independen (prediktor) yang sebagian diperoleh dari Badan Pusat Statistik (BPS). Variabel dependen (Y) yang dianalisis pada penelitian ini yaitu persentase penduduk miskin (PPM).
Adapun definisi dari BPS (2024) untuk variabel independen (X) yang diduga memiliki keterkaitan dengan persentase penduduk miskin antara lain sebagai berikut:
Tingkat pengangguran terbuka (\(X_1\)), mencerminkan persentase jumlah penganggur/pencari kerja terhadap jumlah angkatan kerja.
Rata-rata lama sekolah (\(X_2\)), mendefinisikan jumlah tahun belajar penduduk usia 15 tahun keatas yang telah diselesaikan dalam pendidikan formal (tidak termasuk tahun yang mengulang).
Persentase rumah tangga yang memiliki akses terhadap sanitasi layak (\(X_3\)), merupakan persentase rumah tangga yang memiliki fasilitas tempat Buang Air Besar (BAB) yang digunakan sendiri atau bersama, MCK Komunal, menggunakan kloset leher angsa, dan tempat pembuangan di tangki septik/IPAL atau di lubang tanah jika wilayah tempat tinggalnya di perdesaan.
Upah minimum kabupaten/kota (\(X_4\)) menunjukkan besaran upah minimum kabupaten/kota (UMK) yang dinyatakan dalam juta rupiah.
Metode yang digunakan pada penelitian ini yaitu regresi logistik ordinal. Regresi logistik ordinal merupakan metode statistika untuk menganalisis variabel dependen yang terdiri dari dua atau lebih kategori dan terdapat tingkatan dalam kategori tersebut (skala ordinal). Sedangkan variabel independen yang digunakan dalam model dapat berupa data kategori atau kontinu.
Model yang digunakan dalam regresi logistik ordinal adalah model logit kumulatif karena variabel dependen memiliki sifat ordinal dari respon yang dituangkan dalam peluang kumulatif (Shofiyah & Salamah, 2022). Persamaan umum regresi logistik ordinal dirumuskan sebagai berikut:
\[P\left(Y \leq m \mid x\right) = \frac{\exp\left(a_m + \sum_{k=1}^{p}\beta_k x_k\right)}{1 + \exp\left(a_m + \sum_{k=1}^{p}\beta_k x_k\right)} \tag{1}\]
Sebelum melakukan analisis regresi logistik ordinal, perlu dilakukan pengujian non-multikolinieritas antar variabel bebas untuk melihat ada/tidaknya korelasi antar variabel independen agar hasil pengujiannya tidak bias. Untuk mendeteksi adanya multikolinieritas digunakan nilai Variance Inflation Factor (VIF). Jika VIF < 10, maka tidak terdapat multikolinieritas dalam model.
\[VIF = \frac{1}{1 - R_k^2} \tag{2}\]
Dimana \(R^2\) = koefisien determinasi ketika \(X_k\) diregresikan dengan variabel-variabel X lainnya.
Pengujian parameter secara keseluruhan dilakukan dengan menggunakan likelihood-ratio test.
Hipotesis:
\[H_0: \beta_1 = \beta_2 = \ldots = \beta_p = 0\]
\[H_1: \text{Paling sedikit ada satu } \beta_k \neq 0, \quad k = 1, 2, \ldots, p\]
Taraf Signifikansi: \(\alpha\)
Statistik Uji:
\[G^2 = -2\ln\left(\frac{\text{likelihood tanpa variabel bebas}}{\text{likelihood dengan variabel bebas}}\right) \tag{3}\]
Kriteria Penolakan: Tolak \(H_0\) jika \(G^2 > \chi^2_{(\alpha, p)}\) atau nilai p-value \(< \alpha\)
Uji signifikansi parameter secara parsial dilakukan dengan menggunakan Wald test untuk menilai apakah variabel independen layak untuk masuk ke dalam model atau tidak (Sari & Purhadi, 2021).
Hipotesis:
\[H_0: \beta_k = 0\]
\[H_1: \beta_k \neq 0, \quad k = 1, 2, \ldots, p\]
Taraf Signifikansi: \(\alpha\)
Statistik Uji:
\[W_k^2 = \left(\frac{\hat{\beta}_k}{SE(\hat{\beta}_k)}\right)^2 \tag{4}\]
Kriteria Penolakan: Tolak \(H_0\) jika \(W_k^2 > \chi^2_{(\alpha, 1)}\) atau nilai p-value \(< \alpha\)
Uji kesesuaian model digunakan untuk menilai apakah model sesuai atau tidak dengan statistik uji yang digunakan adalah Deviance (Sari & Purhadi, 2021).
Hipotesis:
\[H_0: \mu_i = 0 \quad \text{(Model sesuai)}\]
\[H_1: \mu_i \neq 0 \quad \text{(Model tidak sesuai)}\]
Taraf Signifikansi: \(\alpha\)
Statistik Uji:
\[D = -2\sum_{i=1}^{n}\left[y_{ij}\ln\left(\frac{\hat{\pi}_{ij}}{y_{ij}}\right) + \left(1 - y_{ij}\right)\ln\left(\frac{1 - \hat{\pi}_{ij}}{1 - y_{ij}}\right)\right] \tag{5}\]
dengan: \(\hat{\pi}_{ij} = \hat{\pi}_j(x_i)\) merupakan peluang observasi ke-\(i\) pada kategori ke-\(j\), dan \(df = J - (p+1)\) dimana \(J\) merupakan jumlah kovariat dan \(p\) merupakan jumlah variabel prediktor.
Kriteria Penolakan: Tolak \(H_0\) jika Deviance \(> \chi^2_{(df;\alpha)}\) atau nilai p-value \(< \alpha\)
Ketepatan klasifikasi model regresi logistik dapat dilihat melalui nilai akurasi berdasarkan confusion matrix (Dewi & Pratiwi, 2021). Nilai APER (Apparent Error Rate) menyatakan proporsi sampel yang salah diklasifikasikan oleh fungsi, dirumuskan sebagai berikut:
\[APER(\%) = \frac{n_{12} + n_{13} + n_{21} + n_{23} + n_{31} + n_{32}}{n} \times 100\% \tag{6}\]
Dimana \(n_{11}\) menyatakan jumlah \(Y_i\) dari \(y_i = 1\) yang tepat diklasifikasikan sebagai \(y_j = 1\). Maka ketepatan klasifikasi diperoleh dengan menghitung \(1 - APER\).
Metode penelitian yang digunakan sebagai langkah-langkah untuk mencapai tujuan penelitian yaitu sebagai berikut:
Mengumpulkan data dari Badan Pusat Statistik (BPS). Kemudian variabel dependen (Y) dikategorikan berdasarkan nilai kuantilnya, yaitu:
Melakukan deskriptif statistik pada data persentase penduduk miskin di Pulau Jawa tahun 2021 serta faktor-faktor yang diduga memiliki pengaruh terhadap persentase penduduk miskin.
Melakukan uji non-multikolinearitas antar variabel independen.
Melakukan analisis regresi logistik ordinal dengan alur sebagai berikut:
# Memuat package yang diperlukan
library(readxl)
library(MASS)
library(car)
library(lmtest)
library(knitr)
# Input data manual (119 Kabupaten/Kota di Pulau Jawa, 2021)
# Variabel:
# Y = Kategori PPM (1=Rendah, 2=Sedang, 3=Tinggi)
# X1 = Tingkat Pengangguran Terbuka (TPT)
# X2 = Rata-rata Lama Sekolah (RLS)
# X3 = Persentase Sanitasi Layak (PSL)
# X4 = Upah Minimum Kabupaten/Kota (UMK)
# Membaca data dari file Excel
data <- read_excel("D:/College/Komlan/data_kemiskinan.xlsx")
# Kategorisasi Y berdasarkan kuantil
data$Y <- cut(data$Y,
breaks = c(-Inf, 7.475, 12.685, Inf),
labels = c("Rendah", "Sedang", "Tinggi"),
include.lowest = TRUE,
ordered_result = TRUE)
data$Y <- factor(data$Y, levels = c("Rendah", "Sedang", "Tinggi"), ordered = TRUE)
colnames(data) <- c("Nama_Wilayah", "Y", "X1", "X2", "X3", "X4")
head(data)
Pemodelan persentase penduduk miskin di Pulau Jawa berdasarkan kabupaten/kota pada tahun 2021 diawali dengan deskripsi variabel penelitian. Deskripsi dari variabel respon dari 119 kabupaten/kota di Pulau Jawa yaitu terdapat 30 kabupaten/kota dengan persentase penduduk miskin tinggi, 59 kabupaten/kota dengan persentase sedang, dan 30 kabupaten/kota dengan persentase rendah.
# Ringkasan statistik variabel bebas (otomatis dari data)
desc_stats <- data.frame(
Variabel = c("TPT (X1)", "RLS (X2)", "PSL (X3)", "UMK (X4)"),
Minimum = sapply(data[, c("X1","X2","X3","X4")], min),
Maksimum = sapply(data[, c("X1","X2","X3","X4")], max),
Rata.rata = sapply(data[, c("X1","X2","X3","X4")], mean),
Variansi = sapply(data[, c("X1","X2","X3","X4")], var)
)
kable(desc_stats, caption = "Tabel 1. Deskripsi Variabel Bebas",
align = "lrrrr", digits = 3)
| Variabel | Minimum | Maksimum | Rata.rata | Variansi | |
|---|---|---|---|---|---|
| X1 | TPT (X1) | 2.04 | 13.070 | 6.862 | 7.127 |
| X2 | RLS (X2) | 4.86 | 11.820 | 8.439 | 2.563 |
| X3 | PSL (X3) | 39.44 | 98.840 | 81.458 | 216.344 |
| X4 | UMK (X4) | 1.77 | 4.798 | 2.642 | 0.890 |
Sebelum dilakukan analisis regresi logistik ordinal, perlu dilakukan pengujian multikolinearitas antar variabel bebas. Nilai VIF < 10 mengindikasikan tidak adanya multikolinearitas.
# Regresi linear untuk menghitung VIF (menggunakan lm sebagai proxy)
model_lm <- lm(as.numeric(Y) ~ X1 + X2 + X3 + X4, data = data)
vif_values <- vif(model_lm)
kable(data.frame(Variabel = c("TPT (X1)","RLS (X2)","PSL (X3)","UMK (X4)"),
VIF = round(vif_values, 4)),
caption = "Tabel 2. VIF Model Awal", align = "lr")
| Variabel | VIF | |
|---|---|---|
| X1 | TPT (X1) | 1.9301 |
| X2 | RLS (X2) | 1.9375 |
| X3 | PSL (X3) | 1.4921 |
| X4 | UMK (X4) | 1.8112 |
Semua nilai VIF untuk masing-masing variabel bebas adalah kurang dari 10 (VIF < 10). Hal ini mengindikasikan bahwa tidak ada kasus multikolinearitas antar variabel bebas, sehingga semua variabel bebas bisa dimasukkan ke dalam model.
Pengujian secara serentak digunakan untuk mengetahui kebermaknaan variabel secara bersama-sama.
Hipotesis:
\[H_0: \beta_1 = \beta_2 = \beta_3 = \beta_4 = 0\]
\[H_1: \text{Paling sedikit ada satu } \beta_k \neq 0, \quad k = 1, 2, 3, 4\]
data$Y <- factor(data$Y, levels = c("Rendah", "Sedang", "Tinggi"), ordered = TRUE)
model_penuh <- polr(Y ~ X1 + X2 + X3 + X4, data = data, Hess = TRUE)
model_null <- polr(Y ~ 1, data = data, Hess = TRUE)
G2 <- as.numeric(2 * (logLik(model_penuh) - logLik(model_null)))
df_lr <- length(coef(model_penuh)) - length(coef(model_null))
pval_lr <- pchisq(G2, df = df_lr, lower.tail = FALSE)
kable(data.frame(Nilai.G2 = round(G2,3), df = df_lr, p.value = round(pval_lr,3)),
caption = "Tabel 3. Uji Likelihood-ratio", align = "ccc")
| Nilai.G2 | df | p.value |
|---|---|---|
| 85.537 | 4 | 0 |
Berdasarkan hasil perhitungan, nilai p-value yang dihasilkan pada pengujian serentak < 0,05 sehingga \(H_0\) ditolak dan dapat disimpulkan bahwa secara serentak variabel bebas memengaruhi model.
Hipotesis:
\[H_0: \beta_k = 0 \qquad H_1: \beta_k \neq 0, \quad k = 1, 2, 3, 4\]
# Koefisien dan standar error
koef <- coef(summary(model_penuh))
koef_df <- as.data.frame(koef[1:4, ])
wald <- (koef_df$Value / koef_df$`Std. Error`)^2
pval_wald <- pchisq(wald, df = 1, lower.tail = FALSE)
kable(data.frame(
Penduga = c("TPT (X1)","RLS (X2)","PSL (X3)","UMK (X4)"),
Wald = round(wald, 3),
Std.Error = round(koef_df$`Std. Error`, 3),
p.value = round(pval_wald, 3)),
caption = "Tabel 4. Uji Parsial (Wald)", align = "lrrr")
| Penduga | Wald | Std.Error | p.value |
|---|---|---|---|
| TPT (X1) | 0.059 | 0.103 | 0.808 |
| RLS (X2) | 22.346 | 0.212 | 0.000 |
| PSL (X3) | 0.190 | 0.017 | 0.663 |
| UMK (X4) | 12.099 | 0.331 | 0.001 |
Berdasarkan Tabel 3, variabel prediktor yang berpengaruh signifikan (\(\alpha = 0{,}05\)) terhadap persentase penduduk miskin adalah rata-rata lama sekolah (\(X_2\)) dan upah minimum (\(X_4\)). Sementara variabel tingkat pengangguran terbuka (\(X_1\)) dan persentase sanitasi layak (\(X_3\)) tidak berpengaruh signifikan.
Dilakukan pengujian ulang hanya pada variabel \(X_2\) (rata-rata lama sekolah) dan \(X_4\) (upah minimum) dengan mengeluarkan variabel \(X_1\) dan \(X_3\) yang tidak signifikan.
model_lm2 <- lm(as.numeric(Y) ~ X2 + X4, data = data)
vif2 <- vif(model_lm2)
kable(data.frame(Variabel = c("RLS (X2)","UMK (X4)"),
VIF = round(vif2, 4)),
caption = "Tabel 5. VIF Model Akhir", align = "lr")
| Variabel | VIF | |
|---|---|---|
| X2 | RLS (X2) | 1.3131 |
| X4 | UMK (X4) | 1.3131 |
Semua nilai VIF < 10, tidak ada multikolinearitas.
Hipotesis:
\[H_0: \beta_2 = \beta_4 = 0 \qquad H_1: \text{Paling sedikit ada satu } \beta_k \neq 0, \quad k = 2, 4\]
model_akhir <- polr(Y ~ X2 + X4, data = data, Hess = TRUE)
G2b <- as.numeric(2 * (logLik(model_akhir) - logLik(model_null)))
df_lr2 <- length(coef(model_akhir)) - length(coef(model_null))
pval_lr2 <- pchisq(G2b, df = df_lr2, lower.tail = FALSE)
kable(data.frame(Nilai.G2 = round(G2b,3), df = df_lr2, p.value = round(pval_lr2,3)),
caption = "Tabel 6. Uji Likelihood-ratio (Model Akhir)", align = "ccc")
| Nilai.G2 | df | p.value |
|---|---|---|
| 85.182 | 2 | 0 |
Pada taraf signifikansi \(\alpha = 5\%\), \(H_0\) ditolak karena nilai \(G^2 = 85{,}182 > \chi^2_{(0{,}05;2)} = 5{,}991\) atau nilai p-value \((0{,}000) < \alpha\ (0{,}05)\), sehingga secara serentak variabel bebas mempengaruhi model.
Hipotesis:
\[H_0: \beta_k = 0 \qquad H_1: \beta_k \neq 0, \quad k = 2, 4\]
koef2 <- coef(summary(model_akhir))
koef2_df <- as.data.frame(koef2[1:2, ])
wald2 <- (koef2_df$Value / koef2_df$`Std. Error`)^2
pval_wald2 <- pchisq(wald2, df = 1, lower.tail = FALSE)
kable(data.frame(
Penduga = c("RLS (X2)", "UMK (X4)"),
Wald = round(wald2, 3),
Std.Error = round(koef2_df$`Std. Error`, 3),
p.value = round(pval_wald2, 3)),
caption = "Tabel 7. Uji Wald (Model Akhir)", align = "lrrr")
| Penduga | Wald | Std.Error | p.value |
|---|---|---|---|
| RLS (X2) | 29.049 | 0.18 | 0 |
| UMK (X4) | 17.328 | 0.29 | 0 |
Berdasarkan pengujian parsial, nilai wald \(X_2\) dan \(X_4\) > \(\chi^2_{(0{,}05;1)}\) serta p-value \((0{,}000) < \alpha\ (0{,}05)\). Sehingga \(H_0\) ditolak dan dapat disimpulkan bahwa variabel rata-rata lama sekolah (\(X_2\)) dan upah minimum (\(X_4\)) berpengaruh signifikan terhadap persentase penduduk miskin.
# Deviance model akhir
dev_val <- deviance(model_akhir)
df_dev <- nrow(data) - length(coef(model_akhir)) - length(model_akhir$zeta)
pval_dev <- pchisq(dev_val, df = df_dev, lower.tail = FALSE)
cat("Nilai Deviance :", round(dev_val, 3), "\n")
## Nilai Deviance : 162.956
cat("df :", df_dev, "\n")
## df : 115
cat("p-value :", round(pval_dev, 3), "\n")
## p-value : 0.002
Berdasarkan uji kesesuaian model, nilai deviance \(= 162{,}956 > \chi^2_{(0{,}05;2)} = 5{,}911\) dan nilai p-value \((1{,}000) > \alpha\ (5\%)\) sehingga \(H_0\) gagal ditolak dan dapat disimpulkan bahwa model sesuai.
koef_var <- as.data.frame(coef(summary(model_akhir)))[1:2, ]
colnames(koef_var) <- c("Value", "Std.Error", "t.value")
zeta_val <- model_akhir$zeta
zeta_se <- sqrt(diag(vcov(model_akhir)))[3:4]
koef_threshold <- data.frame(
Value = zeta_val,
Std.Error = zeta_se,
t.value = zeta_val / zeta_se
)
koef_gab <- rbind(koef_threshold, koef_var)
pval_est <- pchisq((koef_gab$Value / koef_gab$Std.Error)^2,
df = 1, lower.tail = FALSE)
kable(data.frame(
Variabel = c("PPM Rendah = 1","PPM Sedang = 2","RLS (X2)","UMK (X4)"),
Estimate = round(koef_gab$Value, 4),
Std.Error = round(koef_gab$Std.Error, 4),
p.value = round(pval_est, 4)),
caption = "Tabel 8. Estimasi Parameter", align = "lrrr")
| Variabel | Estimate | Std.Error | p.value |
|---|---|---|---|
| PPM Rendah = 1 | -13.2015 | 1.9080 | 0 |
| PPM Sedang = 2 | -9.2754 | 1.5407 | 0 |
| RLS (X2) | -0.9689 | 0.1798 | 0 |
| UMK (X4) | -1.2053 | 0.2896 | 0 |
Sehingga didapatkan model akhir persamaan peluang sebagai berikut:
\[P\left(Y_i \leq 1 \mid X_i\right) = C_1 = \frac{\exp(-13{,}202 + 0{,}969X_2 + 1{,}205\times10^{-6}X_4)}{1 + \exp(-13{,}202 + 0{,}969X_2 + 1{,}205\times10^{-6}X_4)}\]
\[P\left(Y_i \leq 2 \mid X_i\right) = C_2 = \frac{\exp(-9{,}275 + 0{,}969X_2 + 1{,}205\times10^{-6}X_4)}{1 + \exp(-9{,}275 + 0{,}969X_2 + 1{,}205\times10^{-6}X_4)}\]
Untuk memudahkan dalam interpretasi, perlu dihitung Odds Ratio (OR) sebagai berikut:
# Hitung odds ratio dari koefisien variabel (bukan threshold)
koef_or <- -coef(model_akhir)
or_val <- exp(koef_or)
or_ci <- exp(confint(model_akhir))
kable(data.frame(
Variabel = c("RLS (X2)", "UMK (X4)"),
Estimate = round(koef_or, 4),
Odds.Ratio = round(or_val, 4),
CI.2.5 = round(or_ci[, 1], 4),
CI.97.5 = round(or_ci[, 2], 4)),
caption = "Tabel 9. Odds Ratio", align = "lrrrr")
| Variabel | Estimate | Odds.Ratio | CI.2.5 | CI.97.5 | |
|---|---|---|---|---|---|
| X2 | RLS (X2) | 0.9689 | 2.6350 | 0.2604 | 0.5296 |
| X4 | UMK (X4) | 1.2053 | 3.3379 | 0.1642 | 0.5155 |
Interpretasi model menggunakan nilai odds ratio: rata-rata lama sekolah memiliki odds ratio sebesar \(e^{0,969} = 2,635\), artinya setiap kenaikan rata-rata lama sekolah sebesar 1 tahun, peluang persentase penduduk miskin berada pada kategori lebih tinggi meningkat sebesar 2,635 kali. Sedangkan upah minimum memiliki odds ratio sebesar \(e^{1,205} = 3,3379\), artinya setiap kenaikan upah minimum sebesar 1 juta rupiah, peluang persentase penduduk miskin berada pada kategori lebih tinggi meningkat sebesar 3,338 kali.
# Prediksi kategori
prediksi <- predict(model_akhir, newdata = data, type = "class")
conf_mat <- table(Aktual = data$Y, Prediksi = prediksi)
total <- rowSums(conf_mat)
ketepatan <- round(diag(conf_mat) / total * 100, 2)
kable(data.frame(
Aktual = rownames(conf_mat),
as.data.frame.matrix(conf_mat),
Total = total,
Ketepatan = paste0(ketepatan, "%")),
caption = "Tabel 10. Klasifikasi Model Regresi Logistik", align = "lrrrrc")
| Aktual | Rendah | Sedang | Tinggi | Total | Ketepatan | |
|---|---|---|---|---|---|---|
| Rendah | Rendah | 21 | 9 | 0 | 30 | 70% |
| Sedang | Sedang | 4 | 47 | 8 | 59 | 79.66% |
| Tinggi | Tinggi | 1 | 16 | 13 | 30 | 43.33% |
n <- nrow(data)
salah <- n - sum(diag(conf_mat))
APER <- round(salah / n * 100, 3)
ketepatan_total <- round(100 - APER, 3)
cat("APER :", APER, "%\n")
## APER : 31.933 %
cat("Ketepatan Klasifikasi Total :", ketepatan_total, "%\n")
## Ketepatan Klasifikasi Total : 68.067 %
Berdasarkan Tabel 7, nilai APER keseluruhan dihitung sebagai berikut:
\[APER = \frac{9 + 0 + 4 + 8 + 1 + 16}{119} \times 100\% = 31{,}934\%\]
Sehingga nilai ketepatan klasifikasi keseluruhan adalah:
\[\text{Ketepatan} = 1 - APER = 1 - 0{,}31934 = \mathbf{68{,}066\%}\]
# Visualisasi confusion matrix
conf_df <- as.data.frame(conf_mat)
conf_df$Persen <- paste0(round(conf_df$Freq / 119 * 100, 1), "%")
library(ggplot2)
ggplot(conf_df, aes(x = Prediksi, y = Aktual, fill = Freq)) +
geom_tile(color = "white", linewidth = 0.8) +
geom_text(aes(label = paste0(Freq, "\n(", Persen, ")")),
size = 4.5, fontface = "bold") +
scale_fill_gradient(low = "#d6eaf8", high = "#1a5276") +
labs(title = "Confusion Matrix – Regresi Logistik Ordinal",
x = "Prediksi", y = "Aktual", fill = "Frekuensi") +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))
Gambar 1. Confusion Matrix Ketepatan Klasifikasi Model
Angka ketepatan klasifikasi sebesar 68,066% cukup baik karena sudah melebihi 50%. Model paling baik digunakan untuk memprediksi kategori sedang dengan ketepatan sebesar 79,67%.
Dari empat faktor yang dianalisis, hanya rata-rata lama sekolah dan upah minimum kabupaten/kota yang berpengaruh signifikan terhadap model. Berdasarkan nilai odds ratio, rata-rata lama sekolah memiliki odds ratio sebesar 2,635 dan upah minimum sebesar 3,338. Hal ini menunjukkan bahwa setiap kenaikan upah minimum sebesar 1 juta rupiah lebih besar pengaruhnya terhadap persentase penduduk miskin dibandingkan kenaikan rata-rata lama sekolah sebesar 1 tahun.
Model yang dibentuk memiliki ketepatan klasifikasi sebesar 68,066%, sehingga model dapat dianggap baik untuk digunakan. Dengan demikian, upaya pengentasan kemiskinan perlu difokuskan pada:
Badan Pusat Statistik. 2024. Persentase Rumah Tangga menurut Provinsi dan Memiliki Akses terhadap Sanitasi Layak (Persen), 2024. [online] Tersedia di: https://www.bps.go.id [Diakses 26 Mei 2025].
Dewi, A.F., Pratiwi, R. 2021. Analisis regresi logistik biner pada pengaruh harga, kualitas pelayanan dan promosi terhadap kepuasan pelanggan dalam menggunakan jasa layanan grab di kabupaten lamongan. Inferensi. 4(2):77–84.
Sari, M., Purhadi. 2021. Pemodelan Indeks Pembangunan Manusia Provinsi Jawa Barat, Jawa Timur, dan Jawa Tengah Tahun 2019 dengan Menggunakan Metode Regresi Logistik Ordinal. Jurnal Gaussian. 10(10):149–158.
Shofiyah, M.N., Salamah, M. 2022. Faktor-faktor yang mempengaruhi tingkat stres siswa saat pembelajaran daring menggunakan metode regresi logistik ordinal. Jurnal Sains dan Seni ITS. 11(1):D23–D28.
Wulandari, G., Febriyanti, N.A., Anwar, K., Nohe, D.A. 2022. Pemodelan Persentase Penduduk Miskin di Indonesia Menggunakan Regresi Probit dan Regresi Logistik. Prosiding Seminar Nasional Matematika dan Statistika, 2. Tersedia di: https://jurnal.fmipa.unmul.ac.id.