1 Definisi Analisis Data Kategori

1.1 Pengertian Analisis Data Kategori

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.

1.2 Karakteristik Variabel Kategori

Variabel kategori memiliki beberapa karakteristik utama, yaitu:

  1. Nominal: Kategori tidak memiliki urutan yang bermakna, contohnya jenis kelamin (laki-laki, perempuan) dan golongan darah (A, B, AB, O).
  2. Ordinal: Kategori memiliki urutan yang bermakna, tetapi jarak antar kategori tidak sama, contohnya tingkat pendidikan (SD, SMP, SMA, Perguruan Tinggi) dan tingkat kepuasan (tidak puas, cukup, puas, sangat puas).
  3. Biner (Dikotomi): Variabel hanya memiliki dua kategori, contohnya status penyakit (sakit, tidak sakit) dan hasil uji (positif, negatif).

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\).

1.3 Contoh Penerapan dalam Penelitian

Analisis data kategori banyak diterapkan dalam berbagai bidang ilmu, antara lain:

  • Kesehatan Masyarakat: Menganalisis hubungan antara konsumsi alkohol dan risiko terkena hipertensi.
  • Epidemiologi: Menganalisis efektivitas vaksin terhadap kejadian infeksi penyakit.
  • Ilmu Sosial: Menganalisis hubungan antara tingkat pendidikan dan status pekerjaan.
  • Ekonomi: Menganalisis hubungan antara status ekonomi dan keputusan pembelian.

2 Tabel Kontingensi

2.1 Definisi Tabel Kontingensi

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.

2.2 Struktur Tabel Kontingensi

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:

  • \(n_{ij}\) = frekuensi observasi pada baris ke-\(i\) dan kolom ke-\(j\)
  • \(n_{i+} = \sum_j n_{ij}\) = total baris ke-\(i\) (marginal baris)
  • \(n_{+j} = \sum_i n_{ij}\) = total kolom ke-\(j\) (marginal kolom)
  • \(n = \sum_i \sum_j n_{ij}\) = total keseluruhan

2.3 Konsep Joint Distribution

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\).

2.4 Konsep Marginal Distribution

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:

  • \(\pi_{1+} = P(\text{Konsumsi Alkohol}) = \frac{n_{1+}}{n}\)
  • \(\pi_{+1} = P(\text{Hipertensi}) = \frac{n_{+1}}{n}\)

2.5 Konsep Conditional Probability

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:

  • \(P(\text{Hipertensi} \mid \text{Konsumsi Alkohol}) = \frac{65}{100} = 0{,}65\)
  • \(P(\text{Hipertensi} \mid \text{Tidak Konsumsi Alkohol}) = \frac{25}{100} = 0{,}25\)

3 Ukuran Asosiasi

3.1 Odds

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 pada kelompok Konsumsi Alkohol: \(\text{Odds}_1 = \frac{65}{35} = 1{,}857\)
  • Odds pada kelompok Tidak Konsumsi Alkohol: \(\text{Odds}_2 = \frac{25}{75} = 0{,}333\)

3.2 Odds Ratio

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)

3.3 Relative Risk

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.


4 Contoh Perhitungan Manual

4.1 Deskripsi Kasus

Sebagai contoh, digunakan data simulasi dari sebuah studi kohort mengenai hubungan antara konsumsi alkohol dan kejadian hipertensi pada 200 responden.

4.2 Tabel Kontingensi

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

4.3 Perhitungan Peluang Bersyarat

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\]

4.4 Perhitungan Odds

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\]

4.5 Perhitungan Odds Ratio

\[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\]

4.6 Perhitungan Relative Risk

\[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\]


5 Analisis Menggunakan R

5.1 Membuat Tabel Kontingensi

# 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 ===
print(data)
##               Hipertensi Tidak Hipertensi
## Alkohol               65               35
## Tidak Alkohol         25               75
# Tampilkan tabel dengan margin total
cat("\n=== Tabel dengan Total Margin ===\n\n")
## 
## === Tabel dengan Total Margin ===
print(addmargins(data))
##               Hipertensi Tidak Hipertensi Sum
## Alkohol               65               35 100
## Tidak Alkohol         25               75 100
## Sum                   90              110 200

5.2 Distribusi Peluang

# Joint probability
cat("=== Joint Probability ===\n\n")
## === Joint Probability ===
joint_prob <- prop.table(data)
print(round(joint_prob, 4))
##               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) ===
marginal_baris <- prop.table(data, margin = 1)
print(round(marginal_baris, 4))
##               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) ===
marginal_kolom <- prop.table(data, margin = 2)
print(round(marginal_kolom, 4))
##               Hipertensi Tidak Hipertensi
## Alkohol           0.7222           0.3182
## Tidak Alkohol     0.2778           0.6818

5.3 Menghitung Odds Ratio dan Relative Risk

# 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 ===
cat(sprintf("Odds (Alkohol)       : %.4f\n", odds_alkohol))
## Odds (Alkohol)       : 1.8571
cat(sprintf("Odds (Tidak Alkohol) : %.4f\n", odds_tidak_alkohol))
## Odds (Tidak Alkohol) : 0.3333
cat(sprintf("Odds Ratio (OR)      : %.4f\n", OR))
## Odds Ratio (OR)      : 5.5714
cat(sprintf("Relative Risk (RR)   : %.4f\n", RR))
## 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 ===
or_result <- oddsratio(data, method = "wald")
print(or_result$measure)
##                         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 ===
rr_result <- riskratio(data)
print(rr_result$measure)
##                         NA
## risk ratio with 95% C.I. estimate    lower    upper
##            Alkohol       1.000000       NA       NA
##            Tidak Alkohol 2.142857 1.603294 2.864001

5.4 Uji Chi-Square

# Uji Chi-Square
cat("=== Uji Chi-Square ===\n\n")
## === Uji Chi-Square ===
chi_result <- chisq.test(data)
print(chi_result)
## 
##  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) ===
print(chi_result$expected)
##               Hipertensi Tidak Hipertensi
## Alkohol               45               55
## Tidak Alkohol         45               55
# Ringkasan nilai statistik uji
cat(sprintf("\nNilai Chi-Square  : %.4f\n", chi_result$statistic))
## 
## Nilai Chi-Square  : 30.7273
cat(sprintf("Derajat Kebebasan : %d\n",    chi_result$parameter))
## Derajat Kebebasan : 1
cat(sprintf("p-value           : %.6f\n",  chi_result$p.value))
## p-value           : 0.000000

5.5 Visualisasi Data

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
)

par(mfrow = c(1, 1))

6 Interpretasi Hasil

6.1 Interpretasi Statistik

Berdasarkan hasil analisis pada data simulasi konsumsi alkohol vs hipertensi, diperoleh:

  1. Peluang Bersyarat:

    • Peluang terkena hipertensi pada kelompok konsumsi alkohol adalah \(P(\text{Hipertensi} \mid \text{Alkohol}) = 0{,}65\) atau 65%.
    • Peluang terkena hipertensi pada kelompok tidak konsumsi alkohol adalah \(P(\text{Hipertensi} \mid \text{Tidak Alkohol}) = 0{,}25\) atau 25%.
  2. 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.

  3. Relative Risk (\(RR = 2{,}600\)): Risiko terkena hipertensi pada kelompok konsumsi alkohol adalah 2,6 kali lebih tinggi dibandingkan yang tidak mengonsumsi alkohol.

  4. Uji Chi-Square: Karena \(p\text{-value} < \alpha = 0{,}05\), maka terdapat asosiasi yang signifikan secara statistik antara konsumsi alkohol dan kejadian hipertensi.

6.2 Interpretasi Substantif

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.


7 Daftar Pustaka

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