Deskripsi

Dokumen ini membahas konsep dasar analisis data kategori dengan fokus pada penggunaan tabel kontingensi 2×2. Pembahasan meliputi definisi analisis data kategori, karakteristik variabel kategori, serta cara penyajian dan interpretasi hubungan antara dua variabel kategorik. Selain itu, disertakan pula contoh penerapan dalam konteks penelitian untuk memberikan gambaran mengenai penggunaan metode ini dalam analisis data.

1. Pendahuluan

1.1 Pengertian Analisis Data Kategori

Analisis data kategori merupakan metode statistik yang digunakan untuk menganalisis data yang berbentuk kategori atau klasifikasi, yaitu variabel yang memiliki skala pengukuran berupa sekumpulan kategori yang digunakan untuk mengklasifikasikan suatu objek, individu, atau kejadian ke dalam kelompok tertentu. Sebagai contoh, pandangan politik dapat dikategorikan sebagai liberal, moderat, atau konservatif. Variabel kategorik dapat dibedakan berdasarkan skala pengukurannya, yaitu nominal dan ordinal, serta berdasarkan jumlah kategorinya, yaitu biner (dikotomik) dan multikategori. Variabel nominal merupakan variabel kategori yang tidak memiliki urutan tertentu, sedangkan variabel ordinal memiliki urutan atau tingkatan antar kategori. Sementara itu, variabel biner hanya memiliki dua kategori, seperti ya dan tidak, sedangkan variabel multikategori memiliki lebih dari dua kategori, seperti pilihan tempat tinggal yang dapat berupa rumah, kondominium, atau apartemen.

1.2 Karakteristik Variabel Kategori

  1. Nilainya berupa kategori atau label, bukan angka yang menunjukkan besaran kuantitatif.
  2. Digunakan untuk mengklasifikasikan objek atau individu ke dalam kelompok tertentu.
  3. Dapat memiliki dua kategori (biner/dikotomik) atau lebih dari dua kategori (multikategori).
  4. Beberapa variabel memiliki urutan kategori (ordinal), sedangkan yang lain tidak memiliki urutan (nominal).

1.3 Contoh Penerapan Analisis Data Kategori

Analisis data kategori banyak digunakan dalam berbagai bidang penelitian. Beberapa contoh penerapannya adalah sebagai berikut:

  • Ilmu sosial: digunakan untuk mengukur sikap dan opini, misalnya klasifikasi pandangan politik seperti liberal, moderat, dan konservatif.
  • Ilmu kesehatan: digunakan untuk mengukur respons pasien, seperti apakah pasien selamat setelah operasi (ya/tidak), tingkat keparahan cedera (tidak ada, ringan, sedang, berat), atau tahap penyakit (awal, lanjut).
  • Ilmu perilaku: digunakan untuk mengklasifikasikan jenis gangguan mental seperti skizofrenia, depresi, dan neurosis.
  • Kesehatan masyarakat: digunakan untuk mengetahui perubahan perilaku masyarakat, misalnya apakah kesadaran tentang AIDS meningkatkan penggunaan kondom (ya/tidak).
  • Zoologi: digunakan untuk mengelompokkan jenis makanan utama hewan, misalnya makanan utama buaya berupa ikan, invertebrata, atau reptil.
  • Pendidikan: digunakan untuk mengklasifikasikan jawaban mahasiswa pada ujian menjadi benar atau salah.
  • Pemasaran: digunakan untuk menganalisis preferensi konsumen terhadap suatu produk, misalnya pilihan Merek A, Merek B, atau Merek C.

2. Tabel Kontingensi

2.1 Definisi Tabel Kontingensi

Tabel kontingensi adalah tabel yang menyajikan distribusi frekuensi dari dua atau lebih variabel kategorik secara simultan, sehingga setiap sel menunjukkan jumlah observasi pada setiap kombinasi kategori dari variabel-variabel tersebut. Tabel ini digunakan untuk melihat pola atau hubungan antar variabel kategorik.

2.2 Struktur Tabel Kontingensi

Struktur tabel kontingensi untuk dua variabel kategorik disajikan dalam bentuk tabel persegi panjang dengan \(I\) baris yang mewakili kategori variabel \(X\) dan \(J\) kolom yang mewakili variabel \(Y\). Setiap sel dalam tabel menunjukkan kombinasi kategori dari kedua variabel tersebut, sehingga terdapat \(I \times J\) kemungkinan kombinasi hasil. Berikut disajikan contoh tabel kontingensi dua arah yang menunjukkan kombinasi kategori dari dua variabel kategorik.

Tabel 1. Struktur Tabel Kontingensi 2×2

\(Y=1\) \(Y=0\) Total
\(X=1\) \(n_{11}\) \(n_{12}\) \(n_{1\cdot}\)
\(X=0\) \(n_{21}\) \(n_{22}\) \(n_{2\cdot}\)
Total \(n_{\cdot1}\) \(n_{\cdot2}\) \(n\)

dengan:

\(n_{ij} = \text{jumlah observasi pada kategori } X=i \text{ dan } Y=j\)

\(n = \sum_{i=1}^{2}\sum_{j=1}^{2} n_{ij}\)

2.3 Joint Distribution

Distribusi peluang bersama dinyatakan dengan \(\pi_{ij}\), yaitu peluang bahwa variabel \(X\) berada pada kategori ke-\(i\) dan variabel \(Y\) berada pada kategori ke-\(j\). Dalam praktiknya, nilai peluang tersebut dapat diestimasi menggunakan proporsi frekuensi pada setiap sel tabel kontingensi, yaitu

\[ \pi_{ij} = \frac{n_{ij}}{n} \]

dengan \(n_{ij}\) menyatakan jumlah observasi pada sel ke-\((i,j)\) dan \(n\) menyatakan jumlah total observasi.

2.4 Marginal Distribution

Distribusi peluang marginal merupakan distribusi peluang dari masing-masing variabel secara terpisah tanpa memperhatikan variabel lainnya. Pada tabel kontingensi, distribusi marginal diperoleh dengan menjumlahkan peluang pada setiap baris atau kolom.

Distribusi marginal untuk variabel \(X\) dinyatakan sebagai

\[ \pi_{i.} = \sum_{j=1}^{2} \pi_{ij}, \]

sedangkan distribusi marginal untuk variabel \(Y\) dinyatakan sebagai

\[ \pi_{.j} = \sum_{i=1}^{2} \pi_{ij}. \]

Sebagai contoh, berdasarkan Tabel 1, peluang marginal dapat diperoleh dari proporsi frekuensi pada setiap baris atau kolom tabel kontingensi. Karena peluang bersama diestimasi dengan

\[ \pi_{ij} = \frac{n_{ij}}{n}, \]

maka peluang marginal untuk kategori pertama variabel \(X\) diperoleh dengan

\[ \pi_{1.} = \pi_{11} + \pi_{12}. \]

Sedangkan peluang marginal untuk kategori pertama variabel \(Y\) diperoleh dengan

\[ \pi_{.1} = \pi_{11} + \pi_{21}. \]

2.5 Conditional Probability

Distribusi peluang bersyarat (conditional probability) menyatakan peluang suatu kategori dari satu variabel dengan syarat bahwa kategori variabel lainnya telah diketahui. Dalam konteks tabel kontingensi, peluang bersyarat dihitung dengan membandingkan peluang bersama dengan peluang marginal.

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

Sebaliknya, peluang bersyarat variabel \(X\) pada kategori ke-\(i\) dengan syarat variabel \(Y\) berada pada kategori ke-\(j\) dinyatakan sebagai

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

3. Ukuran Asosiasi

Ukuran asosiasi digunakan untuk mengukur kekuatan hubungan antara dua variabel dalam tabel kontingensi.

3.1 Odds

Odds merupakan perbandingan antara probabilitas terjadinya suatu kejadian dengan probabilitas tidak terjadinya kejadian tersebut. Dalam konteks tabel kontingensi, odds dapat dinyatakan sebagai perbandingan antara peluang suatu kejadian dan peluang komplemennya.

Secara umum, jika probabilitas suatu kejadian dinyatakan dengan \(\pi\), maka odds didefinisikan sebagai:

\[ \text{Odds} = \frac{\pi}{1-\pi}. \]

3.2 Odds Ratio

Odds Ratio (OR) digunakan untuk membandingkan odds antara dua kelompok pada tabel kontingensi \(2 \times 2\). Misalkan probabilitas kejadian pada kelompok 1 adalah \(\pi_1\) dan pada kelompok 2 adalah \(\pi_2\). Maka odds pada masing-masing kelompok adalah:

\[ \text{Odds}_1 = \frac{\pi_1}{1-\pi_1}, \qquad \text{Odds}_2 = \frac{\pi_2}{1-\pi_2}. \]

Odds Ratio didefinisikan sebagai

\[ OR = \frac{\text{Odds}_1}{\text{Odds}_2} = \frac{\pi_1/(1-\pi_1)}{\pi_2/(1-\pi_2)}. \]

Pada tabel kontingensi \(2 \times 2\) dengan probabilitas sel \(\pi_{ij}\), Odds Ratio juga dapat dituliskan sebagai

\[ OR = \frac{\pi_{11}\pi_{22}}{\pi_{12}\pi_{21}}. \]

Interpretasi nilai Odds Ratio adalah sebagai berikut:

  • \(OR = 1\) menunjukkan tidak terdapat asosiasi antara kedua variabel.
  • \(OR > 1\) menunjukkan kejadian lebih mungkin terjadi pada kelompok pertama.
  • \(OR < 1\) menunjukkan kejadian lebih kecil kemungkinannya terjadi pada kelompok pertama.

3.3 Relative Risk

Relative Risk (RR) merupakan ukuran yang digunakan untuk membandingkan probabilitas terjadinya suatu kejadian pada dua kondisi atau kelompok yang berbeda. Secara umum, Relative Risk didefinisikan sebagai rasio antara dua probabilitas bersyarat.

\[ RR = \frac{P(Y=1 \mid X=1)}{P(Y=1 \mid X=0)} = \frac{\pi_{11}/\pi_{1.}}{\pi_{21}/\pi_{2.}} \]

Nilai Relative Risk diinterpretasikan sebagai berikut:

  • \(RR = 1\) menunjukkan bahwa probabilitas kejadian sama pada kedua kondisi.
  • \(RR > 1\) menunjukkan bahwa probabilitas kejadian lebih besar pada kondisi pertama.
  • \(RR < 1\) menunjukkan bahwa probabilitas kejadian lebih kecil pada kondisi pertama.

3.4 Risk Difference

Risk difference (RD) adalah ukuran yang menyatakan selisih probabilitas terjadinya suatu kejadian antara dua kelompok yang dibandingkan. Ukuran ini menunjukkan seberapa besar perbedaan risiko kejadian pada kelompok yang terpapar suatu faktor dibandingkan dengan kelompok yang tidak terpapar.

Secara matematis, risk difference dinyatakan sebagai: \[ RD = \frac{\pi_{11}}{\pi_{1.}} - \frac{\pi_{21}}{\pi_{2.}} \]

  • \(RD = 0\) berarti tidak ada perbedaan risiko antara kedua kelompok
  • \(RD > 0\) berarti risiko kejadian pada kelompok 1 lebih tinggi dibanding kelompok 2
  • \(RD < 0\) berarti risiko kejadian pada kelompok 1 lebih rendah dibanding kelompok 2

4. Inferensi Tabel Kontingensi

4.1 Estimasi

4.1.1 Estimasi Titik

Estimasi titik adalah metode dalam inferensi statistik yang digunakan untuk menaksir nilai suatu parameter populasi menggunakan satu nilai yang diperoleh dari data sampel. Estimasi titik untuk proporsi populasi \(\pi\) diberikan oleh:

\[ \hat{p} = \frac{x}{n} \]

dengan:

  • \(\hat{p}\) adalah estimasi titik proporsi
  • \(x\) adalah jumlah kejadian yang diamati dalam sampel
  • \(n\) adalah ukuran sampel

4.1.2 Estimasi Interval

Selain estimasi titik, sering kali diperlukan ukuran yang menggambarkan ketidakpastian dari estimasi tersebut. Estimasi interval memberikan suatu rentang nilai yang kemungkinan besar memuat parameter populasi yang sebenarnya. Rentang ini disebut interval kepercayaan (confidence interval).

Untuk ukuran sampel yang cukup besar, interval kepercayaan untuk proporsi populasi dapat didekati menggunakan distribusi normal sebagai berikut:

\[ \hat{p} \pm z_{\alpha/2} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \]

dengan:

  • \(z_{\alpha/2}\) adalah nilai kritis distribusi normal standar
  • \(n\) adalah ukuran sampel

5. Uji Hipotesis

5.1 Uji Proporsi

Uji proporsi digunakan untuk mengetahui apakah terdapat perbedaan proporsi antara dua kelompok dalam populasi. Pada analisis tabel kontingensi 2×2, pengujian ini dilakukan dengan membandingkan proporsi kejadian pada dua kelompok yang berbeda. Hipotesis yang diuji adalah sebagai berikut:

  • Hipotesis nol (\(H_{0}\)): \(\pi_1 = \pi_2\) (Tidak terdapat perbedaan proporsi antara kedua kelompok)
  • Hipotesis alternatif (\(H_{1}\)): \(\pi_1 \ne \pi_2\) (Terdapat perbedaan proporsi antara kedua kelompok)

Estimasi proporsi sampel untuk masing-masing kelompok dinyatakan sebagai:

\[ \hat{p}_1 = \frac{x_1}{n_1}, \qquad \hat{p}_2 = \frac{x_2}{n_2} \]

dengan:

  • \(x_1\) = jumlah kejadian pada kelompok pertama
  • \(x_2\) = jumlah kejadian pada kelompok kedua
  • \(n_1\) = ukuran sampel pada kelompok pertama
  • \(n_2\) = ukuran sampel pada kelompok kedua

Statistik uji yang digunakan adalah statistik uji Z yang dirumuskan sebagai:

\[ Z = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}(1-\hat{p})\left(\frac{1}{n_1} + \frac{1}{n_2}\right)}} \]

dengan \(\hat{p}\) merupakan proporsi gabungan (pooled proportion) yang dihitung sebagai:

\[ \hat{p} = \frac{x_1 + x_2}{n_1 + n_2} \] Keputusan pengujian dilakukan dengan membandingkan nilai statistik uji dengan distribusi normal standar atau dengan menggunakan nilai p-value. Jika nilai p-value < atau Z > nilai kritis pada tertentu, maka hipotesis nol ditolak sehingga dapat disimpulkan bahwa terdapat perbedaan proporsi yang signifikan antara kedua kelompok.

5.2 Uji Asosiasi

Uji asosiasi digunakan untuk mengetahui apakah terdapat hubungan antara dua variabel kategorik pada tabel kontingensi. Pada tabel kontingensi 2×2, hubungan antar variabel dapat diukur menggunakan beberapa ukuran asosiasi seperti Risk Difference (RD), Relative Risk (RR), dan Odds Ratio (OR). Hipotesis yang diujikan adalah sebagai berikut:

  • Hipotesis nol (\(H_{0}\)): Tidak terdapat asosiasi antara kedua variabel
  • Hipotesis alternatif (\(H_{1}\)): Terdapat asosiasi antara kedua variabel

5.2.1 Risk Difference

Risk Difference merupakan selisih antara dua proporsi kejadian.

\[ RD = \frac{\pi_{11}}{\pi_{1.}} - \frac{\pi_{21}}{\pi_{2.}} \]

Standard error untuk Risk Difference adalah:

\[ SE(RD) = \sqrt{\frac{\hat{p}_1(1-\hat{p}_1)}{n_1} + \frac{\hat{p}_2(1-\hat{p}_2)}{n_2}} \]

Statistik uji:

\[ Z = \frac{RD}{SE(RD)} \]

5.2.2 Relative Risk (RR)

Relative Risk merupakan rasio antara dua proporsi kejadian.

\[ RR = \frac{\pi_{11}/\pi_{1.}}{\pi_{21}/\pi_{2.}} \]

Standard error dihitung menggunakan transformasi logaritma:

\[ SE(\ln(RR)) = \sqrt{\frac{1}{n_{11}} - \frac{1}{n_{1.}} + \frac{1}{n_{21}} - \frac{1}{n_{2.}}} \]

Statistik uji:

\[ Z = \frac{\ln(RR)}{SE(\ln(RR))} \]

5.2.3 Odds Ratio (OR)

Odds Ratio merupakan rasio antara odds kejadian pada dua kelompok.

\[ OR = \frac{\pi_{11}\pi_{22}}{\pi_{12}\pi_{21}}. \]

Standard error dihitung dengan:

\[ SE(\ln(OR)) = \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}} \]

Statistik uji:

\[ Z = \frac{\ln(OR)}{SE(\ln(OR))} \]

5.3 Uji Independensi

Uji independensi digunakan untuk mengetahui apakah terdapat hubungan signifikan antara dua variabel kategorik pada tabel kontingensi. Hipotesis yang diuji adalah:

  • Hipotesis nol (\(H_0\)): Variabel bersifat independen (Terdapat hubungan antara kedua variabel)
  • Hipotesis alternatif (\(H_1\)): Variabel tidak independen (Tidak terdapat hubungan antara kedua variabel)

5.3.1 Uji Chi-Square

Uji Chi-Square membandingkan frekuensi observasi dengan frekuensi harapan jika kedua variabel bersifat independen. Statistik uji Chi-Square diperoleh sebagai berikut:

\[ \chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

dengan:

  • \(O_{ij}\) adalah observed frequency (frekuensi observasi) pada sel baris ke-\(i\) dan kolom ke-\(j\) dalam tabel kontingensi.
  • \(E_{ij}\) adalah expected frequency (frekuensi harapan) pada sel baris ke-\(i\) dan kolom ke-\(j\)

\[ E_{ij} = \frac{n_{i.} n_{.j}}{n} \]

5.3.2 Partisi Chi-Square

Partisi Chi-Square digunakan untuk menentukan kontribusi tiap sel atau sub-tabel terhadap statistik Chi-Square total. Metode ini membantu mengidentifikasi sel atau kategori mana yang paling memengaruhi asosiasi.

Langkah-Langkah Partisi Chi-Square:

  1. Hitung Chi-Square Total dari tabel kontingensi \(I \times J\)

\[\chi^2_\text{total} = \sum_{i=1}^{I} \sum_{j=1}^{J} \frac{(O_{ij} - E_{ij})^2}{E_{ij}} ; E_{ij} = \frac{n_{i.} \cdot n_{.j}}{n}\]

  1. Hitung Residual Pearson per Sel

\[R_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}}\]

  1. Bagi Tabel menjadi Sub-Tabel 2×2
  • Tabel besar dibagi menjadi beberapa sub-tabel 2×2
  • Hitung \(\chi^2\) untuk tiap sub-tabel
  • Kontribusi tiap sub-tabel dapat dijumlahkan sehingga mendekati \(\chi^2_\text{total}\)
  1. Interpretasi
  • Nilai \(R_{ij}\) besar berarti sel berkontribusi signifikan pada Chi-Square total
  • Sub-tabel dengan Chi-Square tinggi menunjukkan area yang paling memengaruhi asosiasi
  • Berguna untuk mendeteksi kategori yang tidak independen atau outlier

5.3.3 Uji Likelihood Ratio

Likelihood Ratio atau G² adalah alternatif uji Chi-Square menggunakan log-likelihood. Statistik uji yang digunakan adalah:

\[ G^2 = 2 \sum O_{ij} \ln \frac{O_{ij}}{E_{ij}} \] Nilai kritisnya didaapatkan dari distribusi Chi-square dengan \(df = (baris-1)*(kolom-1)\)

5.3.4 Fisher Exact Test

Uji Fisher digunakan untuk menguji asosiasi antara dua variabel kategorik ketika jumlah sampel kecil atau ada sel yang frekuensinya <5. Berbeda dengan chi-square, Fisher menghitung probabilitas exact dari tabel kontingensi. Probabilitas tabel tertentu dihitung dengan rumus hypergeometric:

\[P(X = x) = \frac{\binom{K}{x} \cdot \binom{N-K}{n-x}}{\binom{N}{n}}\] dengan:

  • \(N\) adalah total objek dalam populasi
  • \(K\) adalah jumlah objek dalam kategori tertentu
  • \(n\) adalah jumlah sampel yang diambil
  • \(x\) adalah jumlah objek kategori tertentu yang diamati dalam sampel

p-value uji Fisher didapatkan dari total probabilitas semua tabel yang sama atau lebih ekstrem daripada tabel yang diamati

6. Analisis Residual dan Deteksi Outlier

Analisis residual digunakan untuk menilai sejauh mana setiap sel dalam tabel kontingensi menyimpang dari nilai yang diharapkan berdasarkan distribusi independen. Residual standar (\(R_{ij}\)) menunjukkan besarnya penyimpangan tiap sel relatif terhadap ekspektasi dan variabilitasnya. Residual standar yang besar menunjukkan kontribusi signifikan terhadap statistik Chi-Square total dan dapat membantu mendeteksi sel-sel yang berperilaku tidak biasa atau outlier. Dengan mengetahui sel yang menyimpang, kita dapat meninjau data lebih lanjut, memvalidasi kesalahan pengukuran, atau memahami fenomena yang tidak sesuai dengan pola umum.

Langkah-langkah analisis residual dan deteksi outlier adalah sebagai berikut:

1. Hitung Chi-Square Total

\[ \chi^2_\text{total} = \sum_{i=1}^{I} \sum_{j=1}^{J} \frac{(O_{ij} - E_{ij})^2}{E_{ij}} ; E_{ij} = \frac{n_{i.} \cdot n_{.j}}{n} \]

2. Hitung Residual Standar (Standardized Residual) per Sel
\[ R_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}} \]

3. Analisis Residual Standar

  • Residual standar dapat digunakan untuk mengidentifikasi sel yang menyimpang dari ekspektasi. Biasanya, residual \(|R_{ij}| > 2\) atau \(|R_{ij}| > 3\) dianggap signifikan:
  • \(|R_{ij}| > 2\) → kontribusi moderat terhadap Chi-Square
  • \(|R_{ij}| > 3\) → kontribusi besar, patut dicurigai

4. Deteksi Outlier

  1. Hitung \(R_{ij}\) untuk setiap sel tabel kontingensi.
  2. Tentukan threshold, misal \(|R_{ij}| > 3\).
  3. Tandai sel yang melewati threshold sebagai outlier.
  4. Analisis konteks data untuk memutuskan apakah outlier ini valid atau hasil kesalahan.

5. Interpretasi
- \(R_{ij} \approx 0\) → Observasi sesuai ekspektasi, tidak ada hubungan kuat antar kategori. - \(R_{ij}\) positif besar → Observasi lebih tinggi dari ekspektasi → hubungan positif antar kategori.
- \(R_{ij}\) negatif besar → Observasi lebih rendah dari ekspektasi → hubungan negatif atau tidak ada asosiasi. - Outlier harus diperiksa apakah representatif atau error pengukuran

7. Contoh Kasus Tabel Kontingensi 2x2

Sebuah toko ingin mengetahui apakah promosi diskon mempengaruhi keputusan konsumen untuk membeli produk. Dari survei terhadap 200 konsumen diperoleh data yang disajikan dalam tabel kontingensi berikut.

Membeli Tidak Membeli Total
Promosi 70 30 100
Tidak Promosi 40 60 100
Total 110 90 200

7.1 Pengerjaan Manual

7.1.1 Menghitung Peluang Bersyarat

Peluang membeli dengan promosi:

\[ P(Y=1|X=1)=\frac{n_{11}}{n_{11}+n_{12}} \]

\[ P(Y=1|X=1)=\frac{70}{70+30}=\frac{70}{100}=0.7 \]

Peluang membeli tanpa promosi:

\[ P(Y=1|X=0)=\frac{n_{21}}{n_{21}+n_{22}} \]

\[ P(Y=1|X=0)=\frac{40}{40+60}=\frac{40}{100}=0.4 \]

7.1.2 Menghitung Odds

Odds membeli ketika ada promosi:

\[ \text{Odds}_1=\frac{P(Y=1|X=1)}{P(Y=0|X=1)} \]

\[ \text{Odds}_1=\frac{70/100}{30/100}=\frac{70}{30}=2.33 \]

Odds membeli tanpa promosi:

\[ \text{Odds}_0=\frac{P(Y=1|X=0)}{P(Y=0|X=0)} \]

\[ \text{Odds}_0=\frac{40/100}{60/100}=\frac{40}{60}=0.67 \]

7.1.3 Menghitung Odds Ratio

Odds Ratio didefinisikan sebagai:

\[ OR=\frac{\text{Odds}_1}{\text{Odds}_0} \]

atau dapat dihitung langsung dari tabel:

\[ OR=\frac{n_{11}n_{22}}{n_{12}n_{21}} \]

Substitusi nilai:

\[ OR=\frac{70\times60}{30\times40} \]

\[ OR=\frac{4200}{1200}=3.5 \]

7.2 Analisis Menggunakan R

# ================================
# Contoh Kasus 2x2
# ================================

# Membuat tabel kontingensi
data <- matrix(c(70, 30,
                 40, 60),
               nrow = 2,
               byrow = TRUE)

rownames(data) <- c("Promosi","Tidak_Promosi")
colnames(data) <- c("Membeli","Tidak_Membeli")
data
##               Membeli Tidak_Membeli
## Promosi            70            30
## Tidak_Promosi      40            60
# ================================
# 1. Menghitung Odds Ratio (OR), Risk Ratio (RR), dan Risk Difference (RD)
# ================================

# Odds Ratio
OR <- (data[1,1] * data[2,2]) / (data[1,2] * data[2,1]) 
OR
## [1] 3.5
# Risiko membeli di masing-masing grup
risk_promosi <- data[1,1] / sum(data[1,])
risk_tidak <- data[2,1] / sum(data[2,])

# Risk Ratio
RR <- risk_promosi / risk_tidak
RR
## [1] 1.75
# Risk Difference
RD <- risk_promosi - risk_tidak
RD
## [1] 0.3
# ================================
# 2. Uji Chi-Square
# ================================
uji_chi <- chisq.test(data)
uji_chi
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 16.99, df = 1, p-value = 3.758e-05
# Expected frequency
uji_chi$expected
##               Membeli Tidak_Membeli
## Promosi            55            45
## Tidak_Promosi      55            45
# ================================
# 3. Hitung Residual Standar (Standardized Residual)
# ================================
residual <- (data - uji_chi$expected) / sqrt(uji_chi$expected)
residual
##               Membeli Tidak_Membeli
## Promosi        2.0226     -2.236068
## Tidak_Promosi -2.0226      2.236068
# ================================
# 4. Interpretasi Residual
# ================================
# Aturan sederhana:
# |R_ij| ≈ 0 → Observasi sesuai ekspektasi
# R_ij positif besar → Observasi lebih tinggi dari ekspektasi
# R_ij negatif besar → Observasi lebih rendah dari ekspektasi

interpretasi <- apply(residual, c(1,2), function(x){
  if(abs(x) < 2){
    "Sesuai ekspektasi"
  } else if(x >= 2){
    "Positif signifikan"
  } else {
    "Negatif signifikan"
  }
})

interpretasi
##               Membeli              Tidak_Membeli       
## Promosi       "Positif signifikan" "Negatif signifikan"
## Tidak_Promosi "Negatif signifikan" "Positif signifikan"

7.3 Interpretasi Hasil

7.3.1 Interpretasi Statistik

Hasil analisis menunjukkan bahwa konsumen yang menerima promosi diskon memiliki peluang lebih besar untuk membeli produk dibandingkan yang tidak menerima promosi. Nilai Odds Ratio (OR = 3.5) lebih besar dari 1, menunjukkan hubungan positif antara promosi dan keputusan membeli, artinya konsumen yang menerima promosi sekitar 3.5 kali lebih mungkin membeli. Risk Ratio (RR = 1.75) mendukung hal ini dengan menunjukkan konsumen pada kelompok promosi sekitar 1.75 kali lebih mungkin melakukan pembelian dibandingkan kelompok tanpa promosi, sedangkan Risk Difference (RD = 0.3) menunjukkan selisih probabilitas membeli sebesar 0.3 atau sekitar 30% lebih banyak konsumen membeli pada kelompok promosi.

Uji Chi-Square digunakan untuk menilai apakah hubungan tersebut signifikan secara statistik. Hasil uji Chi-Square menunjukkan p-value sebesar 3.7579211^{-5}. Karena p-value < 0.05, maka dapat disimpulkan bahwa terdapat hubungan yang signifikan secara statistik antara promosi dan keputusan membeli. Pemeriksaan expected frequency juga menunjukkan bahwa seluruh nilai harapan lebih besar dari 5, sehingga asumsi uji Chi-Square terpenuhi dan hasil pengujian dapat dianggap valid.

Selain itu, residual standar per sel menunjukkan sel-sel tertentu berkontribusi signifikan terhadap Chi-Square, misal:
- Membeli-Promosi: positif signifikan
- Tidak Membeli-Promosi: negatif signifikan
- Membeli-Tidak Promosi: negatif signifikan
- Tidak Membeli-Tidak Promosi: positif signifikan

Hal ini menandakan adanya penyimpangan yang signifikan yang mendukung hubungan antara variabel.

7.3.2 Interpretasi Substantif

Secara substantif, hasil analisis menunjukkan bahwa promosi memiliki pengaruh terhadap keputusan konsumen dalam membeli produk. Berdasarkan hasil analisis, konsumen yang menerima promosi diskon memiliki peluang sekitar 3.5 kali lebih besar untuk melakukan pembelian dibandingkan konsumen yang tidak menerima promosi.

Berdasarkan tabel kontingensi, dari 100 konsumen yang menerima promosi, sekitar 70% melakukan pembelian, sedangkan pada kelompok yang tidak menerima promosi hanya sekitar 40% yang melakukan pembelian. Hasil ini mengindikasikan bahwa pemberian promosi diskon dapat meningkatkan kemungkinan konsumen membeli produk di toko tersebut.

8. Implementasi Menggunakan R

8.1 Uji Proporsi

# Pastikan variabel data_matrix terdefinisi sebelum digunakan
set.seed(123)
data<- matrix(c(50, 30, 30, 50), nrow = 2, byrow = TRUE)
dimnames(data) <- list("Terpapar" = c("Ya", "Tidak"), "Kejadian" = c("Ya", "Tidak"))
print(data)
##         Kejadian
## Terpapar Ya Tidak
##    Ya    50    30
##    Tidak 30    50
# Uji Proporsi dengan variabel yang benar
prop_test <- prop.test(x = c(data[1,1], data[2,1]), 
                       n = c(sum(data[1,]), sum(data[2,])))
print(prop_test)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(data[1, 1], data[2, 1]) out of c(sum(data[1, ]), sum(data[2, ]))
## X-squared = 9.025, df = 1, p-value = 0.002663
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.08747151 0.41252849
## sample estimates:
## prop 1 prop 2 
##  0.625  0.375

8.2 Uji Asosiasi

n11 <- 50; n12 <- 30; n21 <- 30; n22 <- 50
n1. <- n11 + n12; n2. <- n21 + n22

# Risk Difference
p1<-(n11/n1.)
p2<-(n21/n2.)
rd <- p1 - p2
se_rd <- sqrt((p1 * (1 - p1) / n1.) + p2*((1 - p2) / n2.))
z_rd <- rd / se_rd

# Relative Risk
rr <- (n11/n1.) / (n21/n2.)
se_ln_rr <- sqrt((1/n11) - (1/n1.) + (1/n21) - (1/n2.))
z_rr <- log(rr) / se_ln_rr

# Odds Ratio
or <- (n11 * n22) / (n12 * n21)
se_ln_or <- sqrt((1/n11) + (1/n12) + (1/n21) + (1/n22))
z_or <- log(or) / se_ln_or

# Hasil
list(RD = rd, SE_RD = se_rd, Z_RD = z_rd, RR = rr, SE_Ln_RR = se_ln_rr, Z_RR = z_rr, OR = or, SE_Ln_OR = se_ln_or, Z_OR = z_or)
## $RD
## [1] 0.25
## 
## $SE_RD
## [1] 0.07654655
## 
## $Z_RD
## [1] 3.265986
## 
## $RR
## [1] 1.666667
## 
## $SE_Ln_RR
## [1] 0.1683251
## 
## $Z_RR
## [1] 3.034756
## 
## $OR
## [1] 2.777778
## 
## $SE_Ln_OR
## [1] 0.3265986
## 
## $Z_OR
## [1] 3.128155

8.3 Uji Independensi

8.3.1 Uji Chi-Square

# Contoh Data
set.seed(123)
data <- matrix(c(30, 10, 15, 45), nrow = 2, byrow = TRUE)
dimnames(data) <- list("Terpapar" = c("Ya", "Tidak"), "Kejadian" = c("Ya", "Tidak"))
print(data)
##         Kejadian
## Terpapar Ya Tidak
##    Ya    30    10
##    Tidak 15    45
# Uji Chi-Square
chisq_test <- chisq.test(data)
print(chisq_test)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 22.264, df = 1, p-value = 2.376e-06

8.3.2 Partisi Chi-Square

# Data Observasi
data_matrix <- matrix(c(495, 272, 590, 330, 265, 498), nrow = 2, byrow = TRUE)
colnames(data_matrix) <- c("Democrat", "Republican", "Independent")
rownames(data_matrix) <- c("Female", "Male")

# Uji Chi-Square
chi_test <- chisq.test(data_matrix)

# Hasil
list(Chi_Square = chi_test$statistic, P_Value = chi_test$p.value, Decision = ifelse(chi_test$p.value < 0.05, "Reject H0", "Fail to Reject H0"))
## $Chi_Square
## X-squared 
##  12.56926 
## 
## $P_Value
## [1] 0.00186475
## 
## $Decision
## [1] "Reject H0"
# Uji Chi-Square Partisi 1
chi_test1 <- chisq.test(data_matrix)

# Data Partisi 2
data_matrix2 <- matrix(c(767, 590, 595, 498), nrow = 2, byrow = TRUE)
colnames(data_matrix2) <- c("Dem+Rep", "Independent")
rownames(data_matrix2) <- c("Female", "Male")

# Uji Chi-Square Partisi 2
chi_test2 <- chisq.test(data_matrix2)

# Hasil
list(Chi_Square_Partisi1 = chi_test1, Chi_Square_Partisi2 = chi_test2)
## $Chi_Square_Partisi1
## 
##  Pearson's Chi-squared test
## 
## data:  data_matrix
## X-squared = 12.569, df = 2, p-value = 0.001865
## 
## 
## $Chi_Square_Partisi2
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_matrix2
## X-squared = 0.98267, df = 1, p-value = 0.3215

8.3.3 Uji Likelihood Ratio

# Data Observasi
data_matrix <- matrix(c(688, 650, 21, 59), nrow = 2, byrow = TRUE)
colnames(data_matrix) <- c("Cancer (+)", "Control (-)")
rownames(data_matrix) <- c("Smoker", "Non-Smoker")

# Hitung Frekuensi Ekspektasi
data_expected <- chisq.test(data_matrix)$expected

# Hitung Statistik G²
G2 <- 2 * sum(data_matrix * log(data_matrix / data_expected))

# Nilai kritis chi-square untuk df = 1 dan alpha = 0.05
critical_value <- qchisq(0.95, df = 1)

# Hasil
list(G2 = G2, Critical_Value = critical_value, Decision = ifelse(G2 > critical_value, "Reject H0", "Fail to Reject H0"))
## $G2
## [1] 19.87802
## 
## $Critical_Value
## [1] 3.841459
## 
## $Decision
## [1] "Reject H0"

8.3.4 Uji Exact Fisher

# Definisi parameter
N <- 40   # Total populasi
K <- 29   # Jumlah kategori sukses (bola putih)
n <- 20   # Jumlah sampel diambil
x <- 18   # Jumlah sukses dalam sampel

# Hitung probabilitas P(X = 18)
dhyper(x, m = K, n = N - K, k = n)
## [1] 0.01380413
choose(29, 18) * choose(11, 2) / choose(40, 20)
## [1] 0.01380413
choose(29, 20) * choose(11, 0) / choose(40, 20)
## [1] 7.26533e-05
choose(29, 19) * choose(11, 1) / choose(40, 20)
## [1] 0.001598373
choose(29, 18) * choose(11, 2) / choose(40, 20)
## [1] 0.01380413
choose(29, 17) * choose(11, 3) / choose(40, 20)
## [1] 0.06211857
choose(29, 16) * choose(11, 4) / choose(40, 20)
## [1] 0.162464
choose(29, 15) * choose(11, 5) / choose(40, 20)
## [1] 0.2599423
choose(29, 14) * choose(11, 6) / choose(40, 20)
## [1] 0.2599423
choose(29, 13) * choose(11, 7) / choose(40, 20)
## [1] 0.162464
choose(29, 12) * choose(11, 8) / choose(40, 20)
## [1] 0.06211857
choose(29, 11) * choose(11, 9) / choose(40, 20)
## [1] 0.01380413
choose(29, 10) * choose(11, 10) / choose(40, 20)
## [1] 0.001598373
choose(29, 9) * choose(11, 11) / choose(40, 20)
## [1] 7.26533e-05
choose(29, 18) * choose(11, 2) / choose(40, 20)
## [1] 0.01380413
p.value <- 0.00007+0.00160+0.01380+0.01380+0.00160+0.00007
p.value
## [1] 0.03094
# Menggunakan Package
data <- matrix(c(18, 2, 11, 9), nrow = 2, byrow = TRUE)
fisher.test(data)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  data
## p-value = 0.03095
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##   1.147793 78.183838
## sample estimates:
## odds ratio 
##   6.994073

8.4 Studi Kasus 1

Buatlah fungsi untuk menghitung dan melakukan pegujian hipotesis untuk RD, RR, dan OR. Gunakan data berikut Dataset dari Agresti (2019, hlm. 35, Tabel 2.3):

Smoker Lung Cancer (Cases) Control
Yes 688 650
No 21 59

Struktur Tabel Untuk Pembuatan Function

Exposure Cases Control Total
Yes a c a+c
No b d b+d
Total a+b c+d a+b+c+d
# Uji Proporsi
## Membuat Fungsi
prop_diff <- function(a, b, c, d, alpha = 0.05) {
  ph <- a / (a + c)
  pi <- b / (b + d)
  nh <- a + c
  ni <- b + d
  
  se_bp <- sqrt((ph * (1 - ph) / nh) + (pi * (1 - pi) / ni))
  z_alpha <- qnorm(1 - alpha / 2)
  ci_lower <- (ph - pi) - z_alpha * se_bp
  ci_upper <- (ph - pi) + z_alpha * se_bp
  
  list(estimate = ph - pi, ci = c(ci_lower, ci_upper))
}
## Input data
hasil <- prop_diff(a = 688, b = 21, c = 650, d = 59)

## Menampilkan hasil
print(hasil)
## $estimate
## [1] 0.2517003
## 
## $ci
## [1] 0.1516343 0.3517663
# Relative Risk
## Membuat Fungsi
relative_risk <- function(a, b, c, d, alpha = 0.05) {
  ph <- a / (a + c)
  pi <- b / (b + d)
  nh <- a + c
  ni <- b + d
  
  ln_rr <- log(ph / pi)
  se_ln_rr <- sqrt(((1 - ph) / (ph * nh)) + ((1 - pi) / (pi * ni)))
  z_alpha <- qnorm(1 - alpha / 2)
  ci_lower <- exp(ln_rr - z_alpha * se_ln_rr)
  ci_upper <- exp(ln_rr + z_alpha * se_ln_rr)
  
  list(estimate = exp(ln_rr), ci = c(ci_lower, ci_upper))
}
## Input data
hasil <- relative_risk(a = 688, b = 21, c = 650, d = 59)

## Menampilkan hasil
print(hasil)
## $estimate
## [1] 1.958858
## 
## $ci
## [1] 1.351735 2.838667
# Odds Ratio
## Membuat Fungsi
odds_ratio <- function(a, b, c, d, alpha = 0.05) {
  ln_or <- log((a * d) / (b * c))
  se_ln_or <- sqrt(1/a + 1/b + 1/c + 1/d)
  z_alpha <- qnorm(1 - alpha / 2)
  ci_lower <- exp(ln_or - z_alpha * se_ln_or)
  ci_upper <- exp(ln_or + z_alpha * se_ln_or)
  
  list(estimate = exp(ln_or), ci = c(ci_lower, ci_upper))
}

## Input data
hasil <- odds_ratio(a = 688, b = 21, c = 650, d = 59)

## Menampilkan hasil
print(hasil)
## $estimate
## [1] 2.973773
## 
## $ci
## [1] 1.786737 4.949427
# Perhitungan Manual
a <- 688
b <- 21
c <- 650
d <- 59

# Risk Difference
RD_manual <- (a / (a + c)) - (b / (b + d))
SE_RD <- sqrt((a/(a+c)*(1 - a/(a+c)))/(a+c) + (b/(b+d)*(1 - b/(b+d)))/(b+d))
CI_RD <- c(RD_manual - 1.96 * SE_RD, RD_manual + 1.96 * SE_RD)

# Relative Risk
RR_manual <- (a / (a + c)) / (b / (b + d))
SE_RR <- sqrt(1/a - 1/(a+c) + 1/b - 1/(b+d))
CI_RR <- exp(log(RR_manual) + c(-1.96, 1.96) * SE_RR)

# Odds Ratio
OR_manual <- (a * d) / (b * c)
SE_OR <- sqrt(1/a + 1/b + 1/c + 1/d)
CI_OR <- exp(log(OR_manual) + c(-1.96, 1.96) * SE_OR)

list(RD = RD_manual, CI_RD = CI_RD, RR = RR_manual, CI_RR = CI_RR, OR = OR_manual, CI_OR = CI_OR)
## $RD
## [1] 0.2517003
## 
## $CI_RD
## [1] 0.1516324 0.3517682
## 
## $RR
## [1] 1.958858
## 
## $CI_RR
## [1] 1.351726 2.838687
## 
## $OR
## [1] 2.973773
## 
## $CI_OR
## [1] 1.786720 4.949474
# Perbandingan dengan Output R
library(epiR)
## Warning: package 'epiR' was built under R version 4.4.3
## Loading required package: survival
## Package epiR 2.0.91 is loaded
## Type help(epi.about) for summary information
## Type browseVignettes(package = 'epiR') to learn how to use epiR for applied epidemiological analyses
## 
table_data <- matrix(c(a, c, b, d), nrow = 2, byrow = TRUE)
colnames(table_data) <- c("Lung Cancer", "Control")
rownames(table_data) <- c("Yes", "No")
res <- epi.2by2(table_data)
print(res)
##              Outcome+    Outcome-      Total                 Inc risk *
## Exposure+         688         650       1338     51.42 (48.70 to 54.13)
## Exposure-          21          59         80     26.25 (17.04 to 37.29)
## Total             709         709       1418     50.00 (47.36 to 52.64)
## 
## Point estimates and 95% CIs:
## -------------------------------------------------------------------
## Inc risk ratio                                 1.96 (1.35, 2.84)
## Inc odds ratio                                 2.97 (1.79, 4.95)
## Attrib risk in the exposed *                   25.17 (15.16, 35.18)
## Attrib fraction in the exposed (%)            48.95 (28.08, 65.39)
## Attrib risk in the population *                23.75 (13.76, 33.74)
## Attrib fraction in the population (%)         47.50 (29.16, 64.02)
## -------------------------------------------------------------------
## Uncorrected chi2 test that OR = 1: chi2(1) = 19.129 Pr>chi2 = <0.001
## Fisher exact test that OR = 1: Pr>chi2 = <0.001
##  Wald confidence limits
##  CI: confidence interval
##  * Outcomes per 100 population units

8.5 Analisis Residual

# Data Observasi
observed <- matrix(c(20, 10, 30, 20), nrow = 2, byrow = TRUE)

# Hitung nilai ekspektasi
expected <- chisq.test(observed)$expected

# Pearson Residual
pearson_residual <- (observed - expected) / sqrt(expected)

# Standardized Residual
row_sum <- rowSums(observed)
col_sum <- colSums(observed)
total_sum <- sum(observed)

standardized_residual <- (observed - expected) / sqrt(expected * (1 - row_sum / total_sum) * (1 - col_sum / total_sum))

# Menampilkan hasil
list(
  Pearson_Residual = pearson_residual,
  Standardized_Residual = standardized_residual
)
## $Pearson_Residual
##            [,1]       [,2]
## [1,]  0.2886751 -0.3726780
## [2,] -0.2236068  0.2886751
## 
## $Standardized_Residual
##            [,1]       [,2]
## [1,]  0.5962848 -0.7698004
## [2,] -0.4618802  0.5962848

8.6 Deteksi Outlier

# Data Observasi
observed <- matrix(c(50, 20, 30, 50), nrow = 2, byrow = TRUE)
colnames(observed) <- c("Sukses", "Gagal")
rownames(observed) <- c("Grup A", "Grup B")

# Hitung nilai ekspektasi
expected <- chisq.test(observed)$expected

# Pearson Residual
pearson_residual <- (observed - expected) / sqrt(expected)

# Standardized Residual
row_sum <- rowSums(observed)
col_sum <- colSums(observed)
total_sum <- sum(observed)
standardized_residual <- (observed - expected) / sqrt(expected * (1 - row_sum / total_sum) * (1 - col_sum / total_sum))

# Menampilkan hasil
list(
  Observed = observed,
  Expected = expected,
  Pearson_Residual = pearson_residual,
  Standardized_Residual = standardized_residual
)
## $Observed
##        Sukses Gagal
## Grup A     50    20
## Grup B     30    50
## 
## $Expected
##          Sukses    Gagal
## Grup A 37.33333 32.66667
## Grup B 42.66667 37.33333
## 
## $Pearson_Residual
##           Sukses     Gagal
## Grup A  2.073070 -2.216205
## Grup B -1.939179  2.073070
## 
## $Standardized_Residual
##           Sukses     Gagal
## Grup A  4.155384 -4.442293
## Grup B -3.887006  4.155384

8.7 Studi Kasus 2

Seorang peneliti ingin mengetahui apakah ada hubungan antara kebiasaan merokok dan kejadian kanker paru-paru. Data yang diperoleh dari sebuah penelitian medis ditampilkan dalam tabel kontingensi berikut:

Kanker Paru (+) Kanker Paru (-) Total
Perokok 450 200 650
Bukan Perokok 50 300 350
Total 500 500 1000
  1. Hitung frekuensi ekspektasi untuk masing-masing sel berdasarkan asumsi independensi.
  2. Hitung Pearson Residual dan Standardized Residual untuk setiap sel.
  3. Interpretasikan hasil residual yang diperoleh.
  4. Tentukan apakah ada kategori yang bisa dianggap sebagai outlier dalam hubungan antara merokok dan kanker paru-paru.
# Data Observasi
observed <- matrix(c(450, 200, 50, 300), nrow = 2, byrow = TRUE)
colnames(observed) <- c("Kanker Paru (+)", "Kanker Paru (-)")
rownames(observed) <- c("Perokok", "Bukan Perokok")

# Hitung nilai ekspektasi
expected <- chisq.test(observed)$expected

# Pearson Residual
pearson_residual <- (observed - expected) / sqrt(expected)

# Standardized Residual
row_sum <- rowSums(observed)
col_sum <- colSums(observed)
total_sum <- sum(observed)
standardized_residual <- (observed - expected) / sqrt(expected * (1 - row_sum / total_sum) * (1 - col_sum / total_sum))

# Menampilkan hasil
list(
  Observed = observed,
  Expected = expected,
  Pearson_Residual = pearson_residual,
  Standardized_Residual = standardized_residual
)
## $Observed
##               Kanker Paru (+) Kanker Paru (-)
## Perokok                   450             200
## Bukan Perokok              50             300
## 
## $Expected
##               Kanker Paru (+) Kanker Paru (-)
## Perokok                   325             325
## Bukan Perokok             175             175
## 
## $Pearson_Residual
##               Kanker Paru (+) Kanker Paru (-)
## Perokok              6.933752       -6.933752
## Bukan Perokok       -9.449112        9.449112
## 
## $Standardized_Residual
##               Kanker Paru (+) Kanker Paru (-)
## Perokok              16.57484       -16.57484
## Bukan Perokok       -16.57484        16.57484

9. Referensi

Agresti, A. (2013). Categorical Data Analysis. Wiley.