Analisis data kategori (categorical data analysis) adalah sekumpulan metode statistik yang digunakan untuk menganalisis data yang bersifat diskret dan tidak terurut secara numerik. Data kategori merepresentasikan keanggotaan suatu observasi dalam kelompok atau klasifikasi tertentu (Agresti, 2013). Berbeda dengan data kontinu, data kategori hanya dapat mengambil nilai dari sejumlah kategori yang terbatas.
Menurut Agresti (2013) dalam bukunya Categorical Data Analysis, data kategori dapat dianalisis menggunakan berbagai teknik seperti uji chi-square, analisis regresi logistik, model log-linear, dan analisis tabel kontingensi.
Variabel kategori memiliki beberapa karakteristik utama, yaitu:
Secara matematis, misalkan \(Y\) adalah variabel kategori dengan \(k\) kategori, maka: \[Y \in \{c_1, c_2, \ldots, c_k\}\] di mana \(c_i\) menyatakan kategori ke-\(i\).
Analisis data kategori banyak diterapkan dalam berbagai bidang ilmu, antara lain:
Tabel kontingensi (contingency table) adalah tabel yang menyajikan distribusi frekuensi dari dua atau lebih variabel kategori secara bersamaan. Tabel ini digunakan untuk mengeksplorasi hubungan atau asosiasi antara variabel-variabel tersebut (Agresti, 2013).
Tabel kontingensi dua dimensi dengan variabel \(X\) (baris) dan \(Y\) (kolom) disebut tabel kontingensi \(r \times c\), di mana \(r\) adalah jumlah baris dan \(c\) adalah jumlah kolom.
Berikut adalah struktur umum tabel kontingensi \(2 \times 2\):
| \(Y = 1\) (Ya) | \(Y = 0\) (Tidak) | Total | |
|---|---|---|---|
| \(X = 1\) (Ya) | \(n_{11}\) | \(n_{12}\) | \(n_{1+}\) |
| \(X = 0\) (Tidak) | \(n_{21}\) | \(n_{22}\) | \(n_{2+}\) |
| Total | \(n_{+1}\) | \(n_{+2}\) | \(n\) |
Di mana:
Joint distribution (distribusi bersama) adalah distribusi probabilitas yang menggambarkan kemungkinan terjadinya dua kejadian secara bersamaan. Pada tabel kontingensi \(2 \times 2\), joint probability didefinisikan sebagai:
\[\pi_{ij} = P(X = i, Y = j) = \frac{n_{ij}}{n}\]
sehingga berlaku: \[\sum_{i} \sum_{j} \pi_{ij} = 1\]
Contoh: Jika \(n_{11} = 65\) dan \(n = 200\), maka \(\pi_{11} = \frac{65}{200} = 0{,}325\).
Marginal distribution adalah distribusi probabilitas dari satu variabel tanpa memperhatikan variabel lainnya. Marginal probability dihitung sebagai:
\[\pi_{i+} = P(X = i) = \sum_j \pi_{ij} = \frac{n_{i+}}{n}\]
\[\pi_{+j} = P(Y = j) = \sum_i \pi_{ij} = \frac{n_{+j}}{n}\]
Contoh:
Conditional probability (peluang bersyarat) adalah peluang terjadinya suatu kejadian dengan syarat kejadian lain telah terjadi. Pada tabel kontingensi, peluang bersyarat dihitung sebagai:
\[P(Y = j \mid X = i) = \frac{\pi_{ij}}{\pi_{i+}} = \frac{n_{ij}}{n_{i+}}\]
Contoh ilustrasi tabel kontingensi \(2 \times 2\):
| Hipertensi (\(Y=1\)) | Tidak Hipertensi (\(Y=0\)) | Total | |
|---|---|---|---|
| Alkohol (\(X=1\)) | 65 | 35 | 100 |
| Tidak Alkohol (\(X=0\)) | 25 | 75 | 100 |
| Total | 90 | 110 | 200 |
Dari tabel di atas diperoleh:
Odds adalah perbandingan antara peluang suatu kejadian terjadi dengan peluang kejadian tersebut tidak terjadi. Untuk kelompok \(i\), odds didefinisikan sebagai:
\[\text{Odds}_i = \frac{P(\text{sukses} \mid X = i)}{P(\text{gagal} \mid X = i)} = \frac{\pi_{i1}}{\pi_{i2}} = \frac{n_{i1}}{n_{i2}}\]
Interpretasi: Jika Odds \(= 3\), artinya kemungkinan terjadinya suatu kejadian adalah 3 kali lebih besar dibandingkan tidak terjadinya.
Contoh:
Odds Ratio (OR) adalah perbandingan antara odds dari dua kelompok. OR merupakan ukuran asosiasi yang paling umum digunakan dalam studi epidemiologi dan regresi logistik.
\[OR = \frac{\text{Odds}_1}{\text{Odds}_2} = \frac{n_{11}/n_{12}}{n_{21}/n_{22}} = \frac{n_{11} \cdot n_{22}}{n_{12} \cdot n_{21}} = \frac{ad}{bc}\]
di mana dalam tabel \(2 \times 2\) berlaku: \(a = n_{11}\), \(b = n_{12}\), \(c = n_{21}\), \(d = n_{22}\).
Interpretasi Odds Ratio:
| Nilai OR | Interpretasi |
|---|---|
| OR \(= 1\) | Tidak ada asosiasi antara dua variabel |
| OR \(> 1\) | Kelompok pertama memiliki odds lebih tinggi (faktor risiko) |
| OR \(< 1\) | Kelompok pertama memiliki odds lebih rendah (faktor protektif) |
Relative Risk (RR) atau Risk Ratio adalah perbandingan antara peluang (risk) terjadinya suatu kejadian pada kelompok pertama dengan kelompok kedua.
\[RR = \frac{P(\text{outcome} \mid \text{exposed})}{P(\text{outcome} \mid \text{unexposed})} = \frac{n_{11}/n_{1+}}{n_{21}/n_{2+}} = \frac{n_{11} \cdot n_{2+}}{n_{21} \cdot n_{1+}}\]
Interpretasi Relative Risk:
| Nilai RR | Interpretasi |
|---|---|
| RR \(= 1\) | Tidak ada perbedaan risiko antara dua kelompok |
| RR \(> 1\) | Kelompok exposed memiliki risiko lebih tinggi |
| RR \(< 1\) | Kelompok exposed memiliki risiko lebih rendah (protektif) |
Catatan: RR lebih mudah diinterpretasikan secara substantif dibandingkan OR, namun OR lebih stabil secara statistik dan dapat dihitung pada studi case-control. Pada studi dengan prevalensi outcome rendah (< 10%), OR \(\approx\) RR.
Sebagai contoh, digunakan data simulasi dari sebuah studi kohort mengenai hubungan antara konsumsi alkohol dan kejadian hipertensi pada 200 responden.
Dari data yang dikumpulkan, diperoleh tabel kontingensi sebagai berikut:
| Hipertensi (\(Y=1\)) | Tidak Hipertensi (\(Y=0\)) | Total | |
|---|---|---|---|
| Alkohol (\(X=1\)) | \(a = 65\) | \(b = 35\) | 100 |
| Tidak Alkohol (\(X=0\)) | \(c = 25\) | \(d = 75\) | 100 |
| Total | 90 | 110 | 200 |
Peluang terkena hipertensi pada kelompok konsumsi alkohol:
\[P(\text{Hipertensi} \mid \text{Alkohol}) = \frac{a}{a + b} = \frac{65}{65 + 35} = \frac{65}{100} = 0{,}65\]
Peluang terkena hipertensi pada kelompok tidak konsumsi alkohol:
\[P(\text{Hipertensi} \mid \text{Tidak Alkohol}) = \frac{c}{c + d} = \frac{25}{25 + 75} = \frac{25}{100} = 0{,}25\]
Odds pada kelompok Konsumsi Alkohol:
\[\text{Odds}_{\text{Alkohol}} = \frac{P(\text{Hipertensi} \mid \text{Alkohol})}{1 - P(\text{Hipertensi} \mid \text{Alkohol})} = \frac{0{,}65}{0{,}35} = \frac{a}{b} = \frac{65}{35} = 1{,}857\]
Odds pada kelompok Tidak Konsumsi Alkohol:
\[\text{Odds}_{\text{Tidak Alkohol}} = \frac{P(\text{Hipertensi} \mid \text{Tidak Alkohol})}{1 - P(\text{Hipertensi} \mid \text{Tidak Alkohol})} = \frac{0{,}25}{0{,}75} = \frac{c}{d} = \frac{25}{75} = 0{,}333\]
\[OR = \frac{\text{Odds}_{\text{Alkohol}}}{\text{Odds}_{\text{Tidak Alkohol}}} = \frac{1{,}857}{0{,}333} = 5{,}571\]
Atau menggunakan rumus langsung:
\[OR = \frac{ad}{bc} = \frac{65 \times 75}{35 \times 25} = \frac{4875}{875} = 5{,}571\]
\[RR = \frac{P(\text{Hipertensi} \mid \text{Alkohol})}{P(\text{Hipertensi} \mid \text{Tidak Alkohol})} = \frac{0{,}65}{0{,}25} = 2{,}600\]
Atau menggunakan rumus langsung:
\[RR = \frac{a/(a+b)}{c/(c+d)} = \frac{65/100}{25/100} = 2{,}600\]
# Membuat matriks data simulasi
data <- matrix(
c(65, 35,
25, 75),
nrow = 2,
byrow = TRUE
)
rownames(data) <- c("Alkohol", "Tidak Alkohol")
colnames(data) <- c("Hipertensi", "Tidak Hipertensi")
# Tampilkan tabel
cat("=== Tabel Kontingensi: Konsumsi Alkohol vs Hipertensi ===\n\n")## === Tabel Kontingensi: Konsumsi Alkohol vs Hipertensi ===
## Hipertensi Tidak Hipertensi
## Alkohol 65 35
## Tidak Alkohol 25 75
##
## === Tabel dengan Total Margin ===
## Hipertensi Tidak Hipertensi Sum
## Alkohol 65 35 100
## Tidak Alkohol 25 75 100
## Sum 90 110 200
## === Joint Probability ===
## Hipertensi Tidak Hipertensi
## Alkohol 0.325 0.175
## Tidak Alkohol 0.125 0.375
# Marginal probability (baris)
cat("\n=== Marginal Probability (Baris / Status Konsumsi Alkohol) ===\n\n")##
## === Marginal Probability (Baris / Status Konsumsi Alkohol) ===
## Hipertensi Tidak Hipertensi
## Alkohol 0.65 0.35
## Tidak Alkohol 0.25 0.75
# Marginal probability (kolom)
cat("\n=== Marginal Probability (Kolom / Status Hipertensi) ===\n\n")##
## === Marginal Probability (Kolom / Status Hipertensi) ===
## Hipertensi Tidak Hipertensi
## Alkohol 0.7222 0.3182
## Tidak Alkohol 0.2778 0.6818
# Ekstrak nilai sel tabel
a <- data[1, 1] # Alkohol & Hipertensi
b <- data[1, 2] # Alkohol & Tidak Hipertensi
c <- data[2, 1] # Tidak Alkohol & Hipertensi
d <- data[2, 2] # Tidak Alkohol & Tidak Hipertensi
# Hitung Odds masing-masing kelompok
odds_alkohol <- a / b
odds_tidak_alkohol <- c / d
# Hitung Odds Ratio
OR <- (a * d) / (b * c)
# Hitung Relative Risk
RR <- (a / (a + b)) / (c / (c + d))
# Tampilkan hasil
cat("=== Hasil Perhitungan Ukuran Asosiasi ===\n\n")## === Hasil Perhitungan Ukuran Asosiasi ===
## Odds (Alkohol) : 1.8571
## Odds (Tidak Alkohol) : 0.3333
## Odds Ratio (OR) : 5.5714
## Relative Risk (RR) : 2.6000
# Verifikasi menggunakan package epitools
if (!requireNamespace("epitools", quietly = TRUE)) {
install.packages("epitools", repos = "https://cloud.r-project.org")
}
library(epitools)
# Odds Ratio dengan 95% Confidence Interval
cat("=== Odds Ratio dengan 95% Confidence Interval ===\n\n")## === Odds Ratio dengan 95% Confidence Interval ===
## NA
## odds ratio with 95% C.I. estimate lower upper
## Alkohol 1.000000 NA NA
## Tidak Alkohol 5.571429 3.023195 10.26755
# Relative Risk dengan 95% Confidence Interval
cat("\n=== Relative Risk dengan 95% Confidence Interval ===\n\n")##
## === Relative Risk dengan 95% Confidence Interval ===
## NA
## risk ratio with 95% C.I. estimate lower upper
## Alkohol 1.000000 NA NA
## Tidak Alkohol 2.142857 1.603294 2.864001
## === Uji Chi-Square ===
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data
## X-squared = 30.727, df = 1, p-value = 2.97e-08
# Frekuensi harapan (expected frequencies)
cat("\n=== Frekuensi Harapan (Expected Frequencies) ===\n\n")##
## === Frekuensi Harapan (Expected Frequencies) ===
## Hipertensi Tidak Hipertensi
## Alkohol 45 55
## Tidak Alkohol 45 55
##
## Nilai Chi-Square : 30.7273
## Derajat Kebebasan : 1
## p-value : 0.000000
par(mfrow = c(1, 2))
# Barplot proporsi bersyarat
prop_baris <- prop.table(data, margin = 1)
barplot(
t(prop_baris),
beside = TRUE,
col = c("#E74C3C", "#3498DB"),
legend = colnames(data),
main = "Proporsi Status Hipertensi\nBerdasarkan Konsumsi Alkohol",
xlab = "Konsumsi Alkohol",
ylab = "Proporsi",
ylim = c(0, 0.8),
args.legend = list(x = "topright", bty = "n")
)
# Mosaic plot
mosaicplot(
data,
main = "Mosaic Plot: Konsumsi Alkohol vs Hipertensi",
color = c("#E74C3C", "#3498DB"),
xlab = "Konsumsi Alkohol",
ylab = "Status Hipertensi",
shade = FALSE
)Berdasarkan hasil analisis pada data simulasi konsumsi alkohol vs hipertensi, diperoleh:
Peluang Bersyarat:
Odds Ratio (\(OR = 5{,}571\)): Odds terkena hipertensi pada kelompok konsumsi alkohol adalah 5,571 kali lebih besar dibandingkan kelompok yang tidak mengonsumsi alkohol. Karena \(OR > 1\), maka konsumsi alkohol merupakan faktor risiko terhadap kejadian hipertensi.
Relative Risk (\(RR = 2{,}600\)): Risiko terkena hipertensi pada kelompok konsumsi alkohol adalah 2,6 kali lebih tinggi dibandingkan yang tidak mengonsumsi alkohol.
Uji Chi-Square: Karena \(p\text{-value} < \alpha = 0{,}05\), maka terdapat asosiasi yang signifikan secara statistik antara konsumsi alkohol dan kejadian hipertensi.
Secara substantif, hasil analisis menunjukkan bahwa konsumsi alkohol memiliki hubungan yang kuat dengan kejadian hipertensi. Kelompok yang mengonsumsi alkohol memiliki risiko lebih tinggi untuk mengalami hipertensi dibandingkan yang tidak mengonsumsi alkohol. Temuan ini sejalan dengan literatur ilmiah yang menyatakan bahwa konsumsi alkohol secara berlebihan dapat meningkatkan tekanan darah melalui mekanisme aktivasi sistem saraf simpatis dan gangguan keseimbangan elektrolit (Roerecke et al., 2017; WHO, 2023).
Meskipun data yang digunakan merupakan data simulasi, pola hubungan yang ditunjukkan mencerminkan fenomena nyata dalam penelitian epidemiologi. Oleh karena itu, pembatasan konsumsi alkohol merupakan salah satu upaya penting dalam pencegahan hipertensi di masyarakat.
1. Agresti, A. (2013). Categorical data analysis (3rd ed.). John Wiley & Sons. https://doi.org/10.1002/0471249688
2. Hosmer, D. W., Lemeshow, S., & Sturdivant, R. X. (2013). Applied logistic regression (3rd ed.). John Wiley & Sons. https://doi.org/10.1002/9781118548387
3. R Core Team. (2024). R: A language and environment for statistical computing. R Foundation for Statistical Computing. https://www.R-project.org/
4. Roerecke, M., Kaczorowski, J., Tobe, S. W., Gmel, G., Hasan, O. S. M., & Rehm, J. (2017). The effect of a reduction in alcohol consumption on blood pressure: A systematic review and meta-analysis. The Lancet Public Health, 2(2), e108–e120. https://doi.org/10.1016/S2468-2667(17)30003-8
5. Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern epidemiology (3rd ed.). Lippincott Williams & Wilkins.
6. Stokes, M. E., Davis, C. S., & Koch, G. G. (2012). Categorical data analysis using SAS (3rd ed.). SAS Institute.
7. World Health Organization. (2023). Hypertension: Key facts. https://www.who.int/news-room/fact-sheets/detail/hypertension