Dokumen ini disusun sebagai tugas mata kuliah Analisis Data Kategorik. Empat jenis model regresi untuk data kategorik dibahas secara berurutan, yaitu regresi logistik biner, regresi logistik ordinal, regresi Poisson, dan regresi logistik multinomial. Setiap model diilustrasikan menggunakan data simulasi yang berbeda agar konteks penerapannya lebih jelas, lengkap dengan model matematis, estimasi parameter menggunakan R, visualisasi, dan interpretasi hasil.
Data simulasi berikut menggambarkan status kelulusan tepat waktu mahasiswa (0 = tidak tepat waktu, 1 = tepat waktu) yang diprediksi oleh rata-rata jam belajar per minggu, IPK semester sebelumnya, dan status bekerja paruh waktu (0 = tidak bekerja, 1 = bekerja).
n1 <- 150
jam_belajar <- round(rnorm(n1, mean = 15, sd = 5), 1)
ipk <- round(rnorm(n1, mean = 3.1, sd = 0.4), 2)
kerja <- rbinom(n1, 1, 0.35)
logit_p <- -6 + 0.25 * jam_belajar + 1.8 * ipk - 1.1 * kerja
prob <- 1 / (1 + exp(-logit_p))
lulus_tepat_waktu <- rbinom(n1, 1, prob)
data_biner <- data.frame(
jam_belajar, ipk, kerja = factor(kerja, labels = c("Tidak Bekerja", "Bekerja")),
lulus_tepat_waktu
)
head(data_biner) %>%
kbl(caption = "Cuplikan Data Kelulusan Tepat Waktu Mahasiswa", booktabs = TRUE) %>%
kable_styling(latex_options = c("striped", "hold_position"), font_size = 9)
| jam_belajar | ipk | kerja | lulus_tepat_waktu |
|---|---|---|---|
| 17.6 | 3.11 | Tidak Bekerja | 1 |
| 9.6 | 3.23 | Tidak Bekerja | 1 |
| 15.7 | 3.50 | Tidak Bekerja | 1 |
| 14.6 | 3.30 | Bekerja | 1 |
| 11.7 | 3.33 | Tidak Bekerja | 1 |
| 2.4 | 3.56 | Tidak Bekerja | 1 |
Model regresi logistik biner dengan tautan logit dinyatakan sebagai: \[ \text{logit}(\pi_i) = \ln\left(\frac{\pi_i}{1-\pi_i}\right) = \beta_0 + \beta_1 X_{1i} + \beta_2 X_{2i} + \beta_3 X_{3i} \] dengan \(\pi_i = P(Y_i = 1 \mid \mathbf{X}_i)\), \(X_1\) = jam belajar, \(X_2\) = IPK, dan \(X_3\) = status kerja. Estimasi parameter dilakukan dengan metode Maximum Likelihood Estimation (MLE): \[ L(\boldsymbol{\beta}) = \prod_{i=1}^{n} \pi_i^{y_i} (1-\pi_i)^{1-y_i} \]
model_biner <- glm(lulus_tepat_waktu ~ jam_belajar + ipk + kerja,
data = data_biner, family = binomial(link = "logit"))
summary(model_biner)
##
## Call:
## glm(formula = lulus_tepat_waktu ~ jam_belajar + ipk + kerja,
## family = binomial(link = "logit"), data = data_biner)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -6.22463 3.80292 -1.637 0.10167
## jam_belajar 0.26691 0.08814 3.028 0.00246 **
## ipk 1.89466 1.11676 1.697 0.08978 .
## kerjaBekerja -0.87328 0.67752 -1.289 0.19742
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 78.653 on 149 degrees of freedom
## Residual deviance: 62.748 on 146 degrees of freedom
## AIC: 70.748
##
## Number of Fisher Scoring iterations: 7
tidy(model_biner, exponentiate = TRUE, conf.int = TRUE) %>%
mutate(across(where(is.numeric), ~round(.x, 4))) %>%
kbl(caption = "Estimasi Odds Ratio Model Regresi Logistik Biner", booktabs = TRUE,
col.names = c("Parameter", "OR (Odds Ratio)", "Std. Error", "Statistik z", "p-value", "CI Bawah", "CI Atas")) %>%
kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
| Parameter | OR (Odds Ratio) | Std. Error | Statistik z | p-value | CI Bawah | CI Atas |
|---|---|---|---|---|---|---|
| (Intercept) | 0.0020 | 3.8029 | -1.6368 | 0.1017 | 0.0000 | 2.5179 |
| jam_belajar | 1.3059 | 0.0881 | 3.0283 | 0.0025 | 1.1172 | 1.5892 |
| ipk | 6.6503 | 1.1168 | 1.6966 | 0.0898 | 0.7920 | 67.8944 |
| kerjaBekerja | 0.4176 | 0.6775 | -1.2889 | 0.1974 | 0.1056 | 1.5951 |
ggplot(data_biner, aes(x = jam_belajar, y = lulus_tepat_waktu, color = kerja)) +
geom_jitter(height = 0.05, alpha = 0.6) +
geom_smooth(method = "glm", method.args = list(family = "binomial"), se = TRUE) +
labs(title = "Kurva Probabilitas Kelulusan Tepat Waktu",
x = "Jam Belajar per Minggu", y = "Probabilitas Lulus Tepat Waktu",
color = "Status Kerja") +
theme_minimal(base_size = 11)
Interpretasi:
Berdasarkan hasil estimasi, koefisien untuk variabel jam belajar dan IPK bernilai positif, yang berarti peningkatan jam belajar maupun IPK cenderung meningkatkan peluang mahasiswa lulus tepat waktu. Sebaliknya, status bekerja paruh waktu menunjukkan koefisien negatif, mengindikasikan bahwa mahasiswa yang bekerja memiliki peluang lulus tepat waktu yang relatif lebih rendah dibandingkan yang tidak bekerja, dengan variabel lain dikontrol konstan. Nilai odds ratio (OR) pada tabel di atas menggambarkan besarnya perubahan peluang (odds) untuk setiap satu satuan kenaikan variabel prediktor.
Data simulasi berikut menggambarkan tingkat kepuasan pelanggan terhadap layanan (kategori ordinal: “Rendah” < “Sedang” < “Tinggi”) yang diprediksi oleh usia pelanggan, pendapatan bulanan (juta rupiah), dan skor kualitas layanan (skala 1-10).
n2 <- 180
usia <- round(rnorm(n2, mean = 35, sd = 10))
pendapatan <- round(rnorm(n2, mean = 6, sd = 2), 1)
skor_layanan <- round(runif(n2, 1, 10), 1)
skor_laten <- -2 + 0.03 * usia + 0.25 * pendapatan + 0.35 * skor_layanan + rnorm(n2, 0, 1)
kepuasan <- cut(skor_laten,
breaks = quantile(skor_laten, probs = c(0, 0.33, 0.67, 1)),
labels = c("Rendah", "Sedang", "Tinggi"),
include.lowest = TRUE)
data_ordinal <- data.frame(usia, pendapatan, skor_layanan, kepuasan)
head(data_ordinal) %>%
kbl(caption = "Cuplikan Data Tingkat Kepuasan Pelanggan", booktabs = TRUE) %>%
kable_styling(latex_options = c("striped", "hold_position"), font_size = 9)
| usia | pendapatan | skor_layanan | kepuasan |
|---|---|---|---|
| 46 | 4.6 | 6.7 | Sedang |
| 38 | 6.3 | 5.2 | Sedang |
| 36 | 6.3 | 10.0 | Tinggi |
| 51 | 3.3 | 5.9 | Tinggi |
| 42 | 5.8 | 4.3 | Sedang |
| 41 | 3.8 | 3.4 | Rendah |
Model regresi logistik ordinal (proportional odds model) dinyatakan sebagai: \[ \text{logit}\big[P(Y_i \le j)\big] = \ln\left(\frac{P(Y_i \le j)}{P(Y_i > j)}\right) = \alpha_j - (\beta_1 X_{1i} + \beta_2 X_{2i} + \beta_3 X_{3i}), \quad j = 1, \dots, J-1 \] dengan \(\alpha_j\) adalah cut-point (intersep) kategori ke-\(j\), dan asumsi proportional odds (paralel garis regresi) berlaku untuk seluruh kategori.
model_ordinal <- polr(kepuasan ~ usia + pendapatan + skor_layanan,
data = data_ordinal, method = "logistic", Hess = TRUE)
summary(model_ordinal)
## Call:
## polr(formula = kepuasan ~ usia + pendapatan + skor_layanan, data = data_ordinal,
## Hess = TRUE, method = "logistic")
##
## Coefficients:
## Value Std. Error t value
## usia 0.02718 0.01579 1.722
## pendapatan 0.46635 0.08971 5.199
## skor_layanan 0.53556 0.07087 7.557
##
## Intercepts:
## Value Std. Error t value
## Rendah|Sedang 5.6350 0.9346 6.0293
## Sedang|Tinggi 7.7973 1.0302 7.5689
##
## Residual Deviance: 297.6338
## AIC: 307.6338
coef_ordinal <- coeftest_result <- summary(model_ordinal)$coefficients
p_value <- pnorm(abs(coef_ordinal[, "t value"]), lower.tail = FALSE) * 2
data.frame(
Parameter = rownames(coef_ordinal),
Estimasi = round(coef_ordinal[, "Value"], 4),
Std.Error = round(coef_ordinal[, "Std. Error"], 4),
t_value = round(coef_ordinal[, "t value"], 4),
p_value = round(p_value, 4)
) %>%
kbl(caption = "Estimasi Parameter Model Regresi Logistik Ordinal", booktabs = TRUE, row.names = FALSE) %>%
kable_styling(latex_options = c("striped", "hold_position"))
| Parameter | Estimasi | Std.Error | t_value | p_value |
|---|---|---|---|---|
| usia | 0.0272 | 0.0158 | 1.7216 | 0.0851 |
| pendapatan | 0.4664 | 0.0897 | 5.1985 | 0.0000 |
| skor_layanan | 0.5356 | 0.0709 | 7.5567 | 0.0000 |
| Rendah|Sedang | 5.6350 | 0.9346 | 6.0293 | 0.0000 |
| Sedang|Tinggi | 7.7973 | 1.0302 | 7.5689 | 0.0000 |
ggplot(data_ordinal, aes(x = skor_layanan, fill = kepuasan)) +
geom_density(alpha = 0.5) +
labs(title = "Distribusi Skor Layanan berdasarkan Tingkat Kepuasan",
x = "Skor Kualitas Layanan", y = "Densitas", fill = "Tingkat Kepuasan") +
theme_minimal(base_size = 11)
Interpretasi:
Seluruh koefisien pada model bertanda positif, menunjukkan bahwa peningkatan usia, pendapatan, dan skor kualitas layanan cenderung meningkatkan peluang pelanggan berada pada kategori kepuasan yang lebih tinggi. Nilai cut-point (\(\alpha_j\)) menunjukkan batas ambang log-odds kumulatif antar kategori kepuasan. Karena model ini mengasumsikan proportional odds, efek setiap variabel prediktor terhadap log-odds kumulatif dianggap konstan di seluruh batas kategori; asumsi ini sebaiknya diuji lebih lanjut menggunakan uji Brant pada tugas lanjutan.
Data simulasi berikut menggambarkan jumlah keluhan pelanggan per bulan di sejumlah cabang layanan, diprediksi oleh jumlah karyawan pada cabang, rata-rata jam operasional per hari, dan usia cabang (tahun).
n3 <- 100
jumlah_karyawan <- round(rnorm(n3, mean = 12, sd = 4))
jumlah_karyawan[jumlah_karyawan < 3] <- 3
jam_operasional <- round(rnorm(n3, mean = 10, sd = 2), 1)
usia_cabang <- round(runif(n3, 1, 15))
log_lambda <- 0.5 - 0.04 * jumlah_karyawan + 0.08 * jam_operasional + 0.02 * usia_cabang
lambda <- exp(log_lambda)
jumlah_keluhan <- rpois(n3, lambda = lambda)
data_poisson <- data.frame(jumlah_karyawan, jam_operasional, usia_cabang, jumlah_keluhan)
head(data_poisson) %>%
kbl(caption = "Cuplikan Data Jumlah Keluhan Pelanggan per Cabang", booktabs = TRUE) %>%
kable_styling(latex_options = c("striped", "hold_position"), font_size = 9)
| jumlah_karyawan | jam_operasional | usia_cabang | jumlah_keluhan |
|---|---|---|---|
| 9 | 9.9 | 3 | 1 |
| 10 | 13.7 | 10 | 3 |
| 17 | 9.0 | 3 | 4 |
| 6 | 11.5 | 9 | 3 |
| 12 | 10.6 | 6 | 6 |
| 10 | 14.1 | 8 | 7 |
Model regresi Poisson dengan fungsi tautan log dinyatakan sebagai: \[ \ln(\lambda_i) = \beta_0 + \beta_1 X_{1i} + \beta_2 X_{2i} + \beta_3 X_{3i} \] dengan \(Y_i \sim \text{Poisson}(\lambda_i)\) dan fungsi massa peluang: \[ P(Y_i = y_i) = \frac{e^{-\lambda_i}\lambda_i^{y_i}}{y_i!}, \quad y_i = 0, 1, 2, \dots \] Asumsi utama model ini adalah equidispersion, yaitu \(E(Y_i) = \text{Var}(Y_i) = \lambda_i\).
model_poisson <- glm(jumlah_keluhan ~ jumlah_karyawan + jam_operasional + usia_cabang,
data = data_poisson, family = poisson(link = "log"))
summary(model_poisson)
##
## Call:
## glm(formula = jumlah_keluhan ~ jumlah_karyawan + jam_operasional +
## usia_cabang, family = poisson(link = "log"), data = data_poisson)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.471604 0.380050 1.241 0.21464
## jumlah_karyawan -0.044756 0.015227 -2.939 0.00329 **
## jam_operasional 0.090483 0.028933 3.127 0.00176 **
## usia_cabang 0.009864 0.013815 0.714 0.47523
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 124.16 on 99 degrees of freedom
## Residual deviance: 105.36 on 96 degrees of freedom
## AIC: 369.03
##
## Number of Fisher Scoring iterations: 5
dispersi <- sum(residuals(model_poisson, type = "pearson")^2) / model_poisson$df.residual
cat("Rasio dispersi (Pearson Chi-Square / df):", round(dispersi, 3), "\n")
## Rasio dispersi (Pearson Chi-Square / df): 0.961
tidy(model_poisson, exponentiate = TRUE, conf.int = TRUE) %>%
mutate(across(where(is.numeric), ~round(.x, 4))) %>%
kbl(caption = "Estimasi Incidence Rate Ratio (IRR) Model Regresi Poisson", booktabs = TRUE,
col.names = c("Parameter", "IRR", "Std. Error", "Statistik z", "p-value", "CI Bawah", "CI Atas")) %>%
kable_styling(latex_options = c("striped", "hold_position", "scale_down"))
| Parameter | IRR | Std. Error | Statistik z | p-value | CI Bawah | CI Atas |
|---|---|---|---|---|---|---|
| (Intercept) | 1.6026 | 0.3800 | 1.2409 | 0.2146 | 0.7528 | 3.3407 |
| jumlah_karyawan | 0.9562 | 0.0152 | -2.9392 | 0.0033 | 0.9281 | 0.9852 |
| jam_operasional | 1.0947 | 0.0289 | 3.1273 | 0.0018 | 1.0347 | 1.1590 |
| usia_cabang | 1.0099 | 0.0138 | 0.7140 | 0.4752 | 0.9829 | 1.0376 |
ggplot(data_poisson, aes(x = jam_operasional, y = jumlah_keluhan)) +
geom_point(alpha = 0.6, color = "steelblue") +
geom_smooth(method = "glm", method.args = list(family = "poisson"), se = TRUE, color = "darkred") +
labs(title = "Hubungan Jam Operasional dan Jumlah Keluhan",
x = "Rata-rata Jam Operasional per Hari", y = "Jumlah Keluhan per Bulan") +
theme_minimal(base_size = 11)
Interpretasi:
Koefisien jumlah karyawan bertanda negatif, mengindikasikan bahwa semakin banyak karyawan pada suatu cabang, rata-rata jumlah keluhan cenderung menurun (kemungkinan karena pelayanan lebih cepat dan merata). Sebaliknya, jam operasional dan usia cabang menunjukkan koefisien positif, yang berarti cabang dengan jam operasional lebih panjang atau usia cabang lebih lama cenderung memiliki rata-rata jumlah keluhan yang lebih tinggi. Nilai Incidence Rate Ratio (IRR) menunjukkan kelipatan perubahan rata-rata jumlah keluhan untuk setiap kenaikan satu satuan variabel prediktor. Rasio dispersi yang dihitung digunakan untuk memeriksa asumsi equidispersion; jika rasio jauh lebih besar dari 1, model Poisson dapat digantikan dengan model Negative Binomial.
Data simulasi berikut menggambarkan pilihan moda transportasi utama mahasiswa menuju kampus (kategori nominal: “Motor”, “Mobil”, “Angkutan Umum”) yang diprediksi oleh jarak tempuh (km), pendapatan keluarga (juta rupiah), dan usia mahasiswa.
n4 <- 200
jarak <- round(rnorm(n4, mean = 8, sd = 4), 1)
jarak[jarak < 0.5] <- 0.5
pendapatan_kel <- round(rnorm(n4, mean = 7, sd = 3), 1)
usia_mhs <- round(rnorm(n4, mean = 20, sd = 1.5))
# skor utilitas relatif terhadap kategori referensi "Angkutan Umum"
util_motor <- 0.8 - 0.05 * jarak + 0.10 * pendapatan_kel + rnorm(n4, 0, 1)
util_mobil <- -1.0 - 0.02 * jarak + 0.35 * pendapatan_kel + rnorm(n4, 0, 1)
util_angkot <- rep(0, n4) # kategori referensi
# pilih kategori dengan utilitas tertinggi
utilitas <- cbind(Motor = util_motor, Mobil = util_mobil, `Angkutan Umum` = util_angkot)
moda <- factor(colnames(utilitas)[apply(utilitas, 1, which.max)],
levels = c("Angkutan Umum", "Motor", "Mobil"))
data_multinom <- data.frame(jarak, pendapatan_kel, usia_mhs, moda)
head(data_multinom) %>%
kbl(caption = "Cuplikan Data Pilihan Moda Transportasi Mahasiswa", booktabs = TRUE) %>%
kable_styling(latex_options = c("striped", "hold_position"), font_size = 9)
| jarak | pendapatan_kel | usia_mhs | moda |
|---|---|---|---|
| 7.9 | 5.4 | 20 | Mobil |
| 8.9 | 4.6 | 21 | Motor |
| 5.5 | 11.6 | 17 | Mobil |
| 9.2 | 9.7 | 22 | Motor |
| 9.6 | 7.4 | 20 | Mobil |
| 7.1 | 7.4 | 19 | Motor |
Model regresi logistik multinomial dengan kategori referensi \(J\) dinyatakan sebagai: \[ \ln\left(\frac{\pi_{ij}}{\pi_{iJ}}\right) = \beta_{0j} + \beta_{1j} X_{1i} + \beta_{2j} X_{2i} + \beta_{3j} X_{3i}, \quad j = 1, \dots, J-1 \] dengan \(\pi_{ij} = P(Y_i = j)\) dan kategori “Angkutan Umum” digunakan sebagai kategori referensi (\(J\)). Peluang setiap kategori dihitung sebagai: \[ \pi_{ij} = \frac{\exp(\beta_{0j} + \beta_{1j}X_{1i} + \dots)}{1 + \sum_{k=1}^{J-1}\exp(\beta_{0k} + \beta_{1k}X_{1i} + \dots)} \]
data_multinom$moda <- relevel(data_multinom$moda, ref = "Angkutan Umum")
model_multinom <- multinom(moda ~ jarak + pendapatan_kel + usia_mhs,
data = data_multinom, trace = FALSE)
summary(model_multinom)
## Call:
## multinom(formula = moda ~ jarak + pendapatan_kel + usia_mhs,
## data = data_multinom, trace = FALSE)
##
## Coefficients:
## (Intercept) jarak pendapatan_kel usia_mhs
## Motor -11.85160 0.1730826 1.037547 0.4709887
## Mobil -16.17679 0.2521549 1.370928 0.5622793
##
## Std. Errors:
## (Intercept) jarak pendapatan_kel usia_mhs
## Motor 9.504341 0.1551981 0.3558305 0.4632398
## Mobil 9.697297 0.1582580 0.3614157 0.4720168
##
## Residual Deviance: 249.66
## AIC: 265.66
z_stat <- summary(model_multinom)$coefficients / summary(model_multinom)$standard.errors
p_val <- (1 - pnorm(abs(z_stat))) * 2
rrr <- exp(summary(model_multinom)$coefficients)
koef_tbl <- as.data.frame(summary(model_multinom)$coefficients) %>%
rownames_to_column("Kategori") %>%
pivot_longer(-Kategori, names_to = "Parameter", values_to = "Estimasi")
rrr_tbl <- as.data.frame(rrr) %>%
rownames_to_column("Kategori") %>%
pivot_longer(-Kategori, names_to = "Parameter", values_to = "RRR")
p_tbl <- as.data.frame(p_val) %>%
rownames_to_column("Kategori") %>%
pivot_longer(-Kategori, names_to = "Parameter", values_to = "p_value")
full_join(koef_tbl, rrr_tbl, by = c("Kategori", "Parameter")) %>%
full_join(p_tbl, by = c("Kategori", "Parameter")) %>%
mutate(across(where(is.numeric), ~round(.x, 4))) %>%
kbl(caption = "Estimasi Koefisien dan Relative Risk Ratio (RRR) Model Multinomial", booktabs = TRUE) %>%
kable_styling(latex_options = c("striped", "hold_position"))
| Kategori | Parameter | Estimasi | RRR | p_value |
|---|---|---|---|---|
| Motor | (Intercept) | -11.8516 | 0.0000 | 0.2124 |
| Motor | jarak | 0.1731 | 1.1890 | 0.2647 |
| Motor | pendapatan_kel | 1.0375 | 2.8223 | 0.0035 |
| Motor | usia_mhs | 0.4710 | 1.6016 | 0.3093 |
| Mobil | (Intercept) | -16.1768 | 0.0000 | 0.0953 |
| Mobil | jarak | 0.2522 | 1.2868 | 0.1111 |
| Mobil | pendapatan_kel | 1.3709 | 3.9390 | 0.0001 |
| Mobil | usia_mhs | 0.5623 | 1.7547 | 0.2336 |
ggplot(data_multinom, aes(x = jarak, y = pendapatan_kel, color = moda)) +
geom_point(alpha = 0.7) +
labs(title = "Sebaran Pilihan Moda Transportasi berdasarkan Jarak dan Pendapatan",
x = "Jarak Tempuh (km)", y = "Pendapatan Keluarga (juta rupiah)",
color = "Moda Transportasi") +
theme_minimal(base_size = 11)
Interpretasi:
Model multinomial menghasilkan dua persamaan logit, masing-masing membandingkan kategori “Motor” dan “Mobil” terhadap kategori referensi “Angkutan Umum”. Koefisien pendapatan keluarga bertanda positif pada kedua persamaan, mengindikasikan bahwa semakin tinggi pendapatan keluarga, semakin besar peluang mahasiswa memilih Motor maupun Mobil dibandingkan Angkutan Umum, dengan efek yang lebih besar pada pilihan Mobil. Nilai Relative Risk Ratio (RRR) menunjukkan besarnya perubahan rasio peluang (relatif terhadap kategori referensi) untuk setiap kenaikan satu satuan variabel prediktor.
ringkasan <- data.frame(
Model = c("Regresi Logistik Biner", "Regresi Logistik Ordinal",
"Regresi Poisson", "Regresi Logistik Multinomial"),
`Skala Respon` = c("Biner (2 kategori)", "Ordinal (>2 kategori berurutan)",
"Cacahan (count)", "Nominal (>2 kategori tanpa urutan)"),
`Fungsi Tautan` = c("Logit", "Logit Kumulatif", "Log", "Logit (multi-persamaan)"),
`Fungsi R` = c("glm(family=binomial)", "polr()", "glm(family=poisson)", "multinom()")
)
ringkasan %>%
kbl(caption = "Ringkasan Perbandingan Keempat Model Regresi Data Kategorik", booktabs = TRUE) %>%
kable_styling(latex_options = c("striped", "hold_position"))
| Model | Skala.Respon | Fungsi.Tautan | Fungsi.R |
|---|---|---|---|
| Regresi Logistik Biner | Biner (2 kategori) | Logit | glm(family=binomial) |
| Regresi Logistik Ordinal | Ordinal (>2 kategori berurutan) | Logit Kumulatif | polr() |
| Regresi Poisson | Cacahan (count) | Log | glm(family=poisson) |
| Regresi Logistik Multinomial | Nominal (>2 kategori tanpa urutan) | Logit (multi-persamaan) | multinom() |
Keempat model regresi yang dibahas — biner, ordinal, Poisson, dan multinomial — masing-masing dirancang untuk struktur data respons yang berbeda. Pemilihan model yang tepat bergantung pada skala pengukuran variabel dependen: dua kategori tanpa urutan menggunakan regresi logistik biner, kategori berurutan menggunakan regresi logistik ordinal, data cacahan menggunakan regresi Poisson, dan kategori nominal lebih dari dua menggunakan regresi logistik multinomial. Pemahaman terhadap fungsi tautan (link function) dan asumsi masing-masing model sangat penting untuk memastikan interpretasi hasil yang valid.