Dalam berbagai bidang ilmu seperti kesehatan, ekonomi, dan ilmu sosial, banyak data yang bersifat kategori (categorical data). Data kategori biasanya menyatakan kelompok atau klasifikasi seperti jenis kelamin, status penyakit, status merokok, atau tingkat pendidikan.
Laporan ini membahas konsep dasar analisis data kategori, membangun tabel kontingensi, menghitung ukuran asosiasi secara manual, serta mengimplementasikannya menggunakan R.
Analisis data kategori (categorical data analysis) adalah sekumpulan metode statistika yang digunakan untuk menganalisis data yang diukur dalam skala nominal atau ordinal — yaitu data yang merepresentasikan kategori atau kelompok, bukan nilai numerik kontinu (Agresti, 2013).
Menurut Agresti (2013), analisis data kategori mencakup metode seperti:
Variabel kategori memiliki karakteristik sebagai berikut:
| Karakteristik | Penjelasan |
|---|---|
| Tipe skala | Nominal (tidak berurutan) atau Ordinal (berurutan) |
| Nilai | Berupa label/kategori, bukan angka kontinu |
| Operasi aritmatika | Tidak dapat dijumlahkan atau dirata-ratakan secara langsung |
| Representasi | Frekuensi atau proporsi dalam setiap kategori |
Contoh variabel kategori:
Beberapa contoh nyata penerapan analisis data kategori:
Epidemiologi: Menganalisis hubungan antara paparan faktor risiko (merokok) dengan kejadian penyakit (kanker paru), diukur menggunakan Odds Ratio dan Relative Risk (Rothman et al., 2008).
Ilmu Sosial: Meneliti hubungan antara tingkat pendidikan dan preferensi politik menggunakan uji chi-square (Agresti & Finlay, 2009).
Farmasi: Membandingkan efektivitas vaksin (divaksinasi/tidak) terhadap kejadian infeksi pada uji klinis acak (Fleiss et al., 2003).
Agresti, A. (2013). Categorical Data Analysis (3rd ed.). Wiley.
Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern Epidemiology (3rd ed.). Lippincott Williams & Wilkins.
Fleiss, J. L., Levin, B., & Paik, M. C. (2003). Statistical Methods for Rates and Proportions (3rd ed.). Wiley.
Tabel kontingensi (contingency table) adalah suatu matriks yang menampilkan distribusi frekuensi dari dua atau lebih variabel kategori secara bersamaan. Tabel ini digunakan untuk menyelidiki apakah terdapat hubungan (asosiasi) antara variabel-variabel tersebut (Agresti, 2013).
Tabel kontingensi berukuran \(r \times c\) memiliki \(r\) baris (variabel baris) dan \(c\) kolom (variabel kolom), sehingga terdapat \(r \times c\) sel.
Berikut adalah struktur umum tabel kontingensi \(2 \times 2\):
| Kolom 1 (\(B_1\)) | Kolom 2 (\(B_2\)) | Total | |
|---|---|---|---|
| Baris 1 (\(A_1\)) | \(n_{11}\) | \(n_{12}\) | \(n_{1+}\) |
| Baris 2 (\(A_2\)) | \(n_{21}\) | \(n_{22}\) | \(n_{2+}\) |
| Total | \(n_{+1}\) | \(n_{+2}\) | \(n\) |
Keterangan:
Berikut contoh tabel hubungan antara Status Merokok dan Kanker Paru:
| Kanker Paru (Ya) | Kanker Paru (Tidak) | Total | |
|---|---|---|---|
| Merokok | 60 | 40 | 100 |
| Tidak Merokok | 20 | 80 | 100 |
| Total | 80 | 120 | 200 |
Joint distribution atau distribusi bersama adalah peluang dua variabel terjadi secara bersamaan. Untuk setiap sel \((i,j)\):
\[\pi_{ij} = P(A = A_i,\ B = B_j) = \frac{n_{ij}}{n}\]
Menggunakan data di atas:
\[\pi_{11} = P(\text{Merokok dan Kanker}) = \frac{60}{200} = 0.30\]
\[\pi_{12} = P(\text{Merokok dan Tidak Kanker}) = \frac{40}{200} = 0.20\]
\[\pi_{21} = P(\text{Tidak Merokok dan Kanker}) = \frac{20}{200} = 0.10\]
\[\pi_{22} = P(\text{Tidak Merokok dan Tidak Kanker}) = \frac{80}{200} = 0.40\]
Sifat: \(\sum_i \sum_j \pi_{ij} = 1\)
Distribusi marginal adalah distribusi peluang dari satu variabel, tanpa memperhatikan variabel lainnya.
Marginal baris (distribusi variabel \(A\)):
\[\pi_{i+} = P(A = A_i) = \sum_j \pi_{ij} = \frac{n_{i+}}{n}\]
\[\pi_{1+} = P(\text{Merokok}) = \frac{100}{200} = 0.50\]
\[\pi_{2+} = P(\text{Tidak Merokok}) = \frac{100}{200} = 0.50\]
Marginal kolom (distribusi variabel \(B\)):
\[\pi_{+j} = P(B = B_j) = \sum_i \pi_{ij} = \frac{n_{+j}}{n}\]
\[\pi_{+1} = P(\text{Kanker}) = \frac{80}{200} = 0.40\]
\[\pi_{+2} = P(\text{Tidak Kanker}) = \frac{120}{200} = 0.60\]
Peluang bersyarat adalah peluang suatu kejadian terjadi dengan syarat kejadian lain telah diketahui.
\[P(B = B_j \mid A = A_i) = \frac{\pi_{ij}}{\pi_{i+}} = \frac{n_{ij}}{n_{i+}}\]
Contoh:
\[P(\text{Kanker} \mid \text{Merokok}) = \frac{60}{100} = 0.60\]
\[P(\text{Kanker} \mid \text{Tidak Merokok}) = \frac{20}{100} = 0.20\]
Perbedaan peluang bersyarat ini mengindikasikan bahwa terdapat asosiasi antara kebiasaan merokok dan kejadian kanker paru.
Ukuran asosiasi digunakan untuk mengkuantifikasi kekuatan hubungan antara dua variabel kategori dalam tabel kontingensi.
Odds adalah rasio antara peluang suatu kejadian terjadi dibanding tidak terjadi.
\[\text{Odds} = \frac{P(\text{event})}{1 - P(\text{event})} = \frac{p}{1-p}\]
Jika menggunakan frekuensi dari tabel kontingensi \(2 \times 2\) dengan sel \(a, b, c, d\):
| Kejadian (+) | Kejadian (−) | |
|---|---|---|
| Terpapar | \(a\) | \(b\) |
| Tidak Terpapar | \(c\) | \(d\) |
Odds pada kelompok Terpapar:
\[\text{Odds}_{\text{terpapar}} = \frac{a/n_1}{b/n_1} = \frac{a}{b}\]
Odds pada kelompok Tidak Terpapar:
\[\text{Odds}_{\text{tidak terpapar}} = \frac{c/n_2}{d/n_2} = \frac{c}{d}\]
Interpretasi:
Odds Ratio adalah rasio antara odds pada kelompok terpapar dibanding odds pada kelompok tidak terpapar.
\[OR = \frac{\text{Odds}_{\text{terpapar}}}{\text{Odds}_{\text{tidak terpapar}}} = \frac{a/b}{c/d} = \frac{ad}{bc}\]
Interpretasi:
| Nilai OR | Interpretasi |
|---|---|
| \(OR = 1\) | Tidak ada asosiasi antara paparan dan kejadian |
| \(OR > 1\) | Paparan meningkatkan risiko kejadian (risk factor) |
| \(OR < 1\) | Paparan menurunkan risiko kejadian (protective factor) |
Nilai OR sering dilengkapi dengan Confidence Interval (CI) 95%:
\[\ln(OR) \pm 1.96 \times SE_{\ln(OR)}\]
di mana \(SE_{\ln(OR)} = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}}\)
Relative Risk (atau Risk Ratio) adalah rasio antara peluang kejadian pada kelompok terpapar dibanding kelompok tidak terpapar.
\[RR = \frac{P(\text{kejadian} \mid \text{terpapar})}{P(\text{kejadian} \mid \text{tidak terpapar})} = \frac{a/(a+b)}{c/(c+d)}\]
Interpretasi:
| Nilai RR | Interpretasi |
|---|---|
| \(RR = 1\) | Tidak ada perbedaan risiko antara kedua kelompok |
| \(RR > 1\) | Kelompok terpapar memiliki risiko lebih tinggi |
| \(RR < 1\) | Kelompok terpapar memiliki risiko lebih rendah (protektif) |
Catatan: Relative Risk dapat dihitung langsung pada studi kohort dan uji klinis, tetapi tidak dapat dihitung secara langsung pada studi kasus-kontrol. Pada studi kasus-kontrol, digunakan Odds Ratio sebagai pendekatan (approximation) terhadap RR ketika prevalensi penyakit rendah (Rothman et al., 2008).
Sebuah studi kohort dilakukan untuk menyelidiki hubungan antara kebiasaan merokok dan kejadian kanker paru-paru. Total 200 subjek diamati selama 10 tahun.
| Kanker Paru (Ya) | Kanker Paru (Tidak) | Total | |
|---|---|---|---|
| Merokok | \(a = 60\) | \(b = 40\) | \(n_1 = 100\) |
| Tidak Merokok | \(c = 20\) | \(d = 80\) | \(n_2 = 100\) |
| Total | 80 | 120 | \(n = 200\) |
\[P(\text{Kanker} \mid \text{Merokok}) = \frac{a}{n_1} = \frac{60}{100} = 0.60\]
\[P(\text{Kanker} \mid \text{Tidak Merokok}) = \frac{c}{n_2} = \frac{20}{100} = 0.20\]
Perokok memiliki peluang terkena kanker paru sebesar 60%, sedangkan bukan perokok hanya 20%.
Odds merokok (terpapar):
\[\text{Odds}_{\text{merokok}} = \frac{a}{b} = \frac{60}{40} = 1.50\]
Artinya, pada kelompok perokok, untuk setiap 1 orang yang tidak terkena kanker paru, terdapat 1.5 orang yang terkena kanker paru.
Odds tidak merokok (tidak terpapar):
\[\text{Odds}_{\text{tidak merokok}} = \frac{c}{d} = \frac{20}{80} = 0.25\]
Artinya, pada kelompok bukan perokok, untuk setiap 1 orang yang terkena kanker paru, terdapat 4 orang yang tidak terkena kanker paru.
\[OR = \frac{ad}{bc} = \frac{60 \times 80}{40 \times 20} = \frac{4800}{800} = 6.00\]
Confidence Interval 95% untuk OR:
\[SE_{\ln(OR)} = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}} = \sqrt{\frac{1}{60} + \frac{1}{40} + \frac{1}{20} + \frac{1}{80}}\]
\[= \sqrt{0.0167 + 0.0250 + 0.0500 + 0.0125} = \sqrt{0.1042} \approx 0.3228\]
\[\ln(OR) = \ln(6) \approx 1.7918\]
\[\text{CI bawah} = e^{1.7918 - 1.96 \times 0.3228} = e^{1.1591} \approx 3.19\]
\[\text{CI atas} = e^{1.7918 + 1.96 \times 0.3228} = e^{2.4245} \approx 11.29\]
\[\boxed{OR = 6.00;\ 95\%\ CI: (3.19,\ 11.29)}\]
\[RR = \frac{a/(a+b)}{c/(c+d)} = \frac{60/100}{20/100} = \frac{0.60}{0.20} = 3.00\]
\[\boxed{RR = 3.00}\]
# Membuat matriks data
data <- matrix(c(60, 40, 20, 80),
nrow = 2,
byrow = TRUE)
# Memberi nama baris dan kolom
rownames(data) <- c("Merokok", "Tidak Merokok")
colnames(data) <- c("Kanker", "Tidak Kanker")
# Menampilkan tabel
data## Kanker Tidak Kanker
## Merokok 60 40
## Tidak Merokok 20 80
| Kanker | Tidak Kanker | |
|---|---|---|
| Merokok | 60 | 40 |
| Tidak Merokok | 20 | 80 |
epitools# Install jika belum ada
if (!require(epitools)) install.packages("epitools")
library(epitools)
# Menghitung Odds Ratio
or_result <- oddsratio(data, method = "wald")
print(or_result)## $data
## Kanker Tidak Kanker Total
## Merokok 60 40 100
## Tidak Merokok 20 80 100
## Total 80 120 200
##
## $measure
## NA
## odds ratio with 95% C.I. estimate lower upper
## Merokok 1 NA NA
## Tidak Merokok 6 3.187331 11.29472
##
## $p.value
## NA
## two-sided midp.exact fisher.exact chi.square
## Merokok NA NA NA
## Tidak Merokok 6.163344e-09 1.063603e-08 7.764037e-09
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
## $data
## Kanker Tidak Kanker Total
## Merokok 60 40 100
## Tidak Merokok 20 80 100
## Total 80 120 200
##
## $measure
## NA
## risk ratio with 95% C.I. estimate lower upper
## Merokok 1 NA NA
## Tidak Merokok 2 1.543216 2.59199
##
## $p.value
## NA
## two-sided midp.exact fisher.exact chi.square
## Merokok NA NA NA
## Tidak Merokok 6.163344e-09 1.063603e-08 7.764037e-09
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
a <- data[1, 1] # Merokok & Kanker
b <- data[1, 2] # Merokok & Tidak Kanker
c <- data[2, 1] # Tidak Merokok & Kanker
d <- data[2, 2] # Tidak Merokok & Tidak Kanker
# Odds masing-masing kelompok
odds_merokok <- a / b
odds_tidak_merokok <- c / d
# Odds Ratio
OR <- (a * d) / (b * c)
# Relative Risk
RR <- (a / (a + b)) / (c / (c + d))
cat("=== Hasil Perhitungan Manual ===\n")## === Hasil Perhitungan Manual ===
## Odds Merokok : 1.5
## Odds Tidak Merokok : 0.25
## Odds Ratio (OR) : 6
## Relative Risk (RR) : 3
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data
## X-squared = 31.688, df = 1, p-value = 1.811e-08
# Visualisasi distribusi frekuensi
library(ggplot2)
# Menyiapkan data frame
df <- data.frame(
Status_Merokok = rep(c("Merokok", "Tidak Merokok"), each = 2),
Kanker = rep(c("Kanker", "Tidak Kanker"), 2),
Frekuensi = c(60, 40, 20, 80)
)
ggplot(df, aes(x = Status_Merokok, y = Frekuensi, fill = Kanker)) +
geom_bar(stat = "identity", position = "dodge", width = 0.6) +
geom_text(aes(label = Frekuensi),
position = position_dodge(width = 0.6),
vjust = -0.5, size = 4) +
scale_fill_manual(values = c("#E74C3C", "#3498DB")) +
labs(
title = "Distribusi Kejadian Kanker Paru berdasarkan Status Merokok",
x = "Status Merokok",
y = "Frekuensi",
fill = "Status Kanker"
) +
theme_minimal(base_size = 13) +
ylim(0, 95)Berdasarkan hasil analisis:
Uji Chi-Square:
Odds Ratio:
Relative Risk:
Dari studi kohort ini, ditemukan bahwa:
Prevalensi kanker paru pada kelompok perokok adalah 60%, jauh lebih tinggi dibandingkan pada kelompok bukan perokok (20%).
Odds Ratio sebesar 6.00 menunjukkan bahwa perokok memiliki odds terkena kanker paru 6 kali lebih besar dibandingkan bukan perokok. Ini merupakan ukuran asosiasi yang sangat kuat dalam epidemiologi.
Relative Risk sebesar 3.00 menunjukkan bahwa risiko absolut terkena kanker paru pada perokok adalah 3 kali lipat dibandingkan bukan perokok.
Temuan ini konsisten dengan literatur ilmiah yang menyatakan rokok sebagai faktor risiko utama kanker paru-paru (WHO, 2023; IARC, 2020).
Dari perspektif kesehatan masyarakat, hasil ini memperkuat urgensi program pengendalian tembakau dan kampanye berhenti merokok sebagai strategi pencegahan kanker paru.
Analisis data kategori menggunakan tabel kontingensi \(2 \times 2\) telah berhasil dilakukan untuk menyelidiki hubungan antara kebiasaan merokok dan kejadian kanker paru. Hasil analisis menunjukkan:
Analisis ini mendemonstrasikan pentingnya ukuran asosiasi dalam mengkuantifikasi kekuatan hubungan antar variabel kategori dalam penelitian epidemiologi dan kesehatan masyarakat.
Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons.
Fleiss, J. L., Levin, B., & Paik, M. C. (2003). Statistical Methods for Rates and Proportions (3rd ed.). Wiley-Interscience.
IARC. (2020). Tobacco smoking and cancer: IARC Monographs on the Evaluation of Carcinogenic Risks to Humans. International Agency for Research on Cancer.
Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern Epidemiology (3rd ed.). Lippincott Williams & Wilkins.
WHO. (2023). Tobacco. World Health Organization. https://www.who.int/news-room/fact-sheets/detail/tobacco
Program Studi S1 Statistika FMIPA Universitas Padjadjaran, 2026.