Analisis Data Kategori merupakan metode statistik yang digunakan berbagai bidang penelitian. Data kategori yaitu data yang menyatakan klasifikasi atau kelompok tertentu. Salah satu metode yang digunakan untuk menganalisis hubungan antara variabel kategori adalah melalui tabel kontingensi. Dari tabel tersebut dapat dihitung berbagai ukuran asosiasi, seperti odds, odds ratio, dan relative risk, untuk menggambarkan kekuatan hubungan antar variabel.
Analisis data kategori adalah metode statistik yang digunakan untuk menganalisis data yang berbentuk kategori atau kelompok. Data kategori merupakan data yang nilai variabelnya berupa label atau klasifikasi tertentu, bukan angka yang memiliki makna kuantitatif.
Menurut Alan Agresti dalam buku Categorical Data Analysis, analisis data kategori digunakan untuk mempelajari hubungan antara variabel yang berskala nominal atau ordinal melalui distribusi frekuensi atau probabilitas. Teknik ini sering digunakan untuk mengetahui apakah terdapat hubungan atau asosiasi antara dua atau lebih variabel kategori.
Analisis ini biasanya menggunakan tabel frekuensi, tabel kontingensi, serta metode inferensi seperti uji chi-square untuk mengevaluasi hubungan antar variabel.
Variabel kategori memiliki beberapa karakteristik utama, yaitu:
Contoh penerapan analisis data kategori antara lain:
Metode analisis yang sering digunakan dalam analisis data kategori meliputi tabel kontingensi, uji Chi-Square, dan regresi logistik.
Tabel kontingensi adalah tabel yang digunakan untuk menyajikan data kategori dengan menampilkan frekuensi dari kombinasi dua atau lebih variabel kategori. Tabel ini membantu peneliti melihat bagaimana suatu kategori pada satu variabel berhubungan dengan kategori pada variabel lainnya.
Menurut Alan Agresti dalam buku Categorical Data Analysis, tabel kontingensi digunakan untuk merangkum dan menggambarkan hubungan antara variabel kategori melalui distribusi frekuensi. Dengan tabel ini, peneliti dapat lebih mudah memahami pola hubungan dalam data serta menjadi dasar untuk melakukan analisis statistik lebih lanjut.
Struktur tabel kontingensi terdiri dari baris dan kolom yang masing-masing merepresentasikan kategori dari variabel yang berbeda. Setiap sel dalam tabel menunjukkan jumlah frekuensi atau banyaknya pengamatan untuk kombinasi kategori tertentu dari kedua variabel. Selain itu, tabel kontingensi juga biasanya dilengkapi dengan jumlah total pada setiap baris dan kolom yang disebut sebagai distribusi marginal. Sebagai contoh, tabel kontingensi 2 × 2 dapat digunakan untuk melihat hubungan antara dua variabel yang masing-masing memiliki dua kategori.
Tabel kontingensi 2 × 2 memiliki struktur sebagai berikut:
| Kategori 1 (+) | Kategori 2 (-) | Total | |
|---|---|---|---|
| Grup 1 | \(n_{11}\) | \(n_{12}\) | \(n_{1.}\) |
| Grup 2 | \(n_{21}\) | \(n_{22}\) | \(n_{2.}\) |
| Total | \(n_{.1}\) | \(n_{.2}\) | \(n\) |
Keterangan:
Contoh kasus dalam Tabel Kontingensi:
data <- matrix(c(30,20,
25,25),
nrow=2,
byrow=TRUE)
rownames(data) <- c("Pria","Wanita")
colnames(data) <- c("Suka Produk","Tidak Suka")
knitr::kable(data)
| Suka Produk | Tidak Suka | |
|---|---|---|
| Pria | 30 | 20 |
| Wanita | 25 | 25 |
Joint distribution atau distribusi gabungan merupakan distribusi probabilitas yang menunjukkan peluang terjadinya dua kejadian secara bersamaan. Dalam tabel kontingensi, joint distribution diperoleh dengan membagi frekuensi pada setiap sel dengan jumlah total pengamatan.
Secara matematis, joint distribution dinyatakan sebagai
\[ P(X=i, Y=j) = \frac{n_{ij}}{n} \] Sebagai contoh, berikut Tabel Kontingensi untuk kasus joint distribution:
joint <- prop.table(data)
knitr::kable(round(joint,3))
| Suka Produk | Tidak Suka | |
|---|---|---|
| Pria | 0.30 | 0.20 |
| Wanita | 0.25 | 0.25 |
Marginal distribution adalah distribusi probabilitas dari satu variabel tanpa memperhatikan variabel lainnya. Distribusi ini diperoleh dari jumlah total pada baris atau kolom dalam tabel kontingensi yang kemudian dibagi dengan jumlah total observasi.
Secara matematis, marginal distribution dinyatakan sebagai:
\[ P(X=i) = \frac{n_{i.}}{n} \]
dan
\[ P(Y=j) = \frac{n_{.j}}{n} \] Berikut Tabel Kontingensi untuk kasus marginal distribution:
data <- matrix(c(30,20,
25,25),
nrow=2,
byrow=TRUE)
rownames(data) <- c("Pria","Wanita")
colnames(data) <- c("Suka Produk","Tidak Suka")
knitr::kable(data)
| Suka Produk | Tidak Suka | |
|---|---|---|
| Pria | 30 | 20 |
| Wanita | 25 | 25 |
Marginal distribution baris:
marginal_row <- prop.table(data,1)
knitr::kable(round(marginal_row,3))
| Suka Produk | Tidak Suka | |
|---|---|---|
| Pria | 0.6 | 0.4 |
| Wanita | 0.5 | 0.5 |
Marginal distribution kolom:
marginal_col <- prop.table(data,2)
knitr::kable(round(marginal_col,3))
| Suka Produk | Tidak Suka | |
|---|---|---|
| Pria | 0.545 | 0.444 |
| Wanita | 0.455 | 0.556 |
Sebagai contoh, nilai pada marginal distribution baris menunjukkan proporsi preferensi produk pada masing-masing kelompok responden. Sementara itu, marginal distribution kolom menunjukkan proporsi responden berdasarkan kategori preferensi produk secara keseluruhan.
Conditional probability adalah probabilitas suatu kategori terjadi dengan syarat kategori lain telah terjadi.
Sebagai contoh, probabilitas seseorang menyukai produk A dengan syarat orang tersebut adalah pria.
# conditional probability
prop.table(data, margin = 1)
## Suka Produk Tidak Suka
## Pria 0.6 0.4
## Wanita 0.5 0.5
Ukuran asosiasi digunakan untuk mengukur kekuatan hubungan antara dua variabel kategori dalam tabel kontingensi. Beberapa ukuran asosiasi yang sering digunakan adalah odds, odds ratio, dan relative risk.
Misalkan diberikan tabel kontingensi 2 × 2 sebagai berikut:
\[ \begin{array}{c|cc} & Outcome\;1 & Outcome\;0 \\ \hline Exposure\;1 & a & b \\ Exposure\;0 & c & d \\ \end{array} \]
Odds merupakan perbandingan antara peluang suatu kejadian terjadi dengan peluang kejadian tersebut tidak terjadi.
Rumus odds secara umum adalah:
\[ Odds = \frac{p}{1-p} \]
Dalam tabel kontingensi, odds pada kelompok yang terpapar dapat dituliskan sebagai:
\[ Odds = \frac{a}{b} \]
Odds Ratio digunakan untuk membandingkan odds antara dua kelompok.
Rumus Odds Ratio adalah:
\[ OR = \frac{a/b}{c/d} \]
yang dapat disederhanakan menjadi:
\[ OR = \frac{ad}{bc} \]
Relative Risk digunakan untuk membandingkan probabilitas kejadian antara kelompok yang terpapar dan kelompok yang tidak terpapar.
Rumus Relative Risk adalah:
\[ RR = \frac{a/(a+b)}{c/(c+d)} \]
Sebagai contoh, akan dianalisis hubungan antara kebiasaan merokok dan kejadian kanker paru-paru.
Misalkan diperoleh data sebagai berikut:
\[ \begin{array}{c|cc} & Kanker & Tidak\;Kanker \\ \hline Merokok & 60 & 40 \\ Tidak\;Merokok & 20 & 80 \\ \end{array} \]
Peluang terkena kanker pada kelompok perokok:
\[ P(Kanker | Merokok) = \frac{60}{60+40} = \frac{60}{100} = 0.6 \]
Peluang terkena kanker pada kelompok tidak merokok:
\[ P(Kanker | Tidak\;Merokok) = \frac{20}{20+80} = \frac{20}{100} = 0.2 \]
Odds terkena kanker pada kelompok perokok:
\[ Odds_{merokok} = \frac{60}{40} = 1.5 \]
Odds terkena kanker pada kelompok tidak merokok:
\[ Odds_{tidak\;merokok} = \frac{20}{80} = 0.25 \]
\[ OR = \frac{ad}{bc} \]
\[ OR = \frac{(60)(80)}{(40)(20)} \]
\[ OR = \frac{4800}{800} = 6 \]
Interpretasi: Individu yang merokok memiliki odds terkena kanker paru-paru sekitar 6 kali lebih besar dibandingkan individu yang tidak merokok.
Analisis yang sama dapat dilakukan menggunakan 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
library(epitools)
oddsratio(data)
## $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.000000 NA NA
## Tidak Merokok 5.915517 3.181806 11.37695
##
## $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] "median-unbiased estimate & mid-p exact CI"
library(epitools)
oddsratio(data)
## $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.000000 NA NA
## Tidak Merokok 5.915517 3.181806 11.37695
##
## $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] "median-unbiased estimate & mid-p exact CI"
Berdasarkan hasil analisis yang telah dilakukan sebelumnya menggunakan tabel kontingensi, perhitungan odds ratio, dan uji chi-square, dapat diberikan interpretasi sebagai berikut.
Dari hasil perhitungan diperoleh nilai Odds Ratio (OR) = 6. Nilai ini menunjukkan bahwa odds terjadinya kanker paru-paru pada individu yang merokok sekitar 6 kali lebih besar dibandingkan individu yang tidak merokok.
Selain itu, hasil uji Chi-Square digunakan untuk menguji apakah terdapat hubungan yang signifikan antara kebiasaan merokok dan kejadian kanker paru-paru. Jika nilai p-value lebih kecil dari tingkat signifikansi (misalnya 0.05), maka hipotesis nol yang menyatakan tidak adanya hubungan antara kedua variabel ditolak.
Dengan demikian, dapat disimpulkan bahwa terdapat hubungan yang signifikan antara kebiasaan merokok dan kejadian kanker paru-paru.
Secara substantif, hasil ini menunjukkan bahwa kebiasaan merokok merupakan faktor yang berasosiasi kuat dengan meningkatnya risiko terkena kanker paru-paru. Individu yang merokok memiliki kemungkinan yang jauh lebih besar mengalami kanker paru-paru dibandingkan dengan individu yang tidak merokok.
Temuan ini konsisten dengan banyak penelitian kesehatan masyarakat yang menyatakan bahwa merokok merupakan salah satu faktor risiko utama bagi penyakit kanker paru-paru. Oleh karena itu, upaya pencegahan seperti pengurangan konsumsi rokok dan kampanye berhenti merokok sangat penting untuk menurunkan risiko penyakit tersebut.
Pada bagian ini dilakukan analisis inferensi pada tabel kontingensi dua arah. Analisis ini bertujuan untuk mengkaji hubungan antara dua variabel kategori serta melakukan pengujian hipotesis dan estimasi ukuran asosiasi seperti risk difference, relative risk, dan odds ratio.
Data hubungan antara status merokok dan kejadian kanker paru-paru disajikan dalam tabel kontingensi berikut.
data1 <- matrix(c(688, 650,
21, 59),
nrow = 2,
byrow = TRUE)
rownames(data1) <- c("Smoker", "Non-Smoker")
colnames(data1) <- c("Cancer (+)", "Control (-)")
knitr::kable(data1)
| Cancer (+) | Control (-) | |
|---|---|---|
| Smoker | 688 | 650 |
| Non-Smoker | 21 | 59 |
addmargins(data1)
## Cancer (+) Control (-) Sum
## Smoker 688 650 1338
## Non-Smoker 21 59 80
## Sum 709 709 1418
Tabel di atas menunjukkan bahwa jumlah kasus kanker paru-paru pada kelompok perokok jauh lebih tinggi dibandingkan dengan kelompok non-perokok. Hal ini mengindikasikan adanya kemungkinan hubungan antara kebiasaan merokok dan kejadian kanker paru-paru.
Data hubungan antara gender dan identifikasi partai politik disajikan dalam tabel berikut.
data2 <- matrix(c(495,272,590,
330,265,498),
nrow=2,
byrow=TRUE)
rownames(data2) <- c("Female","Male")
colnames(data2) <- c("Democrat","Republican","Independent")
knitr::kable(data2)
| Democrat | Republican | Independent | |
|---|---|---|---|
| Female | 495 | 272 | 590 |
| Male | 330 | 265 | 498 |
addmargins(data2)
## Democrat Republican Independent Sum
## Female 495 272 590 1357
## Male 330 265 498 1093
## Sum 825 537 1088 2450
Tabel di atas menunjukkan distribusi responden berdasarkan gender dan preferensi partai politik. Secara umum, kategori Independent memiliki jumlah responden yang lebih besar dibandingkan kategori lainnya pada kedua kelompok gender.
Data pada kedua kasus di atas akan digunakan untuk melakukan analisis inferensi, meliputi estimasi proporsi, ukuran asosiasi, serta pengujian hipotesis untuk mengetahui hubungan antar variabel. Analisis yang dilakukan pada data tabel kontingensi meliputi:
Estimasi Proporsi
Proporsi kejadian pada masing-masing kelompok dihitung sebagai:
\[ p = \frac{x}{n} \]
Ukuran Asosiasi
Risk Difference (RD): \[ RD = p_1 - p_2 \]
Relative Risk (RR): \[ RR = \frac{p_1}{p_2} \]
Odds Ratio (OR): \[ OR = \frac{ad}{bc} \]
Pengujian Hipotesis
Analisis dilakukan menggunakan perangkat lunak R.
p_smoker <- data1[1,1] / sum(data1[1,])
p_nonsmoker <- data1[2,1] / sum(data1[2,])
p_smoker
## [1] 0.5142003
p_nonsmoker
## [1] 0.2625
Proporsi kejadian kanker pada kelompok perokok lebih tinggi dibandingkan kelompok non-perokok.
prop.test(data1[1,1], sum(data1[1,]))
##
## 1-sample proportions test with continuity correction
##
## data: data1[1, 1] out of sum(data1[1, ]), null probability 0.5
## X-squared = 1.0232, df = 1, p-value = 0.3118
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4870445 0.5412736
## sample estimates:
## p
## 0.5142003
prop.test(data1[2,1], sum(data1[2,]))
##
## 1-sample proportions test with continuity correction
##
## data: data1[2, 1] out of sum(data1[2, ]), null probability 0.5
## X-squared = 17.113, df = 1, p-value = 3.523e-05
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.1733064 0.3748263
## sample estimates:
## p
## 0.2625
prop.test(c(data1[1,1], data1[2,1]),
c(sum(data1[1,]), sum(data1[2,])))
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(data1[1, 1], data1[2, 1]) out of c(sum(data1[1, ]), sum(data1[2, ]))
## X-squared = 18.136, df = 1, p-value = 2.057e-05
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.1450106 0.3583900
## sample estimates:
## prop 1 prop 2
## 0.5142003 0.2625000
chisq.test(data1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data1
## X-squared = 18.136, df = 1, p-value = 2.057e-05
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.4.3
GTest(data1)
##
## Log likelihood ratio (G-test) test of independence without correction
##
## data: data1
## G = 19.878, X-squared df = 1, p-value = 8.254e-06
fisher.test(data1)
##
## Fisher's Exact Test for Count Data
##
## data: data1
## p-value = 1.476e-05
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.755611 5.210711
## sample estimates:
## odds ratio
## 2.971634
Berdasarkan hasil pengujian, seluruh metode menunjukkan bahwa nilai p-value lebih kecil dari 0.05, sehingga hipotesis nol ditolak. Hal ini menunjukkan bahwa terdapat hubungan yang signifikan antara kebiasaan merokok dan kejadian kanker paru-paru.
Nilai ukuran asosiasi menunjukkan bahwa kelompok perokok memiliki risiko yang lebih tinggi mengalami kanker paru-paru dibandingkan non-perokok.
# Expected frequency
chisq.test(data2)$expected
## Democrat Republican Independent
## Female 456.949 297.4322 602.6188
## Male 368.051 239.5678 485.3812
Frekuensi harapan menunjukkan nilai yang diharapkan pada setiap sel jika tidak terdapat hubungan antara gender dan preferensi partai politik.
chisq.test(data2)
##
## Pearson's Chi-squared test
##
## data: data2
## X-squared = 12.569, df = 2, p-value = 0.001865
Hasil uji chi-square digunakan untuk menguji apakah terdapat hubungan antara gender dan identifikasi partai politik.
# residual Pearson
chisq.test(data2)$residuals
## Democrat Republican Independent
## Female 1.780051 -1.474656 -0.5140388
## Male -1.983409 1.643125 0.5727640
# standardized residual
chisq.test(data2)$stdres
## Democrat Republican Independent
## Female 3.272365 -2.498557 -1.032199
## Male -3.272365 2.498557 1.032199
Nilai residual menunjukkan kontribusi masing-masing sel terhadap nilai chi-square. Nilai residual yang besar (positif atau negatif) menunjukkan adanya penyimpangan yang cukup besar dari nilai harapan.
# subset Democrat vs Republican
data_DR <- data2[,1:2]
chisq.test(data_DR)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data_DR
## X-squared = 11.178, df = 1, p-value = 0.0008279
# gabungkan kolom
data_combined <- cbind(
DemRep = data2[,1] + data2[,2],
Independent = data2[,3]
)
chisq.test(data_combined)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data_combined
## X-squared = 0.98267, df = 1, p-value = 0.3215
Berdasarkan hasil uji chi-square, diperoleh nilai p-value yang lebih kecil dari 0.05, sehingga hipotesis nol ditolak. Hal ini menunjukkan bahwa terdapat hubungan yang signifikan antara gender dan identifikasi partai politik.
Dari hasil analisis residual, terlihat bahwa beberapa kategori memiliki kontribusi yang lebih besar terhadap hubungan tersebut, khususnya pada kategori Independent.
Hasil partisi chi-square menunjukkan bahwa perbedaan distribusi antara Democrat dan Republican relatif lebih kecil dibandingkan dengan perbedaan antara kelompok (Democrat + Republican) dan Independent.
Dengan demikian, kategori Independent merupakan faktor yang paling berkontribusi dalam hubungan antara gender dan preferensi partai politik.
Berdasarkan hasil analisis inferensi pada tabel kontingensi dua arah, diperoleh bahwa pada kedua kasus terdapat hubungan yang signifikan antara variabel yang diteliti.
Pada Kasus 1 (Merokok dan Kanker Paru-paru), seluruh hasil pengujian menunjukkan bahwa hipotesis nol ditolak (p-value < 0.05). Hal ini menunjukkan adanya hubungan yang signifikan antara kebiasaan merokok dan kejadian kanker paru-paru. Selain itu, hasil estimasi ukuran asosiasi menunjukkan bahwa kelompok perokok memiliki risiko yang lebih tinggi mengalami kanker paru-paru dibandingkan kelompok non-perokok.
Pada Kasus 2 (Gender dan Identifikasi Partai Politik), hasil uji chi-square juga menunjukkan bahwa hipotesis nol ditolak, sehingga terdapat hubungan yang signifikan antara gender dan preferensi partai politik. Analisis lebih lanjut melalui residual dan partisi chi-square menunjukkan bahwa kategori Independent memberikan kontribusi terbesar terhadap perbedaan distribusi antar kelompok.
Secara keseluruhan, analisis tabel kontingensi dua arah dapat digunakan untuk mengidentifikasi adanya hubungan antar variabel kategori serta mengukur kekuatan asosiasi yang terjadi, sehingga memberikan informasi yang penting dalam pengambilan keputusan berbasis data.