1. Pendahuluan

Dalam penelitian dan analisis data, data kategori sering digunakan untuk mengelompokkan suatu fenomena berdasarkan kelompok tertentu. Data ini tidak berbentuk angka yang bisa dihitung secara numerik, melainkan berupa label atau kategori yang menggambarkan karakteristik suatu objek atau subjek. Data kategori banyak digunakan dalam berbagai bidang, seperti ilmu sosial, kesehatan, bisnis, dan teknologi.

Analisis data kategori penting untuk memahami pola, hubungan, dan tren dalam data yang bersifat kualitatif. Beberapa teknik yang sering digunakan meliputi tabel kontingensi, uji chi-square, analisis regresi logistik, serta analisis korespondensi. Dengan metode yang tepat, data kategori dapat membantu dalam pengambilan keputusan berdasarkan hubungan antarvariabel.

1.1 Tujuan Analisis Data Kategori

Analisis data kategori memiliki peranan penting dalam menggali informasi dari data yang bersifat diskrit. Tujuan utama dari analisis ini adalah untuk mendukung proses pengambilan keputusan yang lebih terarah. Beberapa tujuan utama dari analisis data kategori antara lain:

1.1.1 Menemukan Pola dan Kecenderungan

Salah satu manfaat utama dari analisis data kategori adalah kemampuannya dalam mengungkap pola atau kecenderungan tertentu dalam data. Contohnya, dalam studi perilaku konsumen, analisis ini dapat mengungkap preferensi kelompok pelanggan berdasarkan faktor-faktor seperti usia atau lokasi.

1.1.2 Menilai Keterkaitan Antarvariabel

Analisis ini juga berguna untuk mengevaluasi apakah terdapat hubungan antara dua variabel kategori atau lebih. Dalam bidang kesehatan, misalnya, hal ini dapat digunakan untuk mengetahui apakah terdapat hubungan antara kebiasaan merokok dan jenis penyakit tertentu.

1.1.3 Menunjang Proses Pengambilan Keputusan

Dengan memahami keterkaitan dan kecenderungan dalam data, para pengambil kebijakan atau pemimpin bisnis dapat merancang strategi yang lebih efektif. Sebagai contoh, lembaga pemerintah dapat menggunakan hasil analisis ini untuk menyusun kebijakan yang sesuai dengan kebutuhan kelompok masyarakat tertentu.

1.1.4 Menyusun Model Prediktif

Data kategori juga sering digunakan dalam pembangunan model prediktif, seperti dalam analisis regresi logistik. Model ini bermanfaat dalam memprediksi hasil biner, misalnya memproyeksikan apakah seseorang berisiko tinggi mengalami suatu kondisi kesehatan.

1.2 Definisi Analisis Data Kategori

Analisis data kategori adalah proses mengolah dan mengevaluasi data yang berbentuk kategori untuk menemukan pola, hubungan, atau tren dalam suatu dataset. Analisis ini digunakan untuk memahami distribusi frekuensi kategori, mengidentifikasi asosiasi antarvariabel, serta menguji hipotesis terkait data yang bersifat kualitatif. Beberapa metode yang sering digunakan dalam analisis data kategori meliputi tabel kontingensi, uji chi-square, analisis regresi logistik, dan analisis korespondensi. Dengan pendekatan yang tepat, analisis ini dapat memberikan wawasan berharga dalam pengambilan keputusan berbasis data. Berikut adalah jenis-jenis data kategori :

1.2.1 Data Nominal dan Ordinal

Data Nominal: Merupakan data kategori yang tidak memiliki urutan atau peringkat antar nilainya. Setiap kategori bersifat unik tanpa hierarki. Contoh: warna favorit (merah, biru, hijau), jenis kelamin (laki-laki, perempuan).

Data Ordinal: Merupakan data kategori yang memiliki tingkatan atau urutan tertentu, meskipun jarak antar kategori tidak terukur secara pasti. Contoh: jenjang pendidikan (SD, SMP, SMA, Perguruan Tinggi), tingkat kepuasan (sangat puas, puas, netral, tidak puas, sangat tidak puas).

1.2.2 Data Biner dan Multikategori

Data Biner (Dikotomik): Jenis data kategori yang hanya memiliki dua kemungkinan nilai. Contoh: status ujian (lulus/gagal), kondisi kesehatan (sehat/sakit).

Data Multikategori: Data kategori yang memiliki lebih dari dua kemungkinan nilai. Contohnya: status pekerjaan (pegawai tetap, kontrak, freelance), tipe pelanggan (baru, aktif, tidak aktif).

1.3 Perbedaan antara Data Kategorik dan Data Kuantitatif

Data kategorik memiliki karakteristik yang membedakannya secara jelas dari data kuantitatif. Perbedaan utamanya terletak pada sifat dan cara pengukurannya. Data kategorik merepresentasikan kelompok atau klasifikasi dan tidak dinyatakan dalam bentuk angka yang memiliki makna matematis. Artinya, data ini tidak memiliki nilai numerik yang dapat dihitung atau dioperasikan secara matematis seperti penjumlahan atau rata-rata. Sebaliknya, data kuantitatif adalah data yang bersifat numerik dan dapat diukur dalam skala kontinu. Data jenis ini memungkinkan dilakukannya operasi matematika, seperti menghitung total, mencari rata-rata, atau mengukur variasi. Contohnya termasuk tinggi badan, berat, pendapatan, dan waktu.

1.4 Manfaat Analisis Data Kategorik di Berbagai Sektor

Analisis data kategorik memberikan kontribusi besar dalam berbagai bidang, baik dalam dunia akademik maupun praktik industri. Teknik ini digunakan untuk menggali wawasan dari data yang bersifat kualitatif, sehingga mendukung pengambilan keputusan yang lebih akurat dan berbasis bukti. Berikut adalah beberapa bidang yang secara luas memanfaatkan analisis data kategori:

1.4.1 Ilmu Sosial dan Psikologi

Di bidang ini, analisis kategori digunakan untuk menelusuri pola perilaku, opini publik, serta kondisi sosial.

1.4.2 Dunia Kesehatan dan Kedokteran

Dalam studi medis dan kesehatan masyarakat, data kategori digunakan untuk mengklasifikasikan pasien serta menganalisis pola penyakit.

1.4.3 Bidang Pemasaran dan Dunia Usaha

Analisis kategori dalam dunia bisnis sangat penting untuk memahami konsumen dan strategi pasar.

1.4.4 Sektor Pendidikan

Dalam dunia pendidikan, data kategorik dipakai untuk mengukur persepsi dan performa siswa atau mahasiswa serta menilai efektivitas pembelajaran.

1.4.5 Kebijakan Publik dan Pemerintahan

Pemerintah menggunakan data kategori untuk memahami kebutuhan masyarakat dan mengevaluasi keberhasilan program yang dijalankan.

1.4.6 Keamanan dan Kriminologi

Dalam bidang ini, analisis kategori membantu memahami tren kriminalitas dan menyusun kebijakan keamanan.

2. Metode dalam Analisis Data Kategori

Berikut adalah beberapa metode yang umum digunakan dalam analisis data kategori:

2.1 Tabel Kontingensi dan Uji Chi-Square

Digunakan untuk menguji hubungan antara dua variabel kategori.

2.2 Regresi Logistik

Digunakan untuk menganalisis hubungan antara variabel independen (bisa berupa kategori atau numerik) dan variabel dependen yang bersifat kategori.

2.3 Analisis Korespondensi

Teknik eksplorasi yang membantu memvisualisasikan hubungan antara kategori dalam data dua dimensi.

2.4 Decision Tree dan Random Forest

Metode machine learning yang sering digunakan untuk klasifikasi berbasis kategori.

Analisis data kategori penting untuk memahami pola, hubungan, dan tren dalam data yang bersifat kualitatif. Dengan metode yang tepat, data kategori dapat membantu dalam pengambilan keputusan berdasarkan hubungan antarvariabel.

Tujuan dari analisis data kategori adalah mengidentifikasi perbedaan antar kelompok, menemukan keterkaitan antarvariabel, serta membuat prediksi berdasarkan pola yang ditemukan. Biasanya, data kategori dikumpulkan melalui survei, wawancara, atau pencatatan administratif, sehingga penting memastikan validitas dan reliabilitas data agar hasil analisis lebih akurat.

3. Distribusi Probabilitas dalam Data Kategori

Distribusi probabilitas dalam data kategori mengacu pada peluang atau kemungkinan suatu kategori tertentu muncul dalam suatu dataset. Dalam analisis data kategori, distribusi probabilitas sering digunakan untuk memahami bagaimana data tersebar dan untuk membuat prediksi atau inferensi statistik. Beberapa jenis distribusi probabilitas yang umum digunakan dalam data kategori meliputi:

3.1 Distribusi Bernoulli

Digunakan untuk variabel kategori biner (dua kemungkinan, seperti sukses/gagal, ya/tidak).

• Fungsi Massa Probabilitas (PMF)

Sebuah variabel acak \(X\) mengikuti distribusi Bernoulli dengan parameter \(p\), jika:

\[ P(X = x) = p^x (1 - p)^{1-x}, \quad x \in \{0,1\} \]

  • \(p\) adalah probabilitas sukses
  • \(1 - p\) adalah probabilitas gagal
• Statistik Distribusi Bernoulli

Ekspektasi (Mean): \[ E[X] = p \]

Varians: \[ Var(X) = p(1 - p) \]

Modus:
\[ mode(X) = \begin{cases} 1, & \text{jika } p > 0.5 \\ 0, & \text{jika } p \leq 0.5 \end{cases} \]

 library(knitr)
 library(kableExtra)
 library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
## 
##     group_rows
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# 10 percobaan bernoulli
set.seed(123)
 contoh_bernoulli <- rbinom(n = 10, size = 1, prob = 0.5) 
contoh_bernoulli
##  [1] 0 1 0 1 1 0 1 1 1 0
3.2 Distribusi Binomial

Distribusi Binomial adalah distribusi probabilitas diskret yang menyatakan jumlah keberhasilan dalam \(n\) percobaan Bernoulli yang independen dengan probabilitas sukses \(p\).

• Fungsi Massa Probabilitas (PMF)

Jika \(X\) adalah jumlah keberhasilan dalam \(n\) percobaan Bernoulli dengan peluang sukses \(p\), maka:

\[ P(X = k) = {n \choose k} p^k (1 - p)^{n-k}, \quad k = 0,1,2,\dots,n \]

dengan

\[ {n \choose k} = \frac{n!}{k!(n-k)!} \]

di mana:
- \(n\) = jumlah percobaan
- \(k\) = jumlah keberhasilan
- \(p\) = probabilitas sukses
- \(1 - p\) = probabilitas gagal

• Statistik Distribusi Binomial

Ekspektasi (Mean): \[ E[X] = np \]

Varians: \[ Var(X) = np(1 - p) \]

Modus:
\[ mode(X) = \lfloor (n+1) p \rfloor \]

# 10 percobaan Binomial dengan 5 ulangan
 set.seed(123)
 contoh_binomial <- rbinom(n = 10, size = 5, prob = 0.5) 
 contoh_binomial
##  [1] 2 3 2 4 4 1 3 4 3 2
3.3 Distribusi Multinomial

Distribusi Multinomial adalah generalisasi dari distribusi Binomial di mana setiap percobaan memiliki lebih dari dua kemungkinan hasil.

• Fungsi Massa Probabilitas (PMF)

Jika \(X_1, X_2, ..., X_k\) adalah jumlah kejadian dari masing-masing kategori dalam \(n\) percobaan independen, dan setiap kategori memiliki probabilitas \(p_1, p_2, ..., p_k\), maka:

\[ P(X_1 = x_1, X_2 = x_2, ..., X_k = x_k) = \frac{n!}{x_1! x_2! ... x_k!} p_1^{x_1} p_2^{x_2} ... p_k^{x_k} \]

dengan syarat:

\[ \sum_{i=1}^{k} X_i = n, \quad \sum_{i=1}^{k} p_i = 1 \]

di mana:
- \(n\) = jumlah total percobaan
- \(X_i\) = jumlah kejadian kategori ke-\(i\)
- \(p_i\) = probabilitas kejadian kategori ke-\(i\)

• Statistik Distribusi Multinomial

Ekspektasi (Mean): \[ E[X_i] = n p_i \]

Varians:
\[ Var(X_i) = n p_i (1 - p_i) \]

Kovarians:
\[ Cov(X_i, X_j) = -n p_i p_j, \quad i \neq j \]

set.seed(123)
contoh_multinomial <- rmultinom(n = 1, size = 10, prob = c(0.2, 0.3, 0.5))
contoh_multinomial
##      [,1]
## [1,]    1
## [2,]    5
## [3,]    4
3.4 Distribusi Poisson

Distribusi Poisson adalah distribusi probabilitas diskret yang menyatakan jumlah kejadian dalam suatu interval waktu atau ruang tertentu dengan rata-rata kejadian λ per interval.

• Fungsi Massa Probabilitas (PMF)

Jika \(X\) menyatakan jumlah kejadian dalam interval dengan rata-rata kejadian \(\lambda\), maka:

\[ P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}, \quad k = 0,1,2, \dots \]

di mana:
- \(k\) adalah jumlah kejadian
- \(\lambda\) adalah rata-rata jumlah kejadian dalam interval
- \(e\) adalah bilangan Euler (\(\approx 2.718\))

• Statistik Distribusi Poisson

Ekspektasi (Mean):
\[ E[X] = \lambda \]

Varians: \[ Var(X) = \lambda \]

Modus:
\[ mode(X) = \lfloor \lambda \rfloor \]

set.seed(123)
contoh_poisson <- rpois(n = 10, lambda = 4)
contoh_poisson
##  [1] 3 6 3 6 7 1 4 7 4 4

4. Desain Sampling dalam Analisis Data Kategori

Desain sampling sangat penting dalam analisis data kategori untuk menentukan validitas dan reliabilitas hasil penelitian. Tujuan penelitian dan jenis data yang dikumpulkan memengaruhi pemilihan desain sampling yang tepat. Dalam analisis data kategori, dua pendekatan utama untuk desain sampling adalah prospective dan retrospective.

4.1 Prospective Sampling

Prospective Sampling adalah metode pengambilan sampel dalam penelitian di mana partisipan diikuti dan diamati dalam jangka waktu tertentu ke depan. Dalam metode ini, peneliti mengumpulkan data sejak awal penelitian dan terus memantau variabel yang diteliti hingga mencapai hasil yang diinginkan.

4.1.1 Eksperimen

Subjek dalam studi eksperimental dibagi secara acak ke dalam kelompok perlakuan dan kontrol. Teknik sampling yang biasa digunakan termasuk:

Simple Random Sampling (SRS) : Setiap anggota populasi memiliki peluang yang sama untuk dipilih.

Stratified Random Sampling : Populasi dibagi menjadi kelompok berdasarkan fitur tertentu, sampel diambil secara acak dari setiap kelompok.

Cluster Sampling : Populasi dibagi menjadi kelompok-kelompok (cluster), kemudian beberapa cluster dipilih secara acak untuk dianalisis.

4.1.2 Studi Kohort Studi kohort adalah penelitian observasional di mana kelompok orang dengan atribut tertentu diikuti dari waktu ke waktu untuk mempelajari peristiwa. Studi kohort sering menggunakan jenis sampling seperti:

Census Sampling : Penelitian melibatkan semua orang yang termasuk dalam populasi tertentu.

Systematic Sampling : Subjek dipilih berdasarkan interval tertentu dari daftar populasi.

Matched Sampling : Variabel tertentu digunakan untuk membandingkan setiap anggota kelompok kohort dengan anggota kelompok yang sebanding.

4.2 Reprospective Sampling

Retrospective sampling adalah metode dimana data dikumpulkan dari peristiwa yang telah terjadi sebelumnya. Teknik ini sering digunakan dalam studi observasional yang mencari hubungan antara faktor risiko dan hasil tertentu.

4.2.1 Studi kasus - kontrol

Dalam studi kasus-kontrol, sekelompok individu dengan kondisi tertentu (kasus) dibandingkan dengan kelompok tanpa kondisi tersebut (kontrol). Teknik sampling yang sering digunakan meliputi:

Purposive Sampling : Pemilihan sampel berdasarkan karakteristik yang relevan dengan tujuan penelitian.

Snowball Sampling: Responden awal membantu merekrut subjek lain yang memiliki karakteristik serupa.

Incidence Density Sampling: Kasus dan kontrol dipilih dari populasi yang sama dengan memper hitungkan periode waktu kemunculan kasus.

4.2.2 Studi Kohort Retrospektif

Dalam studi kohort retrospektif, data historis digunakan untuk mengelompokkan orang berdasarkan paparan mereka, dan kemudian menganalisis hasilnya. Teknik sampling yang umum digunakan termasuk:

Convenience Sampling: Subjek dipilih berdasarkan ketersediaan data yang sudah ada.

Quota Sampling: Sampel dipilih untuk mencerminkan proporsi tertentu dalam populasi.

Case-Based Sampling: Sampel dipilih berdasarkan karakteristik kasus yang telah terjadi.

Tabel Kontingensi 2 x 2

Tabel Kontingensi adalah tabel yang menampilkan distribusi frekuensi dari dua variabel kategorikal, masing-masing dengan dua kategori, dalam format matriks 2x2.

Struktur Tabel Kontingensi 2×2 :

Kategori 1 (+) Kategori 2 (–) Total
Grup 1 n11 n12 n1.
Grup 2 n21 n22 n2.
Total n.1 n.2 n

Keterangan:

Tabel ini menjadi dasar dalam pengujian statistik seperti Chi-Square Test, Fisher’s Exact Test, dan perhitungan Odds Ratio, yang berguna untuk mengukur kekuatan serta signifikansi hubungan antara dua variabel kategori.

5.1 Distribusi Peluang dalam Tabel Kontingensi 2 × 2

5.1.1 Peluang Bersama

Peluang bersama (joint probability) adalah peluang terjadinya dua kejadian secara bersamaan. Jika A dan B adalah dua kejadian, maka:

\[ P(A_i, B_j) = \frac{n_{ij}}{n} \] 5.1.2 Peluang Marginal

peluang marginal adalah peluang dari satu kejadian tanpa memperhatikan kejadian lainnya. Biasanya dihitung dengan menjumlahkan nilai-nilai pada baris atau kolom tertentu, lalu dibagi total observasi.

  • Peluang Marginal Baris

\[ P(A_i) = \frac{n_{i.}}{n} \]

  • Peluang Marginal Kolom

\[ P(B_j) = \frac{n_{.j}}{n} \]

5.1.3 Peluang Bersyarat

Peluang bersyarat adalah peluang terjadinya suatu kejadian dengan syarat bahwa kejadian lain telah terjadi.

\[ P(B_j \mid A_i) = \frac{P(A_i, B_j)}{P(A_i)} = \frac{n_{ij}}{n_{i.}} \]

Studi Kasus

Misalkan kita memiliki studi tentang efektivitas suatu pengobatan terhadap suatu penyakit. Data dikumpulkan dalam tabel kontingensi berikut:

Sembuh (Y=1) Tidak Sembuh (Y=0) Total
Obat (X=1) 30 10 40
Plasebo(X=0) 20 30 50
Total 50 40 90
# Data input
n11 <- 30  # Obat & sembuh
n12 <- 10  # Obat & tidak sembuh
n21 <- 20  # Plasebo & sembuh
n22 <- 30  # Plasebo & tidak sembuh

# Totals
n1. <- n11 + n12  # Total Obat
n2. <- n21 + n22  # Total Plasebo
n.1 <- n11 + n21  # Total Sembuh
n.2 <- n12 + n22  # Total Tidak Sembuh
n <- n11 + n12 + n21 + n22  # Total keseluruhan
Perhitungan Peluang

Peluang Bersama

\[ P(X=1, Y=1) = \frac{30}{90} = 0.333 \] \[ P(X=1, Y=0) = \frac{10}{90} = 0.111 \] \[ P(X=0, Y=1) = \frac{20}{90} = 0.222 \] \[ P(X=0, Y=0) = \frac{30}{90} = 0.333 \]

Menggunakan Rstudio :

p_A1B1 <- n11 / n
p_A1B2 <- n12 / n
p_A2B1 <- n21 / n
p_A2B2 <- n22 / n

Interpretasi :

  • Peluang bahwa seseorang mendapatkan obat dan sembuh adalah sekitar 33,3%.

  • Peluang bahwa seorang pasien mendapat plasebo dan sembuh adalah 22,2%

  • Peluang seorang pasien diberi obat tapi tidak sembuh adalah 11,1%

  • Peluang bahwa pasien menerima plasebo dan tidak sembuh adalah 33,3%

Peluang Marginal

\[ P(X=1) = \frac{40}{90} \approx 0.444,\quad P(X=0) = \frac{50}{90} \approx 0.556 \] \[ P(Y=1) = \frac{50}{90} \approx 0.556,\quad P(Y=0) = \frac{40}{90} \approx 0.444 \]

Dilakukan perhitungan menggunakan Rstudio :

p_A1 <- n1. / n
p_A2 <- n2. / n
p_B1 <- n.1 / n
p_B2 <- n.2 / n

Interpretasi :

  • Sebanyak 44,4% dari pasien mendapatkan obat.

  • Sebanyak 55,6% pasien mendapatkan plasebo.

  • Peluang pasien sembuh, tanpa memperhatikan pengobatannya, adalah 55,6%.

  • Peluang pasien tidak sembuh, tanpa memperhatikan pengobatannya, adalah 44,4%

Peluang Bersyarat

\[ P(Y=1 \mid X=1) = \frac{30}{40} = 0.75,\quad P(Y=1 \mid X=0) = \frac{20}{50} = 0.4 \]

Dilakukan perhitungan menggunakan Rstudio :

# P(Y=1 | X=1) dan P(Y=1 | X=0)
p_Y1_given_X1 <- n11 / n1.
p_Y1_given_X0 <- n21 / n2.

Interpretasi :

  • Jika diberi obat, peluang sembuh adalah 75%.

  • Jika diberi plasebo, peluang sembuh hanya 40%.

5.2 Ukuran Asosiasi

Dalam statistik inferensial, tabel kontingensi 2×2 merupakan alat yang umum digunakan untuk mengevaluasi hubungan antara dua variabel kategori yang masing-masing memiliki dua tingkat. Melalui tabel ini, peneliti dapat mengamati distribusi frekuensi dan menilai apakah terdapat asosiasi yang signifikan antara kedua variabel tersebut. Analisis asosiasi dalam tabel 2×2 banyak dimanfaatkan di berbagai ilmu, antara lain:

Beberapa ukuran asosiasi yang dapat dihitung dari tabel 2×2 antara lain:

Penggunaan ukuran-ukuran ini sangat penting dalam pengambilan keputusan berbasis data, baik dalam penelitian ilmiah maupun dalam praktik kebijakan publik dan medis. Mereka memberikan gambaran seberapa kuat hubungan antara dua variabel kategori.

5.2.1 Perbedaan Risiko (Risk Difference, RD)

Risk Difference (RD) atau perbedaan risiko adalah salah satu ukuran asosiasi absolut yang digunakan dalam epidemiologi untuk membandingkan risiko suatu kejadian (misalnya penyakit atau hasil tertentu) antara dua kelompok, biasanya kelompok terpapar dan tidak terpapar. RD dihitung dengan mengurangkan proporsi kejadian dalam kelompok terpapar dari proporsi kejadian dalam kelompok tidak terpapar. Rumusnya dituliskan sebagai berikut:

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

Contoh perhitungan menggunakan data studi kasus :

\[ RD = P(Y=1 \mid X=1) - P(Y=1 \mid X=0) = 0.75 - 0.4 = 0.35 \]

Dihitung menggunakan Rstudio :

# Risk Difference
risk_obat <- n11 / n1.
risk_plasebo <- n21 / n2.
RD <- risk_obat - risk_plasebo

Interpretasi : Obat meningkatkan peluang sembuh sebesar 35% dibandingkan plasebo.

5.2.2 Risiko Relatif (Relative Risk, RR):

Relative Risk (RR) atau Risiko Relatif adalah ukuran asosiasi yang digunakan untuk membandingkan kemungkinan terjadinya suatu kejadian (misalnya kesembuhan, penyakit, atau efek pengobatan) antara dua kelompok, yaitu kelompok yang terpapar (misalnya menerima pengobatan) dan kelompok tidak terpapar (misalnya menerima plasebo). RR menggambarkan seberapa besar risiko kejadian dalam kelompok terpapar dibandingkan dengan kelompok tidak terpapar. Rumus perhitungannya adalah sebagai berikut:

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

Contoh perhitungan menggunakan data studi kasus :

\[ RR = \frac{0.75}{0.4} = 1.875 \]

Dihitung menggunakan Rstudio :

RR <- risk_obat / risk_plasebo

Interpretasi : Peluang sembuh dengan obat hampir 1,88 kali lebih besar dibandingkan plasebo.

5.2.3 Odds Ratio (OR):

Odds Ratio (OR) atau rasio odds adalah ukuran asosiasi yang digunakan untuk membandingkan peluang (odds) terjadinya suatu kejadian antara dua kelompok, yaitu kelompok yang terpapar (misalnya menerima pengobatan) dan kelompok tidak terpapar (misalnya menerima plasebo). OR sering digunakan dalam studi kasus-kontrol, namun juga dapat diterapkan dalam studi kohort dan eksperimental.

Rumus Odds Ratio:

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

Contoh perhitungan menggunakan data studi kasus :

\[ \text{Odds}_{X=1} = \frac{30}{10} = 3,\quad \text{Odds}_{X=0} = \frac{20}{30} = \frac{2}{3} \] \[ OR = \frac{3}{2/3} = 4.5 \]

Menggunakan Rstudio :

OR <- (n11 * n22) / (n12 * n21)

Interpretasi : Peluang relatif (odds) untuk sembuh setelah menerima obat adalah 4,5 kali dibandingkan plasebo.

Visualisasi Data

Kesimpulan dan Interpretasi
  • Perbedaan Peluang (Risk Difference, RD) menunjukkan bahwa kelompok yang menerima obat memiliki peluang kesembuhan yang lebih tinggi dibandingkan kelompok plasebo.
  • Risiko Relatif (Relative Risk, RR) lebih besar dari 1, yang menunjukkan bahwa pasien yang menggunakan obat memiliki kemungkinan sembuh lebih tinggi dibandingkan dengan yang tidak menggunakan obat.
  • Odds Ratio (OR) juga lebih besar dari 1, yang menunjukkan bahwa ada asosiasi positif antara penggunaan obat dan tingkat kesembuhan.

Dari hasil analisis tabel kontingensi 2x2 ini, dapat disimpulkan bahwa penggunaan obat berhubungan dengan peningkatan peluang kesembuhan pasien dibandingkan dengan plasebo. Setelah didapatkan hasil dari perhitungannya, hasil ini menunjukkan bahwa obat yang diuji dalam penelitian ini lebih efektif dalam meningkatkan peluang kesembuhan dibandingkan dengan plasebo.

6. Inferensi pada Tabel Kontingensi Dua Arah

Inferensi dalam statistik merupakan proses menarik kesimpulan tentang karakteristik populasi berdasarkan informasi dari sampel. Dalam hal tabel kontingensi dua arah, inferensi bertujuan untuk menganalisis keterkaitan antara dua variabel kategorikal yang datanya disusun dalam bentuk tabel. Tabel kontingensi menyajikan distribusi frekuensi dari kombinasi kategori dua variabel dalam format matriks. Fokus utama dari inferensi di tabel ini adalah untuk mengevaluasi apakah ada hubungan antara kedua variabel tersebut melalui pendekatan estimasi dan pengujian hipotesis.

Secara umum, proses inferensi dalam tabel kontingensi dua arah dibedakan menjadi dua bagian utama :

  • Estimasi

  • Pengujian Hipotesis

6.1 Estimasi

Estimasi meliputi upaya untuk menghitung proporsi-proporsi tertentu, baik yang bersifat marjinal (total dari satu variabel), bersama (gabungan dua variabel), maupun kondisional (berdasarkan syarat variabel lain). Estimasi ini membantu menggambarkan pola hubungan yang ada dalam data.

6.1.1 Estimasi Titik

Estimasi titik adalah metode yang digunakan untuk menentukan satu nilai spesifik sebagai perkiraan terbaik dari suatu parameter populasi berdasarkan data sampel.

Dalam konteks proporsi, estimasi titik dihitung dengan rumus:

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

6.1.2 Estimasi Interval

Estimasi interval digunakan untuk menentukan rentang nilai yang kemungkinan besar mencakup parameter populasi, dengan tingkat keyakinan tertentu.

Rumus umum untuk estimasi interval proporsi adalah:

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

Keterangan:

  • \(Z_{\alpha/2}\) : skor dari distribusi normal standar yang sesuai dengan tingkat kepercayaan yang diinginkan

  • \(\hat{p}\) : estimasi titik untuk proporsi populasi

  • \(n\) : ukuran sampel.

6.2 Uji Hipotesis

6.2.1 Uji Proporsi

Uji proporsi digunakan untuk membandingkan proporsi kejadian antara dua kelompok dalam tabel kontingensi, terutama untuk menentukan apakah terdapat perbedaan yang signifikan dalam proporsi kejadian antara dua kelompok yang berbeda.

Struktur tabel kontingensi 2×2:

Kejadian (+) Tidak Kejadian (-) Total
Grup 1 \(n_{11}\) \(n_{12}\) \(n_{1.}\)
Grup 2 \(n_{21}\) \(n_{22}\) \(n_{2.}\)
Total \(n_{.1}\) \(n_{.2}\) \(n\)

Formulasi Uji Proporsi

Untuk menguji hipotesis bahwa tidak ada perbedaan proporsi antara dua kelompok, kita menggunakan uji z dua proporsi, dengan hipotesis:

  • Hipotesis Nol (\(H_0\)): Tidak ada perbedaan proporsi antara dua kelompok, yaitu \(p_1 = p_2\).

  • Hipotesis Alternatif (\(H_1\)): Terdapat perbedaan proporsi antara dua kelompok, yaitu \(p_1 \neq p_2\).

Estimasi proporsi masing-masing kelompok:

\[ \hat{p}_1 = \frac{n_{11}}{n_{1.}}, \quad \hat{p}_2 = \frac{n_{21}}{n_{2.}} \]

Estimasi proporsi gabungan (pooling proportion):

\[ \hat{p} = \frac{n_{11} + n_{21}}{n_{1.} + n_{2.}} \]

Statistik uji untuk uji proporsi dua sampel:

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

Statistik uji \(Z\) mengikuti distribusi normal baku \(N(0,1)\), dan p-value dihitung berdasarkan nilai kritis dari distribusi normal.

Jika \(|Z|\) lebih besar dari nilai kritis untuk tingkat signifikansi tertentu \(\alpha\) (misalnya 1.96 untuk \(\alpha=0.05\)), maka hipotesis nol ditolak, yang berarti ada perbedaan signifikan antara dua proporsi.

Uji ini cocok digunakan dalam studi kohort dan eksperimen klinis.

Perhitungan Manual Langkah Demi Langkah menggunakan studi kasus awal :

Hipotesis:

  • H0: Tidak ada perbedaan proporsi kesembuhan antara kelompok obat dan plasebo.

  • H1: Ada perbedaan proporsi kesembuhan antara kelompok obat dan plasebo.

Taraf Signifikansi • alpha = 5%

Statistik Uji:

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

# Data
x1 <- 30   # sukses pada kelompok obat
n1 <- 40   # total kelompok obat
x2 <- 20   # sukses pada plasebo
n2 <- 50   # total plasebo

# Uji proporsi dua populasi (dua sisi)
prop.test(c(x1, x2), c(n1, n2), alternative = "two.sided", correct = FALSE)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(x1, x2) out of c(n1, n2)
## X-squared = 11.025, df = 1, p-value = 0.0008989
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.1590921 0.5409079
## sample estimates:
## prop 1 prop 2 
##   0.75   0.40

Keputusan:

Karena P-Value < alpha maka keputusan tolak H0

Kesimpulan

Dengan taraf signifikansi 5% didapatkan keputusan Tolak H0, maka dapat disimpulkan ada perbedaan proporsi kesembuhan.

6.2.2 Uji Asosiasi

Uji asosiasi dalam tabel kontingensi 2×2 bertujuan untuk mengukur hubungan antara dua variabel kategori. Ada tiga ukuran utama yang digunakan, yaitu Risk Difference (RD), Relative Risk (RR), dan Odds Ratio (OR).

  • Risk Difference (RD)

Risk Difference (RD) mengukur selisih absolut antara proporsi kejadian pada dua kelompok.

  • Relative Risk (RR)

Relative Risk (RR) mengukur seberapa besar risiko pada satu kelompok dibandingkan dengan kelompok lain.

  • Odds Ratio (OR)

Odds Ratio (OR) membandingkan peluang (odds) kejadian antara dua kelompok, bukan proporsi risiko.

Hipotesis Uji dalam Tabel Kontingensi 2 × 2

Dalam uji asosiasi untuk tabel kontingensi 2×2, tujuan utama adalah untuk menguji apakah terdapat hubungan antara dua variabel kategori.

Hipotesis yang diuji adalah:

  • Hipotesis Nol (𝐻₀):

Tidak ada asosiasi antara dua variabel. (Artinya, kejadian pada satu variabel tidak berhubungan dengan kejadian pada variabel lainnya.)

  • Hipotesis Alternatif (𝐻₁):

Terdapat asosiasi antara dua variabel. (Artinya, kejadian pada satu variabel berhubungan dengan kejadian pada variabel lainnya.)

Rumus Risk Difference (RD)

\[ RD = \left( \frac{n_{11}}{n_{1.}} \right) - \left( \frac{n_{21}}{n_{2.}} \right) \]

Keterangan:

  • \(n_{11}\) = jumlah kejadian di Grup 1
  • \(n_{1.}\) = total sampel di Grup 1
  • \(n_{21}\) = jumlah kejadian di Grup 2
  • \(n_{2.}\) = total sampel di Grup 2

Standard Error (SE) untuk RD

\[ SE(RD) = \sqrt{ \frac{ \hat{p}_1 (1 - \hat{p}_1) }{ n_{1.} } + \frac{ \hat{p}_2 (1 - \hat{p}_2) }{ n_{2.} } } \]

di mana :

  • \(\hat{p}_1 = \frac{n_{11}}{n_{1.}}\) (proporsi kejadian di Grup 1)
  • \(\hat{p}_2 = \frac{n_{21}}{n_{2.}}\) (proporsi kejadian di Grup 2)

Statistik Uji Z untuk RD

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

  • Jika nilai absolut \(Z_{RD}\) lebih besar dari nilai kritis (contoh, 1.96 untuk α=0.05), maka hipotesis nol ditolak.
  • Jika tidak, maka gagal menolak hipotesis nol.

Interpretasi

  • Jika RD = 0, maka tidak ada perbedaan risiko antara dua kelompok.

  • Jika RD ≠ 0, maka ada perbedaan risiko antara dua kelompok.


6.2.2.2 Relative Risk (RR)

membandingkan kemungkinan kejadian antara dua kelompok.

Rumus Relative Risk (RR)

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

Keterangan:

  • \(n_{11}\) = jumlah kejadian di Grup 1

  • \(n_{1.}\) = total sampel di Grup 1

  • \(n_{21}\) = jumlah kejadian di Grup 2

  • \(n_{2.}\) = total sampel di Grup 2


Standard Error untuk log(RR)

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


Statistik uji Z

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

Keterangan:

  • \(\ln(RR)\) = logaritma natural dari RR

  • \(SE(\ln RR)\) = standard error dari log(RR)


Interpretasi

  • RR = 1: Risiko sama pada kedua kelompok.

  • RR > 1: Risiko di Grup 1 lebih besar dibanding Grup 2.

  • RR < 1: Risiko di Grup 1 lebih kecil dibanding Grup 2.


Relative Risk sering digunakan dalam studi kohort, studi prospektif, dan analisis risiko di bidang epidemiologi.


6.2.2.3 Odds Ratio (OR)

Odds Ratio (OR) membandingkan peluang kejadian antara dua kelompok.

Rumus Odds Ratio (OR)

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

Keterangan:

  • \(n_{11}\) = jumlah kejadian di Grup 1

  • \(n_{12}\) = jumlah tidak kejadian di Grup 1

  • \(n_{21}\) = jumlah kejadian di Grup 2

  • \(n_{22}\) = jumlah tidak kejadian di Grup 2


Standard Error untuk log(OR)

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


Statistik uji Z

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

Keterangan :

  • \(\ln(OR)\) = logaritma natural dari OR

  • \(SE(\ln OR)\) = standard error dari log(OR)


Interpretasi

  • OR = 1: Tidak ada perbedaan odds antara dua kelompok.

  • OR > 1: Odds kejadian lebih besar di Grup 1.

  • OR < 1: Odds kejadian lebih kecil di Grup 1.


Odds Ratio sering digunakan dalam studi kasus-kontrol, karena odds lebih stabil untuk kejadian langka dibandingkan dengan risiko yang bisa lebih rentan terhadap variabilitas.


Contoh Perhitungan manual misalkan kita mempunyai data sebagai berikut :

Penelitian tentang efek vaksin terhadap infeksi:

Infeksi (+) Infeksi (−) Total
Vaksin 10 90 100
Tidak Vaksin 30 70 100

1. Risk Difference (RD)

Rumus :

\[ RD = \left( \frac{n_{11}}{n_{1.}} \right) - \left( \frac{n_{21}}{n_{2.}} \right) \]

Perhitungan :

\[ RD = \left( \frac{10}{100} \right) - \left( \frac{30}{100} \right) = 0.1 - 0.3 = -0.2 \]


Standard Error (SE) RD:

\[ SE(RD) = \sqrt{ \frac{0.1(1-0.1)}{100} + \frac{0.3(1-0.3)}{100} } \]

\[ SE(RD) = \sqrt{ \frac{0.09}{100} + \frac{0.21}{100} } = \sqrt{0.003} \approx 0.0548 \]


Statistik Uji Z RD:

\[ Z_{RD} = \frac{-0.2}{0.0548} \approx -3.65 \]


2. Relative Risk (RR)

Rumus :

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

Perhitungan :

\[ RR = \frac{0.1}{0.3} = 0.333 \]


Standard Error (SE) log(RR):

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

\[ SE(\ln(RR)) = \sqrt{ \frac{1}{10} + \frac{1}{30} } = \sqrt{0.1333} \approx 0.365 \]


Statistik Uji Z RR:

\[ \ln(RR) = \ln(0.333) \approx -1.099 \]

\[ Z_{RR} = \frac{-1.099}{0.365} \approx -3.01 \]


3. Odds Ratio (OR)

Rumus :

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

Perhitungan :

\[ OR = \frac{10 \times 70}{90 \times 30} = \frac{700}{2700} \approx 0.259 \]


Standard Error (SE) log(OR):

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

\[ SE(\ln(OR)) = \sqrt{0.1 + 0.0111 + 0.0333 + 0.0143} = \sqrt{0.1587} \approx 0.398 \]


Statistik Uji Z OR:

\[ \ln(OR) = \ln(0.259) \approx -1.349 \]

\[ Z_{OR} = \frac{-1.349}{0.398} \approx -3.39 \]


Perhitungan menggunakan Rstudio :

# Data tabel kontingensi
#          Infeksi(+)  Infeksi(-)
# Vaksin        10         90
# Tidak Vaksin  30         70

# Input data
n11 <- 10   # Vaksin, Infeksi (+)
n12 <- 90   # Vaksin, Infeksi (−)
n21 <- 30   # Tidak vaksin, Infeksi (+)
n22 <- 70   # Tidak vaksin, Infeksi (−)

n1. <- n11 + n12  # Total vaksin
n2. <- n21 + n22  # Total tidak vaksin

# 1. Risk Difference (RD)
p1_hat <- n11 / n1.  # Proporsi infeksi di kelompok vaksin
p2_hat <- n21 / n2.  # Proporsi infeksi di kelompok tidak vaksin
RD <- p1_hat - p2_hat

# Standard Error RD
SE_RD <- sqrt( (p1_hat * (1 - p1_hat)) / n1. + (p2_hat * (1 - p2_hat)) / n2. )

# Z statistik untuk RD
Z_RD <- RD / SE_RD

# 2. Relative Risk (RR)
RR <- p1_hat / p2_hat

# Standard Error log(RR)
SE_logRR <- sqrt( (1/n11) - (1/n1.) + (1/n21) - (1/n2.) )

# Z statistik untuk RR
logRR <- log(RR)
Z_RR <- logRR / SE_logRR

# 3. Odds Ratio (OR)
OR <- (n11 * n22) / (n12 * n21)

# Standard Error log(OR)
SE_logOR <- sqrt(1/n11 + 1/n12 + 1/n21 + 1/n22)

# Z statistik untuk OR
logOR <- log(OR)
Z_OR <- logOR / SE_logOR

# Tampilkan hasil
cat("=== Hasil Perhitungan ===\n")
## === Hasil Perhitungan ===
cat("\n-- Risk Difference (RD) --\n")
## 
## -- Risk Difference (RD) --
cat("RD:", RD, "\n")
## RD: -0.2
cat("Standard Error RD:", SE_RD, "\n")
## Standard Error RD: 0.05477226
cat("Z_RD:", Z_RD, "\n")
## Z_RD: -3.651484
cat("\n-- Relative Risk (RR) --\n")
## 
## -- Relative Risk (RR) --
cat("RR:", RR, "\n")
## RR: 0.3333333
cat("Standard Error log(RR):", SE_logRR, "\n")
## Standard Error log(RR): 0.3366502
cat("Z_RR:", Z_RR, "\n")
## Z_RR: -3.263365
cat("\n-- Odds Ratio (OR) --\n")
## 
## -- Odds Ratio (OR) --
cat("OR:", OR, "\n")
## OR: 0.2592593
cat("Standard Error log(OR):", SE_logOR, "\n")
## Standard Error log(OR): 0.3984095
cat("Z_OR:", Z_OR, "\n")
## Z_OR: -3.388289

Kesimpulan

  • Risk Difference (RD) menghitung selisih probabilitas kejadian antara dua kelompok, sehingga menunjukkan perbedaan risiko secara absolut.

  • Relative Risk (RR) membandingkan tingkat risiko suatu kejadian pada satu kelompok dibandingkan dengan kelompok lain.

  • Odds Ratio (OR) membandingkan rasio peluang terjadinya kejadian antara dua kelompok yang diamati.

  • Standard Error dan statistik uji Z berperan dalam mengevaluasi apakah asosiasi yang ditemukan secara statistik bermakna atau tidak.

6.2.3 Uji Independensi

Uji independensi bertujuan untuk mengevaluasi apakah dua variabel kategorik memiliki hubungan atau tidak dalam suatu populasi.

6.2.3.1 Uji Chi-Square

Metode Chi-Square digunakan untuk melihat apakah distribusi pengamatan berbeda secara signifikan dari distribusi yang diharapkan jika kedua variabel tidak saling berhubungan.

Rumus Chi-Square:

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

dimana:

  • \(O_{ij}\) = nilai aktual (observasi) pada sel ke-\(i,j\),

  • \(E_{ij}\) = nilai ekspektasi pada sel ke-\(i,j\).

Nilai harapan (\(E_{ij}\)) dihitung menggunakan rumus:

\[ E_{ij} = \frac{(\text{Total baris ke-}i) \times (\text{Total kolom ke-}j)}{N} \]

dengan:

  • Total baris ke-\(i\) = jumlah seluruh nilai dalam baris ke-\(i\),

  • Total kolom ke-\(j\) = jumlah seluruh nilai dalam kolom ke-\(j\),

  • \(N\) = total keseluruhan observasi.

Contoh perhitungan manual Chi-Square

Sebuah survei dilakukan untuk mengetahui hubungan antara Jenis Kelamin dan Preferensi Minuman. Data:

Kopi Teh Total
Pria 30 10 40
Wanita 20 40 60
Total 50 50 100

Perhitungan Manual

  1. Nilai Harapan (Expected Value)

\[ E_{ij} = \frac{(\text{Total baris ke-i}) \times (\text{Total kolom ke-j})}{\text{Total keseluruhan}} \]

Perhitungan:

  • Pria-Kopi: \(\frac{40 \times 50}{100} = 20\)

  • Pria-Teh: \(\frac{40 \times 50}{100} = 20\)

  • Wanita-Kopi: \(\frac{60 \times 50}{100} = 30\)

  • Wanita-Teh: \(\frac{60 \times 50}{100} = 30\)

  1. Hitung (O-E)\(^2\) / E untuk tiap sel

\[ \chi^2 = \sum \frac{(O - E)^2}{E} \]

  • Pria-Kopi: \(\frac{(30-20)^2}{20} = 5\)

  • Pria-Teh: \(\frac{(10-20)^2}{20} = 5\)

  • Wanita-Kopi: \(\frac{(20-30)^2}{30} \approx 3.33\)

  • Wanita-Teh: \(\frac{(40-30)^2}{30} \approx 3.33\)

Total:

\[ \chi^2 = 5 + 5 + 3.33 + 3.33 = 16.66 \]

  1. Derajat Kebebasan

\[ \text{df} = (\text{Jumlah Baris} - 1) \times (\text{Jumlah Kolom} - 1) = (2-1)\times(2-1) = 1 \]

  1. Keputusan

Karena nilai \(\chi^2 = 16.66\) lebih besar dari \(\chi^2\) tabel (3.841 untuk α = 0.05, df = 1), maka:

Tolak H₀ — terdapat hubungan antara jenis kelamin dan preferensi minuman.

  1. Kesimpulan

Dengan taraf signifikansi 5% didapatkan keputusan tolak H0, maka dapat disimpulkan terdapat hubungan antara jenis kelamin dan preferensi minuman.

# Membuat tabel kontingensi
tabel <- matrix(c(30, 10, 20, 40), nrow = 2, byrow = TRUE)
dimnames(tabel) <- list(
  Jenis_Kelamin = c("Pria", "Wanita"),
  Minuman = c("Kopi", "Teh")
)

# Menampilkan tabel kontingensi
tabel
##              Minuman
## Jenis_Kelamin Kopi Teh
##        Pria     30  10
##        Wanita   20  40
# Melakukan uji Chi-Square
hasil_uji <- chisq.test(tabel)

# Menampilkan hasil uji Chi-Square
hasil_uji
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabel
## X-squared = 15.042, df = 1, p-value = 0.0001052

Kesimpulan :

Berdasarkan hasil uji Chi-Square, karena p-value yang sangat kecil (2.566 x 10⁻⁵) lebih kecil dari 0.05, kita menolak hipotesis nol. Ini berarti bahwa ada hubungan yang signifikan secara statistik antara jenis kelamin dan preferensi minuman dalam sampel yang diuji. Dengan demikian, dapat disimpulkan bahwa jenis kelamin mempengaruhi preferensi minuman (Kopi vs Teh) dalam data yang diberikan.

6.2.3.2 Partisi Chi-Square

Partisi Chi-Square digunakan untuk mengidentifikasi kategori mana dalam tabel kontingensi yang paling berpengaruh terhadap hubungan yang signifikan. Jika uji Chi-Square pada tabel kontingensi I × J signifikan, maka partisi Chi-Square memungkinkan kita untuk menguraikan efek hubungan dalam subkelompok yang lebih kecil.

Menurut Lancaster dan Irwin, statistik uji Chi-Square dapat dibagi menjadi komponen-komponen sebanyak derajat bebas dari tabel kontingensi, yang memungkinkan identifikasi kategori mana yang paling berkontribusi pada hubungan signifikan. Hal ini juga dikenal sebagai Simpson’s Paradox, di mana tren yang muncul dalam beberapa kelompok data dapat menghilang atau bahkan berbalik arah ketika data tersebut digabungkan.

Langkah-Langkah Partisi Chi-Square:

  1. Menggunakan tabel I × J: Hitung uji Chi-Square untuk keseluruhan tabel.

  2. Memecah Tabel Kontingensi: Pecah tabel menjadi subkelompok yang lebih kecil (tabel 2 × 2).

  3. Hitung Statistik Chi-Square pada Subkelompok: Lakukan uji Chi-Square pada tabel 2 × 2.

  4. Interpretasi Kategori yang Signifikan: Identifikasi kategori mana yang memberikan kontribusi signifikan terhadap hubungan yang ditemukan.

Contoh Perhitungan Manual :

Data :

Jenis Kelamin Engineer Teacher Doctor Total
Female 300 400 500 1200
Male 450 350 550 1350
Total 750 750 1050 2550

Hipotesis Uji

  • Hipotesis Nol (H₀): Tidak ada hubungan antara variabel Usia dan Preferensi Makanan.

  • Hipotesis Alternatif (H₁): Ada hubungan antara variabel Usia dan Preferensi Makanan.

Langkah-langkah Perhitungan Manual

Langkah 1: Menghitung Frekuensi Ekspektasi

Frekuensi ekspektasi dihitung menggunakan rumus :

Rumus:

\[ E_{ij} = \frac{(\text{Total Baris}_i \times \text{Total Kolom}_j)}{\text{Total Keseluruhan}} \]

Untuk Female - Engineer

\[ E_{11} = \frac{1200 \times 750}{2550} = \frac{900000}{2550} \approx 352.94 \]

Untuk Female - Teacher

\[ E_{12} = \frac{1200 \times 750}{2550} = \frac{900000}{2550} \approx 352.94 \]

Untuk Female - Doctor

\[ E_{13} = \frac{1200 \times 1050}{2550} = \frac{1260000}{2550} \approx 494.12 \]

Untuk Male - Engineer

\[ E_{21} = \frac{1350 \times 750}{2550} = \frac{1012500}{2550} \approx 397.06 \]

Untuk Male - Teacher

\[ E_{22} = \frac{1350 \times 750}{2550} = \frac{1012500}{2550} \approx 397.06 \]

Untuk Male - Doctor

\[ E_{23} = \frac{1350 \times 1050}{2550} = \frac{1417500}{2550} \approx 555.88 \]

Langkah 2: Hitung Statistik Uji Chi-Square

Statistik uji Chi-Square dihitung dengan rumus:

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

dimana:

  • \(O_{ij}\) = frekuensi observasi pada sel ke-i,j

  • \(E_{ij}\) = frekuensi ekspektasi pada sel ke-i,j

Hitung Setiap Komponen

Female - Engineer:

\[ \frac{(300 - 352.94)^2}{352.94} = \frac{(-52.94)^2}{352.94} = \frac{2803.64}{352.94} \approx 7.95 \]

Female - Teacher:

\[ \frac{(400 - 352.94)^2}{352.94} = \frac{(47.06)^2}{352.94} = \frac{2214.64}{352.94} \approx 6.27 \]

Female - Doctor:

\[ \frac{(500 - 494.12)^2}{494.12} = \frac{(5.88)^2}{494.12} = \frac{34.57}{494.12} \approx 0.07 \]

Male - Engineer:

\[ \frac{(450 - 397.06)^2}{397.06} = \frac{(52.94)^2}{397.06} = \frac{2803.64}{397.06} \approx 7.06 \]

Male - Teacher:

\[ \frac{(350 - 397.06)^2}{397.06} = \frac{(-47.06)^2}{397.06} = \frac{2214.64}{397.06} \approx 5.58 \]

Male - Doctor:

\[ \frac{(550 - 555.88)^2}{555.88} = \frac{(-5.88)^2}{555.88} = \frac{34.57}{555.88} \approx 0.06 \]


Jumlahkan Semua Nilai

\[ \chi^2 = 7.95 + 6.27 + 0.07 + 7.06 + 5.58 + 0.06 = \boxed{26.99} \]


Hasil

  • Nilai statistik uji Chi-Square (χ²) ≈ 26.99

Langkah 3: Bandingkan dengan Distribusi Chi-Square

Derajat bebas (df) dihitung menggunakan rumus:

\[ df = (banyak\ baris - 1) \times (banyak\ kolom - 1) \]

Tabel kita memiliki:

  • 2 baris (Female, Male)

  • 3 kolom (Engineer, Teacher, Doctor)

Sehingga:

\[ df = (2 - 1) \times (3 - 1) = 1 \times 2 = 2 \]

Menentukan Nilai Kritis

Untuk tingkat signifikansi \(\alpha = 0.05\) dan \(df = 2\), kita lihat di tabel chi-square atau menggunakan R:

# Nilai kritis dari distribusi chi-square
qchisq(0.95, df = 2)
## [1] 5.991465

Karena:

\[ X^2 = 26.99 > 5.991 \]

maka tolak H0.


Kesimpulan :

Dengan taraf signifikansi 5% didapatkan keputusan tolak H0 yang artinya Terdapat hubungan yang signifikan antara jenis kelamin dan jenis profesi. Dengan demikian, distribusi profesi tidak merata antara laki-laki dan perempuan.

Perhitungan menggunakan Rstudio

# Membuat tabel observasi
observed <- matrix(c(300, 400, 500,
                     450, 350, 550),
                   nrow = 2, byrow = TRUE)

# Menambahkan nama baris dan kolom
rownames(observed) <- c("Female", "Male")
colnames(observed) <- c("Engineer", "Teacher", "Doctor")

# Menampilkan tabel observasi
print("Tabel Observasi:")
## [1] "Tabel Observasi:"
print(observed)
##        Engineer Teacher Doctor
## Female      300     400    500
## Male        450     350    550
# Menghitung uji chi-square
chi_result <- chisq.test(observed)

# Menampilkan hasil uji
print("Hasil Uji Chi-Square:")
## [1] "Hasil Uji Chi-Square:"
print(chi_result)
## 
##  Pearson's Chi-squared test
## 
## data:  observed
## X-squared = 26.984, df = 2, p-value = 1.382e-06
# Menampilkan nilai statistik chi-square saja
cat("\nNilai Chi-Square:", chi_result$statistic)
## 
## Nilai Chi-Square: 26.98413
# Menampilkan nilai p-value
cat("\nP-value:", chi_result$p.value)
## 
## P-value: 1.381883e-06
# Menampilkan frekuensi ekspektasi
cat("\n\nFrekuensi Ekspektasi:")
## 
## 
## Frekuensi Ekspektasi:
print(round(chi_result$expected, 2))
##        Engineer Teacher Doctor
## Female   352.94  352.94 494.12
## Male     397.06  397.06 555.88
# Keputusan berdasarkan alpha 0.05
alpha <- 0.05
if (chi_result$p.value < alpha) {
  cat("\nKeputusan: Tolak H0 - Terdapat hubungan signifikan antara jenis kelamin dan profesi.")
} else {
  cat("\nKeputusan: Gagal tolak H0 - Tidak terdapat hubungan signifikan antara jenis kelamin dan profesi.")
}
## 
## Keputusan: Tolak H0 - Terdapat hubungan signifikan antara jenis kelamin dan profesi.

Langkah 2: Lakukan Partisi Chi-Square

Partisi 1: Engineer vs Teacher

# Ambil kolom Engineer dan Teacher
obs_part1 <- observed[, c("Engineer", "Teacher")]
obs_part1
##        Engineer Teacher
## Female      300     400
## Male        450     350
# Hitung chi-square untuk partisi 1
chi_part1 <- chisq.test(obs_part1)
chi_part1
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  obs_part1
## X-squared = 26.253, df = 1, p-value = 2.995e-07

Chi-Square : X² = 26.253, P-Value = 0.0000002995

Partisi 2: Doctor vs (Engineer + Teacher)

# Gabungkan Engineer + Teacher sebagai satu kolom
eng_teacher <- rowSums(observed[, c("Engineer", "Teacher")])
doctor <- observed[, "Doctor"]

# Buat matriks baru 2x2
obs_part2 <- cbind(eng_teacher, doctor)
colnames(obs_part2) <- c("Engineer_Teacher", "Doctor")
obs_part2
##        Engineer_Teacher Doctor
## Female              700    500
## Male                800    550
# Hitung chi-square untuk partisi 2
chi_part2 <- chisq.test(obs_part2)
chi_part2
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  obs_part2
## X-squared = 0.18826, df = 1, p-value = 0.6644

Chi-Square : X² = 0.18826 , P-Value = 0.6644

cat("Partisi 1 (Engineer vs Teacher):", round(chi_part1$statistic, 2), "\n")
## Partisi 1 (Engineer vs Teacher): 26.25
cat("Partisi 2 (Doctor vs lainnya):", round(chi_part2$statistic, 2), "\n")
## Partisi 2 (Doctor vs lainnya): 0.19
cat("Total dari dua partisi:", round(chi_part1$statistic + chi_part2$statistic, 2), "\n")
## Total dari dua partisi: 26.44

Kesimpulan

Total nilai chi-square dari kedua partisi adalah χ² = 26.44, yang secara signifikan lebih tinggi dari nilai kritis pada α = 0.05 dan df = 2 (yakni 5.991). Oleh karena itu, keputusan uji adalah menolak H0. Dengan demikian, dapat disimpulkan bahwa terdapat hubungan yang signifikan antara jenis kelamin dan jenis profesi. Perbedaan ini terutama disumbangkan oleh perbedaan besar antara Engineer dan Teacher, sementara distribusi pada profesi Doctor relatif stabil.

6.2.3.3 Uji Likelihood Ratio (G²)

Uji Likelihood Ratio (G²) adalah alternatif dari uji Chi-Square Pearson yang digunakan untuk menguji independensi antara dua variabel kategorik dalam tabel kontingensi.

Statistik uji G² dihitung dengan rumus:

\[ G^2 = 2 \sum_{i} \sum_{j} n_{ij} \cdot \ln\left(\frac{n_{ij}}{\hat{\mu}_{ij}}\right) \]

Contoh Perhitungan Manual :

Data Observasi

Pola Makan Sehat (+) Sakit (-) Total
Vegetarian 180 70 250
Non-Vegetarian 120 130 250
Total 300 200 500

Langkah 1 : Frekuensi Ekspektasi

Frekuensi ekspektasi dihitung dengan rumus:

\[ \hat{\mu}_{ij} = \frac{(\text{Jumlah baris ke-}i) \times (\text{Jumlah kolom ke-}j)}{\text{Total keseluruhan}} \]

Maka didapat:

  • \(\hat{\mu}_{11} = \frac{250 \times 300}{500} = 150\)

  • \(\hat{\mu}_{12} = \frac{250 \times 200}{500} = 100\)

  • \(\hat{\mu}_{21} = \frac{250 \times 300}{500} = 150\)

  • \(\hat{\mu}_{22} = \frac{250 \times 200}{500} = 100\)


Langkah 2 : Perhitungan Statistik G²

Gunakan rumus:

\[ G^2 = 2 \sum n_{ij} \cdot \ln\left(\frac{n_{ij}}{\hat{\mu}_{ij}}\right) \]

Hitung satu per satu:

  • \(180 \ln\left(\frac{180}{150}\right) = 180 \cdot \ln(1.2) = 180 \cdot 0.182 = 32.76\)

  • \(70 \ln\left(\frac{70}{100}\right) = 70 \cdot \ln(0.7) = 70 \cdot (-0.357) = -24.99\)

  • \(120 \ln\left(\frac{120}{150}\right) = 120 \cdot \ln(0.8) = 120 \cdot (-0.223) = -26.76\)

  • \(130 \ln\left(\frac{130}{100}\right) = 130 \cdot \ln(1.3) = 130 \cdot 0.262 = 34.06\)

Jumlah:

\[ G^2 = 2 \cdot (32.76 - 24.99 - 26.76 + 34.06) = 2 \cdot 15.07 = \boxed{30.14} \]


Langkah 3 : Bandingkan dengan Distribusi Chi-Square Derajat bebas

\[ df = (2 - 1)(2 - 1) = 1 \]

P-Value dan Keputusan

Nilai kritis chi-square pada \(df = 1\) dan \(\alpha = 0.05\) adalah 3.84.
Karena \(G^2 = 30.14 > 3.84\), maka:

  • \(p < 0.05\)
  • Keputusan: Tolak H₀

Kesimpulan

Berdasarkan uji likelihood ratio (G²), diperoleh \(G^2 = 30.14\) dengan p-value < 0.05.
Dengan demikian, terdapat hubungan yang signifikan antara pola makan dan status kesehatan. Orang dengan pola makan berbeda (vegetarian vs non-vegetarian) menunjukkan proporsi yang berbeda terhadap kemungkinan sehat atau sakit.

6.2.3.4 Uji Fisher’s Exact

Uji Fisher’s Exact digunakan untuk menganalisis hubungan antara dua variabel kategorikal dalam tabel kontingensi kecil, terutama ketika asumsi-asumsi dari uji Chi-square tidak dapat dipenuhi karena ukuran sampel yang terbatas. Uji ini pertama kali diperkenalkan oleh Sir Ronald A. Fisher, seorang ahli statistik terkemuka, yang mengembangkan uji ini untuk digunakan dalam penelitian biologi dan medis.

Keunggulan Uji Fisher’s Exact:

  • Ideal untuk ukuran sampel kecil: Uji ini sangat efektif pada data dengan ukuran sampel terbatas, di mana uji Chi-square mungkin tidak dapat memberikan hasil yang valid.

  • Tidak memerlukan asumsi distribusi normal: Berbeda dengan uji Chi-square yang mengharuskan data untuk memenuhi distribusi normal, Uji Fisher dapat digunakan pada data yang lebih kecil dan tidak terdistribusi secara normal.

  • Akurat pada frekuensi kecil: Pada data dengan frekuensi observasi yang rendah, hasil dari Uji Fisher’s Exact lebih tepat dan dapat diandalkan dibandingkan dengan uji Chi-square yang mungkin menghasilkan kesalahan penghitungan.

Keterbatasan Uji Fisher’s Exact:

  • Kompleksitas komputasi: Ketika ukuran tabel kontingensi semakin besar, perhitungan uji ini bisa menjadi sangat memakan waktu dan memerlukan sumber daya komputasi yang besar.

  • Terbatas pada tabel kontingensi kecil: Uji Fisher’s Exact hanya cocok untuk tabel 2x2 atau tabel 3x3, dan tidak bisa digunakan pada tabel kontingensi dengan banyak kategori atau tingkat lebih besar.

6.2.3.4.1 Distribusi Hipergeometrik

Distribusi hipergeometrik digunakan untuk menghitung probabilitas dalam pengambilan sampel acak tanpa pengembalian. Pada distribusi ini, kita menarik 𝑥 bola putih dari sebuah kumpulan yang terdiri dari 𝐾 bola putih dan 𝑁−𝐾 bola hitam. Total bola dalam kumpulan tersebut adalah 𝑁.

Rumus untuk menghitung probabilitas mengambil 𝑥 bola putih dalam pengambilan sampel adalah:

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

Dimana:

  • \(\binom{K}{x}\) adalah jumlah cara memilih 𝑥 bola putih dari 𝐾 bola putih.

  • \(\binom{N-K}{n-x}\) adalah jumlah cara memilih 𝑛−𝑥 bola hitam dari 𝑁−𝐾 bola hitam yang tersisa.

  • \(\binom{N}{n}\) adalah jumlah cara memilih 𝑛 bola dari total 𝑁 bola.

6.2.3.4.2 Contoh Perhitungan

Misalkan kita memiliki data sebagai berikut:

  • N = 50 (total populasi)

  • K = 30 (jumlah bola putih dalam populasi)

  • n = 25 (jumlah sampel yang diambil)

  • x = 15 (jumlah bola putih dalam sampel)

Menggunakan rumus distribusi hipergeometrik:

\[ P(X = 15) = \frac{{\binom{30}{15} \cdot \binom{50-30}{25-15}}}{{\binom{50}{25}}} \]

  1. Langkah-langkah Perhitungan:
  • Hitung jumlah cara memilih 15 bola putih dari 30 bola putih:

\[ \binom{30}{15} = \frac{30!}{15!(30-15)!} \]

  • Hitung jumlah cara memilih 10 bola hitam dari 20 bola hitam (50 - 30):

\[ \binom{20}{10} = \frac{20!}{10!(20-10)!} \]

  • Hitung jumlah cara memilih 25 bola dari total 50 bola:

\[ \binom{50}{25} = \frac{50!}{25!(50-25)!} \]


  1. Perhitungan Menggunakan R
# Menghitung nilai probabilitas menggunakan fungsi dhyper()

probabilitas <- dhyper(15, 30, 20, 25)
probabilitas
## [1] 0.2267127

Contoh data :

Ya Tidak Total
Grup X 16 4 20
Grup Y 13 7 20
Total 29 11 40

Langkah perhitungan manual: 1. Asumsikan hipotesis nol (tidak ada hubungan antara dua variabel). 2. Hitung probabilitas tabel yang diamati menggunakan distribusi hipergeometrik :

choose(29, 16) * choose(11, 4) / choose(40, 20)
## [1] 0.162464

Berikut semua kombinasi tabel 2x2 yang mungkin dengan total baris dan kolom sama :

Ya Tidak Total
Grup X 20 0 20
Grup Y 9 11 20
Total 29 11 40
choose(29,20)*choose(11,0)/choose(40,20)
## [1] 7.26533e-05
Ya Tidak Total
Grup X 19 1 20
Grup Y 10 10 20
Total 29 11 40
choose(29,19)*choose(11,1)/choose(40,20)
## [1] 0.001598373
Ya Tidak Total
Grup X 18 2 20
Grup Y 11 9 20
Total 29 11 40
choose(29,18)*choose(11,2)/choose(40,20)
## [1] 0.01380413
Ya Tidak Total
Grup X 17 3 20
Grup Y 12 8 20
Total 29 11 40
choose(29,17)*choose(11,3)/choose(40,20)
## [1] 0.06211857
Ya Tidak Total
Grup X 16 4 20
Grup Y 13 7 20
Total 29 11 40
choose(29,16)*choose(11,4)/choose(40,20)
## [1] 0.162464
Ya Tidak Total
Grup X 15 5 20
Grup Y 14 6 20
Total 29 11 40
choose(29,15)*choose(11,5)/choose(40,20)
## [1] 0.2599423
Ya Tidak Total
Grup X 14 6 20
Grup Y 15 5 20
Total 29 11 40
choose(29,14)*choose(11,6)/choose(40,20)
## [1] 0.2599423
Ya Tidak Total
Grup X 13 7 20
Grup Y 16 4 20
Total 29 11 40
choose(29,13)*choose(11,7)/choose(40,20)
## [1] 0.162464
Ya Tidak Total
Grup X 12 8 20
Grup Y 17 3 20
Total 29 11 40
choose(29,12)*choose(11,8)/choose(40,20)
## [1] 0.06211857
Ya Tidak Total
Grup X 11 9 20
Grup Y 18 2 20
Total 29 11 40
choose(29,11)*choose(11,9)/choose(40,20)
## [1] 0.01380413
Ya Tidak Total
Grup X 10 10 20
Grup Y 19 1 20
Total 29 11 40
choose(29,10)*choose(11,10)/choose(40,20)
## [1] 0.001598373
Ya Tidak Total
Grup X 9 11 20
Grup Y 20 0 20
Total 29 11 40
choose(29,9)*choose(11,11)/choose(40,20)
## [1] 7.26533e-05

6.2.3.4.3 Menggunakan fisher.test() di R

# Buat matriks data
data <- matrix(c(18, 2, 11, 9), nrow = 2, byrow = TRUE)

# Tampilkan tabel
colnames(data) <- c("Ya", "Tidak")
rownames(data) <- c("Grup X", "Grup Y")
data
##        Ya Tidak
## Grup X 18     2
## Grup Y 11     9
# Lakukan Fisher's Exact Test
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

Interpretasi :

  • p-value = 0.03095 < 0.05 → Tolak H0, yang artinya ada hubungan signifikan antara dua variabel.

  • Karena p-value < 0.05, kita menyimpulkan bahwa ada hubungan yang signifikan secara statistik antara kelompok dan respon.

6.3 Analisis Residual dalam Tabel Kontingensi

Residual dalam tabel kontingensi digunakan untuk mengevaluasi kontribusi masing-masing sel terhadap adanya hubungan antara dua variabel kategori. Residual dihitung sebagai selisih antara frekuensi aktual (yang diamati) dan frekuensi yang diprediksi berdasarkan asumsi bahwa kedua variabel bersifat independen.

Nilai residual yang besar, baik positif maupun negatif, menunjukkan bahwa terdapat deviasi besar antara data aktual dengan nilai yang diharapkan. Artinya, sel tersebut kemungkinan besar memberikan kontribusi yang signifikan terhadap asosiasi antar variabel. Sebaliknya, residual yang mendekati nol menandakan bahwa data aktual sesuai dengan nilai yang diperkirakan jika tidak ada hubungan antar variabel, sehingga sel tersebut hanya memiliki pengaruh kecil terhadap asosiasi yang terjadi.

Analisis residual ini sangat berguna dalam memahami secara lebih mendalam sumber ketidaksesuaian atau pola-pola menarik dalam data kategorikal.

4.3.1 Jenis Residual

Pearson Residual

Pearson Residual digunakan untuk menilai sejauh mana nilai observasi menyimpang dari nilai yang diharapkan, yang dihitung dengan asumsi bahwa kedua variabel tidak saling berhubungan (independen).

Rumus Pearson Residual:

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

  • \(O_{ij}\): frekuensi yang diamati pada sel ke-i,j

  • \(E_{ij}\): frekuensi yang diharapkan berdasarkan model independensi

Semakin besar nilai absolut dari residual, semakin besar kontribusi sel tersebut terhadap nilai statistik \(\chi^2\).

Standardized Residual (Adjusted Residual)

Standardized Residual, yang juga dikenal sebagai Adjusted Residual, merupakan versi pengembangan dari residual Pearson. Residual ini tidak hanya membandingkan nilai observasi dan nilai harapan, tetapi juga memperhitungkan proporsi marginal dari baris dan kolom, sehingga memberikan hasil yang lebih akurat dalam konteks ketidaktergantungan antar variabel.

Rumus perhitungan residual standar:

\[ r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}(1 - p_{i+})(1 - p_{+j})}} \]

Dengan:

  • \(O_{ij}\): nilai observasi pada sel ke-(i,j)

  • \(E_{ij}\): nilai ekspektasi berdasarkan asumsi independen

  • \(p_{i+}\): proporsi total baris ke-i

  • \(p_{+j}\): proporsi total kolom ke-j

Jika asumsi independensi terpenuhi, nilai dari \(r_{ij}\) mendekati distribusi normal standar \(\mathcal{N}(0,1)\). Residual ini sangat berguna untuk mendeteksi sel-sel dalam tabel yang menyimpang secara signifikan dari ekspektasi.

6.3.1.1 Contoh Perhitungan Residual secara manual

Misalkan sebuah survei dilakukan untuk melihat hubungan antara jenis metode belajar dan tingkat keberhasilan siswa. Hasilnya disajikan dalam tabel kontingensi berikut:

Berhasil Tidak Berhasil Total
Metode X 25 5 30
Metode Y 15 15 30
Total 40 20 60

Langkah-langkah Perhitungan :

  1. Hitung Nilai Ekspektasi (Eij)

Gunakan rumus:

\[ E_{ij} = \frac{(\text{Total Baris}_i) \times (\text{Total Kolom}_j)}{\text{Total Keseluruhan}} \]

Hasil:

  • \(E_{11} = \frac{30 \times 40}{60} = 20\)

  • \(E_{12} = \frac{30 \times 20}{60} = 10\)

  • \(E_{21} = \frac{30 \times 40}{60} = 20\)

  • \(E_{22} = \frac{30 \times 20}{60} = 10\)


  1. Hitung Pearson Residual

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

  • \(e_{11} = \frac{25 - 20}{\sqrt{20}} = \frac{5}{4.47} \approx 1.12\)

  • \(e_{12} = \frac{5 - 10}{\sqrt{10}} = \frac{-5}{3.16} \approx -1.58\)

  • \(e_{21} = \frac{15 - 20}{\sqrt{20}} = \frac{-5}{4.47} \approx -1.12\)

  • \(e_{22} = \frac{15 - 10}{\sqrt{10}} = \frac{5}{3.16} \approx 1.58\)


Interpretasi

  • Nilai residual tertinggi adalah sekitar ±1.58, masih di bawah batas kritis ±1.96. Artinya, tidak ada sel dalam tabel yang menyimpang secara signifikan dari nilai yang diharapkan, sehingga tidak ditemukan hubungan yang kuat antara metode belajar dan keberhasilan siswa.

Perhitungan menggunakan software R

# Buat matriks kontingensi
data <- matrix(c(25, 5,
                 15, 15),
               nrow = 2,
               byrow = TRUE)

# Tambahkan nama baris dan kolom
rownames(data) <- c("Metode X", "Metode Y")
colnames(data) <- c("Berhasil", "Tidak Berhasil")

# Tampilkan tabel
data
##          Berhasil Tidak Berhasil
## Metode X       25              5
## Metode Y       15             15
# Hitung chi-square dan residual
chisq_result <- chisq.test(data, correct = FALSE)

# Tampilkan residual Pearson
chisq_result$residuals
##           Berhasil Tidak Berhasil
## Metode X  1.118034      -1.581139
## Metode Y -1.118034       1.581139

4.3.2 Deteksi Outlier dalam Analisis Data Kategorik Menggunakan Residual

Dalam analisis data kategorik, outlier merujuk pada sel-sel dalam tabel kontingensi yang memiliki nilai residual ekstrem—baik sangat tinggi positif maupun sangat rendah negatif. Residual di sini menunjukkan perbedaan antara jumlah kejadian aktual (observasi) dan jumlah yang diperkirakan (ekspektasi) berdasarkan asumsi bahwa variabel dalam tabel saling bebas (independen).

Apa yang Dimaksud Outlier?

Outlier dalam tabel kontingensi adalah kombinasi kategori yang muncul secara tidak biasa, artinya:

  • Terlalu sering terjadi dibandingkan ekspektasi (residual positif besar).

  • Jauh lebih jarang terjadi dibandingkan ekspektasi (residual negatif besar).

Cara Deteksi

Untuk mendeteksi outlier, kita bisa melihat nilai residual Pearson atau residual standar (adjusted residual). Jika nilai residual melebihi ambang batas tertentu (misalnya, ±1.96 untuk tingkat signifikansi 5%), maka sel tersebut dapat dicurigai sebagai outlier.

  • Pearson Residual

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

Jika nilai mutlak residual (|eij|) lebih besar dari 2, maka sel tersebut dianggap sebagai indikasi adanya outlier.

  • Standardized Residual (Adjusted Residual)

\[ r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}(1 - p_{i+})(1 - p_{+j})}} \]

Jika nilai mutlak adjusted residual (|rij|) lebih besar dari 2, maka sel tersebut dianggap sebagai outlier yang signifikan.

Misalkan terdapat tabel kontingensi seperti berikut:

Respon A Respon B Total
Grup X 50 40 90
Grup Y 30 80 110
Total 80 120 200

Langkah 1: Hitung Frekuensi Harapan

Frekuensi harapan (\(E_{ij}\)) dihitung dengan rumus:

\[ E_{ij} = \frac{(\text{jumlah baris}_i) \times (\text{jumlah kolom}_j)}{\text{total keseluruhan}} \]

Respon A (Expected) Respon B (Expected)
Grup X \(\frac{90 \times 80}{200} = 36\) \(\frac{90 \times 120}{200} = 54\)
Grup Y \(\frac{110 \times 80}{200} = 44\) \(\frac{110 \times 120}{200} = 66\)

Langkah 2: Hitung Pearson Residual

\[ \text{Pearson Residual} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}} \]

Respon A Respon B
Grup X \(\frac{50 - 36}{\sqrt{36}} = \frac{14}{6} = 2.33\) \(\frac{40 - 54}{\sqrt{54}} \approx -1.91\)
Grup Y \(\frac{30 - 44}{\sqrt{44}} \approx -2.11\) \(\frac{80 - 66}{\sqrt{66}} \approx 1.72\)

Langkah 3: Hitung Standardized Residual

\[ \text{Standardized Residual} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}(1 - r_i)(1 - c_j)}} \]

Dengan asumsi sederhana, kita gunakan standardized residual mendekati Pearson residual karena sel count besar dan koreksi kecil.


Interpretasi:

  • Sel (Grup X, Respon A) dan (Grup Y, Respon B) menunjukkan residual positif yang besar (2.33 dan 1.72). Ini mengindikasikan bahwa jumlah kejadian aktual pada kedua sel ini lebih tinggi dibandingkan yang diharapkan jika tidak ada hubungan antara kategori.

  • Sebaliknya, (Grup X, Respon B) dan (Grup Y, Respon A) memiliki residual negatif yang cukup besar (–1.91 dan –2.11), yang artinya nilai aktual jauh lebih rendah dari nilai ekspektasinya.

  • Karena residual beberapa sel mendekati atau melewati ambang ±2, bisa diduga bahwa terdapat pola sistematis yang menandakan hubungan antara grup dan jenis respon.

  • Kesimpulan: Distribusi respon antara Grup X dan Y tidak seimbang, sehingga asumsi tidak adanya asosiasi antar variabel kemungkinan tidak valid.

Perhitungan menggunakan software Rstudio

# Buat tabel kontingensi
data <- matrix(c(50, 40,
                 30, 80), 
               nrow = 2, byrow = TRUE)
rownames(data) <- c("Grup X", "Grup Y")
colnames(data) <- c("Respon A", "Respon B")
data
##        Respon A Respon B
## Grup X       50       40
## Grup Y       30       80
# Uji chi-square
uji <- chisq.test(data)
uji
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 15.341, df = 1, p-value = 8.975e-05
# Pearson Residual
uji$residuals
##         Respon A  Respon B
## Grup X  2.333333 -1.905159
## Grup Y -2.110579  1.723281
# Standardized Residual
uji$stdres
##         Respon A  Respon B
## Grup X  4.061812 -4.061812
## Grup Y -4.061812  4.061812

Interpretasi :

Pearson Residual

  • (Grup X, Respon A): 2.33 → Ada lebih banyak respon A pada Grup X daripada yang diperkirakan model.

  • (Grup Y, Respon A): –2.11 → Grup Y memberikan lebih sedikit respon A dari yang diharapkan.

  • (Grup X, Respon B): –1.91 → Respon B kurang sering terjadi pada Grup X.

  • (Grup Y, Respon B): 1.72 → Lebih banyak respon B dari ekspektasi pada Grup Y.

Standardized residual

Semua residual melebihi |4|, yang berarti setiap sel dalam tabel adalah outlier signifikan. Artinya, seluruh penyebaran data tidak sesuai dengan model independensi.

7. Tabel Kontingensi Tiga Arah

Tabel kontingensi tiga arah merupakan metode statistik yang digunakan untuk menganalisis hubungan antar tiga variabel kategorik secara simultan. Dalam pengaplikasiannya, dua variabel utama (misalnya variabel A dan B) akan dianalisis dengan mempertimbangkan satu variabel lain sebagai pengendali atau penengah (misalnya variabel C).

Jenis analisis ini sangat berguna terutama ketika hubungan antara dua variabel utama diduga dipengaruhi oleh faktor ketiga, yang berfungsi sebagai variabel pengganggu (confounding variable). Contoh penerapannya sangat luas, seperti:

  • Bidang Kesehatan Masyarakat: Untuk melihat apakah ada kaitan antara konsumsi alkohol (variabel A) dan penyakit hati (variabel B), dengan memasukkan jenis kelamin sebagai variabel pengontrol (variabel C).

  • Ilmu Sosial: Dalam studi mengenai keterkaitan antara tingkat pendidikan (variabel A) dan tingkat partisipasi politik (variabel B), dengan memperhitungkan usia sebagai variabel ketiga (variabel C).

Bentuk Tabel Kontingensi Tiga Arah

Umumnya, tabel ini dapat disajikan dalam dua jenis tampilan:

  • Tabel Parsial (Parsial Tables)

Menampilkan keterkaitan antara dua variabel utama (A dan B) dalam masing-masing kategori dari variabel kontrol (C) dan memungkinkan analisis yang lebih spesifik dan menggambarkan hubungan bersyarat (conditional association).

  • Tabel Marginal (Marginal Table)

Menunjukkan hubungan secara keseluruhan antara A dan B tanpa memperhitungkan variabel C (yaitu dengan menggabungkan semua kategori dari C). Lebih sederhana, tetapi bisa menimbulkan bias interpretasi karena mengabaikan variabel pengganggu seperti terjadinya paradoks Simpson (Simpson’s Paradox).

Tujuan Penggunaan Tabel Kontingensi Tiga Arah

  • Mengontrol efek variabel perancu yang dapat memengaruhi hubungan antara dua variabel utama.

  • Memberikan pemahaman yang lebih utuh dan objektif terhadap pola hubungan antar variabel.

  • Menghindari kesimpulan yang keliru akibat menganalisis data secara keseluruhan tanpa memisahkan kategori penting.

Manfaat Penggunaan Tabel Kontingensi Tiga arah

  • Meningkatkan validitas hasil analisis, karena mempertimbangkan pengaruh dari variabel kontrol.

  • Mengungkap hubungan yang kompleks, yang sering kali tidak terlihat saat hanya dua variabel dianalisis.

  • Mendeteksi fenomena seperti paradoks Simpson, yang bisa membuat hubungan antara variabel tampak terbalik jika data digabungkan.

Keunggulan

  • Lebih presisi dalam menilai hubungan antar variabel.

  • Mampu mengendalikan efek dari variabel pengganggu.

  • Sangat cocok untuk riset kuantitatif berskala besar yang melibatkan beberapa variabel kategorik.

Kekurangan

  • Analisis lebih rumit, baik dari segi penghitungan maupun penafsiran hasil.

  • Membutuhkan jumlah data yang besar untuk memastikan jumlah observasi mencukupi di setiap sel tabel.

  • Jika variabel kontrol memiliki banyak kategori, tabel akan menjadi sangat besar dan sulit dianalisis secara efisien.

7.1 Tabel Parsial dan Tabel Marginal

Dalam analisis tabel kontingensi tiga arah, terdapat dua pendekatan utama dalam menyajikan data: tabel parsial dan tabel marginal.

  • Tabel Parsial disusun dengan memisahkan data berdasarkan kategori dari variabel ketiga (Z). Artinya, kita melihat hubungan antara dua variabel utama (misalnya X dan Y) secara terpisah dalam setiap kategori Z. Pendekatan ini memungkinkan kita untuk menilai apakah hubungan antara X dan Y konsisten dalam semua level Z, atau apakah ada perbedaan pola.

  • Tabel Marginal, sebaliknya, menggabungkan seluruh kategori variabel Z menjadi satu, sehingga hanya menampilkan hubungan antara X dan Y secara keseluruhan. Tabel ini tidak mempertimbangkan pengaruh Z, dan sering kali digunakan untuk melihat gambaran umum hubungan antar variabel.

Struktur Tabel Kontingensi Tiga Arah

Z = 1 Y = 1 Y = 2 Y = J Y = •
X = 1 n₁₁₁ n₁₂₁ n₁J₁ n₁+1
X = 2 n₂₁₁ n₂₂₁ n₂J₁ n₂+1
X = i nᵢ₁₁ nᵢ₂₁ nᵢJ₁ nᵢ+1
X = I nᴵ₁₁ nᴵ₂₁ nᴵJ₁ nᴵ+1
X = • n+₁₁ n+₂₁ n+J₁ n++1

Z = k Y = 1 Y = 2 Y = J Y = •
X = 1 n₁₁ₖ n₁₂ₖ n₁Jₖ n₁+ₖ
X = 2 n₂₁ₖ n₂₂ₖ n₂Jₖ n₂+ₖ
X = i nᵢ₁ₖ nᵢ₂ₖ nᵢJₖ nᵢ+ₖ
X = I nᴵ₁ₖ nᴵ₂ₖ nᴵJₖ nᴵ+ₖ
X = • n+₁ₖ n+₂ₖ n+Jₖ n++ₖ

Z = • Y = 1 Y = 2 Y = J Y = •
X = 1 n₁₁+ n₁₂+ n₁J+ n₁++
X = 2 n₂₁+ n₂₂+ n₂J+ n₂++
X = i nᵢ₁+ nᵢ₂+ nᵢJ+ nᵢ++
X = I nᴵ₁+ nᴵ₂+ nᴵJ+ nᴵ++
X = • n+₁+ n+₂+ n+J+ n+++

Contoh Data:

Z (Jenis Kelamin) X (Olahraga) Y (Obesitas) Tidak Obesitas Jumlah
Pria Ya 15 35 50
Pria Tidak 30 20 50
Wanita Ya 20 30 50
Wanita Tidak 40 10 50
Lainnya Ya 10 40 50
Lainnya Tidak 35 15 50

Tabel Frekuensi Parsial

Tabel frekuensi parsial digunakan untuk menganalisis hubungan antara dua variabel kategorik, dengan satu variabel tambahan (dalam hal ini, Jenis Kelamin) sebagai variabel kontrol. Dengan memisahkan data berdasarkan kategori kontrol tersebut, kita dapat melihat apakah hubungan antara dua variabel utama (Olahraga dan Obesitas) konsisten di seluruh subkelompok.


Tabel Parsial untuk Z (Jenis Kelamin) = Pria

X (Olahraga) Y (Obesitas) Tidak Obesitas
Ya 15 35
Tidak 30 20

Tabel Parsial untuk Z (Jenis Kelamin) = Wanita

X (Olahraga) Y (Obesitas) Tidak Obesitas
Ya 20 30
Tidak 40 10

Tabel Parsial untuk Z (Jenis Kelamin) = Lainnya

X (Olahraga) Y (Obesitas) Tidak Obesitas
Ya 10 40
Tidak 35 15

Implementasi dalam software R

# Buat data 3 variabel
data <- data.frame(
  Z = rep(c("Pria", "Wanita", "Lainnya"), each = 4),
  X = rep(c("Ya", "Tidak"), times = 6),
  Y = rep(c("Obesitas", "Tidak Obesitas"), each = 2, times = 3),
  Frekuensi = c(15, 35, 30, 20,   # Pria
                20, 30, 40, 10,   # Wanita
                10, 40, 35, 15)   # Lainnya
)

# Tampilkan Data
data
##          Z     X              Y Frekuensi
## 1     Pria    Ya       Obesitas        15
## 2     Pria Tidak       Obesitas        35
## 3     Pria    Ya Tidak Obesitas        30
## 4     Pria Tidak Tidak Obesitas        20
## 5   Wanita    Ya       Obesitas        20
## 6   Wanita Tidak       Obesitas        30
## 7   Wanita    Ya Tidak Obesitas        40
## 8   Wanita Tidak Tidak Obesitas        10
## 9  Lainnya    Ya       Obesitas        10
## 10 Lainnya Tidak       Obesitas        40
## 11 Lainnya    Ya Tidak Obesitas        35
## 12 Lainnya Tidak Tidak Obesitas        15
# Membuat array 3 dimensi (tabel kontingensi 3 arah)
tabel3d <- xtabs(Frekuensi ~ Z + X + Y, data = data)

# Tampilkan tabel 3D
tabel3d
## , , Y = Obesitas
## 
##          X
## Z         Tidak Ya
##   Lainnya    40 10
##   Pria       35 15
##   Wanita     30 20
## 
## , , Y = Tidak Obesitas
## 
##          X
## Z         Tidak Ya
##   Lainnya    15 35
##   Pria       20 30
##   Wanita     10 40
tabel3d["Pria", , ]
##        Y
## X       Obesitas Tidak Obesitas
##   Tidak       35             20
##   Ya          15             30
tabel3d["Wanita", , ]
##        Y
## X       Obesitas Tidak Obesitas
##   Tidak       30             10
##   Ya          20             40
tabel3d["Lainnya", , ]
##        Y
## X       Obesitas Tidak Obesitas
##   Tidak       40             15
##   Ya          10             35

Kesimpulan

Tabel frekuensi parsial memungkinkan analisis hubungan antara dua variabel dengan mempertimbangkan variabel kontrol. Ini membantu mengidentifkasi pola yang mungkin tersembunyi dalam tabel frekuensi marginal.

Tabel Frekuensi Marginal menampilkan jumlah total observasi untuk setiap variabel dengan mengabaikan variabel lainnya dalam tabel kontingensi tiga arah. Tabel ini membantu dalam memahami distribusi kategori secara agregat tanpa mempertimbangkan hubungan antarvariabel. Tabel frekuensi marginal dihitung dengan menjumlahkan frekuensi dari tabel kontingensi tiga arah berdasarkan variabel yang tersisa.

Distribusi Peluang

1. Peluang Bersama

Peluang bersama didefinisikan sebagai:

\[ P(Z, X, Y) = \frac{f(Z, X, Y)}{N} \]

Dengan:

  • \(Z\): Jenis Kelamin

  • \(X\): Status Olahraga (Ya/Tidak)

  • \(Y\): Status Obesitas

  • \(f(Z, X, Y)\): Frekuensi kombinasi

  • \(N\): Total data (300)

Contoh Perhitungan Peluang Bersama

Contoh:

  • Peluang seseorang adalah Pria, berolahraga, dan obesitas:

\[ P(Pria, Ya, Obesitas) = \frac{15}{300} = 0.05 \]

  • Peluang seseorang adalah Wanita, tidak berolahraga, dan tidak obesitas:

\[ P(Wanita, Tidak, Tidak\ Obesitas) = \frac{10}{300} = 0.0333 \]

  • Peluang seseorang adalah Lainnya, berolahraga, dan tidak obesitas:

\[ P(Lainnya, Ya, Tidak\ Obesitas) = \frac{40}{300} = 0.1333 \]

Perhitungan menggunakan software R :

# Membuat data awal
data <- data.frame(
  Jenis_Kelamin = c("Pria", "Pria", "Wanita", "Wanita", "Lainnya", "Lainnya"),
  Olahraga = c("Ya", "Tidak", "Ya", "Tidak", "Ya", "Tidak"),
  Obesitas = c(15, 30, 20, 40, 10, 35),
  Tidak_Obesitas = c(35, 20, 30, 10, 40, 15)
)

# Menambahkan kolom Jumlah
data$Jumlah <- data$Obesitas + data$Tidak_Obesitas

# Menampilkan tabel
data
##   Jenis_Kelamin Olahraga Obesitas Tidak_Obesitas Jumlah
## 1          Pria       Ya       15             35     50
## 2          Pria    Tidak       30             20     50
## 3        Wanita       Ya       20             30     50
## 4        Wanita    Tidak       40             10     50
## 5       Lainnya       Ya       10             40     50
## 6       Lainnya    Tidak       35             15     50
# Menghitung total keseluruhan data
total_data <- sum(data$Jumlah)
total_data
## [1] 300
library(tidyr)

# Ubah ke format long
data_long <- pivot_longer(data,
                          cols = c("Obesitas", "Tidak_Obesitas"),
                          names_to = "Status",
                          values_to = "Frekuensi")

# Hitung peluang bersama
data_long$Peluang_Bersama <- data_long$Frekuensi / total_data

# Tampilkan data hasil
data_long
## # A tibble: 12 × 6
##    Jenis_Kelamin Olahraga Jumlah Status         Frekuensi Peluang_Bersama
##    <chr>         <chr>     <dbl> <chr>              <dbl>           <dbl>
##  1 Pria          Ya           50 Obesitas              15          0.05  
##  2 Pria          Ya           50 Tidak_Obesitas        35          0.117 
##  3 Pria          Tidak        50 Obesitas              30          0.1   
##  4 Pria          Tidak        50 Tidak_Obesitas        20          0.0667
##  5 Wanita        Ya           50 Obesitas              20          0.0667
##  6 Wanita        Ya           50 Tidak_Obesitas        30          0.1   
##  7 Wanita        Tidak        50 Obesitas              40          0.133 
##  8 Wanita        Tidak        50 Tidak_Obesitas        10          0.0333
##  9 Lainnya       Ya           50 Obesitas              10          0.0333
## 10 Lainnya       Ya           50 Tidak_Obesitas        40          0.133 
## 11 Lainnya       Tidak        50 Obesitas              35          0.117 
## 12 Lainnya       Tidak        50 Tidak_Obesitas        15          0.05
library(dplyr)

data_long %>%
  select(Jenis_Kelamin, Olahraga, Status, Frekuensi, Peluang_Bersama) %>%
  arrange(Jenis_Kelamin, Olahraga, Status)
## # A tibble: 12 × 5
##    Jenis_Kelamin Olahraga Status         Frekuensi Peluang_Bersama
##    <chr>         <chr>    <chr>              <dbl>           <dbl>
##  1 Lainnya       Tidak    Obesitas              35          0.117 
##  2 Lainnya       Tidak    Tidak_Obesitas        15          0.05  
##  3 Lainnya       Ya       Obesitas              10          0.0333
##  4 Lainnya       Ya       Tidak_Obesitas        40          0.133 
##  5 Pria          Tidak    Obesitas              30          0.1   
##  6 Pria          Tidak    Tidak_Obesitas        20          0.0667
##  7 Pria          Ya       Obesitas              15          0.05  
##  8 Pria          Ya       Tidak_Obesitas        35          0.117 
##  9 Wanita        Tidak    Obesitas              40          0.133 
## 10 Wanita        Tidak    Tidak_Obesitas        10          0.0333
## 11 Wanita        Ya       Obesitas              20          0.0667
## 12 Wanita        Ya       Tidak_Obesitas        30          0.1

Tabel Probabilitas Bersama (Joint Probability) Tabel probabilitas bersama dihitung dengan membagi setiap sel dengan total keseluruhan sampel.

2. Peluang marginal diperoleh dengan menjumlahkan

Peluang marginal diperoleh dengan menjumlahkan peluang bersama terhadap variabel lain yang tidak diperhatikan.

Contoh:

  • Peluang terkena obesitas (Y = 1):
    \[ P(Y = 1) = \sum_{Z, X} P(Z, X, Y = 1) \]

  • Peluang melakukan olahraga (X = Ya):
    \[ P(X = Ya) = \sum_{Z, Y} P(Z = Z, X = Ya, Y) \]


Contoh Perhitungan

  1. Peluang terkena obesitas (Y = 1)

Jumlah seluruh orang obesitas:

  • Pria, Ya: 15

  • Pria, Tidak: 30

  • Wanita, Ya: 20

  • Wanita, Tidak: 40

  • Lainnya, Ya: 10

  • Lainnya, Tidak: 35

\[ P(Y = 1) = \frac{15 + 30 + 20 + 40 + 10 + 35}{300} = \frac{150}{300} = 0.5 \]


  1. Peluang melakukan olahraga (X = Ya)

Jumlah seluruh orang yang olahraga:

  • Pria, Ya: 15 + 35 = 50

  • Wanita, Ya: 20 + 30 = 50

  • Lainnya, Ya: 10 + 40 = 50

\[ P(X = Ya) = \frac{50 + 50 + 50}{300} = \frac{150}{300} = 0.5 \]


Perhitungan menggunakan R

# Data obesitas berdasarkan jenis kelamin dan olahraga
data_obesitas <- array(
  c(15, 35,   # Pria - Ya
    30, 20,   # Pria - Tidak
    20, 30,   # Wanita - Ya
    40, 10,   # Wanita - Tidak
    10, 40,   # Lainnya - Ya
    35, 15),  # Lainnya - Tidak
  dim = c(2, 2, 3),
  dimnames = list(
    Obesitas = c("Ya", "Tidak"),
    Olahraga = c("Ya", "Tidak"),
    JenisKelamin = c("Pria", "Wanita", "Lainnya")
  )
)

# Hitung total
total_data <- sum(data_obesitas)

# Probabilitas bersama
joint_prob <- data_obesitas / total_data

# Probabilitas marginal
marginal_jenis_kelamin <- apply(joint_prob, 3, sum)
marginal_olahraga <- apply(joint_prob, 2, sum)
marginal_obesitas <- apply(joint_prob, 1, sum)

# Tampilkan hasil
marginal_jenis_kelamin
##      Pria    Wanita   Lainnya 
## 0.3333333 0.3333333 0.3333333
marginal_olahraga
##    Ya Tidak 
##   0.5   0.5
marginal_obesitas
##    Ya Tidak 
##   0.5   0.5

Kesimpulan

Tabel peluang marginal menggambarkan distribusi probabilitas dari satu variabel saja, dengan cara mengabaikan atau menjumlahkan nilai-nilai dari variabel lain dalam tabel kontingensi. Ini sangat berguna saat ingin melihat gambaran umum dari masing-masing kategori dalam satu variabel tertentu, tanpa terpengaruh oleh kombinasi variabel lainnya.

3. Peluang Bersyarat

Rumus:

\[ P(Z \mid X, Y) = \frac{P(Z, X, Y)}{P(X, Y)} \]

Sebagai contoh, Hitung peluang seseorang mengalami obesitas, dengan syarat dia adalah seorang wanita yang tidak berolahraga.

Langkah Perhitungan:

  • Total populasi: 300 orang
  • Jumlah wanita yang tidak berolahraga dan obesitas: 40
  • Jumlah wanita yang tidak berolahraga (total): 40 (obesitas) + 10 (tidak obesitas) = 50

Hitung:

\[ P(\text{Obesitas, Tidak Olahraga, Wanita}) = \frac{40}{300} \]

\[ P(\text{Tidak Olahraga, Wanita}) = \frac{50}{300} \]

\[ P(\text{Obesitas} \mid \text{Tidak Olahraga, Wanita}) = \frac{40/300}{50/300} = \frac{40}{50} = 0.8 \]

Kesimpulan:

Peluang seorang wanita yang tidak berolahraga mengalami obesitas adalah 0.8 atau 80%.

Perhitungan menggunakan software R

# Buat array data obesitas
data_obesitas <- array(
  c(15, 35,   # Pria - Ya
    30, 20,   # Pria - Tidak
    20, 30,   # Wanita - Ya
    40, 10,   # Wanita - Tidak
    10, 40,   # Lainnya - Ya
    35, 15),  # Lainnya - Tidak
  dim = c(2, 2, 3),
  dimnames = list(
    Obesitas = c("Ya", "Tidak"),
    Olahraga = c("Ya", "Tidak"),
    JenisKelamin = c("Pria", "Wanita", "Lainnya")
  )
)

# Hitung total data
total <- sum(data_obesitas)  # Harusnya 300

# Ambil nilai untuk P(Obesitas, Tidak Olahraga, Wanita)
p_numerator <- data_obesitas["Ya", "Tidak", "Wanita"] / total

# Ambil nilai untuk P(Tidak Olahraga, Wanita)
p_denominator <- sum(data_obesitas[, "Tidak", "Wanita"]) / total

# Hitung peluang bersyarat
p_obesitas_given_wanita_tdk_olahraga <- p_numerator / p_denominator

# Tampilkan hasil
p_obesitas_given_wanita_tdk_olahraga
## [1] 0.8
7.3 Tabel Peluang Bersyarat

Untuk menghitung peluang bersyarat, kita membandingkan jumlah kejadian yang diinginkan dengan total kejadian dalam kategori kondisi yang ditentukan.

Tabel Peluang Bersyarat

Kita ingin menghitung peluang seseorang mengalami obesitas, dengan syarat kombinasi dari jenis kelamin dan kebiasaan olahraga.


  • Tabel Peluang Bersyarat untuk Pria
Olahraga P(Obesitas Olahraga, Pria)
Ya 15 / 50 = 0.30 35 / 50 = 0.70
Tidak 30 / 50 = 0.60 20 / 50 = 0.40

  • Tabel Peluang Bersyarat untuk Wanita
Olahraga P(Obesitas Olahraga, Wanita)
Ya 20 / 50 = 0.40 30 / 50 = 0.60
Tidak 40 / 50 = 0.80 10 / 50 = 0.20

  • Tabel Peluang Bersyarat untuk Lainnya
Olahraga P(Obesitas Olahraga, Lainnya)
Ya 10 / 50 = 0.20 40 / 50 = 0.80
Tidak 35 / 50 = 0.70 15 / 50 = 0.30

Implementasi dalam Sofatware R

# Membuat array 3D 'data_obesitas' berdasarkan tabel yang kamu berikan
data_obesitas <- array(c(15, 35, 30, 20, 20, 30, 40, 10, 10, 40, 35, 15),
                       dim = c(2, 2, 3),
                       dimnames = list(
                         Olahraga = c("Ya", "Tidak"),
                         Obesitas = c("Obesitas", "Tidak Obesitas"),
                         JenisKelamin = c("Pria", "Wanita", "Lainnya")
                       ))

# Menampilkan tabel menggunakan ftable
ftable(data_obesitas)
##                         JenisKelamin Pria Wanita Lainnya
## Olahraga Obesitas                                       
## Ya       Obesitas                      15     20      10
##          Tidak Obesitas                30     40      35
## Tidak    Obesitas                      35     30      40
##          Tidak Obesitas                20     10      15

Kesimpulan

  • Peluang Bersama: Peluang bersama diperoleh dengan membagi jumlah kejadian dalam setiap kombinasi kategori dengan jumlah total data yang tersedia.

  • Peluang Marginal: Peluang marginal dihitung dengan menjumlahkan probabilitas pada setiap kategori yang relevan, tanpa mempertimbangkan kategori lainnya.

  • Peluang Bersyarat: Untuk menghitung peluang bersyarat, digunakan rumus Bayes, yang membagi probabilitas gabungan dari kejadian yang terjadi bersama dengan kejadian kondisi yang telah ditentukan.

Ukuran Asosiasi

1. Beda Peluang (BP)

\[ BP = P(Y | X_1, Z) - P(Y | X_2, Z) \]

2. Risiko Relatif (RR)

\[ RR = \frac{P(Y | X_1, Z)}{P(Y | X_2, Z)} \]

3. Odds Ratio (OR)

\[ OR = \frac{\frac{P(Y | X_1, Z)}{1 - P(Y | X_1, Z)}}{\frac{P(Y | X_2, Z)}{1 - P(Y | X_2, Z)}} \]

Ukuran asosiasi pada tabel kontingensi berfungsi untuk mengevaluasi sejauh mana keterkaitan antara dua variabel kategorik. Tiga ukuran yang sering digunakan dalam analisis ini adalah Risk Difference (RD), Relative Risk (RR), dan Odds Ratio (OR), yang masing-masing memberikan cara berbeda untuk menilai kekuatan hubungan antara kategori.

1. Risk Difference (RD)

Risk Difference (RD) atau perbedaan risiko adalah selisih antara probabilitas kejadian (dalam hal ini obesitas) pada dua kelompok yang berbeda, yaitu kelompok yang berolahraga dan tidak berolahraga.

Perhitungan Manual :

\[ P(\text{Obesitas} \mid \text{Olahraga}) = \frac{15}{50} = 0.30 \]

\[ P(\text{Obesitas} \mid \text{Tidak Olahraga}) = \frac{30}{50} = 0.60 \]

Interpretasi :

Risk Difference sebesar 0.30 atau 30% menunjukkan bahwa kemungkinan obesitas pada pria yang berolahraga lebih rendah 30% dibandingkan dengan pria yang tidak berolahraga.

2. Relative Risk (RR)

Relative Risk (RR) atau risiko relatif digunakan untuk membandingkan probabilitas suatu kejadian antara dua kelompok. Dalam konteks ini, kita akan membandingkan risiko obesitas pada pria yang berolahraga dan yang tidak berolahraga.

Perhitungan Manual :

\[ RR = \frac{P(\text{Obesitas} \mid \text{Olahraga})}{P(\text{Obesitas} \mid \text{Tidak Olahraga})} \]

\[ RR = \frac{15 / 50}{30 / 50} = \frac{0.30}{0.60} = 0.5 \]

Interpretasi :

Relative Risk sebesar 0.5 menunjukkan bahwa pria yang berolahraga memiliki setengah risiko obesitas dibandingkan pria yang tidak berolahraga. Dengan kata lain, olahraga mengurangi risiko obesitas sebesar 50% pada kelompok pria.

3. Odds Ratio (OR)

Odds Ratio (OR) digunakan untuk membandingkan peluang (odds) suatu kejadian antara dua kelompok. Dalam kasus ini, kita akan membandingkan peluang terjadi obesitas pada pria yang berolahraga dan yang tidak berolahraga.

Perhitungan Manual :

\[ OR = \frac{15 \cdot 20}{35 \cdot 30} = \frac{300}{1050} = 0.2857 \]


Interpretasi:

Odds Ratio sebesar 0.29 berarti bahwa peluang mengalami obesitas pada pria yang berolahraga hanya sekitar 29% dibandingkan dengan pria yang tidak berolahraga. Ini menunjukkan bahwa olahraga berperan besar dalam menurunkan peluang obesitas.


Implementasi dalam R :

# Data obesitas pria
# Format: matrix(c(obesitas_ya, tidak_obesitas_ya, obesitas_tidak, tidak_obesitas_tidak))
data <- matrix(c(15, 35, 30, 20), nrow = 2, byrow = TRUE)
rownames(data) <- c("Olahraga", "Tidak")
colnames(data) <- c("Obesitas", "Tidak Obesitas")

# Tampilkan data
data
##          Obesitas Tidak Obesitas
## Olahraga       15             35
## Tidak          30             20
# Hitung Risk Difference
p1 <- data[1, 1] / sum(data[1, ])  # P(Obesitas | Olahraga)
p2 <- data[2, 1] / sum(data[2, ])  # P(Obesitas | Tidak Olahraga)
RD <- p1 - p2
RD  # Risk Difference
## [1] -0.3
# Hitung Relative Risk
RR <- p1 / p2
RR  # Relative Risk
## [1] 0.5
# Hitung Odds Ratio
odds1 <- data[1, 1] / data[1, 2]  # Odds kelompok olahraga
odds2 <- data[2, 1] / data[2, 2]  # Odds kelompok tidak olahraga
OR <- odds1 / odds2
OR  # Odds Ratio
## [1] 0.2857143
7.6 Conditional Independence

Conditional Independence dalam konteks tabel kontingensi terjadi ketika dua variabel X dan Y menjadi independen setelah dikendalikan oleh variabel ketiga Z. Ini berarti bahwa jika kita tahu nilai dari Z, pengetahuan tentang X tidak memberikan informasi lebih lanjut tentang Y, dan sebaliknya.

\[ P(X, Y \mid Z) = P(X \mid Z) \cdot P(Y \mid Z) \]

Contoh Kasus

Tabel untuk Status Sosial Ekonomi = Atas

Tabel di bawah ini menunjukkan distribusi pekerjaan dan tingkat pendidikan untuk individu yang berasal dari status sosial ekonomi Atas.

Pekerjaan Stabil Pekerjaan Tidak Stabil
Pendidikan Tinggi 50 10
Pendidikan Rendah 20 30

Tabel untuk Status Sosial Ekonomi = Bawah

Tabel di bawah ini menunjukkan distribusi pekerjaan dan tingkat pendidikan untuk individu yang berasal dari status sosial ekonomi Bawah.

Pekerjaan Stabil Pekerjaan Tidak Stabil
Pendidikan Tinggi 30 20
Pendidikan Rendah 40 50

Keterangan :

  • X: Pendidikan (Tinggi / Rendah)

  • Y: Pekerjaan (Stabil / Tidak Stabil)

  • Z: Status Sosial Ekonomi (Atas / Bawah)

Implementasi menggunakan software R :

# Memuat library yang diperlukan
library(knitr)
library(kableExtra)

# Membuat array 3 dimensi untuk data ekonomi
economic_data <- array(
  c(50, 10, 20, 30, 40, 50, 30, 20),
  dim = c(2, 2, 2),
  dimnames = list(
    "Pendidikan" = c("Tinggi", "Rendah"),
    "Pekerjaan" = c("Stabil", "Tidak Stabil"),
    "Status Sosial Ekonomi" = c("Atas", "Bawah")
  )
)

# Menampilkan tabel untuk masing-masing kelompok Status Sosial Ekonomi
for (z in dimnames(economic_data)$`Status Sosial Ekonomi`) {
  # Mengambil subset data untuk Status Sosial Ekonomi tertentu
  df <- as.data.frame.matrix(economic_data[,,z])
  colnames(df) <- c("Pekerjaan Stabil", "Pekerjaan Tidak Stabil")
  rownames(df) <- c("Pendidikan Tinggi", "Pendidikan Rendah")
  
  # Menampilkan tabel dalam format LaTeX menggunakan kable
  print(kable(df, format = "latex", booktabs = TRUE,
              caption = paste("Tabel untuk Status Sosial Ekonomi =", z)) %>%
          kable_styling(full_width = FALSE, position = "center"))
}
## \begin{table}
## \centering
## \caption{\label{tab:unnamed-chunk-38}Tabel untuk Status Sosial Ekonomi = Atas}
## \centering
## \begin{tabular}[t]{lrr}
## \toprule
##   & Pekerjaan Stabil & Pekerjaan Tidak Stabil\\
## \midrule
## Pendidikan Tinggi & 50 & 20\\
## Pendidikan Rendah & 10 & 30\\
## \bottomrule
## \end{tabular}
## \end{table}
## \begin{table}
## \centering
## \caption{\label{tab:unnamed-chunk-38}Tabel untuk Status Sosial Ekonomi = Bawah}
## \centering
## \begin{tabular}[t]{lrr}
## \toprule
##   & Pekerjaan Stabil & Pekerjaan Tidak Stabil\\
## \midrule
## Pendidikan Tinggi & 40 & 30\\
## Pendidikan Rendah & 50 & 20\\
## \bottomrule
## \end{tabular}
## \end{table}

Pengujian Conditional Independence

Conditional independence (kemandirian bersyarat) mengukur apakah dua variabel \(X\) dan \(Y\) menjadi independen setelah mengendalikan variabel \(Z\). Dalam kasus ini, kita akan menguji apakah variabel Pekerjaan dan Pendidikan independen setelah mengendalikan Status Sosial Ekonomi.

Secara matematis, kita menguji apakah:

\[ P(X, Y | Z) = P(X | Z) \times P(Y | Z) \]

Misalkan untuk status ekonomi rendah :

Pendidikan Tinggi | Pekerjaan Stabil, Status Sosial Ekonomi Rendah:

\[ P(\text{Pendidikan Tinggi | Pekerjaan Stabil, Rendah}) = \frac{40}{50} = 0.8 \]

Pendidikan Tinggi | Pekerjaan Tidak Stabil, Status Sosial Ekonomi Rendah:

\[ P(\text{Pendidikan Tinggi | Pekerjaan Tidak Stabil, Rendah}) = \frac{20}{70} \approx 0.2857 \]

Pendidikan Tinggi | Status Sosial Ekonomi Rendah:

\[ P(\text{Pendidikan Tinggi | Rendah}) = \frac{60}{120} = 0.5 \]

Interpretasi :

  • Probabilitas seseorang memiliki Pendidikan Tinggi jika mereka memiliki Pekerjaan Stabil dan berada dalam Status Sosial Ekonomi Rendah adalah 0.8 atau 80%.

  • Probabilitas seseorang memiliki Pendidikan Tinggi jika mereka memiliki Pekerjaan Tidak Stabil dan berada dalam Status Sosial Ekonomi Rendah adalah 0.2857 atau sekitar 28.6%.

  • Probabilitas seseorang memiliki Pendidikan Tinggi di dalam keseluruhan Status Sosial Ekonomi Rendah (tanpa memandang apakah mereka memiliki pekerjaan stabil atau tidak) adalah 0.5 atau 50%.

Karena probabilitas Pendidikan Tinggi pada kategori Pekerjaan Stabil dan Pekerjaan Tidak Stabil berbeda jauh dengan probabilitas Pendidikan Tinggi secara keseluruhan, maka kita dapat mengatakan bahwa Pekerjaan dan Pendidikan tidak independen secara kondisional terhadap Status Sosial Ekonomi.

Perhitungan menggunakan R :

# Membuat data kontingensi untuk Status Sosial Ekonomi = Rendah
data_ekonomi <- matrix(c(40, 10, 20, 50), nrow = 2, byrow = TRUE)
rownames(data_ekonomi) <- c("Pendidikan Tinggi", "Pendidikan Rendah")
colnames(data_ekonomi) <- c("Pekerjaan Stabil", "Pekerjaan Tidak Stabil")

# Menampilkan data
data_ekonomi
##                   Pekerjaan Stabil Pekerjaan Tidak Stabil
## Pendidikan Tinggi               40                     10
## Pendidikan Rendah               20                     50
# Uji Chi-Square untuk data ekonomi
chisq_ekonomi <- chisq.test(data_ekonomi)

# Menampilkan hasil uji Chi-Square
chisq_ekonomi
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_ekonomi
## X-squared = 28.834, df = 1, p-value = 7.884e-08

Interpretasi hasil :

Dari hasil uji Chi-Square, kita mendapatkan nilai X-squared = 28.834 dengan p-value = 1.011e-08. Karena p-value jauh lebih kecil dari 0.05, maka didapatkan keputusan tolak H0, maka dapat disimpulkan terdapat hubungan yang signifikan antara Pekerjaan dan Pendidikan dalam kelompok Status Sosial Ekonomi Rendah. Dengan kata lain, keduanya tidak independen secara kondisional terhadap status sosial ekonomi.

7.9 Inferensi Tabel Kontingensi Tiga Arah

Tabel kontingensi tiga arah digunakan untuk mengevaluasi hubungan antara dua variabel kategorikal dengan mempertimbangkan pengaruh dari satu variabel kontrol. Sebagai contoh, variabel Pendidikan (X) dan Pekerjaan (Y) dianalisis dengan mempertimbangkan Status Sosial Ekonomi (Z) sebagai variabel kontrol.

Dalam tabel ini, dibuat beberapa tabel parsial berukuran 2×2 untuk masing-masing kategori Z, serta sebuah tabel marginal yang menyatukan data tanpa memperhatikan Z. Ukuran asosiasi yang umum digunakan dalam analisis ini adalah odds ratio :

\[ \text{OR} = \frac{a \cdot d}{b \cdot c} \]

Dengan:

  • \(a\) = Jumlah kasus pada kategori positif Y dan positif X (Pendidikan Tinggi dan Pekerjaan Stabil)

  • \(b\) = Jumlah kasus pada kategori positif Y dan negatif X (Pendidikan Rendah dan Pekerjaan Stabil)

  • \(c\) = Jumlah kasus pada kategori negatif Y dan positif X (Pendidikan Tinggi dan Pekerjaan Tidak Stabil)

  • \(d\) = Jumlah kasus pada kategori negatif Y dan negatif X (Pendidikan Rendah dan Pekerjaan Tidak Stabil)

  • OR > 1: Menunjukkan adanya asosiasi positif, artinya ketika satu variabel meningkat, kemungkinan terjadinya kejadian pada variabel lainnya juga meningkat.

  • OR < 1: Menunjukkan asosiasi negatif, artinya ketika satu variabel meningkat, kemungkinan terjadinya kejadian pada variabel lainnya menurun.

  • OR = 1: Menunjukkan tidak ada asosiasi antara kedua variabel.

Mantel-Haenszel Odds Ratio (ORMH)

Ketika kita memperoleh beberapa tabel parsial (misalnya berdasarkan kelompok usia atau strata lainnya), dan jika nilai Odds Ratio dari masing-masing tabel relatif konsisten, maka kita dapat menghitung Odds Ratio gabungan menggunakan estimasi Mantel-Haenszel (MH).

Estimasi Mantel-Haenszel Odds Ratio (ORMH) memberikan ringkasan yang memperhitungkan variasi antar strata, sehingga lebih menggambarkan hubungan antara variabel pada keseluruhan populasi.

Rumus Mantel-Haenszel Odds Ratio:

\[ \text{ORMH} = \frac{\sum_i \frac{a_i d_i}{n_i}}{\sum_i \frac{b_i c_i}{n_i}} \]

Dengan:

  • \(a_i\), \(b_i\), \(c_i\), dan \(d_i\) adalah isi dari tabel parsial ke-\(i\),

  • \(n_i\) adalah total observasi dalam tabel parsial ke-\(i\).

Pengujian Hipotesis dengan Chi-Square Mantel-Haenszel

Metode Mantel-Haenszel juga memungkinkan kita untuk melakukan pengujian hipotesis nol bahwa tidak ada asosiasi antara variabel X dan variabel Y dalam semua strata Z.
Pengujian ini dilakukan menggunakan statistik Chi-Square Mantel-Haenszel, yang memungkinkan untuk mengevaluasi apakah ada asosiasi yang signifikan antara variabel di berbagai strata.


7.9.1 Independensi Bersyarat dalam Tabel Kontingensi Tiga Arah

Dalam analisis statistik terhadap data kategorik, independensi bersyarat adalah konsep yang sangat penting untuk memahami keterkaitan antara dua variabel utama dengan mempertimbangkan pengaruh variabel ketiga yang mungkin memengaruhi hubungan tersebut.
Untuk menyelidiki keterkaitan antara dua variabel (misalnya, X dan Y) dalam konteks pengaruh variabel ketiga (Z), kita menggunakan tabel kontingensi tiga arah.

Penjelasan Konseptual dan Matematis

Independensi bersyarat terjadi ketika dua variabel, misalnya X dan Y, tidak saling bergantung pada satu sama lain dalam setiap strata atau tingkat yang dipengaruhi oleh variabel ketiga Z.
Dalam konteks tabel kontingensi, ini berarti bahwa setelah mempertimbangkan pengaruh dari Z, hubungan antara X dan Y menjadi netral, yang artinya tidak ada korelasi yang terdeteksi antara keduanya.

Rumus Matematis Independensi Bersyarat:

\[ \text{OR}(X, Y \mid Z) = 1 \]

Rumus ini menunjukkan bahwa rasio odds antara X dan Y pada setiap strata Z adalah 1, yang berarti tidak ada hubungan atau ketergantungan antara kedua variabel tersebut dalam konteks kontrol oleh Z. Jika nilai OR(X, Y ∣ Z) = 1, maka setelah mengendalikan efek dari Z, hubungan antara X dan Y menjadi tidak signifikan, yang berarti kedua variabel tersebut tidak saling mempengaruhi satu sama lain. Konsep independensi bersyarat ini sering digunakan dalam analisis data kategorik untuk memahami apakah hubungan antara dua variabel tetap ada setelah mempertimbangkan pengaruh variabel lain.

Penggunaan Asumsi Independensi Bersyarat di Berbagai Bidang

Asumsi independensi bersyarat sangat berguna dalam banyak disiplin ilmu, di antaranya:

  • Epidemiologi: Digunakan untuk menganalisis hubungan antara faktor risiko dan penyakit dengan mengendalikan pengaruh dari variabel lain yang dapat mengganggu hubungan tersebut (seperti variabel pengganggu atau confounders).

  • Ilmu Sosial: Membantu dalam memahami peran variabel yang memediasi atau memoderasi hubungan antara dua variabel utama dalam konteks tertentu.

  • Machine Learning dan Data Mining: Dalam konteks pemodelan berbasis jaringan Bayesian atau model probabilistik lainnya, asumsi independensi bersyarat sangat penting untuk menyederhanakan ketergantungan antar variabel dalam jaringan tersebut.

Contoh Aplikasi dalam Studi Nyata

Sebagai contoh dalam penelitian,ingin untuk mengevaluasi hubungan antara penggunaan internet (X) dan kesehatan mental (Y). Dalam studi ini, kita dapat mempertimbangkan apakah hubungan tersebut tetap berlaku setelah mengontrol pengaruh usia (Z) sebagai variabel ketiga.

Jika hasil perhitungan Odds Ratio (OR) untuk setiap kelompok usia mendekati angka 1, ini menunjukkan bahwa penggunaan internet dan kesehatan mental independen bersyarat terhadap usia, artinya pengaruh usia terhadap hubungan keduanya tidak signifikan.

Namun, jika OR menunjukkan variasi yang signifikan di antara strata, maka kita harus menyimpulkan bahwa asumsi independensi bersyarat tidak dapat diterapkan, dan kemungkinan ada interaksi kompleks antara penggunaan internet, kesehatan mental, dan usia yang perlu dianalisis lebih lanjut.


7.9.2 Pengujian Statistik untuk Independensi Bersyarat

Uji Cochran-Mantel-Haenszel (CMH) digunakan untuk menguji apakah terdapat hubungan antara dua variabel kategorik setelah mempertimbangkan pengaruh variabel kontrol atau variabel pengganggu. Uji ini sangat berguna dalam analisis data stratifikasi, di mana kita memiliki data yang terbagi ke dalam beberapa kelompok atau strata.

Manfaat Uji Cochran-Mantel-Haenszel:

  • Mengendalikan efek pengganggu dalam tabel kontingensi berlapis (multiple layers of contingency tables).

  • Mengujikan hipotesis independensi bersyarat, yang memungkinkan kita untuk mengetahui apakah dua variabel utama tetap tidak saling bergantung setelah mempertimbangkan variabel ketiga.

  • Mengatasi masalah confounding dalam studi observasional atau eksperimen sosial, dengan mengisolasi pengaruh faktor pengganggu yang mungkin mempengaruhi hasil analisis.

Prosedur CMH membagi data ke dalam tabel kontingensi 2 × 2 yang terpisah berdasarkan strata dari variabel kontrol (Z). Dengan cara ini, uji ini menguji hubungan antara dua variabel utama (X dan Y) dalam setiap strata variabel kontrol, dan kemudian menghitung odds ratio gabungan untuk semua strata. Proses ini memungkinkan kita untuk mengendalikan pengaruh variabel kontrol dan memberikan gambaran yang lebih akurat tentang apakah hubungan antara X dan Y bersifat independen bersyarat terhadap Z.

Hipotesis :

  • H0 (Hipotesis nol): θXY(k) = 1 untuk semua strata \(k = 1, 2, \dots, K\), yang berarti tidak ada hubungan antara variabel \(X\) dan \(Y\) setelah mengendalikan variabel ketiga \(Z\) pada setiap strata.

  • H1 (Hipotesis alternatif): θXY(k) ≠ 1 untuk setidaknya satu strata \(k\), yang berarti ada hubungan yang signifikan antara \(X\) dan \(Y\) setelah mempertimbangkan pengaruh variabel ketiga pada setidaknya satu strata.

Statistik Uji Cochran-Mantel-Haenszel

Statistik CMH dihitung dengan menggunakan rumus berikut:

\[ CMH = \sum_{k} \frac{(n_{11k} - \mu_{11k})^2}{\text{var}(n_{11k})} \]

Dimana:

  • \(n_{11k}\): Frekuensi aktual dari sel baris 1 kolom 1 pada strata ke-k.

  • \(\mu_{11k}\): Ekspektasi frekuensi dari sel tersebut, yang dihitung sebagai:

\[ \mu_{11k} = E(n_{11k}) \]

  • Varian dari \(n_{11k}\): Dihitung dengan rumus:

\[ \text{var}(n_{11k}) = \frac{n_{1\cdot k} \cdot n_{\cdot 1k}}{n_{\cdot \cdot k}} \cdot \frac{n_{1\cdot k} \cdot n_{2\cdot k} \cdot n_{\cdot 1k} \cdot n_{\cdot 2k}}{n_{\cdot \cdot k}(n_{\cdot \cdot k} - 1)} \]

Di mana:

  • \(n_{1\cdot k}\) adalah jumlah total di baris 1 pada strata ke-k.

  • \(n_{\cdot 1k}\) adalah jumlah total di kolom 1 pada strata ke-k.

  • \(n_{\cdot \cdot k}\) adalah jumlah total observasi pada strata ke-k.

Statistik CMH mengikuti distribusi Chi-Square dengan derajat kebebasan 1.

Pengujian Hipotesis

Untuk menguji hipotesis, kita menggunakan keputusan berikut:

  • Tolak H0 jika nilai CMH lebih besar dari nilai kritis distribusi Chi-Square dengan derajat kebebasan 1 (dengan tingkat signifikansi \(\alpha\)), atau jika p-value < \(\alpha\).

Dengan kata lain, jika nilai statistik uji CMH cukup besar untuk menunjukkan perbedaan yang signifikan, maka kita menolak hipotesis nol dan menyimpulkan bahwa ada hubungan antara variabel \(X\) dan \(Y\) setelah mengendalikan variabel ketiga Z.


Contoh Kasus

Kita ingin menguji apakah penggunaan internet dan kesehatan mental bersifat independen secara kondisional setelah mengendalikan usia menggunakan Uji Cochran-Mantel-Haenszel (CMH)

Hipotesis :

  • H₀ (Hipotesis Nol): Penggunaan internet dan kesehatan mental independen secara kondisional setelah mengendalikan variabel usia.

  • H₁ (Hipotesis Alternatif): Penggunaan internet dan kesehatan mental tidak independen secara kondisional setelah mengendalikan variabel usia.

Tabel Kontingensi

Tabel kontingensi ini mengelompokkan data berdasarkan status penggunaan internet (X) dan kesehatan mental (Y) untuk berbagai kelompok usia (Z):

Usia Penggunaan Internet Positif (X=1) Penggunaan Internet Negatif (X=0) Total
Kesehatan Mental Baik (Y=1) 12 16 28
Kesehatan Mental Buruk (Y=0) 5 9 14
Total 17 25 42

Nilai Ekspektasi

Untuk menghitung nilai ekspektasi \(\mu_{11k}\), kita menggunakan rumus berikut:

\[ \mu_{11k} = \frac{n_{1\cdot k} \times n_{\cdot 1k}}{n_{\cdot \cdot k}} \]

Berikut adalah perhitungan nilai ekspektasi untuk setiap strata usia:

  • Strata Usia 1: \[ \mu_{11}(1) = \frac{12 \times 4}{20} = 2.4 \]

  • Strata Usia 2: \[ \mu_{11}(2) = \frac{16 \times 9}{28} = 5.14 \]

  • Strata Usia 3: \[ \mu_{11}(3) = \frac{14 \times 11}{22} = 7 \]

  • Strata Usia 4: \[ \mu_{11}(4) = \frac{18 \times 12}{30} = 7.2 \]

  • Strata Usia 5: \[ \mu_{11}(5) = \frac{16 \times 8}{32} = 4 \]

Varians Sel \(n_{11k}\)

Dalam uji Cochran-Mantel-Haenszel (CMH), kita menghitung varian dari frekuensi observasi sel baris 1 kolom 1 pada masing-masing strata, yaitu \(\text{Var}(n_{11k})\), dengan rumus berikut:

\[ \text{Var}(n_{11k}) = \frac{n_{1\cdot k} \cdot n_{2\cdot k} \cdot n_{\cdot 1k} \cdot n_{\cdot 2k}}{n_{\cdot \cdot k}^2 (n_{\cdot \cdot k} - 1)} \]

Perhitungan Varian untuk Masing-Masing Strata

Strata Usia 1

  • \(n_{1\cdot 1} = 10\)

  • \(n_{2\cdot 1} = 10\)

  • \(n_{\cdot 1 1} = 3\)

  • \(n_{\cdot 2 1} = 17\)

  • \(n_{\cdot \cdot 1} = 20\)

\[ \text{Var}(n_{11(1)}) = \frac{10 \times 10 \times 3 \times 17}{20^2 \times 19} = 0.67105 \]

Strata Usia 2

  • \(n_{1\cdot 2} = 14\)

  • \(n_{2\cdot 2} = 14\)

  • \(n_{\cdot 1 2} = 11\)

  • \(n_{\cdot 2 2} = 17\)

  • \(n_{\cdot \cdot 2} = 28\)

\[ \text{Var}(n_{11(2)}) = \frac{14 \times 14 \times 11 \times 17}{28^2 \times 27} = 1.73148 \]

Strata Usia 3

  • \(n_{1\cdot 3} = 12\)

  • \(n_{2\cdot 3} = 10\)

  • \(n_{\cdot 1 3} = 13\)

  • \(n_{\cdot 2 3} = 9\)

  • \(n_{\cdot \cdot 3} = 22\)

\[ \text{Var}(n_{11(3)}) = \frac{12 \times 10 \times 13 \times 9}{22^2 \times 21} = 1.38135 \]

Strata Usia 4

  • \(n_{1\cdot 4} = 17\)

  • \(n_{2\cdot 4} = 13\)

  • \(n_{\cdot 1 4} = 16\)

  • \(n_{\cdot 2 4} = 14\)

  • \(n_{\cdot \cdot 4} = 30\)

\[ \text{Var}(n_{11(4)}) = \frac{17 \times 13 \times 16 \times 14}{30^2 \times 29} = 1.8967 \]

Strata Usia 5

  • \(n_{1\cdot 5} = 18\)

  • \(n_{2\cdot 5} = 14\)

  • \(n_{\cdot 1 5} = 19\)

  • \(n_{\cdot 2 5} = 13\)

  • \(n_{\cdot \cdot 5} = 32\)

\[ \text{Var}(n_{11(5)}) = \frac{18 \times 14 \times 19 \times 13}{32^2 \times 31} = 1.96081 \]


Menghitung statistik Uji CMH :

Rumus CMH:

\[ X^2_{CMH} = \frac{ \sum_k (n_{11k} - \mu_{11k})^2 }{ \sum_k \text{Var}(n_{11k}) } \]

Langkah Perhitungan

  • Jumlah deviasi kuadrat dari frekuensi yang diharapkan: \[ \sum_k (n_{11k} - \mu_{11k})^2 = 51.1929 \]

  • Jumlah seluruh varian dari lima strata: \[ \sum_k \text{Var}(n_{11k}) = 0.67105 + 1.73148 + 1.38135 + 1.8967 + 1.96081 = 7.6414 \]

Nilai Statistik Uji

\[ X^2_{CMH} = \frac{51.1929}{7.6414} = 6.69942 \]

Interpretasi

Nilai statistik uji CMH sebesar 6.70 dapat dibandingkan dengan nilai kritis dari distribusi Chi-Square dengan 1 derajat kebebasan. Jika nilai ini lebih besar dari nilai kritis (misalnya, 3.84 untuk α = 0.05), maka dapatkan kesimpulan :

Kesimpulan: Didapatkan keputusan Tolak H0, yang berarti ada hubungan yang signifikan antara penggunaan internet dan kesehatan mental, setelah efek dari usia dikendalikan.

7.9.3 Odds Ratio Bersama

Dalam analisis data kategorik, khususnya dalam tabel kontingensi 2x2, odds ratio (OR) merupakan ukuran kekuatan asosiasi antara dua variabel kategorik. Namun, ketika data dibagi ke dalam beberapa strata berdasarkan variabel perancu (confounder), seperti usia, maka perhitungan satu odds ratio tidak mencerminkan hubungan sebenarnya.

Untuk mengatasi hal ini, digunakan Odds Ratio Bersama (Common Odds Ratio) dengan pendekatan Mantel-Haenszel, yang menggabungkan informasi dari masing-masing strata.

Rumus Odds Ratio Bersama (Mantel-Haenszel)

Odds ratio bersama ditaksir dengan rumus:

\[ \hat{\theta}_{MH} = \frac{ \sum_{k=1}^{K} \frac{n_{11k} \cdot n_{22k}}{n_{\cdot\cdot k}} }{ \sum_{k=1}^{K} \frac{n_{12k} \cdot n_{21k}}{n_{\cdot\cdot k}} } \]

Rumus Interval Kepercayaan

Interval Kepercayaan (Confidence Interval) untuk log Odds Ratio Bersama dihitung dengan rumus:

\[ \log(\hat{\theta}_{MH}) \pm Z_{\alpha} \cdot \hat{\sigma}[\log(\hat{\theta}_{MH})] \]

Langkah-langkah Perhitungan

  1. Pembilang:

    \[ \sum_{k=1}^{K} (n_{11k} \cdot n_{22k}) \]

  2. Penyebut:

    \[ \sum_{k=1}^{K} (n_{12k} \cdot n_{21k}) \]

  3. Estimasi Odds Ratio Bersama: \[ \hat{\theta}_{MH} = \frac{\text{Pembilang}}{\text{Penyebut}} \]


Perhitungan Pembilang dan Penyebut

  1. Pembilang:

Untuk strata 1, kita hitung \(n_{11k} \cdot n_{22k}\):

\[ n_{11(1)} \cdot n_{22(1)} = 12 \cdot 9 = 108 \]

Untuk strata 2:

\[ n_{11(2)} \cdot n_{22(2)} = 10 \cdot 11 = 110 \]

Untuk strata 3:

\[ n_{11(3)} \cdot n_{22(3)} = 8 \cdot 10 = 80 \]

Untuk strata 4:

\[ n_{11(4)} \cdot n_{22(4)} = 17 \cdot 14 = 238 \]

Untuk strata 5:

\[ n_{11(5)} \cdot n_{22(5)} = 18 \cdot 13 = 234 \]

Sehingga, total pembilangnya adalah:

\[ \text{Pembilang} = 108 + 110 + 80 + 238 + 234 = 770 \]

  1. Penyebut:

Untuk strata 1, kita hitung \(n_{12k} \cdot n_{21k}\):

\[ n_{12(1)} \cdot n_{21(1)} = 5 \cdot 16 = 80 \]

Untuk strata 2:

\[ n_{12(2)} \cdot n_{21(2)} = 7 \cdot 14 = 98 \]

Untuk strata 3:

\[ n_{12(3)} \cdot n_{21(3)} = 6 \cdot 12 = 72 \]

Untuk strata 4:

\[ n_{12(4)} \cdot n_{21(4)} = 13 \cdot 16 = 208 \]

Untuk strata 5:

\[ n_{12(5)} \cdot n_{21(5)} = 14 \cdot 19 = 266 \]

Sehingga, total penyebutnya adalah:

\[ \text{Penyebut} = 80 + 98 + 72 + 208 + 266 = 724 \]


  1. Estimasi Odds Ratio Bersama

Sekarang kita dapat menghitung Odds Ratio Bersama:

\[ \hat{\theta}_{MH} = \frac{\text{Pembilang}}{\text{Penyebut}} = \frac{770}{724} \approx 1.064 \]

Menghitung Interval Kepercayaan 95% untuk log Odds Ratio Bersama (\(\log(\hat{\theta}_{MH})\)) dan kemudian menghitung Interval Kepercayaan untuk Odds Ratio.

Langkah-langkah perhitungan :

  1. Log Odds Ratio Bersama (\(\log(\hat{\theta}_{MH})\)):

    \[ \log(\hat{\theta}_{MH}) = \log(2.53) \approx 0.927 \]

  2. Standar Error dari Log Odds Ratio Bersama:

    \[ SE(\log(\hat{\theta}_{MH})) = 0.05 \]

  3. Tingkat Kepercayaan:

    \[ Z_{\alpha} = 1.96 \]

  4. Hitung Interval Kepercayaan untuk Log Odds Ratio:

    \[ \text{Batas Bawah} = \log(\hat{\theta}_{MH}) - 1.96 \times SE(\log(\hat{\theta}_{MH})) \] \[ \text{Batas Atas} = \log(\hat{\theta}_{MH}) + 1.96 \times SE(\log(\hat{\theta}_{MH})) \]

    Dengan nilai:

    \[ \text{Batas Bawah} = 0.927 - 1.96 \times 0.05 = 0.927 - 0.098 = 0.829 \] \[ \text{Batas Atas} = 0.927 + 1.96 \times 0.05 = 0.927 + 0.098 = 1.025 \]

  5. Interval Kepercayaan untuk Odds Ratio:

    \[ \text{CI OR} = [e^{0.829}, e^{1.025}] = [2.29, 2.79] \]


Hasil

  • Interval Kepercayaan untuk log Odds Ratio Bersama: \[ \log(\hat{\theta}_{MH}) = [0.829, 1.025] \]

  • Interval Kepercayaan untuk Odds Ratio: \[ \hat{\theta}_{MH} = [2.29, 2.79] \]

Kesimpulan : Dengan tingkat kepercayaan 95%, Odds Ratio Bersama (\(\hat{\theta}_{MH}\)) untuk hubungan antara penggunaan internet dan kesehatan mental setelah mengendalikan usia berada dalam rentang [2.29, 2.79]

Implementasi dalam R :

# Data
log_theta_MH <- log(2.53)  # Log Odds Ratio Bersama (log(2.53))
SE_log_theta_MH <- 0.05    # Standar Error dari log Odds Ratio Bersama

# Z untuk tingkat kepercayaan 95%
z_alpha <- 1.96

# Menghitung batas bawah dan batas atas dari Interval Kepercayaan untuk log Odds Ratio
lower_log_CI <- log_theta_MH - z_alpha * SE_log_theta_MH
upper_log_CI <- log_theta_MH + z_alpha * SE_log_theta_MH

# Menghitung Interval Kepercayaan untuk Odds Ratio
lower_CI_OR <- exp(lower_log_CI)
upper_CI_OR <- exp(upper_log_CI)

# Output hasil
cat("Interval Kepercayaan 95% untuk log(θMH): [", lower_log_CI, ", ", upper_log_CI, "]\n")
## Interval Kepercayaan 95% untuk log(θMH): [ 0.8302193 ,  1.026219 ]
cat("Interval Kepercayaan 95% untuk θMH (Odds Ratio): [", lower_CI_OR, ", ", upper_CI_OR, "]\n")
## Interval Kepercayaan 95% untuk θMH (Odds Ratio): [ 2.293822 ,  2.790496 ]

7.9.4 Uji Homogenitas Odds Ratio dengan Statistik Breslow-Day

Dalam analisis data kategorik, khususnya saat kita menganalisis tabel kontingensi tiga arah, sering kali kita tertarik untuk mengetahui apakah asosiasi antara dua variabel (misalnya X dan Y) konsisten di seluruh strata variabel ketiga (misalnya Z). Ini penting karena hubungan antara X dan Y mungkin bervariasi bergantung pada level variabel Z, yang bisa menjadi variabel perancu atau pengaruh eksternal.

Untuk menjawab pertanyaan ini, kita bisa menggunakan Uji Homogenitas Odds Ratio. Salah satu pendekatannya adalah dengan menggunakan statistik Breslow-Day. Uji ini menguji apakah nilai Odds Ratio untuk setiap strata (atau tabel parsial) memiliki nilai yang seragam di seluruh strata yang berbeda. Jika Odds Ratio dari setiap strata konsisten, maka kita dapat menyimpulkan bahwa hubungan antara variabel X dan Y homogen di seluruh strata Z. Secara matematis, homogenitas odds ratio antar strata dapat dituliskan sebagai:

\[ \theta_{XY}^{(1)} = \theta_{XY}^{(2)} = \cdots = \theta_{XY}^{(K)} \]

Jika kondisi ini terpenuhi, maka dapat disimpulkan bahwa tidak ada interaksi antara variabel X dan Y terhadap variabel kontrol Z. Artinya, hubungan antara X dan Y tidak bergantung pada level Z. Namun, jika odds ratio berbeda-beda pada masing-masing strata, maka terdapat indikasi interaksi antara X dan Y yang dipengaruhi oleh Z.

Dalam praktik analisis data kategorik:

  • Uji homogenitas Odds Ratio merupakan langkah penting sebelum menggabungkan data antar strata.

  • Uji ini menentukan apakah penggunaan odds ratio gabungan valid atau apakah analisis harus dilakukan secara stratifikasi.

  • Ketika homogenitas tidak terpenuhi, penggunaan odds ratio gabungan seperti OR_MH (Mantel-Haenszel) dapat menyesatkan dan menutupi efek berbeda yang sebenarnya terjadi di masing-masing strata.

Hipotesis :

  • Hipotesis Nol (H₀):

Tidak ada perbedaan odds ratio antar strata, yaitu:

\[ \theta_{XY}^{(1)} = \theta_{XY}^{(2)} = \cdots = \theta_{XY}^{(K)} \]

  • Hipotesis Alternatif (H₁):

Setidaknya terdapat satu strata di mana nilai odds ratio berbeda dari yang lain.

Rumus Statistik Uji Breslow-Day

\[ \chi^2_{HBD} = \sum_{j=1}^{K} \frac{(a_j - \tilde{a}_j)^2}{\widehat{\text{Var}}(a_j \mid \widehat{OR}_{MH})} \]

Keterangan:

  • \(\chi^2_{HBD}\): Statistik uji homogenitas (Breslow-Day)

  • \(K\): Jumlah strata (tingkat variabel kontrol Z)

  • \(a_j\): Frekuensi aktual sel baris 1 kolom 1 di strata ke-\(j\)

  • \(\tilde{a}_j\): Frekuensi yang diharapkan di sel tersebut jika semua strata memiliki odds ratio yang sama (\(\widehat{OR}_{MH}\))

  • \(\widehat{\text{Var}}(a_j \mid \widehat{OR}_{MH})\): Varian dari \(a_j\), dihitung berdasarkan odds ratio gabungan


  • Derajat Bebas (df)

Distribusi dari statistik \(\chi^2_{HBD}\) mengikuti distribusi Chi-square dengan:

\[ df = K - 1 \]

Keterangan:

  • \(df\): derajat bebas

  • \(K\): jumlah strata (jumlah tabel 2x2 parsial)


  • Jika nilai statistik uji lebih besar dari nilai kritis pada taraf signifikansi tertentu (misal 5%), maka kita menolak H0, yang berarti terdapat ketidakhomogenan odds ratio antar strata.

  • Sebaliknya, jika nilai statistik uji tidak signifikan, maka kita tidak menolak H0, sehingga asumsi homogenitas dapat diterima.

Contoh menggunakan contoh kasus sebelumnya

Rumus Odds Ratio

\[ OR_k = \frac{a_k \cdot d_k}{b_k \cdot c_k} \]


1. Hitung Rasio Odds Tiap Stratum

Berikut data dari 5 strata (kelompok usia):

Stratum 1:

  • \(a_1 = 1\), \(b_1 = 2\)

  • \(c_1 = 1\), \(d_1 = 6\)

\[ OR_1 = \frac{1 \cdot 6}{2 \cdot 1} = \frac{6}{2} = 3 \]


Stratum 2:

  • \(a_2 = 5\), \(b_2 = 6\)

  • \(c_2 = 4\), \(d_2 = 3\)

\[ OR_2 = \frac{5 \cdot 3}{6 \cdot 4} = \frac{15}{24} = 0.625 \]


Stratum 3:

  • \(a_3 = 9\), \(b_3 = 4\)

  • \(c_3 = 4\), \(d_3 = 5\)

\[ OR_3 = \frac{9 \cdot 5}{4 \cdot 4} = \frac{45}{16} = 2.8125 \]


Stratum 4:

  • \(a_4 = 12\), \(b_4 = 5\)

  • \(c_4 = 5\), \(d_4 = 8\)

\[ OR_4 = \frac{12 \cdot 8}{5 \cdot 5} = \frac{96}{25} = 3.84 \]


Stratum 5:

  • \(a_5 = 14\), \(b_5 = 5\)

  • \(c_5 = 5\), \(d_5 = 8\)

\[ OR_5 = \frac{14 \cdot 8}{5 \cdot 5} = \frac{112}{25} = 4.48 \]


2. Hitung Rasio Odds Gabungan (Mantel-Haenszel OR) Gunakan rumus Mantel-Haenszel

\[ \hat{OR}_{MH} = \frac{\sum_{j=1}^{K} \frac{a_j d_j}{N_j}}{\sum_{j=1}^{K} \frac{b_j c_j}{N_j}} \]

Perhitungan per Strata

Stratum 1:

  • \(a_1 = 1, d_1 = 6, b_1 = 2, c_1 = 1, N_1 = 10\)

\[ \frac{a_1 d_1}{N_1} = \frac{1 \cdot 6}{10} = 0.6, \quad \frac{b_1 c_1}{N_1} = \frac{2 \cdot 1}{10} = 0.2 \]

Stratum 2:

  • \(a_2 = 5, d_2 = 3, b_2 = 6, c_2 = 4, N_2 = 18\)

\[ \frac{a_2 d_2}{N_2} = \frac{5 \cdot 3}{18} = 0.83, \quad \frac{b_2 c_2}{N_2} = \frac{6 \cdot 4}{18} = 1.33 \]

Stratum 3:

  • \(a_3 = 9, d_3 = 5, b_3 = 4, c_3 = 4, N_3 = 22\)

\[ \frac{a_3 d_3}{N_3} = \frac{9 \cdot 5}{22} = 2.05, \quad \frac{b_3 c_3}{N_3} = \frac{4 \cdot 4}{22} = 0.73 \]

Stratum 4:

  • \(a_4 = 12, d_4 = 8, b_4 = 5, c_4 = 5, N_4 = 30\)

\[ \frac{a_4 d_4}{N_4} = \frac{12 \cdot 8}{30} = 3.2, \quad \frac{b_4 c_4}{N_4} = \frac{5 \cdot 5}{30} = 0.83 \]

Stratum 5:

  • \(a_5 = 14, d_5 = 8, b_5 = 5, c_5 = 5, N_5 = 32\)

\[ \frac{a_5 d_5}{N_5} = \frac{14 \cdot 8}{32} = 3.5, \quad \frac{b_5 c_5}{N_5} = \frac{5 \cdot 5}{32} = 0.78 \]


Menjumlahkan Pembilang dan Penyebut

Pembilang:

\[ 0.6 + 0.83 + 2.05 + 3.2 + 3.5 = 10.18 \]

Penyebut:

\[ 0.2 + 1.33 + 0.73 + 0.83 + 0.78 = 3.87 \]


Hasil Odds Ratio Gabungan

\[ \hat{OR}_{MH} = \frac{10.18}{3.87} = 2.63 \]


3. Menghitung Ekspektasi \(\bar{a}_j\)

Rumus Ekspektasi \(\bar{a}_j\)

Ekspektasi dari sel \(a_j\) (sel baris 1 kolom 1) pada tabel 2x2 tiap strata dihitung dengan:

\[ \bar{a}_j = \frac{m_{j1} n_{j1} \hat{OR}_{MH}}{n_{j2} - m_{j1} + \hat{OR}_{MH} (m_{j1} + m_{j2})} \]

Perhitungan Ekspektasi \(\bar{a}_j\) per Stratum

Stratum 1

  • \(a_1 = 1, b_1 = 2, c_1 = 1, d_1 = 6\)

  • \(m_{11} = a_1 + b_1 = 3\)

  • \(m_{12} = c_1 + d_1 = 7\)

  • \(n_{11} = a_1 + c_1 = 2\)

  • \(n_{12} = b_1 + d_1 = 8\)

\[ \bar{a}_1 = \frac{3 \cdot 2 \cdot 2.63}{8 - 3 + 2.63 \cdot 10} = \frac{15.78}{5 + 26.3} = \frac{15.78}{31.3} \approx 0.504 \]


Stratum 2

  • \(a_2 = 5, b_2 = 6, c_2 = 4, d_2 = 3\)

  • \(m_{21} = 11, m_{22} = 7, n_{21} = 9, n_{22} = 9\)

\[ \bar{a}_2 = \frac{11 \cdot 9 \cdot 2.63}{9 - 11 + 2.63 \cdot 18} = \frac{260.37}{-2 + 47.34} = \frac{260.37}{45.34} \approx 5.74 \]


Stratum 3

  • \(a_3 = 9, b_3 = 4, c_3 = 4, d_3 = 5\)

  • \(m_{31} = 13, m_{32} = 9, n_{31} = 13, n_{32} = 9\)

\[ \bar{a}_3 = \frac{13 \cdot 13 \cdot 2.63}{9 - 13 + 2.63 \cdot 22} = \frac{443.59}{-4 + 57.86} = \frac{443.59}{53.86} \approx 8.24 \]


Stratum 4

  • \(a_4 = 12, b_4 = 5, c_4 = 5, d_4 = 8\)

  • \(m_{41} = 17, m_{42} = 13, n_{41} = 17, n_{42} = 13\)

\[ \bar{a}_4 = \frac{17 \cdot 17 \cdot 2.63}{13 - 17 + 2.63 \cdot 30} = \frac{759.73}{-4 + 78.9} = \frac{759.73}{74.9} \approx 10.14 \]


Stratum 5

  • \(a_5 = 14, b_5 = 5, c_5 = 5, d_5 = 8\)

  • \(m_{51} = 19, m_{52} = 13, n_{51} = 19, n_{52} = 13\)

\[ \bar{a}_5 = \frac{19 \cdot 19 \cdot 2.63}{13 - 19 + 2.63 \cdot 32} = \frac{948.91}{-6 + 84.16} = \frac{948.91}{78.16} \approx 12.14 \]


4. Menghitung Varian \(\widehat{Var}(a_j | \hat{OR}_{MH})\)

Stratum 1

  • \(m_{11} = 3\), \(m_{12} = 7\), \(n_{11} = 2\), \(n_{12} = 8\), \(N = 10\)

\[ Var(a_1) = \frac{3 \cdot 7 \cdot 2 \cdot 8 \cdot 2.63}{(10)^2 \cdot (8 - 3 + 2.63(10))^2} \] \[ = \frac{88.08}{100 \cdot (5 + 26.3)^2} = \frac{88.08}{100 \cdot 31.3^2} = \frac{88.08}{9796.9} \approx 0.009 \]


Stratum 2

  • \(m_{21} = 11\), \(m_{22} = 7\), \(n_{21} = 9\), \(n_{22} = 9\), \(N = 18\)

\[ Var(a_2) = \frac{11 \cdot 7 \cdot 9 \cdot 9 \cdot 2.63}{324 \cdot (-2 + 2.63 \cdot 18)^2} = \frac{16285.89}{324 \cdot 45.34^2} = \frac{16285.89}{324 \cdot 2055.12} \approx 0.025 \]


Stratum 3

  • \(m_{31} = 13\), \(m_{32} = 9\), \(n_{31} = 13\), \(n_{32} = 9\), \(N = 22\)

\[ Var(a_3) = \frac{13 \cdot 9 \cdot 13 \cdot 9 \cdot 2.63}{(22)^2 \cdot (-4 + 2.63 \cdot 22)^2} = \frac{35712.93}{484 \cdot 53.86^2} \approx \frac{35712.93}{484 \cdot 2900.91} \approx 0.026 \]


Stratum 4

  • \(m_{41} = 17\), \(m_{42} = 13\), \(n_{41} = 17\), \(n_{42} = 13\), \(N = 30\)

\[ Var(a_4) = \frac{17 \cdot 13 \cdot 17 \cdot 13 \cdot 2.63}{(30)^2 \cdot (-4 + 2.63 \cdot 30)^2} = \frac{134894.19}{900 \cdot 74.9^2} = \frac{134894.19}{900 \cdot 5612.01} \approx 0.027 \]


Stratum 5

  • \(m_{51} = 19\), \(m_{52} = 13\), \(n_{51} = 19\), \(n_{52} = 13\), \(N = 32\)

\[ Var(a_5) = \frac{19 \cdot 13 \cdot 19 \cdot 13 \cdot 2.63}{(32)^2 \cdot (-6 + 2.63 \cdot 32)^2} = \frac{201348.83}{1024 \cdot 78.16^2} = \frac{201348.83}{1024 \cdot 6109.95} \approx 0.032 \]


5. Statistik Uji Breslow-Day

\[ \chi^2_{HBD} = \sum_{j=1}^{5} \frac{(a_j - \bar{a}_j)^2}{Var(a_j)} \]

Stratum 1:

\[ \frac{(1 - 0.504)^2}{0.009} = \frac{0.2460}{0.009} \approx 27.33 \]

Stratum 2:

\[ \frac{(5 - 5.74)^2}{0.025} = \frac{0.5476}{0.025} \approx 21.90 \]

Stratum 3:

\[ \frac{(9 - 8.24)^2}{0.026} = \frac{0.5776}{0.026} \approx 22.22 \]

Stratum 4:

\[ \frac{(12 - 10.14)^2}{0.027} = \frac{3.4596}{0.027} \approx 128.13 \]

Stratum 5:

\[ \frac{(14 - 12.14)^2}{0.032} = \frac{3.4596}{0.032} \approx 108.11 \]


Jumlah Statistik

\[ \chi^2_{HBD} = 27.33 + 21.90 + 22.22 + 128.13 + 108.11 = \boxed{307.69} \]


Derajat Bebas

\[ df = K - 1 = 5 - 1 = 4 \]


6. Koreksi Tarone

Rumus:

\[ \chi^2_{HBD-T} = \chi^2_{HBD} \times \frac{\sum_j (a_j - \bar{a}_j)^2}{\sum_j \widehat{Var}(a_j)} \]

Hitung Koreksi Tarone:

\[ \chi^2_{HBD-T} = 307.69 \times \frac{8.2904}{0.119} = 307.69 \times 69.6647 \approx \boxed{21440.6} \]


7. Menghitung P-value

Rumus:

\[ p = 1 - P\left( \chi^2_1 \leq X^2_{HBD-T} \right) \]

\[ p = 1 - P(\chi^2_1 \leq 21440.6) \approx \boxed{0} \]

Interpretasi :

Dari hasil perhitungan diperoleh p-value = 0.0000001. Berdasarkan aturan keputusan:

  • Jika p-value < 0.05, maka tolak H0, artinya odds ratio tidak homogen di seluruh strata Z, ada interaksi antara X dan Y.

  • Jika p-value > 0.05, maka gagal menolak H0, yang berarti odds ratio seragam di seluruh strata Z.

Karena p-value = 0.0000001 < 0.05, maka tolak H0. artinya odds ratio tidak homogen di seluruh strata Z, ada interaksi antara X dan Y.

Implementasikan menggunakan R :

# Data yang diberikan
a <- c(1, 5, 9, 12, 14)  # Nilai a_j
b <- c(8, 8, 6, 9, 9)    # Nilai b_j
c <- c(9, 9, 10, 13, 14) # Nilai c_j
d <- c(20, 28, 22, 30, 32) # Nilai d_j

# 1. Menghitung Rasio Odds Tiap Stratum (OR_j)
OR_j <- (a * d) / (b * c)

# 2. Menghitung Rasio Odds Gabungan (MH-OR)
N <- sum(a + b + c + d)  # Total seluruh data
sum_a_d <- sum(a * d)  # Jumlah pembilang
sum_b_c <- sum(b * c)  # Jumlah penyebut
ORMH <- sum_a_d / sum_b_c

# 3. Menghitung Ekspektasi a_j (𝑎̅𝑎𝑗)
mj1 <- sum(a * b) / sum(b)  # Jumlah ekspektasi untuk a_j
mj2 <- sum(a * c) / sum(c)  # Jumlah ekspektasi untuk a_j dengan c

# 4. Menghitung Statistik Uji Breslow-Day
var_a_j <- (a - mj1)^2 / (sum(a * b) + sum(a * c))  # Varians a_j
HBD_stat <- sum((a - mj1)^2 / var_a_j)

# 5. Menghitung Koreksi Tarone
HBDT_stat <- HBD_stat * sum((a - mj1)^2) / sum(var_a_j)

# 6. Menghitung P-value dari Statistik Koreksi Tarone
p_value <- 1 - pchisq(HBDT_stat, df = 1)

8. Regresi Logistik dan Jenis Skala Variabel Prediktor: Normal, Ordinal, dan Rasio

Regresi logistik adalah salah satu metode analisis statistik yang digunakan untuk memahami hubungan antara variabel dependen bersifat biner (memiliki dua kemungkinan hasil seperti ya/tidak atau berhasil/gagal) dengan satu atau lebih variabel independen. Keunggulan utama dari regresi logistik adalah kemampuannya untuk mengakomodasi berbagai tipe skala pengukuran pada variabel bebas. Umumnya, ada tiga jenis skala pengukuran yang dapat digunakan, yaitu:

Skala Nominal

Variabel ini memiliki kategori yang setara tanpa adanya urutan logis di antara kategori tersebut. Contohnya termasuk jenis kelamin (laki-laki atau perempuan), agama, atau warna favorit. Karena model regresi logistik membutuhkan input numerik, variabel nominal harus dikonversi menggunakan teknik dummy coding, dengan menciptakan variabel biner (0 dan 1) untuk tiap kategori. Misalnya, untuk variabel jenis kelamin bisa diberi kode perempuan = 1 dan laki-laki = 0.

Skala Ordinal

Variabel ordinal memiliki kategori dengan urutan yang jelas, meskipun jarak antar kategori tidak harus sama. Contohnya adalah jenjang pendidikan (SMA < Sarjana < Magister < Doktor) atau tingkat kepuasan (tidak puas < cukup puas < puas < sangat puas). Dalam analisis, variabel ordinal dapat diperlakukan dengan: - Membuat dummy untuk tiap kategori, tanpa mempertimbangkan urutannya seperti variabel nominal. - Memberikan kode angka sesuai urutan logis (misalnya, SMA=1, Sarjana=2, Magister=3, Doktor=4), yang lebih sederhana tetapi mengasumsikan jarak antar kategori dianggap seragam, padahal tidak selalu demikian.

Skala Rasio

Variabel rasio bersifat kuantitatif dan memiliki nol absolut, sehingga perbandingan antar nilai bermakna. Selain memiliki semua sifat variabel interval, variabel ini juga menunjukkan ketiadaan atribut yang diukur pada titik nol. Contohnya termasuk pendapatan per bulan, usia, atau jumlah anak. Karena variabel ini bersifat numerik dan memiliki skala penuh, biasanya dapat langsung dimasukkan ke dalam model regresi logistik tanpa transformasi, kecuali jika data sangat tidak berdistribusi normal.

8.1 Simulasi Data

Seiring dengan kemajuan teknologi dan perubahan pola konsumsi masyarakat, penggunaan platform e-commerce semakin meluas. Namun, tidak semua individu memanfaatkan layanan ini secara merata. Oleh karena itu, dalam simulasi ini, kita ingin meneliti faktor-faktor yang mempengaruhi kemungkinan seseorang melakukan pembelian online, khususnya berdasarkan:

  • Status pekerjaan: apakah seseorang bekerja, menganggur, pelajar, atau pensiunan.

  • Usia: diasumsikan bahwa orang yang lebih tua lebih jarang berbelanja online.

  • Frekuensi belanja online per bulan: semakin sering seseorang berbelanja online, semakin tinggi kemungkinan mereka akan terus berbelanja di platform e-commerce.

# Jumlah observasi
n <- 750

# Simulasi variabel
job_status <- sample(c("Unemployed", "Employed", "Student", "Retired"), 
                     n, replace = TRUE, prob = c(0.15, 0.5, 0.25, 0.1)) 

# Frekuensi belanja online per bulan (menggunakan distribusi Poisson)
shopping_frequency <- rpois(n, lambda = 5)

# Usia (distribusi normal dengan rata-rata 35 dan deviasi standar 10)
age <- rnorm(n, mean = 35, sd = 10)

# Model logit untuk kemungkinan berbelanja online
logit_p <- -1.2 + 0.5 * (job_status == "Employed") + 
           0.3 * (job_status == "Student") + 
           0.02 * shopping_frequency - 0.015 * age

# Menghitung probabilitas menggunakan fungsi logit
p <- 1 / (1 + exp(-logit_p))

# Menentukan keputusan pembelian online berdasarkan probabilitas
set.seed(456)
online_shopping <- rbinom(n, size = 1, prob = p)

# Gabungkan menjadi tibble
library(tibble)
sim_data <- tibble(online_shopping, job_status, shopping_frequency, age)

# Tampilkan sebagian data
head(sim_data)
## # A tibble: 6 × 4
##   online_shopping job_status shopping_frequency   age
##             <int> <chr>                   <int> <dbl>
## 1               0 Retired                     5  33.8
## 2               0 Employed                    3  45.1
## 3               0 Student                     5  33.0
## 4               1 Student                     5  14.6
## 5               1 Employed                    5  33.0
## 6               0 Unemployed                  3  40.4

Interpretasi

Data ini menunjukkan bahwa keputusan untuk melakukan pembelian online dipengaruhi oleh berbagai faktor seperti status pekerjaan, frekuensi belanja, dan usia, namun tidak ada satu faktor yang secara konsisten menjamin bahwa seseorang akan melakukan pembelian online. Hal ini mengindikasikan bahwa preferensi atau kebiasaan individu sangat bervariasi meskipun ada beberapa pola umum yang terlihat, seperti lebih banyak individu yang bekerja dan lebih muda yang cenderung berbelanja online lebih sering.

8.2 Eksplorasi Data
library(dplyr)

# Eksplorasi Data
sim_data %>% 
  group_by(online_shopping) %>% 
  summarise(
    Jumlah = n(),  # Jumlah observasi berdasarkan keputusan pembelian online
    Rata2_Age = mean(age),  # Rata-rata usia
    Rata2_ShoppingFreq = mean(shopping_frequency),  # Rata-rata frekuensi belanja online
    Rata2_JobStatus = mean(as.numeric(factor(job_status)))  # Rata-rata status pekerjaan dalam bentuk numerik
  )
## # A tibble: 2 × 5
##   online_shopping Jumlah Rata2_Age Rata2_ShoppingFreq Rata2_JobStatus
##             <int>  <int>     <dbl>              <dbl>           <dbl>
## 1               0    560      35.6               4.96            2.09
## 2               1    190      34.1               4.83            1.88

Interpretasi

  • Umur: Individu yang membeli online cenderung sedikit lebih muda daripada yang tidak membeli online.

  • Frekuensi Belanja: Meskipun individu yang tidak membeli online memiliki frekuensi belanja yang lebih tinggi, orang yang membeli online sedikit lebih sering berbelanja.

  • Status Pekerjaan: Mayoritas dari kedua kelompok adalah individu yang bekerja, tetapi sedikit lebih banyak individu yang bekerja tidak melakukan pembelian online.

8.3 Perlakuan Variabel Ordinal
8.3.1 Treat Sebagai Variabel Nominal (Dummy)

Dalam kasus ini, kita ingin menganalisis pengaruh status pekerjaan terhadap penggunaan layanan online banking. Status pekerjaan (yang memiliki empat kategori: “Unemployed”, “Employed”, “Student”, dan “Retired”) akan diperlakukan sebagai variabel dummy untuk analisis regresi logistik, dengan kategori “Unemployed” sebagai referensi.

# Mengonversi status pekerjaan ke dalam variabel dummy
sim_data <- sim_data %>%
  mutate(
    job_status_employed = ifelse(job_status == "Employed", 1, 0),
    job_status_student = ifelse(job_status == "Student", 1, 0),
    job_status_retired = ifelse(job_status == "Retired", 1, 0)
  )

# Melakukan regresi logistik
logit_model <- glm(online_shopping ~ job_status_employed + job_status_student + job_status_retired + shopping_frequency + age,
                   data = sim_data, 
                   family = binomial())

# Menampilkan hasil model regresi logistik
summary(logit_model)
## 
## Call:
## glm(formula = online_shopping ~ job_status_employed + job_status_student + 
##     job_status_retired + shopping_frequency + age, family = binomial(), 
##     data = sim_data)
## 
## Coefficients:
##                      Estimate Std. Error z value Pr(>|z|)   
## (Intercept)         -1.162342   0.445589  -2.609  0.00909 **
## job_status_employed  0.826932   0.286522   2.886  0.00390 **
## job_status_student   0.860992   0.312084   2.759  0.00580 **
## job_status_retired   0.553006   0.388030   1.425  0.15411   
## shopping_frequency  -0.020158   0.039255  -0.514  0.60759   
## age                 -0.014960   0.008509  -1.758  0.07872 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 848.95  on 749  degrees of freedom
## Residual deviance: 834.62  on 744  degrees of freedom
## AIC: 846.62
## 
## Number of Fisher Scoring iterations: 4

Interpretasi Koefisien

  • (Intercept) (-1.073167):

Koefisien intercept (konstanta) sebesar -1.073 menunjukkan bahwa untuk individu yang berstatus pengangguran (Unemployed), dengan frekuensi belanja online dan usia rata-rata 0, kemungkinan mereka melakukan pembelian online adalah rendah (pada kondisi dasar atau referensi).

Signifikansi: Nilai p (0.0160) menunjukkan bahwa koefisien intercept ini signifikan pada tingkat signifikansi 5%.

  • job_status_employed (0.555446):

Koefisien 0.555 untuk individu yang bekerja (Employed) menunjukkan bahwa mereka memiliki kemungkinan lebih besar untuk melakukan pembelian online dibandingkan dengan individu yang pengangguran (Unemployed). Semakin besar koefisien positif ini, semakin tinggi kemungkinan mereka membeli online, jika variabel lain tetap konstan.

Signifikansi: Nilai p (0.0468) menunjukkan bahwa pengaruh status pekerjaan “Employed” ini signifikan pada tingkat signifikansi 5%.

  • job_status_student (0.532345):

Koefisien 0.532 untuk individu yang pelajar (Student) menunjukkan bahwa mereka juga memiliki kemungkinan lebih besar untuk membeli online dibandingkan dengan individu yang pengangguran. Koefisien ini lebih kecil dibandingkan dengan “Employed”, tetapi tetap positif.

Signifikansi: Nilai p (0.0775) menunjukkan bahwa pengaruh ini mendekati signifikansi (pada tingkat signifikansi 10%), namun tidak cukup kuat untuk dianggap signifikan pada tingkat 5%.

  • job_status_retired (-0.192760):

Koefisien -0.193 untuk individu yang pensiun (Retired) menunjukkan bahwa mereka memiliki kemungkinan lebih rendah untuk melakukan pembelian online dibandingkan dengan individu yang pengangguran. Nilai negatif ini menunjukkan pengaruh yang menurunkan kemungkinan pembelian online pada individu pensiunan.

Signifikansi: Nilai p (0.6260) menunjukkan bahwa pengaruh ini tidak signifikan, artinya status pensiunan tidak memengaruhi keputusan untuk melakukan pembelian online secara signifikan.

  • shopping_frequency (0.025304):

Koefisien positif 0.025 menunjukkan bahwa setiap peningkatan satu unit dalam frekuensi belanja online per bulan meningkatkan kemungkinan seseorang untuk melakukan pembelian online. Namun, efeknya sangat kecil (hanya 0.025 per unit peningkatan frekuensi).

Signifikansi: Nilai p (0.4979) menunjukkan bahwa frekuensi belanja online tidak signifikan dalam mempengaruhi keputusan untuk membeli online pada tingkat signifikansi 5%.

= age (-0.016045):

Koefisien negatif -0.016 untuk usia (age) menunjukkan bahwa semakin tua usia seseorang, semakin kecil kemungkinan mereka untuk melakukan pembelian online. Ini menunjukkan bahwa usia yang lebih tua berhubungan dengan penurunan kemungkinan untuk membeli online.

Signifikansi: Nilai p (0.0611) menunjukkan bahwa usia mendekati signifikansi (pada tingkat 10%), namun tidak cukup kuat untuk dianggap signifikan pada tingkat 5%.

Interpretasi Goodness Of Fit

  • Null Deviance (844.60):

Null Deviance menunjukkan deviance dari model yang hanya menggunakan intercept (konstanta) tanpa variabel prediktor apapun (model yang sangat sederhana). Ini menggambarkan seberapa baik model yang hanya memprediksi kelas mayoritas (misalnya, mengasumsikan semua orang tidak melakukan pembelian online). Nilai 844.60 menunjukkan seberapa besar deviasi (kesalahan) model dasar ini tanpa variabel prediktor.

  • Residual Deviance (830.72):

Residual Deviance adalah deviance dari model yang sudah Anda sesuaikan, yang mencakup semua variabel prediktor yang digunakan dalam model, seperti status pekerjaan, frekuensi belanja, dan usia. Ini menggambarkan seberapa baik model ini dalam memprediksi data yang sebenarnya dibandingkan dengan model dasar (null model). Nilai 830.72 menunjukkan kesalahan model dengan variabel prediktor. Semakin kecil nilai residual deviance dibandingkan dengan null deviance, semakin baik model Anda dalam menjelaskan data.

  • Deviance Residuals:

Deviance residuals menunjukkan seberapa jauh prediksi model untuk setiap observasi dari hasil yang diamati. Semakin kecil deviance residuals, semakin baik model tersebut dalam memprediksi data.

  • AIC (Akaike Information Criterion) - 842.72:

AIC adalah salah satu ukuran yang digunakan untuk menilai kualitas model, dengan mempertimbangkan kecocokan model dan kompleksitas model. Nilai AIC yang lebih rendah menunjukkan model yang lebih baik dalam hal keseimbangan antara kecocokan dan kompleksitas. 842.72 adalah nilai AIC yang dihasilkan oleh model Anda. Anda dapat menggunakan AIC untuk membandingkan beberapa model yang berbeda; model dengan nilai AIC yang lebih rendah dianggap lebih baik dalam hal keseimbangan antara kecocokan dan jumlah parameter yang digunakan.

Signifikansi Model:

  • Job_status_employed adalah satu-satunya variabel yang signifikan pada level 5% dengan p-value = 0.0468. Ini menunjukkan bahwa status pekerjaan “Employed” memiliki pengaruh yang signifikan terhadap kemungkinan seseorang untuk melakukan pembelian online dibandingkan dengan individu yang menganggur (Unemployed).

  • Job_status_student hampir mendekati signifikan dengan p-value = 0.0775, namun tidak cukup untuk dianggap signifikan pada tingkat 5%. Pengaruhnya tidak cukup kuat dalam memprediksi pembelian online.

  • Job_status_retired, shopping_frequency, dan age tidak signifikan karena p-value mereka lebih besar dari 0.05. Artinya, status pensiunan, frekuensi belanja, dan usia tidak mempengaruhi keputusan untuk melakukan pembelian online secara signifikan dalam model ini.

  • Secara keseluruhan, model signifikan berdasarkan perbedaan deviance antara Null Deviance (844.60) dan Residual Deviance (830.72) yang menunjukkan bahwa model ini jauh lebih baik daripada model tanpa prediktor. Hal ini mengindikasikan bahwa model yang memasukkan variabel prediktor dapat menjelaskan data dengan lebih baik dibandingkan dengan model dasar.

Kesimpulan:

Model menunjukkan bahwa:

  • Status pekerjaan sebagai “Employed” secara signifikan meningkatkan peluang seseorang untuk melakukan pembelian online dibandingkan dengan mereka yang menganggur.

  • Variabel lain seperti status mahasiswa, pensiunan, usia, dan frekuensi belanja online belum menunjukkan pengaruh yang signifikan terhadap keputusan untuk membeli online.

  • Model secara keseluruhan memberikan fit yang lebih baik dibandingkan model tanpa prediktor, yang menunjukkan bahwa status pekerjaan memberikan kontribusi informasi penting dalam memprediksi pembelian online.

8.3.2 Perlakuan sebagai Rasio (Numeric Rank)

Dalam upaya memahami perilaku masyarakat terhadap pembelian online, salah satu faktor yang berpotensi mempengaruhi keputusan seseorang untuk melakukan pembelian online adalah status pekerjaan. Status pekerjaan ini dapat dianggap memiliki struktur hirarki atau urutan, mulai dari pengangguran (tidak bekerja) hingga bekerja penuh waktu atau pensiun.

Dengan asumsi bahwa status pekerjaan memiliki urutan atau hirarki, pendekatan perlakuan variabel kategori ini sebagai skala numerik berjenjang (numeric rank) menjadi relevan. Dalam pendekatan ini, kategori-kategori status pekerjaan akan diberikan nilai numerik yang menggambarkan urutan tingkat pekerjaan, di mana pengangguran diberi nilai rendah dan pekerjaan penuh waktu diberi nilai tinggi.

Misalnya, Unemployed (pengangguran) diberi nilai 1, Employed (bekerja) diberi nilai 2, Student (pelajar) diberi nilai 3, dan Retired (pensiunan) diberi nilai 4, dengan asumsi bahwa tingkat pekerjaan yang lebih tinggi atau lebih aktif berhubungan dengan kemungkinan yang lebih besar untuk melakukan pembelian online.

library(dplyr)

# Ubah job_status menjadi numerik terurut (ordinal)
sim_data_numeric <- sim_data %>% 
  mutate(
    job_status_numeric = case_when(
      job_status == "Unemployed" ~ 1,  # Pengangguran diberi nilai 1
      job_status == "Student" ~ 2,     # Pelajar diberi nilai 2
      job_status == "Retired" ~ 3,     # Pensiunan diberi nilai 3
      job_status == "Employed" ~ 4     # Pekerja diberi nilai 4
    )
  )

# Model regresi logistik dengan perlakuan ordinal
model_numeric <- glm(online_shopping ~ job_status_numeric + shopping_frequency + age, 
                     data = sim_data_numeric, family = binomial)

# Menampilkan ringkasan model regresi logistik
summary(model_numeric)
## 
## Call:
## glm(formula = online_shopping ~ job_status_numeric + shopping_frequency + 
##     age, family = binomial, data = sim_data_numeric)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)  
## (Intercept)        -0.91231    0.43116  -2.116   0.0344 *
## job_status_numeric  0.15651    0.07407   2.113   0.0346 *
## shopping_frequency -0.02602    0.03911  -0.665   0.5058  
## age                -0.01472    0.00853  -1.726   0.0844 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 848.95  on 749  degrees of freedom
## Residual deviance: 840.74  on 746  degrees of freedom
## AIC: 848.74
## 
## Number of Fisher Scoring iterations: 4

Perbandingan Model

# Membuat model nominal dengan variabel job_status dalam bentuk dummy
model_nominal <- glm(online_shopping ~ job_status_employed + job_status_student + job_status_retired + shopping_frequency + age, 
                     data = sim_data, 
                     family = binomial)

# Menghitung AIC untuk model nominal
AIC_nominal = AIC(model_nominal)
print(AIC_nominal)
## [1] 846.6186
# Menghitung AIC untuk model ordinal numerik
AIC_numeric = AIC(model_numeric); 
AIC_numeric 
## [1] 848.7358
## Menampilkan nilai AIC untuk model ordinal numerik

Interpretasi Koefisien

  • Intercept (-1.041389):

Koefisien intercept sebesar -1.041389 menunjukkan log-odds untuk individu yang memiliki job_status_numeric = 1 (pengangguran), shopping_frequency = 0, dan usia = 0. Ini adalah nilai dasar ketika semua variabel lain adalah 0. Dalam konteks ini, jika seseorang adalah pengangguran dengan frekuensi belanja dan usia yang nol, mereka memiliki kemungkinan lebih rendah untuk melakukan pembelian online. Signifikansi: Nilai p-value = 0.0157 menunjukkan bahwa intercept ini signifikan pada level 5%, yang berarti bahwa konstanta model memberikan kontribusi yang berarti.

  • job_status_numeric (0.112491):

Koefisien job_status_numeric sebesar 0.112491 menunjukkan bahwa setiap peningkatan satu unit dalam nilai status pekerjaan (misalnya, dari pengangguran ke pelajar, pensiunan, atau pekerja) meningkatkan log-odds untuk melakukan pembelian online sebesar 0.112. Semakin tinggi nilai numerik status pekerjaan (dari pengangguran ke pekerjaan yang lebih aktif), semakin besar kemungkinan seseorang untuk berbelanja online. Signifikansi: Nilai p-value = 0.1358 menunjukkan bahwa job_status_numeric tidak signifikan pada tingkat 5%, artinya status pekerjaan tidak memiliki pengaruh yang cukup kuat terhadap keputusan untuk membeli online dalam model ini.

  • shopping_frequency (0.031355):

Koefisien shopping_frequency sebesar 0.031355 menunjukkan bahwa setiap peningkatan satu unit dalam frekuensi belanja online meningkatkan log-odds untuk melakukan pembelian online sebesar 0.031. Ini berarti bahwa semakin sering seseorang berbelanja online, semakin besar kemungkinan mereka untuk melanjutkan pembelian online. Signifikansi: Nilai p-value = 0.3989 menunjukkan bahwa shopping_frequency tidak signifikan dalam mempengaruhi keputusan pembelian online pada tingkat 5%. Artinya, frekuensi belanja tidak cukup berpengaruh dalam model ini.

  • age (-0.015777):

Koefisien age sebesar -0.015777 menunjukkan bahwa setiap peningkatan satu tahun usia individu akan mengurangi log-odds untuk melakukan pembelian online sebesar 0.016. Ini menunjukkan bahwa individu yang lebih tua cenderung lebih jarang melakukan pembelian online dibandingkan dengan individu yang lebih muda. Signifikansi: Nilai p-value = 0.0647 menunjukkan bahwa age hampir signifikan pada tingkat 10%, tetapi tidak cukup signifikan pada tingkat 5%. Ini berarti ada indikasi bahwa usia mungkin berpengaruh terhadap keputusan pembelian online, tetapi pengaruhnya tidak cukup kuat untuk dianggap signifikan pada tingkat 5%.

Interpretasi Goodness of Fit:

  • Null Deviance:

Null Deviance menunjukkan seberapa buruk model yang hanya menggunakan intercept (konstanta) tanpa variabel prediktor apa pun. Dalam hal ini, nilai 844.60 menunjukkan deviasi model dasar, yang tidak memanfaatkan informasi dari variabel prediktor apa pun. Semakin tinggi nilai Null Deviance, semakin buruk model dasar dalam memprediksi data.

  • Residual Deviance:

Residual Deviance adalah deviasi dari model yang telah disesuaikan, yaitu model yang mencakup variabel prediktor (seperti job_status_numeric, shopping_frequency, dan age). Dalam hal ini, nilai 837.88 menunjukkan deviasi model yang disesuaikan dengan variabel prediktor. Nilai 837.88 menunjukkan seberapa baik model yang sudah disesuaikan dengan data. Semakin kecil nilai residual deviance dibandingkan dengan null deviance, semakin baik model dalam memprediksi data.

  • AIC:

AIC adalah indikator yang digunakan untuk mengevaluasi keseimbangan antara kecocokan model dan kompleksitas model. Nilai AIC = 845.88 menunjukkan bahwa model ini mencoba untuk mencapai keseimbangan yang baik antara kecocokan data dan jumlah parameter yang digunakan. AIC yang lebih rendah menunjukkan model yang lebih baik. Namun, dalam perbandingan, Anda dapat membandingkan model nominal dan ordinal numerik berdasarkan AIC untuk memilih model yang lebih baik.

Signifikansi Model:

  • Dalam model ini, hanya status pekerjaan (job_status_numeric) yang memiliki pengaruh positif, meskipun tidak signifikan pada taraf 5%, dengan nilai p-value = 0.1358. Artinya, meskipun ada pengaruh kecil, status pekerjaan tidak cukup kuat untuk menjadi prediktor yang signifikan dalam mempengaruhi keputusan untuk melakukan pembelian online.

  • Sementara itu, variabel shopping_frequency dengan p-value = 0.3989 dan age dengan p-value = 0.0647 tidak signifikan pada taraf 5%, menunjukkan bahwa keduanya tidak cukup berpengaruh dalam menjelaskan variasi keputusan untuk berbelanja online pada model ini.

  • Secara keseluruhan, meskipun model menunjukkan bahwa ada beberapa variabel yang berpotensi berpengaruh, peran prediktor selain status pekerjaan relatif lemah dalam menjelaskan variasi pembelian online dalam model ini.

Kesimpulan

Hasil analisis menunjukkan bahwa status pekerjaan yang dianggap memiliki tingkatan lebih tinggi berkorelasi positif terhadap peluang individu untuk melakukan pembelian online, meskipun pengaruhnya tidak signifikan pada taraf 5%. Meskipun frekuensi belanja online dan usia dimasukkan dalam model, keduanya tidak terbukti memiliki pengaruh yang signifikan terhadap keputusan pembelian online.

Bila dibandingkan dengan model sebelumnya, model yang menggunakan perlakuan ordinal numerik untuk status pekerjaan menunjukkan penurunan AIC yang sedikit lebih tinggi, namun model dengan perlakuan nominal (dummy) untuk status pekerjaan memberikan performa yang lebih baik berdasarkan nilai AIC. Oleh karena itu, pendekatan kategorik dummy tampaknya lebih sesuai untuk kasus ini, karena dapat memberikan hasil yang lebih tepat dalam menjelaskan variasi dalam keputusan pembelian online.

Goodness-of-Fit Model

Untuk mengevaluasi kualitas model secara komprehensif, selain menggunakan deviance dan AIC, digunakan juga McFadden’s pseudo R², yang merupakan ukuran goodness-of-fit untuk model logistik. Nilai ini dihitung dengan membandingkan log-likelihood model penuh dengan model null (hanya intercept).

# Model null (tanpa prediktor)
nullmod <- glm(online_shopping ~ 1, data = sim_data, family = binomial) 

# McFadden's R² untuk model nominal
r2_nominal <- 1 - (logLik(model_nominal) / logLik(nullmod)) 

# McFadden's R² untuk model ordinal numerik
r2_numeric <- 1 - (logLik(model_numeric) / logLik(nullmod)) 

# Menampilkan hasil McFadden's R² untuk kedua model
list( 
  McFadden_R2_Nominal = r2_nominal, 
  McFadden_R2_Numeric = r2_numeric 
)
## $McFadden_R2_Nominal
## 'log Lik.' 0.01688307 (df=6)
## 
## $McFadden_R2_Numeric
## 'log Lik.' 0.009677411 (df=4)

Interpretasi

  • McFadden’s R² untuk Model Nominal (0.01643688):

Model nominal dengan variabel dummy memberikan peningkatan yang lebih baik dalam menjelaskan data dibandingkan dengan model tanpa prediktor (model null).

  • McFadden’s R² untuk Model Ordinal Numerik (0.007954924):

Model ordinal numerik memiliki nilai McFadden’s R² yang lebih rendah, menunjukkan bahwa model ini kurang efektif dalam menjelaskan variasi dalam keputusan pembelian online dibandingkan dengan model nominal.

Visualisasi Prediksi (Model Nominal)

# Memuat paket yang diperlukan
library(ggplot2)
library(dplyr)

# Menambahkan prediksi probabilitas berdasarkan model nominal
sim_data <- sim_data %>% 
  mutate(predicted = predict(model_nominal, type = "response"))

# Plot probabilitas prediksi terhadap frekuensi belanja online (shopping_frequency)
ggplot(sim_data, aes(x = shopping_frequency, y = predicted, color = as.factor(job_status))) + 
  geom_point(alpha = 0.6) + 
  labs(
    title = "Prediksi Probabilitas Pembelian Online Berdasarkan Frekuensi Belanja Online (Model Nominal)", 
    x = "Frekuensi Belanja Online per Bulan", 
    y = "Probabilitas Prediksi", 
    color = "Status Pekerjaan"
  ) + 
  theme_minimal() + 
  scale_color_manual(
    values = c( 
      "Unemployed" = "#E41A1C",  # merah terang untuk 'Unemployed'
      "Employed"   = "#377EB8",  # biru untuk 'Employed'
      "Student"    = "#4DAF4A",  # hijau untuk 'Student'
      "Retired"    = "#984EA3"   # ungu untuk 'Retired'
    ),
    labels = c("Unemployed", "Employed", "Student", "Retired")  # Label status pekerjaan
  )

Visualisasi Prediksi Probabilitas (Model Ordinal/Numeric)

# Pastikan dataset yang benar digunakan
sim_data_numeric <- sim_data_numeric %>% 
  mutate(predicted = predict(model_numeric, type = "response"))

# Plot probabilitas prediksi terhadap frekuensi belanja online (shopping_frequency)
ggplot(sim_data_numeric, aes(x = shopping_frequency, y = predicted, color = as.factor(job_status_numeric))) + 
  geom_point(alpha = 0.6) + 
  labs(
    title = "Prediksi Probabilitas Pembelian Online Berdasarkan Frekuensi Belanja Online (Ordinal sebagai Numeric)", 
    x = "Frekuensi Belanja Online per Bulan", 
    y = "Probabilitas Prediksi", 
    color = "Status Pekerjaan"
  ) + 
  theme_minimal() + 
  scale_color_manual(
    values = c( 
      "1" = "#E41A1C",  # merah terang untuk 'Unemployed'
      "2" = "#377EB8",  # biru untuk 'Student'
      "3" = "#4DAF4A",  # hijau untuk 'Retired'
      "4" = "#984EA3"   # ungu untuk 'Employed'
    ),
    labels = c("Unemployed", "Student", "Retired", "Employed")  # Label status pekerjaan
  )

##9. Pemilihan Model Regresi Logistik dan Evaluasi

Dalam analisis regresi logistik, langkah pemilihan model sangat penting untuk memperoleh model yang paling sesuai dan efektif dalam memprediksi probabilitas suatu kejadian biner. Model yang ideal tidak hanya ditentukan oleh ketepatan prediksinya, tetapi juga oleh kesederhanaan, kemampuan untuk diinterpretasikan, dan kesesuaian dengan teori atau tujuan penelitian. Pemilihan model yang tepat dapat meningkatkan akurasi prediksi, menghindari overfitting, dan memberikan pemahaman yang jelas tentang peran masing-masing prediktor terhadap respons. Untuk mencapainya, biasanya digunakan pendekatan yang sistematis dan metodologis, dengan mempertimbangkan faktor statistik dan konteks substantif dari data yang dianalisis. Secara umum, ada dua pendekatan utama dalam membangun model regresi logistik: Confirmatory (konfirmatori) dan Exploratory (eksploratori). Kedua pendekatan ini bisa digunakan secara terpisah atau saling melengkapi, tergantung pada apakah peneliti sudah memiliki teori yang jelas atau masih dalam tahap eksplorasi hubungan antar variabel.

9.1 Membangun Model Regresi Logistik: Pendekatan Confirmatory dan Exploratory

1. Confirmatory (Pendekatan Konfirmatori)

Pendekatan ini digunakan ketika peneliti sudah memiliki teori yang kuat atau hipotesis yang jelas mengenai hubungan antara variabel prediktor dan variabel respons. Karakteristik dari pendekatan konfirmatori adalah:

  • Model dibangun berdasarkan kerangka teori atau temuan-temuan dari penelitian sebelumnya.

  • Fokus utama adalah untuk menguji apakah hubungan antar variabel sesuai dengan hipotesis yang telah dibuat.

  • Pemodelan dilakukan dengan terlebih dahulu menyusun model teoritis, kemudian mengujinya menggunakan metode statistik.

  • Uji signifikansi dilakukan terhadap variabel-variabel dalam model, contohnya menggunakan Likelihood Ratio Test untuk membandingkan model dengan dan tanpa variabel tertentu.

  • Tujuan utamanya adalah tidak hanya untuk mendapatkan model yang akurat, tetapi juga untuk memastikan kesesuaian model dengan hipotesis yang ada.

Contoh penggunaan: Sebagai contoh, seorang peneliti ingin menguji apakah faktor X1 dan X2 mempengaruhi keputusan pembelian produk. Dalam pendekatan konfirmatori, peneliti akan mengembangkan model berdasarkan teori perilaku konsumen dan kemudian menguji apakah X1 dan X2 memiliki pengaruh yang signifikan secara statistik.

2. Exploratory (Pendekatan Eksploratori)

Pendekatan eksploratori digunakan ketika peneliti belum memiliki hipotesis yang jelas dan ingin menggali pola atau hubungan potensial antara variabel prediktor dan respons. Karakteristik dari pendekatan eksploratori adalah:

  • Pemilihan variabel dilakukan secara bertahap atau otomatis, berdasarkan kriteria statistik tertentu.

  • Tujuannya adalah untuk mengidentifikasi kombinasi variabel yang memberikan performa prediktif terbaik.

  • Pendekatan ini cocok digunakan untuk data besar atau dalam studi awal untuk mengeksplorasi fenomena yang belum diketahui secara mendalam.

Metode yang umum digunakan:

  • Forward Selection: Menambahkan variabel satu per satu ke dalam model berdasarkan kontribusi statistik masing-masing.

  • Backward Elimination: Dimulai dengan memasukkan semua variabel, kemudian mengeliminasi variabel yang tidak signifikan.

  • Stepwise Selection: Kombinasi antara forward dan backward selection untuk memilih model terbaik.

Tujuan utama pendekatan eksploratori:

  • Menyusun model yang parsimonious (cukup sederhana) namun memiliki kinerja prediktif yang baik.

  • Pendekatan ini cocok untuk studi eksplorasi, pengembangan model awal, atau saat belum ada teori yang mapan.

Simulasi Data

# Memuat paket yang dibutuhkan 
library(knitr) 
library(dplyr) 
library(ggplot2) 
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
library(pROC) 
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
library(DescTools)

set.seed(456) 

# Jumlah sampel 
n <- 250 
 
# Prediktor X1 dan X3 bertipe numerik kontinu 
x1 <- rnorm(n, mean = 2, sd = 1) 
x3 <- rnorm(n, mean = 0, sd = 2) 
 
# Prediktor X2 bertipe biner (simulasi variabel dummy) 
x2 <- sample(0:1, n, replace = TRUE, prob = c(0.4, 0.6)) 
 
# Menyusun persamaan linear prediktor 
lin_pred <- -1 + 0.7 * x1 + 0.4 * x2 - 0.6 * x3 
 
# Menghitung probabilitas menggunakan fungsi logistik 
p <- plogis(lin_pred)

# Menghasilkan variabel respon biner berdasarkan probabilitas 
y <- rbinom(n, size = 1, prob = p) 
 
# Menyusun data frame 
df <- data.frame( 
  y = factor(y), 
  x1 = x1, 
  x2 = factor(x2), 
  x3 = x3 
) 
 
# Tampilkan sebagian data 
head(df)
##   y        x1 x2         x3
## 1 1 0.6564786  1 -0.4998270
## 2 1 2.6217756  1  0.1426120
## 3 1 2.8008747  1  0.5001287
## 4 1 0.6111076  0 -2.4578501
## 5 1 1.2856431  1 -0.1172847
## 6 1 1.6759389  1 -0.7275040

Permodelan Regresi Logistik Penuh

# Pemodelan regresi logistik penuh 
model_lengkap <- glm(y ~ x1 + x2 + x3, data = df, family = binomial) 
 
# Menampilkan ringkasan model 
summary(model_lengkap)
## 
## Call:
## glm(formula = y ~ x1 + x2 + x3, family = binomial, data = df)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.81302    0.37873  -2.147 0.031818 *  
## x1           0.57650    0.15585   3.699 0.000216 ***
## x21          0.46931    0.29119   1.612 0.107023    
## x3          -0.48096    0.08612  -5.585 2.34e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 337.30  on 249  degrees of freedom
## Residual deviance: 285.31  on 246  degrees of freedom
## AIC: 293.31
## 
## Number of Fisher Scoring iterations: 4
9.2 Metode Stepwise: Forward, Backward, dan Kedua Arah

Untuk membangun model regresi logistik yang optimal, teknik stepwise selection dapat digunakan untuk memilih kombinasi variabel prediktor terbaik secara otomatis. Pendekatan ini dilakukan dengan menambahkan (forward), menghapus (backward), atau mengombinasikan keduanya (both) berdasarkan kriteria statistik, seperti AIC (Akaike Information Criterion).

# Model nol (hanya intercept, tanpa prediktor) 
model_nol <- glm(y ~ 1, data = df, family = binomial) 
 
# Seleksi maju (forward selection) 
maju <- step(model_nol, direction = "forward", scope = formula(model_lengkap)
 , trace = FALSE) 
 
# Seleksi mundur (backward elimination) 
mundur <- step(model_lengkap, direction = "backward", trace = FALSE) 
 
# Seleksi dua arah (forward + backward / stepwise) 
gabungan <- step(model_nol, direction = "both", scope = formula(model_lengkap
 ), trace = FALSE)

Perbandingan AIC Antar Metode

Untuk menilai kualitas model hasil seleksi, digunakan nilai AIC. Model dengan nilai AIC yang lebih kecil dianggap lebih baik karena menunjukkan keseimbangan yang lebih baik antara kompleksitas model dan akurasi prediksi.

AIC(model_lengkap, maju, mundur, gabungan)
##               df      AIC
## model_lengkap  4 293.3136
## maju           4 293.3136
## mundur         4 293.3136
## gabungan       4 293.3136
9.3 Evaluasi Model: ROC dan AUC

Untuk mengevaluasi kemampuan model dalam membedakan antara kelas 1 dan 0, digunakan kurva ROC (Receiver Operating Characteristic). Kurva ROC menggambarkan hubungan antara Sensitivity (True Positive Rate) dan 1 − Specificity (False Positive Rate). Area di bawah kurva (AUC) digunakan sebagai ukuran numerik untuk menilai performa model klasifikasi.

# Prediksi probabilitas dari model terbaik (hasil stepwise) 
prediksi_probabilitas <- predict(gabungan, type = "response") 
 
# Membuat objek ROC 
roc_kurva <- roc(df$y, prediksi_probabilitas)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
# Visualisasi kurva ROC 
plot(roc_kurva, 
main = "Kurva ROC", 
col = "darkorange", 
lwd = 2) 
# Tambahkan garis diagonal sebagai referensi 
abline(a = 0, b = 1, lty = 2, col = "gray") 
# Tambahkan legend 
legend("bottomright", 
legend = c("Model Stepwise"), 
col = c("darkorange"), 
lwd = 2)

auc(roc_kurva)
## Area under the curve: 0.7539

Interpretasi

Nilai AUC (Area Under the Curve) sebesar 0.7539 menunjukkan bahwa model memiliki kemampuan yang cukup baik dalam membedakan antara dua kelas (respon 0 dan 1). Secara umum, nilai AUC di atas 0.7 dianggap memadai, yang berarti model dapat dengan benar membedakan antara observasi yang termasuk dalam kelas positif dan kelas negatif sekitar 75% dari waktu. Oleh karena itu, model ini memiliki kinerja klasifikasi yang baik dan dapat digunakan sebagai dasar untuk pengambilan keputusan prediktif, meskipun masih ada potensi untuk perbaikan lebih lanjut.

9.4 Pseudo R-Squared

Sebagai pengganti R-squared pada regresi linear, regresi logistik menggunakan pseudo R-squared untuk mengukur seberapa baik model dapat menjelaskan variasi dalam data. Beberapa ukuran yang sering digunakan untuk ini antara lain Cox & Snell, Nagelkerke, dan McFadden.

PseudoR2(gabungan, which = c("CoxSnell", "Nagelkerke", "McFadden")) 
##   CoxSnell Nagelkerke   McFadden 
##  0.1877492  0.2535258  0.1541254

Nilai pseudo R-squared ini menunjukkan bahwa model dapat menjelaskan sekitar 15%–25% variasi dalam respons, yang dianggap cukup baik untuk model klasifikasi yang menggunakan data sosial atau observasional.

9.5 Tabel Klasifikasi dan Evaluasi

Untuk menilai performa prediksi, dibuat tabel klasifikasi (confusion matrix) dengan cutoff probabilitas 0.5. Evaluasi mencakup akurasi, sensitivitas, spesifisitas, serta metrik tambahan lainnya.

# Mengklasifikasikan berdasarkan probabilitas prediksi 
kelas_prediksi <- ifelse(prediksi_probabilitas >= 0.5, 1, 0) 
 
# Membuat tabel perbandingan antara prediksi dan data aktual 
conf_matrix <- table(Prediksi = kelas_prediksi, Aktual = df$y) 
print(conf_matrix) 
##         Aktual
## Prediksi   0   1
##        0  53  23
##        1  48 126
##         Aktual 
## Prediksi   0   1 
##        0  53  23 
##        1  48 126 
# Ambil nilai-nilai dari confusion matrix 
TN <- conf_matrix[1,1] 
FP <- conf_matrix[2,1] 
FN <- conf_matrix[1,2] 
TP <- conf_matrix[2,2] 
 
# Hitung metrik 
accuracy     <- (TP + TN) / sum(conf_matrix) 
sensitivity  <- TP / (TP + FN)  # Recall 
specificity  <- TN / (TN + FP) 
precision    <- TP / (TP + FP) 
f1_score     <- 2 * (precision * sensitivity) / (precision + sensitivity) 

# Tampilkan hasil 
cat("Akurasi     :", round(accuracy, 3), "\n")
## Akurasi     : 0.716
cat("Sensitivitas:", round(sensitivity, 3), "\n")
## Sensitivitas: 0.846
cat("Spesifisitas:", round(specificity, 3), "\n")
## Spesifisitas: 0.525
cat("Presisi     :", round(precision, 3), "\n") 
## Presisi     : 0.724
cat("F1-Score    :", round(f1_score, 3), "\n") 
## F1-Score    : 0.78

Model klasifikasi menunjukkan kinerja yang baik dengan akurasi 71,6%, yang mengindikasikan bahwa sebagian besar prediksi sudah benar. Nilai sensitivitas yang tinggi (84,6%) menunjukkan bahwa model memiliki kemampuan yang kuat dalam mendeteksi kasus positif, sementara presisi sebesar 72,4% mengindikasikan bahwa sebagian besar prediksi positif memang benar. Meskipun spesifisitas masih relatif rendah (52,5%), secara keseluruhan, model ini cukup andal, terutama jika fokus utama adalah mendeteksi kelas positif.

9.6 Metode Perbandingan Model dalam Regresi Logistik

Tujuan

Bagian ini bertujuan untuk menjelaskan cara membandingkan beberapa model regresi logistik menggunakan ukuran statistik umum, yaitu:

  • AIC (Akaike Information Criterion)

  • Deviance (−2 log-likelihood)

  • Likelihood-Ratio Test

Selain itu, bagian ini juga menguraikan pentingnya prinsip parsimony, yaitu memilih model yang cukup sederhana namun tetap efektif dalam menjelaskan data.

Simulasi Data

library(MASS) 
library(broom) 
library(DescTools) 
 
set.seed(456) 
 
n <- 500 
z1 <- rnorm(n) 
z2 <- rbinom(n, 1, 0.5) 
z3 <- rnorm(n) 
 
linear_pred <- -1.3 + 1.8 * z1 - 0.1 * z2 + 0.75 * z3 
p <- 1 / (1 + exp(-linear_pred)) 
target <- rbinom(n, 1, p) 
 
data_log <- data.frame(y = as.factor(target), z1, z2, z3)

Pembuatan Model

Dibuat tiga model regresi logistik dengan kompleksitas bertingkat, dari model sederhana hingga model lengkap:

model_a <- glm(y ~ z1, data = data_log, family = binomial) 
model_b <- glm(y ~ z1 + z2, data = data_log, family = binomial) 
model_c <- glm(y ~ z1 + z2 + z3, data = data_log, family = binomial) 

Perbandingan AIC dan Deviance

Untuk memilih model terbaik, dilakukan perbandingan berdasarkan nilai AIC dan deviance:

model_band <- data.frame( 
  Model = c("Model A", "Model B", "Model C"), 
  AIC = c(AIC(model_a), AIC(model_b), AIC(model_c)), 
  Deviance = c(deviance(model_a), deviance(model_b), deviance(model_c)) 
)
model_band 
##     Model      AIC Deviance
## 1 Model A 463.0457 459.0457
## 2 Model B 464.7974 458.7974
## 3 Model C 431.5352 423.5352
9.7 Likelihood-Ratio Test
anova(model_a, model_b, test = "LRT") 
## Analysis of Deviance Table
## 
## Model 1: y ~ z1
## Model 2: y ~ z1 + z2
##   Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1       498     459.05                     
## 2       497     458.80  1  0.24835   0.6182
anova(model_b, model_c, test = "LRT") 
## Analysis of Deviance Table
## 
## Model 1: y ~ z1 + z2
## Model 2: y ~ z1 + z2 + z3
##   Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
## 1       497     458.80                          
## 2       496     423.54  1   35.262 2.882e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
9.8 Prinsip Parsimony

Dalam pemodelan regresi logistik, kompleksitas model sering kali sebanding dengan peningkatan kecocokan terhadap data. Namun, model yang terlalu kompleks dapat menimbulkan overfitting dan mempersulit interpretasi. Oleh karena itu, prinsip parsimony menekankan pentingnya memilih model yang relatif sederhana namun tetap dapat menggambarkan struktur data secara memadai.

Secara umum, jika penambahan parameter tidak memberikan penurunan nilai AIC yang signifikan, maka model yang lebih sederhana sebaiknya dipilih. Prinsip ini mendukung penggunaan model yang efisien, yaitu model yang tidak berlebihan dalam jumlah parameter.

Rumus dan Penjelasan

  1. Rumus AIC

    \[ \text{AIC} = -2(\log L - k) = -2 \log L + 2k \]

    AIC (Akaike Information Criterion) adalah ukuran yang digunakan untuk menilai kualitas model berdasarkan keseimbangan antara kecocokan model terhadap data (melalui nilai log-likelihood) dan kompleksitas model (dihitung dari jumlah parameter 𝑘). Nilai AIC yang lebih rendah mengindikasikan model yang lebih baik secara relatif, dengan catatan AIC memberikan penalti terhadap model yang terlalu kompleks.

  2. Rumus Deviance

    \[ \text{Deviance} = -2[\log L(\text{model}) - \log L(\text{model saturasi})] \]

    Deviance mengukur sejauh mana suatu model berbeda dari model saturasi (model dengan kecocokan sempurna terhadap data). Semakin kecil nilai deviance, maka model tersebut dianggap semakin mendekati data aktual. Dengan demikian, deviance yang rendah mencerminkan prediksi model yang lebih akurat.

  3. Rumus Likelihood-Ratio Test

    \[ G^2 = -2(\log L_0 - \log L_1) \]

    Statistik Likelihood Ratio (𝐺²) digunakan untuk mengevaluasi apakah penambahan variabel dalam suatu model memberikan peningkatan kecocokan model secara signifikan. Nilai 𝐺² yang besar dan diikuti oleh nilai p-value yang kecil menunjukkan bahwa model yang lebih kompleks secara statistik lebih unggul dibandingkan model yang lebih sederhana.

9.9 Evaluasi Tabel Klasifikasi dan Akurasi Model

Setelah model regresi logistik selesai dibangun, langkah berikutnya yang penting adalah mengevaluasi kemampuan prediksi model tersebut. Salah satu metode yang sering digunakan adalah dengan membuat tabel klasifikasi (confusion matrix) yang membandingkan hasil prediksi model dengan data asli.

Klasifikasi dilakukan dengan menetapkan ambang batas (cut-off) probabilitas, misalnya 0.5. Observasi dengan probabilitas lebih besar dari cut-off akan digolongkan sebagai kelas positif, sementara yang lainnya digolongkan sebagai kelas negatif.

Berikut adalah cara implementasi evaluasi tabel klasifikasi tanpa menggunakan paket tambahan seperti caret, melainkan dengan perhitungan manual:

# Menghasilkan probabilitas prediksi dari model logistik 
pred_prob <- predict(model_c, type = "response") 
 
# Klasifikasi berdasarkan cutoff 0.5 
pred_class <- ifelse(pred_prob >= 0.5, 1, 0) 
 
# Data aktual 
actual_class <- as.numeric(as.character(data_log$y))  # pastikan dalam bentuk numerik 
 
# Matriks klasifikasi 
conf_matrix <- matrix(0, nrow = 2, ncol = 2, 
                      dimnames = list("Predicted" = c("0", "1"), 
                                      "Actual" = c("0", "1"))) 
 
# Mengisi confusion matrix 
for (i in 1:length(actual_class)) { 
  predicted <- pred_class[i] 
  actual <- actual_class[i] 
  conf_matrix[predicted + 1, actual + 1] <- conf_matrix[predicted + 1, actual 
+ 1] + 1 
} 
 
# Menampilkan confusion matrix 
conf_matrix 
##          Actual
## Predicted   0   1
##         0 293  61
##         1  36 110
##          Actual 
## Predicted   0   1 
##         0 293  61 
##         1  36 110 
# Ekstrak nilai dari confusion matrix 
TN <- conf_matrix["0", "0"] 
FP <- conf_matrix["1", "0"] 
FN <- conf_matrix["0", "1"] 
TP <- conf_matrix["1", "1"] 

# Hitung metrik performa 
akurasi     <- (TP + TN) / sum(conf_matrix) 
sensitivitas <- TP / (TP + FN)  # Recall 
spesifisitas <- TN / (TN + FP) 
presisi      <- TP / (TP + FP) 
f1_score     <- 2 * (presisi * sensitivitas) / (presisi + sensitivitas) 

# Tampilkan hasil evaluasi 
cat("Akurasi     :", round(akurasi, 3), "\n") 
## Akurasi     : 0.806
cat("Sensitivitas:", round(sensitivitas, 3), "\n") 
## Sensitivitas: 0.643
cat("Spesifisitas:", round(spesifisitas, 3), "\n") 
## Spesifisitas: 0.891
cat("Presisi     :", round(presisi, 3), "\n") 
## Presisi     : 0.753
cat("F1-Score    :", round(f1_score, 3), "\n") 
## F1-Score    : 0.694

Interpretasi

Berdasarkan hasil evaluasi model klasifikasi, diperoleh akurasi sebesar 0.806, yang berarti sekitar 80.6% dari prediksi model sesuai dengan data aktual. Sensitivitas sebesar 0.643 menunjukkan bahwa model mampu mengidentifikasi 64.3% dari kasus positif dengan benar, sementara spesifisitas sebesar 0.891 menunjukkan bahwa model memiliki kemampuan yang sangat baik dalam mengenali kasus negatif. Presisi sebesar 0.753 mengindikasikan bahwa 75.3% dari seluruh prediksi positif adalah benar-benar positif. Selain itu, nilai F1-Score sebesar 0.694 mencerminkan keseimbangan antara presisi dan sensitivitas, yang sangat penting dalam konteks klasifikasi dengan distribusi kelas yang tidak seimbang. Secara keseluruhan, model menunjukkan kinerja yang cukup baik, terutama dalam mendeteksi kelas negatif, meskipun kinerjanya terhadap kelas positif masih dapat diperbaiki.

Sensitivitas dan Spesifisitas

Untuk mengevaluasi kemampuan model dalam klasifikasi biner secara lebih mendalam, dua metrik utama yang perlu diperhatikan adalah sensitivitas dan spesifisitas. Kedua ukuran ini menggambarkan seberapa baik model dalam mengenali kelas positif dan kelas negatif secara terpisah.

  1. Sensitivitas

    Sensitivitas menggambarkan seberapa banyak kelas positif yang berhasil diidentifikasi dengan benar oleh model. Metrik ini juga dikenal dengan nama True Positive Rate dan dapat dirumuskan sebagai:

    \[ \text{Sensitivity} = \frac{TP}{TP + FN} \]

    di mana TP adalah jumlah prediksi benar positif dan FN adalah jumlah prediksi negatif yang salah.

  2. Spesifisitas

    Spesifisitas menggambarkan seberapa banyak kelas negatif yang dikenali dengan tepat oleh model. Metrik ini juga dikenal sebagai True Negative Rate, dengan rumus sebagai berikut:

    \[ \text{Specificity} = \frac{TN}{TN + FP} \]

    di mana TN adalah jumlah prediksi benar negatif dan FP adalah jumlah prediksi positif yang salah.

Kedua metrik ini sangat penting untuk memahami bagaimana model berperforma dalam mendeteksi dua kategori kelas yang berbeda, terutama ketika fokus utama adalah pada deteksi kejadian positif yang mungkin jarang terjadi namun sangat penting untuk diidentifikasi dengan akurat.

Perhitungan sensitivitas dan spesifisitas dapat dilakukan secara manual maupun menggunakan kode berikut:

# Perhitungan manual telah dilakukan sebelumnya 
cat("Sensitivitas:", round(sensitivitas, 3), "\n") 
## Sensitivitas: 0.643
cat("Spesifisitas:", round(spesifisitas, 3), "\n") 
## Spesifisitas: 0.891

Kesimpulan

  • Deviance yang rendah menunjukkan bahwa model memiliki kesalahan prediksi yang lebih kecil dibandingkan dengan model referensi yang sempurna.

  • AIC digunakan untuk menilai keseimbangan antara ketepatan model dan jumlah parameter yang digunakan, sehingga membantu menghindari model yang terlalu kompleks.

  • Uji Likelihood Ratio berfungsi untuk menentukan apakah penambahan variabel dalam model memberikan peningkatan signifikan secara statistik.

  • Tabel klasifikasi memberikan gambaran kuantitatif tentang akurasi model dalam membedakan antara kategori aktual dan hasil prediksi.

  • Prinsip Parsimony mengarahkan pemilihan model ke arah struktur yang lebih sederhana, jika tidak ada perbedaan kinerja yang signifikan dibandingkan dengan model yang lebih kompleks.

9.10 Detail ROC dan Penjelasan Kurva ROC (Receiver Operating Characteristic)

Kurva ROC (Receiver Operating Characteristic) adalah representasi grafis yang digunakan untuk mengevaluasi kinerja model klasifikasi biner. Kurva ini menggambarkan hubungan antara True Positive Rate (Sensitivitas) dan False Positive Rate (1 − Spesifisitas) pada berbagai nilai ambang batas klasifikasi. Semakin baik kemampuan model dalam membedakan antara kelas positif dan negatif, maka kurva ROC akan semakin menjauh dari garis diagonal dan mendekati sudut kiri atas grafik.

1. Definisi

  • Sumbu Y (Sensitivitas): Menunjukkan kelas positif yang berhasil dikenali dengan benar oleh model.
    Sensitivitas dihitung dengan rumus:

    \[ \text{Sensitivitas} = \frac{TP}{TP + FN} \]

  • Sumbu X (1 − Spesifisitas): Menunjukkan proporsi kesalahan klasifikasi terhadap kelas negatif (False Positive Rate), yang dihitung dengan rumus:

\[ \text{FPR} = \frac{FP}{FP + TN} = 1 - \text{Spesifisitas} \]

  • Garis diagonal (y = x) menggambarkan performa acak (random classifier), yang berarti model tidak memiliki kemampuan diskriminasi dalam membedakan antara kelas positif dan negatif.

  • Kurva yang mendekati sudut kiri atas mencerminkan performa klasifikasi yang baik, karena menunjukkan sensitivitas tinggi dan false positive rate rendah.

2. Cut-off dan Pergerakan Kurva

Perubahan nilai ambang klasifikasi (cut-off) mempengaruhi bentuk kurva ROC:

  • Jika cut-off diturunkan, maka:
    • Lebih banyak kasus akan diklasifikasikan sebagai positif.
    • Sensitivitas meningkat.
    • Spesifisitas menurun.
  • Jika cut-off dinaikkan, maka:
    • Model menjadi lebih selektif dalam mengidentifikasi kelas positif.
    • Sensitivitas menurun.
    • Spesifisitas meningkat.

3. Kurva ROC Ideal

Model yang ideal secara teori akan menghasilkan kurva ROC dengan ciri-ciri sebagai berikut:

  • Kenaikan tajam di bagian vertikal, diikuti dengan lintasan horizontal yang mendekati false positive rate yang rendah.

  • Area di bawah kurva (AUC) mendekati 1, menunjukkan performa model yang sangat baik.

4. Interpretasi Luas Area (AUC)

Nilai AUC digunakan untuk mengukur seberapa baik model dapat memisahkan antara kelas positif dan negatif. Beberapa pedoman interpretasi AUC yang umum adalah:

  • AUC ≈ 0.5: Performa model tidak lebih baik dari klasifikasi acak.

  • AUC > 0.7: Model memiliki kemampuan diskriminatif yang layak.

  • AUC > 0.9: Model menunjukkan kinerja yang sangat baik.

AUC juga dikenal sebagai ukuran concordance, yaitu probabilitas bahwa model memberikan skor yang lebih tinggi untuk kasus positif dibandingkan dengan kasus negatif secara acak.

5. Kegunaan Kurva ROC

Kurva ROC memiliki beberapa aplikasi penting dalam analisis klasifikasi:

  • Untuk membandingkan kinerja beberapa model klasifikasi secara objektif.

  • Untuk menentukan ambang prediksi optimal berdasarkan konteks, seperti memprioritaskan penurunan false negative dalam deteksi penyakit.

6. Visualisasi dalam R

Visualisasi kurva ROC untuk model klasifikasi logistik dapat dilakukan menggunakan paket pROC

library(pROC) 
set.seed(321) 
 
# Simulasi variabel prediktor 
x1 <- rnorm(300, mean = 0.5, sd = 1.3) 
x2 <- rbinom(300, size = 1, prob = 0.6) 
x3 <- rnorm(300, mean = -1, sd = 1) 
 
# Model linier dengan parameter berbeda 
lin_mod <- 0.8 - 1.4 * x1 + 1.2 * x2 + 0.5 * x3 
p <- 1 / (1 + exp(-lin_mod)) 
y <- rbinom(300, 1, prob = p) 
 
# Data frame 
data <- data.frame(y = factor(y), x1, x2, x3) 
 
# Model logistik 
model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial) 
 
# Prediksi probabilitas 
pred <- predict(model, type = "response") 
 
# Kurva ROC 
roc_curve <- roc(data$y, pred) 
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
# Plot ROC dengan warna unik dan legend 
plot(roc_curve, 
     main = "Kurva ROC - Model Simulasi", 
     col = "#4B0082", # warna ungu gelap (indigo) 
     lwd = 2) 
 
abline(a = 0, b = 1, col = "gray", lty = 2) 
 
legend("bottomright", 
       legend = c("Model Logistik Simulasi"), 
       col = c("#4B0082"), 
       lwd = 2)

auc(roc_curve)
## Area under the curve: 0.8614

7. Simulasi Pemilihan Threshold Optimal

Tujuan dari simulasi ini adalah mengevaluasi kinerja model pada berbagai nilai ambang (cut-off) untuk mengetahui trade-off antara sensitivitas dan spesifisitas.

# Daftar nilai threshold yang akan diuji 
thresholds <- seq(0.05, 0.95, by = 0.05) 
# Inisialisasi data frame untuk menyimpan hasil 
results <- data.frame(Threshold = thresholds) 
# Hitung Sensitivitas untuk setiap threshold 
results$Sensitivity <- sapply(thresholds, function(t) { 
pred_class <- ifelse(pred >= t, 1, 0) 
cm <- table(Pred = pred_class, Obs = as.numeric(as.character(data$y))) 
TP <- cm["1", "1"] 
FN <- cm["0", "1"] 
TP / (TP + FN) 
}) 
# Hitung Spesifisitas untuk setiap threshold 
results$Specificity <- sapply(thresholds, function(t) {
   pred_class <- ifelse(pred >= t, 1, 0) 
  cm <- table(Pred = pred_class, Obs = as.numeric(as.character(data$y))) 
   
  TN <- cm["0", "0"] 
  FP <- cm["1", "0"] 
   
  TN / (TN + FP) 
}) 
 
# Cetak hasil evaluasi sensitivitas dan spesifisitas 
print(results) 
##    Threshold Sensitivity Specificity
## 1       0.05   1.0000000   0.1313869
## 2       0.10   0.9938650   0.2116788
## 3       0.15   0.9631902   0.3138686
## 4       0.20   0.9570552   0.3795620
## 5       0.25   0.9386503   0.4598540
## 6       0.30   0.9325153   0.5255474
## 7       0.35   0.9079755   0.5912409
## 8       0.40   0.8773006   0.6569343
## 9       0.45   0.8588957   0.7153285
## 10      0.50   0.8282209   0.7737226
## 11      0.55   0.7730061   0.7956204
## 12      0.60   0.7177914   0.8394161
## 13      0.65   0.6871166   0.8759124
## 14      0.70   0.6257669   0.9051095
## 15      0.75   0.5705521   0.9343066
## 16      0.80   0.5092025   0.9416058
## 17      0.85   0.4294479   0.9416058
## 18      0.90   0.2699387   0.9635036
## 19      0.95   0.1104294   0.9854015
9.11 Precision-Recall Curve (PR Curve)

Kurva Precision-Recall (PR) adalah salah satu metode evaluasi performa model klasifikasi yang sangat direkomendasikan, terutama ketika data memiliki ketidakseimbangan kelas (class imbalance), di mana jumlah observasi pada kelas positif jauh lebih sedikit dibandingkan dengan kelas negatif.

1. Definisi

  • Precision (Presisi): Mengukur proporsi prediksi positif yang benar-benar positif.

    \[ \text{Precision} = \frac{TP}{TP + FP} \]

  • Recall (Sensitivitas): Mengukur proporsi kasus positif yang sebenarnya yang berhasil dikenali oleh model.

    \[ \text{Recall} = \frac{TP}{TP + FN} \]

Keterangan Notasi:

  • TP: True Positive (prediksi positif yang benar)

  • FP: False Positive (prediksi positif yang salah)

  • FN: False Negative (prediksi negatif yang salah)

2. Interpretasi

  • Kurva PR menggambarkan hubungan antara presisi dan recall ketika ambang klasifikasi diubah.

  • Model yang baik akan menghasilkan nilai precision dan recall yang tinggi secara bersamaan, namun seringkali terdapat trade-off antara keduanya.

  • Semakin melengkung ke arah pojok kanan atas kurva, semakin baik kinerja model.

Catatan: PR Curve lebih representatif dibandingkan dengan ROC Curve dalam kasus data yang tidak seimbang karena tidak memperhitungkan true negatives.

3. Area Under PR Curve (AUPRC)

  • Area di bawah kurva PR (AUPRC) mengukur rata-rata presisi pada berbagai nilai recall.

  • AUPRC memiliki nilai maksimum 1. Semakin mendekati 1, semakin baik kualitas model dalam mendeteksi kelas positif.

  • Nilai baseline AUPRC setara dengan prevalensi kelas positif:

    \[ \text{Baseline AUPRC} = \frac{\text{Jumlah Kelas Positif}}{\text{Total Observasi}} \]

    AUPRC sangat berguna untuk menilai kinerja model dalam kasus ketidakseimbangan kelas, karena lebih fokus pada kelas positif.

4. Perbandingan PR Curve dan ROC Curve

Aspek ROC Curve Precision-Recall Curve
Fokus Kuat di semua kelas Fokus pada kelas positif saja, cocok untuk data tidak seimbang
Sumbu Y Sensitivitas (Recall) Presisi
Sumbu X 1 - Spesifisitas (FPR) Recall

5. Ilustrasi Precision-Recall Curve Menggunakan R

# Muat paket yang diperlukan 
library(PRROC)
## Loading required package: rlang
library(rlang) 
 
# Inisialisasi seed untuk replikasi 
set.seed(2025) 
 
# Simulasi tiga prediktor dengan distribusi normal 
x1 <- rnorm(300) 
x2 <- rnorm(300, 2, 0.4) 
x3 <- rnorm(300) 
 
# Rumus logit dan prediksi probabilitas 
lin_pred <- -1 + 0.9 * x1 + 0.6 * x2 + 0.5 * x3 
p <- 1 / (1 + exp(-lin_pred)) 
 
# Hasil klasifikasi biner 
y <- rbinom(300, 1, p) 
 
# Gabungkan data menjadi satu kerangka data 
data <- data.frame(y = y, x1 = x1, x2 = x2, x3 = x3) 
 
# Bangun model regresi logistik 
model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial) 
 
# Prediksi probabilitas 
prob <- predict(model, type = "response") 
 
# Buat objek PR Curve 
pr <- pr.curve(scores.class0 = prob[data$y == 1], 
               scores.class1 = prob[data$y == 0], 
               curve = TRUE) 
 
# Visualisasikan 
plot(pr)

6. Catatan

  • Kurva PR memberikan wawasan yang lebih mendalam ketika kita bekerja dengan kondisi kelas minoritas, seperti dalam sistem deteksi fraud atau diagnosis penyakit langka.

Penggunaan PR Curve sangat disarankan dalam situasi berikut:

  • Ketika kelas positif jauh lebih sedikit dibandingkan dengan kelas lainnya.

  • Fokus model diarahkan pada minimisasi false positive dan maksimalisasi presisi.

  • Prioritas aplikasi terletak pada akurasi dalam memprediksi kelas positif.

9.12 Pseudo R-square pada Regresi Logistik

Dalam regresi logistik, koefisien determinasi () yang digunakan dalam regresi linear tidak dapat langsung diterapkan karena perbedaan bentuk fungsi likelihood. Oleh karena itu, dikembangkan ukuran alternatif yang disebut pseudo R-squared.

Tujuan Penggunaan Pseudo R-squared

  • Memberikan indikasi relatif seberapa baik model logistik dapat menjelaskan variabilitas data biner yang diamati.

  • Membandingkan kebaikan model antara model penuh dengan model null (tanpa prediktor).

  • Menilai apakah penambahan prediktor dapat meningkatkan kecocokan model terhadap data.

  • Memberikan bantuan kuantitatif dalam pemilihan model (selain menggunakan AIC/BIC atau deviance).

Beberapa Jenis Pseudo R-squared:

  • \(R^2_{\text{CoxSnell}}\)

  • \(R^2_{\text{McFadden}}\)

Simulasi Data

# Set seed agar hasil dapat direproduksi 
set.seed(58) 
 
# Jumlah observasi 
n <- 500 
 
# Simulasi prediktor x1, x2, dan x3 
x1 <- rnorm(n) 
x2 <- rbinom(n, 1, 0.4) 
x3 <- rnorm(n) 
 
# Persamaan linier logit dan probabilitas 
lin_pred <- -0.8 + 1.5 * x1 - 0.3 * x2 + 0.9 * x3 
p <- 1 / (1 + exp(-lin_pred)) 
 
# Respon biner y 
y <- rbinom(n, 1, p) 
 
# Gabungkan ke dalam dataframe 
data <- data.frame(y = as.factor(y), x1 = x1, x2 = x2, x3 = x3) 

Model Logistik dan Null Model

# Model penuh (menggunakan semua prediktor) 
model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)  
model
## 
## Call:  glm(formula = y ~ x1 + x2 + x3, family = binomial, data = data)
## 
## Coefficients:
## (Intercept)           x1           x2           x3  
##     -0.8641       1.6928      -0.4486       0.8968  
## 
## Degrees of Freedom: 499 Total (i.e. Null);  496 Residual
## Null Deviance:       639.7 
## Residual Deviance: 442.4     AIC: 450.4
# Model null (hanya intercept, tanpa prediktor) 
model_null <- glm(y ~ 1, data = data, family = binomial) 
model_null
## 
## Call:  glm(formula = y ~ 1, family = binomial, data = data)
## 
## Coefficients:
## (Intercept)  
##     -0.6722  
## 
## Degrees of Freedom: 499 Total (i.e. Null);  499 Residual
## Null Deviance:       639.7 
## Residual Deviance: 639.7     AIC: 641.7

Interpretasi

Berdasarkan hasil regresi logistik, model penuh yang melibatkan prediktor x1, x2, dan x3 menunjukkan bahwa x1 dan x3 memberikan kontribusi positif terhadap probabilitas kejadian, dengan koefisien masing-masing sebesar 1.6928 dan 0.8968, sementara x2 memberikan kontribusi negatif dengan koefisien -0.4486. Perbedaan antara null deviance (639.7) dan residual deviance (442.4) menunjukkan bahwa model yang menggunakan prediktor memberikan peningkatan kecocokan yang signifikan dibandingkan dengan model tanpa prediktor. Nilai \(R^2_{\text{CoxSnell}}\) sebesar 0.2698 dan \(R^2_{\text{McFadden}}\) sebesar 0.2586 menunjukkan bahwa model ini dapat menjelaskan sebagian variasi dalam data dengan kualitas yang cukup baik untuk model regresi logistik biner.

Likelihood dan Rumus

Ukuran Pseudo 𝑅2 dihitung berdasarkan nilai likelihood sebagai berikut:

Rumus Cox & Snell:

\[ R^2_{\text{CoxSnell}} = 1 - \left( \frac{L_0}{L_M} \right)^{\frac{2}{n}} \]

Rumus McFadden:

\[ R^2_{\text{McFadden}} = 1 - \frac{\log L_M}{\log L_0} \]

Dengan:

  • \(L_0\): log-likelihood dari model null (tanpa prediktor)

  • \(L_M\): log-likelihood dari model penuh

  • \(n\): jumlah observasi

Perhitungan Manual dalam R

# Ambil nilai log-likelihood 
logL0 <- logLik(model_null) 
logLM <- logLik(model) 
# Konversi ke skala likelihood 
L0 <- exp(logL0) 
LM <- exp(logLM) 
# Ambil jumlah data 
n <- nobs(model)

# Hitung pseudo R-squared 
cox_snell <- 1 - (L0 / LM)^(2 / n) 
mcfadden <- 1 - (as.numeric(logLM) / as.numeric(logL0)) 
 
# Tampilkan dalam data.frame 
r2 <- data.frame( 
  R2_CoxSnell = cox_snell, 
  R2_McFadden = mcfadden 
) 
r2
##   R2_CoxSnell R2_McFadden
## 1   0.3260752   0.3084545

Perhitungan Otomatis dengan beberapa Package

1. Menggunakan pcsl

library(pscl) 
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
pR2(model)
## fitting null model for pseudo-r2
##          llh      llhNull           G2     McFadden         r2ML         r2CU 
## -221.1908043 -319.8499841  197.3183597    0.3084545    0.3260752    0.4517554

2. Menggunakan DescTools

library(DescTools) 
PseudoR2(model, which = "all") 
##        McFadden     McFaddenAdj        CoxSnell      Nagelkerke   AldrichNelson 
##       0.3084545       0.2959487       0.3260752       0.4517554       0.2829674 
## VeallZimmermann           Efron McKelveyZavoina            Tjur             AIC 
##       0.5041394       0.3424673       0.5002325       0.3508718     450.3816086 
##             BIC          logLik         logLik0              G2 
##     467.2400410    -221.1908043    -319.8499841     197.3183597

Interpretasi

Hasil evaluasi model logistik menggunakan paket pscl dan DescTools menunjukkan bahwa nilai pseudo R-squared model bervariasi tergantung pada metode yang digunakan. Nilai \(R^2_{\text{McFadden}}\) sebesar 0.3085 menunjukkan bahwa model dapat menjelaskan sekitar 30.85% dari informasi log-likelihood jika dibandingkan dengan model null. Sementara itu, nilai \(R^2_{\text{CoxSnell}}\) sebesar 0.3261 dan \(R^2_{\text{Nagelkerke}}\) sebesar 0.4518 memberikan indikasi bahwa model memiliki kualitas prediksi yang sedang hingga baik. Nilai \(R^2\) lainnya, seperti Tjur (0.5041) dan McKelvey-Zavoina (0.5002), menunjukkan bahwa setidaknya setengah dari variasi dalam probabilitas kejadian dapat dijelaskan oleh model. Secara keseluruhan, metrik-metrik ini mengindikasikan bahwa model memiliki kecocokan yang cukup baik terhadap data.

10. Distribusi Multinomial

Distribusi multinomial adalah perluasan dari distribusi binomial dalam konteks yang memiliki lebih dari dua kategori hasil. Misalkan terdapat \(X_1, X_2, \dots, X_k\) yang menyatakan jumlah observasi untuk masing-masing dari \(k\) kategori, maka probabilitas gabungan dari distribusi multinomial dapat dihitung dengan rumus:

\[ P(X_1 = x_1, \dots, X_k = x_k) = \frac{n!}{x_1! x_2! \dots x_k!} \cdot p_1^{x_1} p_2^{x_2} \dots p_k^{x_k} \]

dengan:

  • \(\sum_{i=1}^k x_i = n\) (total jumlah observasi),

  • \(\sum_{i=1}^k p_i = 1\) (jumlah probabilitas kategori),

  • \(p_1, p_2, \dots, p_k\) adalah probabilitas untuk masing-masing kategori.

10.1 Ilustrasi Studi Kasus

Sebuah penelitian dilakukan terhadap 20 responden yang diminta untuk memilih satu dari empat jenis makanan favorit: Pizza (P), Burger (B), Sushi (S), dan Salad (L). Hasil observasi yang diperoleh adalah sebagai berikut:

  • Pizza: 8 orang

  • Burger: 6 orang

  • Sushi: 4 orang

  • Salad: 2 orang

Asumsikan bahwa probabilitas teoritis preferensi makanan di populasi adalah sebagai berikut:

  • \(p_P = 0.40\)

  • \(p_B = 0.30\)

  • \(p_S = 0.20\)

  • \(p_L = 0.10\)

Pertanyaan:

Berapa peluang bahwa dalam 20 responden, sebanyak 8 orang memilih Pizza, 6 orang memilih Burger, 4 orang memilih Sushi, dan 2 orang memilih Salad?

Perhitungan Manual di R

# Jumlah total individu
n <- 20

# Frekuensi tiap kategori
frekuensi <- c(8, 6, 4, 2)  # P, B, S, L

# Probabilitas preferensi
probabilitas <- c(0.40, 0.30, 0.20, 0.10)

# Hitung koefisien multinomial
faktorial_total <- factorial(n)
faktorial_frekuensi <- prod(factorial(frekuensi))
koefisien <- faktorial_total / faktorial_frekuensi

# Hitung probabilitas gabungan
peluang <- koefisien * prod(probabilitas^frekuensi)
peluang
## [1] 0.01334621

Interpretasi:

Nilai ini merepresentasikan probabilitas bahwa dalam sebuah kelompok yang terdiri dari 20 responden, sebanyak 8 orang memilih Pizza, 6 orang memilih Burger, 4 orang memilih Sushi, dan 2 orang memilih Salad, sesuai dengan probabilitas teoritis yang telah ditentukan untuk masing-masing pilihan makanan. Dengan kata lain, nilai 0.01334621 adalah peluang terjadinya kombinasi spesifik ini berdasarkan distribusi probabilitas yang telahditentukan untuk setiap kategori.

Secara singkat, ini berarti sekitar 1.33% kemungkinan bahwa dalam 20 responden, akan diperoleh jumlah pemilihan yang tepat seperti yang tercatat (8 untuk Pizza, 6 untuk Burger, 4 untuk Sushi, dan 2 untuk Salad), dengan asumsi probabilitas teoritis yang telah diberikan untuk masing-masing jenis makanan.

10.2 Regresi Logistik Multinomial

Model regresi logistik multinomial digunakan untuk menjelaskan hubungan antara satu variabel respons kategorik (yang memiliki lebih dari dua kategori) dan satu atau lebih variabel prediktor.

Misalkan \(Y\) terdiri atas \(K\) kategori, dan kategori referensi (baseline) adalah kategori \(K\). Maka bentuk umum model logit multinomial adalah:

\[ \log\left(\frac{P(Y = j)}{P(Y = K)}\right) = \alpha_j + \beta_{j1}x_1 + \beta_{j2}x_2 + \cdots + \beta_{jp}x_p \]

untuk \(j = 1, 2, \dots, K - 1\).

10.2.1 Model Logit Baseline-Kategori

Model logit baseline-kategori adalah variasi dari regresi logistik yang diterapkan pada variabel respons dengan lebih dari dua kategori. Dalam pendekatan ini, satu kategori digunakan sebagai acuan (baseline), dan kategori lainnya dibandingkan terhadap kategori baseline tersebut.

Rumus modelnya adalah:

\[ \log\left(\frac{\pi_j}{\pi_K}\right) = \eta_j, \quad j = 1, \dots, K-1 \]

Dengan:

  • \(\pi_j\) adalah probabilitas pengamatan berada di kategori \(j\).

  • \(\pi_K\) adalah probabilitas pengamatan berada di kategori acuan (baseline).

Model ini menghasilkan \(K - 1\) persamaan logit.

Catatan: Secara default, fungsi multinom() dari package nnet di R menjadikan kategori terakhir sebagai baseline. Namun, kita juga dapat menentukan kategori referensi secara manual.

Model Regresi

Jika hanya ada satu variabel prediktor, misalnya \(x\), maka bentuk model regresi logitnya adalah:

\[ \log\left(\frac{\pi_j}{\pi_K}\right) = \alpha_j + \beta_j x, \quad j = 1, \dots, K-1 \]

Dimana:

  • \(\pi_j\) adalah probabilitas pengamatan berada di kategori \(j\).

  • \(\pi_K\) adalah probabilitas pengamatan berada di kategori acuan (baseline).

  • \(\alpha_j\) dan \(\beta_j\) adalah parameter model yang perlu diestimasi.

Contoh Kasus: Respons 3 Kategori

Misalkan variabel respons \(Y\) memiliki 3 kategori: \(Y \in \{A, B, C\}\), dan kita pilih kategori \(C\) sebagai baseline. Maka model regresi logitnya adalah:

\[ \log\left(\frac{\pi_A}{\pi_C}\right) = \alpha_1 + \beta_1 x \]

\[ \log\left(\frac{\pi_B}{\pi_C}\right) = \alpha_2 + \beta_2 x \]

Relasi Antar Kategori

Jika kita ingin mengetahui logit antara dua kategori non-baseline, misalnya antara kategori 1 (\(\pi_1\)) dan kategori 2 (\(\pi_2\)), maka kita dapat menggunakan rumus berikut:

\[ \log\left(\frac{\pi_1}{\pi_2}\right) = \log\left(\frac{\pi_1 / \pi_3}{\pi_2 / \pi_3}\right) = \log\left(\frac{\pi_1}{\pi_2}\right) \]

Jika model logit untuk setiap kategori terhadap baseline (\(\pi_3\)) adalah:

\[ \log\left(\frac{\pi_1}{\pi_3}\right) = (\alpha_1 - \beta_1 x) \]

\[ \log\left(\frac{\pi_2}{\pi_3}\right) = (\alpha_2 - \beta_2 x) \]

Maka logit antara kategori 1 dan 2 menjadi:

\[ \log\left(\frac{\pi_1}{\pi_2}\right) = (\alpha_1 - \alpha_2) + (\beta_1 - \beta_2) x \]

Ringkasan Model Logit Baseline-Kategori

  • Model ini cocok digunakan jika respons memiliki lebih dari dua kategori (multikategori).

  • Model ini menghasilkan \((K - 1)\) persamaan logit terhadap satu referensi (baseline).

  • Hubungan antara dua kategori non-baseline dapat diperoleh dari selisih dua logit terhadap baseline.

Catatan Implementasi di R:

Fungsi multinom() dari paket nnet digunakan untuk membangun model ini. Pengaturan kategori baseline dapat diubah menggunakan fungsi relevel().

10.2.2 Penaksiran Parameter (Estimasi)

Untuk menentukan parameter model, digunakan metode Maximum Likelihood Estimation (MLE). Estimasi dilakukan menggunakan algoritma iteratif seperti Newton-Raphson.

Fungsi log-likelihood yang dimaksimalkan adalah:

\[ \ell(\beta) = \sum_{i=1}^{n} \sum_{j=1}^{K} y_{ij} \log(\pi_{ij}) \]

Dengan:

  • \(\pi_{ij}\) = \(P(Y_i = j | x_i)\) adalah probabilitas prediksi untuk kategori \(j\) dari observasi ke-\(i\).

  • \(y_{ij}\) = 1 jika observasi ke-\(i\) benar berada di kategori ke-\(j\), dan 0 jika tidak.

10.3 Contoh Kasus

Sebuah perusahaan teknologi yang bergerak di bidang perangkat keras ingin mengevaluasi preferensi karyawan terhadap jenis perangkat komputer yang digunakan untuk pekerjaan sehari-hari, antara: Laptop, Desktop, dan Tablet.

Untuk itu, dilakukan survei terhadap 250 karyawan dengan mencatat beberapa informasi sebagai berikut:

  • DEVICE: Jenis perangkat yang digunakan (Laptop, Desktop, Tablet)

  • AGE: Usia karyawan (dalam tahun)

  • DEPARTMENT: Bagian atau unit kerja tempat bertugas (Pengembangan, Pemasaran, dan Keuangan)

  • EXPERIENCE: Lama bekerja (tahun pengalaman)

Tujuan Penelitian

Mengetahui apakah bagian/unit kerja, usia, dan pengalaman kerja memiliki hubungan atau keterkaitan dalam preferensi pemilihan perangkat komputer yang digunakan di tempat kerja.

10.4 Proses Simulasi Dataset
# Penyiapan pustaka 
library(nnet) 
library(ggplot2)  # Pustaka untuk visualisasi
## Warning: package 'nnet' was built under R version 4.3.3 
set.seed(999) 

# Jumlah responden 
JUMLAH_RESP <- 250 

# Simulasi variabel DEPARTMENT 
DEPARTMENT <- sample(c("Pengembangan", "Pemasaran", "Keuangan"), size = JUMLAH_RESP, replace = TRUE)

# Simulasi usia dengan distribusi normal 
AGE <- round(rnorm(JUMLAH_RESP, mean = 35, sd = 7))

# Simulasi pengalaman kerja (tahun) 
EXPERIENCE <- round(pmax(rnorm(JUMLAH_RESP, mean = 7, sd = 3), 0))  # hanya nilai positif

# Simulasi preferensi perangkat komputer berdasarkan DEPARTMENT 
DEVICE <- sapply(DEPARTMENT, function(department) { 
  if (department == "Pengembangan") { 
    sample(c("Laptop", "Desktop", "Tablet"), size = 1, prob = c(0.5, 0.3, 0.2)) 
  } else if (department == "Pemasaran") { 
    sample(c("Laptop", "Desktop", "Tablet"), size = 1, prob = c(0.4, 0.4, 0.2)) 
  } else { 
    sample(c("Laptop", "Desktop", "Tablet"), size = 1, prob = c(0.3, 0.5, 0.2)) 
  } 
}) 

# Gabungkan semua ke dalam satu data.frame 
DATA_RESP <- data.frame( 
  DEVICE = factor(DEVICE), 
  AGE = AGE, 
  DEPARTMENT = factor(DEPARTMENT), 
  EXPERIENCE = EXPERIENCE 
) 

# Atur baseline kategori untuk DEVICE 
DATA_RESP$DEVICE <- relevel(DATA_RESP$DEVICE, ref = "Desktop") 

# Tampilkan 10 data pertama 
head(DATA_RESP, 10)
##     DEVICE AGE   DEPARTMENT EXPERIENCE
## 1   Laptop  27     Keuangan          5
## 2   Tablet  42 Pengembangan         11
## 3  Desktop  45     Keuangan         10
## 4   Laptop  41 Pengembangan          5
## 5   Tablet  30    Pemasaran          9
## 6   Tablet  34 Pengembangan         10
## 7  Desktop  31    Pemasaran          8
## 8   Laptop  33    Pemasaran          6
## 9   Laptop  37    Pemasaran          8
## 10  Laptop  36     Keuangan          2
# Visualisasi
ggplot(DATA_RESP, aes(x = DEVICE, fill = DEPARTMENT)) + 
  geom_bar(position = "dodge") + 
  labs( 
    title = "Distribusi Pemilihan Perangkat Komputer", 
    x = "Jenis Perangkat", y = "Jumlah Karyawan" 
  ) + 
  theme_minimal()

10.5 Estimasi Model Multinomial

Setelah data disimulasikan, langkah berikutnya adalah melakukan estimasi model menggunakan pendekatan baseline-category logit. Model ini mengevaluasi pengaruh beberapa prediktor terhadap kategori pilihan kendaraan, dengan Pickup sebagai baseline.

# Estimasi model logit multinomial 
model_device <- multinom(DEVICE ~ AGE + DEPARTMENT + EXPERIENCE, data = DATA_RESP)
## # weights:  18 (10 variable)
## initial  value 274.653072 
## iter  10 value 253.497869
## final  value 253.359001 
## converged
## Ringkasan hasil model 
summary(model_device)
## Call:
## multinom(formula = DEVICE ~ AGE + DEPARTMENT + EXPERIENCE, data = DATA_RESP)
## 
## Coefficients:
##        (Intercept)         AGE DEPARTMENTPemasaran DEPARTMENTPengembangan
## Laptop   0.2408925 -0.01596278           0.9664008              1.3439722
## Tablet  -0.7982344 -0.01187997           0.8908414              0.9167886
##         EXPERIENCE
## Laptop -0.05948085
## Tablet -0.01465005
## 
## Std. Errors:
##        (Intercept)        AGE DEPARTMENTPemasaran DEPARTMENTPengembangan
## Laptop   0.8508473 0.02162222           0.3621915              0.3748647
## Tablet   1.0476022 0.02652321           0.4410187              0.4691631
##        EXPERIENCE
## Laptop 0.05253840
## Tablet 0.06405485
## 
## Residual Deviance: 506.718 
## AIC: 526.718
10.6 Analisis Signifikansi: P-value dan Interpretasi

Untuk mengevaluasi apakah masing-masing prediktor berkontribusi signifikan secara statistik, kita hitung nilai z-score dan p-value berdasarkan rasio antara koefisien dan standard error.

## Hitung nilai Z-statistik 
Z_stat <- summary(model_device)$coefficients / summary(model_device)$standard.errors 

## Hitung p-value 2 sisi 
p_value <- 2 * (1 - pnorm(abs(Z_stat))) 

## Bulatkan hasil 
round(p_value, 4)
##        (Intercept)    AGE DEPARTMENTPemasaran DEPARTMENTPengembangan EXPERIENCE
## Laptop      0.7771 0.4604              0.0076                 0.0003     0.2576
## Tablet      0.4461 0.6542              0.0434                 0.0507     0.8191

Interpretasi:

Berikut adalah interpretasi dari hasil koefisien model logit multinomial untuk perangkat yang digunakan oleh karyawan, dengan Desktop sebagai kategori referensi (baseline):

  • Intercept:

Laptop: Koefisien intercept untuk Laptop adalah 0.7771, yang menunjukkan bahwa bila semua variabel prediktor bernilai nol, log odds memilih Laptop dibandingkan Desktop adalah 0.7771.

Tablet: Koefisien intercept untuk Tablet adalah 0.4461, yang menunjukkan bahwa bila semua variabel prediktor bernilai nol, log odds memilih Tablet dibandingkan Desktop adalah 0.4461.

  • AGE:

Laptop: Koefisien untuk AGE adalah 0.4604, yang menunjukkan bahwa setiap penambahan satu tahun usia karyawan meningkatkan log odds memilih Laptop dibandingkan Desktop sebesar 0.4604.

Tablet: Koefisien untuk AGE adalah 0.6542, yang menunjukkan bahwa setiap penambahan satu tahun usia karyawan meningkatkan log odds memilih Tablet dibandingkan Desktop sebesar 0.6542.

  • DEPARTMENTPemasaran (Unit kerja Pemasaran):

Laptop: Koefisien untuk DEPARTMENTPemasaran adalah 0.0076, yang menunjukkan bahwa karyawan di unit kerja Pemasaran memiliki sedikit kecenderungan lebih besar (meskipun sangat kecil) untuk memilih Laptop dibandingkan Desktop, namun pengaruhnya hampir tidak signifikan karena nilai koefisiennya sangat kecil.

Tablet: Koefisien untuk DEPARTMENTPemasaran adalah 0.0434, yang menunjukkan bahwa karyawan di unit kerja Pemasaran sedikit lebih cenderung untuk memilih Tablet dibandingkan Desktop, meskipun pengaruhnya juga kecil dan perlu diuji lebih lanjut.

  • DEPARTMENTPengembangan (Unit kerja Pengembangan):

Laptop: Koefisien untuk DEPARTMENTPengembangan adalah 0.0003, yang menunjukkan bahwa tidak ada perbedaan signifikan antara karyawan di unit kerja Pengembangan yang memilih Laptop dibandingkan Desktop. Pengaruhnya hampir tidak ada.

Tablet: Koefisien untuk DEPARTMENTPengembangan adalah 0.0507, yang menunjukkan sedikit kecenderungan lebih besar bagi karyawan di unit kerja Pengembangan untuk memilih Tablet dibandingkan Desktop, tetapi pengaruhnya juga sangat kecil.

  • EXPERIENCE (Pengalaman kerja):

Laptop: Koefisien untuk EXPERIENCE adalah 0.2576, yang menunjukkan bahwa setiap penambahan satu tahun pengalaman kerja meningkatkan log odds memilih Laptop dibandingkan Desktop sebesar 0.2576.

Tablet: Koefisien untuk EXPERIENCE adalah 0.8191, yang menunjukkan bahwa setiap penambahan satu tahun pengalaman kerja meningkatkan log odds memilih Tablet dibandingkan Desktop sebesar 0.8191.

Catatan:

  • Koefisien positif menunjukkan bahwa peningkatan dalam variabel prediktor meningkatkan peluang untuk memilih kategori perangkat yang bersangkutan (misalnya, Laptop atau Tablet) dibandingkan dengan kategori referensi (Desktop).

  • Koefisien mendekati 0 menunjukkan bahwa variabel tersebut memiliki pengaruh yang sangat kecil terhadap pemilihan perangkat, seperti halnya DEPARTMENTPengembangan yang memiliki pengaruh sangat kecil pada pemilihan Laptop dan Tablet.

10.7 Prediksi dan Validasi Model

Setelah model multinomial berhasil diestimasi, langkah selanjutnya adalah melakukan prediksi kategori device untuk masing-masing observasi. Prediksi ini kemudian divalidasi dengan membandingkan hasil klasifikasi dengan kategori aktual dari data simulasi.

# Prediksi kategori kendaraan untuk seluruh observasi 
DATA_RESP$HASIL_PREDIKSI <- predict(model_device) 
# Buat tabel perbandingan antara aktual dan prediksi 
table(TERPREDIKSI = DATA_RESP$HASIL_PREDIKSI, SEBENARNYA = DATA_RESP$DEVICE) 
##            SEBENARNYA
## TERPREDIKSI Desktop Laptop Tablet
##     Desktop      45     24     12
##     Laptop       52     81     36
##     Tablet        0      0      0
Kesimpulan
  • Model memprediksi dengan baik untuk kategori Laptop, dengan 81 prediksi yang benar dan 36 prediksi yang salah.

  • Model kesulitan dalam memprediksi Tablet, karena tidak ada prediksi yang benar untuk Tablet, dan tidak ada prediksi Tablet sama sekali oleh model. Ini menunjukkan bahwa model sangat buruk dalam mengidentifikasi Tablet sebagai perangkat pilihan.

  • Model juga melakukan kesalahan dalam memprediksi Desktop dan Laptop, dengan 52 kesalahan prediksi Desktop menjadi Laptop dan 24 kesalahan prediksi Laptop menjadi Desktop.

Secara keseluruhan, model lebih baik dalam memprediksi Laptop dibandingkan dengan Desktop atau Tablet, tetapi performa model dalam memprediksi Tablet sangat buruk karena tidak ada prediksi yang benar untuk kategori ini.

11. Regresi Logistik Ordinal

Ketika variabel respons \(Y\) memiliki sifat urutan (ordinal), seperti contoh: tingkat kesadaran kesehatan (Rendah, Sedang, Tinggi), maka regresi logistik ordinal menjadi pendekatan yang tepat untuk menganalisis hubungan antara \(Y\) dan satu atau lebih prediktor.

Karakteristik:

  • Berbeda dari regresi logistik biner, yang hanya digunakan untuk dua kategori.

  • Berbeda dari regresi logistik multinomial, yang menangani lebih dari dua kategori tanpa urutan.

  • Dalam model ordinal, urutan antar kategori sangat penting, namun jarak antar kategori tidak harus sama.

11.1 Konsep Cumulative Logit Model

Salah satu pendekatan yang paling umum dalam regresi ordinal adalah Cumulative Logit Model, dengan asumsi dasar proportional odds (peluang proporsional).

Bentuk model:

\[ \log\left(\frac{P(Y \leq j)}{P(Y > j)}\right) = \alpha_j + \beta x \]

Penjelasan:

  • \(\alpha_j\) adalah intersep khusus untuk batas kumulatif kategori ke-\(j\).

  • \(\beta\) adalah koefisien regresi yang sama untuk semua ambang kumulatif.

Jika terdapat \(K\) kategori, maka akan terbentuk sebanyak \((K - 1)\) model logit kumulatif.

11.2 Interpretasi Koefisien dalam Model Logistik Ordinal

Dalam regresi logistik ordinal (cumulative logit model), koefisien regresi (\(\beta\)) menunjukkan arah dan besarnya pengaruh prediktor terhadap probabilitas kumulatif dari suatu kategori dan kategori yang lebih rendah darinya.

Prinsip Umum Interpretasi Koefisien

  • Model ini membandingkan:

    \[ \log\left(\frac{P(Y \leq j)}{P(Y > j)}\right) = \alpha_j + \beta x \]

    untuk setiap batas kumulatif antar kategori.

  • Jika \(\beta > 0\): Peningkatan nilai \(x\) akan meningkatkan peluang untuk berada di kategori yang lebih rendah atau menengah (dan menurunkan peluang untuk berada di kategori tertinggi).

  • Jika \(\beta < 0\): Peningkatan nilai \(x\) justru akan meningkatkan kemungkinan untuk berada di kategori yang lebih tinggi.

Odds Ratio (Rasio Peluang)

Koefisien juga dapat diterjemahkan ke dalam bentuk Odds Ratio (OR):

\[ OR = e^\beta \]

  • Jika OR < 1 → Peningkatan nilai prediktor menurunkan kemungkinan untuk berada di kategori yang lebih rendah.

  • Jika OR > 1 → Peningkatan nilai prediktor meningkatkan peluang untuk berada di kategori yang lebih tinggi.

11.3 Studi Kasus: Tingkat Kepuasan Pelanggan terhadap Kebersihan Restoran

Dalam studi ini, dilakukan survei terhadap 200 pelanggan di beberapa restoran di kota besar. Mereka diminta untuk menilai kepuasan terhadap kebersihan restoran menggunakan skala ordinal berikut:

1 = Tidak Puas

2 = Cukup Puas

3 = Sangat Puas

Salah satu prediktor yang dianalisis adalah jumlah staf kebersihan yang bertugas di restoran tersebut per hari.

Berikut adalah simulasi data menggunakan R:

set.seed(123)

# Jumlah responden
JUMLAH_RESPONDEN <- 200

# Simulasi jumlah staf kebersihan (antara 1 hingga 8)
STAF_KEBERSIHAN <- sample(1:8, JUMLAH_RESPONDEN, replace = TRUE)

# Simulasi tingkat kepuasan berdasarkan jumlah staf dan noise
KEPUASAN <- cut(
  1.5 * STAF_KEBERSIHAN + rnorm(JUMLAH_RESPONDEN, sd = 1.5),
  breaks = c(-Inf, 5, 9, Inf),
  labels = c("Tidak Puas", "Cukup Puas", "Sangat Puas"),
  ordered_result = TRUE
)

# Membentuk data frame
DATA_RESTORAN <- data.frame(KEPUASAN, STAF_KEBERSIHAN)

# Melihat 6 data pertama
head(DATA_RESTORAN)
##      KEPUASAN STAF_KEBERSIHAN
## 1 Sangat Puas               7
## 2 Sangat Puas               7
## 3  Tidak Puas               3
## 4  Cukup Puas               6
## 5  Tidak Puas               3
## 6  Tidak Puas               2
11.4 Estimasi Model Ordinal

Pada kasus ini, kita akan membentuk model regresi logistik ordinal untuk mengetahui pengaruh jumlah staf kebersihan terhadap tingkat kepuasan pelanggan.

library(MASS)

# Membentuk model ordinal
MODEL_RESTORAN <- polr(KEPUASAN ~ STAF_KEBERSIHAN, data = DATA_RESTORAN, Hess = TRUE)

# Menampilkan ringkasan model
summary(MODEL_RESTORAN)
## Call:
## polr(formula = KEPUASAN ~ STAF_KEBERSIHAN, data = DATA_RESTORAN, 
##     Hess = TRUE)
## 
## Coefficients:
##                 Value Std. Error t value
## STAF_KEBERSIHAN 2.129     0.2497   8.526
## 
## Intercepts:
##                        Value   Std. Error t value
## Tidak Puas|Cukup Puas   7.8172  0.9709     8.0512
## Cukup Puas|Sangat Puas 12.3764  1.4916     8.2972
## 
## Residual Deviance: 152.746 
## AIC: 158.746
Menghitung Nilai P-Value dari Koefisien

Langkah ini bertujuan untuk menilai signifikansi statistik dari prediktor dan intercept. Kita gunakan distribusi normal standar karena fungsi polr() tidak langsung menyediakan nilai p-value.

# Ambil tabel koefisien dari model
TABEL_KOEF <- coef(summary(MODEL_RESTORAN))

# Hitung p-value dari t-value
PVAL <- 2 * pnorm(-abs(TABEL_KOEF[, "t value"]))

# Gabungkan p-value ke tabel koefisien
TABEL_KOEF <- cbind(TABEL_KOEF, "p-value" = round(PVAL, 4))

# Lihat hasil
TABEL_KOEF
##                            Value Std. Error  t value p-value
## STAF_KEBERSIHAN         2.128904  0.2497005 8.525831       0
## Tidak Puas|Cukup Puas   7.817191  0.9709349 8.051200       0
## Cukup Puas|Sangat Puas 12.376433  1.4916343 8.297230       0
11.6 Prediksi Probabilitas Tiap Kategori
# Data baru untuk prediksi
DATA_BARU <- data.frame(STAF_KEBERSIHAN = 2:6)

# Prediksi probabilitas tiap kategori kepuasan
prediksi_prob <- predict(MODEL_RESTORAN, newdata = DATA_BARU, type = "probs")

# Pembulatan hasil prediksi
round(prediksi_prob, 4)
##   Tidak Puas Cukup Puas Sangat Puas
## 1     0.9723     0.0274      0.0003
## 2     0.8070     0.1905      0.0025
## 3     0.3322     0.6472      0.0206
## 4     0.0559     0.7938      0.1503
## 5     0.0070     0.3950      0.5980
# Load library
library(tidyr)
library(ggplot2)

# Ubah format tabel prediksi ke long format
PROB_TBL <- as.data.frame(prediksi_prob)
PROB_TBL$STAF_KEBERSIHAN <- 2:6

PROB_TBL_LONG <- pivot_longer(
  PROB_TBL, 
  cols = -STAF_KEBERSIHAN, 
  names_to = "KATEGORI", 
  values_to = "PROB"
)

# Plot
ggplot(PROB_TBL_LONG, aes(x = STAF_KEBERSIHAN, y = PROB, color = KATEGORI)) +
  geom_line(size = 1.2) +
  labs(
    title = "Perubahan Probabilitas terhadap Jumlah Staf Kebersihan",
    x = "Jumlah Staf Kebersihan",
    y = "Probabilitas",
    color = "Tingkat Kepuasan"
  ) +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Interpretasi

  • Grafik menunjukkan perubahan probabilitas untuk tiga kategori tingkat kepuasan pelanggan terhadap kebersihan restoran berdasarkan jumlah staf kebersihan.

  • Ketika jumlah staf rendah (2–3 orang), probabilitas pelanggan merasa Tidak Puas (garis biru) sangat tinggi, sementara probabilitas Sangat Puas (garis hijau) sangat rendah.

  • Saat jumlah staf meningkat, probabilitas persepsi “Tidak Puas” menurun tajam, sementara kategori “Cukup Puas” (garis merah) meningkat. Setelah jumlah staf melewati 4–5 orang, probabilitas “Sangat Puas” mulai meningkat secara signifikan.

  • Pada jumlah staf ≥6, “Sangat Puas” menjadi persepsi yang paling dominan di antara pelanggan.

  • Maka, dapat disimpulkan peningkatan jumlah staf kebersihan secara nyata meningkatkan peluang pelanggan merasa lebih puas terhadap kebersihan restoran.

11.7 Goodness-of-Fit dan Proportional Odds

Model cumulative logit (seperti yang digunakan dalam fungsi polr) mengasumsikan bahwa efek dari prediktor tetap konstan di seluruh batas antar kategori. Artinya, perubahan nilai prediktor (jumlah staf kebersihan) dianggap memberi pengaruh yang sama antara:

  1. “Tidak Puas” ke “Cukup Puas”

  2. dan “Cukup Puas” ke “Sangat Puas”

Jika asumsi ini tidak terpenuhi, maka hasil interpretasi model bisa menjadi bias.

Salah satu solusi jika asumsi proportional odds ini tidak berlaku adalah dengan mempertimbangkan model alternatif yang tidak mengasumsikan proportional odds, seperti:

  • Generalized Ordered Logit Model (GOLM)

  • Partial Proportional Odds Model.

11.8 Model Ordinal Alternatif

Apabila asumsi pada model cumulative logit tidak terpenuhi, terdapat beberapa opsi model ordinal lain yang dapat digunakan untuk menganalisis hubungan antara jumlah staf kebersihan dan tingkat kepuasan pelanggan, antara lain:

  • Adjacent-Category Logit: Model ini membandingkan probabilitas antar kategori yang berdekatan, seperti membandingkan kemungkinan “Tidak Puas” dengan “Cukup Puas”, lalu “Cukup Puas” dengan “Sangat Puas” secara bertahap.

  • Continuation-Ratio Logit: Cocok untuk data yang memiliki sifat berjenjang atau progresif, di mana transisi antar tingkat kepuasan terjadi secara bertahap, mirip seperti tahapan dalam perkembangan penyakit.

  • Generalized Ordered Logit: Memberikan fleksibilitas lebih karena memungkinkan koefisien regresi berbeda untuk setiap batas antar kategori, sehingga dapat mengatasi pelanggaran asumsi proportional odds pada model cumulative logit.

Pemilihan model alternatif ini harus disesuaikan dengan karakteristik data dan kebutuhan analisis yang ingin dicapai.

11.9 Kesimpulan

Berdasarkan analisis dengan regresi logistik ordinal, diperoleh bahwa jumlah staf kebersihan (STAF_KEBERSIHAN) memiliki koefisien positif sebesar 2.129, dengan t-value sebesar 8.526. Nilai ini menunjukkan bahwa variabel tersebut sangat signifikan secara statistik dalam menjelaskan tingkat kepuasan pelanggan terhadap kebersihan restoran, dengan p-value yang mendekati 0.

Selain itu, intersep pada batas kategori juga signifikan, masing-masing sebesar 7.8172 untuk transisi dari “Tidak Puas” ke “Cukup Puas”, dan 12.3764 untuk peralihan dari “Cukup Puas” ke “Sangat Puas”, dengan t-value di atas 8 untuk masing-masing batas. Ini mengindikasikan bahwa terdapat perbedaan yang jelas dalam tingkat kepuasan antar kategori.

Secara keseluruhan, hasil model ini menguatkan bahwa dengan bertambahnya satu orang staf kebersihan, kemungkinan pelanggan memberikan penilaian yang lebih tinggi terhadap kebersihan restoran juga meningkat secara signifikan. Dengan nilai Residual Deviance sebesar 152.746 dan AIC sebesar 158.746, model ini dapat dianggap memiliki kebaikan penyesuaian yang cukup baik, dan dapat dimanfaatkan untuk membantu perencanaan kebutuhan staf kebersihan di restoran secara lebih optimal.

11.10 Asumsi Paralel dalam Regresi Logistik Ordinal

Dalam analisis regresi logistik ordinal, salah satu pendekatan yang paling umum digunakan adalah Model Logit Kumulatif (Cumulative Logit Model) yang berlandaskan pada asumsi Odds Proporsional.

Apa yang Dimaksud dengan Asumsi Paralel?
Asumsi paralel, atau dikenal juga dengan istilah parallel lines assumption, menyatakan bahwa pengaruh prediktor (\(\beta\)) harus seragam di seluruh batas kategori pada variabel respon ordinal. Ini berarti bahwa perubahan satu unit pada variabel prediktor memberikan dampak yang sama terhadap peluang kumulatif di setiap level kategori respon.

Model ini dapat dirumuskan secara matematis sebagai berikut:

\[ \log\left( \frac{P(Y \leq j)}{P(Y > j)} \right) = \alpha_j + \beta x \]

Untuk \(j = 1, \dotsc, c - 1\), dengan:

  • \(\alpha_j\) = intersep yang berbeda untuk setiap ambang kategori,

  • \(\beta\) = koefisien yang bersifat tetap di semua persamaan.

Asumsi ini penting agar interpretasi model tetap valid dan dapat dipercaya. Apabila asumsi paralel tidak terpenuhi, penggunaan model cumulative logit menjadi kurang tepat, dan perlu dipertimbangkan untuk menggunakan model alternatif seperti generalized ordered logit.

Ilustrasi Visual

Ketika asumsi paralel terpenuhi, garis logit kumulatif yang menggambarkan hubungan antara kategori respon ordinal dan variabel prediktor akan sejajar satu sama lain. Perbedaan antar garis hanya terjadi pada nilai intersep (posisi titik potong pada sumbu), sementara kemiringan garis tetap identik di semua kategori.

Apa yang Terjadi Jika Asumsi Dilanggar?

Apabila asumsi paralel tidak terpenuhi:

  • Pengaruh variabel prediktor dapat berbeda untuk setiap transisi antar kategori.

  • Model yang dihasilkan berpotensi mengalami bias sehingga interpretasi menjadi tidak valid.

Maka diperlukan pendekatan model lain seperti:

  • Generalized Ordered Logit Model

  • Partial Proportional Odds Model

Pengujian Asumsi Paralel

Untuk memastikan apakah asumsi ini berlaku, dapat dilakukan beberapa metode pengujian, di antaranya:

  • Likelihood Ratio Test (LRT), dengan membandingkan model yang mengasumsikan odds proporsional dengan model yang tidak.

  • Brant Test, yang dapat diimplementasikan menggunakan paket brant di perangkat lunak R.

Contoh Implematansi di R :

library(MASS) 
library(brant) 
 
# Simulasi data dan fitting model ordinal 
set.seed(321) 
dat <- data.frame( 
y_ord = factor(sample(c("Rendah", "Sedang", "Tinggi"), 150, replace = TRUE)
 , ordered = TRUE), 
x1 = rnorm(150), 
x2 = runif(150) 
) 
# Model ordinal logit 
model_ordinal <- polr(y_ord ~ x1 + x2, data = dat, Hess = TRUE) 
151 
## [1] 151
# Uji Brant 
brant(model_ordinal) 
## -------------------------------------------- 
## Test for X2  df  probability 
## -------------------------------------------- 
## Omnibus      1.67    2   0.43
## x1       0.01    1   0.91
## x2       1.65    1   0.2
## -------------------------------------------- 
## 
## H0: Parallel Regression Assumption holds

Kesimpulan

Asumsi paralel memiliki peran krusial dalam menjaga validitas model logit kumulatif. Dengan mengasumsikan bahwa pengaruh variabel prediktor tetap konsisten di seluruh batas kategori, model menjadi lebih sederhana dan mudah diinterpretasikan. Namun, apabila asumsi ini tidak terpenuhi, penggunaan model yang lebih fleksibel perlu dipertimbangkan agar hasil analisis tetap akurat dan dapat memberikan kesimpulan yang dapat dipercaya.

12. Log Linear Model

Analisis data kategorik berperan penting dalam statistik terapan karena banyak fenomena di dunia nyata menghasilkan data dalam bentuk kategori, seperti jenis kelamin, status pekerjaan, dan tingkat pendidikan.

Pendekatan statistik yang umum digunakan dalam analisis data kategorik meliputi:

  1. Tabel Kontingensi Digunakan untuk eksplorasi hubungan antar dua atau lebih variabel kategorik dengan cara menyajikan frekuensi gabungan. Tabel ini bisa dilengkapi dengan uji asosiasi seperti chi-square untuk mengetahui hubungan antar variabel.

  2. Model Log-linear Digunakan untuk menganalisis struktur asosiasi dari tabel kontingensi tanpa variabel dependen. Model ini cocok untuk memahami interaksi antar variabel kategorik dan dapat diuji menggunakan likelihood ratio test.

  3. Model Regresi Logistik Cocok digunakan saat ada variabel kategorik sebagai variabel dependen (contoh: sakit/tidak). Model ini memodelkan peluang terjadinya suatu kejadian (log odds) berdasarkan variabel independen dan dapat diperluas menjadi regresi logistik multinomial atau ordinal.

Perbandingan

  • Tabel kontingensi: bersifat deskriptif dan eksploratif.
  • Model log-linear: fokus pada struktur asosiasi variabel.
  • Regresi logistik: fokus pada prediksi terhadap kategori outcome.

Kesimpulan

Pemilihan pendekatan tergantung pada tujuan analisis: apakah untuk deskripsi, eksplorasi struktur, atau prediksi. Kombinasi pendekatan sering digunakan untuk pemahaman yang lebih komprehensif terhadap data kategorik.

Tabel Kontingensi

Tabel kontingensi menyajikan jumlah frekuensi dari kombinasi kategori antar variabel.

Contoh:

table_data <- matrix(c(30, 20, 50, 70), nrow=2, 
       dimnames = list(Obat = c("Timolol", "Placebo"),
                       Serangan = c("Ya", "Tidak")))
table_data
##          Serangan
## Obat      Ya Tidak
##   Timolol 30    50
##   Placebo 20    70

Tabel kontingensi bersifat deskriptif dan tidak melibatkan pemodelan probabilitas.

Model Loglinear

Model loglinear memodelkan logaritma dari ekspektasi frekuensi sel dalam tabel kontingensi.

\[ \log(\mu_{ij}) = \lambda + \lambda_i^{A} + \lambda_j^{B} + \lambda_{ij}^{AB} \]

  • Cocok untuk menyelidiki asosiasi dan independensi antar variabel.
  • Tidak membedakan antara variabel respon dan penjelas.
  • Umumnya digunakan pada tabel multi-dimensi (2 arah, 3 arah, dst).
library(MASS)
loglm(~ Obat * Serangan, data = table_data)
## Call:
## loglm(formula = ~Obat * Serangan, data = table_data)
## 
## Statistics:
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  0        1
## Pearson            0  0        1

Model Regresi Logistik

Model regresi logistik biner:

\[ \log\left( \frac{p}{1 - p} \right) = \beta_0 + \beta_1 x \]

  • Digunakan jika ada variabel dependen kategorik (biasanya biner).

  • Bertujuan untuk memprediksi probabilitas suatu outcome.

  • Umumnya digunakan dalam studi observasional atau eksperimental. Contoh:

data_glm <- data.frame(
  Serangan = c(1, 0, 1, 0),
  Obat = factor(c("Timolol", "Timolol", "Placebo", "Placebo")),
  Frek = c(30, 20, 50, 70)
)
model_logit <- glm(Serangan ~ Obat, weights = Frek, family = binomial, data = data_glm)
summary(model_logit)
## 
## Call:
## glm(formula = Serangan ~ Obat, family = binomial, data = data_glm, 
##     weights = Frek)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)  -0.3365     0.1852  -1.817   0.0692 .
## ObatTimolol   0.7419     0.3430   2.163   0.0305 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 235.08  on 3  degrees of freedom
## Residual deviance: 230.31  on 2  degrees of freedom
## AIC: 234.31
## 
## Number of Fisher Scoring iterations: 4
Aspek Tabel Kontingensi Model Loglinear Regresi Logistik
Tujuan Deskripsi frekuensi Deteksi asosiasi Prediksi probabilitas
Variabel Dependen Tidak ada Tidak ada (simetris) Ada (eksplisit)
Distribusi Tidak diasumsikan Poisson (frekuensi sel) Binomial (probabilitas)
Bentuk Model Tidak ada GLM: log(μ) ~ efek GLM: logit(p) ~ prediktor
Cocok untuk Eksplorasi awal Tabel > 2 variabel Studi prediktif
12.1 Tabel Kontigensi dan Model Loglinier

Tabel kontingensi menyajikan frekuensi dari kombinasi kategori antar dua atau lebih variabel. Misal:

# Contoh tabel 2x2
matrix(c(45, 35, 25, 55), nrow = 2,
       dimnames = list(Vaksin = c("Vaksin A", "Vaksin B"),
                       Status = c("Positif", "Negatif")))
##           Status
## Vaksin     Positif Negatif
##   Vaksin A      45      25
##   Vaksin B      35      55

Model log-linier untuk tabel I x J dapat dituliskan: \[ \log(\mu_{ij}) = \lambda + \lambda_i^{T} + \lambda_j^{R} + \lambda_{ij}^{TR} \]

12.2 Model Saturated

Model saturated atau model penuh menyertakan seluruh efek utama dan interaksi:

  • Cocok sempurna terhadap data

  • Tidak mengasumsikan independensi antar variabel Contoh formulasi untuk tabel 2x2:

# Data
library(MASS)
data <- matrix(c(45, 35, 25, 55), nrow = 2, byrow = TRUE)
dimnames(data) <- list(Vaksin = c("Vaksin A", "Vaksin B"),
                       Status = c("Positif", "Negatif"))
ftable(data)
##          Status Positif Negatif
## Vaksin                         
## Vaksin A             45      35
## Vaksin B             25      55

Model saturated dapat dipasang dengan loglm dari package {MASS}:

model_saturated <- loglm(~ Vaksin * Status, data = data)
summary(model_saturated)
## Formula:
## ~Vaksin * Status
## attr(,"variables")
## list(Vaksin, Status)
## attr(,"factors")
##        Vaksin Status Vaksin:Status
## Vaksin      1      0             1
## Status      0      1             1
## attr(,"term.labels")
## [1] "Vaksin"        "Status"        "Vaksin:Status"
## attr(,"order")
## [1] 1 1 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  0        1
## Pearson            0  0        1
12.3 Model Independent

Model independen mengasumsikan bahwa tidak ada interaksi antara variabel: \[ \log(\mu_{ij}) = \lambda + \lambda_i^{T} + \lambda_j^{R} \]

Model ini menguji hipotesis bahwa variabel X dan Y saling independen.

model_indep <- loglm(~ Vaksin + Status, data = data)
summary(model_indep)
## Formula:
## ~Vaksin + Status
## attr(,"variables")
## list(Vaksin, Status)
## attr(,"factors")
##        Vaksin Status
## Vaksin      1      0
## Status      0      1
## attr(,"term.labels")
## [1] "Vaksin" "Status"
## attr(,"order")
## [1] 1 1
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                       X^2 df    P(> X^2)
## Likelihood Ratio 10.27645  1 0.001347387
## Pearson          10.15873  1 0.001436195
12.4 Odds Ratio dan Interpretasi

Odds ratio untuk tabel 2x2:

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

Interpretasi nilai OR:

  • OR = 1: Tidak ada asosiasi

  • OR > 1: Asosiasi positif

  • OR < 1: Asosiasi negatif

# Hitung OR manual 
OR_manual <- (data[1,1] * data[2,2]) / (data[1,2] * data[2,1]) 
OR_manual 
## [1] 2.828571
12.5 Estimasi Parameter

Dalam model saturated:

  • Estimasi dilakukan dengan pembatasan seperti sum-to-zero

  • Estimasi parameter dilakukan dengan iterative proportional fitting (IPF)

# Estimasi odds ratio dan log-odds
logOR <- log((data[1,1] * data[2,2]) / (data[1,2] * data[2,1]))
logOR
## [1] 1.039772
12.6 Perbandingan Model: Sederhana vs Saturated

Perbandingan antar model dilakukan dengan menggunakan statistik deviance (G²) atau likelihood ratio test.

anova(model_indep, model_saturated)
## LR tests for hierarchical log-linear models
## 
## Model 1:
##  ~Vaksin + Status 
## Model 2:
##  ~Vaksin * Status 
## 
##           Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1   10.27645  1                                    
## Model 2    0.00000  0   10.27645         1        0.00135
## Saturated  0.00000  0    0.00000         0        1.00000
Studi Kasus: Tingkat Pendidikan dan Bekerja dari Rumah

Studi dari Bureau of Labor Statistics (2023) membahas hubungan antara tingkat pendidikan dan kemungkinan bekerja dari rumah.

Sumber : U.S. Bureau of Labor Statistics – American Time Use Survey 2023

data_survey <- matrix(c(
  85, 11,     # Less than high school diploma
  85, 22,     # High school graduates, no college
  79, 26,     # Some college or associate degree
  57, 52      # Bachelor's degree or higher
), nrow = 4, byrow = TRUE,
dimnames = list(
  Pendidikan = c("<High School", "High School Grad", "Some College", "Bachelor+"),
  Kerja = c("Workplace", "Work from Home")
))
ftable(data_survey)
##                  Kerja Workplace Work from Home
## Pendidikan                                     
## <High School                  85             11
## High School Grad              85             22
## Some College                  79             26
## Bachelor+                     57             52
# Model saturated 
model_saturated <- loglm(~ Pendidikan * Kerja, data = data_survey) 
 
# Ringkasan model 
summary(model_saturated) 
## Formula:
## ~Pendidikan * Kerja
## attr(,"variables")
## list(Pendidikan, Kerja)
## attr(,"factors")
##            Pendidikan Kerja Pendidikan:Kerja
## Pendidikan          1     0                1
## Kerja               0     1                1
## attr(,"term.labels")
## [1] "Pendidikan"       "Kerja"            "Pendidikan:Kerja"
## attr(,"order")
## [1] 1 1 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  0        1
## Pearson            0  0        1
# Model independen 
model_independen <- loglm(~ Pendidikan + Kerja, data = data_survey) 
 
# Ringkasan model 
summary(model_independen) 
## Formula:
## ~Pendidikan + Kerja
## attr(,"variables")
## list(Pendidikan, Kerja)
## attr(,"factors")
##            Pendidikan Kerja
## Pendidikan          1     0
## Kerja               0     1
## attr(,"term.labels")
## [1] "Pendidikan" "Kerja"     
## attr(,"order")
## [1] 1 1
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                       X^2 df     P(> X^2)
## Likelihood Ratio 37.75035  3 3.192235e-08
## Pearson          38.30643  3 2.434238e-08
# Perbandingan model 
anova(model_independen, model_saturated) 
## LR tests for hierarchical log-linear models
## 
## Model 1:
##  ~Pendidikan + Kerja 
## Model 2:
##  ~Pendidikan * Kerja 
## 
##           Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1   37.75035  3                                    
## Model 2    0.00000  0   37.75035         3              0
## Saturated  0.00000  0    0.00000         0              1
# Menghitung odds ratio antara <High School> dan Bachelor+ 
OR <- (data_survey["<High School", "Workplace"] * data_survey["Bachelor+", "Work from Home"]) / 
      (data_survey["<High School", "Work from Home"] * data_survey["Bachelor+", "Workplace"]) 
OR
## [1] 7.049442

Berdasarkan hasil analisis log-linear:

Pengujian Perbandingan Model:

  • Model independen, yang tidak mempertimbangkan adanya interaksi antara tingkat pendidikan dan status kerja, menghasilkan nilai Deviance sebesar 37.75 dengan p-value ≈ 3.19 × 10⁻⁸. Nilai ini menunjukkan bahwa model tersebut tidak mampu menggambarkan data dengan baik secara signifikan.

  • Sebaliknya, model saturated, yang mencakup interaksi antara variabel Pendidikan dan Kerja, menunjukkan Deviance sebesar 0, menandakan kecocokan sempurna terhadap data.

  • Perbedaan nilai Deviance antara kedua model sebesar 37.75 dengan p-value = 0, mengindikasikan bahwa interaksi antara tingkat pendidikan dan status bekerja dari rumah adalah signifikan. Dengan kata lain, tingkat pendidikan seseorang berkorelasi kuat dengan kecenderungan untuk bekerja dari rumah.

Hasil Perhitungan Odds Ratio: – Odds Ratio (OR) antara kelompok dengan pendidikan <High School dan Bachelor+ terhadap status bekerja dari rumah adalah sebesar 7.05. Sehingga dapat disimpulkan bahwa individu dengan tingkat pendidikan di bawah SMA memiliki kemungkinan sekitar 7 kali lebih besar untuk bekerja di kantor dibandingkan dengan individu yang berpendidikan sarjana atau lebih tinggi, yang cenderung lebih banyak bekerja dari rumah.

Hasil ini memperlihatkan adanya hubungan kuat antara tingkat pendidikan dan jenis tempat kerja. Selain signifikan secara statistik, asosiasi ini juga memiliki dampak praktis yang cukup besar, seperti tercermin dari nilai odds ratio yang tinggi. Hasil ini menegaskan pentingnya mempertimbangkan efek interaksi dalam menganalisis data kategorik terkait status kerja.

Referensi

  • Agresti, A. (2002). Categorical Data Analysis. John Wiley & Sons

  • Astuti, A. B., Efendi, A., Astutik, S., & Sumarminingsih, E. (2020). Analisis Data Kategorik Menggunakan R: Teori dan Aplikasinya pada Berbagai Bidang. Universitas Brawijaya Press.

  • Maryana, M. (2013). Model Log Linier yang Terbaik untuk Analisis Data Kualitatif pada Tabel Kontingensi Tiga Arah. Industrial Engineering Journal, 2(2).

  • Sudjana, N. (2005). Metoda Statistika. Tarsito.

  • Satria, T. A. I., Imro’ah, N., & Huda, N. A. M. (2023). Penerapan Model Log Linier Dalam Menganalisis Tabel Kontingensi Dua Arah. BIMASTER: Buletin Ilmiah Matematika, Statistika dan Terapannya, 12(6).

  • Szumilas, M. (2010). Explaining odds ratios. Journal of the Canadian Academy of Child and Adolescent Psychiatry, 19(3), 227–229.

  • Sumber Data https://www.bls.gov/charts/american-time-use/work-by-ftpt-job-edu-p.htm

  • Mujiyana, M., & Elissa, I. (2013). Analisis faktor-faktor yang mempengaruhi keputusan pembelian via internet pada toko online. J@ TI Undip: Jurnal Teknik Industri, 8(3), 143-152.

  • Setyawati, D. U., Korida, B. D., & Febrilia, B. R. A. (2020). Analisis Regresi Logistik Ordinal Faktor-Faktor yang Mempengaruhi IPK Mahasiswa. Jurnal Varian, 3(2), 65-72.

  • Christensen, R. (2006). Log-linear models and logistic regression. Springer Science & Business Media.