Analisis model loglinear digunakan untuk memodelkan hubungan antar variabel kategorikal dalam tabel kontingensi. Studi ini menguji hubungan antara tingkat stres (Ringan, Sedang, Berat) dan kejadian insomnia (Insomnia, Tidak Insomnia).
Model loglinear dinyatakan sebagai:
\[\log(\mu_{ij}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_{ij}^{XY}\]
Di mana:
# Load package yang dibutuhkan
library(MASS) # untuk loglm()
library(knitr) # untuk tabel yang rapi
# Membuat tabel kontingensi sebagai 'table' object
# PENTING: loglm() butuh objek 'table' dengan nama dimensi yang eksplisit
data <- as.table(matrix(
c(8, 14,
40, 4,
14, 4),
nrow = 3,
byrow = TRUE,
dimnames = list(
Stres = c("Ringan", "Sedang", "Berat"),
Insomnia = c("Insomnia", "Tidak Insomnia")
)
))
# Tampilkan tabel data observasi
kable(data, caption = "Tabel Kontingensi: Tingkat Stres vs Insomnia")| Insomnia | Tidak Insomnia | |
|---|---|---|
| Ringan | 8 | 14 |
| Sedang | 40 | 4 |
| Berat | 14 | 4 |
#> Insomnia
#> Stres Insomnia Tidak Insomnia Sum
#> Ringan 8 14 22
#> Sedang 40 4 44
#> Berat 14 4 18
#> Sum 62 22 84
Model independen mengasumsikan tidak ada hubungan antara Stres dan Insomnia:
\[\log(\mu_{ij}) = \lambda + \lambda_i^X + \lambda_j^Y\]
#> Formula:
#> ~Stres + Insomnia
#> attr(,"variables")
#> list(Stres, Insomnia)
#> attr(,"factors")
#> Stres Insomnia
#> Stres 1 0
#> Insomnia 0 1
#> attr(,"term.labels")
#> [1] "Stres" "Insomnia"
#> attr(,"order")
#> [1] 1 1
#> attr(,"intercept")
#> [1] 1
#> attr(,"response")
#> [1] 0
#> attr(,".Environment")
#> <environment: R_GlobalEnv>
#>
#> Statistics:
#> X^2 df P(> X^2)
#> Likelihood Ratio 21.88809 2 1.766286e-05
#> Pearson 22.75980 2 1.142281e-05
# Frekuensi harapan (expected values) model independen
cat("=== Frekuensi Harapan - Model Independen ===\n")#> === Frekuensi Harapan - Model Independen ===
#> Re-fitting to get fitted values
| Insomnia | Tidak Insomnia | |
|---|---|---|
| Ringan | 16.2381 | 5.7619 |
| Sedang | 32.4762 | 11.5238 |
| Berat | 13.2857 | 4.7143 |
Model jenuh menyertakan efek interaksi antara Stres dan Insomnia:
\[\log(\mu_{ij}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_{ij}^{XY}\]
#> Formula:
#> ~Stres * Insomnia
#> attr(,"variables")
#> list(Stres, Insomnia)
#> attr(,"factors")
#> Stres Insomnia Stres:Insomnia
#> Stres 1 0 1
#> Insomnia 0 1 1
#> attr(,"term.labels")
#> [1] "Stres" "Insomnia" "Stres:Insomnia"
#> attr(,"order")
#> [1] 1 1 2
#> attr(,"intercept")
#> [1] 1
#> attr(,"response")
#> [1] 0
#> attr(,".Environment")
#> <environment: R_GlobalEnv>
#>
#> Statistics:
#> X^2 df P(> X^2)
#> Likelihood Ratio 0 0 1
#> Pearson 0 0 1
# Frekuensi harapan model jenuh (harus = data observasi)
cat("=== Frekuensi Harapan - Model Jenuh ===\n")#> === Frekuensi Harapan - Model Jenuh ===
kable(
round(fitted(model_jenuh), 4),
caption = "Nilai Expected (µij) - Model Jenuh (= Data Observasi)"
)#> Re-fitting to get fitted values
| Insomnia | Tidak Insomnia | |
|---|---|---|
| Ringan | 8 | 14 |
| Sedang | 40 | 4 |
| Berat | 14 | 4 |
Catatan: Pada model jenuh, nilai expected sama persis dengan data observasi (perfect fit).
# Susun tabel perbandingan
observed <- as.vector(data)
expected_indep <- as.vector(round(fitted(model_indep), 4))#> Re-fitting to get fitted values
#> Re-fitting to get fitted values
sel_label <- paste0(
rep(rownames(data), times = ncol(data)), "-",
rep(colnames(data), each = nrow(data))
)
tabel_banding <- data.frame(
Sel = sel_label,
Observed = observed,
Expected_Indep = expected_indep,
Expected_Jenuh = expected_jenuh,
Residual = round(observed - expected_indep, 4)
)
kable(
tabel_banding,
col.names = c("Sel (i,j)", "Observed", "Expected (Independen)",
"Expected (Jenuh)", "Residual"),
caption = "Perbandingan Frekuensi Observasi dan Harapan"
)| Sel (i,j) | Observed | Expected (Independen) | Expected (Jenuh) | Residual |
|---|---|---|---|---|
| Ringan-Insomnia | 8 | 16.2381 | 8 | -8.2381 |
| Sedang-Insomnia | 40 | 32.4762 | 40 | 7.5238 |
| Berat-Insomnia | 14 | 13.2857 | 14 | 0.7143 |
| Ringan-Tidak Insomnia | 14 | 5.7619 | 14 | 8.2381 |
| Sedang-Tidak Insomnia | 4 | 11.5238 | 4 | -7.5238 |
| Berat-Tidak Insomnia | 4 | 4.7143 | 4 | -0.7143 |