Regresi linier klasik mengasumsikan variabel respons bersifat kontinu dan berdistribusi normal. Dalam banyak konteks nyata, asumsi ini tidak terpenuhi. Materi ini memperkenalkan empat kelas model untuk menangani respons non-kontinu:
Keempat model ini merupakan anggota dari keluarga Generalized Linear Model (GLM) yang masing-masing menggunakan fungsi penghubung (link function) yang sesuai.
Dataset yang digunakan adalah UCI Student Performance Dataset data siswa sekolah menengah di Portugal yang mencakup informasi akademik, demografis, dan perilaku.
# Membaca Data
df <- read.csv("D:\\Ester\\Analisis Data Kategori (ADK)\\html adk\\student-por.csv",
sep = ";", stringsAsFactors = TRUE)
# Cek dimensi dan nama kolom
dim(df)[1] 649 33
[1] "school" "sex" "age" "address" "famsize"
[6] "Pstatus" "Medu" "Fedu" "Mjob" "Fjob"
[11] "reason" "guardian" "traveltime" "studytime" "failures"
[16] "schoolsup" "famsup" "paid" "activities" "nursery"
[21] "higher" "internet" "romantic" "famrel" "freetime"
[26] "goout" "Dalc" "Walc" "health" "absences"
[31] "G1" "G2" "G3"
# --- PERSIAPAN VARIABEL ---
# 1. Konversi 'higher' ke faktor binary
# level = c("no","yes") → "yes" dikodekan sebagai 1 (kategori yang dimodelkan)
df$higher <- factor(df$higher, levels = c("no", "yes"))
# 2. Pastikan 'Mjob' berupa factor
df$Mjob <- as.factor(df$Mjob)
# 3. Buat variabel ordinal G3_level dari G3
# Rendah = 0–9, Sedang = 10–13, Tinggi = 14–20
df$G3_level <- cut(df$G3,
breaks = c(-1, 9, 13, 20),
labels = c("Rendah", "Sedang", "Tinggi"),
ordered = TRUE)
# 4. Cek struktur variabel kunci
str(df[, c("higher", "Mjob", "G3_level", "absences",
"Medu", "studytime", "failures",
"internet", "schoolsup", "sex", "age", "Dalc", "health")])'data.frame': 649 obs. of 13 variables:
$ higher : Factor w/ 2 levels "no","yes": 2 2 2 2 2 2 2 2 2 2 ...
$ Mjob : Factor w/ 5 levels "at_home","health",..: 1 1 1 2 3 4 3 3 4 3 ...
$ G3_level : Ord.factor w/ 3 levels "Rendah"<"Sedang"<..: 2 2 2 3 2 2 2 2 3 2 ...
$ absences : int 4 2 6 0 0 6 0 2 0 0 ...
$ Medu : int 4 1 1 4 3 4 2 4 3 3 ...
$ studytime: int 2 2 2 3 2 2 2 2 2 2 ...
$ failures : int 0 0 0 0 0 0 0 0 0 0 ...
$ internet : Factor w/ 2 levels "no","yes": 1 2 2 2 1 2 2 1 2 2 ...
$ schoolsup: Factor w/ 2 levels "no","yes": 2 1 2 1 1 1 1 2 1 1 ...
$ sex : Factor w/ 2 levels "F","M": 1 1 1 1 1 2 2 1 2 2 ...
$ age : int 18 17 15 15 16 16 16 17 15 15 ...
$ Dalc : int 1 1 2 1 1 1 1 1 1 1 ...
$ health : int 3 3 3 5 5 5 3 1 1 5 ...
Tabel 1 — Variabel yang digunakan dalam analisis
| Variabel | Tipe | Keterangan | Digunakan pada |
|---|---|---|---|
higher |
Biner (yes/no) | Ingin melanjutkan kuliah | Regresi Biner (Y) |
Mjob |
Nominal (5 kelas) | Pekerjaan ibu | Multinomial (Y) |
G3_level |
Ordinal (3 level) | Tingkatan nilai akhir G3 | Ordinal (Y) |
absences |
Count (0–75) | Jumlah ketidakhadiran | Poisson (Y) |
Medu |
Ordinal (0–4) | Pendidikan ibu | Biner, Multinomial, Ordinal |
studytime |
Ordinal (1–4) | Waktu belajar per minggu | Biner, Ordinal |
failures |
Integer (0–3) | Jumlah kegagalan kelas | Biner, Ordinal |
internet |
Biner (yes/no) | Akses internet di rumah | Multinomial |
schoolsup |
Biner (yes/no) | Dukungan sekolah ekstra | Ordinal |
sex |
Biner (F/M) | Jenis kelamin | Poisson |
age |
Numerik | Usia siswa | Poisson |
Dalc |
Ordinal (1–5) | Konsumsi alkohol harian | Poisson |
health |
Ordinal (1–5) | Tingkat kesehatan | Poisson |
Model I — Respons Biner ·
higher(yes/no)
Regresi logistik biner digunakan ketika variabel respons bersifat dikotomi (dua kategori). Model ini memodelkan log-odds (logit) probabilitas kejadian sebagai fungsi linear dari prediktor:
\[\log\left[\frac{\pi}{1-\pi}\right] = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p\]
dengan \(\pi = P(Y = 1 \mid \mathbf{x})\). Probabilitas diperoleh melalui fungsi logistik:
\[\pi = \frac{\exp(\beta_0 + \mathbf{x}'\boldsymbol{\beta})}{1 + \exp(\beta_0 + \mathbf{x}'\boldsymbol{\beta})}\]
Interpretasi koefisien menggunakan Odds Ratio (OR) = exp(β). Jika OR > 1, kenaikan prediktor meningkatkan odds kejadian; jika OR < 1, kenaikan prediktor menurunkan odds.
Variabel respons: higher (apakah siswa ingin melanjutkan
pendidikan tinggi).
Prediktor: pendidikan ibu (Medu), waktu belajar
(studytime), dan riwayat kegagalan
(failures).
# --- 1. REGRESI LOGISTIK BINER ---
fit_biner <- glm(higher ~ Medu + studytime + failures,
family = binomial(link = "logit"), data = df)
summary(fit_biner)
Call:
glm(formula = higher ~ Medu + studytime + failures, family = binomial(link = "logit"),
data = df)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.1508 0.4538 -0.332 0.739628
Medu 0.5702 0.1359 4.197 2.71e-05 ***
studytime 0.7997 0.2170 3.686 0.000228 ***
failures -0.8487 0.1614 -5.257 1.47e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 439.69 on 648 degrees of freedom
Residual deviance: 359.91 on 645 degrees of freedom
AIC: 367.91
Number of Fisher Scoring iterations: 6
(Intercept) Medu studytime failures
0.8600 1.7686 2.2249 0.4280
# Goodness-of-fit: penurunan devians
delta_dev <- fit_biner$null.deviance - fit_biner$deviance
delta_df <- fit_biner$df.null - fit_biner$df.residual
p_gof <- pchisq(delta_dev, df = delta_df, lower.tail = FALSE)
cat("Null deviance :", round(fit_biner$null.deviance, 2), "\n")Null deviance : 439.69
Residual deviance: 359.91
Delta deviance : 79.78 (df = 3 )
p-value (chi²) : <2e-16
Tabel 2 — Koefisien, OR, dan Signifikansi Model Biner (Y = higher)
| Prediktor | β̂ | SE | z | p-value | OR = exp(β̂) | Interpretasi |
|---|---|---|---|---|---|---|
| (Intercept) | −0.1508 | 0.4538 | −0.332 | 0.7396 | 0.860 | — |
Medu |
0.5702 | 0.1359 | 4.197 | <0.001 *** | 1.769 | Tiap kenaikan 1 level pendidikan ibu → odds ingin kuliah naik 76,9% |
studytime |
0.7997 | 0.2170 | 3.686 | <0.001 *** | 2.225 | Tiap kenaikan 1 level waktu belajar → odds ingin kuliah naik 122,5% |
failures |
−0.8487 | 0.1614 | −5.257 | <0.001 *** | 0.428 | Tiap tambahan 1 kegagalan → odds ingin kuliah turun 57,2% |
Interpretasi Utama:
failuresadalah prediktor terkuat (p = 1.47×10⁻⁷). Setiap tambahan satu kegagalan akademik menurunkan odds siswa ingin melanjutkan kuliah menjadi hanya 0.428 kali (turun 57,2%).studytime(OR = 2.225): siswa yang belajar lebih lama memiliki odds ingin kuliah 2,22 kali lebih besar.Medu(OR = 1.769): semakin tinggi pendidikan ibu, semakin besar dorongan anak untuk melanjutkan pendidikan. Uji penurunan devians (Δ devians, df = 3) menunjukkan model secara keseluruhan signifikan (p < 0.001).
Model II — Respons Nominal ·
Mjob(5 kategori)
Regresi logistik multinomial digunakan ketika variabel respons memiliki lebih dari dua kategori yang tidak berurutan (nominal). Menggunakan pendekatan baseline-category logit — satu kategori dipilih sebagai referensi, dan model membentuk \(K-1\) persamaan logit.
Untuk setiap kategori \(k = 1, \ldots, K-1\) terhadap kategori referensi \(K\) (Agresti, 2002):
\[\log\left[\frac{\pi_k}{\pi_K}\right] = \alpha_k + \beta_{k1} x_1 + \cdots + \beta_{kp} x_p\]
Perbandingan antar kategori non-referensi dapat diturunkan dari selisih dua logit tersebut:
\[\log\left[\frac{\pi_j}{\pi_k}\right] = \log\left[\frac{\pi_j}{\pi_K}\right] - \log\left[\frac{\pi_k}{\pi_K}\right] = (\alpha_j - \alpha_k) + (\boldsymbol{\beta}_j - \boldsymbol{\beta}_k)'\mathbf{x}\]
Koefisien diinterpretasikan sebagai perubahan log-odds memilih kategori \(k\) dibanding referensi. Jika dieksponensialkan: RRR = exp(β) (Relative Risk Ratio).
Catatan: Fungsi
multinom()dari paketnnettidak menyediakan p-value secara otomatis. Nilai signifikansi dihitung manual dengan z-test: \(z = \hat{\beta} / SE\), kemudian \(p = 2\left(1 - \Phi(|z|)\right)\).
Variabel respons: Mjob (pekerjaan ibu: at_home, health,
other, services, teacher).
Kategori referensi: “other”. Prediktor:
Medu dan internet.
# --- 2. REGRESI LOGISTIK MULTINOMIAL ---
library(nnet)
# Set kategori referensi "other"
df$Mjob <- relevel(as.factor(df$Mjob), ref = "other")
fit_multi <- multinom(Mjob ~ Medu + internet, data = df, trace = FALSE)
summary(fit_multi)Call:
multinom(formula = Mjob ~ Medu + internet, data = df, trace = FALSE)
Coefficients:
(Intercept) Medu internetyes
at_home 0.8144364 -0.5660528 -0.5645585
health -7.1446564 1.6345532 0.7458991
services -2.8171393 0.5702459 0.9128492
teacher -15.7905581 3.8682410 1.2763987
Std. Errors:
(Intercept) Medu internetyes
at_home 0.2804483 0.1249853 0.2309637
health 0.9218212 0.2353898 0.5271006
services 0.3998539 0.1135154 0.3149030
teacher 2.3790703 0.5904053 0.6114182
Residual Deviance: 1516.307
AIC: 1540.307
# Hitung p-value via Z-test: z = β̂ / SE
z_scores <- summary(fit_multi)$coefficients / summary(fit_multi)$standard.errors
p_values <- (1 - pnorm(abs(z_scores), 0, 1)) * 2
cat("--- Tabel P-Values ---\n")--- Tabel P-Values ---
(Intercept) Medu internetyes
at_home 0.0037 0 0.0145
health 0.0000 0 0.1570
services 0.0000 0 0.0037
teacher 0.0000 0 0.0368
--- Tabel Odds Ratio (RRR = exp(β̂)) ---
(Intercept) Medu internetyes
at_home 2.258 0.568 0.569
health 0.001 5.127 2.108
services 0.060 1.769 2.491
teacher 0.000 47.858 3.584
AIC model multinomial: 1540.307
Residual deviance : 1516.307
Tabel 3 — Koefisien, RRR, dan p-value Model Multinomial (referensi: other)
| Kategori | Prediktor | β̂ | SE | p-value | RRR = exp(β̂) |
|---|---|---|---|---|---|
| at_home | Medu |
−0.566 | 0.125 | <0.001 *** | 0.568 |
internet(yes) |
−0.565 | 0.231 | 0.015 * | 0.569 | |
| health | Medu |
1.635 | 0.235 | <0.001 *** | 5.127 |
internet(yes) |
0.746 | 0.527 | 0.157 | 2.108 | |
| services | Medu |
0.570 | 0.114 | <0.001 *** | 1.769 |
internet(yes) |
0.913 | 0.315 | 0.004 ** | 2.491 | |
| teacher | Medu |
3.868 | 0.590 | <0.001 *** | 47.858 |
internet(yes) |
1.276 | 0.611 | 0.037 * | 3.584 |
Interpretasi Utama:
Medumerupakan prediktor sangat signifikan di semua kategori (p < 0.001). Efek paling dramatis ada pada kategori teacher: setiap kenaikan 1 level pendidikan ibu meningkatkan odds ibu bekerja sebagai guru (vs. other) sebesar RRR = 47.86 kali. Nilai RRR yang sangat besar ini perlu dicermati — kemungkinan mencerminkan sparse data pada sel guru dengan Medu rendah, sehingga estimasi kurang stabil.internet(yes): ibu yang anaknya memiliki akses internet cenderung bekerja di sektor services (RRR = 2.49) dan teacher (RRR = 3.58) dibanding other, sedangkan odds ibu at_home lebih rendah (RRR = 0.57).
Model III — Respons Ordinal ·
G3_level(Rendah / Sedang / Tinggi)
Regresi logistik ordinal (proportional odds model) digunakan ketika variabel respons memiliki urutan alami. Model ini memodelkan log-odds kumulatif (cumulative logit).
Konvensi slide/PDF (Agresti):
\[\text{logit}\{P(Y \leq j \mid \mathbf{x})\} = \alpha_j + \mathbf{x}'\boldsymbol{\beta}, \quad j = 1, \ldots, J-1\]
Pada konvensi ini, \(\beta > 0\) berarti kenaikan prediktor meningkatkan peluang kumulatif \(P(Y \leq j)\), sehingga respons cenderung bergeser ke kategori lebih rendah. Jika \(\beta < 0\), respons cenderung bergeser ke kategori lebih tinggi.
Terdapat \(J-1\) cutpoint (\(\alpha_j\)) tetapi hanya satu vektor koefisien \(\boldsymbol{\beta}\) — ini adalah asumsi proportional odds (parallel lines). Probabilitas setiap kategori:
\[P(Y = j) = P(Y \leq j) - P(Y \leq j-1)\]
Konvensi tanda
MASS::polr()menggunakan \(\text{logit}\{P(Y \leq j)\} = \alpha_j - \mathbf{x}'\boldsymbol{\beta}\), berlawanan dengan konvensi slide. Pada outputpolr(): OR > 1 berarti prediktor mendorong ke kategori lebih tinggi (kebalikan dari konvensi slide). Untuk mengonversi ke konvensi slide: \(\hat{\beta}_{\text{slide}} = -\hat{\beta}_{\text{polr}}\). Tabel di bawah melaporkan outputpolr()apa adanya, dengan interpretasi mengikuti konvensipolr().
Variabel respons: G3_level (sudah dibuat di data-prep:
Rendah ≤9, Sedang 10–13, Tinggi ≥14).
Prediktor: studytime, failures,
schoolsup.
Ord.factor w/ 3 levels "Rendah"<"Sedang"<..: 2 2 2 3 2 2 2 2 3 2 ...
# Fit model proportional odds
fit_ord <- polr(G3_level ~ studytime + failures + schoolsup,
data = df, Hess = TRUE)
summary(fit_ord)Call:
polr(formula = G3_level ~ studytime + failures + schoolsup, data = df,
Hess = TRUE)
Coefficients:
Value Std. Error t value
studytime 0.4814 0.09705 4.960
failures -1.3293 0.16616 -8.000
schoolsupyes -0.7845 0.25245 -3.108
Intercepts:
Value Std. Error t value
Rendah|Sedang -1.4139 0.2207 -6.4063
Sedang|Tinggi 1.5701 0.2173 7.2259
Residual Deviance: 1145.768
AIC: 1155.768
# Hitung p-value dari t-value (pendekatan normal)
t_table <- as.data.frame(coef(summary(fit_ord)))
t_table$p_value <- round(2 * (1 - pnorm(abs(t_table$`t value`))), 4)
print(t_table) Value Std. Error t value p_value
studytime 0.4813945 0.09705358 4.960090 0.0000
failures -1.3293172 0.16616257 -8.000100 0.0000
schoolsupyes -0.7845421 0.25244996 -3.107713 0.0019
Rendah|Sedang -1.4138909 0.22070467 -6.406257 0.0000
Sedang|Tinggi 1.5700598 0.21728319 7.225869 0.0000
--- Odds Ratio (konvensi polr) ---
studytime failures schoolsupyes
1.6183 0.2647 0.4563
# Goodness-of-fit: penurunan devians (null vs fitted)
# Null model: hanya intercepts (cutpoints)
fit_ord_null <- polr(G3_level ~ 1, data = df, Hess = TRUE)
delta_dev_ord <- fit_ord_null$deviance - fit_ord$deviance
delta_df_ord <- length(coef(fit_ord)) # jumlah prediktor
p_ord <- pchisq(delta_dev_ord, df = delta_df_ord, lower.tail = FALSE)
cat("Devians null model :", round(fit_ord_null$deviance, 2), "\n")Devians null model : 1270.95
Devians fitted model: 1145.77
Delta devians : 125.18 (df = 3 )
p-value (chi²) : <2e-16
AIC : 1155.768
Tabel 4 — Koefisien, OR, dan p-value Model Ordinal (Y =
G3_level, konvensi polr())
| Parameter | Jenis | β̂ (polr) | β̂ (slide) | SE | t-value | p-value | OR (polr) |
|---|---|---|---|---|---|---|---|
studytime |
Koefisien | 0.4814 | −0.4814 | 0.0971 | 4.960 | <0.001 *** | 1.618 |
failures |
Koefisien | −1.3293 | 1.3293 | 0.1662 | −8.000 | <0.001 *** | 0.265 |
schoolsup(yes) |
Koefisien | −0.7845 | 0.7845 | 0.2524 | −3.108 | 0.002 ** | 0.456 |
| Rendah|Sedang | Cutpoint α₁ | −1.4139 | — | 0.2207 | −6.406 | <0.001 | — |
| Sedang|Tinggi | Cutpoint α₂ | 1.5701 | — | 0.2173 | 7.226 | <0.001 | — |
Kolom β̂ (slide) = −β̂ (polr), untuk pembanding dengan notasi materi kuliah.
Interpretasi Utama (menggunakan konvensi
polr()):
failures(OR = 0.265, p < 0.001): prediktor terkuat. Setiap tambahan satu kegagalan kelas menurunkan odds siswa berada di kategori nilai lebih tinggi menjadi hanya 0.265 kali (turun 73,5%). Dalam konvensi slide, \(\hat{\beta}_{\text{slide}} = +1.3293 > 0\), artinya failures mendorong peluang kumulatif ke kategori lebih rendah — konsisten dengan kedua konvensi.studytime(OR = 1.618): setiap kenaikan 1 level waktu belajar meningkatkan odds berada di kategori nilai lebih tinggi sebesar 61,8%.schoolsup(yes)(OR = 0.456): siswa yang menerima dukungan sekolah ekstra cenderung berada di kategori nilai lebih rendah — mencerminkan bahwa dukungan ekstra memang diberikan kepada siswa yang membutuhkan, bukan menyebabkan penurunan nilai (hubungan observasional, bukan kausal).- Uji penurunan devians keseluruhan signifikan (p < 0.001), menunjukkan ketiga prediktor secara bersama berkontribusi nyata.
Model IV — Data Hitung ·
absences(count 0–75)
Regresi Poisson digunakan untuk memodelkan variabel respons berupa data hitung (count data): \(Y_i \in \{0, 1, 2, \ldots\}\). Asumsi dasar: \(Y_i \mid \mathbf{x}_i \sim \text{Poisson}(\mu_i)\), dengan sifat equidispersion:
\[E(Y_i \mid \mathbf{x}_i) = \text{Var}(Y_i \mid \mathbf{x}_i) = \mu_i\]
Model menggunakan fungsi penghubung log:
\[\log(\mu_i) = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p\]
Koefisien diinterpretasikan melalui Incidence Rate Ratio (IRR):
\[\text{IRR}_j = \exp(\beta_j), \qquad \Delta\% = 100 \times (\text{IRR}_j - 1)\]
Jika setiap observasi memiliki periode pengamatan atau ukuran
eksposur yang berbeda, model perlu menyertakan offset
\(\log(t_i)\). Pada data ini, variabel
absences diamati dalam periode akademik yang sama untuk
seluruh siswa, sehingga offset tidak diperlukan.
Jika varians jauh melebihi mean (overdispersion), standar error Poisson akan bias ke bawah. Indikasi awal: rasio varians/mean jauh > 1.
Variabel respons: absences. Prediktor: sex,
age, Dalc, health.
# --- 4. REGRESI POISSON ---
# Cek equidispersion: mean vs varians
cat("Rata-rata absen:", round(mean(df$absences), 3), "\n")Rata-rata absen: 3.659
Varians absen : 21.537
Rasio var/mean : 5.885
# Fit model Poisson
fit_pois <- glm(absences ~ sex + age + Dalc + health,
family = poisson(link = "log"),
data = df)
summary(fit_pois)
Call:
glm(formula = absences ~ sex + age + Dalc + health, family = poisson(link = "log"),
data = df)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.94070 0.27894 -3.372 0.000745 ***
sexM -0.03866 0.04444 -0.870 0.384355
age 0.12318 0.01631 7.552 4.27e-14 ***
Dalc 0.17633 0.01979 8.910 < 2e-16 ***
health -0.02955 0.01421 -2.080 0.037515 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 3464.7 on 648 degrees of freedom
Residual deviance: 3301.3 on 644 degrees of freedom
AIC: 4684.5
Number of Fisher Scoring iterations: 6
# Incidence Rate Ratio beserta 95% CI
irr <- exp(coef(fit_pois))
ci <- exp(confint.default(fit_pois))
result <- cbind(IRR = irr, CI_low = ci[,1], CI_high = ci[,2],
Delta_pct = 100 * (irr - 1))
cat("--- IRR dengan 95% CI ---\n")--- IRR dengan 95% CI ---
IRR CI_low CI_high Delta_pct
(Intercept) 0.3904 0.2260 0.6744 -60.9645
sexM 0.9621 0.8818 1.0496 -3.7918
age 1.1311 1.0955 1.1678 13.1085
Dalc 1.1928 1.1475 1.2400 19.2835
health 0.9709 0.9442 0.9983 -2.9116
# Koreksi overdispersion: quasi-Poisson
# SE quasi-Poisson = SE Poisson × sqrt(dispersion)
fit_qpois <- glm(absences ~ sex + age + Dalc + health,
family = quasipoisson(link = "log"),
data = df)
cat("--- Perbandingan SE: Poisson vs quasi-Poisson ---\n")--- Perbandingan SE: Poisson vs quasi-Poisson ---
se_compare <- data.frame(
Poisson = round(sqrt(diag(vcov(fit_pois))), 4),
QuasiPoisson = round(sqrt(diag(vcov(fit_qpois))), 4)
)
print(se_compare) Poisson QuasiPoisson
(Intercept) 0.2789 0.6545
sexM 0.0444 0.1043
age 0.0163 0.0383
Dalc 0.0198 0.0464
health 0.0142 0.0333
Dispersion parameter (quasi-Poisson): 5.506
Overdispersion: Rata-rata absensi ≈ 3.66, varians ≈ 21.54 → rasio varians/mean ≈ 5.89, jauh di atas 1. Ini menunjukkan overdispersion yang cukup berat. SE dari model Poisson standar kemungkinan terlalu kecil (z-value terlalu besar, p-value terlalu kecil). Sebagai koreksi, hasil quasi-Poisson dilaporkan berdampingan untuk perbandingan.
Tabel 5 — Koefisien, IRR, dan p-value Model Poisson (Y = absences)
| Prediktor | β̂ | SE (Poisson) | SE (quasi) | z/t | p-value (Poisson) | IRR | Δ% |
|---|---|---|---|---|---|---|---|
| (Intercept) | −0.9407 | 0.2789 | 0.6780 | −3.372 | <0.001 *** | 0.390 | — |
sex (M) |
−0.0387 | 0.0444 | 0.1080 | −0.870 | 0.384 | 0.962 | −3.8% |
age |
0.1232 | 0.0163 | 0.0396 | 7.552 | <0.001 *** | 1.131 | +13.1% |
Dalc |
0.1763 | 0.0198 | 0.0481 | 8.910 | <0.001 *** | 1.193 | +19.3% |
health |
−0.0296 | 0.0142 | 0.0344 | −2.080 | 0.038 * | 0.971 | −2.9% |
SE quasi = SE Poisson × √dispersion. Dengan quasi-Poisson, beberapa prediktor yang tampak signifikan di Poisson standar bisa menjadi tidak signifikan.
Interpretasi Utama:
Dalc(IRR = 1.193, p < 0.001 pada Poisson): setiap kenaikan 1 level konsumsi alkohol harian meningkatkan rata-rata absensi sebesar +19.3%. Prediktor perilaku paling substantif.age(IRR = 1.131): setiap bertambah 1 tahun usia, rata-rata absensi naik +13.1%. Siswa lebih tua cenderung lebih sering absen.health(IRR = 0.971): kesehatan lebih baik dikaitkan dengan absensi lebih sedikit (−2.9%). Efek kecil namun signifikan.sex(M): tidak signifikan (p = 0.384) — jenis kelamin tidak berpengaruh nyata setelah mengendalikan variabel lain.- Perlu diperhatikan: dengan koreksi quasi-Poisson, SE meningkat sekitar √5.89 ≈ 2.4 kali lipat. Kesimpulan tentang
agedanDalckemungkinan tetap signifikan, namunhealthperlu diperiksa ulang.
AIC Biner : 367.9082
AIC Multinomial: 1540.307
AIC Ordinal : 1155.768
AIC Poisson : 4684.469
Tabel 6 — Perbandingan Keempat Model
| Model | Respons (Y) | Link | Prediktor Signifikan | Temuan Kunci |
|---|---|---|---|---|
| Biner | higher (yes/no) | logit | Medu, studytime, failures*** | Kegagalan akademik paling menghambat keinginan kuliah (OR = 0.43) |
| Multinomial | Mjob (5 kelas) | logit | Medu*** (semua); internet* (3 kategori) | Ibu guru diprediksi kuat oleh Medu (RRR = 47.9 vs other) |
| Ordinal | G3_level (3 ord.) | logit PO | studytime, failures, schoolsup** | Failures menurunkan odds nilai tinggi menjadi 0.27× |
| Poisson | absences (count) | log | age, Dalc, health* | Alkohol +1 level → absensi naik +19.3%; perhatikan overdispersion |
Across semua model, variabel failures
(riwayat kegagalan akademik) secara konsisten menjadi prediktor negatif
yang kuat — baik terhadap keinginan melanjutkan kuliah (Biner) maupun
terhadap tingkatan nilai akhir (Ordinal). Sebaliknya,
Medu (pendidikan ibu) dan
studytime (waktu belajar) secara konsisten
berhubungan positif dengan outcome akademik yang lebih baik.