1 Definisi Analisis Data Kategori

Sebagian besar variabel yang dijumpai dalam riset kesehatan, ekonomi, maupun sosial tidak berbentuk angka kontinu, melainkan berupa kelompok atau label — sembuh/tidak sembuh, merokok/tidak merokok, puas/cukup/tidak puas. Data semacam ini disebut data kategori, dan cara memperlakukannya berbeda dari data numerik biasa: rata-rata dan simpangan baku tidak lagi menjadi ukuran yang informatif, karena angka yang muncul (misalnya kode 1 dan 2) hanya berfungsi sebagai label, bukan nilai yang bisa dijumlahkan atau dirata-ratakan secara bermakna.

Agarwal & Agresti (2018) membedakan variabel kategori nominal — kategori tanpa urutan alami, seperti golongan darah atau jenis kelamin — dari variabel kategori ordinal, yang kategorinya memiliki tingkatan, seperti “ringan / sedang / berat”. Perbedaan ini penting karena metode analisis yang cocok untuk data ordinal (misalnya uji Wilcoxon atau model logistik ordinal) akan membuang informasi jika diterapkan pada data nominal, dan sebaliknya.

1.1 Karakteristik Variabel Kategori

Tiga sifat yang membedakan variabel kategori dari variabel kontinu:

  • Skala pengukuran terbatas. Nilai yang mungkin muncul hanya sejumlah kategori tertentu (finite), bukan kontinum tak terhingga.
  • Operasi aritmetika tidak berlaku langsung. Kode kategori (1, 2, 3, …) tidak boleh dijumlahkan atau dirata-ratakan seolah itu angka biasa.
  • Distribusi peluang berbentuk proporsi kategori, bukan fungsi densitas kontinu — sehingga model probabilistiknya memakai distribusi binomial atau multinomial, bukan distribusi normal.

1.2 Contoh Penerapan dalam Penelitian

Beberapa contoh konkret di mana analisis data kategori menjadi kerangka kerja utama:

  1. Epidemiologi — menghubungkan status merokok (kategori) dengan kejadian kanker paru (kategori), lewat tabel kontingensi dan odds ratio.
  2. Riset sosial — menguji apakah tingkat pendidikan (ordinal) berasosiasi dengan preferensi kebijakan (nominal atau ordinal).
  3. Kredit dan risiko keuangan — memprediksi status gagal bayar (biner: gagal/tidak) berdasarkan kategori skor kredit, menggunakan regresi logistik.

Dalam praktik saya sendiri saat mengerjakan tugas klasifikasi banjir biasa vs. banjir bandang, kerangka data kategori inilah yang jadi fondasi sebelum masuk ke regresi logistik biner — variabel respons is_flash_flood pun pada dasarnya adalah data kategori dengan dua level.


2 Tabel Kontingensi

2.1 Definisi

Tabel kontingensi (contingency table) adalah tabulasi silang (cross-tabulation) yang menyajikan frekuensi bersama dari dua variabel kategori. Setiap sel dalam tabel menunjukkan berapa banyak observasi yang jatuh pada kombinasi kategori tertentu dari kedua variabel.

2.2 Struktur Tabel Kontingensi

Untuk dua variabel kategori \(X\) (dengan \(I\) level) dan \(Y\) (dengan \(J\) level), tabel kontingensi berukuran \(I \times J\) berisi frekuensi \(n_{ij}\) — banyaknya observasi dengan \(X = i\) dan \(Y = j\). Baris marjinal dan kolom marjinal masing-masing merupakan total per baris (\(n_{i+}\)) dan total per kolom (\(n_{+j}\)).

Kasus paling sederhana dan paling sering dijumpai adalah tabel \(2 \times 2\):

\(Y = 1\) \(Y = 2\) Total
\(X = 1\) \(n_{11}\) \(n_{12}\) \(n_{1+}\)
\(X = 2\) \(n_{21}\) \(n_{22}\) \(n_{2+}\)
Total \(n_{+1}\) \(n_{+2}\) \(n\)

2.3 Joint Distribution

Distribusi bersama (joint distribution) menyatakan peluang gabungan setiap kombinasi kategori:

\[\pi_{ij} = P(X = i, Y = j)\]

diestimasi dari data melalui proporsi sel: \(\hat\pi_{ij} = n_{ij}/n\).

2.4 Marginal Distribution

Distribusi marjinal adalah distribusi satu variabel saja, diperoleh dengan menjumlahkan sel-sel joint distribution pada arah variabel lainnya:

\[\pi_{i+} = \sum_{j} \pi_{ij}, \qquad \pi_{+j} = \sum_{i} \pi_{ij}\]

Distribusi marjinal ini yang muncul di baris dan kolom “Total” pada tabel kontingensi.

2.5 Conditional Probability

Peluang bersyarat menyatakan distribusi satu variabel dengan syarat nilai variabel lain sudah diketahui — inilah yang mendasari interpretasi asosiasi:

\[\pi_{j|i} = P(Y = j \mid X = i) = \frac{\pi_{ij}}{\pi_{i+}}\]

Jika \(\pi_{j|i}\) sama untuk semua nilai \(i\) (peluang \(Y\) tidak berubah walau \(X\) berbeda), maka \(X\) dan \(Y\) dikatakan independen — dan inilah hipotesis nol yang diuji lewat uji chi-square pada Bagian 5.


3 Ukuran Asosiasi

Setelah tabel kontingensi terbentuk, pertanyaan berikutnya adalah seberapa kuat hubungan antara kedua variabel. Tiga ukuran asosiasi yang paling umum dipakai pada tabel \(2 \times 2\):

3.1 Odds

Odds adalah rasio antara peluang suatu kejadian terjadi dan peluang tidak terjadi:

\[\text{Odds} = \frac{\pi}{1-\pi}\]

Pada baris pertama tabel \(2\times2\) di atas, odds kejadian \(Y=1\) dengan syarat \(X=1\) adalah \(\dfrac{n_{11}}{n_{12}}\).

3.2 Odds Ratio

Odds ratio (OR) membandingkan odds pada satu baris terhadap odds pada baris lainnya:

\[OR = \frac{ad}{bc}\]

dengan notasi sel tabel \(2\times2\) standar \(a = n_{11}\), \(b = n_{12}\), \(c = n_{21}\), \(d = n_{22}\).

3.3 Relative Risk

Relative risk (RR), atau rasio risiko, membandingkan proporsi kejadian secara langsung antar dua kelompok, bukan odds-nya:

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

3.4 Interpretasi Statistik Masing-Masing Ukuran

  • Odds = k berarti kejadian tersebut \(k\) kali lebih mungkin terjadi dibanding tidak terjadi, pada kelompok itu saja — odds tidak membandingkan dua kelompok, hanya mendeskripsikan satu kelompok.
  • OR = 1 menandakan tidak ada asosiasi; OR > 1 berarti kelompok pembilang (baris \(X=1\)) punya odds kejadian \(Y=1\) yang lebih tinggi; OR < 1 sebaliknya. OR tidak bergantung pada desain studi (bisa dipakai baik pada studi kohort maupun kasus-kontrol), yang jadi alasan OR lebih disukai di studi retrospektif dibanding RR.
  • RR = 1 juga menandakan tidak ada asosiasi, tapi RR hanya valid diinterpretasikan sebagai risiko langsung ketika desain studinya kohort (prospektif) — pada studi kasus-kontrol, RR bisa menyesatkan karena proporsi kasus di sampel tidak mencerminkan prevalensi di populasi.
  • Untuk kejadian yang jarang terjadi (rare disease assumption), OR dan RR akan bernilai hampir sama; untuk kejadian yang umum, keduanya bisa berbeda jauh — ini sering jadi sumber kesalahan interpretasi kalau OR “dibaca” seperti RR.

4 Contoh Perhitungan Manual

Catatan: Angka pada contoh ini bersifat ilustratif (rekaan), bukan data dari studi nyata, semata untuk mendemonstrasikan mekanisme perhitungan.

Kasus: hubungan antara status merokok dan kejadian kanker paru pada studi kasus-kontrol dengan 200 subjek.

4.1 Membuat Tabel Kontingensi

Kanker Paru Tidak Kanker Total
Merokok 60 40 100
Tidak Merokok 20 80 100
Total 80 120 200

4.2 Menghitung Peluang Bersyarat

Peluang kanker paru dengan syarat merokok: \[P(\text{Kanker} \mid \text{Merokok}) = \frac{60}{100} = 0.60\]

Peluang kanker paru dengan syarat tidak merokok: \[P(\text{Kanker} \mid \text{Tidak Merokok}) = \frac{20}{100} = 0.20\]

Selisih 0.60 versus 0.20 ini sudah memberi indikasi awal ada asosiasi, tapi besarnya asosiasi baru terlihat jelas lewat odds dan odds ratio.

4.3 Menghitung Odds

Odds kanker paru pada kelompok merokok: \[\text{Odds}_{\text{merokok}} = \frac{60}{40} = 1.5\]

Odds kanker paru pada kelompok tidak merokok: \[\text{Odds}_{\text{tidak merokok}} = \frac{20}{80} = 0.25\]

4.4 Menghitung Odds Ratio

\[OR = \frac{ad}{bc} = \frac{(60)(80)}{(40)(20)} = \frac{4800}{800} = 6\]

Sebagai pembanding, relative risk-nya: \[RR = \frac{60/100}{20/100} = 3\]

Perbedaan OR = 6 dan RR = 3 di sini cukup besar justru karena kejadian kanker paru pada sampel ini tidak jarang (proporsi 40%) — ini contoh baik untuk menunjukkan kenapa “rare disease assumption” penting dicek sebelum menyamakan OR dengan RR secara sembarangan.


5 Analisis Menggunakan R

Bagian ini mengulang kasus yang sama secara komputasional, sekaligus menambahkan uji chi-square untuk memeriksa apakah asosiasi yang terlihat cukup kuat untuk dianggap tidak terjadi karena kebetulan sampel.

5.1 Membuat Tabel Kontingensi di R

data <- matrix(c(60, 40, 20, 80),
               nrow = 2,
               byrow = TRUE)

rownames(data) <- c("Merokok", "Tidak Merokok")
colnames(data) <- c("Kanker", "Tidak Kanker")

data
##               Kanker Tidak Kanker
## Merokok           60           40
## Tidak Merokok     20           80
mosaicplot(data, main = "Status Merokok vs Kejadian Kanker Paru",
           color = c("#2c7fb8", "#a6bddb"), xlab = "", ylab = "")

Mosaic plot ini sekilas sudah menunjukkan lebar blok “Kanker” pada baris “Merokok” jauh lebih besar dibanding baris “Tidak Merokok” — indikasi visual dari asosiasi yang akan diuji formal di bawah.

5.2 Menghitung Odds Ratio di R

a <- data[1,1]; b <- data[1,2]; c <- data[2,1]; d <- data[2,2]

odds_ratio <- (a * d) / (b * c)
odds_ratio
## [1] 6

Nilai ini konsisten dengan perhitungan manual pada Bagian 4 — sengaja dibuat sama untuk verifikasi silang.

5.3 Melakukan Uji Chi-Square

hasil_chisq <- chisq.test(data, correct = FALSE)
hasil_chisq
## 
##  Pearson's Chi-squared test
## 
## data:  data
## X-squared = 33.333, df = 1, p-value = 7.764e-09

Statistik chi-square yang diperoleh adalah \(\chi^2 =\) 33.333 dengan p-value < 1e-04.


6 Interpretasi Hasil

6.1 Interpretasi Statistik

Dengan p-value jauh di bawah 0.05, hipotesis nol independensi antara status merokok dan kejadian kanker paru ditolak — data memberi cukup bukti bahwa kedua variabel ini berasosiasi, bukan sekadar variasi sampling acak. Nilai OR = 6 menunjukkan kekuatan asosiasi tersebut: odds kejadian kanker paru pada kelompok merokok enam kali odds pada kelompok tidak merokok.

Perlu digarisbawahi, chi-square test hanya menjawab ada tidaknya asosiasi (signifikansi), sedangkan odds ratio menjawab seberapa besar asosiasi itu (effect size). Sampel besar bisa membuat asosiasi yang sebenarnya lemah tetap signifikan secara statistik — sehingga membaca OR/RR tetap penting meski uji chi-square sudah signifikan.

6.2 Interpretasi Substantif dalam Konteks Kasus

Dalam kerangka studi kasus-kontrol semacam ini, OR = 6 lazim dibaca sebagai indikasi merokok berasosiasi kuat dengan risiko kanker paru — tapi satu batasan penting harus disebutkan: desain kasus-kontrol tidak memungkinkan klaim kausal langsung dari satu tabel kontingensi saja. Asosiasi yang teramati bisa saja dipengaruhi variabel perancu (confounding) yang tidak masuk dalam tabel, misalnya usia atau paparan polutan lain. Odds ratio sebesar ini pantas jadi dasar untuk penyelidikan lanjutan yang mengontrol variabel-variabel tersebut, bukan langsung dijadikan pernyataan sebab-akibat final.


Referensi

Agresti, A. (2018). An Introduction to Categorical Data Analysis (3rd ed.). John Wiley & Sons.

Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons.