Abstract
Laporan ini disusun untuk memenuhi tugas individu mata kuliah Analisis Data Kategori. Laporan ini membahas secara komprehensif mulai dari definisi, tabel kontingensi, ukuran asosiasi, perhitungan manual, hingga implementasi menggunakan R, dilengkapi dengan interpretasi hasil.Dalam era big data saat ini, informasi yang dikumpulkan dalam berbagai bidang penelitian seperti kesehatan masyarakat, ekonomi, psikologi, dan ilmu sosial seringkali berbentuk data kategorik. Data kategorik adalah data yang menggambarkan karakteristik atau atribut dari suatu objek individu yang dapat diklasifikasikan ke dalam kelompok atau kategori tertentu. Berbeda dengan data numerik kontinu yang dapat diukur dengan presisi tinggi, data kategorik lebih merepresentasikan kualitas atau sifat dari suatu observasi.
Karakteristik utama data kategorik:
Dalam statistika, analisis data kategorik telah berkembang menjadi cabang ilmu yang sangat penting. Alan Agresti (2013), seorang pakar terkemuka dalam bidang ini, menyatakan bahwa “Analisis data kategorik adalah inti dari banyak penelitian di ilmu sosial, biomedis, dan kesehatan masyarakat.” Metode-metode yang dikembangkan khusus untuk data kategorik memungkinkan peneliti untuk:
Salah satu alat fundamental dalam analisis data kategorik adalah tabel kontingensi, yang memungkinkan peneliti untuk menyajikan dan menganalisis hubungan antara dua atau lebih variabel kategorik secara simultan. Dari tabel ini, berbagai ukuran asosiasi dapat dihitung, termasuk Odds Ratio dan Relative Risk, yang memberikan gambaran kuantitatif tentang kekuatan dan arah hubungan.
Setelah menyelesaikan tugas ini secara komprehensif, mahasiswa diharapkan memiliki kemampuan sebagai berikut:
Analisis data kategorik mencakup berbagai metode statistik yang dirancang khusus untuk menangani data dalam bentuk frekuensi atau proporsi. Metode-metode ini berbeda secara fundamental dari metode yang digunakan untuk data kontinu karena:
Contoh Penerapan dalam Penelitian:
Analisis Data Kategori adalah sekumpulan prosedur statistik yang dirancang khusus untuk menganalisis data yang terdiri dari variabel-variabel kategorik. Data kategorik, juga dikenal sebagai data kualitatif, adalah data di mana observasi-observasi dikelompokkan ke dalam kategori-kategori diskrit berdasarkan atribut atau karakteristik tertentu.
Menurut Agresti (2013), analisis data kategorik memiliki karakteristik utama sebagai berikut:
“Analisis data kategorik berfokus pada data yang berupa frekuensi atau proporsi dalam berbagai kategori. Tujuan utamanya adalah untuk mempelajari distribusi dari variabel-variabel kategorik dan hubungan di antara mereka.”
Perbedaan mendasar dengan analisis data numerik:
| Aspek | Data Numerik | Data Kategorik |
|---|---|---|
| Skala pengukuran | Interval/Rasio | Nominal/Ordinal |
| Statistik deskriptif | Mean, median, SD | Frekuensi, proporsi, modus |
| Distribusi teoritis | Normal, t, F | Binomial, Poisson, Multinomial |
| Visualisasi | Histogram, boxplot | Bar chart, pie chart |
| Uji hipotesis | t-test, ANOVA | Chi-square, G-test |
Variabel kategorik memiliki karakteristik yang membedakannya dari variabel numerik:
a. Skala Nominal - Kategori bersifat kualitatif dan tidak memiliki urutan - Angka yang diberikan hanya sebagai label - Contoh: Jenis kelamin (1 = Laki-laki, 2 = Perempuan), status pernikahan, agama
b. Skala Ordinal - Kategori memiliki urutan alami - Jarak antar kategori tidak diketahui atau tidak sama - Contoh: Tingkat pendidikan (1 = SD, 2 = SMP, 3 = SMA, 4 = PT), kepuasan pelanggan
Mutually Exclusive (Saling Lepas) Setiap observasi hanya dapat masuk ke dalam satu kategori. Seorang individu tidak mungkin berada dalam dua kategori sekaligus untuk variabel yang sama.
Exhaustive (Lengkap) Kategori yang dibuat harus mencakup semua kemungkinan nilai yang mungkin muncul. Tidak boleh ada observasi yang tidak dapat diklasifikasikan.
Diskrit Data kategorik selalu bersifat diskrit, tidak kontinu. Setiap observasi ditempatkan dalam kategori tertentu.
Data kategorik mengikuti distribusi probabilitas diskrit:
Distribusi Binomial Untuk variabel biner (dua kategori): \[P(Y = y) = \binom{n}{y} \pi^y (1-\pi)^{n-y}\]
Distribusi Multinomial Untuk variabel dengan lebih dari dua kategori: \[P(n_1, n_2, ..., n_k) = \frac{n!}{n_1! n_2! ... n_k!} \pi_1^{n_1} \pi_2^{n_2} ... \pi_k^{n_k}\]
Studi Kasus: Hubungan Merokok dengan Kanker Paru
Dalam studi kasus-kontrol, peneliti mengumpulkan data tentang riwayat merokok pada pasien kanker paru (kasus) dan individu sehat (kontrol). Analisis data kategorik digunakan untuk: - Menghitung odds ratio untuk mengukur kekuatan asosiasi - Menguji signifikansi hubungan dengan uji Chi-square - Mengontrol variabel perancu dengan regresi logistik
Studi Kasus: Preferensi Konsumen
Perusahaan ingin mengetahui apakah terdapat hubungan antara jenis kelamin dengan preferensi merek produk. Data dikumpulkan dari survei konsumen dan dianalisis dengan: - Tabel kontingensi untuk melihat distribusi bersama - Uji independensi Chi-square - Analisis korespondensi untuk visualisasi
Studi Kasus: Metode Pembelajaran
Peneliti ingin membandingkan efektivitas tiga metode pembelajaran terhadap tingkat kelulusan siswa. Analisis melibatkan: - Tabel kontingensi 3 × 2 - Uji homogenitas proporsi - Analisis residual untuk identifikasi pola
Studi Kasus: Mobilitas Sosial
Sosiolog meneliti hubungan antara pendidikan orang tua dengan pendidikan anak. Analisis menggunakan: - Tabel kontingensi dengan skala ordinal - Ukuran asosiasi untuk data ordinal (Gamma, Kendall’s tau) - Model log-linear untuk pola asosiasi kompleks
Tabel kontingensi, juga dikenal sebagai crosstabulation atau tabel silang, adalah sebuah tabel dua arah yang menyajikan frekuensi bersama dari dua atau lebih variabel kategorik. Tabel ini dinamakan “kontingensi” karena menunjukkan bagaimana frekuensi observasi “bergantung” atau “berkontingensi” pada kombinasi kategori dari variabel-variabel yang dianalisis.
Menurut Fienberg (2007), tabel kontingensi adalah:
“Alat fundamental dalam statistika untuk meringkas dan menganalisis hubungan antara variabel-variabel kategorik. Tabel ini menyajikan distribusi bersama dari observasi-observasi berdasarkan kategori-kategori dari variabel yang diteliti.”
Untuk tabel kontingensi dua arah dengan I baris dan J kolom, struktur umumnya adalah:
| Kolom 1 | Kolom 2 | … | Kolom J | Total Baris | |
|---|---|---|---|---|---|
| Baris 1 | \(n_{11}\) | \(n_{12}\) | … | \(n_{1J}\) | \(n_{1.}\) |
| Baris 2 | \(n_{21}\) | \(n_{22}\) | … | \(n_{2J}\) | \(n_{2.}\) |
| … | … | … | … | … | … |
| Baris I | \(n_{I1}\) | \(n_{I2}\) | … | \(n_{IJ}\) | \(n_{I.}\) |
| Total Kolom | \(n_{.1}\) | \(n_{.2}\) | … | \(n_{.J}\) | n |
Keterangan: - \(n_{ij}\) = frekuensi observasi pada baris ke-i dan kolom ke-j - \(n_{i.} = \sum_{j=1}^J n_{ij}\) = total baris ke-i - \(n_{.j} = \sum_{i=1}^I n_{ij}\) = total kolom ke-j - \(n = \sum_{i=1}^I \sum_{j=1}^J n_{ij}\) = total keseluruhan observasi
Bentuk paling sederhana dan paling sering digunakan adalah tabel 2×2, yang melibatkan dua variabel dengan masing-masing dua kategori. Misalkan kita memiliki variabel X (baris) dan Y (kolom):
Struktur Tabel 2×2:
| Y = 1 | Y = 2 | Total | |
|---|---|---|---|
| X = 1 | a | b | a + b |
| X = 2 | c | d | c + d |
| Total | a + c | b + d | n |
Contoh Numerik: Hubungan Merokok dengan Kanker Paru
| Kanker | Tidak Kanker | Total | |
|---|---|---|---|
| Perokok | 60 | 40 | 100 |
| Bukan Perokok | 20 | 80 | 100 |
| Total | 80 | 120 | 200 |
Joint distribution atau distribusi bersama menunjukkan probabilitas sebuah observasi secara simultan berada pada kategori baris ke-i dan kolom ke-j. Probabilitas bersama dihitung dengan membagi frekuensi setiap sel dengan total keseluruhan observasi.
\[p_{ij} = \frac{n_{ij}}{n}\]
Sifat-sifat joint distribution: 1. \(0 \leq p_{ij} \leq 1\) untuk semua i, j 2. \(\sum_{i=1}^I \sum_{j=1}^J p_{ij} = 1\)
Contoh Perhitungan:
Dari tabel merokok vs kanker paru:
| Kanker | Tidak Kanker | Total | |
|---|---|---|---|
| Perokok | 60/200 = 0.30 | 40/200 = 0.20 | 0.50 |
| Bukan Perokok | 20/200 = 0.10 | 80/200 = 0.40 | 0.50 |
| Total | 0.40 | 0.60 | 1.00 |
Interpretasi: - \(p_{11} = 0.30\): Probabilitas seorang individu adalah perokok DAN menderita kanker paru - \(p_{12} = 0.20\): Probabilitas perokok DAN tidak kanker - \(p_{21} = 0.10\): Probabilitas bukan perokok DAN kanker - \(p_{22} = 0.40\): Probabilitas bukan perokok DAN tidak kanker
Marginal distribution adalah distribusi probabilitas dari satu variabel saja, dengan mengabaikan variabel lainnya. Distribusi ini diperoleh dengan menjumlahkan probabilitas bersama sesuai dengan baris atau kolom yang diinginkan.
\[p_{i.} = \frac{n_{i.}}{n} = \sum_{j=1}^J p_{ij}\]
Ini adalah probabilitas observasi berada pada baris ke-i, tanpa memperhatikan kategori kolomnya.
Contoh: - \(p_{1.} = 0.30 + 0.20 = 0.50\): Probabilitas seseorang adalah perokok - \(p_{2.} = 0.10 + 0.40 = 0.50\): Probabilitas seseorang bukan perokok
\[p_{.j} = \frac{n_{.j}}{n} = \sum_{i=1}^I p_{ij}\]
Ini adalah probabilitas observasi berada pada kolom ke-j, tanpa memperhatikan kategori barisnya.
Contoh: - \(p_{.1} = 0.30 + 0.10 = 0.40\): Probabilitas seseorang menderita kanker paru - \(p_{.2} = 0.20 + 0.40 = 0.60\): Probabilitas seseorang tidak menderita kanker paru
Conditional probability adalah probabilitas suatu kejadian terjadi, dengan syarat kejadian lain telah terjadi. Dalam tabel kontingensi, ini berarti probabilitas berada pada suatu kategori dari satu variabel, diberikan bahwa kita tahu observasi tersebut berada pada kategori tertentu dari variabel lainnya.
\[P(Y = j | X = i) = \frac{P(X = i, Y = j)}{P(X = i)} = \frac{p_{ij}}{p_{i.}} = \frac{n_{ij}}{n_{i.}}\]
Contoh: - \(P(\text{Kanker} | \text{Perokok}) = \frac{60}{100} = 0.60\) Interpretasi: 60% perokok menderita kanker paru - \(P(\text{Tidak Kanker} | \text{Perokok}) = \frac{40}{100} = 0.40\) - \(P(\text{Kanker} | \text{Bukan Perokok}) = \frac{20}{100} = 0.20\) - \(P(\text{Tidak Kanker} | \text{Bukan Perokok}) = \frac{80}{100} = 0.80\)
\[P(X = i | Y = j) = \frac{P(X = i, Y = j)}{P(Y = j)} = \frac{p_{ij}}{p_{.j}} = \frac{n_{ij}}{n_{.j}}\]
Contoh: - \(P(\text{Perokok} | \text{Kanker}) = \frac{60}{80} = 0.75\) Interpretasi: 75% penderita kanker adalah perokok - \(P(\text{Bukan Perokok} | \text{Kanker}) = \frac{20}{80} = 0.25\) - \(P(\text{Perokok} | \text{Tidak Kanker}) = \frac{40}{120} = 0.333\) - \(P(\text{Bukan Perokok} | \text{Tidak Kanker}) = \frac{80}{120} = 0.667\)
Ketiga jenis distribusi ini saling terkait melalui hukum probabilitas total dan teorema Bayes.
\[P(Y = j) = \sum_{i=1}^I P(Y = j | X = i) \times P(X = i)\]
Contoh: \(P(\text{Kanker}) = 0.60 \times 0.50 + 0.20 \times 0.50 = 0.30 + 0.10 = 0.40\)
\[P(X = i | Y = j) = \frac{P(Y = j | X = i) \times P(X = i)}{P(Y = j)}\]
Contoh: \(P(\text{Perokok} | \text{Kanker}) = \frac{0.60 \times 0.50}{0.40} = \frac{0.30}{0.40} = 0.75\)
Untuk tiga variabel (X, Y, Z) dengan masing-masing I, J, K kategori, struktur tabelnya adalah:
\[n_{ijk} = \text{frekuensi untuk X=i, Y=j, Z=k}\]
Contoh: Hubungan Merokok, Kanker Paru, dan Usia
| Usia < 50 | Usia ≥ 50 | ||||
|---|---|---|---|---|---|
| Kanker | Tidak | Kanker | Tidak | ||
| Perokok | 20 | 30 | 40 | 10 | |
| Bukan Perokok | 5 | 45 | 15 | 35 |
Untuk tabel berdimensi tinggi, analisis yang umum digunakan: - Model log-linear: Untuk mempelajari pola asosiasi kompleks - Regresi logistik: Untuk pemodelan dengan variabel respons biner - Analisis korespondensi: Untuk visualisasi hubungan
Ukuran asosiasi adalah statistik yang digunakan untuk mengkuantifikasi kekuatan dan arah hubungan antara dua variabel kategorik. Dalam tabel kontingensi 2×2, terdapat beberapa ukuran asosiasi yang umum digunakan, masing-masing dengan interpretasi dan aplikasi yang berbeda.
Odds adalah rasio antara probabilitas suatu kejadian terjadi dengan probabilitas kejadian tersebut tidak terjadi. Jika \(\pi\) adalah probabilitas sukses (kejadian terjadi), maka odds didefinisikan sebagai:
\[\text{Odds} = \frac{\pi}{1-\pi}\]
Sifat-sifat Odds: - Odds berkisar dari 0 hingga \(\infty\) - Odds = 1 ketika \(\pi = 0.5\) (probabilitas sukses sama dengan gagal) - Odds > 1 ketika \(\pi > 0.5\) (sukses lebih mungkin) - Odds < 1 ketika \(\pi < 0.5\) (gagal lebih mungkin)
Dalam konteks tabel kontingensi 2×2, kita dapat menghitung odds untuk setiap kelompok:
Odds untuk Kelompok Terpapar (X = 1):
\[\text{Odds}_1 = \frac{P(Y=1 | X=1)}{P(Y=2 | X=1)} = \frac{\pi_1}{1-\pi_1} = \frac{n_{11}/n_{1.}}{n_{12}/n_{1.}} = \frac{n_{11}}{n_{12}}\]
Odds untuk Kelompok Tidak Terpapar (X = 2):
\[\text{Odds}_2 = \frac{P(Y=1 | X=2)}{P(Y=2 | X=2)} = \frac{\pi_2}{1-\pi_2} = \frac{n_{21}/n_{2.}}{n_{22}/n_{2.}} = \frac{n_{21}}{n_{22}}\]
Menggunakan data merokok vs kanker paru:
| Kanker | Tidak Kanker | Total | |
|---|---|---|---|
| Perokok | 60 | 40 | 100 |
| Bukan Perokok | 20 | 80 | 100 |
Odds Kanker pada Perokok: \[\text{Odds}_{\text{perokok}} = \frac{60}{40} = 1.5\]
Interpretasi: Perokok memiliki kecenderungan 1.5 kali lebih besar untuk menderita kanker dibandingkan tidak menderita kanker.
Odds Kanker pada Bukan Perokok: \[\text{Odds}_{\text{bukan perokok}} = \frac{20}{80} = 0.25\]
Interpretasi: Bukan perokok memiliki kecenderungan 0.25 kali (atau 1/4 kali) untuk menderita kanker dibandingkan tidak menderita kanker.
Odds Ratio (OR) adalah ukuran asosiasi yang membandingkan odds suatu kejadian pada kelompok terpapar dengan odds pada kelompok tidak terpapar.
\[OR = \frac{\text{Odds}_1}{\text{Odds}_2} = \frac{n_{11}/n_{12}}{n_{21}/n_{22}} = \frac{n_{11} \times n_{22}}{n_{12} \times n_{21}}\]
Dalam notasi alternatif dengan a, b, c, d:
\[OR = \frac{a \times d}{b \times c}\]
Interval kepercayaan 95% untuk OR dihitung menggunakan pendekatan log-normal:
\[\ln(OR) \pm 1.96 \times SE(\ln(OR))\]
di mana standard error dari log OR adalah:
\[SE(\ln(OR)) = \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}}\]
Kemudian eksponensialkan batas-batas untuk mendapatkan interval kepercayaan dalam skala OR.
Langkah 1: Hitung OR
\[OR = \frac{60 \times 80}{40 \times 20} = \frac{4800}{800} = 6.0\]
Langkah 2: Hitung ln(OR) dan SE
\[\ln(OR) = \ln(6.0) = 1.7918\]
\[SE = \sqrt{\frac{1}{60} + \frac{1}{40} + \frac{1}{20} + \frac{1}{80}} = \sqrt{0.0167 + 0.025 + 0.05 + 0.0125} = \sqrt{0.1042} = 0.3228\]
Langkah 3: Hitung interval kepercayaan 95% untuk ln(OR)
Batas bawah = \(1.7918 - 1.96 \times 0.3228 = 1.7918 - 0.6327 = 1.1591\) Batas atas = \(1.7918 + 1.96 \times 0.3228 = 1.7918 + 0.6327 = 2.4245\)
Langkah 4: Eksponensialkan
\(OR_{lower} = e^{1.1591} = 3.19\) \(OR_{upper} = e^{2.4245} = 11.29\)
Interpretasi: Odds Ratio = 6.0 dengan interval kepercayaan 95% (3.19; 11.29). Ini berarti perokok memiliki odds menderita kanker paru 6 kali lebih besar dibandingkan bukan perokok. Karena interval kepercayaan tidak mencakup 1, hubungan ini signifikan secara statistik.
Relative Risk (RR), juga dikenal sebagai risk ratio, membandingkan probabilitas (risiko) suatu kejadian pada kelompok terpapar dengan probabilitas pada kelompok tidak terpapar.
\[RR = \frac{P(Y=1 | X=1)}{P(Y=1 | X=2)} = \frac{\pi_1}{\pi_2} = \frac{n_{11}/n_{1.}}{n_{21}/n_{2.}}\]
OR dan RR memiliki hubungan matematis:
\[OR = RR \times \frac{1-\pi_2}{1-\pi_1}\]
Ketika kejadian langka (rare disease assumption): Jika \(\pi_1\) dan \(\pi_2\) kecil (< 0.10), maka:
\[OR \approx RR\]
Menggunakan data yang sama:
Langkah 1: Hitung risiko masing-masing kelompok
\(\pi_1 = \frac{60}{100} = 0.60\) (risiko kanker pada perokok) \(\pi_2 = \frac{20}{100} = 0.20\) (risiko kanker pada bukan perokok)
Langkah 2: Hitung RR
\[RR = \frac{0.60}{0.20} = 3.0\]
Interpretasi: Perokok memiliki risiko menderita kanker paru 3 kali lebih besar dibandingkan bukan perokok.
Langkah 3: Hitung interval kepercayaan RR
\[SE(\ln(RR)) = \sqrt{\frac{1-\pi_1}{n_{11}} + \frac{1-\pi_2}{n_{21}}}\]
\[SE(\ln(RR)) = \sqrt{\frac{0.40}{60} + \frac{0.80}{20}} = \sqrt{0.00667 + 0.04} = \sqrt{0.04667} = 0.2160\]
\(\ln(RR) = \ln(3.0) = 1.0986\)
IK 95% untuk ln(RR): \(1.0986 \pm 1.96 \times 0.2160 = 1.0986 \pm 0.4234 = (0.6752; 1.5220)\)
Eksponensialkan: \(RR_{lower} = e^{0.6752} = 1.96\) \(RR_{upper} = e^{1.5220} = 4.58\)
| Karakteristik | Odds Ratio (OR) | Relative Risk (RR) |
|---|---|---|
| Interpretasi | Perbandingan odds | Perbandingan risiko |
| Range nilai | 0 - ∞ | 0 - ∞ |
| Simetri | Simetris | Tidak simetris |
| Studi kasus-kontrol | Dapat dihitung | Tidak dapat dihitung |
| Studi kohort | Dapat dihitung | Dapat dihitung |
| Kejadian langka | Mendekati RR | - |
| Kejadian umum | Berbeda dengan RR | - |
\[RD = \pi_1 - \pi_2\]
Mengukur perbedaan absolut risiko antara dua kelompok.
Contoh: \(RD = 0.60 - 0.20 = 0.40\) Interpretasi: Perokok memiliki risiko 40% lebih tinggi untuk menderita kanker.
\[NNT = \frac{1}{|RD|}\]
Mengukur berapa banyak individu yang perlu diberi perlakuan untuk mencegah satu kejadian.
\[AR = \frac{\pi_1 - \pi_2}{\pi_1}\]
Proporsi kejadian pada kelompok terpapar yang disebabkan oleh paparan.
Seorang peneliti melakukan uji klinis untuk menguji efektivitas vaksin baru dalam mencegah infeksi virus. Studi ini melibatkan 200 partisipan yang dibagi secara acak menjadi dua kelompok:
Setelah periode observasi 6 bulan, dicatat jumlah partisipan yang terinfeksi dan tidak terinfeksi dalam masing-masing kelompok. Data yang diperoleh adalah sebagai berikut:
| Kelompok | Terinfeksi | Tidak Terinfeksi | Total |
|---|---|---|---|
| Vaksin | 15 | 85 | 100 |
| Plasebo | 45 | 55 | 100 |
| Total | 60 | 140 | 200 |
Kita identifikasi komponen tabel:
Tabel Kontingensi Lengkap:
| Terinfeksi | Tidak Terinfeksi | Total Baris | |
|---|---|---|---|
| Vaksin | 15 | 85 | 100 |
| Plasebo | 45 | 55 | 100 |
| Total Kolom | 60 | 140 | 200 |
Risiko infeksi pada kelompok Vaksin: \[P(\text{Infeksi} | \text{Vaksin}) = \frac{15}{100} = 0.15 \text{ atau } 15\%\]
Risiko infeksi pada kelompok Plasebo: \[P(\text{Infeksi} | \text{Plasebo}) = \frac{45}{100} = 0.45 \text{ atau } 45\%\]
Probabilitas tidak terinfeksi: - \(P(\text{Tidak Infeksi} | \text{Vaksin}) = \frac{85}{100} = 0.85\) atau 85% - \(P(\text{Tidak Infeksi} | \text{Plasebo}) = \frac{55}{100} = 0.55\) atau 55%
Proporsi kelompok vaksin di antara yang terinfeksi: \[P(\text{Vaksin} | \text{Infeksi}) = \frac{15}{60} = 0.25 \text{ atau } 25\%\]
Proporsi kelompok plasebo di antara yang terinfeksi: \[P(\text{Plasebo} | \text{Infeksi}) = \frac{45}{60} = 0.75 \text{ atau } 75\%\]
Proporsi di antara yang tidak terinfeksi: - \(P(\text{Vaksin} | \text{Tidak Infeksi}) = \frac{85}{140} = 0.607\) atau 60.7% - \(P(\text{Plasebo} | \text{Tidak Infeksi}) = \frac{55}{140} = 0.393\) atau 39.3%
\[\text{Odds}_{\text{vaksin}} = \frac{P(\text{Infeksi} | \text{Vaksin})}{P(\text{Tidak Infeksi} | \text{Vaksin})} = \frac{0.15}{0.85} = \frac{15}{85} = 0.1765\]
Interpretasi: Pada kelompok vaksin, kecenderungan untuk terinfeksi adalah 0.1765 kali dibandingkan tidak terinfeksi. Dengan kata lain, perbandingan terinfeksi : tidak terinfeksi adalah 15 : 85 atau sekitar 1 : 5.67.
\[\text{Odds}_{\text{plasebo}} = \frac{P(\text{Infeksi} | \text{Plasebo})}{P(\text{Tidak Infeksi} | \text{Plasebo})} = \frac{0.45}{0.55} = \frac{45}{55} = 0.8182\]
Interpretasi: Pada kelompok plasebo, kecenderungan untuk terinfeksi adalah 0.8182 kali dibandingkan tidak terinfeksi. Perbandingan terinfeksi : tidak terinfeksi adalah 45 : 55 atau sekitar 1 : 1.22.
\[OR = \frac{\text{Odds}_{\text{vaksin}}}{\text{Odds}_{\text{plasebo}}} = \frac{0.1765}{0.8182} = 0.2157\]
Atau menggunakan rumus langsung:
\[OR = \frac{a \times d}{b \times c} = \frac{15 \times 55}{85 \times 45} = \frac{825}{3825} = 0.2157\]
Langkah 1: Hitung logaritma natural OR \[\ln(OR) = \ln(0.2157) = -1.533\]
Langkah 2: Hitung standard error \[SE(\ln(OR)) = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}}\]
\[SE(\ln(OR)) = \sqrt{\frac{1}{15} + \frac{1}{85} + \frac{1}{45} + \frac{1}{55}}\]
\[SE(\ln(OR)) = \sqrt{0.06667 + 0.01176 + 0.02222 + 0.01818}\]
\[SE(\ln(OR)) = \sqrt{0.11883} = 0.3447\]
Langkah 3: Hitung interval kepercayaan 95% untuk ln(OR) \[-1.533 \pm 1.96 \times 0.3447 = -1.533 \pm 0.6756\]
Batas bawah = \(-1.533 - 0.6756 = -2.2086\) Batas atas = \(-1.533 + 0.6756 = -0.8574\)
Langkah 4: Eksponensialkan untuk mendapatkan IK OR \[OR_{lower} = e^{-2.2086} = 0.110\] \[OR_{upper} = e^{-0.8574} = 0.424\]
Hasil: \(OR = 0.216\) dengan IK 95% \((0.110; 0.424)\)
Odds Ratio sebesar 0.216 (< 1) menunjukkan bahwa pemberian vaksin berasosiasi dengan penurunan odds infeksi. Secara spesifik:
\[RR = \frac{P(\text{Infeksi} | \text{Vaksin})}{P(\text{Infeksi} | \text{Plasebo})} = \frac{0.15}{0.45} = 0.3333\]
Langkah 1: Hitung logaritma natural RR \[\ln(RR) = \ln(0.3333) = -1.0986\]
Langkah 2: Hitung standard error \[SE(\ln(RR)) = \sqrt{\frac{1-\pi_1}{n_{11}} + \frac{1-\pi_2}{n_{21}}}\]
\[SE(\ln(RR)) = \sqrt{\frac{0.85}{15} + \frac{0.55}{45}} = \sqrt{0.05667 + 0.01222} = \sqrt{0.06889} = 0.2625\]
Langkah 3: Hitung interval kepercayaan untuk ln(RR) \[-1.0986 \pm 1.96 \times 0.2625 = -1.0986 \pm 0.5145\]
Batas bawah = \(-1.0986 - 0.5145 = -1.6131\) Batas atas = \(-1.0986 + 0.5145 = -0.5841\)
Langkah 4: Eksponensialkan \[RR_{lower} = e^{-1.6131} = 0.199\] \[RR_{upper} = e^{-0.5841} = 0.557\]
Hasil: \(RR = 0.333\) dengan IK 95% \((0.199; 0.557)\)
Relative Risk sebesar 0.333 menunjukkan bahwa:
\[RD = \pi_1 - \pi_2 = 0.15 - 0.45 = -0.30\]
Interpretasi: Vaksin menurunkan risiko absolut infeksi sebesar 30 persen poin dibandingkan plasebo.
\[NNT = \frac{1}{|RD|} = \frac{1}{0.30} = 3.33\]
Interpretasi: Diperlukan sekitar 3-4 orang yang divaksin untuk mencegah 1 kasus infeksi.
\[AF = \frac{\pi_2 - \pi_1}{\pi_2} = \frac{0.45 - 0.15}{0.45} = \frac{0.30}{0.45} = 0.667\]
Interpretasi: Sebesar 66.7% kasus infeksi pada kelompok plasebo dapat dicegah dengan vaksinasi.
Hipotesis: - \(H_0\): Tidak ada hubungan antara vaksinasi dan status infeksi - \(H_1\): Ada hubungan antara vaksinasi dan status infeksi
Langkah 1: Hitung frekuensi ekspektasi
\[E_{ij} = \frac{n_{i.} \times n_{.j}}{n}\]
\[E_{11} = \frac{100 \times 60}{200} = 30\] \[E_{12} = \frac{100 \times 140}{200} = 70\] \[E_{21} = \frac{100 \times 60}{200} = 30\] \[E_{22} = \frac{100 \times 140}{200} = 70\]
Langkah 2: Hitung statistik Chi-Square
\[\chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}}\]
\[\chi^2 = \frac{(15-30)^2}{30} + \frac{(85-70)^2}{70} + \frac{(45-30)^2}{30} + \frac{(55-70)^2}{70}\]
\[\chi^2 = \frac{225}{30} + \frac{225}{70} + \frac{225}{30} + \frac{225}{70}\]
\[\chi^2 = 7.5 + 3.214 + 7.5 + 3.214 = 21.428\]
Langkah 3: Bandingkan dengan nilai kritis
df = (2-1)(2-1) = 1 \(\chi^2_{0.05,1} = 3.841\)
Karena \(\chi^2_{hitung} = 21.428 > 3.841\), tolak \(H_0\).
Langkah 4: Hitung p-value
Menggunakan distribusi Chi-Square dengan df=1: \(p-value = P(\chi^2_1 > 21.428) < 0.0001\)
Kesimpulan: Terdapat hubungan yang sangat signifikan antara vaksinasi dan status infeksi.
# Membersihkan environment
rm(list = ls())
# Memuat library yang diperlukan
library(epitools)
library(vcd)
library(gmodels)
library(ggplot2)
# Menampilkan informasi sesi
sessionInfo()## R version 4.4.1 (2024-06-14 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=English_United States.utf8
## [2] LC_CTYPE=English_United States.utf8
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.utf8
##
## time zone: Asia/Bangkok
## tzcode source: internal
##
## attached base packages:
## [1] grid stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] ggplot2_3.5.2 gmodels_2.19.1 vcd_1.4-13 epitools_0.5-10.1
##
## loaded via a namespace (and not attached):
## [1] gtable_0.3.6 jsonlite_2.0.0 dplyr_1.1.4 compiler_4.4.1
## [5] gtools_3.9.5 tidyselect_1.2.1 jquerylib_0.1.4 scales_1.4.0
## [9] yaml_2.3.10 fastmap_1.2.0 lattice_0.22-6 R6_2.6.1
## [13] generics_0.1.4 lmtest_0.9-40 knitr_1.50 MASS_7.3-60.2
## [17] tibble_3.3.0 bslib_0.9.0 pillar_1.11.0 RColorBrewer_1.1-3
## [21] rlang_1.1.6 cachem_1.1.0 xfun_0.53 sass_0.4.10
## [25] cli_3.6.5 withr_3.0.2 magrittr_2.0.3 digest_0.6.37
## [29] rstudioapi_0.17.1 gdata_3.0.1 lifecycle_1.0.4 vctrs_0.6.5
## [33] evaluate_1.0.5 glue_1.8.0 farver_2.1.2 zoo_1.8-14
## [37] colorspace_2.1-1 rmarkdown_2.29 tools_4.4.1 pkgconfig_2.0.3
## [41] htmltools_0.5.8.1
# Membuat data vaksinasi
data_vaksin <- matrix(c(15, 85, 45, 55),
nrow = 2,
byrow = TRUE,
dimnames = list(
Kelompok = c("Vaksin", "Plasebo"),
Status = c("Terinfeksi", "Tidak_Terinfeksi")
))
# Menampilkan tabel
cat("=== TABEL KONTINGENSI: VAKSIN VS INFEKSI ===\n")## === TABEL KONTINGENSI: VAKSIN VS INFEKSI ===
## Status
## Kelompok Terinfeksi Tidak_Terinfeksi
## Vaksin 15 85
## Plasebo 45 55
# Menghitung total baris dan kolom
total_baris <- rowSums(data_vaksin)
total_kolom <- colSums(data_vaksin)
total_keseluruhan <- sum(data_vaksin)
cat("\n=== TOTAL ===\n")##
## === TOTAL ===
## Total Baris (Vaksin, Plasebo): 100 100
## Total Kolom (Terinfeksi, Tidak Terinfeksi): 60 140
## Total Observasi: 200
# Membuat tabel dalam format data.frame untuk visualisasi
df_vaksin <- as.data.frame(as.table(data_vaksin))
names(df_vaksin) <- c("Kelompok", "Status", "Frekuensi")
print(df_vaksin)## Kelompok Status Frekuensi
## 1 Vaksin Terinfeksi 15
## 2 Plasebo Terinfeksi 45
## 3 Vaksin Tidak_Terinfeksi 85
## 4 Plasebo Tidak_Terinfeksi 55
# Barplot stacked
ggplot(df_vaksin, aes(x = Kelompok, y = Frekuensi, fill = Status)) +
geom_bar(stat = "identity", position = "stack") +
labs(title = "Distribusi Infeksi Berdasarkan Kelompok Vaksinasi",
x = "Kelompok", y = "Jumlah") +
theme_minimal() +
scale_fill_manual(values = c("Terinfeksi" = "red", "Tidak_Terinfeksi" = "green"))# Barplot side-by-side
ggplot(df_vaksin, aes(x = Kelompok, y = Frekuensi, fill = Status)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Perbandingan Infeksi Antar Kelompok",
x = "Kelompok", y = "Jumlah") +
theme_minimal() +
scale_fill_manual(values = c("Terinfeksi" = "red", "Tidak_Terinfeksi" = "green"))# Mosaic plot
mosaicplot(data_vaksin,
main = "Mosaic Plot: Vaksin vs Infeksi",
color = c("red", "green"),
xlab = "Kelompok", ylab = "Status Infeksi")# Menghitung probabilitas bersyarat (risiko)
risiko_vaksin <- data_vaksin[1,1] / sum(data_vaksin[1,])
risiko_plasebo <- data_vaksin[2,1] / sum(data_vaksin[2,])
cat("=== RISIKO INFEKSI ===\n")## === RISIKO INFEKSI ===
## Risiko infeksi pada kelompok Vaksin: 15 %
## Risiko infeksi pada kelompok Plasebo: 45 %
# Probabilitas tidak terinfeksi
risiko_tidak_vaksin <- data_vaksin[1,2] / sum(data_vaksin[1,])
risiko_tidak_plasebo <- data_vaksin[2,2] / sum(data_vaksin[2,])
cat("\n=== PROBABILITAS TIDAK TERINFEKSI ===\n")##
## === PROBABILITAS TIDAK TERINFEKSI ===
## Probabilitas tidak infeksi (Vaksin): 85 %
## Probabilitas tidak infeksi (Plasebo): 55 %
# Conditional probability baris diberikan kolom
prop_terinfeksi_vaksin <- data_vaksin[1,1] / sum(data_vaksin[,1])
prop_terinfeksi_plasebo <- data_vaksin[2,1] / sum(data_vaksin[,1])
cat("\n=== PROPORSI DI ANTARA YANG TERINFEKSI ===\n")##
## === PROPORSI DI ANTARA YANG TERINFEKSI ===
## Proporsi Vaksin di antara terinfeksi: 25 %
## Proporsi Plasebo di antara terinfeksi: 75 %
# Tabel probabilitas
prob_table <- prop.table(data_vaksin)
cat("\n=== TABEL PROBABILITAS BERSAMA ===\n")##
## === TABEL PROBABILITAS BERSAMA ===
## Status
## Kelompok Terinfeksi Tidak_Terinfeksi
## Vaksin 0.075 0.425
## Plasebo 0.225 0.275
# Distribusi marjinal
marjinal_baris <- margin.table(prob_table, 1)
marjinal_kolom <- margin.table(prob_table, 2)
cat("\n=== DISTRIBUSI MARJINAL ===\n")##
## === DISTRIBUSI MARJINAL ===
## Distribusi marjinal Kelompok:
## Kelompok
## Vaksin Plasebo
## 0.5 0.5
##
## Distribusi marjinal Status Infeksi:
## Status
## Terinfeksi Tidak_Terinfeksi
## 0.3 0.7
# Menghitung odds secara manual
odds_vaksin <- data_vaksin[1,1] / data_vaksin[1,2]
odds_plasebo <- data_vaksin[2,1] / data_vaksin[2,2]
cat("=== ODDS INFEKSI ===\n")## === ODDS INFEKSI ===
## Odds infeksi (Vaksin): 0.1765
## Odds infeksi (Plasebo): 0.8182
# Menghitung Odds Ratio manual
OR_manual <- (data_vaksin[1,1] * data_vaksin[2,2]) / (data_vaksin[1,2] * data_vaksin[2,1])
cat("\n=== ODDS RATIO (MANUAL) ===\n")##
## === ODDS RATIO (MANUAL) ===
## Odds Ratio: 0.2157
# Menggunakan fungsi oddsratio dari epitools
OR_epitools <- oddsratio(data_vaksin)
cat("\n=== ODDS RATIO (EPITOOLS) ===\n")##
## === ODDS RATIO (EPITOOLS) ===
## log odds ratios for Kelompok and Status
##
## [1] -1.53393
# Menghitung interval kepercayaan secara manual
log_OR <- log(OR_manual)
se_log_OR <- sqrt(sum(1/data_vaksin))
ci_log_OR_lower <- log_OR - 1.96 * se_log_OR
ci_log_OR_upper <- log_OR + 1.96 * se_log_OR
ci_OR_lower <- exp(ci_log_OR_lower)
ci_OR_upper <- exp(ci_log_OR_upper)
cat("\n=== INTERVAL KEPERCAYAAN OR 95% ===\n")##
## === INTERVAL KEPERCAYAAN OR 95% ===
## Batas bawah: 0.11
## Batas atas: 0.424
# Menghitung Relative Risk manual
RR_manual <- risiko_vaksin / risiko_plasebo
cat("=== RELATIVE RISK (MANUAL) ===\n")## === RELATIVE RISK (MANUAL) ===
## Relative Risk: 0.3333
# Menggunakan fungsi riskratio dari epitools
RR_epitools <- riskratio(data_vaksin)
cat("\n=== RELATIVE RISK (EPITOOLS) ===\n")##
## === RELATIVE RISK (EPITOOLS) ===
## $data
## Status
## Kelompok Terinfeksi Tidak_Terinfeksi Total
## Vaksin 15 85 100
## Plasebo 45 55 100
## Total 60 140 200
##
## $measure
## risk ratio with 95% C.I.
## Kelompok estimate lower upper
## Vaksin 1.0000000 NA NA
## Plasebo 0.6470588 0.5321714 0.7867487
##
## $p.value
## two-sided
## Kelompok midp.exact fisher.exact chi.square
## Vaksin NA NA NA
## Plasebo 3.336177e-06 5.547277e-06 3.672575e-06
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
# Interval kepercayaan RR manual
log_RR <- log(RR_manual)
se_log_RR <- sqrt((1 - risiko_vaksin)/data_vaksin[1,1] + (1 - risiko_plasebo)/data_vaksin[2,1])
ci_log_RR_lower <- log_RR - 1.96 * se_log_RR
ci_log_RR_upper <- log_RR + 1.96 * se_log_RR
ci_RR_lower <- exp(ci_log_RR_lower)
ci_RR_upper <- exp(ci_log_RR_upper)
cat("\n=== INTERVAL KEPERCAYAAN RR 95% ===\n")##
## === INTERVAL KEPERCAYAAN RR 95% ===
## Batas bawah: 0.199
## Batas atas: 0.558
## === RISK DIFFERENCE ===
## Risk Difference: -0.3
##
## === NUMBER NEEDED TO TREAT ===
## NNT: 3.33
# Attributable Fraction
AF <- (risiko_plasebo - risiko_vaksin) / risiko_plasebo
cat("\n=== ATTRIBUTABLE FRACTION ===\n")##
## === ATTRIBUTABLE FRACTION ===
## Attributable Fraction: 66.67 %
# Uji Chi-Square tanpa koreksi Yates
chi_test <- chisq.test(data_vaksin, correct = FALSE)
cat("=== UJI CHI-SQUARE (TANPA KOREKSI YATES) ===\n")## === UJI CHI-SQUARE (TANPA KOREKSI YATES) ===
##
## Pearson's Chi-squared test
##
## data: data_vaksin
## X-squared = 21.429, df = 1, p-value = 3.673e-06
##
## Frekuensi Ekspektasi:
## Status
## Kelompok Terinfeksi Tidak_Terinfeksi
## Vaksin 30 70
## Plasebo 30 70
##
## Residual Pearson:
## Status
## Kelompok Terinfeksi Tidak_Terinfeksi
## Vaksin -2.74 1.79
## Plasebo 2.74 -1.79
# Uji Chi-Square dengan koreksi Yates
chi_test_yates <- chisq.test(data_vaksin, correct = TRUE)
cat("\n=== UJI CHI-SQUARE (DENGAN KOREKSI YATES) ===\n")##
## === UJI CHI-SQUARE (DENGAN KOREKSI YATES) ===
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data_vaksin
## X-squared = 20.024, df = 1, p-value = 7.648e-06
# Uji Fisher Exact (untuk sampel kecil)
fisher_test <- fisher.test(data_vaksin)
cat("\n=== UJI FISHER EXACT ===\n")##
## === UJI FISHER EXACT ===
##
## Fisher's Exact Test for Count Data
##
## data: data_vaksin
## p-value = 5.547e-06
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 0.1021559 0.4423613
## sample estimates:
## odds ratio
## 0.2174188
# Load library
library(vcd)
# Hitung statistik asosiasi
assoc_stats <- assocstats(data_vaksin)
# Tampilkan hasil lengkap
cat("\n========================================\n")##
## ========================================
## STATISTIK ASOSIASI
## ========================================
## X^2 df P(> X^2)
## Likelihood Ratio 22.176 1 2.4875e-06
## Pearson 21.429 1 3.6726e-06
##
## Phi-Coefficient : 0.327
## Contingency Coeff.: 0.311
## Cramer's V : 0.327
##
## ========================================
## UKURAN ASOSIASI
## ========================================
## Phi Coefficient : 0.3273
# Contingency coefficient
cont_coef <- assoc_stats$contingency
cat("Contingency Coefficient :", round(cont_coef, 4), "\n")## Contingency Coefficient : 0.3111
## Cramer's V : 0.3273
##
## ========================================
# Membuat laporan ringkas dalam format tabel
library(knitr)
cat("=== TABEL RINGKASAN HASIL ANALISIS ===\n\n")## === TABEL RINGKASAN HASIL ANALISIS ===
tabel_ringkasan <- data.frame(
Kelompok = c("Vaksin", "Plasebo"),
Terinfeksi = c(data_vaksin[1,1], data_vaksin[2,1]),
Tidak_Terinfeksi = c(data_vaksin[1,2], data_vaksin[2,2]),
Total = c(100, 100),
Risiko = c(risiko_vaksin, risiko_plasebo),
Odds = c(odds_vaksin, odds_plasebo)
)
kable(tabel_ringkasan,
caption = "Ringkasan Data dan Ukuran Dasar",
digits = 3)| Kelompok | Terinfeksi | Tidak_Terinfeksi | Total | Risiko | Odds |
|---|---|---|---|---|---|
| Vaksin | 15 | 85 | 100 | 0.15 | 0.176 |
| Plasebo | 45 | 55 | 100 | 0.45 | 0.818 |
Berdasarkan hasil analisis menggunakan R pada Bagian 5, kita memperoleh beberapa temuan statistik penting:
Hasil: \(OR = 0.216\) dengan interval kepercayaan 95% \((0.110; 0.424)\)
Interpretasi Statistik: - Odds Ratio < 1 menunjukkan hubungan negatif antara vaksinasi dan infeksi - Kelompok vaksin memiliki odds terinfeksi 0.216 kali dibandingkan kelompok plasebo - Penurunan odds infeksi sebesar \((1 - 0.216) \times 100\% = 78.4\%\) - Interval kepercayaan tidak mencakup nilai 1, sehingga hubungan signifikan secara statistik pada α = 0.05
Hasil: \(RR = 0.333\) dengan interval kepercayaan 95% \((0.199; 0.557)\)
Interpretasi Statistik: - Relative Risk < 1 menunjukkan efek protektif dari vaksin - Risiko infeksi pada kelompok vaksin hanya 33.3% dari risiko pada kelompok plasebo - Reduksi risiko relatif sebesar \((1 - 0.333) \times 100\% = 66.7\%\) - Interval kepercayaan tidak mencakup 1, mengkonfirmasi signifikansi
Hasil: \(\chi^2 = 21.428\), df = 1, p-value = \(3.7 \times 10^{-6}\)
Interpretasi Statistik: - Nilai Chi-Square yang besar menunjukkan penyimpangan yang signifikan dari independensi - p-value yang sangat kecil (< 0.001) memberikan bukti kuat untuk menolak hipotesis nol - Terdapat hubungan yang signifikan antara variabel vaksinasi dan status infeksi
Risk Difference (RD) = -0.30 - Vaksin menurunkan risiko absolut infeksi sebesar 30 persen poin
Number Needed to Treat (NNT) = 3.33 - Diperlukan 3-4 orang yang divaksin untuk mencegah 1 kasus infeksi - Nilai NNT yang kecil menunjukkan efektivitas vaksin yang tinggi
Attributable Fraction (AF) = 66.7% - Sebesar 66.7% kasus infeksi pada kelompok plasebo dapat dicegah dengan vaksinasi
Phi Coefficient = -0.327 - Menunjukkan korelasi negatif sedang antara vaksinasi dan infeksi
Studi ini merupakan uji klinis acak terkontrol plasebo (randomized controlled trial/RCT) untuk mengevaluasi efektivitas vaksin baru dalam mencegah infeksi virus.
Efektivitas Vaksin: Vaksin yang diuji terbukti sangat efektif dalam mencegah infeksi. Temuan utama:
Bagi Individu: - Vaksinasi sangat direkomendasikan karena memberikan perlindungan yang substansial
Bagi Tenaga Kesehatan: - Vaksin ini dapat dijadikan intervensi andalan dalam program pencegahan
Bagi Pembuat Kebijakan: - Hasil studi mendukung kebijakan vaksinasi massal
Berdasarkan analisis data kategorik yang komprehensif pada studi vaksin vs infeksi, dapat disimpulkan bahwa:
Agresti, A. (2013). Categorical Data Analysis (3rd ed.). Hoboken, NJ: John Wiley & Sons.
Fienberg, S. E. (2007). The Analysis of Cross-Classified Categorical Data (2nd ed.). New York: Springer.