1 Pendahuluan

1.1 Pengertian Data Kategori dan Analisisnya

Pengertian Data Kategori
Data kategori adalah jenis data yang merepresentasikan karakteristik kualitatif dari objek pengamatan dalam bentuk kategori atau label. Tidak seperti data kuantitatif yang bersifat numerik dan dapat diukur secara kontinu, data kategori hanya menunjukkan keanggotaan suatu observasi dalam kelompok tertentu tanpa nilai numerik yang bermakna secara aritmetika.

Contoh data kategori antara lain: - Jenis kelamin: Laki-laki atau Perempuan - Status pernikahan: Menikah, Belum Menikah, Cerai - Warna favorit: Merah, Biru, Hijau

Pengertian Analisis Data Kategori
Analisis data kategori adalah serangkaian metode statistik yang digunakan untuk menggambarkan, menyimpulkan, dan memodelkan hubungan antar variabel kategorik. Karena data kategori tidak memenuhi asumsi distribusi normal dan tidak dapat digunakan dalam perhitungan seperti rata-rata atau standar deviasi, maka teknik khusus seperti tabel kontingensi, uji chi-square (\(\chi^2\)), dan regresi logistik digunakan.

Tujuan dari analisis ini adalah untuk: 1. Menguji apakah terdapat asosiasi atau ketergantungan antar variabel kategori 2. Memprediksi hasil kategori berdasarkan satu atau lebih variabel penjelas 3. Menyusun model statistika yang cocok untuk data klasifikasi

1.2 Tujuan Analisis Data Kategori

Analisis data kategori digunakan untuk memahami dan menginterpretasikan data yang bersifat diskrit dan terbagi ke dalam kelompok tertentu. Data ini lazim dijumpai dalam berbagai penelitian sosial, medis, dan bisnis. Berikut adalah tujuan utama dari analisis data kategori:

1.2.1 Mengidentifikasi Pola dan Tren

Data kategori dapat digunakan untuk melihat distribusi kategori dalam satu variabel maupun hubungan antar kategori dalam dua atau lebih variabel. Hal ini penting untuk memahami pola-pola umum atau tren yang sedang berlangsung.

1.2.2 Menganalisis Hubungan Antarvariabel

Melalui tabel kontingensi dan uji statistik seperti uji chi-square (\(\chi^2\)), kita dapat mengetahui apakah terdapat asosiasi yang signifikan antara dua variabel kategori.

1.2.3 Membantu dalam Pengambilan Keputusan

Informasi dari analisis data kategori dapat dijadikan dasar pengambilan keputusan strategis, seperti penentuan target pasar atau kebijakan publik berbasis data.

1.2.4 Mengembangkan Model Prediktif

Teknik seperti regresi logistik (\(\log \left(\frac{p}{1-p}\right)\)) digunakan untuk memprediksi probabilitas terjadinya suatu kejadian berdasarkan variabel-variabel kategori dan numerik.

1.3 Ruang Lingkup Analisis Data Kategori

1.3.1 Nominal vs Ordinal

  1. Nominal: Variabel dengan kategori tanpa urutan logis. Contoh: jenis kelamin, agama.
  2. Ordinal: Variabel dengan kategori yang memiliki urutan logis. Contoh: tingkat kepuasan (sangat puas, puas, tidak puas).

Analisis terhadap data ordinal dapat mempertimbangkan urutan kategorinya (misalnya dalam regresi logistik ordinal), sedangkan data nominal biasanya dianalisis berdasarkan frekuensi atau proporsi.

1.3.2 Data Biner vs Multikategori

  1. Biner: Variabel hanya memiliki dua kategori, seperti sukses/gagal, ya/tidak.
  2. Multikategori: Variabel memiliki lebih dari dua kategori. Misalnya: status pekerjaan (pegawai, wiraswasta, pelajar, tidak bekerja).

Analisis terhadap variabel biner sering menggunakan regresi logistik biner, sementara untuk multikategori digunakan model regresi logistik multinomial.

1.4 Perbedaan dengan Data Kuantitatif

Aspek Data Kategori Data Kuantitatif
Sifat Diskrit, kelompok Numerik, kontinu
Operasi Statistik Frekuensi, proporsi, chi-square Rata-rata, standar deviasi, regresi linear
Representasi Tabel kontingensi, bar chart Histogram, scatter plot

1.5 Manfaat Analisis Data Kategori dalam Berbagai Bidang

1.5.1 Ilmu Sosial dan Psikologi

Menilai hubungan antara latar belakang responden (gender, pendidikan, status sosial) dengan sikap atau perilaku tertentu, misalnya dalam survei opini publik atau studi perilaku konsumen.

1.5.2 Kesehatan dan Kedokteran

Menilai efektivitas pengobatan berdasarkan kategori seperti jenis kelamin, status merokok, dan riwayat penyakit menggunakan tabel kontingensi dan regresi logistik.

1.5.3 Pemasaran dan Bisnis

Analisis segmen pelanggan berdasarkan preferensi produk, tingkat kepuasan, dan respons terhadap kampanye pemasaran.

1.5.4 Pendidikan

Menghubungkan kategori prestasi belajar (tinggi/sedang/rendah) dengan metode belajar atau latar belakang siswa.

1.5.5 Kebijakan Publik dan Pemerintahan

Evaluasi program berdasarkan kelompok demografis yang berbeda: misalnya efektivitas bantuan sosial antar wilayah atau kelompok usia.

1.5.6 Keamanan dan Kriminalitas

Analisis distribusi kejahatan berdasarkan kategori waktu, tempat, jenis kejahatan, dan demografi pelaku/korban.

2 Metode dalam Analisis Data Kategori

2.1 Tabel Kontingensi dan Uji Chi-Square

2.1.1 Konsep Dasar

Tabel kontingensi adalah matriks dua arah atau lebih yang menyajikan frekuensi pengamatan untuk kombinasi kategori dari dua atau lebih variabel.

Uji Chi-Square (\(\chi^2\)) digunakan untuk menguji apakah terdapat hubungan antara dua variabel kategori.

2.1.2 Rumus Chi-Square

\[ \chi^2 = \sum \frac{(O - E)^2}{E} \] Keterangan: - \(O\): Frekuensi yang diamati (Observed) - \(E\): Frekuensi yang diharapkan (Expected)

2.1.3 Simulasi Data

set.seed(123)
mat <- matrix(c(45, 55, 30, 70), nrow = 2, byrow = TRUE,
              dimnames = list(Gender = c("Male", "Female"),
                              Response = c("Yes", "No")))
mat
##         Response
## Gender   Yes No
##   Male    45 55
##   Female  30 70
chisq.test(mat)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mat
## X-squared = 4.1813, df = 1, p-value = 0.04087

2.1.4 Interpretasi Hasil

Jika nilai p-value dari hasil uji Chi-Square lebih kecil dari tingkat signifikansi (misalnya 0.05), maka kita menolak hipotesis nol dan menyimpulkan bahwa ada hubungan antara variabel-variabel tersebut.

2.2 Regresi Logistik

2.2.1 Model dan Rumus

Regresi logistik digunakan untuk memodelkan hubungan antara satu variabel respons biner (kategori: 0 atau 1) dengan satu atau lebih variabel prediktor.

\[ \log\left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]

2.2.2 Simulasi Data

set.seed(123)
data <- data.frame(
  age = rnorm(200, 35, 10),
  gender = factor(sample(c("M", "F"), 200, replace = TRUE))
)
data$y <- rbinom(200, 1, plogis(-1 + 0.04 * data$age + ifelse(data$gender == "M", 0.6, 0)))
model <- glm(y ~ age + gender, data = data, family = "binomial")
summary(model)
## 
## Call:
## glm(formula = y ~ age + gender, family = "binomial", data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -2.05560    0.68396  -3.005 0.002652 ** 
## age          0.07084    0.01881   3.765 0.000166 ***
## genderM      0.59214    0.31947   1.854 0.063810 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 258.98  on 199  degrees of freedom
## Residual deviance: 240.77  on 197  degrees of freedom
## AIC: 246.77
## 
## Number of Fisher Scoring iterations: 3

2.2.3 Interpretasi Hasil

Koefisien dari model logistik merepresentasikan log-odds. Jika koefisien positif, maka peluang terjadinya kejadian (y = 1) meningkat seiring bertambahnya nilai prediktor.

2.3 Analisis Correspondence (CA)

2.3.1 Tujuan dan Konsep

Analisis Correspondence adalah teknik eksplorasi yang digunakan untuk memvisualisasikan hubungan antara dua atau lebih variabel kategori dalam tabel kontingensi besar.

2.3.2 Simulasi dan Visualisasi

library(ca)
## Warning: package 'ca' was built under R version 4.4.3
data(smoke)
ca_result <- ca(smoke)
plot(ca_result)

2.3.3 Interpretasi Hasil

Peta dua dimensi yang dihasilkan membantu mengidentifikasi kedekatan antara baris dan kolom dalam struktur data kategori.

2.4 Decision Tree dan Random Forest

2.4.1 Decision Tree

Decision Tree membagi data ke dalam kelompok berdasarkan nilai dari fitur input menggunakan algoritma seperti CART. Metode ini sangat berguna dalam klasifikasi data kategori.

2.4.2 Random Forest

Random Forest menggabungkan banyak decision tree untuk meningkatkan akurasi dan mengurangi overfitting dengan cara voting mayoritas.

2.4.3 Simulasi Data

library(randomForest)
set.seed(123)
data$gender <- as.factor(data$gender)
data$y <- as.factor(data$y)
rf_model <- randomForest(y ~ age + gender, data = data, ntree = 100)
print(rf_model)
## 
## Call:
##  randomForest(formula = y ~ age + gender, data = data, ntree = 100) 
##                Type of random forest: classification
##                      Number of trees: 100
## No. of variables tried at each split: 1
## 
##         OOB estimate of  error rate: 39%
## Confusion matrix:
##    0   1 class.error
## 0  6  64   0.9142857
## 1 14 116   0.1076923

2.4.4 Interpretasi Hasil

Random Forest memberikan prediksi berbasis voting mayoritas dari banyak decision tree dan sering kali memberikan akurasi lebih baik dibandingkan satu pohon keputusan.

3 Distribusi Probabilitas dalam Data Kategori

3.1 Distribusi Bernoulli

3.1.1 Konsep dan Definisi

Distribusi Bernoulli adalah distribusi probabilitas diskret yang menggambarkan suatu proses dengan dua kemungkinan hasil: sukses (1) dan gagal (0). Distribusi ini sangat cocok untuk data kategori biner.

3.1.2 Tujuan dan Manfaat

Distribusi Bernoulli digunakan untuk: - Memodelkan data dengan dua kategori, seperti lulus/gagal, ya/tidak. - Dasar untuk distribusi Binomial (karena Binomial adalah hasil penjumlahan dari beberapa Bernoulli). - Digunakan dalam evaluasi prediksi klasifikasi biner seperti True Positive/False Negative.

3.1.3 Rumus Distribusi Bernoulli

\[ P(X = x) = p^x (1 - p)^{1 - x}, \quad x \in \{0, 1\}, \quad 0 \leq p \leq 1 \] Keterangan: - \(x\): Hasil dari percobaan (0 atau 1) - \(p\): Probabilitas sukses

3.1.4 Simulasi Data

set.seed(123)
bernoulli_data <- rbinom(1000, size = 1, prob = 0.6)
table(bernoulli_data)
## bernoulli_data
##   0   1 
## 393 607

3.1.5 Interpretasi

Hasil simulasi akan menunjukkan frekuensi dari 0 dan 1. Misalnya, dengan \(p = 0.6\), maka sekitar 60% observasi akan menghasilkan 1 (sukses). Distribusi Bernoulli sangat bermanfaat dalam pengukuran hasil eksperimen atau kuesioner dengan jawaban “ya/tidak”.

3.2 Distribusi Binomial

3.2.1 Konsep dan Definisi

Distribusi Binomial adalah perpanjangan dari distribusi Bernoulli yang memodelkan jumlah keberhasilan dari \(n\) percobaan independen yang masing-masing memiliki probabilitas keberhasilan \(p\).

3.2.2 Tujuan dan Manfaat

Distribusi Binomial berguna untuk: - Menentukan peluang terjadinya \(k\) keberhasilan dalam \(n\) percobaan. - Digunakan dalam konteks uji hipotesis proporsi. - Cocok untuk mengamati kejadian seperti jumlah pelanggan yang membeli dari 10 orang yang dihubungi.

3.2.3 Rumus Distribusi Binomial

\[ P(X = k) = \binom{n}{k} p^k (1 - p)^{n - k}, \quad k = 0, 1, ..., n \]

3.2.4 Simulasi Data

set.seed(123)
binom_data <- rbinom(n = 1000, size = 10, prob = 0.5)
table(binom_data)
## binom_data
##   0   1   2   3   4   5   6   7   8   9  10 
##   2  11  43 126 200 241 213 106  48   9   1

3.2.5 Interpretasi

Distribusi hasil akan menunjukkan jumlah keberhasilan dari 10 percobaan. Misalnya, berapa banyak responden dari 10 orang yang memilih produk tertentu. Bentuk distribusinya cenderung simetris bila \(p = 0.5\) dan condong bila \(p \neq 0.5\).

3.3 Distribusi Multinomial

3.3.1 Konsep dan Definisi

Distribusi Multinomial adalah generalisasi dari distribusi Binomial di mana setiap percobaan memiliki lebih dari dua kemungkinan hasil. Cocok digunakan untuk variabel kategori yang memiliki lebih dari dua kelas.

3.3.2 Tujuan dan Manfaat

  • Menghitung probabilitas gabungan dari berbagai kategori.
  • Digunakan dalam survei opini publik, eksperimen dengan lebih dari dua opsi, klasifikasi multiclass.
  • Sering digunakan sebagai model dasar dalam regresi logistik multinomial.

3.3.3 Rumus Distribusi Multinomial

\[ P(X_1 = x_1, ..., X_k = x_k) = \frac{n!}{x_1!x_2!...x_k!} p_1^{x_1} \cdots p_k^{x_k} \] Keterangan: - \(x_i\): jumlah observasi pada kategori ke-\(i\) - \(p_i\): probabilitas kategori ke-\(i\) - \(\sum x_i = n\), \(\sum p_i = 1\)

3.3.4 Simulasi Data

set.seed(123)
multi_data <- rmultinom(n = 1, size = 100, prob = c(0.4, 0.35, 0.25))
dimnames(multi_data) <- list(c("A", "B", "C"), NULL)
multi_data
##   [,1]
## A   39
## B   36
## C   25

3.3.5 Interpretasi

Hasil simulasi menggambarkan jumlah responden yang memilih masing-masing dari tiga kategori. Misalnya, dalam survei politik: 40 orang ke Partai A, 35 ke B, dan 25 ke C dari 100 responden.

3.4 Distribusi Poisson

3.4.1 Konsep dan Definisi

Distribusi Poisson digunakan untuk memodelkan jumlah kejadian dalam interval waktu atau ruang tertentu dengan asumsi kejadian bersifat independen dan rata-rata kejadian (\(\lambda\)) diketahui.

3.4.2 Tujuan dan Manfaat

  • Memprediksi jumlah kejadian langka dalam waktu atau ruang tertentu.
  • Cocok digunakan untuk analisis klaim asuransi, panggilan telepon ke call center, jumlah pasien datang ke UGD.

3.4.3 Rumus Distribusi Poisson

\[ P(X = k) = \frac{e^{-\lambda} \lambda^k}{k!}, \quad k = 0, 1, 2, ... \]

3.4.4 Simulasi Data

set.seed(123)
poisson_data <- rpois(100, lambda = 3)
table(poisson_data)
## poisson_data
##  0  1  2  3  4  5  6  7  8 
##  5 14 24 20 22  9  4  1  1

3.4.5 Interpretasi

Distribusi ini memodelkan “jumlah” kejadian dalam unit waktu. Misalnya, jumlah pelanggan datang per jam adalah sekitar rata-rata 3, tetapi bisa jadi 1 atau 5 secara acak.

4 Desain Sampling dalam Analisis Data Kategori

Desain sampling adalah langkah awal yang penting dalam suatu penelitian, khususnya pada tahap pengumpulan data. Tujuan utamanya adalah memastikan data yang terkumpul dapat memberikan gambaran yang akurat tentang populasi yang diteliti.

Dalam konteks analisis data kategori, desain sampling berfokus pada metode yang digunakan untuk memilih sampel dari populasi. Sampel yang dipilih dengan cara yang tepat diharapkan dapat mewakili populasi secara keseluruhan. Oleh karena itu, pemilihan sampel yang benar menjadi faktor kunci dalam menjamin keabsahan dan keandalan hasil analisis yang diperoleh.

Pada umumnya, desain sampling untuk analisis data kategori dapat dibagi dalam dua kategori utama, yaitu prospective sampling dan retrospective sampling. Masing-masing pendekatan ini memiliki ciri khas dan cara pemilihan sampel yang berbeda-beda.

4.1 Prospective Sampling

Prospective sampling adalah metode pengambilan sampel di mana peneliti memantau partisipan dari waktu sekarang ke masa depan untuk mencatat kejadian atau hasil tertentu. Metode ini umumnya digunakan dalam penelitian longitudinal atau studi kohort prospektif. Dalam pendekatan ini, data dikumpulkan seiring berjalannya waktu untuk mengamati perkembangan kejadian yang relevan.

Beberapa tipe desain sampling dalam pendekatan ini meliputi:

4.1.1 Eksperimen

Dalam penelitian eksperimental, pemilihan subjek dilakukan secara acak untuk dimasukkan ke dalam kelompok perlakuan atau kelompok kontrol. Beberapa teknik sampling yang umum digunakan dalam pendekatan ini antara lain:

  1. Simple Random Sampling (SRS): Setiap individu dalam populasi memiliki peluang yang sama untuk terpilih.
  2. Stratified Random Sampling: Populasi dibagi ke dalam beberapa kelompok berdasarkan karakteristik tertentu, dan kemudian sampel dipilih secara acak dari setiap kelompok tersebut.
  3. Cluster Sampling: Populasi dibagi menjadi beberapa kelompok (cluster), kemudian beberapa kelompok dipilih secara acak untuk dianalisis lebih lanjut.

4.1.2 Studi Kohort

Studi kohort merupakan jenis penelitian observasional di mana sekelompok individu (kohort) dengan karakteristik tertentu diikuti selama periode waktu yang ditentukan untuk mengamati pengaruh paparan (exposure) terhadap kejadian hasil tertentu, seperti penyakit, perilaku, atau kondisi lainnya. Beberapa teknik sampling yang umum digunakan dalam studi kohort adalah:

  1. Census Sampling: Semua individu dalam populasi yang relevan dilibatkan dalam penelitian.
  2. Systematic Sampling: Subjek dipilih berdasarkan interval tertentu dari daftar populasi yang ada.
  3. Matched Sampling: Setiap individu dalam kelompok kohort dipasangkan dengan individu dari kelompok lain yang memiliki karakteristik serupa berdasarkan variabel tertentu.

4.2 Retrospective Sampling

Retrospective sampling merupakan metode pengambilan sampel di mana peneliti menganalisis data yang telah terjadi sebelumnya untuk mengidentifikasi subjek berdasarkan hasil (outcome) yang sudah tercatat, kemudian melacak paparan (exposure) atau faktor penyebab yang berhubungan dengan hasil tersebut di masa lalu.

4.2.1 Studi Kasus-Kontrol

Dalam penelitian studi kasus-kontrol, individu dengan kondisi tertentu dibandingkan dengan individu yang tidak memiliki kondisi tersebut. Beberapa teknik sampling yang sering digunakan antara lain:

  1. Purposive Sampling: Pemilihan sampel didasarkan pada karakteristik yang relevan dengan tujuan penelitian.
  2. Snowball Sampling: Responden pertama merekrut subjek lainnya yang memiliki karakteristik serupa.
  3. Incidence Density Sampling: Kasus dan kontrol dipilih dari populasi yang sama, dengan mempertimbangkan periode waktu saat kasus terjadi.

4.2.2 Studi Kohort Retrospektif

Studi kohort retrospektif menggunakan data masa lalu untuk mengelompokkan individu berdasarkan paparan yang telah terjadi, dan kemudian menganalisis hasil yang muncul. Beberapa teknik sampling yang umum digunakan antara lain:

  1. Convenience Sampling: Pemilihan subjek didasarkan pada ketersediaan data yang sudah ada.
  2. Quota Sampling: Sampel dipilih untuk mencerminkan proporsi tertentu dalam populasi.
  3. Case-Based Sampling: Sampel dipilih berdasarkan karakteristik dari kasus yang telah terjadi.

5 Tabel Kontingensi 2 x 2

Tabel kontingensi 2x2 digunakan untuk menampilkan data kategorik dari dua variabel, di mana masing-masing variabel memiliki dua kategori. Tabel ini sangat berguna dalam menganalisis hubungan atau asosiasi antara dua variabel, seperti dalam uji chi-kuadrat atau untuk menghitung risiko relatif (relative risk), perbedaan risiko (risk difference), dan odds ratio.

Struktur umumnya adalah sebagai berikut:

Kategori B1 Kategori B2 Total
Kategori A1 a b a + b
Kategori A2 c d c + d
Total a + c b + d n

5.1 Distribusi Peluang dalam Tabel Kontingensi 2x2

5.1.1 Peluang Bersama

Peluang bersama mengacu pada probabilitas bahwa kedua variabel muncul secara bersamaan dalam sebuah sel tabel kontingensi:

\[ P(A_i, B_j) = \frac{n_{ij}}{n} \]


5.1.2 Peluang Marginal

Peluang marginal merujuk pada probabilitas terjadinya suatu variabel tanpa memperhatikan variabel lainnya.

  • Peluang marginal untuk baris:

\[ P(A_i) = \frac{n_{i.}}{n} \]

  • Peluang marginal untuk kolom:

\[ P(B_j) = \frac{n_{.j}}{n} \]

5.1.3 Peluang Bersyarat

Peluang bersyarat mengacu pada probabilitas terjadinya suatu kejadian dengan asumsi bahwa kejadian lain sudah terjadi:

\[ P(B_j | A_i) = \frac{P(A_i, B_j)}{P(A_i)} = \frac{n_{ij}}{n_{i.}} \]

5.1.4 Contoh Penerapannya dalam Studi Kasus

Misalkan kita memiliki tabel yang menggambarkan hubungan antara jenis diet dan keberhasilan penurunan berat badan pada sekelompok individu.

Weight Loss Successful Weight Loss Unsuccessful Total
Low-Carb Diet 35 5 40
Low-Fat Diet 25 15 40
Total 60 20 80

Sumber: Adaptasi dari data yang dipublikasikan dalam studi “Effectiveness of Low-Carb vs Low-Fat Diets”, American Journal of Clinical Nutrition, 2020.

5.1.4.1 Contoh Perhitungan Manual

Langkah 1 : Hitung Peluang Bersama

Peluang bersama adalah probabilitas bahwa kedua variabel terjadi secara bersamaan dalam suatu sel tabel kontingensi. Berdasarkan tabel di atas, kita dapat menghitung peluang bersama untuk masing-masing kategori:

  • \[P(\text{Low-Carb, Success}) = \frac{35}{80} = 0.4375\]
  • \[P(\text{Low-Carb, Unsuccessful}) = \frac{5}{80} = 0.0625\]
  • \[P(\text{Low-Fat, Success}) = \frac{25}{80} = 0.3125\]
  • \[P(\text{Low-Fat, Unsuccessful}) = \frac{15}{80} = 0.1875\]

Langkah 2 : Hitung Peluang Marginal

Peluang marginal adalah probabilitas kejadian suatu variabel tanpa mempertimbangkan variabel lainnya. Berikut adalah perhitungan peluang marginal untuk setiap kategori:

  • \[P(\text{Low-Carb}) = \frac{40}{80} = 0.5000\]
  • \[P(\text{Low-Fat}) = \frac{40}{80} = 0.5000\]
  • \[P(\text{Weight Loss Successful}) = \frac{60}{80} = 0.7500\]
  • \[P(\text{Weight Loss Unsuccessful}) = \frac{20}{80} = 0.2500\]

Langkah 3 : Hitung Peluang Bersyarat

Peluang bersyarat adalah probabilitas suatu kejadian terjadi dengan syarat kejadian lain telah terjadi. Berikut adalah perhitungan peluang bersyarat untuk setiap kategori:

  • \[ P(\text{Success}|\text{Low-Carb}) = \frac{35}{40} = 0.8750 \]

  • \[ P(\text{Success}|\text{Low-Fat}) = \frac{25}{40} = 0.6250 \]

  • \[ P(\text{Unsuccessful}|\text{Low-Carb}) = \frac{5}{40} = 0.1250 \]

  • \[ P(\text{Unsuccessful}|\text{Low-Fat}) = \frac{15}{40} = 0.3750 \]

Dengan langkah-langkah di atas, kita telah berhasil menghitung peluang bersama, peluang marginal, dan peluang bersyarat berdasarkan tabel data yang diberikan.

5.1.4.2 Perhitungan dengan R

# Data
data <- matrix(c(35, 5, 25, 15), nrow = 2, byrow = TRUE)
colnames(data) <- c("Weight Loss Successful", "Weight Loss Unsuccessful")
rownames(data) <- c("Low-Carb Diet", "Low-Fat Diet")
n <- sum(data)

# Peluang Bersama
p_bersama <- data / n

# Peluang Marginal
p_marginal_baris <- rowSums(data) / n
p_marginal_kolumn <- colSums(data) / n

# Peluang Bersyarat
p_bersyarat <- data / rowSums(data)

# Hasil
list(Peluang_Bersama = p_bersama, 
     Peluang_Marginal_Baris = p_marginal_baris, 
     Peluang_Marginal_Kolumn = p_marginal_kolumn, 
     Peluang_Bersyarat = p_bersyarat)
## $Peluang_Bersama
##               Weight Loss Successful Weight Loss Unsuccessful
## Low-Carb Diet                 0.4375                   0.0625
## Low-Fat Diet                  0.3125                   0.1875
## 
## $Peluang_Marginal_Baris
## Low-Carb Diet  Low-Fat Diet 
##           0.5           0.5 
## 
## $Peluang_Marginal_Kolumn
##   Weight Loss Successful Weight Loss Unsuccessful 
##                     0.75                     0.25 
## 
## $Peluang_Bersyarat
##               Weight Loss Successful Weight Loss Unsuccessful
## Low-Carb Diet                  0.875                    0.125
## Low-Fat Diet                   0.625                    0.375

Intepretasi : Jika kita membandingkan hasil peluang bersyarat, kita dapat melihat bahwa \(P(\text{Weight Loss Successful}|\text{Low-Carb Diet})\) lebih besar daripada \(P(\text{Weight Loss Successful}|\text{Low-Fat Diet})\), yang menunjukkan bahwa diet rendah karbohidrat memiliki tingkat keberhasilan yang lebih tinggi dibandingkan dengan diet rendah lemak dalam membantu penurunan berat badan.

5.2 Ukuran Asosiasi dalam Data Kategori 2 x 2

Ukuran asosiasi dalam analisis data kategorik digunakan untuk mengukur kekuatan hubungan antara dua variabel kategorik. Ini penting untuk mengetahui apakah hubungan yang ada signifikan dan seberapa kuat hubungan tersebut. Berikut adalah beberapa ukuran asosiasi yang umum digunakan:

5.2.1 Perbedaan Risiko (Risk Difference/RD)

Risk Difference (RD), yang juga dikenal sebagai Pengurangan Risiko Absolut, digunakan untuk mengukur selisih antara tingkat risiko dua kelompok. Nilai RD menunjukkan perbedaan proporsi kejadian antara kelompok yang terpapar dan yang tidak terpapar.

Rumus:

\[ RD = \frac{a}{a + b} - \frac{c}{c + d} \]

Keterangan: - Jika \(RD > 0\), maka risiko kejadian lebih tinggi pada Grup 1 dibandingkan dengan Grup 2. - Jika \(RD < 0\), maka risiko kejadian lebih rendah pada Grup 1 dibandingkan dengan Grup 2. - Jika \(RD = 0\), maka tidak ada perbedaan risiko antara dua kelompok.

5.2.2 Risiko Relatif (Relative Risk / RR)

Relative Risk (RR) digunakan untuk membandingkan kemungkinan terjadinya suatu kejadian pada kelompok yang terpapar dibandingkan dengan kelompok yang tidak terpapar.

Rumus:

\[ RR = \frac{a / (a + b)}{c / (c + d)} \]

Keterangan: - Jika \(RR > 1\), maka kejadian lebih sering terjadi pada Grup 1 dibandingkan Grup 2. - Jika \(RR < 1\), maka kejadian lebih jarang terjadi pada Grup 1 dibandingkan Grup 2. - Jika \(RR = 1\), maka tidak ada perbedaan antara kedua kelompok.

5.2.3 Odds Ratio (OR)

Odds Ratio digunakan untuk membandingkan peluang terjadinya suatu kejadian antara dua kelompok. Biasanya digunakan dalam studi kasus-kontrol.

Rumus:

\[ OR = \frac{a \cdot d}{b \cdot c} \]

Keterangan: - Jika \(OR > 1\), maka peluang kejadian lebih besar pada Grup 1 dibandingkan Grup 2. - Jika \(OR < 1\), maka peluang kejadian lebih kecil pada Grup 1 dibandingkan Grup 2. - Jika \(OR = 1\), maka tidak ada perbedaan peluang kejadian antara kedua kelompok.

5.2.4 Contoh Aplikasi dalam Studi Kasus

Misalkan kita memiliki data yang menunjukkan hubungan antara dua jenis diet (Low-Carb Diet dan Low-Fat Diet) dengan keberhasilan penurunan berat badan pada sekelompok orang. Berikut adalah tabel kontingensi 2x2 untuk data tersebut:

Weight Loss Successful Weight Loss Unsuccessful Total
Low-Carb Diet 35 5 40
Low-Fat Diet 25 15 40
Total 60 20 80

Sumber: Adaptasi dari studi “Effectiveness of Low-Carb vs Low-Fat Diets”, American Journal of Clinical Nutrition, 2020.

5.2.4.1 Perhitungan Manual

Langkah pertama adalah menghitung Risk Difference (RD), Relative Risk (RR), dan Odds Ratio (OR) menggunakan rumus yang telah disebutkan sebelumnya.

Perhitungan Risk Difference (RD):

\[ RD = \frac{35}{35 + 5} - \frac{25}{25 + 15} = \frac{35}{40} - \frac{25}{40} = 0.875 - 0.625 = 0.25 \]

Perhitungan Relative Risk (RR):

\[ RR = \frac{\frac{35}{40}}{\frac{25}{40}} = \frac{0.875}{0.625} = 1.4 \]

Perhitungan Odds Ratio (OR):

\[ OR = \frac{35 \cdot 15}{5 \cdot 25} = \frac{525}{125} = 4.2 \]

5.2.4.2 Contoh Perhitungan dengan R

# Data
a <- 35
b <- 5
c <- 25
d <- 15

# Risk Difference
RD <- (a / (a + b)) - (c / (c + d))

# Relative Risk
RR <- (a / (a + b)) / (c / (c + d))

# Odds Ratio
OR <- (a * d) / (b * c)

# Hasil
list(Risk_Difference = RD, Relative_Risk = RR, Odds_Ratio = OR)
## $Risk_Difference
## [1] 0.25
## 
## $Relative_Risk
## [1] 1.4
## 
## $Odds_Ratio
## [1] 4.2

Intepretasi :

  • RD = 0.25 → menunjukkan bahwa orang yang mengikuti Low-Carb Diet memiliki kemungkinan 25% lebih tinggi untuk berhasil menurunkan berat badan dibandingkan dengan mereka yang mengikuti Low-Fat Diet.
  • RR = 1.4 → menunjukkan bahwa orang yang mengikuti Low-Carb Diet memiliki 1.4 kali lebih besar kemungkinan untuk berhasil menurunkan berat badan dibandingkan dengan orang yang mengikuti Low-Fat Diet.
  • OR = 4.2 → menunjukkan bahwa peluang seseorang yang mengikuti Low-Carb Diet untuk berhasil menurunkan berat badan adalah 4.2 kali lebih besar dibandingkan mereka yang mengikuti Low-Fat Diet.

6 Inferensi Tabel Kontingensi Dua Arah

6.1 Estimasi

6.1.1 Estimasi Titik

Estimasi titik dalam konteks data kategori, khususnya dalam tabel kontingensi dua arah, biasanya ditujukan untuk menghitung proporsi atau odds ratio dari kategori tertentu.

Contoh: \[ \hat{p} = \frac{x}{n} \] Dimana: - \(x\) = jumlah kejadian kategori yang diamati - \(n\) = total sampel

6.1.2 Estimasi Interval

Untuk membuat estimasi yang mencerminkan ketidakpastian pengukuran, interval kepercayaan digunakan. Salah satu metode yang umum digunakan adalah interval kepercayaan Wald:

\[ \hat{p} \pm Z_{1-\alpha/2} \cdot \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}} \]

Namun untuk nilai \(p\) mendekati 0 atau 1, metode Wilson Score atau Clopper-Pearson lebih direkomendasikan karena lebih akurat.


6.2 Uji Hipotesis

6.2.1 Uji Proporsi

Digunakan untuk menguji apakah proporsi kategori tertentu berbeda dengan nilai yang ditentukan.

Hipotesis: - \(H_0: p = p_0\) - \(H_1: p \neq p_0\)

Statistik uji: \[ Z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1 - p_0)}{n}}} \]

6.2.2 Uji Asosiasi

Untuk mengevaluasi apakah dua variabel kategori saling terkait dalam tabel kontingensi.

Statistik Chi-Square: \[ \chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

  • \(O_{ij}\) = frekuensi yang diamati pada sel ke-(i,j)
  • \(E_{ij}\) = frekuensi yang diharapkan jika tidak ada asosiasi

Contoh kode simulasi:

observed <- matrix(c(30, 10, 20, 40), nrow = 2)
chisq.test(observed)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  observed
## X-squared = 15.042, df = 1, p-value = 0.0001052

6.2.3 Uji Independensi

Sama seperti uji asosiasi, namun khusus difokuskan untuk memverifikasi ketergantungan antar variabel kategori dalam tabel kontingensi.

Jika p-value < 0.05, maka hipotesis nol ditolak dan kedua variabel dikatakan tidak independen (ada hubungan).

Kelebihan uji ini: - Umum digunakan dalam data survei dan eksperimen sosial - Memberikan insight dasar sebelum membangun model log-linear

6.3 Analisis Residual dalam Tabel Kontingensi

6.3.1 Jenis Residual

Analisis residual berguna untuk mengetahui sel mana dalam tabel kontingensi yang menyumbang paling besar terhadap statistik uji.

Jenis residual: - Residual mentah: \[ R_{ij} = O_{ij} - E_{ij} \] - Pearson Residual: \[ r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}} \] - Standardized residual (Z-score-like)

Jika nilai residual besar (positif atau negatif), maka sel tersebut menyimpang secara signifikan dari ekspektasi.

6.3.2 Deteksi Outlier dalam Analisis Data Kategori Menggunakan Residual

Dengan menganalisis residual, kita dapat mendeteksi anomali (outlier) dalam distribusi kategori.

Contoh:

model <- chisq.test(matrix(c(50, 20, 30, 40), nrow = 2))
model$observed
##      [,1] [,2]
## [1,]   50   30
## [2,]   20   40
model$expected
##      [,1] [,2]
## [1,]   40   40
## [2,]   30   30
model$residuals
##           [,1]      [,2]
## [1,]  1.581139 -1.581139
## [2,] -1.825742  1.825742

Jika residual > 2 atau < -2, maka kemungkinan besar sel tersebut adalah kontributor signifikan terhadap ketidaksesuaian model.

7. Tabel Kontingensi Tiga Arah

Bab ini akan mengupas secara mendalam tentang tabel kontingensi tiga arah, termasuk pembahasan mengenai tabel parsial dan marginal, ukuran asosiasi, paradoks Simpson, independensi bersyarat, serta asosiasi homogen. Setiap topik dilengkapi dengan contoh perhitungan manual dan implementasi dalam R.

Tabel kontingensi tiga arah merupakan pengembangan dari tabel kontingensi dua arah yang digunakan untuk menganalisis hubungan antara tiga variabel kategori secara bersamaan. Dalam beberapa kasus, hubungan antara dua variabel (misalnya X dan Y) bisa dipengaruhi oleh variabel ketiga Z, yang dikenal sebagai variabel kontrol atau kovariat. Tabel ini umumnya digunakan dalam analisis data yang melibatkan faktor-faktor pengganggu yang dapat memengaruhi hubungan antara dua variabel utama. Sebagai contoh:

Tabel kontingensi tiga arah umumnya dibagi menjadi dua jenis, yaitu:

  1. Tabel Parsial: Tabel yang menampilkan hubungan antara X dan Y di setiap kategori Z. Ini memungkinkan analisis yang memperhitungkan efek Z, sehingga memberikan pemahaman yang lebih mendalam tentang hubungan yang bersyarat.

  2. Tabel Marginal: Tabel yang dihasilkan dengan mengabaikan variabel Z, yaitu dengan menjumlahkan seluruh kategori Z. Ini memberikan gambaran umum hubungan antara X dan Y tanpa mempertimbangkan Z. Namun, analisis dengan tabel marginal sering kali dapat mengarah pada distorsi interpretasi, seperti yang terlihat pada Paradoks Simpson.

Kegunaan Tabel Marginal

Tabel marginal berguna untuk melihat pola asosiasi secara keseluruhan tanpa memperhitungkan variabel kontrol. Namun, dalam banyak kasus, tabel marginal mungkin tidak memberikan gambaran yang akurat karena mengabaikan efek yang dimiliki oleh variabel Z. Oleh karena itu, untuk mendapatkan hasil yang lebih tepat dan mendalam, analisis yang melibatkan tabel parsial biasanya lebih disarankan dalam penelitian ilmiah.

7.1. Tabel Parsial dan Marginal

Tabel parsial adalah tabel yang mengelompokkan𝑋dan𝑌berdasarkan setiap level 𝑍, sedangkan tabel marginal adalah tabel yang mengabaikan𝑍,dengan menjumlahkan data dari semua level𝑍.

Contoh :

Tabel berikut menunjukkan data mengenai peristiwa pertama kali melakukan hubungan seksual pada remaja berusia 15 dan 16 tahun berdasarkan ras dan jenis kelamin.

Ras Jenis Kelamin Ya (Intercourse) Tidak (No)
Putih Laki-laki 43 134
Putih Perempuan 26 149
Hitam Laki-laki 29 23
Hitam Perempuan 22 36

Sumber: S. P. Morgan dan J. D. Tenchman, J.{Marriage Fam.} 50: 929–936 (1988). Dicetak kembali dengan izin dari National Council on Family Relations.

7.1.1 Tabel Parsial

Membuat Tabel Parsial

Tabel frekuensi parsial menyajikan hubungan antara dua variabel kategori dalam tabel kontingensi tiga arah dengan mempertimbangkan satu variabel sebagai kontrol. Tabel ini membantu dalam menambah hubungan bersyarat antara variabel dalam analisis data kategori.

Tabel Frekuensi Parsial untuk Z (Ras) = Putih:

Jenis Kelamin Ya (Intercourse) Tidak (No)
Laki-laki 43 134
Perempuan 26 149

Tabel Frekuensi Parsial untuk Z (Ras) = Putih menunjukkan hubungan antara jenis kelamin dan apakah individu tersebut sudah atau belum melakukan hubungan seksual.

Tabel Frekuensi Parsial untuk Z (Ras) = Hitam:

Jenis Kelamin Ya (Intercourse) Tidak (No)
Laki-laki 29 23
Perempuan 22 36

Tabel Frekuensi Parsial untuk Z (Ras) = Hitam menunjukkan hubungan antara jenis kelamin dan apakah individu tersebut sudah atau belum melakukan hubungan seksual pada kelompok ras Hitam.

Membuat Tabel Parsial Menggunakan R

# Membuat data dengan array
data3 <- array(
  c(43, 26, 134, 149, 29, 22, 23, 36), 
  dim = c(2, 2, 2), 
  dimnames = list(
    Jenis_Kelamin = c("Laki-laki", "Perempuan"),
    Intercourse = c("Ya", "Tidak"),
    Ras = c("Putih", "Hitam")
  )
)

# Tampilkan array untuk memastikan datanya
data3
## , , Ras = Putih
## 
##              Intercourse
## Jenis_Kelamin Ya Tidak
##     Laki-laki 43   134
##     Perempuan 26   149
## 
## , , Ras = Hitam
## 
##              Intercourse
## Jenis_Kelamin Ya Tidak
##     Laki-laki 29    23
##     Perempuan 22    36
# Ekstrak tabel frekuensi parsial berdasarkan ras
freq_parsial_putih <- data3[, , "Putih"]
freq_parsial_hitam <- data3[, , "Hitam"]

# Tampilkan hasil frekuensi parsial
freq_parsial_putih
##              Intercourse
## Jenis_Kelamin Ya Tidak
##     Laki-laki 43   134
##     Perempuan 26   149
freq_parsial_hitam
##              Intercourse
## Jenis_Kelamin Ya Tidak
##     Laki-laki 29    23
##     Perempuan 22    36

7.1.2. Tabel Marginal

Tabel frekuensi marginal menampilkan jumlah total observasi untuk setiap variabel dengan mengabaikan variabel lainnya dalam tabel kontingensi tiga arah. Tabel ini membantu dalam memahami distribusi kategori secara agregat tanpa mempertimbangkan hubungan antarvariabel. Tabel frekuensi marginal dihitung dengan menjumlahkan frekuensi dari tabel kontingensi tiga arah berdasarkan variabel yang tersisa.

Membuat Tabel Marginal

abel Frekuensi Marginal untuk Ras dan Intercourse

Ras Yes No Total
White 69 283 352
Black 51 59 110
Total 120 342 462

Tabel Frekuensi Marginal untuk Gender dan Intercourse

Gender Yes No Total
Male 72 157 229
Female 48 185 233
Total 120 342 462

Membuat Tabel Marginal Menggunakan R

# Membuat data dengan array
data3 <- array(
  c(43, 26, 134, 149, 29, 22, 23, 36), 
  dim = c(2, 2, 2), 
  dimnames = list(
    Jenis_Kelamin = c("Laki-laki", "Perempuan"),
    Intercourse = c("Ya", "Tidak"),
    Ras = c("Putih", "Hitam")
  )
)

# Tampilkan array untuk memastikan datanya
data3
## , , Ras = Putih
## 
##              Intercourse
## Jenis_Kelamin Ya Tidak
##     Laki-laki 43   134
##     Perempuan 26   149
## 
## , , Ras = Hitam
## 
##              Intercourse
## Jenis_Kelamin Ya Tidak
##     Laki-laki 29    23
##     Perempuan 22    36
# Ekstrak tabel frekuensi parsial berdasarkan ras
freq_marginal_X<-apply(data3,1,sum)
freq_marginal_Z<-apply(data3,3,sum)

# Tampilkan hasil frekuensi parsial
freq_marginal_X
## Laki-laki Perempuan 
##       229       233
freq_marginal_Z
## Putih Hitam 
##   352   110

7.2. Distribusi Peluang

Misalkan

Tabel berikut menunjukkan data mengenai peristiwa pertama kali melakukan hubungan seksual pada remaja berusia 15 dan 16 tahun berdasarkan ras dan jenis kelamin.

Ras Jenis Kelamin Ya (Intercourse) Tidak (No)
Putih Laki-laki 43 134
Putih Perempuan 26 149
Hitam Laki-laki 29 23
Hitam Perempuan 22 36

Sumber: S. P. Morgan dan J. D. Tenchman, J.{Marriage Fam.} 50: 929–936 (1988). Dicetak kembali dengan izin dari National Council on Family Relations.

7.2.1. Peluang Bersama

Peluan bersama didefinisikan sebagai:

\[ P(Z, X, Y) = \frac{f(Z, X, Y)}{N} \] Contoh Perhitungan dengan Data diatas

# Load library yang diperlukan
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:randomForest':
## 
##     combine
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Data dalam format array 3D
data <- array(
  c(43, 26, 134, 149,  # Putih
    29, 22, 23, 36), # Hitam
  dim = c(2, 2, 2),
  dimnames = list(
    "Jenis Kelamin" = c("Lelaki", "Perempuan"),
    "Intercouse" = c("Ya", "Tidak"),
    "Ras" = c("Putih", "Hitam")
  )
)

# Menampilkan tabel
print(data)
## , , Ras = Putih
## 
##              Intercouse
## Jenis Kelamin Ya Tidak
##     Lelaki    43   134
##     Perempuan 26   149
## 
## , , Ras = Hitam
## 
##              Intercouse
## Jenis Kelamin Ya Tidak
##     Lelaki    29    23
##     Perempuan 22    36
total <- sum(data)
joint_prob <- data/ total
ftable(joint_prob)
##                          Ras      Putih      Hitam
## Jenis Kelamin Intercouse                          
## Lelaki        Ya             0.09307359 0.06277056
##               Tidak          0.29004329 0.04978355
## Perempuan     Ya             0.05627706 0.04761905
##               Tidak          0.32251082 0.07792208

Intepretasi : Pria yang tidak berhubungan seksual cenderung lebih banyak berkulit putih dibandingkan dengan kulit hitam, sedangkan wanita yang tidak berhubungan seksual cenderung lebih banyak berkulit putih juga.

7.2.2. Peluang Marginal

Peluang marginal didefinisikan sebagai berikut

untuk Ras: \[ P(Z) = \frac{n(Z)}{N} \]

marginal_Z <- apply(joint_prob, 3, sum)
marginal_Z
##     Putih     Hitam 
## 0.7619048 0.2380952

Intepretasi : Proporsi Ras Putih lebih banyak dibanding ras Hitam.

Untuk Gender: \[ P(X) = \frac{n(X)}{N} \]

marginal_X <- apply(joint_prob, 1, sum)
marginal_X
##    Lelaki Perempuan 
##  0.495671  0.504329

Intepretasi : Proporsi perempuan lebih banyak dibanding laki - laki

7.2.3. Peluang Bersyarat

Contoh : Mencari peluang seseorang ber - ras tertentu jika ia laki - laki dan melakukan hubungan seksual: \[ P(Ras| X = Laki-laki,Y=1) = \frac{P(Ras,Laki-laki,Y=1)}{P(X=Laki - laki,Y=1)} \]

p_Z_given_X_Y <- prop.table(data, margin = c(1,2))
p_Z_given_X_Y
## , , Ras = Putih
## 
##              Intercouse
## Jenis Kelamin        Ya     Tidak
##     Lelaki    0.5972222 0.8535032
##     Perempuan 0.5416667 0.8054054
## 
## , , Ras = Hitam
## 
##              Intercouse
## Jenis Kelamin        Ya     Tidak
##     Lelaki    0.4027778 0.1464968
##     Perempuan 0.4583333 0.1945946

Intepretasi : Peluang seseorang memiliki ras putih ketika ia laki - laki dan melakukan hubungan seksual adalah 0.597. Dan peluang seseorang memiliki ras hitam ketika ia laki - laki dan melakukan hubungan seksual adalah 0.403

7.3. Ukuran Asosiasi

7.3.1. Perbedaan Peluang (Risk Difference, RD)

\[ RD = \frac{a}{a + b} - \frac{c}{c + d} \]

# Hitung RD untuk masing-masing ras
rd_putih <- (data["Lelaki", "Ya", "Putih"] / sum(data["Lelaki", , "Putih"])) -
           (data["Perempuan", "Ya", "Putih"] / sum(data["Perempuan", , "Putih"]))

rd_hitam <- (data["Lelaki", "Ya", "Hitam"] / sum(data["Lelaki", , "Hitam"])) -
                (data["Perempuan", "Ya", "Hitam"] / sum(data["Perempuan", , "Hitam"]))

rd_putih
## [1] 0.09436642
rd_hitam
## [1] 0.178382

Intepretasi : Perbedaan peluang (RD) menunjukkan bahwa laki - laki meningkatkan potensi untuk melakukan hubungan seksual sekitar 0.0943 (9.4%) untuk ras putih dan sekitar 0.178382 untuk ras hitam.

7.3.2. Risiko Relatif (Relative Risk, RR)

\[ RR = \frac{a / (a + b)}{c / (c + d)} \]

#Menghitung RR untuk masing masing ras
rr_putih <- (data["Lelaki", "Ya", "Putih"] / sum(data["Lelaki", , "Putih"])) /
             (data["Perempuan", "Ya", "Putih"] / sum(data["Perempuan", , "Putih"]))

rr_hitam <- (data["Lelaki", "Ya", "Hitam"] / sum(data["Lelaki", , "Hitam"])) /
            (data["Perempuan", "Ya", "Hitam"] / sum(data["Perempuan", , "Hitam"]))

rr_putih
## [1] 1.635159
rr_hitam
## [1] 1.47028

Intepretasi : Risiko relatif (RR) menunjukkan bahwa laki - laki memiliki 1.5 kali lipat potensi melakukan hubungan seksual dibandingkan perempuan untuk ras putih , dan 1.47 kali lipat untuk ras hitam.

7.3.3. Odds Ratio (OR)

\[ OR = \frac{a \cdot d}{b \cdot c} \]

# Menghitung Odds Ratio untuk masing masing ras
or_putih <- (data["Lelaki", "Ya", "Putih"] / data["Lelaki", "Tidak", "Putih"]) /
            (data["Perempuan", "Ya", "Putih"] / data["Perempuan", "Tidak", "Putih"])

or_hitam <- (data["Lelaki", "Ya", "Hitam"] / data["Lelaki", "Tidak", "Hitam"]) /
            (data["Perempuan", "Ya", "Hitam"] / data["Perempuan", "Tidak", "Hitam"])

or_putih
## [1] 1.838978
or_hitam
## [1] 2.063241

Intepretasi :

Odds Ratio (OR) mengindikasikan bahwa kemungkinan laki-laki melakukan hubungan seksual 1,83 kali lebih besar dibandingkan perempuan pada kelompok ras putih, dan 2,063 kali lebih besar pada kelompok ras hitam.

7.4. Inferensi pada Tabel Kontingensi Tiga Arah

Analisis tabel kontingensi tiga arah bertujuan untuk memahami hubungan antara dua variabel kategori dengan memperhitungkan pengaruh dari variabel ketiga sebagai pengontrol. Misalnya, kita ingin meneliti apakah terdapat perbedaan perilaku hubungan seksual pertama kali di usia 16–17 tahun (Y) antara laki-laki dan perempuan (X), sambil mengendalikan faktor ras (Z).

Dalam pendekatan ini, data disajikan dalam bentuk beberapa tabel parsial 2×2 berdasarkan setiap kategori variabel kontrol (Z), serta satu tabel marginal yang mengabaikan pengaruh Z secara keseluruhan.

Ukuran asosiasi utama yang digunakan untuk membandingkan hubungan antara dua variabel dalam setiap tabel parsial adalah odds ratio (OR). Jika nilai OR dari masing-masing tabel parsial menunjukkan pola yang seragam atau tidak jauh berbeda, maka kita dapat menyimpulkan adanya asosiasi yang konsisten. Dalam kasus seperti itu, estimasi odds ratio gabungan dapat dihitung menggunakan pendekatan Mantel-Haenszel, yang memberikan ukuran asosiasi keseluruhan dengan mempertimbangkan variabel kontrol.

7.4.1. Independensi Bersyarat dalam Tabel Kontingensi Tiga Arah

Independensi bersyarat adalah konsep penting dalam analisis data ketika kita ingin melihat hubungan antara dua hal (misalnya, jenis kelamin dan perilaku) sambil mempertimbangkan pengaruh dari faktor ketiga (seperti ras atau tingkat pendidikan). Dua variabel dikatakan independen secara bersyarat terhadap variabel ketiga jika peluang (odds) hubungan di setiap kelompok dari variabel ketiga kurang lebih sama, yaitu mendekati 1. Untuk mengetahui hal ini secara statistik, biasanya digunakan uji Cochran-Mantel-Haenszel (CMH) yang dirancang khusus untuk melihat hubungan dua variabel dengan mengontrol faktor lain.

7.4.2. Pengujian Statistik untuk Independensi Bersyarat

Salah satu metode statistik yang umum digunakan untuk menguji independensi bersyarat dalam tabel kontingensi tiga arah adalah Uji Cochran-Mantel-Haenszel (CMH). Uji ini bertujuan untuk mengevaluasi apakah terdapat hubungan yang konsisten antara dua variabel kategori (misalnya X dan Y), setelah mengendalikan pengaruh dari variabel ketiga (Z), yang bisa menjadi faktor pengganggu atau confounder.

Dengan kata lain, uji CMH membantu menentukan apakah hubungan antara X dan Y tetap ada atau berubah ketika kita memperhitungkan keberadaan Z dalam analisis. Jika tidak ada perbedaan yang signifikan dalam odds ratio antar strata Z, maka bisa disimpulkan bahwa X dan Y saling independen secara bersyarat terhadap Z.

Statistik uji Cochran-Mantel-Haenszel (CMH) dirumuskan sebagai:

\[ CMH = \frac{\sum_k \left( n_{1ik} - \mu_{1ik} \right)^2}{\sum_k \text{var}(n_{1ik})} \]

Keterangan

  • \(n_{1ik}\): nilai frekuensi sel baris 1 kolom 1 pada tabel parsial ke-\(k\).
  • \(\mu_{1ik}\): nilai ekspektasi sel baris 1 kolom 1 pada tabel parsial ke-\(k\), dihitung dengan rumus:

\[ \mu_{1ik} = E(n_{1ik}) = \frac{n_{1.k} \cdot n_{1ik}}{n_{.k}} \]

Varians dari \(n_{1ik}\) diberikan oleh:

\[ \text{var}(n_{1ik}) = \frac{n_{1.k} \cdot n_{2.k} \cdot n_{1ik} \cdot n_{2.k}}{n_{2.k}^2 \cdot (n_{.k} - 1)} \]

Contoh:

Untuk memahami bagaimana uji Cochran-Mantel-Haenszel (CMH) digunakan, kita akan melihat contoh sederhana yang mengevaluasi hubungan antara merokok (X) dan kanker paru-paru (Y), dengan jenis kelamin (Z) sebagai variabel kontrol. Data ini diklasifikasikan dalam dua tabel 2×2, masing-masing untuk kelompok laki-laki dan perempuan:

Tabel Kontingensi

Ras: Putih

Intercourse (Ya) Intercourse (Tidak) Total
Laki-laki 43 134 177
Perempuan 26 149 175

Ras: Hitam

Intercourse (Ya) Intercourse (Tidak) Total
Laki-laki 29 23 52
Perempuan 22 36 58

Perhitungan manual

  1. Rumus Nilai Harapan \(\mu_{1ik}\) untuk Setiap Strata

Rumus nilai harapan \(\mu_{1ik}\) untuk setiap strata \(k\):

\[ \mu_{1ik} = \frac{(n_{i+k} \times n_{+ik})}{n_{++k}} \]

Di mana: - \(n_{i+k}\) = Total laki - laki dalam strata \(k\) - \(n_{+ik}\) = Total Intercourse dalam strata \(k\) - \(n_{++k}\) = Total individu dalam strata \(k\)

Untuk Ras Putih (k=1):

\[ \mu_{111} = \frac{(177 \times 69)}{352} = 34.696 \]

Untuk Ras Hitam (k=2):

\[ \mu_{112} = \frac{(52 \times 51)}{110} = 24,109 \]

  1. Menghitung Varians \(\text{Var}(n_{1ik})\)

Rumus varians:

\[ \text{Var}(n_{1ik}) = \frac{n_{i+k} \times n_{0+k} \times n_{+ik} \times n_{+0k}}{n_{++k}^2 \times (n_{++k} - 1)} \]

Untuk Ras Putih (k=1):

\[ \text{Var}(n_{111}) = \frac{(177 \times 134 \times 43 \times 149)}{352^2 \times (352 - 1)} = 13.91 \]

Untuk Ras Hitam (k=2):

\[ \text{Var}(n_{112}) = \frac{(175 \times 149 \times 26 \times 134)}{350^2 \times (350 - 1)} = 9.91 \]

  1. Menghitung Statistik CMH

Rumus statistik CMH:

\[ X^2_{CMH} = \frac{\sum_k (n_{1ik} - \mu_{1ik})^2}{\sum_k \text{Var}(n_{1ik})} \]

\[ X^2_{CMH} = \frac{((43 - 34.696) + (29 - 24.109))^2}{13.91 + 9.91} = 7.309 \]

Intepretasi : Misalkan dengan taraf signifikansi 5%, maka kita memiliki nilai kritis sebesar 3.841. Dikarenakan 7.309 > 3.841 maka hipotesis nol ditolak yang berarti terdapat hubungan signifikan antara jenis kelamin terhadap perlakuan intercourse setelah mengontrol variabel ras.

Perhitungan dengan R

data_cmh <- array(
  c(43, 26, 134, 149,  # Putih
    29, 22, 23, 36), # Hitam
  dim = c(2, 2, 2),
  dimnames = list(
    "Jenis Kelamin" = c("Lelaki", "Perempuan"),
    "Intercouse" = c("Ya", "Tidak"),
    "Ras" = c("Putih", "Hitam")
  )
)

# Menampilkan tabel
print(data_cmh)
## , , Ras = Putih
## 
##              Intercouse
## Jenis Kelamin Ya Tidak
##     Lelaki    43   134
##     Perempuan 26   149
## 
## , , Ras = Hitam
## 
##              Intercouse
## Jenis Kelamin Ya Tidak
##     Lelaki    29    23
##     Perempuan 22    36
cmh_base <- mantelhaen.test(data, correct = FALSE)
cmh_base
## 
##  Mantel-Haenszel chi-squared test without continuity correction
## 
## data:  data
## Mantel-Haenszel X-squared = 8.3751, df = 1, p-value = 0.003804
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.229343 2.967939
## sample estimates:
## common odds ratio 
##          1.910135

Intepretasi dan Kesimpulan : Karena nilai p sebesar 0.003804 lebih kecil dari taraf signifikansi 0.05, maka keputusan yang diambil adalah menolak hipotesis nol (H₀). Hal ini menunjukkan bahwa terdapat hubungan yang signifikan secara statistik antara kebiasaan merokok dan kejadian kanker paru-paru, setelah mengendalikan variabel jenis kelamin sebagai faktor perancu.

8 Generalized Linear Model (GLM)

Generalized Linear Model (GLM) adalah sebuah pengembangan dari model regresi linear klasik. GLM dirancang untuk memodelkan data di mana variabel respons tidak mengikuti distribusi normal, atau hubungan antara variabel prediktor dengan rata-rata variabel respons tidak bersifat linear. GLM terdiri dari tiga komponen utama:

  1. Distribusi dari keluarga eksponensial yang digunakan untuk variabel respons.
  2. Fungsi link yang menghubungkan ekspektasi variabel respons dengan kombinasi linear dari variabel prediktor.
  3. Fungsi linear prediktor: 𝜂 = 𝑋𝛽

8.1 Exponential Family

Distribusi dikatakan termasuk dalam keluarga eksponensial (exponential family) jika dapat ditulis dalam bentuk umum sebagai berikut:

\[ f(y; \theta, \phi) = \exp \left\{ \frac{y\theta - b(\theta)}{\phi} + c(y, \phi) \right\} \]

Contoh Distribusi yang Termasuk Exponential Family:

  • Distribusi Normal
  • Distribusi Binomial
  • Distribusi Poisson
  • Distribusi Gamma

Contoh Pembuktian: Distribusi Binomial

Fungsi probabilitas distribusi binomial adalah:

\[ P(Y = y) = \binom{n}{y} \pi^y (1 - \pi)^{n - y} \]

Tuliskan ulang dalam bentuk exponential family:

\[ P(Y = y) = \exp \left\{ \log \binom{n}{y} + y \log \left( \frac{\pi}{1 - \pi} \right) + n \log (1 - \pi) \right\} \]

Dengan substitusi:

  • \(\theta = \log \left( \frac{\pi}{1 - \pi} \right)\)
  • \(b(\theta) = -n \log(1 - \pi)\)
  • \(\phi = 1\)

Kesimpulan : Dengan bentuk tersebut, maka distribusi binomial termasuk dalam keluarga exponential family.

8.2 Model Regresi Logistik

Regresi Logistik mirip dengan regresi linear dalam hal penggabungan nilai input secara linear menggunakan bobot (koefisien) untuk menghasilkan prediksi. Perbedaannya adalah regresi logistik membatasi hasil prediksi menjadi nilai biner, yaitu 0 atau 1, dengan bantuan fungsi sigmoid sebagai fungsi aktivasi. Fungsi sigmoid ini mengubah output menjadi nilai antara 0 dan 1, membentuk kurva berbentuk S.

Model ini digunakan untuk menganalisis hubungan antara satu atau lebih variabel independen dan untuk mengklasifikasikan data ke dalam kategori diskrit. Artinya, regresi logistik sangat berguna dalam masalah klasifikasi, terutama yang memiliki dua kategori kemungkinan (dikenal sebagai klasifikasi biner).

Sebagai contoh, angka 0 dapat melambangkan kegagalan, sementara angka 1 menunjukkan keberhasilan.

Beberapa contoh penerapan regresi logistik dalam klasifikasi biner antara lain:

  • Memprediksi Pembelian Produk: Model regresi logistik dapat digunakan untuk memperkirakan apakah seorang pelanggan akan membeli suatu produk berdasarkan variabel seperti usia, penghasilan, status pernikahan, dan frekuensi kunjungan ke toko.

  • Memprediksi Kegagalan Mesin: Dalam industri manufaktur, regresi logistik dapat digunakan untuk memprediksi apakah sebuah mesin akan mengalami kegagalan berdasarkan faktor-faktor seperti umur mesin, jam operasional, suhu, dan tekanan.

  • Memprediksi Kemungkinan Penurunan Harga Saham: Dalam pasar keuangan, model regresi logistik dapat digunakan untuk memperkirakan apakah harga saham suatu perusahaan akan turun pada periode tertentu berdasarkan variabel seperti kinerja keuangan, tren pasar, dan faktor makroekonomi.

Keunggulan Utama Regresi Logistik

  • Regresi logistik sangat cocok digunakan dalam Machine Learning Proses pelatihan (training) dan pengujian (testing) relatif sederhana. Model ini belajar dari pola-pola dalam data input dan menghubungkannya dengan output (label). Karena tidak membutuhkan komputasi yang tinggi, regresi logistik mudah diimplementasikan, dipahami, dan dilatih dibandingkan dengan metode lain dalam Machine Learning.

  • Cocok untuk data yang bisa dipisahkan secara linear Jika dua kelas data bisa dipisahkan dengan garis lurus (linear), maka regresi logistik akan sangat efektif dalam mengklasifikasikan data tersebut ke dalam dua kelompok berbeda. Dalam konteks ini, variabel target (y) hanya memiliki dua nilai, sehingga model bisa menentukan batas yang jelas di antara keduanya.

  • Memberikan wawasan yang bermakna Regresi logistik juga bisa menunjukkan seberapa besar pengaruh suatu variabel terhadap hasil akhir, melalui koefisiennya. Selain itu, model ini juga menunjukkan apakah hubungan antar variabel bersifat positif atau negatif.

  • Persamaan dan Asumsi dalam Regresi Logistik Model ini menggunakan fungsi sigmoid, yaitu fungsi matematika berbentuk kurva S yang mengubah nilai output ke dalam rentang antara 0 dan 1. Jika hasil dari fungsi sigmoid (yang merepresentasikan probabilitas) lebih tinggi dari ambang batas tertentu, maka model akan mengklasifikasikan data sebagai bagian dari suatu kelas. Sebaliknya, jika di bawah ambang tersebut, maka data dianggap tidak termasuk dalam kelas itu.

Selain itu, jika keluaran dari fungsi sigmoid (yaitu probabilitas yang diperkirakan) lebih besar dari ambang batas yang telah ditentukan, maka model akan memprediksi bahwa observasi tersebut termasuk dalam kelas tertentu. Sebaliknya, jika nilai probabilitas tersebut lebih kecil dari ambang batas, model akan memprediksi bahwa observasi tersebut tidak termasuk ke dalam kelas tersebut.

Sebagai contoh:

  • Jika hasil fungsi sigmoid lebih besar dari 0,5, maka output dianggap sebagai 1 (kelas positif).
  • Jika hasilnya kurang dari 0,5, maka output diklasifikasikan sebagai 0 (kelas negatif).
  • Jika grafik menuju ke arah negatif secara ekstrem, maka nilai prediksi y akan menjadi 0, dan sebaliknya.

Fungsi sigmoid digunakan dalam regresi logistik untuk mengubah nilai prediksi menjadi probabilitas. Rumus dari fungsi sigmoid yaitu: \[ f(x) = \frac{1}{1 + e^{-x}} \]

# Simulasi data untuk regresi logistik 
set.seed(42)
n <- 100 
x <- seq(-4, 4, length.out = n)
log_odds <- -0.5 + 1.5 * x 
prob <- 1 / (1 + exp(-log_odds))
y <- rbinom(n, 1, prob)
# Buat data frame 
data <- data.frame(x=x, y=y, prob = prob)

Plot Kurva Sigmoid

# Visualisasi menggunakan base R plot
# Visualisasi menggunakan base R
# Plot the data
plot(x, y, 
     pch = 16, 
     col = "gray60",
     xlab = "X", 
     ylab = "Y / Probabilitas", 
     main = "Simulasi Regresi Logistik dengan Kurva Sigmoid")
lines(x, prob, col = "blue", lwd = 2)
abline(h = 0.5, col = "red", lty = 2)

legend("topleft", legend = c("Data Biner (0/1)", "Kurva Logistik", "Ambang 0.5"), 
       col = c("gray60", "blue", "red"), 
       pch = c(16, NA, NA), 
       lty = c(NA, 1, 2), 
       lwd = c(NA, 2, 1), 
       pt.cex = 1.5, bty = "n")

Kurva sigmoid dalam regresi logistik menunjukkan hubungan non-linear antaravariabel prediktor dan probabilitas output. Pendekatan ini efektif untuk klasifikasi biner seperti deteksi penyakit, kelulusan siswa, dan prediksi ya/tidak.

Fungsi Link (Logit): Fungsi link logit dapat dinyatakan dalam bentuk berikut:

\[ g(\mu) = \log \left( \frac{\mu}{1 - \mu} \right) \]

Model Regresi Logistik:

\[ \log \left( \frac{\mu}{1 - \mu} \right) = X\beta \]

Fungsi Inverse Link:

\[ \mu = \frac{\exp(X\beta)}{1 + \exp(X\beta)} \]

Estimasi Parameter

Metode estimasi parameter pada GLM umumnya menggunakan Maximum Likelihood Estimation (MLE).

Log-likelihood fungsi untuk regresi logistik:

\[ l(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \] Dengan:

\[ \pi_i = \frac{\exp(X\beta)}{1 + \exp(X\beta)} \]

Contoh Kasus dengan R

Misalkan kita memiliki tabel tentang hubungan antara metode pengobatan dan kesembuhan kanker.

Cancer Controlled Cancer Not Controlled Total
Surgery 21 2 23
Radiation Therapy 15 3 18
Total 36 5 41

Source : Reprinted with permisiion from W.M. Mendenhall, R.R. Million D.E. Sharkey, and N.J. Cassisi, Internat. J. Radiat. Oncol. Biol. Phys. 10: 357-363 (1984), Pergamon Press plc.

# Buat data frame berdasarkan tabel
data <- data.frame(
  Treatment = c(rep(1, 21), rep(1, 2),  # Surgery: Controlled (21), Not Controlled (2)
                rep(0, 15), rep(0, 3)), # Radiation: Controlled (15), Not Controlled (3)
  CancerControlled = c(rep(1, 21), rep(0, 2),
                       rep(1, 15), rep(0, 3))
)

# Tampilkan data
head(data)

Estimasi Regresi Logistik Estimasi parameter model regresi logistik dapat menggunakan ‘glm’ function

model <- glm(CancerControlled ~ Treatment, data = data, family = binomial) 
summary(model)
## 
## Call:
## glm(formula = CancerControlled ~ Treatment, family = binomial, 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)   1.6094     0.6325   2.545   0.0109 *
## Treatment     0.7419     0.9735   0.762   0.4460  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 30.405  on 40  degrees of freedom
## Residual deviance: 29.810  on 39  degrees of freedom
## AIC: 33.81
## 
## Number of Fisher Scoring iterations: 5

Interpretasi Koefisien

• Intercept ((Intercept)): nilai log-odds saat x=0

• Koefisien x: perubahan log-odds untuk setiap satu satuan peningkatan pada x

• Nilai p: menunjukkan signifikansi statistik dari prediktor

Koefisien log-odds dapat ditransformasikan ke odds ratio:

exp(coef(model))
## (Intercept)   Treatment 
##         5.0         2.1

Prediksi dan Visualisasi Kurva Logit

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
## 
## Attaching package: 'ggplot2'
## The following object is masked from 'package:randomForest':
## 
##     margin
data$pred <- predict(model, type = "response")
ggplot(data, aes(x=Treatment, y=CancerControlled)) +
  geom_point(alpha = 0.5, color = "gray40") +
  geom_line(aes(y=pred), color = "blue", linewidth = 1.5) +
  labs(title = "Kurva Logit pada Regresi Logistik",
       x="X (Prediktor)",
       y="Probabilitas / Respons") + 
theme_minimal()

GLM adalah kerangka model fleksibel untuk berbagai jenis data dan distribusi. Regresi logistik merupakan salah satu contoh penting dari GLM, sangat berguna dalam analisis data kategorik biner. Estimasi parameter dilakukan melalui metode MLE dan dapat diselesaikan secara efisien dengan fungsi glm di R.

8.3 Model Regresi Poisson

Regresi Poisson digunakan ketika variabel respons adalah data cacah (count data),yaitu bilangan bulat non negatif. Model ini merupakan bagian dari Generalized Linear Model(GLM) dengan asumsi bahwa distribusi variabel respons adalah distribusi Poisson.

Distribusi Poisson memiliki fungsi probabilitas:

\[ P(Y = y) = \frac{e^{-\lambda} \lambda^y}{y!} \]

Distribusi Poisson dapat dituliskan dalam bentuk exponential family sebagai berikut:

\[ f(y; \theta) = \exp \left\{ y \log(\lambda) - \lambda - \log(y!) \right\} \]

dengan:

  • \[ \theta = \log(\lambda) \]
  • \[ b(\theta) = e^{\theta} = \lambda \]
  • \[ \phi = 1 \]
  • \[ c(y, \phi) = -\log(y!) \]

Maka distribusi Poisson termasuk dalam exponential family.

Fungsi Link

Fungsi link kanonik untuk distribusi Poisson adalah fungsi logaritma:

\[ g(\mu) = \log(\mu) \]

Sehingga modelnya menjadi:

\[ \log(\mu_i) = x_i^T \beta \]

dan fungsi inverse link:

\[ \mu_i = \exp(x_i^T \beta) \]

Estimasi Parameter

Estimasi parameter \(( \beta )\) dilakukan dengan metode Maximum Likelihood Estimation (MLE).
Log-likelihood fungsi untuk regresi Poisson:

\[ l(\beta) = \sum_{i=1}^n \left[ y_i x_i^T \beta - \exp(x_i^T \beta) - \log(y_i!) \right] \]

Nilai \(( \beta )\) dapat diperoleh melalui metode numerik seperti iterasi Newton-Raphson.

Contoh:

Misalkan kita memiliki data sebagai berikut:

# Buat data frame berdasarkan tabel
data <- data.frame(
  Treatment = c(rep(1, 21), rep(1, 2),  # Surgery: Controlled (21), Not Controlled (2)
                rep(0, 15), rep(0, 3)), # Radiation: Controlled (15), Not Controlled (3)
  CancerControlled = c(rep(1, 21), rep(0, 2),
                       rep(1, 15), rep(0, 3))
)

# Tampilkan data
head(data)
lambda <- exp(0.3 + 0.6 * data$Treatment)

Estimasi Regresi Poisson

poisson_model <- glm(CancerControlled ~ Treatment, data = data, family = poisson())
summary(poisson_model)
## 
## Call:
## glm(formula = CancerControlled ~ Treatment, family = poisson(), 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.18232    0.25819  -0.706    0.480
## Treatment    0.09135    0.33806   0.270    0.787
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 9.3638  on 40  degrees of freedom
## Residual deviance: 9.2905  on 39  degrees of freedom
## AIC: 85.29
## 
## Number of Fisher Scoring iterations: 4

Plot Hasil Prediksi

plot(data$Treatment, data$CancerControlled, pch = 16, col = "darkgray", main = "Data dan Hasil Prediksi") 
newdata <- data.frame(Treatment=seq(min(data$Treatment), max(data$Treatment), length.out = 100)) 
pred <- predict(poisson_model, newdata = newdata, type = "response")
lines(newdata$Treatment, pred, col = "blue", lwd = 2)

Diagnostik dan Overdispersion

Salah satu asumsi penting dari model Poisson adalah bahwa mean dan varians dari variabel respons adalah sama (𝐸[𝑌]=𝑉𝑎𝑟[𝑌]). Jika varians lebih besar dari mean, maka terjadi overdispersion. Untuk mendeteksi overdispersion:

dispersion <- sum(residuals(poisson_model, type = "pearson")^2) / poisson_model$df.residual 
dispersion
## [1] 0.1282051

Jika nilai dispersion > 1, maka overdispersion mungkin terjadi dan model alternatif seperti Negative Binomial Regression dapat digunakan.

exp(coef(poisson_model))
## (Intercept)   Treatment 
##   0.8333333   1.0956522

Visualisasi Prediksi

data$predicted <- predict(poisson_model, type = "response")
library(ggplot2) 
ggplot(data, aes(x=data$Treatment, y=data$CancerControlled)) +
  geom_jitter(width = 0.2, alpha = 0.6) + 
  geom_point(aes(CancerControlled=predicted), shape = 18, size = 3, color = "black") +
  labs(title = "Prediksi", x="Treatment", y="CancerControlled") + 
  theme_minimal()
## Warning in geom_point(aes(CancerControlled = predicted), shape = 18, size = 3,
## : Ignoring unknown aesthetics: CancerControlled
## Warning: Use of `data$Treatment` is discouraged.
## ℹ Use `Treatment` instead.
## Warning: Use of `data$CancerControlled` is discouraged.
## ℹ Use `CancerControlled` instead.
## Warning: Use of `data$Treatment` is discouraged.
## ℹ Use `Treatment` instead.
## Warning: Use of `data$CancerControlled` is discouraged.
## ℹ Use `CancerControlled` instead.

Evaluasi Model

# Plot residuals 
plot(poisson_model$residuals,
     main = "Residual Plot",
     ylab = "Residual",
     xlab = "Index",
     pch = 19,
     col = "steelblue")

abline(h = 0, col = "red", lty = 2)

9 Inferensi Generalized Linear Model (GLM)

Dalam Generalized Linear Model (GLM), inferensi statistik membutuhkan pemahaman terhadap ekspektasi dan variansi dari estimator model, terutama untuk mengembangkan alat-alat uji seperti Wald test, Likelihood Ratio test, dan interval kepercayaan.

Ekspektasi dan Varians dalam GLM

  1. Ekspektasi Estimator

Ekspektasi menunjukkan apakah suatu estimator tak bias, yaitu:

\[ \mathbb{E}[\hat{\beta}] = \beta \]

Dalam GLM, MLE dari \(\hat{\beta}\) bersifat asymptotically unbiased.

  1. Varians Estimator

Varians menunjukkan presisi dari estimasi parameter:

\[ \text{Var}(\hat{\beta}) \approx (\mathbf{X}^T \mathbf{W} \mathbf{X})^{-1} \]

dimana \(\mathbf{W}\) adalah matriks bobot yang tergantung pada distribusi dan fungsi link.

Distribusi Asimptotik Estimator

Dengan ukuran sampel besar:

\[ \hat{\beta} \sim \mathcal{N}(\beta, \text{Var}(\hat{\beta})) \]

Distribusi ini adalah dasar dari:

Varians dalam GLM Tidak Konstan

Tidak seperti regresi linear (OLS) yang mengasumsikan homoskedastisitas:

\[ \text{Var}(Y_i) = \sigma^2 \]

Dalam GLM:

\[ \text{Var}(Y_i) = \phi V(\mu_i) \]

Contoh:

Contoh Regresi Poisson

# Buat data frame berdasarkan tabel
data <- data.frame(
  Treatment = c(rep(1, 21), rep(1, 2),  # Surgery: Controlled (21), Not Controlled (2)
                rep(0, 15), rep(0, 3)), # Radiation: Controlled (15), Not Controlled (3)
  CancerControlled = c(rep(1, 21), rep(0, 2),
                       rep(1, 15), rep(0, 3))
)

# Tampilkan data
head(data)
# Ringkasan model regresi Poisson
model <- glm(CancerControlled ~ Treatment, data = data, family = poisson())
summary(model)
## 
## Call:
## glm(formula = CancerControlled ~ Treatment, family = poisson(), 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.18232    0.25819  -0.706    0.480
## Treatment    0.09135    0.33806   0.270    0.787
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 9.3638  on 40  degrees of freedom
## Residual deviance: 9.2905  on 39  degrees of freedom
## AIC: 85.29
## 
## Number of Fisher Scoring iterations: 4

Kesimpulan:

9.1 Mencari Ekspektasi dan Varians dalam GLM

Ekspektasi

Jika diturunkan berdasarkan fungsi momen:

\[ E(Y) = \int y f(y; \theta) \, dy = \mu \]

Untuk keluarga eksponensial:

\[ \log f(y; \theta) = a(y) + b(\theta) y + c(\theta) \]

atau:

\[ \log f(y; \theta) = y \theta - b(\theta) + c(y) \]

Maka ekspektasi turunan pertama:

\[ U(\theta) = \frac{\partial \ell}{\partial \theta} = y - b'(\theta) \] Dan ekspektasi turunan pertama:

\[ \mathbb{E}[U(\theta)] = \mathbb{E}[y - b'(\theta)] = \mu - b'(\theta) = 0 \]

Maka:

\[ \mu = b'(\theta) \]

Varians
Turunan kedua:

\[ \frac{\partial^2 \ell}{\partial \theta^2} = -b''(\theta) \]

Sehingga:

\[ \text{Var}(Y) = b''(\theta) = \phi V(\mu) \]

9.2 Metode Penaksiran Parameter

Maximum Likelihood Estimation (MLE)

  • Prinsip dasar: memaksimumkan fungsi likelihood/log-likelihood.
  • Langkah:
    • Turunan pertama = 0
    • Turunan kedua < 0

Namun, karena bentuk GLM tidak eksplisit, digunakan metode numerik.

Metode Optimisasi: Newton-Raphson

  • Menggunakan score vector (gradien)
  • Menggunakan Hessian matrix

Iterasi:

\[ \beta^{(t+1)} = \beta^{(t)} - H^{-1}(\beta^{(t)}) U(\beta^{(t)}) \] Fisher Scoring

  • Modifikasi Newton-Raphson, mengganti Hessian dengan matriks informasi Fisher.

IRLS (Iteratively Reweighted Least Square) - Modifikasi dari Fisher scoring, hasil estimasi mirip dengan Least Square.

Implementasi Newton-Raphson Statistik score ke-𝑗 Statistik score ke-𝑗:

\[ U_j(\beta) = \frac{\partial \log L(\beta)}{\partial \beta_j} \] Turunan kedua:

\[ H_{jk}(\beta) = \frac{\partial^2 \log L(\beta)}{\partial \beta_j \partial \beta_k} \]

Taylor expansion:

\[ U(\beta^*) \approx U(\beta) + H(\beta)(\beta^* - \beta) \]

Estimasi parameter:

\[ \hat{\beta} \approx \beta^{(t)} - H^{-1}(\beta^{(t)}) U(\beta^{(t)}) \]

9.3 Diagnostik Model GLM

Diagnostik digunakan untuk mengevaluasi apakah model sudah tepat.

  • Uji formal
  • Grafik antara nilai prediksi vs nilai aktual

Statistik Devians

  • Mengukur apakah ada model lain yang lebih baik.
  • Nilai devians besar → model tidak cocok.
  • Devians adalah:

\[ D = 2 \sum \left[ y_i \log \left( \frac{y_i}{\hat{\mu}_i} \right) - (y_i - \hat{\mu}_i) \right] \]

  • Devians membandingkan model terhadap saturated model.
  • Devians kecil → model lebih cocok.

Statistik Chi-Kuadrat Pearson

  • Menguji apakah model lebih baik daripada tidak ada model sama sekali.
  • Statistik:

\[ X^2 = \sum \left( \frac{(y_i - \hat{\mu}_i)^2}{\hat{\mu}_i} \right) \] • Jika signifikan → model lebih baik daripada tanpa model.

Catatan

• Untuk data yang dikelompokkan, statistik devians dan chi-kuadrat Pearson mengikuti distribusi ChiSquare.

• Untuk data tidak dikelompokkan, tidak mengikuti distribusi Chi-Square.

• Devians diminimalkan oleh MLE → cocok digunakan untuk evaluasi model.

Analisis Residual

• Residual adalah selisih antara observasi dengan prediksi.

• Dapat digunakan untuk memeriksa penyimpangan sistematis.

• Dapat diplot untuk menilai asumsi model

9.4 Detail Metode Estimasi dan Inferensi Regresi Logistik

Regresi logistik digunakan untuk memodelkan probabilitas dari variabel respons biner (0/1) berdasarkan satu atau lebih variabel prediktor. Estimasi parameter dilakukan menggunakan Maximum Likelihood Estimation (MLE) karena model tidak linear dalam parameternya.

Fungsi model logistik:

\[ \pi(x) = \frac{\exp(\beta_0 + \beta_1 x)}{1 + \exp(\beta_0 + \beta_1 x)} \]

Log-likelihood untuk \(( n )\) observasi:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \] Estimasi dengan Newton-Raphson

Metode Newton-Raphson digunakan untuk mencari nilai parameter \(( \beta )\) yang memaksimalkan fungsi log-likelihood pada model regresi logistik.

Fungsi Log-Likelihood

Model regresi logistik untuk probabilitas:

\[ \pi_i = \frac{1}{1 + \exp(-x_i^\top \beta)} \]

Log-likelihood untuk \(( n )\) observasi:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \]

Langkah-langkah Newton-Raphson Turunan dalam Estimasi Logistik

  1. Turunan Pertama (Score Function)

\[ U(\beta) = \frac{\partial \ell(\beta)}{\partial \beta} = X^\top (y - \pi) \]

  1. Turunan Kedua (Hessian Matrix)

\[ H(\beta) = -X^\top W X, \quad \text{dengan } W = \text{diag}(\pi_i (1 - \pi_i)) \]

  1. Iterasi Newton-Raphson

\[ \beta^{(t+1)} = \beta^{(t)} + (X^\top W^{(t)} X)^{-1} X^\top (y - \pi^{(t)}) \]

Estimasi MLE dengan Newton-Raphson (Manual di R)

# Buat data frame berdasarkan tabel
data <- data.frame(
  Treatment = c(rep(1, 21), rep(1, 2),  # Surgery: Controlled (21), Not Controlled (2)
                rep(0, 15), rep(0, 3)), # Radiation: Controlled (15), Not Controlled (3)
  CancerControlled = c(rep(1, 21), rep(0, 2),
                       rep(1, 15), rep(0, 3))
)

# Tampilkan data
head(data)
beta_true <- c(-1, 2)
X <- cbind(1, data$Treatment)
eta <- X %*% beta_true
p <- 1 / (1 + exp(-eta))

Newton-Raphson Iterasi Manual

# Inisialisasi
beta <- matrix(0, ncol = 1, nrow = ncol(X))
tol <- 1e-6
max_iter <- 100

# Iterasi Newton-Raphson
for (i in 1:max_iter) {
  eta <- X %*% beta
  pi_hat <- 1 / (1 + exp(-eta))
  W <- diag(as.vector(pi_hat * (1 - pi_hat)))
  z <- eta + (data$CancerControlled- pi_hat) / (pi_hat * (1 - pi_hat))
  beta_new <- solve(t(X) %*% W %*% X) %*% (t(X) %*% W %*% z)
  
  if (sum(abs(beta_new - beta)) < tol) break
  beta <- beta_new
}

# Hasil akhir
beta
##           [,1]
## [1,] 1.6094379
## [2,] 0.7419373

• Estimasi parameter pada model regresi logistik dilakukan dengan MLE. • Newton-Raphson adalah metode numerik yang digunakan untuk memaksimalkan log-likelihood.

• Iterasi didasarkan pada turunan pertama (score) dan kedua (Hessian).

• Prosedur identik dengan IRLS (Iteratively Reweighted Least Squares) dalam implementasi GLM.

Inferensi Parameter

  1. Uji Wald

Tujuan Uji Wald
Untuk menguji signifikansi parameter \(( \beta_j )\) dalam model regresi logistik:

  • \(( H_0: \beta_j = 0 )\)
  • \(( H_1: \beta_j \neq 0 )\)

Teori Wald Test
Dari teori estimasi MLE, estimator \(( \hat{\beta}_j )\) mendekati distribusi normal:

\[ \hat{\beta}_j \sim N(\beta_j, \text{Var}(\hat{\beta}_j)) \]

Jika \(( H_0 )\) benar (yaitu \(( \beta_j = 0 )\)), maka:

\[ Z = \frac{\hat{\beta}_j}{SE(\hat{\beta}_j)} \sim N(0,1) \]

Dengan Statistik Wald:

\[ W = Z^2 = \left( \frac{\hat{\beta}_j}{SE(\hat{\beta}_j)} \right)^2 \sim \chi^2_1 \]

Uji Wald Langkah demi Langkah

# Buat data frame berdasarkan tabel
data <- data.frame(
  Treatment = c(rep(1, 21), rep(1, 2),  # Surgery: Controlled (21), Not Controlled (2)
                rep(0, 15), rep(0, 3)), # Radiation: Controlled (15), Not Controlled (3)
  CancerControlled = c(rep(1, 21), rep(0, 2),
                       rep(1, 15), rep(0, 3))
)

log_odds <- -0.5 + 1.2 * data$Treatment
p <- 1 / (1 + exp(-log_odds))

model <- glm(CancerControlled ~ Treatment, data = data, family = binomial)

summary(model)
## 
## Call:
## glm(formula = CancerControlled ~ Treatment, family = binomial, 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)   1.6094     0.6325   2.545   0.0109 *
## Treatment     0.7419     0.9735   0.762   0.4460  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 30.405  on 40  degrees of freedom
## Residual deviance: 29.810  on 39  degrees of freedom
## AIC: 33.81
## 
## Number of Fisher Scoring iterations: 5

Langkah 1: Ambil nilai koefisien dan standard error (SE)

beta_hat <- coef(model)["Treatment"]
se_beta <- summary(model)$coefficients["Treatment", "Std. Error"]

Langkah 2: Hitung Statistik Z

Z <- beta_hat / se_beta
Z
## Treatment 
## 0.7621674

Langkah 3: Hitung Statistik Wald

Wald_stat <- Z^2
Wald_stat
## Treatment 
## 0.5808991

Langkah 4: Hitung p-value

p_value <- 1 - pchisq(Wald_stat, df = 1)
p_value
## Treatment 
## 0.4459601

Interpretasi

• Jika p-value < 0.05, maka koefisien signifikan → variabel prediktor berpengaruh.

• Jika p-value > 0.05, maka tidak ada cukup bukti untuk menolak - \(( H_0 )\)

Kesimpulan

Uji Wald didasarkan pada rasio antara estimasi parameter dan standar error-nya. Dengan menaikkan nilai Z menjadi kuadrat (Z²), kita memperoleh distribusi Chi-Square untuk pengujian hipotesis parameter individual dalam model regresi logistik

  1. Uji Likelihood Ratio (Chi-Square)

Bandingkan model penuh dengan model tanpa prediktor

# Model null 
model_null <- glm(CancerControlled ~ 1, data = data, family = binomial)

# Likelihood ratio test 
anova(model_null, model, test = "Chisq")

Evaluasi Kebaikan Model

  1. Akaike Information Criterion (AIC)

Semakin kecil AIC, semakin baik model.

AIC(model)
## [1] 33.81041
  1. Bayesian Information Criterion (BIC)

Alternatif terhadap AIC, menghukum kompleksitas model.

BIC(model)
## [1] 37.23755

• Estimasi regresi logistik dilakukan dengan MLE melalui iterasi Newton-Raphson.

• Inferensi parameter dapat dilakukan dengan uji Wald dan likelihood ratio (uji Chi-Square).

• AIC dan BIC digunakan untuk mengevaluasi kompleksitas dan kecocokan model.

9.5 Detail Metode Estimasi dan Inferensi Regresi Poisson

Model regresi Poisson digunakan untuk memodelkan data count (jumlah kejadian) dimana variabel respons mengikuti distribusi Poisson. Estimasi dilakukan dengan Maximum Likelihood Estimation (MLE), dan inferensi dilakukan dengan uji Wald dan Likelihood Ratio Test.

Model Regresi Poisson

Distribusi Poisson:

\[ P(Y_i = y_i) = \frac{e^{-\lambda_i} \lambda_i^{y_i}}{y_i!} \]

Model regresi Poisson:

\[ \log(\lambda_i) = x_i^T \beta \] Estimasi Parameter (MLE)

Log-likelihood fungsi:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\lambda_i) - \lambda_i - \log(y_i!) \right] \]

Dengan:

\[ \lambda_i = \exp(x_i^T \beta) \]

Estimasi dilakukan dengan metode iterasi (IRLS)

Estimasi parameter model regresi Poisson menggunakan pendekatan
Maximum Likelihood Estimation (MLE) dengan metode
Iteratively Reweighted Least Squares (IRLS) secara manual, tanpa menggunakan glm().

Tahap 1: Definisikan Model Regresi Poisson

\[ \log(\lambda_i) = x_i^T \beta \quad \Rightarrow \quad \lambda_i = \exp(x_i^T \beta) \]

Tahap 2: Mencari Log-likelihood yang dimaksimumkan

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\lambda_i) - \lambda_i - \log(y_i!) \right] \] Tahap 3: Formulasi iteratif:

\[ \beta^{(t+1)} = \left( \mathbf{X}^T \mathbf{W}^{(t)} \mathbf{X} \right)^{-1} \mathbf{X}^T \mathbf{W}^{(t)} \mathbf{z}^{(t)} \]

Dengan:

  • \[\mathbf{W} = \text{diag}(\lambda_i)\]
  • \[\mathbf{z} = \eta + \frac{y - \lambda}{\lambda}\]

dan

\[ \eta_i = \log(\lambda_i) = x_i^T \beta \] Simulasi Data

# Buat data frame berdasarkan tabel
data <- data.frame(
  Treatment = c(rep(1, 21), rep(1, 2),  # Surgery: Controlled (21), Not Controlled (2)
                rep(0, 15), rep(0, 3)), # Radiation: Controlled (15), Not Controlled (3)
  CancerControlled = c(rep(1, 21), rep(0, 2),
                       rep(1, 15), rep(0, 3))
)

X <- cbind(1, data$Treatment)  # Tambah intercept
beta_true <- c(0.5, 0.8)
eta <- X %*% beta_true
lambda <- exp(eta)

IRLS Manual Step-by-Step

# Inisialisasi 
beta <- c(0, 0) 
tol <- 1e-6 
max_iter <- 100 

for (i in 1:max_iter) {
  eta <- X %*% beta 
  lambda <- exp(eta) 
  W <- diag(as.numeric(lambda))
  z <- eta + (data$CancerControlled - lambda) / lambda
  
  beta_new <- solve(t(X) %*% W %*% X) %*% t(X) %*% W %*% z 
  
  if (sum(abs(beta_new - beta)) < tol) { 
    cat("Konvergen pada iterasi ke-", i, "\n")
    break 
    } 
  beta <- beta_new
}
## Konvergen pada iterasi ke- 4
beta # hasil estimasi
##             [,1]
## [1,] -0.18232155
## [2,]  0.09134977

Perbandingan dengan glm

model_glm <- glm(data$CancerControlled ~ data$Treatment, family = poisson()) 
summary(model_glm)
## 
## Call:
## glm(formula = data$CancerControlled ~ data$Treatment, family = poisson())
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)
## (Intercept)    -0.18232    0.25819  -0.706    0.480
## data$Treatment  0.09135    0.33806   0.270    0.787
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 9.3638  on 40  degrees of freedom
## Residual deviance: 9.2905  on 39  degrees of freedom
## AIC: 85.29
## 
## Number of Fisher Scoring iterations: 4

• IRLS memberikan cara iteratif untuk menghitung estimasi MLE dalam regresi Poisson.

• Hasil manual IRLS sangat mendekati hasil glm() dari R.

• Metode ini memberikan pemahaman mendalam atas mekanisme di balik fungsi glm().

Pengujian hipotesis Uji Wald

Untuk menguji H0: = 0

# Koefisien dan standar error
coef_val <- coef(model)[2] 
se_val <- summary(model)$coefficients[2, 2]
wald_z <- coef_val / se_val 
wald_chisq <- wald_z^2 
p_value <- 1 - pchisq(wald_chisq, df = 1)
cat("Z:", wald_z, "\nChi-Square:", wald_chisq, "\np-value:", p_value)
## Z: 0.7621674 
## Chi-Square: 0.5808991 
## p-value: 0.4459601

Uji Likelihood Ratio (Chi-Square)

model_null <- glm(data$CancerControlled ~ 1, family = poisson(), data = data)
anova(model_null, model, test = "Chisq")
## Warning in anova.glmlist(c(list(object), dotargs), dispersion = dispersion, :
## models with response '"CancerControlled"' removed because response differs from
## model 1

Evaluasi Model (AIC & BIC)

AIC(model)
## [1] 33.81041
BIC(model)
## [1] 37.23755

• Estimasi parameter pada regresi Poisson dilakukan dengan menggunakan metode MLE

• Pengujian hipotesis dilakukan menggunakan Uji Wald dan Likelihood Ratio

• AIC dan BIC digunakan sebagai alat untuk mengevaluasi dan memilih model yang paling optimal

(Bab 1–9 tetap)

10 Regresi Logistik dengan Prediktor Nominal, Ordinal, dan Rasio

10.1 Simulasi Data

10.1.1 Definisi dan Konsep Dasar

Regresi logistik digunakan untuk memodelkan hubungan antara satu variabel kategorik biner (respon) dengan satu atau lebih prediktor. Dalam kasus ini, kita ingin memahami bagaimana bentuk dan pengaruh prediktor dengan skala berbeda — yaitu: - Nominal: Tanpa urutan, contoh: jenis kelamin - Ordinal: Ada urutan tetapi belum tentu punya jarak yang pasti, contoh: tingkat pendidikan - Rasio: Kuantitatif kontinu, contoh: usia

10.1.2 Tujuan dan Manfaat

  • Mengetahui dampak perlakuan skala prediktor terhadap estimasi koefisien model
  • Membandingkan cara representasi ordinal: dummy vs skoring numerik
  • Melatih kemampuan interpretasi hasil regresi logistik dalam konteks nyata

10.1.3 Simulasi Data

set.seed(123)
n <- 500
gender <- factor(sample(c("Male", "Female"), n, replace = TRUE))
edu_level <- factor(sample(c("Low", "Medium", "High"), n, replace = TRUE), 
                    ordered = TRUE, levels = c("Low", "Medium", "High"))
age <- round(rnorm(n, mean = 35, sd = 10))

# Konversi edukasi ordinal ke skor numerik jika diperlukan
edu_num <- as.numeric(edu_level)

# Model logit true
logit <- -1 + 0.5 * (gender == "Male") + 0.4 * edu_num + 0.03 * age
prob <- 1 / (1 + exp(-logit))
response <- rbinom(n, 1, prob)

data <- data.frame(response, gender, edu_level, age)
head(data)

Interpretasi: Data simulasi menghasilkan variabel biner response berdasarkan logit yang bergantung pada jenis kelamin, skor pendidikan, dan usia. Prediktor edu_level dapat diuji perlakuannya.


10.2 Eksplorasi Data

10.2.1 Statistik Deskriptif

library(dplyr)
data %>% group_by(response) %>% summarise(mean_age = mean(age),
                                          prop_male = mean(gender == "Male"),
                                          .groups = 'drop')

Interpretasi: Rata-rata usia dan proporsi jenis kelamin pria dihitung per nilai response. Perbedaan mencolok bisa menandakan hubungan antara prediktor dan respon.

10.2.2 Distribusi Prediktor

summary(data$gender)
## Female   Male 
##    239    261
summary(data$edu_level)
##    Low Medium   High 
##    149    164    187
hist(data$age, breaks = 20, col = "lightblue", main = "Distribusi Usia")

Interpretasi: Distribusi variabel gender dan edu_level menunjukkan penyebaran kategori yang seimbang. Usia terdistribusi normal dengan rata-rata mendekati 35.

10.2.3 Visualisasi Interaktif

library(ggplot2)
ggplot(data, aes(x = edu_level, fill = factor(response))) + 
  geom_bar(position = "fill") + 
  labs(y = "Proportion", fill = "Response", title = "Proporsi Respon berdasarkan Pendidikan")

Interpretasi: Peningkatan proporsi respon positif pada level pendidikan lebih tinggi menunjukkan potensi hubungan antara edu_level dan response.


10.3 Perlakuan Variabel Ordinal

10.3.1 Treat sebagai Nominal (Dummy)

data$edu_nominal <- factor(data$edu_level, ordered = FALSE)
data$edu_nominal <- relevel(data$edu_nominal, ref = "Low")
model_dummy <- glm(response ~ gender + edu_nominal + age, data = data, family = binomial)
summary(model_dummy)
## 
## Call:
## glm(formula = response ~ gender + edu_nominal + age, family = binomial, 
##     data = data)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.91951    0.40927  -2.247 0.024658 *  
## genderMale         0.59848    0.21300   2.810 0.004958 ** 
## edu_nominalMedium  0.37457    0.25308   1.480 0.138862    
## edu_nominalHigh    0.80864    0.26222   3.084 0.002043 ** 
## age                0.03823    0.01080   3.541 0.000399 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 570.95  on 499  degrees of freedom
## Residual deviance: 537.31  on 495  degrees of freedom
## AIC: 547.31
## 
## Number of Fisher Scoring iterations: 4

Interpretasi: Koefisien edu_nominalMedium dan edu_nominalHigh mengukur perubahan log-odds dibanding level referensi “Low”. Misalnya, koefisien positif berarti kemungkinan response = 1 lebih tinggi daripada kategori referensi.

10.3.2 Treat sebagai Rasio (Numeric Rank)

data$edu_score <- as.numeric(data$edu_level)
model_score <- glm(response ~ gender + edu_score + age, data = data, family = binomial)
summary(model_score)
## 
## Call:
## glm(formula = response ~ gender + edu_score + age, family = binomial, 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.33445    0.45787  -2.914 0.003563 ** 
## genderMale   0.59910    0.21296   2.813 0.004905 ** 
## edu_score    0.40344    0.13064   3.088 0.002014 ** 
## age          0.03829    0.01079   3.548 0.000388 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 570.95  on 499  degrees of freedom
## Residual deviance: 537.33  on 496  degrees of freedom
## AIC: 545.33
## 
## Number of Fisher Scoring iterations: 4

Interpretasi: Satu peningkatan unit skor pendidikan meningkatkan log-odds secara linier. Pendekatan ini efisien tapi valid hanya jika jarak antar level ordinal memang proporsional.

10.3.3 Visualisasi Prediksi

data$pred_dummy <- predict(model_dummy, type = "response")
data$pred_score <- predict(model_score, type = "response")

library(reshape2)
## Warning: package 'reshape2' was built under R version 4.4.3
plot_data <- melt(data[, c("edu_level", "pred_dummy", "pred_score")], id.vars = "edu_level")

ggplot(plot_data, aes(x = edu_level, y = value, fill = variable)) + 
  geom_boxplot(position = position_dodge()) +
  labs(y = "Predicted Probability", fill = "Model", title = "Perbandingan Probabilitas Prediksi")

Interpretasi: Model dummy memberikan prediksi yang berbeda untuk setiap level edu_level, sementara model skor menghasilkan tren linier. Perbedaan ini menyoroti asumsi struktural yang digunakan.

10.3.4 Perbandingan Model

AIC(model_dummy, model_score)

Interpretasi: Nilai AIC yang lebih rendah menunjukkan model dengan fit yang lebih baik terhadap data. Jika perbedaan AIC > 2, model dengan AIC lebih rendah lebih disukai.

(Bab 1–10 tetap)

11 Pemilihan Model Regresi Logistik dan Evaluasi

11.1 Membangun Model Regresi Logistik: Pendekatan Confirmatory dan Exploratory

11.1.1 Definisi dan Konsep Dasar

Pemodelan regresi logistik dapat dilakukan dengan dua pendekatan utama: - Pendekatan Confirmatory: membangun model berdasarkan teori atau hipotesis yang sudah ada sebelumnya. Peneliti sudah memiliki ide tentang variabel-variabel yang relevan dan hubungan yang ingin diuji. Cocok untuk riset deduktif. - Pendekatan Exploratory: digunakan ketika peneliti tidak memiliki dugaan awal tentang hubungan antar variabel. Tujuannya adalah menemukan pola atau model terbaik dari data secara empiris. Umum dipakai dalam data mining atau riset awal.

11.1.2 Tujuan dan Manfaat

  • Menghasilkan model yang dapat diinterpretasikan secara teoritis (confirmatory)
  • Menemukan model yang optimal secara prediktif (exploratory)
  • Menghindari kesalahan spesifikasi model
  • Membantu validasi temuan riset dengan pendekatan dua arah

11.1.3 Langkah Pembangunan Model

(a) Pendekatan Confirmatory) 1. Tinjau literatur atau teori yang relevan 2. Tentukan variabel utama dan kontrol 3. Bangun model sesuai struktur teoritis 4. Uji kesesuaian model terhadap data

(b) Pendekatan Exploratory: 1. Identifikasi sebanyak mungkin kandidat prediktor 2. Lakukan seleksi variabel berbasis statistik (misalnya stepwise atau penalized regression) 3. Evaluasi performa model dengan metrik prediktif seperti AIC, AUC 4. Lakukan validasi silang untuk memastikan generalisasi

11.1.4 Simulasi Model Confirmatory dan Exploratory

# Model confirmatory (misalnya berdasarkan teori: gender dan age)
model_confirm <- glm(response ~ gender + age, data = data, family = binomial)

# Model exploratory (biarkan algoritma memilih)
model_explore <- step(glm(response ~ ., data = data, family = binomial), direction = "both")
## Start:  AIC=550.39
## response ~ gender + edu_level + age + edu_nominal + edu_score + 
##     pred_dummy + pred_score
## 
## 
## Step:  AIC=550.39
## response ~ gender + edu_level + age + edu_nominal + pred_dummy + 
##     pred_score
## 
## 
## Step:  AIC=550.39
## response ~ gender + edu_level + age + pred_dummy + pred_score
## 
##              Df Deviance    AIC
## - edu_level   2   538.72 548.72
## - pred_score  1   537.13 549.13
## - pred_dummy  1   537.16 549.16
## - gender      1   537.70 549.70
## - age         1   537.71 549.71
## <none>            536.39 550.39
## 
## Step:  AIC=548.72
## response ~ gender + age + pred_dummy + pred_score
## 
##               Df Deviance    AIC
## - pred_dummy   1   538.72 546.72
## - pred_score   1   538.73 546.73
## - gender       1   538.79 546.79
## - age          1   538.80 546.80
## <none>             538.72 548.72
## + edu_score    1   537.15 549.15
## + edu_nominal  2   536.39 550.39
## + edu_level    2   536.39 550.39
## 
## Step:  AIC=546.72
## response ~ gender + age + pred_score
## 
##               Df Deviance    AIC
## - gender       1   538.79 544.79
## - age          1   538.80 544.80
## <none>             538.72 546.72
## + edu_score    1   537.16 547.16
## + pred_dummy   1   538.72 548.72
## + edu_level    2   537.16 549.16
## + edu_nominal  2   537.16 549.16
## - pred_score   1   547.04 553.04
## 
## Step:  AIC=544.79
## response ~ age + pred_score
## 
##               Df Deviance    AIC
## - age          1   538.82 542.82
## <none>             538.79 544.79
## + edu_score    1   538.71 546.71
## + gender       1   538.72 546.72
## + pred_dummy   1   538.79 546.79
## + edu_level    2   538.64 548.64
## + edu_nominal  2   538.64 548.64
## - pred_score   1   555.43 559.43
## 
## Step:  AIC=542.82
## response ~ pred_score
## 
##               Df Deviance    AIC
## <none>             538.82 542.82
## + age          1   538.79 544.79
## + gender       1   538.80 544.80
## + edu_score    1   538.81 544.81
## + pred_dummy   1   538.82 544.82
## + edu_level    2   538.72 546.72
## + edu_nominal  2   538.72 546.72
## - pred_score   1   570.95 572.95

11.1.5 Interpretasi dan Diskusi

  • Model confirmatory cocok untuk validasi hipotesis dan mudah dijustifikasi secara teoritis, tapi bisa saja tidak optimal dalam prediksi.
  • Model exploratory lebih baik dalam akurasi prediksi, namun bisa overfitting atau kurang relevansi teoritis.
  • Idealnya, gunakan eksplorasi untuk menemukan pola lalu konfirmasi dengan model teoritis.

11.2 Metode Stepwise: Forward, Backward, dan Kedua Arah

11.2.1 Definisi Metode

  • Forward selection: mulai dari model kosong, tambahkan prediktor satu per satu berdasarkan peningkatan kebaikan model.
  • Backward elimination: mulai dari model lengkap, hapus prediktor satu per satu yang kontribusinya kecil.
  • Stepwise: gabungan dari keduanya, menambahkan dan menghapus variabel secara dinamis.

11.2.2 Kriteria Seleksi

  • AIC (Akaike Information Criterion): ukuran fit model dengan penalti jumlah parameter.
  • BIC (Bayesian Information Criterion): lebih ketat dari AIC.
  • Deviance dan Log-Likelihood: ukuran langsung dari kesesuaian model terhadap data.

11.2.3 Simulasi dan Implementasi di R

model_full <- glm(response ~ ., data = data, family = binomial)
model_stepwise <- step(model_full, direction = "both")
## Start:  AIC=550.39
## response ~ gender + edu_level + age + edu_nominal + edu_score + 
##     pred_dummy + pred_score
## 
## 
## Step:  AIC=550.39
## response ~ gender + edu_level + age + edu_nominal + pred_dummy + 
##     pred_score
## 
## 
## Step:  AIC=550.39
## response ~ gender + edu_level + age + pred_dummy + pred_score
## 
##              Df Deviance    AIC
## - edu_level   2   538.72 548.72
## - pred_score  1   537.13 549.13
## - pred_dummy  1   537.16 549.16
## - gender      1   537.70 549.70
## - age         1   537.71 549.71
## <none>            536.39 550.39
## 
## Step:  AIC=548.72
## response ~ gender + age + pred_dummy + pred_score
## 
##               Df Deviance    AIC
## - pred_dummy   1   538.72 546.72
## - pred_score   1   538.73 546.73
## - gender       1   538.79 546.79
## - age          1   538.80 546.80
## <none>             538.72 548.72
## + edu_score    1   537.15 549.15
## + edu_nominal  2   536.39 550.39
## + edu_level    2   536.39 550.39
## 
## Step:  AIC=546.72
## response ~ gender + age + pred_score
## 
##               Df Deviance    AIC
## - gender       1   538.79 544.79
## - age          1   538.80 544.80
## <none>             538.72 546.72
## + edu_score    1   537.16 547.16
## + pred_dummy   1   538.72 548.72
## + edu_level    2   537.16 549.16
## + edu_nominal  2   537.16 549.16
## - pred_score   1   547.04 553.04
## 
## Step:  AIC=544.79
## response ~ age + pred_score
## 
##               Df Deviance    AIC
## - age          1   538.82 542.82
## <none>             538.79 544.79
## + edu_score    1   538.71 546.71
## + gender       1   538.72 546.72
## + pred_dummy   1   538.79 546.79
## + edu_level    2   538.64 548.64
## + edu_nominal  2   538.64 548.64
## - pred_score   1   555.43 559.43
## 
## Step:  AIC=542.82
## response ~ pred_score
## 
##               Df Deviance    AIC
## <none>             538.82 542.82
## + age          1   538.79 544.79
## + gender       1   538.80 544.80
## + edu_score    1   538.81 544.81
## + pred_dummy   1   538.82 544.82
## + edu_level    2   538.72 546.72
## + edu_nominal  2   538.72 546.72
## - pred_score   1   570.95 572.95
summary(model_stepwise)
## 
## Call:
## glm(formula = response ~ pred_score, family = binomial, data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -2.6796     0.6758  -3.965 7.34e-05 ***
## pred_score    5.1353     0.9335   5.501 3.78e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 570.95  on 499  degrees of freedom
## Residual deviance: 538.82  on 498  degrees of freedom
## AIC: 542.82
## 
## Number of Fisher Scoring iterations: 4

11.2.4 Interpretasi Hasil

  • Variabel yang dipertahankan dalam model akhir merupakan prediktor signifikan berdasarkan kriteria statistik.
  • Bandingkan AIC model awal dan akhir. Penurunan AIC berarti model lebih efisien.
  • Evaluasi signifikansi tiap prediktor dan validasi model dengan data baru.

11.3 Evaluasi Model: ROC dan AUC

11.3.1 Definisi dan Konsep Dasar

ROC (Receiver Operating Characteristic) dan AUC (Area Under the Curve) merupakan alat utama dalam mengevaluasi performa model klasifikasi biner, termasuk regresi logistik. Evaluasi ini dilakukan dengan cara memvisualisasikan hubungan antara dua metrik klasifikasi utama:

  • True Positive Rate (TPR) atau Sensitivitas: \[ TPR = \frac{TP}{TP + FN} \] Menunjukkan proporsi kasus positif yang berhasil dikenali dengan benar oleh model.

  • False Positive Rate (FPR): \[ FPR = \frac{FP}{FP + TN} \] Menunjukkan proporsi kasus negatif yang salah diklasifikasikan sebagai positif oleh model.

Kurva ROC dibentuk dengan menghitung TPR dan FPR untuk berbagai nilai ambang prediksi (threshold). AUC adalah luas area di bawah kurva tersebut, yang merepresentasikan probabilitas bahwa model dapat membedakan antara satu observasi positif dan satu observasi negatif secara acak.

11.3.2 Tujuan dan Manfaat ROC-AUC

Penggunaan ROC dan AUC memiliki sejumlah keunggulan penting, terutama dalam konteks model klasifikasi biner:

  • Evaluasi Model Tanpa Ambang Tertentu: ROC mempertimbangkan seluruh kemungkinan ambang keputusan, tidak hanya satu nilai tertentu (misal threshold 0.5).
  • Perbandingan Model: AUC memberikan ukuran skalar tunggal yang bisa digunakan untuk membandingkan performa berbagai model.
  • Ketahanan terhadap Imbalance: ROC relatif stabil meskipun terdapat ketidakseimbangan antara jumlah kelas 0 dan kelas 1.

11.3.3 Implementasi di R

11.3.3.1 Menyiapkan Data dan Model

Sebelum membuat ROC, kita asumsikan bahwa data sudah berisi prediksi probabilitas dari model regresi logistik. Berikut adalah contoh sederhana:

library(pROC)
set.seed(123)
data <- data.frame(
  response = factor(sample(c(0, 1), 200, replace = TRUE)),
  age = rnorm(200, 35, 10),
  gender = factor(sample(c("Male", "Female"), 200, replace = TRUE)),
  edu_score = sample(1:3, 200, replace = TRUE)
)

model_logit <- glm(response ~ age + gender + edu_score, data = data, family = binomial)
data$predicted <- predict(model_logit, type = "response")

11.3.3.2 Membuat Kurva ROC dan Menghitung AUC

roc_obj <- roc(data$response, data$predicted)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_obj, col = "darkblue", main = "Kurva ROC")

auc_val <- auc(roc_obj)
auc_val
## Area under the curve: 0.5362

11.3.4 Interpretasi Hasil

  • Jika AUC \(\approx 0.5\), model sama sekali tidak memiliki kemampuan klasifikasi (setara dengan tebakan acak).
  • Jika AUC \(> 0.7\), model sudah dianggap memiliki kemampuan klasifikasi yang cukup baik.
  • Jika AUC \(> 0.8\), model memiliki performa sangat baik.
  • Jika AUC \(> 0.9\), model dapat dikategorikan luar biasa, tetapi perlu diwaspadai potensi overfitting.

Contoh: Jika nilai AUC yang dihasilkan adalah \(0.83\), maka interpretasi sederhananya adalah: terdapat peluang 83% bahwa model akan memberikan skor probabilitas lebih tinggi untuk observasi positif daripada negatif yang dipilih secara acak.

11.3.5 Visualisasi Alternatif: Multiple Model Comparison

Untuk membandingkan lebih dari satu model, ROC dapat ditumpuk pada plot yang sama:

model_1 <- glm(response ~ age, data = data, family = binomial)
model_2 <- glm(response ~ age + gender + edu_score, data = data, family = binomial)

roc_1 <- roc(data$response, predict(model_1, type = "response"))
## Setting levels: control = 0, case = 1
## Setting direction: controls > cases
roc_2 <- roc(data$response, predict(model_2, type = "response"))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_1, col = "red", main = "Perbandingan ROC", lwd = 2)
plot(roc_2, col = "blue", add = TRUE, lwd = 2)
legend("bottomright", legend = c("Model 1", "Model 2"), col = c("red", "blue"), lwd = 2)

Interpretasi Tambahan: Jika ROC model ke-2 berada di atas model ke-1 sepanjang kurva, maka model ke-2 memiliki performa klasifikasi yang lebih baik pada semua threshold.

11.3.6 Evaluasi Threshold Manual dan ROC Rinci

Selain membuat ROC secara otomatis, kita bisa membuat ROC secara eksplisit dengan mencoba berbagai threshold:

thresh_seq <- seq(0, 1, by = 0.05)
roc_table <- data.frame(threshold = thresh_seq, TPR = NA, FPR = NA)

for (i in seq_along(thresh_seq)) {
  cut <- thresh_seq[i]
  pred_class <- ifelse(data$predicted >= cut, 1, 0)
  tab <- table(
    Pred = factor(pred_class, levels = c(0, 1)),
    Obs  = factor(data$response, levels = c(0, 1))
  )
  
  TP <- tab["1", "1"]
  FP <- tab["1", "0"]
  FN <- tab["0", "1"]
  TN <- tab["0", "0"]
  
  roc_table$TPR[i] <- TP / (TP + FN)
  roc_table$FPR[i] <- FP / (FP + TN)
}

plot(roc_table$FPR, roc_table$TPR, type = "l", col = "forestgreen", lwd = 2,
     main = "ROC dari Threshold Manual",
     xlab = "False Positive Rate", ylab = "True Positive Rate")

Penjelasan: ROC ini dibentuk dari pengujian sensitivitas dan spesifisitas model terhadap berbagai cutoff nilai prediksi.

11.4 Pseudo R-Squared

11.4.1 Definisi dan Konsep Dasar

Dalam regresi linear, goodness-of-fit suatu model sering diukur menggunakan koefisien determinasi \(R^2\). Namun, dalam regresi logistik yang bersifat non-linear dan berbasis probabilitas, ukuran ini tidak dapat diterapkan secara langsung. Oleh karena itu, dikembangkanlah pseudo \(R^2\), yaitu metrik alternatif yang memiliki interpretasi serupa namun dikhususkan untuk model-model berbasis likelihood.

Beberapa varian yang umum digunakan:

  • McFadden’s \(R^2\): \[ R^2_{McF} = 1 - \frac{\log L_{full}}{\log L_{null}} \]
  • Cox & Snell \(R^2\): \[ R^2_{CS} = 1 - \left(\frac{L_{null}}{L_{full}}\right)^{2/n} \]
  • Nagelkerke \(R^2\) (penyesuaian dari Cox & Snell agar maksimumnya 1): \[ R^2_{Nag} = \frac{R^2_{CS}}{1 - (L_{null})^{2/n}} \]

11.4.2 Tujuan dan Manfaat

  • Mengukur kekuatan prediksi model
  • Menjadi dasar evaluasi dan perbandingan antar model regresi logistik
  • Memberikan panduan dalam seleksi model dengan banyak prediktor

Nilai pseudo \(R^2\) yang lebih tinggi menunjukkan model memiliki fit yang lebih baik terhadap data.

11.4.3 Implementasi di R

Dengan paket pscl untuk McFadden:

library(pscl)
model <- glm(response ~ age + gender + edu_score, data = data, family = binomial)
pR2(model)

Dengan paket rcompanion untuk Nagelkerke:

library(rcompanion)
nagelkerke(model)

11.4.4 Interpretasi Hasil

Nilai McFadden \(R^2\): - \(> 0.2\): sangat baik dalam konteks ilmu sosial - \(0.1 - 0.2\): moderat - \(< 0.1\): kurang baik, tetapi bisa diterima tergantung konteks

Contoh output:

> pR2(model)
          llh       llhNull            G2     McFadden         r2ML         r2CU
 -100.15363  -140.17823   80.04920     0.2854     0.3059     0.4132

Interpretasi: - McFadden R² = 0.285 artinya model menjelaskan sekitar 28.5% variasi dibandingkan model null. - Nilai ini cukup tinggi untuk regresi logistik dan menunjukkan model memiliki kemampuan prediksi yang kuat.


11.5 Tabel Klasifikasi dan Evaluasi

11.5.1 Konsep dan Definisi

Setelah kita memiliki model prediktif, penting untuk mengevaluasi bagaimana performa klasifikasinya. Salah satu alat utama dalam regresi logistik adalah tabel klasifikasi (confusion matrix), yang membandingkan hasil prediksi model terhadap nilai aktual.

Aktual = 1 Aktual = 0
Prediksi = 1 TP FP
Prediksi = 0 FN TN
  • TP = True Positive
  • TN = True Negative
  • FP = False Positive
  • FN = False Negative

11.5.2 Metrik Evaluasi dari Tabel Klasifikasi

  • Akurasi: \(\frac{TP + TN}{TP + TN + FP + FN}\)
  • Sensitivitas (Recall): \(\frac{TP}{TP + FN}\)
  • Spesifisitas: \(\frac{TN}{TN + FP}\)
  • Precision: \(\frac{TP}{TP + FP}\)
  • F1 Score: \(2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}\)

11.5.3 Implementasi di R

library(caret)
pred_class <- ifelse(predict(model, type = "response") > 0.5, 1, 0)
confusionMatrix(factor(pred_class), factor(data$response))

11.5.4 Interpretasi

Hasil confusion matrix akan mencakup seluruh metrik evaluasi: - Accuracy menunjukkan proporsi prediksi yang benar - Sensitivity tinggi berarti model sensitif terhadap mendeteksi kelas positif - Specificity tinggi berarti model akurat menghindari false positive - F1 Score baik untuk data imbalance karena menggabungkan precision dan recall

Dengan demikian, tabel klasifikasi bukan hanya alat dasar evaluasi, tapi juga dasar untuk pengambilan keputusan threshold dan seleksi model.

11.6 Metode Perbandingan Model dalam Regresi Logistik

11.6.1 Definisi dan Tujuan

Dalam regresi logistik, kita seringkali perlu membandingkan beberapa model alternatif untuk menentukan model mana yang paling tepat digunakan. Tujuan dari metode perbandingan model adalah:

  • Menentukan model dengan kebaikan-of-fit terbaik
  • Menilai efisiensi prediktor dan parameter
  • Memilih model yang tidak terlalu kompleks namun cukup menjelaskan data

11.6.2 Kriteria Perbandingan

  1. Akaike Information Criterion (AIC) \[ AIC = -2 \log(L) + 2k \] Semakin kecil nilai AIC, semakin baik model tersebut dari sisi kompromi antara fit dan kompleksitas.

  2. Bayesian Information Criterion (BIC) \[ BIC = -2 \log(L) + k \log(n) \] BIC menghukum model kompleks lebih keras dibanding AIC, cocok digunakan bila ukuran sampel besar.

  3. Log-Likelihood (LL) \[ LL = \log(Likelihood\ Function) \] Model dengan LL lebih tinggi memberikan penjelasan data yang lebih baik.

  4. Pseudo \(R^2\) Dapat digunakan sebagai pelengkap AIC dan BIC untuk menilai kekuatan model secara statistik.

11.6.3 Simulasi Perbandingan Model di R

model1 <- glm(response ~ age, data = data, family = binomial)
model2 <- glm(response ~ age + gender + edu_score, data = data, family = binomial)

AIC(model1, model2)
BIC(model1, model2)
logLik(model1)
logLik(model2)

11.6.4 Interpretasi Hasil

  • Jika AIC model2 lebih rendah dari model1 dan perbedaan > 2, maka model2 secara statistik lebih baik.
  • Jika BIC juga mendukung model2, maka model tersebut lebih disukai bahkan dalam konteks parsimonious modeling.
  • Nilai LL lebih tinggi pada model2 menunjukkan ia memberikan penjelasan data yang lebih akurat.

11.7 Likelihood-Ratio Test

11.7.1 Konsep Dasar dan Tujuan

Uji Likelihood Ratio digunakan untuk membandingkan dua model logistik yang nested, artinya satu model merupakan versi sederhana dari model yang lain.

Misalnya: - Model0 (sederhana): \(Y \sim X_1\) - Model1 (lengkap): \(Y \sim X_1 + X_2\)

Tujuannya adalah menguji apakah penambahan variabel (X₂) memberikan peningkatan signifikan terhadap fit model.

11.7.2 Rumus Uji Likelihood Ratio

\[ G^2 = -2 (\log L_{0} - \log L_{1}) \] Dimana: - \(\log L_0\) = log-likelihood dari model sederhana - \(\log L_1\) = log-likelihood dari model penuh

Statistik \(G^2\) mengikuti distribusi \(\chi^2\) dengan derajat kebebasan sebesar selisih jumlah parameter antara dua model.

11.7.3 Langkah-langkah

  1. Estimasi model null dan model penuh
  2. Hitung log-likelihood keduanya
  3. Hitung nilai \(G^2\)
  4. Bandingkan dengan nilai kritis \(\chi^2\) atau gunakan p-value

11.7.4 Implementasi R

library(lmtest)
lrtest(model1, model2)

11.7.5 Interpretasi Hasil

Jika p-value < 0.05, maka terdapat bukti yang cukup bahwa model penuh lebih baik dibandingkan model sederhana secara statistik. Artinya, penambahan prediktor memberikan kontribusi signifikan terhadap model.

Contoh output:

Likelihood ratio test
Model 1: response ~ age
Model 2: response ~ age + gender + edu_score

  LRT = 18.22, df = 2, p-value = 0.00011

Interpretasi: Model 2 secara signifikan lebih baik dari Model 1 karena p < 0.05 dan deviance turun drastis.

11.8 Prinsip Parsimony

11.8.1 Definisi dan Konsep

Parsimony dalam pemodelan statistik mengacu pada prinsip memilih model yang paling sederhana yang tetap dapat menjelaskan data dengan baik. Dalam regresi logistik, prinsip ini membantu menghindari overfitting dan menjaga interpretabilitas model.

“Entia non sunt multiplicanda praeter necessitatem” — Prinsip Occam’s Razor

Model dengan banyak variabel prediktor bisa terlihat menjanjikan secara statistik, tetapi jika terlalu kompleks, model tersebut: - Sulit diinterpretasi - Cenderung menyesuaikan noise - Kurang generalisasi untuk data baru

11.8.2 Tujuan Parsimony

  • Meningkatkan generalisasi model
  • Mengurangi multikolinearitas
  • Memudahkan interpretasi koefisien
  • Efisiensi komputasi

11.8.3 Strategi Mewujudkan Parsimony

  1. Gunakan backward elimination untuk menghapus variabel tidak signifikan.
  2. Lakukan cross-validation untuk menilai stabilitas model.
  3. Gunakan penalized regression (Lasso) untuk otomatisasi seleksi variabel.
library(glmnet)
x <- model.matrix(response ~ ., data)[,-1]
y <- data$response
cvfit <- cv.glmnet(x, y, family = "binomial", alpha = 1)
plot(cvfit)

11.8.4 Indikator Praktis

  • AIC / BIC minimum
  • Tidak ada variabel dengan p-value > 0.1
  • McFadden R² yang stabil meski model disederhanakan

11.9 Evaluasi Tabel Klasifikasi dan Akurasi Model

11.9.1 Konsep Umum

Setelah klasifikasi dilakukan (misal: prediksi probabilitas > 0.5 dianggap 1), performa model dievaluasi lewat tabel klasifikasi (confusion matrix).

Aktual = 1 Aktual = 0
Prediksi = 1 TP FP
Prediksi = 0 FN TN

11.9.2 Metrik Umum

  • Akurasi: \(\frac{TP + TN}{TP + TN + FP + FN}\)
  • Precision: \(\frac{TP}{TP + FP}\)
  • Recall (Sensitivitas): \(\frac{TP}{TP + FN}\)
  • Spesifisitas: \(\frac{TN}{TN + FP}\)
  • F1 Score: \(\frac{2 \cdot Precision \cdot Recall}{Precision + Recall}\)

11.9.3 Simulasi R

library(caret)
model <- glm(response ~ age + gender + edu_score, data = data, family = binomial)
probs <- predict(model, type = "response")
class <- ifelse(probs > 0.5, 1, 0)
confusionMatrix(factor(class), factor(data$response))

11.9.4 Interpretasi

  • Akurasi tinggi tapi precision rendah: banyak false positive
  • Recall tinggi tapi spesifisitas rendah: banyak false alarm
  • F1 Score digunakan ketika data tidak seimbang dan kita butuh keseimbangan precision dan recall

11.9.1 Sensitivitas dan Spesifisitas

Sensitivitas \[ \text{Sensitivity} = \frac{TP}{TP + FN} \] Menunjukkan kemampuan model mengenali kelas positif secara benar.

Spesifisitas \[ \text{Specificity} = \frac{TN}{TN + FP} \] Mengukur kemampuan model menghindari false positive.

Simulasi Visual

thresholds <- seq(0.01, 0.99, by = 0.01)
sens <- spec <- numeric(length(thresholds))

for (i in seq_along(thresholds)) {
  class_pred <- ifelse(probs >= thresholds[i], 1, 0)
  cm <- table(factor(class_pred), factor(data$response))
  TP <- cm["1","1"]; TN <- cm["0","0"]
  FP <- cm["1","0"]; FN <- cm["0","1"]
  sens[i] <- TP / (TP + FN)
  spec[i] <- TN / (TN + FP)
}

plot(thresholds, sens, type = "l", col = "blue", ylim = c(0,1), ylab = "Rate",
     xlab = "Threshold", main = "Sensitivitas vs Spesifisitas")
lines(thresholds, spec, col = "red")
legend("bottomleft", legend = c("Sensitivity", "Specificity"),
       col = c("blue", "red"), lty = 1)

Interpretasi Kurva - Perpotongan antara sensitivitas dan spesifisitas sering menjadi threshold terbaik. - Threshold ekstrem (mendekati 0 atau 1) menyebabkan salah satu metrik anjlok drastis.

11.10 Detail ROC: Penjelasan Kurva ROC (Receiver Operating Characteristic)

11.10.1 Konsep Dasar

Kurva ROC (Receiver Operating Characteristic) adalah alat visual dan kuantitatif untuk mengevaluasi kemampuan model klasifikasi biner dalam membedakan antara dua kelas. ROC digunakan dengan sangat luas, termasuk pada regresi logistik, untuk menggambarkan trade-off antara sensitivitas dan spesifisitas.

Definisi: - True Positive Rate (TPR) / Sensitivitas: \[ TPR = \frac{TP}{TP + FN} \] - False Positive Rate (FPR): \[ FPR = \frac{FP}{FP + TN} \]

ROC adalah grafik antara TPR di sumbu y dan FPR di sumbu x, dihitung untuk berbagai nilai ambang (threshold) antara 0 dan 1.

11.10.2 Manfaat ROC Curve

  • Menyediakan gambaran menyeluruh performa model untuk semua nilai threshold
  • Menghindari bias karena pemilihan threshold tunggal
  • Memungkinkan perbandingan antar model klasifikasi

11.10.3 Implementasi di R

library(pROC)
model <- glm(response ~ age + gender + edu_score, data = data, family = binomial)
preds <- predict(model, type = "response")
roc_curve <- roc(data$response, preds)
plot(roc_curve, col = "darkgreen", lwd = 2, main = "Kurva ROC")
auc(roc_curve)

11.10.4 Interpretasi AUC

AUC (Area Under the Curve) merepresentasikan probabilitas bahwa model akan memberikan skor yang lebih tinggi untuk observasi positif dibandingkan negatif secara acak.

Skala interpretasi AUC: - AUC = 0.5 → tidak lebih baik dari tebak acak - 0.6–0.7 → lemah - 0.7–0.8 → cukup - 0.8–0.9 → baik - >0.9 → sangat baik hingga overfitting

Jika AUC = 0.82, maka terdapat peluang 82% bahwa model akan memberi skor probabilitas yang lebih tinggi untuk sampel positif dibanding negatif.

11.10.5 Visualisasi Tambahan: Threshold Performance

coords(roc_curve, "best", ret = c("threshold", "sensitivity", "specificity"))

Fungsi ini akan memberikan threshold optimal berdasarkan kriteria seperti Youden’s Index (sensitivitas + spesifisitas - 1).


11.11 Precision-Recall Curve (PR Curve)

11.11.1 Definisi dan Latar Belakang

Precision-Recall (PR) Curve adalah metode evaluasi performa model klasifikasi biner yang lebih tepat digunakan pada dataset tidak seimbang. PR Curve mengatasi kekurangan ROC saat jumlah kelas positif jauh lebih kecil dari kelas negatif.

  • Precision: \[ Precision = \frac{TP}{TP + FP} \]
  • Recall (Sensitivitas): \[ Recall = \frac{TP}{TP + FN} \]

Kurva PR menggambarkan precision (sumbu y) terhadap recall (sumbu x) pada berbagai nilai threshold.

11.11.2 Keunggulan PR Curve

  • Lebih fokus pada performa untuk kelas positif
  • Memberikan insight lebih tajam pada kasus fraud detection, churn prediction, dan medical diagnosis

11.11.3 Simulasi di R

library(PRROC)
fg <- preds[data$response == 1]
bg <- preds[data$response == 0]
pr <- pr.curve(scores.class0 = fg, scores.class1 = bg, curve = TRUE)
plot(pr, main = "Precision-Recall Curve")

11.11.4 Interpretasi

PR Curve yang lebih tinggi dan lebih ke kanan menunjukkan model yang lebih baik. Area Under PR Curve (PR-AUC) digunakan sebagai ringkasan performa.

Model dengan PR-AUC = 0.78 menunjukkan keseimbangan yang baik antara kemampuan mengidentifikasi positif dan menghindari false positive.

11.11.5 Perbandingan dengan ROC

Aspek ROC Curve PR Curve
Fokus Seluruh populasi Kelas positif
Cocok untuk Kelas seimbang Kelas tidak seimbang
Nilai rendah TPR dan FPR rendah Precision bisa anjlok

11.12 Pseudo R-squared pada Regresi Logistik

11.12.1 Definisi dan Motivasi

Dalam regresi logistik, karena output adalah probabilitas bukan nilai numerik kontinu, maka tidak dapat digunakan \(R^2\) klasik. Sebagai gantinya, digunakan metrik alternatif bernama pseudo \(R^2\).

Beberapa Versi Pseudo \(R^2\): - McFadden \(R^2\): \[ R^2_{McF} = 1 - \frac{\log L_{full}}{\log L_{null}} \] - Cox & Snell dan Nagelkerke \(R^2\) juga tersedia.

11.12.2 Interpretasi

  • Nilai 0.2–0.4 dianggap sangat baik dalam konteks sosial atau ekonomi
  • Nilai > 0.4 sangat jarang kecuali model sangat overfitting

11.12.3 Implementasi di R

library(pscl)
pR2(model)

library(rcompanion)
nagelkerke(model)

11.12.4 Contoh Interpretasi Output

Jika:

McFadden = 0.27
Nagelkerke = 0.36

Maka model menjelaskan sekitar 27% hingga 36% variabilitas log-likelihood dibanding model null. Ini sudah tergolong baik untuk model klasifikasi sosial-ekonomi.

12 Apa itu Distribusi Multinomial

12.1 Definisi dan Konsep Dasar

Distribusi multinomial adalah generalisasi dari distribusi binomial ketika hasil percobaan memiliki lebih dari dua kemungkinan kategori yang saling eksklusif. Distribusi ini sangat umum digunakan untuk data kategorik, di mana setiap percobaan menghasilkan satu dari \(k\) kemungkinan hasil.

Distribusi multinomial menggambarkan probabilitas mendapatkan kombinasi tertentu dari frekuensi kategori ketika dilakukan \(n\) percobaan independen, dengan peluang tetap untuk setiap kategori.

Rumus Distribusi Multinomial \[ P(X_1 = x_1, \dots, X_k = x_k) = \frac{n!}{x_1! \cdots x_k!} p_1^{x_1} \cdots p_k^{x_k} \] Dengan: - \(n\) = jumlah total percobaan - \(k\) = jumlah kategori - \(x_j\) = jumlah kemunculan kategori ke-\(j\) - \(p_j\) = probabilitas munculnya kategori ke-\(j\), dengan \(\sum_{j=1}^{k} p_j = 1\)

Syarat: 1. Setiap percobaan independen 2. Hasil percobaan berupa salah satu dari \(k\) kategori 3. Probabilitas kategori tetap konstan 4. Jumlah seluruh percobaan adalah tetap, \(n\)

Contoh Situasi: - Melempar dadu 100 kali dan menghitung jumlah masing-masing sisi - Survei pilihan makanan: nasi, mie, roti, pasta - Pemungutan suara dalam pemilu dengan lebih dari dua kandidat


12.2 Studi Kasus

Distribusi multinomial sering digunakan dalam pengamatan eksperimen sosial atau survei. Berikut studi kasus pengantar. Studi Kasus: Sebuah lembaga riset melakukan survei terhadap 300 orang mengenai moda transportasi utama yang mereka gunakan:

Moda Transportasi Jumlah
Mobil 120
Motor 90
Sepeda 60
Jalan Kaki 30

Distribusi jumlah pengamatan di atas mengikuti distribusi multinomial dengan: - \(n = 300\) - \(k = 4\) kategori - Probabilitas yang diperkirakan: \(\hat{p}_j = \frac{x_j}{n}\)

Distribusi ini membentuk dasar untuk analisis yang lebih kompleks seperti multinomial logistic regression.


12.3 Multinomial Logistic Regression

Multinomial Logistic Regression adalah teknik yang digunakan ketika variabel respon bersifat kategorik dengan lebih dari dua kategori yang tidak berurutan (tidak ordinal). Ini merupakan perluasan dari regresi logistik biner.

Tujuan: - Menjelaskan hubungan antara satu variabel kategorik (dengan \(J\) kategori) terhadap satu atau lebih variabel prediktor (numerik atau kategorik). - Mengestimasi probabilitas pemilihan setiap kategori sebagai fungsi dari prediktor.

12.3.1 Baseline-category Logit Model

Dalam model logit kategori-baseline, kita memilih satu kategori sebagai referensi atau baseline, lalu memodelkan log odds dari kategori lainnya terhadap baseline tersebut.

Misal: \[ P(Y = j \mid \mathbf{x}) = \frac{\exp(\mathbf{x}'\beta_j)}{1 + \sum_{l=1}^{J-1} \exp(\mathbf{x}'\beta_l)} \] Untuk \(j = 1, ..., J-1\) (kategori ke-\(J\) dijadikan baseline)

Dengan: - \(\mathbf{x}\) = vektor prediktor - \(\beta_j\) = koefisien regresi untuk kategori ke-\(j\) - \(J\) = jumlah total kategori

Kategori baseline memiliki koefisien 0 secara default.

12.3.2 Estimasi Parameter

Estimasi parameter dalam model logit kategori-baseline dilakukan dengan maximum likelihood estimation (MLE).

Log Likelihood: \[ \ell(\boldsymbol{\beta}) = \sum_{i=1}^{n} \sum_{j=1}^{J} y_{ij} \log(p_{ij}) \] Di mana: - \(y_{ij} = 1\) jika observasi ke-\(i\) memilih kategori \(j\), 0 jika tidak - \(p_{ij}\) = probabilitas observasi ke-\(i\) pada kategori \(j\)

Estimasi di R:

library(nnet)
# Anggap data$mode adalah variabel respon kategori (mobil, motor, sepeda, jalan kaki)
# dan prediktor adalah gender, income
model_multi <- multinom(mode ~ gender + income, data = data)
summary(model_multi)

Interpretasi Output: Output akan memberikan koefisien untuk setiap kategori dibandingkan dengan kategori baseline. Misalnya: - Jika baseline = “Jalan Kaki”, maka koefisien pada kategori “Mobil” menunjukkan log odds beralih dari “Jalan Kaki” ke “Mobil” saat prediktor meningkat.

Koefisien dapat dieksponensialkan untuk mendapatkan odds ratio:

exp(coef(model_multi))

12.3 Contoh Kasus

Sebagai kelanjutan dari teori distribusi multinomial, kita akan mengkaji satu studi kasus mengenai preferensi pelanggan terhadap 3 jenis produk minuman: Teh, Kopi, dan Susu. Variabel prediktor yang digunakan adalah:

12.3.1 Variabel

  • Usia (numerik)
  • Jenis Kelamin (laki-laki/perempuan)
  • Pendapatan (kategori: rendah/sedang/tinggi)

Tujuannya adalah untuk memprediksi preferensi minuman berdasarkan karakteristik demografis responden.


12.4 Simulasi Data

Berikut ini adalah kode untuk melakukan simulasi data kategori dan prediktor:

set.seed(123)
n <- 300
age <- round(rnorm(n, mean = 35, sd = 10))
gender <- sample(c("male", "female"), n, replace = TRUE)
income <- sample(c("low", "medium", "high"), n, replace = TRUE)

# Probabilitas preferensi berdasarkan logika demografis (simulasi)
prob_tea <- plogis(0.5 - 0.01 * age + ifelse(gender == "female", 0.2, -0.1))
prob_coffee <- plogis(0.7 + 0.02 * age + ifelse(income == "high", 0.4, -0.2))

prob_sisa <- 1 - prob_tea - prob_coffee
prob_susu <- ifelse(prob_sisa > 0, prob_sisa, 0.01)

prob_mat <- cbind(prob_tea, prob_coffee, prob_susu)
choice <- apply(prob_mat, 1, function(p) sample(c("tea", "coffee", "milk"), 1, prob = p))

sim_data <- data.frame(choice = factor(choice), age, gender = factor(gender), income = factor(income))

12.5 Estimasi Model

Estimasi dilakukan dengan multinomial logistic regression menggunakan nnet::multinom().

library(nnet)
model_mn <- multinom(choice ~ age + gender + income, data = sim_data)
summary(model_mn)

Model di atas akan mengestimasi dua set koefisien logit karena satu kategori akan dijadikan baseline (misalnya “milk”).

Koefisien logit mengindikasikan log odds terhadap baseline: - Positif → peluang kategori tersebut meningkat relatif terhadap baseline - Negatif → peluang kategori tersebut menurun relatif terhadap baseline


12.6 Nilai P-Value dan Interpretasi

Nilai p-value digunakan untuk menguji signifikansi dari setiap koefisien prediktor. Langkah perhitungan:

12.6.1 Perhitungan p-value

z_values <- summary(model_mn)$coefficients / summary(model_mn)$standard.errors
p_values <- 2 * (1 - pnorm(abs(z_values)))
p_values

12.6.2 Interpretasi

  • \(p < 0.05\) → prediktor signifikan
  • \(p > 0.05\) → prediktor tidak signifikan

Misal: - Jika age signifikan untuk kategori “coffee”, artinya usia mempengaruhi kecenderungan memilih kopi terhadap susu.


12.7 Prediksi dan Validasi

12.7.1 Prediksi

predicted_probs <- predict(model_mn, type = "probs")
predicted_class <- predict(model_mn)

12.7.2 Validasi

table(Predicted = predicted_class, Actual = sim_data$choice)
mean(predicted_class == sim_data$choice)  # akurasi

Untuk validasi lebih lanjut, bisa menggunakan cross-validation atau membagi data training-test.


12.8 Kesimpulan

Distribusi multinomial dan regresi logistik multinomial menyediakan kerangka kuat untuk menganalisis dan memprediksi variabel respon kategorik dengan lebih dari dua kelas.

Dalam bab ini: - Kita mempelajari bagaimana melakukan simulasi data kategori - Menyusun dan mengestimasi model logit multinomial - Menginterpretasikan koefisien serta p-value - Mengevaluasi performa klasifikasi model

Model ini sangat berguna dalam konteks pemilihan, preferensi, klasifikasi pasien, konsumen, maupun prediksi perilaku sosial.

13 Regresi Logistik Ordinal

13.1 Konsep Cumulative Logit Model

13.1.1 Definisi dan Latar Belakang

Regresi logistik ordinal digunakan ketika variabel respon bersifat kategorik berurutan (ordinal), contohnya: - Tingkat kepuasan: rendah, sedang, tinggi - Skor opini: sangat tidak setuju, tidak setuju, netral, setuju, sangat setuju

Tidak seperti regresi logistik multinomial yang memperlakukan setiap kategori secara independen, regresi ordinal memanfaatkan struktur urutan kategori untuk estimasi model yang lebih efisien.

Model paling umum adalah Cumulative Logit Model atau Proportional Odds Model (POM).

13.1.2 Rumus Model Logit Kumulatif

Model ini mengestimasi log odds kumulatif hingga kategori \(j\) sebagai: \[ \log\left(\frac{P(Y \leq j)}{P(Y > j)}\right) = \theta_j - \mathbf{x}'\beta \]

Dengan: - \(P(Y \leq j)\): probabilitas bahwa \(Y\) termasuk kategori ke-\(j\) atau lebih rendah - \(\theta_j\): threshold (intersep khusus kategori) - \(\mathbf{x}\): vektor prediktor - \(\beta\): koefisien regresi (tetap untuk semua kategori)

13.1.3 Asumsi Penting: Proportional Odds

Model ini mengasumsikan bahwa efek dari setiap prediktor \(\mathbf{x}\) sama untuk setiap cutpoint kategori. Artinya: \[ \beta_1 = \beta_2 = \cdots = \beta_{J-1} \]

Jika asumsi ini tidak terpenuhi, maka bisa dipertimbangkan model alternatif seperti partial proportional odds model atau non-proportional models.

13.1.4 Keunggulan Model Kumulatif

  • Lebih efisien daripada model multinomial
  • Memanfaatkan informasi ordinal
  • Menghasilkan interpretasi yang lebih stabil dan masuk akal

13.2 Interpretasi Koefisien

13.2.1 Interpretasi Umum

Koefisien \(\beta_k\) dalam cumulative logit model merepresentasikan perubahan log odds kumulatif akibat perubahan unit dari prediktor \(x_k\), dengan asumsi kategori respon berada di bawah atau sama dengan suatu tingkat \(j\).

13.2.2 Ekspresi Odds Ratio

Koefisien dapat ditransformasikan menjadi odds ratio sebagai: \[ OR = e^{\beta_k} \]

Jika \(\beta_k > 0\), maka prediktor meningkatkan kemungkinan respon berada di kategori lebih tinggi (lebih baik jika skala naik).

Jika \(\beta_k < 0\), maka prediktor meningkatkan kemungkinan respon berada di kategori lebih rendah.

13.2.3 Simulasi dan Estimasi di R

library(MASS)
# Simulasi data ordinal
set.seed(123)
Y <- cut(rnorm(300), breaks = quantile(rnorm(300), probs = c(0, .3, .6, 1)),
         labels = c("low", "medium", "high"), include.lowest = TRUE)
X1 <- rnorm(300, mean = 50, sd = 10)
X2 <- factor(sample(c("A", "B"), 300, replace = TRUE))
data <- data.frame(Y = ordered(Y), X1, X2)

# Estimasi model cumulative logit
model_ord <- polr(Y ~ X1 + X2, data = data, method = "logistic")
summary(model_ord)

13.2.4 Menghitung Nilai P

ctable <- coef(summary(model_ord))
p_values <- 2 * (1 - pnorm(abs(ctable[, "t value"])))
cbind(ctable, "p value" = round(p_values, 4))

13.2.5 Interpretasi Hasil Simulasi

  • Koefisien positif: menaikkan peluang berada di kategori atas
  • Koefisien negatif: menaikkan peluang berada di kategori bawah
  • Threshold \(\theta_j\) membagi ruang linear menjadi zona kategori

13.2.6 Visualisasi Probabilitas

library(effects)
plot(allEffects(model_ord))

Visualisasi ini memperlihatkan bagaimana probabilitas berada di masing-masing kategori berubah seiring nilai prediktor.

13.3 Studi Kasus

13.3.1 Latar Belakang

Data kepuasan pelanggan sering dikumpulkan dalam survei menggunakan skala Likert, misalnya: - Sangat Tidak Puas - Tidak Puas - Netral - Puas - Sangat Puas

Skala tersebut bersifat ordinal, sehingga model regresi logistik ordinal sangat sesuai digunakan.

13.3.2 Simulasi Dataset Survei Kepuasan

Simulasi dilakukan dengan mempertimbangkan faktor: - Lama penggunaan layanan (bulan): prediktor numerik - Jenis kelamin pelanggan - Segmentasi pelanggan (reguler, premium)

set.seed(123)
n <- 300
lama <- round(runif(n, 1, 36))
sex <- factor(sample(c("Pria", "Wanita"), n, replace = TRUE))
segment <- factor(sample(c("Reguler", "Premium"), n, replace = TRUE))

# Simulasi probabilitas ordinal berdasarkan prediktor
logit_scores <- 0.05 * lama + ifelse(sex == "Wanita", 0.3, -0.2) + ifelse(segment == "Premium", 0.5, -0.3)
cutpoints <- c(-Inf, -0.5, 0.3, 1, 1.8, Inf)
kepuasan <- cut(logit_scores + rnorm(n), breaks = cutpoints,
                labels = c("Sangat Tidak Puas", "Tidak Puas", "Netral", "Puas", "Sangat Puas"),
                ordered_result = TRUE)

data_kepuasan <- data.frame(kepuasan, lama, sex, segment)

13.4 Estimasi Model Ordinal

13.4.1 Estimasi dengan Model Logit Kumulatif

library(MASS)
model_ord <- polr(kepuasan ~ lama + sex + segment, data = data_kepuasan, method = "logistic")
summary(model_ord)

13.4.2 Uji Signifikansi Koefisien

ctable <- coef(summary(model_ord))
p_vals <- 2 * (1 - pnorm(abs(ctable[, "t value"])))
cbind(ctable, "p value" = round(p_vals, 4))

13.4.3 Interpretasi Output

  • Koefisien positif → meningkatkan peluang berada di kategori kepuasan lebih tinggi
  • Koefisien negatif → menurunkan peluang berada di kategori lebih tinggi

Misalnya: - Koefisien lama = 0.05 berarti tiap 1 bulan tambahan penggunaan layanan meningkatkan odds kepuasan tinggi - Jika koefisien segmentPremium = 0.6, maka pelanggan premium lebih cenderung puas

13.4.4 Perhitungan Odds Ratio

exp(coef(model_ord))
  • Memberikan interpretasi perubahan odds kumulatif untuk setiap prediktor

13.4.5 Visualisasi Probabilitas Prediktif

library(effects)
plot(allEffects(model_ord))
  • Menunjukkan perubahan probabilitas tiap kategori kepuasan berdasarkan prediktor

Dengan data dan estimasi ini, model regresi ordinal dapat mengungkap pengaruh demografis terhadap tingkat kepuasan dengan cara yang mempertahankan struktur ordinal data secara eksplisit.

13.5 Nilai P-Value

13.5.1 Tujuan Pengujian

Nilai p-value digunakan dalam regresi logistik ordinal untuk menguji signifikansi statistik dari koefisien model. P-value memberi kita informasi tentang apakah suatu prediktor secara signifikan berkontribusi dalam mempengaruhi posisi individu dalam skala ordinal.

Dengan kata lain, p-value membantu menjawab pertanyaan: “Apakah variabel ini benar-benar relevan dalam memengaruhi outcome, atau hanya kebetulan dari sampel yang diperoleh?”

13.5.2 Cara Menghitung dan Menafsirkan

Dalam polr(), nilai p tidak langsung disediakan. Maka perlu dihitung dari z-value:

ctable <- coef(summary(model_ord))
p_vals <- 2 * (1 - pnorm(abs(ctable[, "t value"])))
cbind(ctable, "p value" = round(p_vals, 4))

Interpretasi: - \(p < 0.05\): terdapat cukup bukti bahwa prediktor signifikan - \(p \geq 0.05\): tidak cukup bukti bahwa prediktor signifikan

Penting dicatat bahwa karena model logit ordinal mengasumsikan proportional odds, signifikansi ini berlaku menyeluruh terhadap seluruh cutpoint kategori.


13.6 Prediksi Probabilitas

13.6.1 Probabilitas Prediktif Kategori

Setelah model dilatih, kita bisa menghitung probabilitas seseorang berada dalam setiap kategori respon. Ini penting untuk: - Memberi prediksi yang lebih informatif - Visualisasi dan pengambilan keputusan berbasis risiko

probs <- predict(model_ord, type = "probs")
head(probs)

Setiap baris berisi probabilitas suatu observasi masuk ke masing-masing kategori ordinal.

13.6.2 Visualisasi Probabilitas

Gunakan effects::allEffects() untuk menampilkan pengaruh tiap prediktor terhadap probabilitas setiap level respon:

library(effects)
plot(allEffects(model_ord))

Visualisasi ini sangat berguna untuk mendemonstrasikan bagaimana probabilitas berubah seiring perubahan nilai prediktor.


13.7 Goodness-of-Fit dan Proportional Odds

13.7.1 Evaluasi Goodness-of-Fit

Beberapa metrik umum: - Log-likelihood: semakin tinggi, semakin baik - AIC (Akaike Information Criterion): semakin rendah, semakin baik

logLik(model_ord)
AIC(model_ord)

Namun, tidak tersedia nilai \(R^2\) konvensional seperti dalam regresi linear. Alternatifnya, kita bisa menggunakan pseudo-\(R^2\) seperti McFadden.

13.7.2 Uji Asumsi Proportional Odds

Regresi ordinal model cumulative logit mengasumsikan bahwa efek prediktor konsisten di seluruh kategori (proportional odds). Uji brant() digunakan untuk memverifikasi:

library(brant)
brant(model_ord)

Jika uji Brant menunjukkan signifikansi, maka asumsi tidak terpenuhi, dan kita perlu mempertimbangkan model alternatif.


13.8 Alternatif Model Ordinal

13.8.1 Partial Proportional Odds Model (PPOM)

Jika asumsi proportional odds tidak terpenuhi, kita dapat mengizinkan sebagian koefisien berbeda di tiap kategori menggunakan:

library(VGAM)
model_ppom <- vglm(kepuasan ~ lama + sex + segment,
                   family = cumulative(parallel = FALSE),
                   data = data_kepuasan)
summary(model_ppom)

13.8.2 Generalized Ordered Logit

Model ini memungkinkan setiap prediktor memiliki efek berbeda pada setiap cutpoint:

model_gologit <- vglm(kepuasan ~ lama + sex + segment,
                      family = cumulative(parallel = FALSE),
                      data = data_kepuasan)

Model ini lebih fleksibel tapi juga lebih kompleks secara interpretasi.


13.9 Kesimpulan

  • Asumsi paralelisme (proportional odds) penting untuk validitas model cumulative logit
  • Model cumulative logit menyederhanakan interpretasi karena efek prediktor dianggap konstan di seluruh cutpoint
  • Jika asumsi tidak terpenuhi, alternatif seperti Partial Proportional Odds Model atau Generalized Ordered Logit dapat digunakan untuk hasil yang lebih fleksibel dan akurat

14 Log Linear Model

14.1 Tabel Kontingensi dan Model Loglinier

14.1.1 Definisi dan Tujuan

Model log-linear digunakan untuk menganalisis tabel kontingensi yang berisi hitungan (frekuensi) dari kombinasi kategori beberapa variabel kategorik. Tidak seperti model regresi, di mana ada satu variabel respons, model log-linear memodelkan interaksi antar semua variabel secara simetris.

Model ini digunakan untuk: - Mengetahui hubungan antar variabel kategorik - Menjelaskan struktur dependensi antar dimensi dalam tabel - Menguji kependekan model (model simplifikasi tanpa kehilangan akurasi signifikan) - Mengevaluasi interaksi tinggi dalam hubungan multidimensi

14.1.2 Struktur Model

Jika kita memiliki tabel kontingensi 3-dimensi untuk variabel A, B, dan C, maka model log-linear secara umum: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C + \lambda_{ij}^{AB} + \lambda_{ik}^{AC} + \lambda_{jk}^{BC} + \lambda_{ijk}^{ABC} \]

Dimana: - \(\mu_{ijk}\) = nilai ekspektasi dari cell \(i,j,k\) - \(\lambda\) = intercept - \(\lambda_i^A\) = efek utama dari variabel A - \(\lambda_{ij}^{AB}\) = efek interaksi antara A dan B - \(\lambda_{ijk}^{ABC}\) = interaksi tiga arah

Semakin kompleks interaksi yang disertakan, semakin “fit” model terhadap data, tetapi juga semakin tinggi risiko overfitting.

14.1.3 Model Nested dan Hierarkis

Model log-linear memiliki struktur hierarkis: - Model independen penuh: hanya efek utama. Misalnya, \(\log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C\) - Model interaksi dua arah: menambahkan interaksi pasangan seperti \(AB\), \(AC\), \(BC\) - Model saturated: menyertakan semua interaksi hingga tingkat tertinggi (AB, AC, BC, dan ABC)

Setiap model nested dalam model yang lebih kompleks. Kita bisa membandingkan model-model ini menggunakan likelihood ratio test untuk melihat apakah tambahan kompleksitas memang meningkatkan performa model.

14.2 Model Saturated

14.2.1 Pengertian

Model saturated adalah model log-linear paling kompleks, di mana semua efek dan interaksi (utama, dua arah, tiga arah, dst.) disertakan. Model ini akan: - Selalu cocok sempurna dengan data (zero deviance) - Tidak menyisakan residual error - Tidak dapat digunakan untuk generalisasi, karena menyesuaikan sepenuhnya pada data

Biasanya digunakan sebagai acuan pembanding untuk menilai model yang lebih sederhana.

14.2.2 Contoh di R

Misal kita menganalisis tabel kontingensi 3 variabel: A, B, dan C.

# Simulasi data kontingensi
set.seed(123)
tab <- as.table(array(sample(1:20, 2*3*2, replace=TRUE), dim = c(2,3,2),
               dimnames = list(A = c("A1", "A2"),
                               B = c("B1", "B2", "B3"),
                               C = c("C1", "C2"))))

# Fit model saturated
library(MASS)
model_sat <- loglm(~ A*B*C, data = tab)
summary(model_sat)

Model ini menyertakan semua kemungkinan efek interaksi: - Efek utama: A, B, C - Interaksi dua arah: AB, AC, BC - Interaksi tiga arah: ABC

14.2.3 Evaluasi Model

Model saturated memiliki nilai deviance = 0 dan df = 0. Maka: - Cocok 100% dengan data - Tidak bisa diuji goodness-of-fit karena tidak menyisakan kesalahan

Gunakan saturated model untuk: - Basis perbandingan model yang disederhanakan - Menghitung nilai p dari uji deviance:

\[ G^2 = 2(\log L_{saturated} - \log L_{model}) \]

Jika perbedaan deviance antara model sederhana dan saturated tidak signifikan (p-value tinggi), maka model sederhana cukup mewakili data.

14.2.4 Ilustrasi Interaksi

Model log-linear melihat interaksi sebagai deviasi dari independensi. Contoh: - Jika ABC tidak signifikan → berarti interaksi tiga arah tidak diperlukan - Jika AB signifikan → berarti ada asosiasi antara A dan B meskipun dikontrol oleh C


Bab ini mengawali pembahasan tentang model log-linear, yang memungkinkan kita: - Menguji hubungan independensi dan interaksi antar banyak variabel kategorik - Melakukan pemodelan simetris antar variabel tanpa harus menentukan variabel respon - Mengembangkan model bertingkat (nested) dan membandingkannya secara sistematis

Model log-linear sangat kuat untuk analisis kontingensi multivariat, terutama dalam ilmu sosial, epidemiologi, dan ilmu perilaku di mana banyak variabel kategorik terlibat secara simultan.

14.3 Model Independent

14.3.1 Definisi

Model independen log-linear mengasumsikan bahwa semua variabel dalam tabel kontingensi tidak saling bergantung. Model ini hanya mencakup efek utama, tanpa interaksi dua arah maupun lebih tinggi.

Untuk tiga variabel A, B, dan C: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C \]

Artinya: \[ P(A,B,C) = P(A) \cdot P(B) \cdot P(C) \]

Model ini dapat digunakan sebagai baseline untuk dibandingkan dengan model yang lebih kompleks.

14.3.2 Implementasi R

model_indep <- loglm(~ A + B + C, data = tab)
summary(model_indep)

14.4 Odds Ratio dan Interpretasi

14.4.1 Konsep Odds Ratio

Odds Ratio (OR) dalam konteks log-linear menunjukkan kuat tidaknya asosiasi antar dua variabel. Jika OR = 1 → tidak ada asosiasi. Jika OR ≠ 1 → ada ketergantungan.

Dalam tabel 2x2: \[ \text{OR} = \frac{n_{11} n_{22}}{n_{12} n_{21}} \]

Jika OR > 1 → kecenderungan asosiasi positif.

14.4.2 Perhitungan dari Model

Dalam model log-linear: - Koefisien interaksi (\(\lambda_{ij}^{AB}\)) berhubungan langsung dengan log(OR) - Maka: \(\exp(\lambda_{ij}^{AB}) = \text{OR}\)

Contoh interpretasi: > Jika \(\lambda_{AB} = 0.5\), maka \(\exp(0.5) \approx 1.65\) → peluang terjadinya kombinasi AB adalah 1.65 kali dibandingkan bila A dan B independen.


14.5 Estimasi Parameter

14.5.1 Metode Maximum Likelihood

Estimasi parameter log-linear dilakukan melalui maximum likelihood estimation (MLE) dengan menggunakan deviance: \[ G^2 = 2 \sum_{ijk} n_{ijk} \log\left(\frac{n_{ijk}}{\hat{\mu}_{ijk}}\right) \]

14.5.2 Estimasi di R

coef(model_indep)         # parameter model
fitted(model_indep)       # nilai ekspektasi per sel
residuals(model_indep)    # residual

Hasil koefisien dapat digunakan untuk menghitung estimasi log-mu dan probabilitas relatif antar sel.


14.6 Model Lebih Sederhana dan Perbandingan Model

14.6.1 Strategi Penyederhanaan

Tujuan reduksi model: - Menyederhanakan interpretasi - Menghindari overfitting - Tetap mempertahankan kecocokan model

Langkah-langkah: 1. Mulai dari model saturated 2. Buang satu per satu interaksi 3. Lakukan uji deviance (likelihood ratio test)

14.6.2 Likelihood Ratio Test

Digunakan untuk membandingkan dua model nested: \[ G^2 = 2 (\log L_{saturated} - \log L_{reduced}) \] Uji \(\chi^2\) dengan derajat bebas = perbedaan parameter model.

14.6.3 Implementasi R

anova(model_reduced, model_sat)

Jika nilai p tinggi → model yang lebih sederhana cukup baik.


14.7 Studi Kasus

Kepercayaan terhadap Surga

14.7.1 Deskripsi Data

Misal terdapat data tiga variabel: - Gender: Male / Female - Kepercayaan Tuhan: Yes / No - Kepercayaan Surga: Yes / No

Data berbentuk tabel kontingensi 2x2x2:

tab_kasus <- array(c(50, 20, 30, 25, 40, 35, 10, 5),
                   dim = c(2,2,2),
                   dimnames = list(
                     Gender = c("Male", "Female"),
                     Tuhan = c("Yes", "No"),
                     Surga = c("Yes", "No")))

14.7.2 Analisis Model

Fit model interaksi dua arah:

loglm(~ Gender + Tuhan + Surga + Gender:Tuhan + Tuhan:Surga + Gender:Surga, data = tab_kasus)

Evaluasi: - Cek deviance - Bandingkan model independen dan model penuh - Interpretasi interaksi antar variabel

14.7.3 Interpretasi

Jika interaksi “Tuhan:Surga” signifikan → memperkuat dugaan bahwa keyakinan pada Tuhan berasosiasi dengan keyakinan terhadap Surga.

Jika “Gender:Surga” tidak signifikan → tidak ada asosiasi antara jenis kelamin dan kepercayaan surga.

15 Model Log Linear 2 Arah

15.1 Model log-linear pada tabel kontingensi

15.1.1 Definisi Model Log-Linear

Model log-linear adalah pendekatan statistik untuk menganalisis tabel kontingensi (tabel frekuensi silang) yang menyelidiki hubungan antar variabel kategorik. Dalam model log-linear: - Tidak ada variabel dependen dan independen secara eksplisit. - Semua variabel diperlakukan setara dan digunakan untuk menjelaskan struktur asosiasi atau independensi antar dimensi.

15.1.2 Model Log-Linear Dua Arah

Dalam kasus dua variabel kategorik A dan B (dengan \(I\) dan \(J\) kategori), model log-linear dua arah ditulis sebagai: \[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \]

Dimana: - \(\mu_{ij}\): ekspektasi frekuensi pada cell \((i,j)\) - \(\lambda\): intercept - \(\lambda_i^A\), \(\lambda_j^B\): efek utama dari variabel A dan B - \(\lambda_{ij}^{AB}\): efek interaksi dua arah antara A dan B

Jika \(\lambda_{ij}^{AB} = 0\), maka A dan B adalah independen.

15.1.3 Tujuan Model

  • Menguji apakah dua variabel saling independen atau saling berasosiasi.
  • Menyediakan model sederhana namun fleksibel untuk tabel 2D.

15.1.4 Contoh Kasus

Misalnya kita memiliki data frekuensi tentang Jenis Kelamin (A) dan Preferensi Produk (B).

library(MASS)
data <- matrix(c(40, 20, 30, 10), nrow = 2, dimnames = list(Gender = c("Male", "Female"), Product = c("A", "B")))
model <- loglm(~ Gender + Product, data = data)  # Model independen
model_interaksi <- loglm(~ Gender * Product, data = data)  # Model dua arah

15.2 Perbedaan utama antara model log-linear dan model regresi logistik!

Aspek Model Log-Linear Model Regresi Logistik
Tujuan Menjelaskan struktur hubungan antar variabel kategorik Memprediksi probabilitas suatu kategori respons
Variabel Semua variabel dianggap setara (simetris) Ada variabel respons dan prediktor (asimetris)
Cocok untuk Tabel kontingensi (frekuensi) Data individu (event/berhasil-gagal)
Output Estimasi frekuensi sel Estimasi probabilitas kategori tertentu
Interaksi Efek utama dan interaksi diekspresikan sebagai log-frekuensi Efek prediktor terhadap logit (log odds)

15.2.1 Rumus Perbandingan

Log-linear (dua arah): \[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \] Regresi logistik biner: \[ \log\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k \]

15.2.2 Implikasi Analitis

  • Log-linear cocok untuk menyelidiki independensi, sedangkan regresi logistik cocok untuk menjawab seberapa besar efek prediktor terhadap outcome.
  • Log-linear tidak membuat asumsi distribusi pada variabel seperti regresi logistik (yang memodelkan distribusi binomial).

15.3 Analisis Data Tabel Kontingensi 2x2

Model log-linear paling dasar dapat diterapkan pada tabel kontingensi 2x2, yang mencakup dua variabel kategorik dengan dua level masing-masing. Model ini berguna untuk menguji apakah terdapat asosiasi atau independensi antara kedua variabel tersebut.

Misalkan dua variabel: - \(A\): dua level (\(A_1\), \(A_2\)) - \(B\): dua level (\(B_1\), \(B_2\))

Tabel kontingensi:

\(B_1\) \(B_2\)
\(A_1\) \(n_{11}\) \(n_{12}\)
\(A_2\) \(n_{21}\) \(n_{22}\)

Model log-linear umum yang dapat dituliskan adalah: \[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \]

Jika interaksi \(\lambda_{ij}^{AB} = 0\), maka model menyiratkan bahwa A dan B independen.


15.4 Bentuk Model Log-Linear

Bentuk umum model log-linear (dua arah) pada tabel kontingensi 2x2: \[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \]

Agar model dapat diestimasi secara unik, diperlukan konstraint identifikasi. Salah satu metode paling umum adalah: - Sum-to-zero constraint: \[\sum_i \lambda_i^A = \sum_j \lambda_j^B = \sum_{ij} \lambda_{ij}^{AB} = 0\]

Dengan ini, parameter dapat ditentukan tanpa redundansi.


15.5 Estimasi Parameter Model (Manual, Sum-to-zero)

Langkah-langkah manual estimasi parameter model log-linear 2x2 menggunakan pendekatan sum-to-zero:

  1. Definisikan frekuensi pengamatan Misalkan: \[ n_{11} = 20,\quad n_{12} = 30,\quad n_{21} = 10,\quad n_{22} = 40 \]

  2. Hitung nilai rata-rata log-frekuensi Diperlukan nilai: \[ \log(n_{ij}) \text{ untuk setiap cell} \]

  3. Terapkan sistem persamaan Dengan sum-to-zero: \[ \sum_i \lambda_i^A = 0,\quad \sum_j \lambda_j^B = 0,\quad \sum_{i,j} \lambda_{ij}^{AB} = 0 \] Bangun sistem persamaan dari ekspansi log(\(\mu_{ij}\)) untuk keempat sel, lalu selesaikan sistem tersebut (dengan matrix algebra atau metode eliminasi).

  4. Contoh di R Estimasi otomatis bisa dilakukan via:

library(MASS)
tab <- matrix(c(20, 30, 10, 40), nrow = 2)
model <- loglm(~ A * B, data = as.table(tab))
summary(model)

Hasilnya akan menunjukkan: - Koefisien efek utama - Interaksi - Nilai fitted dan residuals - Deviance dan p-value (uji goodness-of-fit)

15.6 Hitung Odds Ratio dan Interval Kepercayaan

Odds Ratio (OR) merupakan ukuran asosiasi dalam tabel kontingensi 2x2. Dalam model log-linear, OR berkaitan erat dengan interaksi antara dua variabel.

15.6.1 Rumus Odds Ratio

Misalkan tabel kontingensi:

B1 B2
A1 \(n_{11}\) \(n_{12}\)
A2 \(n_{21}\) \(n_{22}\)

Odds Ratio dihitung dengan: \[ \text{OR} = \frac{n_{11} n_{22}}{n_{12} n_{21}} \]

Interpretasi: - OR = 1: tidak ada asosiasi (independen) - OR > 1: asosiasi positif - OR < 1: asosiasi negatif

15.6.2 Interval Kepercayaan Odds Ratio

Asumsikan bahwa \(n_{ij}\) mengikuti distribusi Poisson, maka: \[ SE(\log(OR)) = \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}} \]

Interval kepercayaan 95% untuk \(\log(OR)\): \[ \log(OR) \pm 1.96 \times SE(\log(OR)) \] Kemudian diambil eksponensial untuk kembali ke skala OR: \[ CI_{95\%} = \left[ \exp(\log(OR) - 1.96 \cdot SE), \exp(\log(OR) + 1.96 \cdot SE) \right] \]

15.6.3 Contoh Penghitungan di R

tab <- matrix(c(20, 30, 10, 40), nrow = 2)
OR <- (tab[1,1] * tab[2,2]) / (tab[1,2] * tab[2,1])
SE <- sqrt(1/tab[1,1] + 1/tab[1,2] + 1/tab[2,1] + 1/tab[2,2])
CI <- exp(log(OR) + c(-1.96, 1.96) * SE)
c(OR = OR, CI_lower = CI[1], CI_upper = CI[2])

15.7 Fitting Model Log-Linear dengan R

15.7.1 Langkah-Langkah Umum

  1. Bentuk data sebagai tabel frekuensi (array atau table)
  2. Gunakan fungsi loglm() dari paket MASS
  3. Tentukan struktur model (independen, interaksi dua arah, saturated)
  4. Evaluasi model dengan deviance dan df

15.7.2 Contoh Kasus

library(MASS)
# Tabel kontingensi 2x2
mytab <- matrix(c(20, 30, 10, 40), nrow = 2,
                dimnames = list(A = c("A1", "A2"),
                                B = c("B1", "B2")))

# Model dengan interaksi (model dua arah)
model <- loglm(~ A * B, data = as.table(mytab))
summary(model)

15.7.3 Hasil Output

Output dari summary(model) akan menunjukkan: - Nilai deviance: goodness-of-fit - Residuals dan fitted values - Signifikansi interaksi (uji G²)

Jika deviance tidak signifikan → model memadai Jika deviance signifikan → model tidak cocok, perlu diperluas

15.8 Interpretasi Parameter

Dalam model log-linear, setiap parameter mewakili log dari rasio antara jumlah frekuensi ekspektasi (fit) terhadap baseline. Artinya, parameter log-linear adalah log odds dalam konteks frekuensi.

Misalnya dalam model dua arah: \[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \] - \(\lambda_i^A\) adalah efek dari kategori \(i\) pada variabel A. - \(\lambda_{ij}^{AB}\) menyatakan deviasi terhadap model independen akibat interaksi A dan B. - Jika \(\lambda_{ij}^{AB}\) ≈ 0, maka A dan B cenderung independen. - Nilai \(\exp(\lambda_{ij}^{AB})\) dapat dianggap sebagai faktor pengali terhadap odds baseline.

Model log-linear selalu perlu dilengkapi dengan constraint identifikasi, seperti: - Sum-to-zero - Corner-point (mengatur baseline)

Interpretasi parameter sangat tergantung pada constraint yang digunakan. Untuk itu, sangat penting membaca struktur model dan desain parameterisasi.

15.9 Analisis Data Tabel Kontingensi 2x3

Misalkan kita ingin menganalisis dua variabel kategorik: - Variabel A: 2 level (misal Jenis Kelamin) - Variabel B: 3 level (misal Preferensi Produk)

Tabel kontingensi 2 (baris) × 3 (kolom):

B1 B2 B3
A1 25 30 45
A2 20 35 40

Tujuan analisis: - Apakah terdapat interaksi antara A dan B? - Apakah model independen memadai?

15.10 Bentuk Model Log-Linear untuk Tabel 2x3

Struktur model untuk tabel 2x3: \[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \] Dengan: - \(i = 1,2\) untuk A - \(j = 1,2,3\) untuk B

Parameter total: - Efek A: 2 level → 1 parameter (dengan constraint) - Efek B: 3 level → 2 parameter - Interaksi AB: (2×3) → 5 parameter (dengan constraint)

Total parameter bebas: 1 (A) + 2 (B) + 5 (AB) = 8

Untuk identifikasi parameter, perlu constraint seperti: \[ \sum_i \lambda_i^A = 0, \quad \sum_j \lambda_j^B = 0, \quad \sum_{i,j} \lambda_{ij}^{AB} = 0 \]

15.11 Fitting Model Log-Linear di R

15.11.1 Data Input

library(MASS)
tab <- matrix(c(25,30,45,20,35,40), nrow=2,
              dimnames = list(Gender = c("M", "F"),
                              Preference = c("A","B","C")))
tab <- as.table(tab)

15.11.2 Fit Model

# Model interaksi penuh
model_AB <- loglm(~ Gender * Preference, data = tab)

# Model independen
model_indep <- loglm(~ Gender + Preference, data = tab)

15.11.3 Evaluasi Hasil

summary(model_AB)
summary(model_indep)

Lihat perbandingan deviance dan df:

anova(model_indep, model_AB)

Jika p-value kecil → model independen tidak memadai → interaksi signifikan.

15.12 Interpretasi

15.12.1 Nilai Koefisien dan Fitted

  • Koefisien utama menggambarkan kecenderungan preferensi atau gender secara marginal.
  • Koefisien interaksi mengindikasikan kekuatan asosiasi antara kombinasi Gender dan Preference.

Contoh:

coef(model_AB)

Jika \(\lambda_{M,B}\) = 0.3 dan \(\lambda_{F,B}\) = -0.3, artinya laki-laki lebih mungkin memilih produk B.

15.12.2 Nilai Fitted dan Residual

fitted(model_AB)
residuals(model_AB)

Gunakan untuk membandingkan prediksi model terhadap data aktual. Residual besar mengindikasikan model belum memadai.

16 Model Log-Linear Tiga Arah

16.1 Model Log-Linear untuk Tabel Tiga Arah

Model log-linear tiga arah digunakan untuk menganalisis tabel kontingensi tiga dimensi, yaitu tabel yang mencakup tiga variabel kategorik. Tujuannya adalah untuk memahami struktur asosiasi dan interaksi antara ketiga variabel tersebut.

Misalnya kita memiliki variabel: - \(A\): Jenis Kelamin (Male, Female) - \(B\): Preferensi Produk (A, B) - \(C\): Status Sosial (Low, High)

Tabel kontingensi akan terdiri dari \(2 \times 2 \times 2 = 8\) sel.

Bentuk Model Umum Model log-linear tiga arah dituliskan sebagai: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C + \lambda_{ij}^{AB} + \lambda_{ik}^{AC} + \lambda_{jk}^{BC} + \lambda_{ijk}^{ABC} \]

Penjelasan: - \(\mu_{ijk}\): ekspektasi frekuensi pada sel \((i,j,k)\) - \(\lambda\): intercept - \(\lambda_i^A, \lambda_j^B, \lambda_k^C\): efek utama - \(\lambda_{ij}^{AB}, \lambda_{ik}^{AC}, \lambda_{jk}^{BC}\): interaksi dua arah - \(\lambda_{ijk}^{ABC}\): interaksi tiga arah

Model Hierarkis Model log-linear tiga arah bersifat hierarkis, artinya: - Jika interaksi tingkat tinggi dimasukkan, maka semua efek dan interaksi di bawahnya juga harus disertakan. - Contoh: - Model saturated: semua efek dan interaksi ada. - Model dua arah: hanya interaksi dua variabel.

Struktur Model Bertingkat | Model | Struktur Interaksi | |——————|—————————————-| | Independence | A + B + C | | Homogeneous Association | AB + AC + BC | | Saturated | A * B * C (AB + AC + BC + ABC) |

16.2 Pengujian Interaksi dalam Model Log-Linear Tiga Arah

Setelah menentukan bentuk model, kita melakukan pengujian statistik untuk memverifikasi apakah interaksi signifikan.

  1. Uji Interaksi Tiga Arah Hipotesis:
  • \(H_0\): Tidak ada interaksi tiga arah → \(\lambda_{ijk}^{ABC} = 0\)
  • \(H_1\): Ada interaksi tiga arah

Langkah: 1. Fit model homogeneous association (AB + AC + BC) 2. Fit model saturated (AB + AC + BC + ABC) 3. Hitung deviance difference: \[ G^2 = 2(\log L_{saturated} - \log L_{homog}) \] 4. Uji dengan distribusi \(\chi^2\) dengan df = selisih df antar model

  1. Implementasi di R
library(MASS)
# Data simulasi 2x2x2
tab <- array(c(15,20,10,25,20,15,10,30), dim = c(2,2,2),
             dimnames = list(A = c("M", "F"),
                             B = c("Yes", "No"),
                             C = c("High", "Low")))

# Model tanpa interaksi tiga arah
model_2way <- loglm(~ A*B + A*C + B*C, data = tab)

# Model saturated
model_saturated <- loglm(~ A*B*C, data = tab)

# Perbandingan
anova(model_2way, model_saturated)

Interpretasi: - Jika p-value < 0.05 → interaksi tiga arah signifikan - Jika p-value > 0.05 → interaksi tiga arah tidak signifikan, model dua arah cukup

  1. Visualisasi dan Interpretasi
  • Gunakan plot mosaic (vcd::mosaic) untuk melihat struktur hubungan
  • Periksa residual untuk mendeteksi sel bermasalah
  1. Prinsip Parsimony Jika model sederhana menjelaskan data hampir sebaik model lengkap, maka model sederhana lebih disukai untuk interpretasi dan generalisasi.

16.3 Analisis Log-Linear untuk Tabel Tiga Arah

Analisis log-linear tiga arah melibatkan tiga variabel kategorik dan eksplorasi hubungan interaktif antar ketiganya. Analisis ini memungkinkan kita untuk mengidentifikasi apakah asosiasi antara dua variabel berubah tergantung pada level variabel ketiga, atau disebut juga kondisional tergantung.

Sebagai ilustrasi, misalkan kita menganalisis: - \(A\): Gender (Male, Female) - \(B\): Pendidikan (SMA, S1) - \(C\): Preferensi Produk (A, B)

Maka tabel kontingensi memiliki \(2 \times 2 \times 2 = 8\) sel.

Package yang Digunakan Untuk melakukan analisis model log-linear tiga arah di R, kita menggunakan beberapa paket berikut:

# Paket utama
library(MASS)        # Untuk loglm()

# Visualisasi dan pengujian tambahan
library(vcd)         # Mosaic plot dan asosiasi
library(car)         # Untuk residual plot dan penyesuaian model

Contoh Implementasi

# Data array 2x2x2
set.seed(1)
data <- array(c(30,25,20,35,18,22,17,33),
              dim = c(2,2,2),
              dimnames = list(
                Gender = c("Male", "Female"),
                Education = c("SMA", "S1"),
                Product = c("A", "B")))

# Fit model saturated
model_full <- loglm(~ Gender * Education * Product, data = data)
summary(model_full)

# Fit model tanpa interaksi tiga arah
model_2way <- loglm(~ Gender*Education + Gender*Product + Education*Product, data = data)

# Uji interaksi 3-arah
anova(model_2way, model_full)

Output anova() akan membantu menentukan apakah interaksi tiga arah dibutuhkan untuk menjelaskan struktur data secara signifikan.

Jika nilai p > 0.05 → model dua arah cukup Jika nilai p < 0.05 → model saturated dibutuhkan (ada interaksi 3 arah)

Dengan pendekatan ini, kita mampu menyaring struktur ketergantungan kompleks antar tiga variabel kategorik secara sistematis dan efisien.

17 Uji Model Interaksi Tiga Arah (Saturated vs Homogenous)

Model log-linear tiga arah dapat dibandingkan dalam dua pendekatan umum: 1. Model Saturated: menyertakan semua efek dan interaksi (main effects, 2-way, dan 3-way). 2. Model Homogenous Association: hanya mencakup interaksi dua arah.

Uji perbandingan model digunakan untuk mengevaluasi apakah interaksi tiga arah (ABC) benar-benar diperlukan untuk menjelaskan struktur ketergantungan antar variabel kategorik.

17.1 Penentuan Kategori Referensi

Sebelum melakukan pemodelan, penting untuk memastikan bahwa kategori baseline (referensi) ditetapkan dengan tepat. Umumnya, R menetapkan referensi otomatis berdasarkan urutan faktor, tetapi dapat ditentukan secara manual dengan:

# Menetapkan faktor dengan referensi eksplisit
mydata$Gender <- relevel(factor(mydata$Gender), ref = "Male")
mydata$Product <- relevel(factor(mydata$Product), ref = "A")
mydata$Education <- relevel(factor(mydata$Education), ref = "SMA")

Penentuan ini memengaruhi interpretasi koefisien dalam model log-linear, karena parameter dihitung relatif terhadap kategori referensi.

17.2 Ringkasan Model

Untuk membandingkan model saturated dan homogenous, kita akan menggunakan pendekatan berikut:

library(MASS)
# Contoh data 2x2x2
tab <- array(c(30,25,20,35,18,22,17,33), dim = c(2,2,2),
             dimnames = list(Gender = c("Male", "Female"),
                             Product = c("A", "B"),
                             Education = c("SMA", "S1")))

# Model tanpa interaksi tiga arah
model_homog <- loglm(~ Gender*Product + Gender*Education + Product*Education, data = tab)

# Model saturated
model_saturated <- loglm(~ Gender*Product*Education, data = tab)

# Bandingkan model
anova(model_homog, model_saturated)

Output akan memberikan: - Nilai deviance - Derajat kebebasan (df) - Nilai p

Interpretasi: - Jika \(p > 0.05\): Tidak ada cukup bukti untuk mempertahankan interaksi tiga arah → model homogenous cukup. - Jika \(p < 0.05\): Interaksi tiga arah signifikan → model saturated diperlukan.

Ringkasan: | Model | Komponen Interaksi | Kompleksitas | |———————|——————————————–|————–| | Saturated | AB + AC + BC + ABC | Tinggi | | Homogenous Assoc. | AB + AC + BC (tanpa ABC) | Sedang | | Independence | A + B + C (tanpa interaksi sama sekali) | Rendah |

Model homogenous memberikan kompromi antara kompleksitas dan kecocokan model, sedangkan model saturated memberikan fit sempurna namun berisiko overfitting dan kurang interpretatif jika interaksi tiga arah tidak signifikan.

17.3 Hasil Estimasi Koefisien

Setelah model log-linear tiga arah difit, hasil estimasi koefisien dapat diperoleh dengan fungsi coef() atau dari output summary() model.

Contoh:

summary(model_saturated)
coef(model_saturated)

Output tersebut memberikan: - Nilai koefisien \(\lambda\) - Efek utama (\(\lambda_i^A\), \(\lambda_j^B\), \(\lambda_k^C\)) - Efek interaksi dua arah (\(\lambda_{ij}^{AB}\), dll.) - Interaksi tiga arah (\(\lambda_{ijk}^{ABC}\))

Estimasi diberikan dalam skala log, artinya untuk interpretasi probabilitas atau odds, perlu transformasi dengan fungsi eksponensial:

exp(coef(model_saturated))

17.4 Interpretasi Koefisien

Interpretasi koefisien dalam model log-linear bergantung pada baseline (kategori referensi) dan bentuk parameterisasi.

Contoh: Jika hasil estimasi: - \(\lambda_{Male}^A = 0.3\) → log-odds untuk Male lebih tinggi dibanding Female (baseline) - \(\lambda_{Male,SMA}^{AB} = 0.5\) → terdapat interaksi positif antara Male dan SMA

Interpretasi eksponensial: \[ \exp(0.5) \approx 1.65 \] Artinya, kombinasi tersebut memiliki odds 1.65 kali lebih tinggi dibanding baseline.

Jika interaksi tiga arah signifikan (\(\lambda_{ijk}^{ABC}\) ≠ 0), maka asosiasi antara dua variabel tergantung pada variabel ketiga.

17.5 Goodness-of-Fit

Untuk menilai apakah model cocok dengan data, digunakan pengujian goodness-of-fit berbasis deviance statistic: \[ G^2 = 2 \sum_{ijk} n_{ijk} \log\left(\frac{n_{ijk}}{\hat{\mu}_{ijk}}\right) \]

Diperoleh dari:

summary(model_homog)

Hasil menunjukkan: - Deviance (\(G^2\)) - Derajat kebebasan (df) - Nilai p (dari uji \(\chi^2\))

Interpretasi: - \(p > 0.05\): model memadai, tidak berbeda signifikan dari data - \(p < 0.05\): model terlalu sederhana, fit tidak memadai

Tambahan evaluasi:

fitted(model_saturated)     # Nilai ekspektasi per sel
residuals(model_saturated)  # Perbedaan aktual dan prediksi

17.6 Model Homogenous

Model homogenous association adalah model log-linear tiga arah yang menyertakan semua interaksi dua arah tetapi tidak menyertakan interaksi tiga arah. Model ini berfungsi untuk memeriksa apakah asosiasi antara dua variabel konsisten di seluruh kategori variabel ketiga.

Struktur Model: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C + \lambda_{ij}^{AB} + \lambda_{ik}^{AC} + \lambda_{jk}^{BC} \]

Ciri-ciri: - Cocok jika interaksi tiga arah tidak signifikan. - Memberikan keseimbangan antara kesederhanaan model dan akurasi fit. - Mengasumsikan asosiasi dua arah yang konsisten across level variabel ketiga.

17.7 Uji Hipotesis: Interaksi Tiga Arah (Saturated vs Homogenous)

Pertanyaan utama: apakah model saturated (dengan interaksi tiga arah) lebih baik secara signifikan dibanding model homogenous (tanpa interaksi tiga arah)?

Hipotesis: - \(H_0\): Tidak ada interaksi tiga arah (\(\lambda_{ijk}^{ABC} = 0\)) → model homogenous cukup - \(H_1\): Ada interaksi tiga arah (\(\lambda_{ijk}^{ABC} \ne 0\)) → perlu model saturated

Uji dilakukan dengan likelihood ratio test: \[ G^2 = 2 (\log L_{saturated} - \log L_{homogenous}) \]

Atau langsung melalui:

anova(model_homog, model_saturated)

Interpretasi: - \(p > 0.05\) → gagal tolak \(H_0\), cukup pakai model homogenous - \(p < 0.05\) → tolak \(H_0\), perlukan model saturated

Langkah-Langkah Pengujian

  1. Bangun dua model:
# Model homogenous
model_homog <- loglm(~ A*B + A*C + B*C, data = tab)

# Model saturated
model_saturated <- loglm(~ A*B*C, data = tab)
  1. Bandingkan model menggunakan deviance:
anova(model_homog, model_saturated)
  1. Perhatikan output:
  • Residual deviance: deviasi masing-masing model
  • Difference in deviance: statistik uji \(G^2\)
  • Degrees of freedom: df selisih
  • Pr(>Chi): nilai p
  1. Simpulkan:
  • Jika nilai p kecil (mis. < 0.05) → interaksi tiga arah signifikan
  • Jika nilai p besar → interaksi tiga arah tidak diperlukan, gunakan model homogenous untuk efisiensi dan interpretasi

18 Uji Model Interaksi Dua Arah (Homogenous vs Conditional on X)

Analisis log-linear pada tabel tiga arah sering difokuskan untuk mengetahui apakah asosiasi antara dua variabel (misalnya \(Y\) dan \(Z\)) tetap homogen di seluruh kategori variabel ketiga (\(X\)), atau berubah tergantung pada X (kondisional terhadap X).

18.1 Model Conditional on X

Model conditional association membentuk model log-linear yang berbeda di setiap level X. Artinya, asosiasi antara \(Y\) dan \(Z\) tidak diasumsikan konsisten di seluruh level \(X\).

Model: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} + \lambda_{ik}^{XZ} + \lambda_{jk}^{YZ}(i) \]

Perbedaan utama dengan model homogenous adalah: - Homogenous: \(YZ\) interaksi tetap di semua level \(X\) - Conditional: interaksi \(YZ\) berbeda untuk setiap \(X = i\)

18.2 Pengujian Ada Tidaknya Interaksi Antara Y dan Z (Homogenous Model vs Conditional Association on X)

Model Homogenous mengasumsikan bahwa interaksi \(Y \times Z\) konsisten across all levels of \(X\). Untuk menguji apakah hal itu benar, kita bandingkan dua model: - Model Homogenous: interaksi \(YZ\) tetap di semua \(X\) - Model Conditional on X: interaksi \(YZ\) diperbolehkan berbeda untuk setiap \(X\)

18.2.1 Hipotesis

\[ H_0: \lambda_{jk}^{YZ}(i) = \lambda_{jk}^{YZ}, \quad \text{untuk semua } i \quad \text{(Homogenous)} \]

\[ H_1: \lambda_{jk}^{YZ}(i) \ne \lambda_{jk}^{YZ}, \quad \text{untuk setidaknya satu } i \quad \text{(Conditional)} \]

18.2.2 Tingkat Signifikansi

Gunakan \(\alpha = 0.05\) secara umum, kecuali ditentukan lain.

18.2.3 Statistik Uji

Statistik uji menggunakan likelihood ratio test: \[ G^2 = 2(\log L_{conditional} - \log L_{homogenous}) \] atau di R:

anova(model_homog, model_conditional)

18.2.4 Daerah Penolakan

Tolak \(H_0\) jika: \[ G^2 > \chi^2_{df, \alpha} \] atau jika nilai p-value \(< \alpha\)

18.2.5 Keputusan

  • Jika \(p < \alpha\): Tolak \(H_0\) → Asosiasi \(YZ\) tidak homogen, tergantung pada \(X\)
  • Jika \(p \ge \alpha\): Gagal tolak \(H_0\) → Model homogenous cukup

18.2.6 Kesimpulan

Jika pengujian menunjukkan bahwa interaksi \(Y \times Z\) berbeda tergantung \(X\), maka harus digunakan model conditional. Ini mengindikasikan bahwa hubungan antara Y dan Z bervariasi tergantung X, dan model homogenous akan misleading.

18.3 Pengujian Selisih Deviance (Conditional on X vs Homogenous)

Langkah pengujian di R:

library(MASS)
# Fit model homogenous
model_homog <- loglm(~ X*Y + X*Z + Y*Z, data = mytab)

# Fit model conditional (interaksi YZ berbeda di setiap X)
model_conditional <- loglm(~ X*Y + X*Z + Y*Z*X, data = mytab)

# Bandingkan model
anova(model_homog, model_conditional)

Output akan menunjukkan: - Selisih deviance - Selisih df - Nilai p

Interpretasi: - \(p < 0.05\) → model conditional secara signifikan lebih baik - \(p \ge 0.05\) → model homogenous cukup

19 Uji Model Interaksi Dua Arah (Homogenous vs Conditional on Y)

Dalam analisis data kategorik, penting untuk memahami apakah hubungan antara dua variabel, misalnya \(X\) dan \(Z\), bersifat homogen (seragam) di semua level variabel ketiga \(Y\), atau berbeda (bervariasi tergantung pada level \(Y\)). Untuk mengevaluasi hal ini, kita membandingkan dua model log-linear:

Contoh kontekstual: Misalkan \(X\) adalah jenis kelamin, \(Z\) adalah preferensi media (TV, internet), dan \(Y\) adalah tingkat pendidikan. Jika asosiasi \(X \times Z\) berbeda tergantung \(Y\), maka misalnya laki-laki dan perempuan memiliki pola preferensi media berbeda antara lulusan SMA dan lulusan S2. Ini adalah sinyal bahwa Y menjadi moderator bagi hubungan X-Z.

19.1 Model Conditional on Y

Model conditional on \(Y\) menyatakan bahwa interaksi antara \(X\) dan \(Z\) tidak tetap di semua level \(Y\), melainkan diestimasi terpisah untuk setiap kategori \(Y\).

Notasi Model: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} + \lambda_{jk}^{YZ} + \lambda_{ik}^{XZ}(j) \]

Dimana: - \(\mu_{ijk}\) adalah nilai ekspektasi pada sel ke-\((i,j,k)\) - Efek \(XZ\) mengandung indeks \(j\) → mengindikasikan interaksi tergantung \(Y\)

Kelebihan Model Conditional: - Menangkap heterogenitas efek \(X \times Z\) terhadap setiap kategori \(Y\) - Lebih fleksibel untuk struktur data kompleks

Kekurangan: - Lebih banyak parameter → kompleksitas meningkat - Risiko overfitting pada sampel kecil - Membutuhkan jumlah observasi cukup besar di setiap level \(Y\)

19.2 Pengujian Ada Tidaknya Interaksi antara X dan Z (Homogenous model vs Conditional Association on Y)

Tujuan: Menilai apakah interaksi \(X \times Z\) berubah terhadap kategori \(Y\) (artinya: apakah asosiasi tersebut homogen atau tidak).

Hipotesis: \[ \begin{aligned} H_0: & \quad \lambda_{ik}^{XZ}(j) = \lambda_{ik}^{XZ} \quad \text{untuk semua } j \quad (\text{homogenous}) \\ H_1: & \quad \lambda_{ik}^{XZ}(j) \ne \lambda_{ik}^{XZ} \quad \text{untuk setidaknya satu } j \quad (\text{conditional}) \end{aligned} \]

Asumsi: - Tidak ada sparsity ekstrem di tabel kontingensi - Model nested: conditional adalah perluasan dari homogenous

Kode R:

library(MASS)
# Misal tab adalah tabel kontingensi 3 arah
model_homog <- loglm(~ X*Y + Y*Z + X*Z, data = tab)
model_cond  <- loglm(~ X*Y + Y*Z + X*Z*Y, data = tab)

anova(model_homog, model_cond)

Catatan Tambahan: - Model model_homog mengasumsikan efek \(XZ\) stabil across Y - Model model_cond memperbolehkan efek \(XZ\) bergantung pada Y (tiga-way interaction)

Output Interpretatif:

Analysis of Deviance Table
Model 1: ~ X*Y + Y*Z + X*Z
Model 2: ~ X*Y + Y*Z + X*Z*Y
Deviance = 10.12; df = 3; p-value = 0.017

Interpretasi: - Karena p-value < 0.05 → gunakan model conditional on Y

19.3 Pengujian Hipotesis Interaksi X dan Z (Conditional on Y vs Homogenous)

Langkah-Langkah: 1. Hitung deviance kedua model (homogenous dan conditional) 2. Hitung selisih deviance (\(G^2\)): \[ G^2 = 2 (\log L_{cond} - \log L_{homog}) \] 3. Tentukan derajat kebebasan (df) sebagai selisih df model 4. Hitung p-value menggunakan distribusi \(\chi^2\) 5. Bandingkan p-value dengan \(\alpha\) (mis. 0.05)

Visualisasi: Gunakan mosaic plot:

library(vcd)
mosaic(model_cond, shade = TRUE)

Plot Perbandingan Deviance:

df <- data.frame(
  Model = c("Homogenous", "Conditional"),
  Deviance = c(deviance(model_homog), deviance(model_cond))
)
barplot(df$Deviance, names.arg = df$Model,
        col = c("skyblue", "tomato"), main = "Perbandingan Deviance Model")

19.4 Validasi Model (Tambahan)

Untuk memastikan model terbaik, selain nilai deviance dan p-value, kita dapat mengevaluasi residual deviance per sel:

resid_table <- residuals(model_cond, type = "pearson")
round(resid_table, 2)

Atau bandingkan fitted vs observed:

obs <- as.vector(tab)
fitted <- fitted(model_cond)
plot(obs, fitted, xlab = "Observed", ylab = "Fitted", pch = 16)
abline(0, 1, col = "red")

Tabel Perbandingan Model | Aspek | Homogenous | Conditional on Y | |——————-|————————|————————–| | Kompleksitas | Lebih sederhana | Lebih kompleks | | Interpretasi | Mudah | Perlu eksplisit per Y | | Fit | Mungkin lebih buruk | Potensi fit lebih baik | | Overfitting | Lebih kecil | Risiko lebih besar |

Kesimpulan Umum: Pengujian ini memungkinkan kita mengevaluasi kestabilan hubungan antara dua variabel terhadap variabel ketiga. Dalam studi sosial, kesehatan, atau perilaku konsumen, perbedaan asosiasi antar kelompok dapat memberikan wawasan penting. Model homogenous cocok jika efek stabil, sedangkan model conditional diperlukan untuk menangkap efek interaksi moderasi.

Hasil akhir tidak hanya bergantung pada statistik, tetapi juga konsekuensi praktis, ukuran sampel, dan interpretabilitas dalam konteks penelitian.

20 Uji Model Interaksi Dua Arah (Homogenous vs Conditional on Z)

Pada bab ini, kita akan menguji apakah interaksi antara \(X\) dan \(Y\) bervariasi tergantung pada variabel ketiga \(Z\). Uji ini penting ketika kita ingin mengetahui apakah hubungan antara dua variabel utama bersifat homogen di seluruh level \(Z\), atau justru berubah pada masing-masing kategori \(Z\).

20.1 Model Conditional on Z

Model conditional on \(Z\) menyatakan bahwa interaksi antara \(X\) dan \(Y\) diestimasi secara terpisah untuk setiap kategori \(Z\). Ini berarti efek \(X \times Y\) berbeda pada setiap strata \(Z\).

Notasi Model: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ik}^{XZ} + \lambda_{jk}^{YZ} + \lambda_{ij}^{XY}(k) \]

Artinya: - Interaksi \(XY\) tidak bersifat global, melainkan spesifik untuk setiap level \(Z\) - Model ini menangkap kemungkinan bahwa \(Z\) adalah moderator dari hubungan antara \(X\) dan \(Y\)

Contoh Aplikasi: - \(X\): Jenis Kelamin, \(Y\): Tingkat Kepatuhan Protokol, \(Z\): Wilayah Domisili - Apakah hubungan jenis kelamin dan kepatuhan sama di kota besar dan pedesaan?

20.2 Pengujian Ada Tidaknya Interaksi antara X dan Y (Homogenous vs Conditional on Z)

Tujuan: Menentukan apakah interaksi \(XY\) bersifat tetap di seluruh level \(Z\), atau berbeda antar level \(Z\).

Hipotesis: \[ \begin{aligned} H_0 &: \quad \lambda_{ij}^{XY}(k) = \lambda_{ij}^{XY} \quad \text{untuk semua } k \quad (\text{Homogenous}) \\ H_1 &: \quad \lambda_{ij}^{XY}(k) \ne \lambda_{ij}^{XY} \quad \text{untuk setidaknya satu } k \quad (\text{Conditional}) \end{aligned} \]

Implementasi R:

library(MASS)
model_homog <- loglm(~ X*Z + Y*Z + X*Y, data = tab)
model_cond  <- loglm(~ X*Z + Y*Z + X*Y*Z, data = tab)

anova(model_homog, model_cond)

Asumsi: - Tabel kontingensi 3 arah harus terisi dengan cukup banyak observasi per kombinasi - Tidak ada sparsity ekstrem

Output: Jika p-value < 0.05, maka asosiasi \(X \times Y\) tergantung pada level \(Z\) → gunakan model conditional.

20.3 Pengujian Hipotesis Interaksi X dan Y (Conditional on Z vs Homogenous)

Langkah-langkah: 1. Hitung deviance dari kedua model 2. Hitung selisih deviance: \[ G^2 = 2(\log L_{conditional} - \log L_{homogenous}) \] 3. Hitung derajat kebebasan (df) sebagai selisih parameter 4. Evaluasi p-value dari distribusi \(\chi^2\) 5. Ambil keputusan uji

Interpretasi Hasil: - \(p < 0.05\) → Gunakan model conditional → interaksi \(XY\) tergantung \(Z\) - \(p \ge 0.05\) → Gunakan model homogenous → interaksi \(XY\) seragam di seluruh \(Z\)

Visualisasi Model:

library(vcd)
mosaic(model_cond, shade = TRUE)

Tabel Perbandingan Model | Kriteria | Model Homogenous | Model Conditional on Z | |—————–|————————|————————-| | Kompleksitas | Rendah | Tinggi | | Interpretasi | Global & seragam | Terpisah per level \(Z\) | | Fit | Mungkin tidak optimal | Fit lebih baik | | Risiko Overfit | Rendah | Tinggi pada sampel kecil|

Kesimpulan: Pengujian ini penting untuk mendeteksi efek moderasi variabel \(Z\) terhadap interaksi dua arah \(X \times Y\). Dalam banyak kasus seperti pengujian kebijakan di wilayah berbeda, perilaku antar grup demografi, atau uji segmentasi pelanggan, uji conditional vs homogenous membantu memilih model yang lebih akurat namun tetap terkontrol kompleksitasnya.

21 Evaluasi Model Terbaik dalam Analisis Data Kategori

Bab ini menyatukan seluruh hasil analisis sebelumnya ke dalam satu kerangka evaluasi menyeluruh, mencakup pemilihan model terbaik, interpretasi koefisien, serta estimasi nilai dugaan (fitted value). Pendekatan ini bersifat sintesis—menggabungkan aspek statistik, substantif, dan teknis dari keseluruhan model log-linear.

21.1 Ringkasan Model Log-Linear yang Diestimasi

Selama analisis, berbagai model telah diestimasi dan diuji, antara lain:

  • Model Saturated (mengandung semua interaksi)
  • Model Homogenous untuk tabel 2 arah dan 3 arah
  • Model Conditional (interaksi tergantung variabel ketiga)

Setiap model dibandingkan berdasarkan fit, parsimoni, dan signifikansi interaksi. Ringkasan deviance:

Model Deviance df p-value
Saturated 0 0 -
Homogenous (3-way) 5.23 3 0.155
Conditional on X 3.12 2 0.211
Conditional on Y 10.42 3 0.016**

Catatan: Model dengan deviance lebih rendah dan p-value signifikan menunjukkan model yang lebih tepat untuk menangkap variasi data.

21.2 Ringkasan Pengujian Interaksi 2 Arah dan 3 Arah

Untuk model-model interaksi:

  • Interaksi Tiga Arah (\(XYZ\)): Uji dengan membandingkan model saturated vs tanpa tiga arah
  • Interaksi Dua Arah (\(XY\), \(YZ\), \(XZ\)): Diuji melalui nested model comparison dan analisis conditional

Visualisasi hasil uji:

barplot(c(Dev.Homog = 5.23, Dev.CondY = 10.42),
        col = c("skyblue", "tomato"),
        ylab = "Deviance", main = "Perbandingan Deviance Model")

Interpretasi: - Jika p-value dari pengujian antar model < 0.05, maka model conditional lebih sesuai - Jika tidak signifikan, maka model simpler (homogenous) lebih baik secara parsimoni

21.3 Kesimpulan Pemilihan Model Terbaik

Dari seluruh pengujian yang dilakukan, model terbaik yang dipilih adalah:

Model Conditional on Y, yaitu model dengan interaksi \(X \times Z\) yang bervariasi tergantung kategori \(Y\).

Alasan pemilihan: - p-value uji deviance dari model conditional terhadap homogenous adalah 0.016 < 0.05 - Deviance lebih rendah dibandingkan model simpler - Interpretasi koefisien tetap memungkinkan, meski kompleksitas meningkat

Struktur model terbaik: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} + \lambda_{jk}^{YZ} + \lambda_{ik}^{XZ}(j) \]

21.4 Interpretasi Koefisien Model Terbaik

Koefisien dalam model log-linear diinterpretasikan dalam bentuk log-counts atau setelah diubah ke odds ratio:

Contoh: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} \]

Jika \(\lambda_{12}^{XY} = 0.8\) maka: \[ OR = e^{0.8} \approx 2.23 \] Artinya, odds jumlah observasi pada sel \((1,2)\) adalah 2.23 kali lebih besar dibanding baseline, ketika semua efek lain konstan.

Interpretasi disesuaikan tergantung model: - Untuk interaksi tiga arah, efeknya tergantung pada nilai variabel ketiga - Untuk dummy reference coding, baseline digunakan sebagai titik referensi

21.5 Perhitungan Manual Nilai Dugaan (Fitted Values)

Nilai dugaan \(\hat{\mu}_{ijk}\) dihitung dari ekspresi: \[ \hat{\mu}_{ijk} = \exp(\hat{\lambda} + \hat{\lambda}_i^X + \hat{\lambda}_j^Y + \hat{\lambda}_k^Z + \hat{\lambda}_{ij}^{XY} + \dots) \]

Contoh: Misalkan parameter hasil estimasi: - \(\hat{\lambda} = 3.0\) - \(\hat{\lambda}_1^X = -0.2\), \(\hat{\lambda}_2^Y = 0.1\), \(\hat{\lambda}_1^Z = 0.3\) - \(\hat{\lambda}_{12}^{XY} = 0.5\)

Maka: \[ \hat{\mu}_{121} = \exp(3.0 - 0.2 + 0.1 + 0.3 + 0.5) = \exp(3.7) \approx 40.45 \]

Kode Validasi R:

fitted_model <- fitted(model_terbaik)
round(fitted_model, 1)

Visualisasi hasil:

obs <- as.vector(tab)
fit <- as.vector(fitted_model)
plot(obs, fit, xlab = "Observed", ylab = "Fitted", pch = 16)
abline(0,1, col = "red")

Kesimpulan Umum:

Evaluasi akhir model terbaik menggabungkan: - Kriteria statistik (deviance, p-value) - Kriteria substantif (keterbacaannya terhadap fenomena) - Kriteria teknis (jumlah parameter, stabilitas estimasi)

Model terbaik adalah model yang seimbang antara kompleksitas dan akurasi. Analisis lanjutan bisa menggunakan model ini untuk prediksi, klasifikasi, atau inferensi lanjutan berdasarkan estimasi marginal dan interaksi yang signifikan.

#22 Referensi

  • Agresti, A. (2013). Categorical data analysis (3rd ed.). John Wiley & Sons.
  • Agresti, A. (2019). An introduction to categorical data analysis (3rd ed.). Wiley.
  • Christensen, R. (1997). Log-linear models and logistic regression (2nd ed.). Springer.
  • Fisher, R. A. (1935). The design of experiments. Oliver and Boyd.
  • Fox, J. (2008). Applied regression analysis and generalized linear models (2nd ed.). Sage Publications.
  • Friendly, M., & Meyer, D. (2016). Discrete data analysis with R: Visualization and modeling techniques for categorical and count data. CRC Press.
  • Howell, D. C. (2012). Statistical methods for psychology (8th ed.). Cengage Learning.
  • Hosmer, D. W., Lemeshow, S., & Sturdivant, R. X. (2013). Applied logistic regression (3rd ed.). Wiley.
  • Lestari, P., & Wulandari, D. (2020). Analisis data kategorik dengan model regresi logistik. Jurnal Statistika dan Komputasi Indonesia, 12(1), 45–59.
  • Mehta, C. R., & Patel, N. R. (1983). A network algorithm for performing Fisher’s exact test in \(r \times c\) contingency tables. Journal of the American Statistical Association, 78(382), 427–434.
  • Ebook ADK, Pertemuan 13. (2025). Universitas Padjadjaran.
  • Powers, D. M. (2011). Evaluation: From precision, recall and F-measure to ROC, informedness, markedness & correlation. Journal of Machine Learning Technologies, 2(1), 37–63.
  • Subana, M., & Sudrajat, T. (2005). Statistik pendidikan. Pustaka Setia.
  • Sudjana, N. (2005). Metoda statistika (6th ed.). Tarsito.
  • Wickham, H., & Grolemund, G. (2016). R for data science: Import, tidy, transform, visualize, and model data. O’Reilly Media.
  • Zuur, A. F., Ieno, E. N., Walker, N., Saveliev, A. A., & Smith, G. M. (2009). Mixed effects models and extensions in ecology with R. Springer.