Program Studi S1 Statistika · FMIPA Universitas Padjadjaran

Laporan ini membahas konsep dasar analisis data kategori mulai dari definisi, tabel kontingensi, distribusi peluang, ukuran asosiasi, hingga perhitungan manual dan analisis menggunakan R. Contoh yang digunakan adalah data hubungan antara keikutsertaan bimbingan belajar (bimbel) dan kelulusan Seleksi Nasional Penerimaan Mahasiswa Baru (SNPMB/PTN).


1 Definisi Analisis Data Kategori

1.1 Pengertian

Definisi

Analisis data kategori (categorical data analysis) adalah sekumpulan metode statistik untuk menganalisis data yang nilainya berupa kategori atau kelompok, bukan angka kontinu. Data semacam ini mewakili karakteristik yang bisa dikelompokkan ke dalam dua kategori atau lebih yang saling eksklusif (Agresti, 2013).

Variabel kategori dibagi menjadi dua jenis utama:

  1. Variabel Nominal -> tidak ada urutan antar kategori. Contoh: jenis kelamin, golongan darah (A, B, AB, O).
  2. Variabel Ordinal -> ada urutan yang bermakna. Contoh: tingkat pendidikan (SD < SMP < SMA < PT), skala kepuasan.

1.2 Karakteristik Variabel Kategori

Karakteristik Penjelasan
Diskrit Nilainya terbatas, tidak ada nilai di antara dua kategori
Non-numerik Berupa label atau kode, meski bisa dikodekan dengan angka
Mutually exclusive Satu observasi hanya masuk ke satu kategori
Exhaustive Semua kemungkinan nilai sudah tercakup
Distribusi khusus Mengikuti distribusi Binomial atau Multinomial

1.3 Contoh Penerapan

  • Kesehatan. Hubungan antara merokok dan kanker paru, diukur dengan odds ratio (Hosmer & Lemeshow, 2000).
  • Ekonomi. Hubungan antara tingkat pendidikan dan status pekerjaan, diuji dengan chi-square.
  • Sosial. Kepuasan masyarakat terhadap layanan publik dengan skala Likert, dianalisis dengan Gamma atau Kendall’s tau-b.
  • Pendidikan. Hubungan antara keikutsertaan bimbel dan kelulusan PTN, diukur dengan odds ratio dan relative risk.

Referensi: Agresti, A. (2013). Categorical Data Analysis (3rd ed.). Wiley. | Agresti & Franklin (2014). Statistics: The Art and Science of Learning from Data. Pearson. | Hosmer & Lemeshow (2000). Applied Logistic Regression. Wiley.


2 Tabel Kontingensi

2.1 Definisi

Definisi

Tabel kontingensi (contingency table) adalah tabel yang merangkum hubungan antara dua variabel kategori atau lebih. Setiap sel berisi frekuensi observasi untuk kombinasi kategori tertentu. Tabel dengan \(r\) baris dan \(c\) kolom disebut tabel \(r \times c\) (Agresti, 2013).

2.2 Struktur Tabel 2 × 2

Bentuk paling sederhana adalah tabel \(2 \times 2\), di mana kedua variabel masing-masing punya dua kategori:

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

Keterangan: \(n_{ij}\) = frekuensi sel baris ke-\(i\) kolom ke-\(j\); \(n_{i+}\) dan \(n_{+j}\) = total marginal baris dan kolom; \(n\) = total keseluruhan.

2.3 Contoh Data

Tabel berikut menunjukkan hubungan antara keikutsertaan bimbel dan kelulusan PTN pada 200 siswa:

Lolos PTN Tidak Lolos Total
Ikut Bimbel 60 40 100
Tidak Bimbel 20 80 100
Total 80 120 200

Nilai sel: \(a = 60,\ b = 40,\ c = 20,\ d = 80,\ n = 200\).

2.4 Joint Distribution

Distribusi bersama menunjukkan probabilitas observasi jatuh pada sel \((i, j)\) tertentu:

\[\hat{\pi}_{ij} = \frac{n_{ij}}{n}\]

Dari tabel di atas:

\[\hat{\pi}_{11} = \frac{60}{200} = 0{,}30 \qquad \hat{\pi}_{12} = \frac{40}{200} = 0{,}20\]

\[\hat{\pi}_{21} = \frac{20}{200} = 0{,}10 \qquad \hat{\pi}_{22} = \frac{80}{200} = 0{,}40\]

Jumlah seluruh probabilitas bersama = 1.

2.5 Marginal Distribution

Distribusi marginal adalah distribusi peluang untuk masing-masing variabel secara terpisah, diperoleh dengan menjumlahkan sel sepanjang baris atau kolom:

\[\hat{\pi}_{i+} = \frac{n_{i+}}{n} \quad \text{(marginal baris)} \qquad \hat{\pi}_{+j} = \frac{n_{+j}}{n} \quad \text{(marginal kolom)}\]

Dari contoh: \(P(\text{Ikut Bimbel}) = 0{,}50\); \(P(\text{Lolos PTN}) = 0{,}40\); \(P(\text{Tidak Lolos}) = 0{,}60\).

2.6 Conditional Probability

Probabilitas bersyarat adalah peluang \(Y\) mengambil nilai tertentu, diketahui nilai \(X\):

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

Dari contoh:

\[P(\text{Lolos PTN} \mid \text{Ikut Bimbel}) = \frac{60}{100} = 0{,}60 \qquad P(\text{Lolos PTN} \mid \text{Tidak Bimbel}) = \frac{20}{100} = 0{,}20\]

Independensi: Dua variabel dikatakan independen bila \(P(Y=j \mid X=i) = P(Y=j)\) untuk semua \(i\) dan \(j\). Di sini \(P(\text{Lolos PTN} \mid \text{Ikut Bimbel}) = 0{,}60 \neq P(\text{Lolos PTN}) = 0{,}40\), jadi keduanya tidak independen.


3 Ukuran Asosiasi

Dari tabel kontingensi dapat dihitung berbagai ukuran yang menggambarkan seberapa kuat hubungan antara dua variabel.

3.1 Odds

Definisi

Odds adalah perbandingan antara peluang suatu kejadian terjadi dengan peluang kejadian itu tidak terjadi.

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

Nilai Odds Artinya
Odds = 1 Sama mungkin terjadi maupun tidak
Odds > 1 Lebih mungkin terjadi
Odds < 1 Lebih kecil kemungkinannya terjadi

Dari contoh:

  • Odds lolos PTN pada siswa ikut bimbel: \(60/40 = 1{,}5\)
  • Odds lolos PTN pada siswa tidak bimbel: \(20/80 = 0{,}25\)

3.2 Odds Ratio (OR)

Odds Ratio membandingkan odds antara dua kelompok:

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

Interval kepercayaan 95% dihitung sebagai:

\[95\%\, CI: \quad \exp\!\left(\ln(\widehat{OR}) \pm 1{,}96 \times \sqrt{\tfrac{1}{a}+\tfrac{1}{b}+\tfrac{1}{c}+\tfrac{1}{d}}\right)\]

Nilai OR Artinya
OR = 1 Tidak ada asosiasi
OR > 1 Kelompok X = 1 punya odds lebih tinggi (asosiasi positif)
OR < 1 Kelompok X = 1 punya odds lebih rendah (asosiasi negatif)

3.3 Relative Risk (RR)

Relative Risk membandingkan risiko (probabilitas) kejadian antara dua kelompok secara langsung:

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

Nilai RR Artinya
RR = 1 Risiko sama di kedua kelompok
RR > 1 Kelompok X = 1 lebih berisiko
RR < 1 Kelompok X = 1 lebih terlindungi

Catatan: RR hanya valid untuk studi cohort atau cross-sectional. Pada studi case-control, OR dipakai sebagai pendekatan RR saat prevalensi penyakit rendah (rare disease assumption).


4 Contoh Perhitungan Manual

Studi cross-sectional dilakukan pada 200 siswa SMA untuk melihat hubungan antara keikutsertaan bimbingan belajar (bimbel) dan kelulusan Seleksi Nasional Penerimaan Mahasiswa Baru (PTN). Data tersedia pada tabel berikut.

Lolos PTN Tidak Lolos Total
Ikut Bimbel 60 40 100
Tidak Bimbel 20 80 100
Total 80 120 200

Nilai sel: \(a = 60,\ b = 40,\ c = 20,\ d = 80,\ n = 200\).

1

Probabilitas Bersyarat

Berapa peluang lolos PTN di masing-masing kelompok?

\[P(\text{Lolos PTN} \mid \text{Ikut Bimbel}) = \frac{60}{100} = \mathbf{0{,}60}\]

\[P(\text{Lolos PTN} \mid \text{Tidak Bimbel}) = \frac{20}{100} = \mathbf{0{,}20}\]

2

Odds di Tiap Kelompok

\[\text{Odds}_{\text{Ikut Bimbel}} = \frac{60}{40} = \mathbf{1{,}50}\]

\[\text{Odds}_{\text{Tidak Bimbel}} = \frac{20}{80} = \mathbf{0{,}25}\]

3

Odds Ratio dan Interval Kepercayaan 95%

\[OR = \frac{60 \times 80}{40 \times 20} = \frac{4800}{800} = \mathbf{6{,}00}\]

\[SE_{\ln(OR)} = \sqrt{\frac{1}{60} + \frac{1}{40} + \frac{1}{20} + \frac{1}{80}} = \sqrt{0{,}1042} = 0{,}3228\]

\[\ln(6) = 1{,}7918 \quad \Rightarrow \quad 95\%\, CI:\ 1{,}7918 \pm 1{,}96 \times 0{,}3228 = (1{,}159\,;\,2{,}425)\]

\[95\%\, CI\ \text{untuk } OR = \left(e^{1{,}159}\,;\,e^{2{,}425}\right) = \mathbf{(3{,}19\,;\,11{,}30)}\]

4

Relative Risk

\[RR = \frac{0{,}60}{0{,}20} = \mathbf{3{,}00}\]

5

Uji Chi-Square

Frekuensi harapan di bawah \(H_0\) (independensi):

\[E_{11} = \frac{100 \times 80}{200} = 40 \quad E_{12} = 60 \quad E_{21} = 40 \quad E_{22} = 60\]

\[\chi^2 = \frac{(60-40)^2}{40} + \frac{(40-60)^2}{60} + \frac{(20-40)^2}{40} + \frac{(80-60)^2}{60} = \mathbf{33{,}33}\]

Dengan \(df = 1\) dan nilai kritis \(\chi^2_{0{,}05} = 3{,}841\): karena \(33{,}33 > 3{,}841\), maka \(H_0\) ditolak ada hubungan yang signifikan antara keikutsertaan bimbel dan kelulusan PTN.

Ringkasan hasil:

6,00

Odds Ratio

3,00

Relative Risk

33,33

χ² Statistik

<0,001

p-value


5 Analisis Menggunakan R

5.1 Membuat Tabel Kontingensi

# Buat matriks tabel kontingensi
data <- matrix(c(60, 40, 20, 80),
               nrow  = 2,
               byrow = TRUE)

rownames(data) <- c("Ikut Bimbel", "Tidak Bimbel")
colnames(data) <- c("Lolos PTN", "Tidak Lolos")

# Tampilkan dengan total
addmargins(data)
#>              Lolos PTN Tidak Lolos Sum
#> Ikut Bimbel         60          40 100
#> Tidak Bimbel        20          80 100
#> Sum                 80         120 200

5.2 Distribusi Bersama, Marginal, dan Bersyarat

n <- sum(data)

cat("Joint Distribution:\n")
#> Joint Distribution:
round(data / n, 4)
#>              Lolos PTN Tidak Lolos
#> Ikut Bimbel        0.3         0.2
#> Tidak Bimbel       0.1         0.4
cat("\nMarginal — Baris:\n")
#> 
#> Marginal — Baris:
round(rowSums(data / n), 4)
#>  Ikut Bimbel Tidak Bimbel 
#>          0.5          0.5
cat("\nMarginal — Kolom:\n")
#> 
#> Marginal — Kolom:
round(colSums(data / n), 4)
#>   Lolos PTN Tidak Lolos 
#>         0.4         0.6
cat("\nConditional Probability P(Lolos PTN | Status Bimbel):\n")
#> 
#> Conditional Probability P(Lolos PTN | Status Bimbel):
round(prop.table(data, margin = 1), 4)
#>              Lolos PTN Tidak Lolos
#> Ikut Bimbel        0.6         0.4
#> Tidak Bimbel       0.2         0.8

5.3 Odds, Odds Ratio, dan Relative Risk

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

odds_bimbel     <- a / b
odds_tdk_bimbel <- c / d
OR               <- (a * d) / (b * c)
RR               <- (a / (a + b)) / (c / (c + d))

SE_ln_OR <- sqrt(1/a + 1/b + 1/c + 1/d)
CI_lower <- exp(log(OR) - 1.96 * SE_ln_OR)
CI_upper <- exp(log(OR) + 1.96 * SE_ln_OR)

cat(sprintf("Odds ikut bimbel    = %.4f\n", odds_bimbel))
#> Odds ikut bimbel    = 1.5000
cat(sprintf("Odds tidak bimbel   = %.4f\n", odds_tdk_bimbel))
#> Odds tidak bimbel   = 0.2500
cat(sprintf("Odds Ratio  (OR)  = %.4f\n", OR))
#> Odds Ratio  (OR)  = 6.0000
cat(sprintf("Relative Risk(RR) = %.4f\n", RR))
#> Relative Risk(RR) = 3.0000
cat(sprintf("95%% CI untuk OR  = (%.4f ; %.4f)\n", CI_lower, CI_upper))
#> 95% CI untuk OR  = (3.1873 ; 11.2948)

5.4 Odds Ratio dengan Package epitools

if (!require(epitools, quietly = TRUE))
  install.packages("epitools", repos = "https://cran.r-project.org")
library(epitools)

or_result <- oddsratio(data, method = "wald")
or_result$measure
#>                         NA
#> odds ratio with 95% C.I. estimate    lower    upper
#>             Ikut Bimbel         1       NA       NA
#>             Tidak Bimbel        6 3.187331 11.29472

5.5 Uji Chi-Square

chi_result <- chisq.test(data, correct = FALSE)
print(chi_result)
#> 
#>  Pearson's Chi-squared test
#> 
#> data:  data
#> X-squared = 33.333, df = 1, p-value = 7.764e-09
cat("\nFrekuensi yang Diharapkan:\n")
#> 
#> Frekuensi yang Diharapkan:
round(chi_result$expected, 2)
#>              Lolos PTN Tidak Lolos
#> Ikut Bimbel         40          60
#> Tidak Bimbel        40          60
cat(sprintf("\nX-squared = %.4f,  df = %d,  p-value = %.6f\n",
            chi_result$statistic, chi_result$parameter, chi_result$p.value))
#> 
#> X-squared = 33.3333,  df = 1,  p-value = 0.000000

5.6 Visualisasi

par(mfrow = c(1, 2), bg = "#fafafa",
    family = "sans", col.main = "#1a1a2e",
    col.lab = "#3d3d5c", col.axis = "#6b6b8a")

# Barplot proporsi bersyarat
prop_data <- prop.table(data, margin = 1)
barplot(t(prop_data),
        beside   = TRUE,
        col      = c("#2c5282", "#a0aec0"),
        border   = NA,
        main     = "Proporsi Lolos PTN berdasarkan Keikutsertaan Bimbel",
        ylab     = "Proporsi",
        xlab     = "",
        ylim     = c(0, 0.85),
        cex.main = .93, cex.axis = .85)
legend("topright",
       legend = colnames(data),
       fill   = c("#2c5282", "#a0aec0"),
       border = NA, bty = "n", cex = .85)
abline(h = seq(0, 0.8, .2), col = "#e4e4ed", lwd = .6)

# Mosaic plot
mosaicplot(data,
           color    = c("#2c5282", "#a0aec0"),
           border   = "white",
           main     = "Mosaic Plot: Bimbel vs Lolos PTN",
           xlab     = "Status Bimbel",
           ylab     = "Status Kelulusan PTN",
           cex.axis = .85)

par(mfrow = c(1, 1))

6 Interpretasi Hasil

6.1 Interpretasi Statistik

Uji Chi-Square. Nilai \(\chi^2 = 33{,}33\) dengan \(df = 1\) dan \(p < 0{,}001\). Karena \(p < 0{,}05\), \(H_0\) ditolak maka ada hubungan yang signifikan secara statistik antara keikutsertaan bimbel dan kelulusan PTN.

Odds Ratio. \(OR = 6{,}0\) dengan \(95\%\, CI: (3{,}19\,;\,11{,}30)\). Karena interval kepercayaannya tidak melewati angka 1, OR ini signifikan dan menunjukkan asosiasi yang kuat.

Relative Risk. \(RR = 3{,}0\) risiko lolos PTN pada siswa yang ikut bimbel tiga kali lebih besar dibanding yang tidak ikut bimbel.

6.2 Interpretasi Substantif

  1. Kekuatan asosiasi. Siswa yang ikut bimbel punya odds lolos PTN 6 kali lebih tinggi daripada siswa yang tidak ikut bimbel. Ini tergolong asosiasi yang kuat.

  2. Risiko relatif. Secara lebih langsung, siswa yang ikut bimbel 3 kali lebih mungkin lolos PTN.

  3. Probabilitas bersyarat. Dari 100 siswa yang ikut bimbel, 60 orang (60%) berhasil lolos PTN jauh lebih tinggi dibanding hanya 20 dari 100 siswa yang tidak ikut bimbel (20%).

  4. Implikasi. Hasil ini menunjukkan bahwa keikutsertaan bimbel berkaitan erat dengan peluang lolos seleksi masuk PTN. Namun perlu diperhatikan bahwa hubungan ini bersifat asosiasi, bukan kausalitas faktor lain seperti kemampuan awal siswa, intensitas belajar mandiri, dan kualitas bimbel turut berperan.


Referensi

  • Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons.
  • Agresti, A., & Franklin, C. (2014). Statistics: The Art and Science of Learning from Data (3rd ed.). Pearson.
  • Hosmer, D. W., & Lemeshow, S. (2000). Applied Logistic Regression (2nd ed.). John Wiley & Sons.
  • R Core Team (2024). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria.
  • Strom, B. L., Kimmel, S. E., & Hennessy, S. (Eds.). (2012). Pharmacoepidemiology (5th ed.). Wiley-Blackwell.