1 Pendahuluan / Latar Belakang

Dalam kehidupan sehari-hari, hampir setiap disiplin ilmu — mulai dari kesehatan masyarakat, epidemiologi, ekonomi, psikologi, hingga ilmu sosial — menghasilkan data yang tidak selalu berupa angka kontinu. Seringkali, data yang diperoleh bersifat kategorikal, yaitu data yang mengelompokkan individu ke dalam kelas atau kategori tertentu yang tidak memiliki urutan numerik yang bermakna secara langsung. Contoh yang paling sederhana adalah jenis kelamin (laki-laki/perempuan), status merokok (perokok/bukan perokok), atau tingkat pendidikan (SD/SMP/SMA/Perguruan Tinggi). Data semacam ini sangat lazim ditemukan dalam penelitian survei, studi klinis, maupun studi observasional.

Pentingnya analisis data kategori tidak dapat dipandang sebelah mata. Menurut Agresti (2013) dalam buku fundamentalnya Analysis of Categorical Data, data kategori merupakan jenis data yang paling sering dijumpai dalam penelitian ilmu sosial dan biomedis, dan memerlukan pendekatan statistika khusus yang berbeda dari analisis data kontinu. Metode statistika konvensional seperti uji-t atau ANOVA tidak dapat diterapkan langsung pada data bertipe kategori karena asumsi normalitas dan skala pengukuran yang berbeda.

Salah satu alat utama dalam analisis data kategori adalah tabel kontingensi (contingency table), yang memungkinkan peneliti untuk menyusun frekuensi observasi berdasarkan dua atau lebih variabel kategori secara bersamaan. Dari tabel ini, berbagai ukuran asosiasi dapat dihitung untuk menggambarkan kekuatan dan arah hubungan antar variabel. Ukuran-ukuran seperti Odds Ratio (OR), Relative Risk (RR), dan uji Chi-Square menjadi alat analisis yang sangat populer, terutama dalam penelitian epidemiologi dan kedokteran klinis (Rothman, Greenland & Lash, 2008).

Di era modern ini, perangkat lunak statistika seperti R menjadi sangat penting dalam membantu analisis data kategori secara efisien, akurat, dan dapat direproduksi (reproducible). R menyediakan berbagai fungsi dan paket yang mampu mengolah tabel kontingensi, menghitung ukuran asosiasi, melakukan uji hipotesis, serta menghasilkan visualisasi yang informatif dan menarik.

Laporan ini disusun dengan tujuan untuk memberikan pemahaman komprehensif mengenai analisis data kategori, mulai dari konsep dasar, tabel kontingensi, ukuran asosiasi, perhitungan manual, hingga implementasi menggunakan R. Diharapkan laporan ini dapat menjadi referensi yang sistematis dan mudah dipahami bagi mahasiswa yang baru mengenal analisis data kategori maupun bagi peneliti yang ingin memperdalam pemahaman metodologisnya.


2 Definisi Analisis Data Kategori

2.1 Pengertian Analisis Data Kategori

Analisis data kategori (categorical data analysis) adalah cabang statistika yang berfokus pada pengumpulan, pengolahan, dan penarikan kesimpulan dari data yang diukur pada skala nominal atau ordinal — yakni data yang dapat dikelompokkan ke dalam kategori-kategori yang saling eksklusif dan kolektif exhaustif (Agresti, 2013). Secara sederhana, analisis ini bertujuan untuk memahami pola, distribusi, dan hubungan antar variabel yang bersifat kategorik.

Definisi Formal: Menurut Agresti (2013, hal. 1), “Categorical data analysis refers to statistical methods for variables that take a limited, and usually fixed, number of possible values. Such data arise frequently in practice across virtually all areas of application.”

Berbeda dengan data kontinu yang diasumsikan memiliki distribusi normal dan dapat dioperasikan secara aljabar biasa, data kategori menuntut penggunaan model probabilistik yang sesuai, seperti distribusi binomial, distribusi multinomial, atau model log-linear (Fienberg, 2007). Dalam konteks analisis bivariat, fokus utama analisis data kategori adalah menguji apakah dua variabel kategorik saling independen atau terdapat asosiasi di antara keduanya.

Menurut Bishop, Fienberg & Holland (1975) dalam karya klasik Discrete Multivariate Analysis, analisis data kategori melibatkan tidak hanya pengujian hipotesis, tetapi juga pemodelan matematis yang mampu menjelaskan struktur hubungan antar variabel secara menyeluruh. Pendekatan ini terus berkembang hingga munculnya model regresi logistik, model log-linear, dan berbagai ekstensi lainnya.

2.2 Karakteristik Variabel Kategori

Variabel kategori memiliki sejumlah karakteristik khas yang membedakannya dari variabel kontinu. Berikut adalah karakteristik utama yang perlu dipahami:

1. Skala Pengukuran Nominal

Variabel nominal adalah variabel yang hanya membedakan kategori tanpa urutan tertentu. Nilai angka yang diberikan hanya berfungsi sebagai label, bukan sebagai ukuran kuantitatif. Contohnya: jenis kelamin (1 = laki-laki, 2 = perempuan), golongan darah (A, B, AB, O), atau status perkawinan (menikah, belum menikah, cerai). Menurut Stevens (1946) dalam paper klasiknya “On the Theory of Scales of Measurement”, skala nominal merupakan tingkat pengukuran yang paling sederhana dan hanya memungkinkan operasi statistik berbasis frekuensi.

2. Skala Pengukuran Ordinal

Variabel ordinal memiliki urutan atau ranking yang bermakna antar kategorinya, namun jarak antar kategori tidak dapat diasumsikan sama. Contohnya: tingkat pendidikan (SD < SMP < SMA < Perguruan Tinggi), tingkat kepuasan (tidak puas, cukup puas, puas, sangat puas), atau stadium penyakit (stadium I, II, III, IV). Agresti (2010) menekankan bahwa analisis data ordinal yang tepat harus mempertimbangkan struktur urutan ini dan tidak memperlakukan data ordinal seperti data nominal semata.

3. Jumlah Kategori Terbatas dan Diskrit

Berbeda dengan variabel kontinu yang dapat mengambil nilai tak terhingga dalam suatu rentang, variabel kategori hanya memiliki sejumlah nilai yang terbatas dan diskrit (Hosmer & Lemeshow, 2000). Karakteristik ini menyebabkan distribusinya bersifat tidak kontinu, sehingga metode seperti uji-t atau analisis regresi linier biasa tidak dapat diterapkan secara langsung.

4. Kategori yang Mutually Exclusive dan Collectively Exhaustive

Setiap observasi hanya dapat masuk ke dalam satu kategori (mutually exclusive), dan seluruh kemungkinan nilai sudah tercakup dalam kategori yang ada (collectively exhaustive). Ini merupakan syarat dasar agar analisis probabilistik dapat dilakukan dengan tepat (Agresti, 2013).

5. Tidak Memiliki Makna Aritmatika

Nilai numerik yang diberikan pada kategori tidak memiliki makna aritmatika. Misalnya, jika laki-laki = 1 dan perempuan = 2, tidak berarti perempuan “dua kali lebih besar” dari laki-laki. Hal ini sangat berbeda dengan data kontinu di mana operasi matematika biasa berlaku.

2.3 Contoh Penerapan dalam Penelitian

Analisis data kategori digunakan secara luas di berbagai bidang penelitian:

Bidang Kesehatan dan Epidemiologi: Dalam epidemiologi, analisis data kategori digunakan untuk mempelajari hubungan antara faktor risiko (misalnya merokok) dengan kejadian penyakit (misalnya kanker paru-paru). Odds Ratio dan Relative Risk adalah ukuran asosiasi yang paling sering digunakan dalam konteks ini (Rothman, Greenland & Lash, 2008). Studi kasus-kontrol dan kohort sangat bergantung pada analisis tabel kontingensi.

Bidang Ilmu Sosial: Dalam sosiologi dan psikologi, analisis data kategori digunakan untuk memahami pola perilaku, sikap, dan preferensi masyarakat. Misalnya, hubungan antara tingkat pendidikan dan pilihan politik, atau antara status ekonomi dan akses layanan kesehatan (Knoke & Burke, 1980).

Bidang Ekonomi: Analisis data kategori digunakan dalam model pilihan diskrit (discrete choice models), seperti model logit dan probit, untuk memprediksi keputusan konsumen antara dua atau lebih pilihan (misalnya: membeli atau tidak membeli, memilih merek A atau B) (McFadden, 1974, pemenang Nobel Ekonomi 2000).

Bidang Pendidikan: Analisis data kategori digunakan untuk mengevaluasi hubungan antara metode pengajaran dan hasil belajar siswa, atau antara latar belakang sosial-ekonomi dan tingkat kelulusan (Goodman, 1970).


3 Tabel Kontingensi

3.1 Definisi dan Konsep Dasar

Tabel kontingensi (contingency table), yang juga dikenal sebagai cross-tabulation atau crosstab, adalah sebuah matriks yang menyajikan distribusi frekuensi dari dua atau lebih variabel kategorik secara simultan. Tabel ini merupakan alat dasar yang paling fundamental dalam analisis data kategori bivariat (Agresti, 2013).

Menurut Everitt (1992) dalam The Analysis of Contingency Tables, tabel kontingensi adalah “a tabular display of data, in which the rows represent categories of one variable, the columns represent categories of another variable, and the cells contain counts (frequencies) of observations falling into each combination of categories.”

Tabel kontingensi pertama kali diperkenalkan oleh Karl Pearson pada tahun 1900 dalam konteks pengujian independensi antar variabel kategorik, yang kemudian melahirkan statistik uji Chi-Square yang terkenal hingga hari ini.

3.2 Struktur Tabel Kontingensi 2×2

Bentuk tabel kontingensi yang paling sederhana adalah tabel 2×2, yang terdiri dari 2 baris dan 2 kolom, menghasilkan 4 sel. Tabel ini sangat umum digunakan ketika kedua variabel yang diteliti bersifat dikotomik (dua kategori).

Struktur Umum Tabel Kontingensi 2×2:

Variabel Y = 1 Variabel Y = 0 Total
Variabel X = 1 \(a\) \(b\) \(a+b\)
Variabel X = 0 \(c\) \(d\) \(c+d\)
Total \(a+c\) \(b+d\) \(n\)

Di mana: - \(a\) = frekuensi observasi yang termasuk kategori X=1 dan Y=1 - \(b\) = frekuensi observasi yang termasuk kategori X=1 dan Y=0 - \(c\) = frekuensi observasi yang termasuk kategori X=0 dan Y=1 - \(d\) = frekuensi observasi yang termasuk kategori X=0 dan Y=0 - \(n = a + b + c + d\) = total seluruh observasi

3.3 Konsep Joint Distribution (Distribusi Gabungan)

Joint distribution atau distribusi bersama adalah distribusi probabilitas yang menunjukkan kemungkinan setiap kombinasi nilai dari dua variabel kategori terjadi secara bersamaan. Dalam tabel kontingensi 2×2, joint distribution dinyatakan sebagai proporsi dari setiap sel terhadap total sampel.

\[\pi_{ij} = P(X = i, Y = j) = \frac{n_{ij}}{n}\]

Di mana \(n_{ij}\) adalah frekuensi sel baris ke-\(i\) dan kolom ke-\(j\), serta \(n\) adalah total observasi.

Untuk tabel 2×2, joint distribution menghasilkan 4 probabilitas gabungan: \[\pi_{11} = \frac{a}{n}, \quad \pi_{12} = \frac{b}{n}, \quad \pi_{21} = \frac{c}{n}, \quad \pi_{22} = \frac{d}{n}\]

dan \(\sum_{i}\sum_{j} \pi_{ij} = 1\)

Joint distribution memberikan gambaran menyeluruh tentang bagaimana kedua variabel terdistribusi secara bersamaan dalam populasi (Agresti, 2013).

3.4 Konsep Marginal Distribution (Distribusi Marjinal)

Marginal distribution adalah distribusi probabilitas dari salah satu variabel dengan mengabaikan variabel lainnya. Ini diperoleh dengan menjumlahkan frekuensi di sepanjang baris atau kolom.

Marginal distribution untuk Variabel X (baris): \[P(X = 1) = \frac{a + b}{n}, \quad P(X = 0) = \frac{c + d}{n}\]

Marginal distribution untuk Variabel Y (kolom): \[P(Y = 1) = \frac{a + c}{n}, \quad P(Y = 0) = \frac{b + d}{n}\]

Distribusi marjinal menggambarkan distribusi masing-masing variabel secara mandiri, terlepas dari variabel lainnya. Ini penting untuk memahami prevalensi atau proporsi kategori dalam sampel (Fienberg, 2007).

3.5 Konsep Conditional Probability (Peluang Bersyarat)

Conditional probability atau peluang bersyarat adalah probabilitas suatu kejadian terjadi, dengan diketahui bahwa kejadian lain telah terjadi. Dalam konteks tabel kontingensi, ini adalah probabilitas nilai variabel Y, diberikan nilai variabel X tertentu (atau sebaliknya).

Peluang bersyarat Y=1 diberikan X=1: \[P(Y=1 \mid X=1) = \frac{P(X=1, Y=1)}{P(X=1)} = \frac{a}{a+b}\]

Peluang bersyarat Y=1 diberikan X=0: \[P(Y=1 \mid X=0) = \frac{P(X=0, Y=1)}{P(X=0)} = \frac{c}{c+d}\]

Peluang bersyarat Y=0 diberikan X=1: \[P(Y=0 \mid X=1) = \frac{b}{a+b}\]

Peluang bersyarat Y=0 diberikan X=0: \[P(Y=0 \mid X=0) = \frac{d}{c+d}\]

Peluang bersyarat sangat penting dalam epidemiologi karena memungkinkan peneliti untuk membandingkan risiko terjadinya suatu penyakit pada kelompok terpapar versus tidak terpapar (Rothman, Greenland & Lash, 2008).

Catatan Penting — Independensi:
Dua variabel dikatakan independen secara statistik apabila: \[P(Y = j \mid X = i) = P(Y = j) \quad \text{untuk semua } i, j\]

Artinya, mengetahui nilai variabel X tidak memberikan informasi tambahan tentang nilai variabel Y. Sebaliknya, jika kondisi ini tidak terpenuhi, maka X dan Y dikatakan berasosiasi (Agresti, 2013).


4 Ukuran Asosiasi

Ukuran asosiasi (measures of association) adalah besaran statistik yang digunakan untuk mengkuantifikasi kekuatan dan arah hubungan antara dua variabel kategori. Berbeda dengan uji hipotesis (seperti Chi-Square) yang hanya menentukan apakah suatu hubungan ada atau tidak, ukuran asosiasi memberikan informasi tentang seberapa kuat hubungan tersebut dan seberapa besar besaran efeknya (effect size) (Fleiss, Levin & Paik, 2003).

Dalam konteks tabel kontingensi 2×2 dengan notasi:

\[\begin{array}{c|cc|c} & Y=1 & Y=0 & \text{Total} \\ \hline X=1 & a & b & a+b \\ X=0 & c & d & c+d \\ \hline \text{Total} & a+c & b+d & n \end{array}\]

terdapat tiga ukuran asosiasi utama yang akan dibahas secara mendalam: Odds, Odds Ratio, dan Relative Risk.

4.1 Odds (Peluang Relatif)

4.1.1 Definisi

Odds adalah rasio antara probabilitas suatu kejadian terjadi dengan probabilitas kejadian tersebut tidak terjadi. Odds berbeda dari probabilitas: jika probabilitas berkisar antara 0 dan 1, maka odds dapat bernilai dari 0 hingga tak terhingga (Hosmer & Lemeshow, 2000).

Secara informal, jika probabilitas suatu kejadian adalah \(p\), maka odds-nya adalah “berapa kali lebih mungkin kejadian itu terjadi dibandingkan tidak terjadi.”

4.1.2 Rumus Matematis

Odds kejadian Y=1 pada kelompok X=1 (terpapar): \[\text{Odds}_{\text{exposed}} = \frac{P(Y=1 \mid X=1)}{P(Y=0 \mid X=1)} = \frac{a/(a+b)}{b/(a+b)} = \frac{a}{b}\]

Odds kejadian Y=1 pada kelompok X=0 (tidak terpapar): \[\text{Odds}_{\text{unexposed}} = \frac{P(Y=1 \mid X=0)}{P(Y=0 \mid X=0)} = \frac{c/(c+d)}{d/(c+d)} = \frac{c}{d}\]

4.1.3 Interpretasi Odds

  • Odds = 1: Kejadian sama mungkin terjadi maupun tidak terjadi (\(p = 0.5\))
  • Odds > 1: Kejadian lebih mungkin terjadi daripada tidak terjadi
  • Odds < 1: Kejadian lebih mungkin tidak terjadi daripada terjadi

Contoh: Jika dari 100 perokok, 30 di antaranya terkena kanker paru, maka odds terkena kanker paru pada perokok adalah: \[\text{Odds} = \frac{30}{70} = 0.4286\] Artinya, untuk setiap 3 perokok yang terkena kanker, terdapat 7 perokok yang tidak terkena kanker.

4.2 Odds Ratio (OR)

4.2.1 Definisi

Odds Ratio (OR) adalah rasio antara odds kejadian pada kelompok terpapar (exposed) dibandingkan dengan odds kejadian pada kelompok tidak terpapar (unexposed). OR merupakan salah satu ukuran asosiasi yang paling sering digunakan dalam epidemiologi, terutama pada studi kasus-kontrol (Fleiss, Levin & Paik, 2003).

Menurut Rothman, Greenland & Lash (2008), Odds Ratio adalah ukuran asosiasi yang paling robust dan dapat diterapkan pada berbagai desain studi epidemiologi, termasuk studi kasus-kontrol di mana Relative Risk tidak dapat dihitung secara langsung.

4.2.2 Rumus Matematis

\[\text{OR} = \frac{\text{Odds}_{\text{exposed}}}{\text{Odds}_{\text{unexposed}}} = \frac{a/b}{c/d} = \frac{ad}{bc}\]

Rumus alternatif dari tabel 2×2: \[\text{OR} = \frac{a \cdot d}{b \cdot c}\]

Interval Kepercayaan 95% untuk ln(OR) (metode Woolf): \[\text{SE}[\ln(\widehat{OR})] = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}}\]

\[95\% \text{ CI untuk OR} = e^{\ln(\widehat{OR}) \pm 1.96 \cdot \text{SE}[\ln(\widehat{OR})]}\] \[= \left( e^{\ln(\widehat{OR}) - 1.96 \cdot \text{SE}}, \; e^{\ln(\widehat{OR}) + 1.96 \cdot \text{SE}} \right)\]

4.2.3 Interpretasi Odds Ratio

Nilai OR Interpretasi
OR = 1 Tidak ada asosiasi antara X dan Y; kelompok terpapar dan tidak terpapar memiliki risiko yang sama
OR > 1 Paparan X meningkatkan odds kejadian Y; asosiasi positif
OR < 1 Paparan X menurunkan odds kejadian Y; asosiasi negatif / faktor protektif
OR = 2 Odds kejadian Y pada kelompok terpapar 2 kali lebih besar dibandingkan kelompok tidak terpapar
OR = 0.5 Odds kejadian Y pada kelompok terpapar setengah dari kelompok tidak terpapar

Interpretasi Interval Kepercayaan OR: - Jika 95% CI mencakup nilai 1, maka OR tidak signifikan secara statistik pada \(\alpha = 0.05\) - Jika 95% CI seluruhnya > 1, maka terdapat asosiasi positif yang signifikan - Jika 95% CI seluruhnya < 1, maka terdapat asosiasi negatif yang signifikan (faktor protektif)

4.2.4 Sifat Simetris OR

Salah satu keunggulan OR adalah sifat simetrisnya: OR yang dihitung dari perspektif baris sama dengan OR yang dihitung dari perspektif kolom. Ini membuat OR sangat cocok untuk studi kasus-kontrol di mana peneliti memilih kasus dan kontrol terlebih dahulu, bukan sampel berdasarkan paparan (Agresti, 2013).

4.3 Relative Risk (RR) / Risiko Relatif

4.3.1 Definisi

Relative Risk (RR), atau sering disebut Risk Ratio, adalah rasio antara probabilitas kejadian Y pada kelompok terpapar (exposed) dibandingkan probabilitas kejadian Y pada kelompok tidak terpapar (unexposed). RR merupakan ukuran asosiasi yang paling intuitif dan mudah diinterpretasikan (Rothman, Greenland & Lash, 2008).

RR paling tepat digunakan pada studi kohort (prospektif) atau uji klinis acak (randomized controlled trial), di mana proporsi kejadian di setiap kelompok paparan dapat diestimasi secara langsung dari data.

4.3.2 Rumus Matematis

Risiko pada kelompok terpapar (X=1): \[R_{\text{exposed}} = P(Y=1 \mid X=1) = \frac{a}{a+b}\]

Risiko pada kelompok tidak terpapar (X=0): \[R_{\text{unexposed}} = P(Y=1 \mid X=0) = \frac{c}{c+d}\]

Relative Risk: \[\text{RR} = \frac{R_{\text{exposed}}}{R_{\text{unexposed}}} = \frac{a/(a+b)}{c/(c+d)}\]

Interval Kepercayaan 95% untuk RR: \[\text{SE}[\ln(\widehat{RR})] = \sqrt{\frac{b}{a(a+b)} + \frac{d}{c(c+d)}}\]

\[95\% \text{ CI untuk RR} = \left( e^{\ln(\widehat{RR}) - 1.96 \cdot \text{SE}}, \; e^{\ln(\widehat{RR}) + 1.96 \cdot \text{SE}} \right)\]

4.3.3 Interpretasi Relative Risk

Nilai RR Interpretasi
RR = 1 Risiko pada kelompok terpapar sama dengan risiko pada kelompok tidak terpapar; tidak ada asosiasi
RR > 1 Kelompok terpapar memiliki risiko lebih tinggi dari kelompok tidak terpapar
RR < 1 Kelompok terpapar memiliki risiko lebih rendah dari kelompok tidak terpapar (faktor protektif)
RR = 3 Risiko kejadian Y pada kelompok terpapar 3 kali lebih besar dibandingkan kelompok tidak terpapar

4.3.4 Hubungan antara OR dan RR

OR dan RR memiliki hubungan matematis yang penting. Ketika kejadian yang diteliti jarang (rare disease assumption, prevalensi < 10%), maka OR mendekati RR:

\[\text{OR} \approx \text{RR} \quad \text{apabila } P(Y=1) \text{ sangat kecil (< 0.10)}\]

Secara umum: \[\text{RR} = \frac{\text{OR}}{1 - P_0 + P_0 \cdot \text{OR}}\]

di mana \(P_0 = c/(c+d)\) adalah risiko baseline (risiko pada kelompok tidak terpapar).

Ketika kejadian tidak jarang, OR akan melebih-lebihkan (overestimate) besar asosiasi dibandingkan RR jika asosiasi positif, dan meremehkan (underestimate) jika asosiasi negatif (Zhang & Yu, 1998).

4.4 Ringkasan Perbandingan Ukuran Asosiasi

Ukuran Formula Rentang Nilai Nilai Netral Desain Studi yang Cocok
Odds \(a/b\) atau \(c/d\) \((0, \infty)\) 1 Semua jenis
Odds Ratio \(ad/bc\) \((0, \infty)\) 1 Kasus-kontrol, kohort, cross-sectional
Relative Risk \(\frac{a/(a+b)}{c/(c+d)}\) \((0, \infty)\) 1 Kohort, RCT

5 Contoh Perhitungan Manual

5.1 Kasus: Hubungan Merokok dengan Kanker Paru-Paru

Sebagai ilustrasi, kita akan menggunakan contoh kasus fiktif namun realistis tentang hubungan antara kebiasaan merokok dan kejadian kanker paru-paru. Studi ini menggunakan desain studi kasus-kontrol, di mana 200 orang dengan kanker paru (kasus) dan 200 orang tanpa kanker paru (kontrol) diteliti mengenai riwayat merokok mereka.

5.1.1 Data dan Tabel Kontingensi

Berikut adalah data yang diperoleh dari penelitian tersebut:

Kanker Paru (Ya) Kanker Paru (Tidak) Total
Perokok 120 80 200
Bukan Perokok 40 160 200
Total 160 240 400

Keterangan: \(a = 120\), \(b = 80\), \(c = 40\), \(d = 160\), \(n = 400\)

5.1.2 Langkah 1: Joint Distribution

\[\pi_{11} = P(\text{Perokok, Kanker}) = \frac{120}{400} = 0.300\] \[\pi_{12} = P(\text{Perokok, Tidak Kanker}) = \frac{80}{400} = 0.200\] \[\pi_{21} = P(\text{Bukan Perokok, Kanker}) = \frac{40}{400} = 0.100\] \[\pi_{22} = P(\text{Bukan Perokok, Tidak Kanker}) = \frac{160}{400} = 0.400\] \[\sum \pi_{ij} = 0.300 + 0.200 + 0.100 + 0.400 = 1.000 \checkmark\]

5.1.3 Langkah 2: Menghitung Peluang Bersyarat

Peluang terkena kanker paru diberikan perokok:

\[P(\text{Kanker} \mid \text{Perokok}) = \frac{a}{a+b} = \frac{120}{120+80} = \frac{120}{200} = 0.600 \text{ (60\%)}\]

Peluang terkena kanker paru diberikan bukan perokok:

\[P(\text{Kanker} \mid \text{Bukan Perokok}) = \frac{c}{c+d} = \frac{40}{40+160} = \frac{40}{200} = 0.200 \text{ (20\%)}\]

Interpretasi: Prevalensi kanker paru pada perokok (60%) tiga kali lebih tinggi dibandingkan pada bukan perokok (20%). Ini sudah memberikan indikasi awal adanya asosiasi yang kuat.

5.1.4 Langkah 3: Menghitung Odds

Odds terkena kanker paru pada kelompok perokok:

\[\text{Odds}_{\text{Perokok}} = \frac{P(\text{Kanker} \mid \text{Perokok})}{P(\text{Tidak Kanker} \mid \text{Perokok})} = \frac{a}{b} = \frac{120}{80} = 1.50\]

Interpretasi: Pada kelompok perokok, untuk setiap 1 orang yang tidak terkena kanker paru, terdapat 1.5 orang yang terkena kanker paru.

Odds terkena kanker paru pada kelompok bukan perokok:

\[\text{Odds}_{\text{Bukan Perokok}} = \frac{c}{d} = \frac{40}{160} = 0.25\]

Interpretasi: Pada kelompok bukan perokok, untuk setiap 4 orang yang tidak terkena kanker paru, hanya terdapat 1 orang yang terkena kanker paru.

5.1.5 Langkah 4: Menghitung Odds Ratio

\[\text{OR} = \frac{\text{Odds}_{\text{Perokok}}}{\text{Odds}_{\text{Bukan Perokok}}} = \frac{a/b}{c/d} = \frac{ad}{bc} = \frac{120 \times 160}{80 \times 40} = \frac{19200}{3200} = 6.00\]

Interval Kepercayaan 95% untuk OR:

\[\text{SE}[\ln(\widehat{OR})] = \sqrt{\frac{1}{120} + \frac{1}{80} + \frac{1}{40} + \frac{1}{160}}\] \[= \sqrt{0.00833 + 0.01250 + 0.02500 + 0.00625} = \sqrt{0.05208} = 0.2282\]

\[\ln(\widehat{OR}) = \ln(6.00) = 1.7918\]

\[\text{Batas bawah: } e^{1.7918 - 1.96 \times 0.2282} = e^{1.3444} = 3.835\] \[\text{Batas atas: } e^{1.7918 + 1.96 \times 0.2282} = e^{2.2392} = 9.377\]

\[\boxed{95\% \text{ CI OR} = (3.835 \; ; \; 9.377)}\]

5.1.6 Langkah 5: Menghitung Relative Risk

\[\text{RR} = \frac{P(\text{Kanker} \mid \text{Perokok})}{P(\text{Kanker} \mid \text{Bukan Perokok})} = \frac{a/(a+b)}{c/(c+d)} = \frac{120/200}{40/200} = \frac{0.60}{0.20} = 3.00\]

5.1.7 Ringkasan Hasil Perhitungan Manual

Ukuran Asosiasi Nilai 95% CI
Odds (Perokok) 1.500
Odds (Bukan Perokok) 0.250
Odds Ratio (OR) 6.000 (3.835 ; 9.377)
Relative Risk (RR) 3.000

Catatan penting: Dalam contoh ini, karena prevalensi kejadian (kanker paru) cukup tinggi (40%), OR (6.00) jauh lebih besar dari RR (3.00). Ini mengilustrasikan bahwa ketika kejadian tidak jarang, OR akan melebih-lebihkan RR (Zhang & Yu, 1998).


6 Analisis Menggunakan R

Pada bagian ini, kita akan mereplikasi seluruh analisis di atas menggunakan bahasa pemrograman R, yang merupakan salah satu perangkat lunak statistika paling populer untuk analisis data kategori (R Core Team, 2023).

6.1 Persiapan dan Input Data

# Memuat paket yang diperlukan
library(epitools)     # untuk menghitung OR, RR, dan CI-nya
library(vcd)          # visualisasi data kategori
library(ggplot2)      # visualisasi lanjutan
library(dplyr)        # manipulasi data
library(knitr)        # tabel yang rapi
library(kableExtra)   # tabel HTML cantik dan berwarna
library(scales)       # format sumbu

# Membuat tabel kontingensi dari data
tabel_2x2 <- matrix(
  c(120, 80, 40, 160),   # a, b, c, d
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    "Status Merokok" = c("Perokok", "Bukan Perokok"),
    "Status Kanker"  = c("Kanker Paru", "Tidak Kanker")
  )
)

cat("=== TABEL KONTINGENSI 2x2 ===\n")
## === TABEL KONTINGENSI 2x2 ===
print(tabel_2x2)
##                Status Kanker
## Status Merokok  Kanker Paru Tidak Kanker
##   Perokok               120           80
##   Bukan Perokok          40          160
cat("\nTotal observasi:", sum(tabel_2x2))
## 
## Total observasi: 400
# Tampilan tabel yang lebih rapi menggunakan kableExtra
kable(tabel_2x2,
      caption = "Tabel Kontingensi 2×2: Status Merokok vs Kanker Paru (n = 400)",
      align = "c") %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive", "bordered"),
    full_width = TRUE,
    position = "center",
    font_size = 14
  ) %>%
  row_spec(0,
           background = "#1a5276",
           color = "white",
           bold = TRUE,
           font_size = 14) %>%
  row_spec(1, background = "#eaf4fb") %>%
  row_spec(2, background = "#d6eaf8") %>%
  column_spec(1, bold = TRUE, color = "#1a5276", background = "#d6eaf8") %>%
  add_header_above(c(" " = 1, "Status Kanker Paru" = 2),
                   background = "#154360", color = "white", bold = TRUE) %>%
  footnote(general = "a = 120, b = 80, c = 40, d = 160",
           general_title = "Keterangan: ")
Tabel Kontingensi 2×2: Status Merokok vs Kanker Paru (n = 400)
Status Kanker Paru
Kanker Paru Tidak Kanker
Perokok 120 80
Bukan Perokok 40 160
Keterangan:
a = 120, b = 80, c = 40, d = 160

6.2 Menghitung Distribusi dan Peluang Bersyarat

n <- sum(tabel_2x2)

# Joint distribution
cat("=== JOINT DISTRIBUTION ===\n")
## === JOINT DISTRIBUTION ===
joint_dist <- tabel_2x2 / n
print(round(joint_dist, 4))
##                Status Kanker
## Status Merokok  Kanker Paru Tidak Kanker
##   Perokok               0.3          0.2
##   Bukan Perokok         0.1          0.4
# Marginal distribution
cat("\n=== MARGINAL DISTRIBUTION ===\n")
## 
## === MARGINAL DISTRIBUTION ===
cat("Marginal baris (Status Merokok):\n")
## Marginal baris (Status Merokok):
print(round(rowSums(joint_dist), 4))
##       Perokok Bukan Perokok 
##           0.5           0.5
cat("\nMarginal kolom (Status Kanker):\n")
## 
## Marginal kolom (Status Kanker):
print(round(colSums(joint_dist), 4))
##  Kanker Paru Tidak Kanker 
##          0.4          0.6
# Conditional probability
cat("\n=== CONDITIONAL PROBABILITY ===\n")
## 
## === CONDITIONAL PROBABILITY ===
cond_prob <- prop.table(tabel_2x2, margin = 1)  # proporsi per baris
print(round(cond_prob, 4))
##                Status Kanker
## Status Merokok  Kanker Paru Tidak Kanker
##   Perokok               0.6          0.4
##   Bukan Perokok         0.2          0.8
cat("\nInterpretasi: P(Kanker | Perokok) =", round(cond_prob[1,1], 4),
    "| P(Kanker | Bukan Perokok) =", round(cond_prob[2,1], 4))
## 
## Interpretasi: P(Kanker | Perokok) = 0.6 | P(Kanker | Bukan Perokok) = 0.2

6.3 Menghitung Odds Ratio menggunakan epitools

# Menghitung OR dan RR dengan interval kepercayaan
hasil_or <- epitools::oddsratio.wald(tabel_2x2)
hasil_rr <- epitools::riskratio.wald(tabel_2x2)

cat("=== ODDS RATIO ===\n")
## === ODDS RATIO ===
cat("Odds Ratio:", round(hasil_or$measure[2, 1], 4))
## Odds Ratio: 6
cat("\n95% CI: (", round(hasil_or$measure[2, 2], 4), ",", round(hasil_or$measure[2, 3], 4), ")\n")
## 
## 95% CI: ( 3.8361 , 9.3845 )
cat("p-value:", round(hasil_or$p.value[2, 2], 6), "\n")
## p-value: 0
cat("\n=== RELATIVE RISK ===\n")
## 
## === RELATIVE RISK ===
cat("Relative Risk:", round(hasil_rr$measure[2, 1], 4))
## Relative Risk: 2
cat("\n95% CI: (", round(hasil_rr$measure[2, 2], 4), ",", round(hasil_rr$measure[2, 3], 4), ")\n")
## 
## 95% CI: ( 1.665 , 2.4024 )
# Tabel ringkasan OR dan RR yang rapi
df_summary <- data.frame(
  `Ukuran Asosiasi` = c("Odds (Perokok)", "Odds (Bukan Perokok)",
                         "Odds Ratio (OR)", "Relative Risk (RR)"),
  Nilai = c("1.500", "0.250", "6.000", "3.000"),
  `Batas Bawah 95% CI` = c("—", "—",
                             round(hasil_or$measure[2, 2], 3),
                             round(hasil_rr$measure[2, 2], 3)),
  `Batas Atas 95% CI`  = c("—", "—",
                             round(hasil_or$measure[2, 3], 3),
                             round(hasil_rr$measure[2, 3], 3)),
  check.names = FALSE
)

kable(df_summary,
      caption = "Ringkasan Ukuran Asosiasi: Merokok vs Kanker Paru",
      align = c("l", "c", "c", "c")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "bordered", "responsive"),
    full_width = TRUE,
    font_size = 14
  ) %>%
  row_spec(0, background = "#1a5276", color = "white", bold = TRUE) %>%
  row_spec(3, background = "#d5f5e3", bold = TRUE, color = "#1e8449") %>%
  row_spec(4, background = "#fef9e7", bold = TRUE, color = "#b7950b") %>%
  column_spec(1, bold = TRUE, width = "35%") %>%
  column_spec(2, bold = TRUE, color = "#1a5276")
Ringkasan Ukuran Asosiasi: Merokok vs Kanker Paru
Ukuran Asosiasi Nilai Batas Bawah 95% CI Batas Atas 95% CI
Odds (Perokok) 1.500
Odds (Bukan Perokok) 0.250
Odds Ratio (OR) 6.000 3.836 9.384
Relative Risk (RR) 3.000 1.665 2.402

6.4 Uji Chi-Square

# Uji Chi-Square untuk independensi
uji_chi <- chisq.test(tabel_2x2, correct = FALSE)
uji_fisher <- fisher.test(tabel_2x2)

cat("=== UJI CHI-SQUARE ===\n")
## === UJI CHI-SQUARE ===
print(uji_chi)
## 
##  Pearson's Chi-squared test
## 
## data:  tabel_2x2
## X-squared = 66.667, df = 1, p-value = 3.215e-16
cat("\nKeputusan:", ifelse(uji_chi$p.value < 0.05,
    "Tolak H0 — ada asosiasi signifikan antara merokok dan kanker paru",
    "Gagal tolak H0 — tidak ada asosiasi signifikan"))
## 
## Keputusan: Tolak H0 — ada asosiasi signifikan antara merokok dan kanker paru
cat("\n\n=== FISHER'S EXACT TEST ===\n")
## 
## 
## === FISHER'S EXACT TEST ===
print(uji_fisher)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  tabel_2x2
## p-value = 2.416e-16
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  3.751667 9.644465
## sample estimates:
## odds ratio 
##   5.970079
# Tabel ringkasan hasil uji hipotesis
df_uji <- data.frame(
  Uji = c("Chi-Square (tanpa koreksi)", "Fisher's Exact Test"),
  Statistik = c(round(uji_chi$statistic, 4), "—"),
  df = c(uji_chi$parameter, "—"),
  `p-value` = c(
    formatC(uji_chi$p.value, format = "e", digits = 3),
    formatC(uji_fisher$p.value, format = "e", digits = 3)
  ),
  Keputusan = c(
    ifelse(uji_chi$p.value < 0.05, "Tolak H₀ ✓", "Gagal Tolak H₀"),
    ifelse(uji_fisher$p.value < 0.05, "Tolak H₀ ✓", "Gagal Tolak H₀")
  ),
  check.names = FALSE
)

kable(df_uji,
      caption = "Hasil Uji Hipotesis Independensi (α = 0.05)",
      align = c("l","c","c","c","c")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "bordered", "responsive"),
    full_width = TRUE,
    font_size = 14
  ) %>%
  row_spec(0, background = "#1a5276", color = "white", bold = TRUE) %>%
  row_spec(1:2, background = "#eafaf1") %>%
  column_spec(5, bold = TRUE, color = "#1e8449") %>%
  column_spec(4, bold = TRUE, color = "#c0392b")
Hasil Uji Hipotesis Independensi (α = 0.05)
Uji Statistik df p-value Keputusan
X-squared Chi-Square (tanpa koreksi) 66.6667 1 3.215e-16 Tolak H₀ ✓
Fisher’s Exact Test 2.416e-16 Tolak H₀ ✓

6.5 Visualisasi Data

6.5.1 Visualisasi 1: Mosaic Plot

# Mosaic plot menggunakan paket vcd
vcd::mosaic(tabel_2x2,
            shade = TRUE,
            legend = TRUE,
            main = "Mosaic Plot: Merokok vs Kanker Paru",
            labeling_args = list(
              set_varnames = c(
                "Status Merokok" = "Status Merokok",
                "Status Kanker"  = "Status Kanker Paru"
              )
            ))
Gambar 1. Mosaic Plot Hubungan Merokok dan Kanker Paru

Gambar 1. Mosaic Plot Hubungan Merokok dan Kanker Paru

6.5.2 Visualisasi 2: Grouped Bar Chart dengan ggplot2

# Membuat data frame untuk ggplot2
df_plot <- data.frame(
  Status_Merokok = c("Perokok", "Perokok", "Bukan Perokok", "Bukan Perokok"),
  Status_Kanker  = c("Kanker Paru", "Tidak Kanker", "Kanker Paru", "Tidak Kanker"),
  Frekuensi      = c(120, 80, 40, 160)
)

df_plot <- df_plot %>%
  group_by(Status_Merokok) %>%
  mutate(Proporsi = Frekuensi / sum(Frekuensi))

ggplot(df_plot, aes(x = Status_Merokok, y = Proporsi, fill = Status_Kanker)) +
  geom_bar(stat = "identity", position = "dodge", width = 0.6, color = "white") +
  geom_text(aes(label = scales::percent(Proporsi, accuracy = 1)),
            position = position_dodge(width = 0.6),
            vjust = -0.5, size = 4, fontface = "bold") +
  scale_fill_manual(values = c("#2e86c1", "#85c1e9"),
                    name = "Status Kanker Paru") +
  scale_y_continuous(labels = scales::percent_format(), limits = c(0, 0.8)) +
  labs(
    title    = "Proporsi Kanker Paru Berdasarkan Status Merokok",
    subtitle = "Studi Kasus-Kontrol (n = 400)",
    x        = "Status Merokok",
    y        = "Proporsi (%)",
    caption  = "Data: Contoh fiktif ilustratif"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title      = element_text(face = "bold", color = "#1a5276", hjust = 0.5),
    plot.subtitle   = element_text(color = "#555", hjust = 0.5),
    legend.position = "top",
    panel.grid.major.x = element_blank()
  )
Gambar 2. Perbandingan Proporsi Kanker Paru Berdasarkan Status Merokok

Gambar 2. Perbandingan Proporsi Kanker Paru Berdasarkan Status Merokok

6.5.3 Visualisasi 3: Dot Plot Odds Ratio dengan Interval Kepercayaan

# Forest plot sederhana untuk OR
or_val  <- 6.00
ci_low  <- 3.835
ci_high <- 9.377

df_or <- data.frame(
  label = "Merokok vs\nKanker Paru",
  OR    = or_val,
  lower = ci_low,
  upper = ci_high
)

ggplot(df_or, aes(x = OR, y = label)) +
  geom_vline(xintercept = 1, linetype = "dashed", color = "#c0392b", linewidth = 0.8) +
  geom_errorbarh(aes(xmin = lower, xmax = upper),
                 height = 0.15, color = "#1a5276", linewidth = 1.2) +
  geom_point(size = 5, color = "#2e86c1") +
  geom_text(aes(label = paste0("OR = ", OR, "\n95% CI: (", lower, " – ", upper, ")")),
            nudge_y = 0.25, size = 4, color = "#34495e") +
  scale_x_continuous(limits = c(0, 12), breaks = seq(0, 12, 2)) +
  labs(
    title   = "Forest Plot: Odds Ratio Merokok terhadap Kanker Paru",
    x       = "Odds Ratio (skala linear)",
    y       = "",
    caption = "Garis merah putus-putus menunjukkan OR = 1 (tidak ada asosiasi)"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title    = element_text(face = "bold", color = "#1a5276", hjust = 0.5),
    axis.text.y   = element_text(size = 12),
    panel.grid.major.y = element_blank()
  )
Gambar 3. Forest Plot Odds Ratio dengan Interval Kepercayaan 95%

Gambar 3. Forest Plot Odds Ratio dengan Interval Kepercayaan 95%


7 Interpretasi Hasil

7.1 Interpretasi Statistik

Berdasarkan seluruh analisis yang telah dilakukan, diperoleh hasil sebagai berikut:

1. Uji Chi-Square: Uji Chi-Square menghasilkan nilai statistik yang sangat besar dengan p-value yang jauh di bawah \(\alpha = 0.05\). Dengan demikian, kita menolak hipotesis nol bahwa status merokok dan kejadian kanker paru-paru saling independen. Terdapat bukti statistik yang kuat bahwa ada asosiasi yang signifikan antara kebiasaan merokok dan kejadian kanker paru.

2. Odds Ratio (OR = 6.00; 95% CI: 3.835 – 9.377): Odds Ratio sebesar 6.00 menunjukkan bahwa odds terkena kanker paru pada perokok adalah 6 kali lebih besar dibandingkan pada bukan perokok. Interval kepercayaan 95% (3.835 – 9.377) sepenuhnya berada di atas nilai 1, mengkonfirmasi bahwa asosiasi ini signifikan secara statistik pada \(\alpha = 0.05\).

3. Relative Risk (RR = 3.00): Risiko terkena kanker paru pada perokok adalah 3 kali lebih tinggi dibandingkan bukan perokok. Perbedaan antara OR (6.00) dan RR (3.00) mencerminkan fenomena yang telah dibahas sebelumnya: karena prevalensi kejadian dalam sampel ini cukup tinggi (40%), OR melebih-lebihkan RR.

7.2 Interpretasi Substantif

Dari perspektif kesehatan masyarakat, temuan ini memiliki implikasi yang sangat penting. Hasil analisis menunjukkan bahwa merokok merupakan faktor risiko yang sangat kuat untuk kanker paru-paru. Perokok memiliki risiko yang jauh lebih tinggi dibandingkan bukan perokok. Temuan ini konsisten dengan banyak penelitian epidemiologis berskala besar yang telah dilakukan sebelumnya, seperti penelitian kohort pionir oleh Doll & Hill (1950, 1956) yang pertama kali membuktikan secara ilmiah hubungan antara merokok dan kanker paru di Inggris, serta studi-studi lanjutan yang didokumentasikan dalam laporan Surgeon General Amerika Serikat.

Secara substantif, asosiasi yang kuat antara merokok dan kanker paru ini mengimplikasikan bahwa program pengendalian tembakau dan kampanye berhenti merokok merupakan intervensi kesehatan masyarakat yang sangat penting dan berpotensi besar menurunkan beban penyakit kanker paru di populasi.

7.3 Interpretasi Visualisasi

Mosaic Plot (Gambar 1): Mosaic plot menunjukkan secara visual bahwa ukuran sel-sel dalam tabel sangat tidak proporsional. Area yang diarsir dan berwarna berbeda menunjukkan adanya residual Pearson yang besar, mengkonfirmasi bahwa distribusi obsevasi jauh dari yang diharapkan di bawah hipotesis independensi.

Grouped Bar Chart (Gambar 2): Bar chart dengan jelas memperlihatkan perbedaan drastis dalam proporsi kanker paru antara perokok (60%) dan bukan perokok (20%). Visualisasi ini mudah dipahami dan efektif untuk menyampaikan pesan utama analisis kepada audiens non-statistisi.

Forest Plot (Gambar 3): Forest plot menampilkan Odds Ratio beserta interval kepercayaan 95%-nya secara grafis. Terlihat bahwa seluruh interval kepercayaan berada jauh di sebelah kanan garis referensi OR = 1, mempertegas bahwa asosiasi antara merokok dan kanker paru sangat kuat dan signifikan secara statistik.


8 Kesimpulan

Laporan ini telah menyajikan pembahasan komprehensif mengenai analisis data kategori, mulai dari fondasi konseptual hingga implementasi praktis menggunakan perangkat lunak R. Berikut adalah poin-poin utama yang dapat disimpulkan:

1. Konsep Dasar: Analisis data kategori merupakan cabang statistika yang sangat penting dan luas penggunaannya. Data kategori memiliki karakteristik unik — berskala nominal atau ordinal, diskrit, dan tidak memiliki makna aritmatika — sehingga memerlukan pendekatan metodologis yang berbeda dari analisis data kontinu.

2. Tabel Kontingensi sebagai Alat Utama: Tabel kontingensi merupakan fondasi analisis data kategori bivariat. Melalui konsep joint distribution, marginal distribution, dan conditional probability, tabel kontingensi memungkinkan peneliti untuk memahami struktur hubungan antara dua variabel kategorik secara menyeluruh.

3. Kekuatan Ukuran Asosiasi: Odds, Odds Ratio, dan Relative Risk adalah ukuran asosiasi yang memiliki kekuatan dan keunikan masing-masing. OR sangat cocok untuk studi kasus-kontrol dan memiliki sifat simetris yang menguntungkan, sementara RR lebih intuitif dan tepat digunakan pada studi kohort. Interval kepercayaan untuk kedua ukuran ini sangat penting untuk menilai presisi estimasi dan signifikansi statistik.

4. Validasi melalui Contoh Kasus: Contoh kasus merokok dan kanker paru-paru berhasil mengilustrasikan bagaimana konsep-konsep teoritis diterapkan dalam konteks penelitian nyata. OR sebesar 6.00 (95% CI: 3.835–9.377) dan RR sebesar 3.00 menunjukkan asosiasi yang sangat kuat dan signifikan antara kebiasaan merokok dan kejadian kanker paru.

5. Peran R dalam Analisis Modern: Perangkat lunak R terbukti mampu mereplikasi seluruh perhitungan manual secara efisien, akurat, dan reproducible. Lebih dari sekadar alat hitung, R juga memungkinkan pembuatan visualisasi yang informatif dan komunikatif melalui paket seperti ggplot2 dan vcd.

6. Relevansi Praktis: Analisis data kategori bukan hanya relevan dalam tataran akademik, tetapi juga memiliki dampak nyata dalam pengambilan keputusan berbasis bukti (evidence-based decision making), terutama dalam kebijakan kesehatan masyarakat, penelitian klinis, dan ilmu sosial.

Pemahaman yang baik tentang analisis data kategori merupakan kompetensi esensial bagi setiap peneliti yang bekerja dengan data dari survei, studi epidemiologi, atau penelitian sosial. Dengan menguasai konsep tabel kontingensi, ukuran asosiasi, dan implementasinya dalam R, seorang peneliti akan mampu menghasilkan analisis yang tidak hanya benar secara statistik, tetapi juga bermakna secara substantif.


9 Daftar Pustaka

Agresti, A. (2002). Categorical Data Analysis (2nd ed.). John Wiley & Sons. https://doi.org/10.1002/0471249688

Agresti, A. (2010). Analysis of Ordinal Categorical Data (2nd ed.). John Wiley & Sons.

Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons.

Bishop, Y. M. M., Fienberg, S. E., & Holland, P. W. (1975). Discrete Multivariate Analysis: Theory and Practice. MIT Press.

Doll, R., & Hill, A. B. (1950). Smoking and carcinoma of the lung. British Medical Journal, 2(4682), 739–748. https://doi.org/10.1136/bmj.2.4682.739

Doll, R., & Hill, A. B. (1956). Lung cancer and other causes of death in relation to smoking. British Medical Journal, 2(5001), 1071–1081. https://doi.org/10.1136/bmj.2.5001.1071

Everitt, B. S. (1992). The Analysis of Contingency Tables (2nd ed.). Chapman & Hall/CRC.

Fienberg, S. E. (2007). The Analysis of Cross-Classified Categorical Data (2nd ed.). Springer.

Fleiss, J. L., Levin, B., & Paik, M. C. (2003). Statistical Methods for Rates and Proportions (3rd ed.). John Wiley & Sons.

Goodman, L. A. (1970). The multivariate analysis of qualitative data: Interactions among multiple classifications. Journal of the American Statistical Association, 65(329), 226–256.

Hosmer, D. W., & Lemeshow, S. (2000). Applied Logistic Regression (2nd ed.). John Wiley & Sons.

Knoke, D., & Burke, P. J. (1980). Log-Linear Models. Sage Publications.

McFadden, D. (1974). Conditional logit analysis of qualitative choice behavior. In P. Zarembka (Ed.), Frontiers in Econometrics (pp. 105–142). Academic Press.

Pearson, K. (1900). On the criterion that a given system of deviations from the probable in the case of a correlated system of variables is such that it can be reasonably supposed to have arisen from random sampling. Philosophical Magazine, 50(302), 157–175.

R Core Team. (2023). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. https://www.R-project.org/

Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern Epidemiology (3rd ed.). Lippincott Williams & Wilkins.

Stevens, S. S. (1946). On the theory of scales of measurement. Science, 103(2684), 677–680. https://doi.org/10.1126/science.103.2684.677

Zhang, J., & Yu, K. F. (1998). What’s the relative risk? A method of correcting the odds ratio in cohort studies of common outcomes. JAMA, 280(19), 1690–1691. https://doi.org/10.1001/jama.280.19.1690


Laporan ini dibuat menggunakan R Markdown dan dipublikasikan di RPubs.
© 2026 — Analisis Data Kategori