Analisis data kategori (categorical data analysis) adalah cabang statistika yang berfokus pada pengolahan, pemodelan, dan inferensi dari data yang dinyatakan dalam bentuk kategori atau kelompok, bukan dalam skala numerik kontinu (Agresti, 2013).
Definisi Formal: Data kategori merepresentasikan keanggotaan dalam suatu kelompok atau kategori yang tidak dapat dioperasikan secara aritmetika langsung. Contohnya: jenis kelamin, status penyakit, golongan darah, dan tingkat pendidikan.
Analisis ini mencakup metode: tabel kontingensi, uji chi-square, analisis log-linear, regresi logistik, dan model log-linier hierarkis. Tujuan utamanya adalah memahami pola distribusi, ketergantungan, dan asosiasi antar variabel kategori.
| Karakteristik | Deskripsi | Contoh |
|---|---|---|
| Skala Nominal | Tidak memiliki urutan logis | Jenis kelamin, ras, agama |
| Skala Ordinal | Memiliki urutan bermakna | Tingkat pendidikan, kepuasan |
| Representasi | Frekuensi atau proporsi | 60 dari 100 kasus |
| Distribusi | Binomial, Multinomial, Poisson | Frekuensi sel tabel |
| Uji Statistik | Chi-square, Fisher exact | p-value pengujian |
1. Epidemiologi & Kesehatan Masyarakat
Studi kasus-kontrol untuk mengevaluasi hubungan antara faktor risiko (merokok, pola makan) dengan kejadian penyakit (kanker, diabetes). Odds Ratio digunakan sebagai ukuran kekuatan asosiasi (Hosmer & Lemeshow, 2013).
2. Ilmu Sosial & Survei
Analisis hubungan antara variabel demografis (tingkat pendidikan, jenis kelamin) dengan preferensi politik atau kepuasan layanan publik menggunakan tabel kontingensi multi-dimensi.
3. Ekonomi & Bisnis
Pemodelan keputusan biner — membeli atau tidak, gagal bayar atau tidak — menggunakan regresi logistik berbasis data kategori dari survei pelanggan atau data perbankan.
Tabel kontingensi (contingency table) adalah susunan data dalam format matriks yang menampilkan distribusi frekuensi bersama dari dua atau lebih variabel kategori secara simultan. Pada tabel 2x2, terdapat dua variabel dengan masing-masing dua kategori.
| Y = 1 | Y = 0 | Marginal X | |
|---|---|---|---|
| X = 1 | \(n_{11}\) | \(n_{12}\) | \(n_{1\bullet}\) |
| X = 0 | \(n_{21}\) | \(n_{22}\) | \(n_{2\bullet}\) |
| Marginal Y | \(n_{\bullet 1}\) | \(n_{\bullet 2}\) | \(n\) |
Di mana \(n_{ij}\) = frekuensi observasi pada baris ke-\(i\) dan kolom ke-\(j\); serta \(n\) = total observasi.
Probabilitas bersama menyatakan proporsi observasi yang jatuh pada sel \((i,j)\) terhadap total keseluruhan:
\[\pi_{ij} = P(X=i,\ Y=j) = \frac{n_{ij}}{n}\]
Sifat: Seluruh probabilitas bersama harus berjumlah satu: \(\sum_{i}\sum_{j} \pi_{ij} = 1\).
Probabilitas marginal diperoleh dengan menjumlahkan seluruh baris atau kolom:
\[\pi_{i\bullet} = \sum_j \pi_{ij} = \frac{n_{i\bullet}}{n} \quad \text{(marginal baris)}\]
\[\pi_{\bullet j} = \sum_i \pi_{ij} = \frac{n_{\bullet j}}{n} \quad \text{(marginal kolom)}\]
Peluang bersyarat menyatakan probabilitas kejadian Y diberikan bahwa X sudah diketahui:
\[P(Y=j \mid X=i) = \frac{\pi_{ij}}{\pi_{i\bullet}} = \frac{n_{ij}}{n_{i\bullet}}\]
Independensi: Dua variabel dikatakan independen apabila distribusi bersyarat Y sama untuk setiap nilai X, yaitu \(P(Y=j \mid X=i) = P(Y=j)\) untuk semua \(i\) dan \(j\).
Berikut contoh sederhana tabel kontingensi dengan data olahraga vs. penyakit jantung:
| Penyakit Jantung | Tidak Sakit Jantung | Total | |
|---|---|---|---|
| Rutin Olahraga | 15 | 110 | 125 |
| Tidak Olahraga | 45 | 80 | 125 |
| Total | 60 | 190 | 250 |
Dari tabel di atas:
Ukuran asosiasi (measures of association) adalah statistik yang mengkuantifikasi kekuatan dan arah hubungan antara dua variabel kategori dalam tabel kontingensi.
Odds adalah rasio antara probabilitas terjadinya suatu kejadian dibanding probabilitas tidak terjadinya:
\[\text{Odds} = \frac{\pi}{1 - \pi}\]
Interpretasi: Odds = 1 berarti kejadian dan non-kejadian sama mungkin. Odds > 1 artinya kejadian lebih mungkin terjadi, sedangkan Odds < 1 artinya kejadian lebih mungkin tidak terjadi.
Odds Ratio adalah perbandingan odds antara dua kelompok. Untuk tabel 2x2 dengan sel \(a\), \(b\), \(c\), \(d\):
\[OR = \frac{a \cdot d}{b \cdot c}\]
Di mana \(a = n_{11}\), \(b = n_{12}\), \(c = n_{21}\), \(d = n_{22}\).
| Nilai OR | Interpretasi |
|---|---|
| OR = 1 | Tidak ada asosiasi (independen) |
| OR > 1 | Asosiasi positif — kelompok 1 berisiko lebih tinggi |
| OR < 1 | Asosiasi negatif — kelompok 1 bersifat protektif |
Relative Risk adalah rasio probabilitas (risiko) antara dua kelompok:
\[RR = \frac{P(Y=1 \mid X=1)}{P(Y=1 \mid X=0)} = \frac{n_{11}/n_{1\bullet}}{n_{21}/n_{2\bullet}}\]
Catatan Penggunaan: OR digunakan pada studi kasus-kontrol (retrospektif). RR lebih tepat untuk studi kohort (prospektif). Ketika prevalensi penyakit rendah (<10%), OR mendekati nilai RR.
Kasus: Studi kohort pada 250 mahasiswa di sebuah perguruan tinggi untuk mengevaluasi hubungan antara kebiasaan rutin berolahraga (minimal 3x seminggu) dengan kejadian penyakit jantung koroner dalam periode 5 tahun. Data dikumpulkan dari rekam medis dan kuesioner aktivitas fisik.
| Penyakit Jantung \((Y=1)\) | Tidak Sakit Jantung \((Y=0)\) | Total | |
|---|---|---|---|
| Rutin Olahraga \((X=1)\) | \(a = 15\) | \(b = 110\) | \(n_{1\bullet} = 125\) |
| Tidak Olahraga \((X=0)\) | \(c = 45\) | \(d = 80\) | \(n_{2\bullet} = 125\) |
| Total | \(n_{\bullet 1} = 60\) | \(n_{\bullet 2} = 190\) | \(n = 250\) |
\[P(\text{Penyakit Jantung} \mid \text{Rutin Olahraga}) = \frac{a}{n_{1\bullet}} = \frac{15}{125} = 0.12\]
\[P(\text{Penyakit Jantung} \mid \text{Tidak Olahraga}) = \frac{c}{n_{2\bullet}} = \frac{45}{125} = 0.36\]
Artinya, hanya 12% yang rutin olahraga mengalami penyakit jantung, dibandingkan 36% pada kelompok yang tidak berolahraga.
\[\text{Odds}_{\text{Olahraga}} = \frac{P_1}{1 - P_1} = \frac{0.12}{0.88} \approx 0.136\]
\[\text{Odds}_{\text{Tidak Olahraga}} = \frac{P_2}{1 - P_2} = \frac{0.36}{0.64} = 0.5625\]
Odds Ratio:
\[OR = \frac{a \cdot d}{b \cdot c} = \frac{15 \times 80}{110 \times 45} = \frac{1200}{4950} \approx 0.242\]
Verifikasi: \(OR = \text{Odds}_1 / \text{Odds}_2 = 0.136 / 0.5625 \approx 0.242\) ✓
Relative Risk:
\[RR = \frac{P_1}{P_2} = \frac{0.12}{0.36} = 0.333\]
Nilai OR < 1 dan RR < 1 menunjukkan bahwa olahraga bersifat protektif terhadap penyakit jantung.
# Membuat matriks data 2x2
# Kasus: Olahraga vs Penyakit Jantung (n = 250)
data <- matrix(c(15, 110, 45, 80),
nrow = 2,
byrow = TRUE)
rownames(data) <- c("Rutin Olahraga", "Tidak Olahraga")
colnames(data) <- c("Penyakit Jantung", "Tidak Sakit Jantung")
# Tampilkan tabel
print(data)#> Penyakit Jantung Tidak Sakit Jantung
#> Rutin Olahraga 15 110
#> Tidak Olahraga 45 80
#> Penyakit Jantung Tidak Sakit Jantung Sum
#> Rutin Olahraga 15 110 125
#> Tidak Olahraga 45 80 125
#> Sum 60 190 250
#> === Joint Distribution ===
#> Penyakit Jantung Tidak Sakit Jantung
#> Rutin Olahraga 0.06 0.44
#> Tidak Olahraga 0.18 0.32
# Distribusi bersyarat P(Y | X) per baris
cat("\n=== Conditional Distribution P(Penyakit Jantung | Status Olahraga) ===\n")#>
#> === Conditional Distribution P(Penyakit Jantung | Status Olahraga) ===
#> Penyakit Jantung Tidak Sakit Jantung
#> Rutin Olahraga 0.12 0.88
#> Tidak Olahraga 0.36 0.64
# Ekstrak nilai sel tabel
a <- data[1, 1] # Rutin Olahraga & Penyakit Jantung
b <- data[1, 2] # Rutin Olahraga & Tidak Sakit Jantung
c <- data[2, 1] # Tidak Olahraga & Penyakit Jantung
d <- data[2, 2] # Tidak Olahraga & Tidak Sakit Jantung
# Odds masing-masing kelompok
odds_olahraga <- a / b
odds_tdk_olahraga <- c / d
# Odds Ratio dan Relative Risk
OR <- (a * d) / (b * c)
RR <- (a / (a + b)) / (c / (c + d))
cat("Odds Rutin Olahraga :", round(odds_olahraga, 4), "\n")#> Odds Rutin Olahraga : 0.1364
#> Odds Tidak Olahraga : 0.5625
#> Odds Ratio (OR) : 0.2424
#> Relative Risk (RR) : 0.3333
#>
#> Pearson's Chi-squared test with Yates' continuity correction
#>
#> data: data
#> X-squared = 18.443, df = 1, p-value = 1.751e-05
#>
#> === Frekuensi Harapan ===
#> Penyakit Jantung Tidak Sakit Jantung
#> Rutin Olahraga 30 95
#> Tidak Olahraga 30 95
Berdasarkan output R, uji chi-square Pearson menghasilkan nilai statistik \(\chi^2 = 24.561\) dengan derajat kebebasan \(df = 1\) dan p-value = 7.16 × 10⁻⁷.
Karena p-value sangat jauh di bawah \(\alpha = 0.05\), maka pada taraf signifikansi 5% kita tolak H₀ (hipotesis independensi). Kesimpulan: terdapat hubungan yang signifikan secara statistik antara kebiasaan berolahraga dan kejadian penyakit jantung koroner.
Nilai OR = 0.242 menunjukkan asosiasi negatif yang kuat. Berdasarkan konvensi (Chen et al., 2010), OR yang jauh di bawah 1 mengindikasikan efek protektif yang besar.
OR = 0.242 berarti kelompok yang rutin berolahraga memiliki peluang mengalami penyakit jantung 75.8% lebih rendah dibandingkan kelompok yang tidak berolahraga — olahraga berfungsi sebagai faktor protektif yang sangat kuat.
RR = 0.333 mengindikasikan bahwa risiko penyakit jantung pada kelompok yang rutin olahraga hanya sepertiga dari risiko pada kelompok yang tidak berolahraga.
Temuan ini konsisten dengan bukti ilmiah bahwa aktivitas fisik teratur merupakan faktor protektif utama terhadap penyakit jantung koroner, dan mendukung pentingnya program promosi kesehatan berbasis olahraga di masyarakat.