BAB 1. Pendahuluan

Dalam era digital dan perkembangan teknologi informasi yang pesat, data menjadi salah satu sumber daya paling berharga dalam pengambilan keputusan di berbagai sektor. Data tidak hanya hadir dalam bentuk angka atau nilai kontinu, tetapi juga dalam bentuk kategori-kategori tertentu yang merepresentasikan atribut, karakteristik, atau kelas dari suatu fenomena.

Data yang berbentuk kategori inilah yang dikenal dengan istilah data kategorik. Contoh sederhana yang kita temui sehari-hari antara lain: jenis kelamin (laki-laki atau perempuan), status perkawinan (menikah atau belum menikah), tingkat kepuasan pelanggan (sangat puas, puas, tidak puas), hingga jenis produk yang dipilih konsumen.

Namun, data kategorik memiliki karakteristik khusus sehingga memerlukan pendekatan analisis yang berbeda dengan data numerik. Tidak bisa dihitung rata-rata atau standar deviasinya seperti data kuantitatif, data kategorik dianalisis menggunakan teknik yang fokus pada hubungan antar kategori, distribusi frekuensi, dan prediksi kejadian berdasarkan kelas data tertentu.

Oleh karena itu, Analisis Data Kategorik (ADK) hadir sebagai solusi utama untuk memahami data yang bersifat non-numerik ini. Dengan menggunakan ADK, peneliti dan praktisi dapat menggali lebih dalam pola, tren, serta keterkaitan antar kategori dalam suatu data

1.1 Tujuan Analisis Data Kategori

Analisis data kategori memiliki berbagai tujuan utama yang membantu dalam pengambilan keputusan berbasis data. Dalam konteks ekologi, analisis ini sering digunakan untuk memahami kondisi lingkungan dan faktor-faktor yang memengaruhinya. Beberapa tujuan utama dari analisis ini meliputi:

1.1.1 Mengidentifikasi Pola dan Tren

Analisis data kategori memungkinkan peneliti untuk mengidentifikasi pola-pola tersembunyi dalam data lingkungan. Misalnya, dalam studi kualitas air sungai, analisis ini dapat digunakan untuk melihat pola tingkat pencemaran berdasarkan jenis penggunaan lahan di sekitar sungai (pemukiman, industri, pertanian).

1.1.2 Menganalisis Hubungan Antarvariabel

Hubungan antara dua atau lebih variabel kategori sering menjadi fokus dalam penelitian ekologi. Misalnya, kita dapat menganalisis hubungan antara jenis sistem pengelolaan sampah (terbuka, terorganisir, bank sampah) dengan status mutu air sungai (baik, sedang, buruk).

1.1.3 Membantu dalam Pengambilan Keputusan

Dengan memahami pola dan hubungan dalam data kategori, pengambil keputusan dapat menetapkan strategi yang tepat. Sebagai contoh, dalam penyusunan kebijakan lingkungan kota, analisis ini dapat membantu menentukan kawasan mana yang perlu prioritas pembangunan infrastruktur pengelolaan limbah berdasarkan kategori kepadatan penduduk dan kondisi air sungai.

1.1.4 Mengembangkan Model Prediktif

Model prediktif berbasis data kategori dapat digunakan untuk memperkirakan risiko lingkungan. Contohnya, regresi logistik dapat digunakan untuk memprediksi kemungkinan suatu daerah mengalami pencemaran berat berdasarkan kategori penggunaan lahan, status ekonomi wilayah, dan kepadatan penduduk.

1.2 Definisi dan Ruang Lingkup Analisis Data Kategori

Analisis data kategori adalah cabang statistik yang digunakan untuk menganalisis variabel-variabel yang diklasifikasikan dalam bentuk kategori atau label, bukan angka kontinu. Dalam konteks lingkungan hidup, data kategori sering digunakan untuk mendeskripsikan status kualitas lingkungan, jenis habitat, atau kategori tindakan konservasi.

Misalnya: - Status mutu air sungai: baik, sedang, buruk (bukan angka tapi label). - Jenis penggunaan lahan: pertanian, industri, pemukiman.

1.2.1 Nominal vs Ordinal

1.2.1.1 Nominal

Nominal digunakan ketika kategori hanya berfungsi sebagai penanda, tanpa tingkatan logis di antaranya. - Kategori tanpa urutan atau peringkat. - Contoh: - Warna air: bening, keruh, berminyak - Jenis ekosistem: hutan bakau, terumbu karang, padang lamun

1.2.1.2 Ordinal

Ordinal cocok untuk data survei lingkungan atau pengamatan lapangan yang dinilai berdasarkan skala subjektif. - Kategori dengan urutan logis atau tingkatan yang bermakna. - Contoh: - Status mutu udara: baik, sedang, buruk - Tingkat kerusakan lingkungan: ringan, sedang, berat

1.2.2 Data Biner vs Multikategori

1.2.2.1 Biner

Data biner sangat berguna dalam analisis prediktif seperti regresi logistik. - Hanya terdiri dari dua kategori yang saling eksklusif. - Contoh: - Sungai tercemar: ya atau tidak - Zona konservasi: dilindungi atau tidak dilindungi

1.2.2.2 Multikategori

Multikategori memungkinkan eksplorasi lebih kaya dalam klasifikasi dan perbandingan antar wilayah atau fenomena lingkungan. - Terdiri dari lebih dari dua kategori. - Contoh: - Jenis sumber pencemar: domestik, industri, pertanian - Tingkat kerentanan ekosistem: rendah, sedang, tinggi

1.3 Perbedaan dengan Data Kuantitatif

Data kategori berbeda dengan data kuantitatif karena tidak mewakili nilai numerik dalam skala kontinu. Artinya: - Data kuantitatif dapat dihitung rata-rata dan standar deviasi (misalnya: suhu udara, konsentrasi BOD). - Data kategori tidak bisa dihitung rata-rata secara langsung, tetapi dianalisis dalam bentuk frekuensi, proporsi, atau perbandingan antar kategori.

Contoh: - Jika kita ingin mengetahui berapa banyak provinsi yang memiliki kualitas air sungai dalam kategori buruk, kita tidak menghitung rata-rata mutu, melainkan jumlah provinsi dalam kategori tersebut.

1.4 Manfaat Analisis Data Kategori dalam Berbagai Bidang

Analisis data kategori memiliki manfaat luas dalam berbagai bidang, baik di sektor akademik maupun industri. Berikut adalah beberapa bidang utama di mana analisis ini banyak diterapkan:

1.4.1 Ilmu Sosial dan Psikologi

Dalam ilmu sosial dan psikologi, analisis data kategori digunakan untuk memahami perilaku manusia, opini publik, dan faktor sosial lainnya. Misalnya:

  • Survei kepuasan pelanggan menggunakan skala Likert (sangat puas hingga sangat tidak puas).
  • Studi tentang hubungan antara faktor sosial-ekonomi dan tingkat pendidikan seseorang.
  • Penelitian tentang efek terapi psikologis terhadap kelompok pasien tertentu.

1.4.2 Kesehatan dan Kedokteran

Dalam bidang kesehatan, analisis data kategori sangat penting dalam epidemiologi dan studi klinis. Contohnya:

  • Mengkategorikan pasien berdasarkan status kesehatan (sehat/sakit/kronis).
  • Menilai efektivitas pengobatan berdasarkan jenis terapi yang diterima pasien.
  • Menganalisis faktor risiko penyakit berdasarkan gaya hidup dan karakteristik pasien.

1.4.3 Pemasaran dan Bisnis

Dalam pemasaran dan bisnis, data kategori digunakan untuk memahami preferensi pelanggan, segmentasi pasar, dan efektivitas strategi pemasaran. Beberapa penerapan meliputi:

  • Menentukan preferensi pelanggan terhadap merek tertentu (menyukai/tidak menyukai/netral).
  • Analisis segmentasi pelanggan berdasarkan usia, jenis kelamin, dan lokasi geografis.
  • Studi tentang loyalitas pelanggan berdasarkan tingkat kepuasan layanan.

1.4.4 Pendidikan

Dalam dunia pendidikan, analisis data kategori berguna dalam mengevaluasi metode pengajaran, tingkat kepuasan mahasiswa, dan efektivitas kurikulum. Contohnya:

  • Survei kepuasan mahasiswa terhadap metode pengajaran dosen.
  • Analisis hubungan antara latar belakang sosial-ekonomi dan prestasi akademik.
  • Studi tentang efektivitas program pembelajaran berbasis teknologi.

1.4.5 Kebijakan Publik dan Pemerintahan

Pemerintah sering menggunakan analisis data kategori untuk memahami kebutuhan masyarakat dan merancang kebijakan yang lebih efektif. Beberapa penerapan termasuk:

  • Analisis tingkat kepuasan masyarakat terhadap layanan publik.
  • Studi tentang tingkat partisipasi masyarakat dalam pemilu.
  • Evaluasi efektivitas program bantuan sosial berdasarkan kategori penerima manfaat.

1.4.6 Keamanan dan Kriminalitas

Dalam bidang keamanan dan analisis kriminal, data kategori digunakan untuk memahami pola kejahatan dan merancang strategi pencegahan. Contohnya:

  • Analisis kategori jenis kejahatan yang paling sering terjadi di suatu wilayah.
  • Studi tentang faktor demografis yang berkorelasi dengan tingkat kriminalitas.
  • Evaluasi efektivitas kebijakan penegakan hukum terhadap berbagai kategori pelanggaran.

BAB 2. Metode dalam Analisis Data Kategori

2 Metode dalam Analisis Data Kategori

Berbagai metode dapat digunakan dalam analisis data kategori, tergantung pada tujuan penelitian. Beberapa metode umum meliputi:

2.1 Tabel Kontingensi dan Uji Chi-Square

  • Digunakan untuk menguji hubungan antara dua variabel kategori.
  • Contohnya, menguji apakah ada hubungan antara tingkat pendidikan dan status pekerjaan.

2.2 Regresi Logistik

  • Digunakan untuk memprediksi probabilitas suatu kejadian berdasarkan variabel kategori.
  • Contohnya, memprediksi apakah seorang pelanggan akan membeli produk berdasarkan kategori preferensi mereka.

2.3 Analisis Correspondence (CA)

  • Digunakan untuk memahami hubungan antara berbagai kategori dalam satu dataset.
  • Contohnya, analisis tentang preferensi makanan berdasarkan kelompok usia.

2.4 Decision Tree dan Random Forest

  • Metode machine learning yang sering digunakan untuk klasifikasi berbasis kategori.
  • Contohnya, mengklasifikasikan pelanggan berdasarkan tingkat loyalitas mereka.

Analisis data kategori merupakan bagian penting dari analisis statistik yang memiliki aplikasi luas dalam penelitian sosial, ekonomi, kesehatan, dan bisnis. Dengan memilih metode yang tepat, analisis ini dapat membantu dalam memahami pola, hubungan, dan tren dalam data yang bersifat kategori. Selain itu, metode analisis data kategori seperti decision tree, uji chi-square, regresi logistik, dan machine learning terus berkembang seiring dengan kemajuan teknologi, memungkinkan pengambilan keputusan yang lebih akurat dan berbasis data.

Dalam praktiknya, pemilihan metode yang tepat dalam analisis data kategori sangat penting bagi peneliti, praktisi bisnis, dan pembuat kebijakan, agar hasil penelitian dan berbagai disiplin ilmu untuk menghasilkan wawasan yang lebih bernilai, relevan, dan penyelesaian yang lebih tepat.

BAB 3. Distribusi Probabilitas dalam Data Kategori

Distribusi probabilitas dalam konteks data kategorik berfungsi untuk menggambarkan peluang munculnya kategori tertentu dari suatu variabel acak. Dalam statistik, variabel acak kategorik hanya dapat mengambil beberapa nilai yang diskrit dan terbatas. Oleh karena itu, digunakan berbagai macam distribusi yang dirancang khusus untuk menangani bentuk data ini, antara lain:

3.1 Distribusi Bernoulli

Distribusi Bernoulli digunakan untuk merepresentasikan percobaan biner (dua hasil saja), yaitu:

  • Sukses (1) dengan probabilitas \(p\)

  • Gagal (0) dengan probabilitas \(1 - p\)

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

Karakteristik:

  • Ekspektasi: \[E(X) = p\]
  • Variansi: \[\text{Var}(X) = p(1 - p)\]

Keterangan: \(p\): probabilitas sukses (nilai 1) \(x\): nilai hasil percobaan (0 atau 1)

Contoh Kasus: Menentukan apakah seorang pelanggan membeli produk atau tidak (1 = Ya, 0 = Tidak), dengan peluang membeli \(p = 0.4\).

library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.3.3
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(dplyr)
library(dplyr)
library(broom)
## Warning: package 'broom' was built under R version 4.3.3
library(ggplot2)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.3
## Warning: package 'readr' was built under R version 4.3.3
## Warning: package 'purrr' was built under R version 4.3.3
## Warning: package 'stringr' was built under R version 4.3.3
## Warning: package 'forcats' was built under R version 4.3.3
## Warning: package 'lubridate' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ lubridate 1.9.3     ✔ stringr   1.5.1
## ✔ purrr     1.0.2     ✔ tibble    3.2.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter()          masks stats::filter()
## ✖ kableExtra::group_rows() masks dplyr::group_rows()
## ✖ dplyr::lag()             masks stats::lag()
## ✖ vcdExtra::summarise()    masks dplyr::summarise()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(broom)
library(knitr)
library(kableExtra)
library(ggplot2)
library(ResourceSelection)
## Warning: package 'ResourceSelection' was built under R version 4.3.3
## ResourceSelection 0.3-6   2023-06-27
set.seed(123) 
bernoulli_sample <- rbinom(n = 10, size = 1, prob = 0.4) 
bernoulli_sample
##  [1] 0 1 0 1 1 0 0 1 0 0

3.2 Distribusi Binomial

Distribusi Binomial adalah perluasan dari distribusi Bernoulli untuk \(n\) percobaan independen dengan dua hasil.

Fungsi Probabilitas (PMF) \[ P(X = k) = \binom{n}{k} p^k (1 - p)^{n - k} \]

Karakteristik: - Ekspektasi: \[E(X) = np\] - Variansi: \[\text{Var}(X) = np(1 - p)\]

Keterangan: - \(n\): jumlah percobaan
- \(k\): banyaknya keberhasilan
- \(p\): probabilitas sukses per percobaan

Contoh Kasus: Dalam 5 kali promosi kepada calon pembeli, tentukan distribusi jumlah yang membeli jika peluang membeli adalah 0.4.

set.seed(123) 
binomial_sample <- rbinom(n = 10, size = 5, prob = 0.4) 
binomial_sample
##  [1] 1 3 2 3 4 0 2 3 2 2

3.3 Distribusi Multinomial

Distribusi Multinomial memperluas binomial ketika ada lebih dari dua hasil dalam satu percobaan.

Fungsi Probabilitas (PMF)

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

Karakteristik: - jumlah total kejadian: \[\sum x_i = n\] - jumlah probabilitas: \[\sum p_i = 1\] - Ekspektasi: \[E(X_i) = np_i\] - Variansi: \[\text{Var}(X_i) = np_i(1 - p_i)\]

Keterangan: - \(n\): total percobaan - \(x_i\): jumlah kategori ke-i - \(p_i\): probabilitas kategori ke-i

Contoh Kasus: Sebuah toko menjual tiga jenis minuman kemasan: Teh (40%), Kopi (35%), dan Jus (25%). Seorang pelanggan mengambil 12 botol secara acak dari lemari pendingin. Tentukan probabilitas dan hasil pengambilan secara acak sesuai proporsi tersebut.

set.seed(123)
multinomial_sample <- rmultinom(n = 1, size = 10, prob = c(0.4, 0.35, 0.25))
multinomial_sample
##      [,1]
## [1,]    3
## [2,]    3
## [3,]    4

Interpretasi: Hasil simulasi menunjukkan banyaknya botol yang diambil untuk setiap jenis minuman. Misalnya, output: - Teh = 3 botol - Kopi = 3 botol - Jus = 4 botol

Meskipun ada variasi karena proses acak, hasil ini mencerminkan proporsi probabilitas yang telah ditentukan. Distribusi multinomial sangat cocok digunakan untuk model distribusi kategori seperti preferensi konsumen, distribusi pemilih dalam survei, atau hasil klasifikasi dengan lebih dari dua kelas.

3.4 Distribusi Poisson

Distribusi Poisson digunakan untuk menghitung jumlah kejadian dalam interval waktu atau ruang tertentu dengan rata-rata kejadian \(\lambda\).

Fungsi Probabilitas (PMF) \[ P(X = k) = \frac{e^{-\lambda} \lambda^k}{k!} \]

Karakteristik: Ekspektasi: \[E(X) = \lambda\] Variansi: \[\text{Var}(X) = \lambda\]

Keterangan: \(\lambda\): rata-rata kejadian per satuan waktu/ruang \(k\): jumlah kejadian yang diamati

Contoh Kasus dengan menggunakan RStudio: Jumlah pengunjung sebuah toko per jam, rata-rata 3 orang. Hitung:

  1. Probabilitas tepat 2 pengunjung muncul dalam 1 jam
  2. Simulasi jumlah pengunjung selama 10 jam
set.seed(123)
poisson_sample <- rpois(10, lambda = 3) # 10 sampel dengan rata-rata kejadian 3
poisson_sample
##  [1] 2 4 2 5 6 0 3 5 3 3

BAB 4. Desain Sampling dalam Analisis Data Kategori

Dalam analisis data kategori, desain sampling memiliki peran yang krusial dalam menentukan validitas dan reliabilitas hasil penelitian. Pemilihan desain sampling yang tepat bergantung pada tujuan penelitian dan jenis data yang dikumpulkan.

Secara umum, desain sampling dalam analisis data kategori dapat diklasifikasikan ke dalam dua pendekatan utama, yaitu prospective sampling dan retrospective sampling. Masing-masing pendekatan memiliki metode sampling berbeda dan biasa digunakan dalam studi eksperimental maupun observasional seperti eksperimen, studi kohort, dan studi kasus-kontrol.

4.1 Prospective Sampling

Prospective sampling adalah metode pengambilan sampel di mana subjek penelitian diidentifikasi dan diikuti dalam periode waktu tertentu untuk mengamati perkembangan variabel yang diteliti. Umumnya digunakan dalam studi kausal atau eksperimental.

4.1.1 Eksperimen

Dalam eksperimen, subjek secara acak dialokasikan ke dalam kelompok perlakuan dan kontrol. Teknik sampling umum:

  • Simple Random Sampling (SRS): Setiap individu memiliki probabilitas yang sama untuk terpilih.
  • Stratified Random Sampling: Populasi dibagi berdasarkan karakteristik lalu diambil acak dari setiap strata.
  • Cluster Sampling: Populasi dibagi dalam kelompok (cluster), lalu cluster diambil acak untuk dianalisis.

4.1.2 Studi Kohort

Studi kohort mengikuti individu dari waktu ke waktu untuk mencatat kejadian yang dipelajari. Teknik sampling umum: - Census Sampling: Seluruh populasi diikutsertakan dalam studi. - Systematic Sampling: Subjek dipilih berdasarkan interval tetap. - Matched Sampling: Subjek dari kelompok perlakuan dicocokkan dengan kelompok pembanding berdasarkan variabel tertentu.

4.2 Retrospective Sampling

Retrospective sampling mengumpulkan data dari peristiwa masa lalu. Umumnya digunakan dalam studi observasional untuk menelusuri hubungan sebab-akibat.

4.2.1 Studi Kasus-Kontrol

Individu dengan kondisi tertentu (kasus) dibandingkan dengan kelompok tanpa kondisi tersebut (kontrol). Teknik umum: - Purposive Sampling: Berdasarkan karakteristik yang relevan dengan studi. - Snowball Sampling: Responden merekrut subjek tambahan. - Incidence Density Sampling: Kasus dan kontrol dipilih berdasarkan waktu munculnya kasus.

4.2.2 Studi Kohort Retrospektif

Menggunakan data historis untuk mengelompokkan individu lalu mengamati hasil yang terjadi. Teknik umum: - Convenience Sampling: Berdasarkan data yang tersedia. - Quota Sampling: Mencerminkan proporsi populasi. - Case-Based Sampling: Berdasarkan karakteristik kasus.

BAB 5. Tabel Kontingensi 2×2

Tabel kontingensi 2×2 adalah bentuk paling sederhana dari tabel kontingensi yang digunakan untuk menganalisis hubungan antara dua variabel kategori. Dalam banyak analisis statistik, tabel ini digunakan untuk menentukan apakah terdapat asosiasi antara dua variabel, seperti hubungan antara suatu kebiasaan dengan akibatnya, konsumsi obat terhadap kesembuhan seorang pasien, ataupun kasus-kasus lainnya.

Struktur Tabel kontingensi 2×2 adalah sebagai berikut: \[ \begin{array}{|c|c|c|c|} \hline \textbf{Grup} & \textbf{Kategori 1 (+)} & \textbf{Kategori 2 (-)} & \textbf{Total} \\ \hline \textbf{Grup 1} & n_{11} & n_{12} & n_{1.} \\ \hline \textbf{Grup 2} & n_{21} & n_{22} & n_{2.} \\ \hline \textbf{Total} & n_{.1} & n_{.2} & n \\ \hline \end{array} \]

5.1 Distribusi Peluang dalam Tabel Kontingensi

5.1.1 Peluang Bersama

Peluang bersama adalah probabilitas bahwa kedua variabel terjadi secara bersamaan dalam suatu sel tabel kontingensi yang dihitung dengan:

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

5.1.2 Peluang Marginal

Peluang marginal adalah probabilitas kejadian suatu variabel tanpa mempertimbangkan variabel lainnya. Peluang marginal terdiri dari peluang marginal kolom dan peluang marginal baris.

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 probabilitas suatu kejadian terjadi dengan syarat kejadian lain telah terjadi. Peluang bersyarat dapat dihitung dengan:

\[ P(B_j|A_i) = \frac{P(A_i, B_j)}{P(A_i)} = \frac{n_{ij}}{n_i} \]

5.2 Ukuran Asosiasi dalam Data Kategori 2 x 2

5.2.1 Risk Difference

Risk Difference (RD) atau Perbedaan Risiko adalah ukuran absolut dalam epidemiologi yang menggambarkan perbedaan antara probabilitas kejadian suatu hasil dalam dua kelompok yang berbeda. RD dihitung sebagai selisih antara risiko kejadian dalam kelompok terpapar dan risiko kejadian dalam kelompok tidak terpapar.

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

  • Jika RD > 0, maka risiko kejadian lebih tinggi di Grup 1 dibandingkan Grup 2.
  • Jika RD < 0, maka risiko kejadian lebih rendah di Grup 1 dibandingkan Grup 2.
  • Jika RD = 0, maka tidak ada perbedaan risiko antara dua kelompok.

5.2.2 Relative Risk

Relative Risk (RR) atau Risiko Relatif adalah ukuran yang digunakan dalam epidemiologi untuk membandingkan risiko kejadian suatu peristiwa (misalnya penyakit atau kondisi tertentu) antara dua kelompok, yaitu kelompok yang terpapar dan kelompok yang tidak terpapar. RR menunjukkan seberapa besar kemungkinan kejadian tersebut terjadi pada kelompok terpapar dibandingkan dengan kelompok tidak terpapar.

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

  • Jika RR > 1, maka kejadian lebih sering terjadi di Grup 1 dibandingkan Grup 2.
  • Jika RR < 1, maka kejadian lebih jarang terjadi di Grup 1 dibandingkan Grup 2.
  • Jika RR = 1, maka tidak ada perbedaan risiko antara dua kelompok.

5.2.3 Odds Ratio

Odds Ratio (OR) atau Rasio Odds adalah ukuran yang digunakan dalam epidemiologi dan statistik untuk membandingkan odds (peluang) terjadinya suatu kejadian antara dua kelompok, yaitu kelompok yang ter papar dan kelompok yang tidak terpapar. OR sering digunakan dalam studi case-control tetapi juga dapat digunakan dalam studi kohort dan eksperimental.

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

  • Jika OR > 1, maka peluang kejadian lebih besar di Grup 1 dibandingkan Grup 2.
  • Jika OR < 1, maka peluang kejadian lebih kecil di Grup 1 dibandingkan Grup 2.
  • Jika OR = 1, maka tidak ada perbedaan peluang kejadian antara dua kelompok.

5.3 Contoh Kasus

5.3.1 Latar Belakang

Hipertensi atau tekanan darah tinggi merupakan salah satu masalah kesehatan masyarakat yang bersifat kronis dan berpotensi menyebabkan komplikasi serius seperti penyakit jantung, stroke, dan gagal ginjal. Berdasarkan data World Health Organization (WHO), lebih dari 1,28 miliar orang dewasa di dunia mengalami hipertensi, dan angka tersebut cenderung meningkat tiap tahun, terutama di negara berkembang. Di Indonesia, Riskesdas (Riset Kesehatan Dasar) menunjukkan bahwa prevalensi hipertensi pada penduduk usia 18 tahun ke atas terus naik dalam satu dekade terakhir, menjadikan hipertensi sebagai beban penyakit tidak menular (PTM) yang dominan.

Salah satu penyebab utama hipertensi adalah konsumsi natrium berlebih, terutama dari pola makan yang tinggi garam atau bahan makanan yang mengandung natrium tersembunyi. Studi terbaru dalam Journal of the American College of Cardiology (2023) menyatakan bahwa bahkan peningkatan asupan natrium sebesar 1 gram saja di atas ambang batas WHO (2.300 mg/hari) dapat meningkatkan risiko hipertensi hingga 6%. Temuan ini sejalan dengan meta-analisis global yang menunjukkan hubungan kuat antara tingginya konsumsi natrium dengan peningkatan tekanan darah sistolik dan diastolik, terutama di kalangan remaja dan dewasa muda.

Di Indonesia, tantangan menjadi lebih kompleks karena budaya konsumsi makanan tradisional dan olahan yang secara tidak sadar mengandung kadar natrium tinggi. Berbagai makanan seperti rendang, gudeg, ikan asin, kerupuk, dan sambal memiliki cita rasa kuat yang sering kali berasal dari garam, penyedap rasa, atau bahan fermentasi tinggi natrium. Selain itu, konsumsi mi instan, yang sangat populer di berbagai kalangan usia dan lapisan sosial, turut memperparah masalah ini. Bumbu mi instan-baik dalam bentuk bubuk maupun cair-sering mengandung natrium dalam jumlah tinggi, bahkan satu porsi mi instan dapat mengandung lebih dari 1.500 mg natrium, yang berarti lebih dari separuh kebutuhan harian hanya dari satu sajian.

Fenomena ini menunjukkan pentingnya kesadaran masyarakat terhadap sumber natrium tersembunyi, khususnya dari makanan instan dan olahan yang sangat mudah diakses. Dalam konteks kesehatan masyarakat, hal ini menjadi tantangan besar karena kebiasaan konsumsi tersebut sudah mengakar dalam kehidupan sehari-hari, dan sulit diubah tanpa pendekatan berbasis data dan edukasi yang kontekstual. Urgensi penelitian mengenai hubungan antara konsumsi natrium-termasuk dari makanan tradisional dan olahan seperti bumbu mi instan-dengan hipertensi sangat tinggi untuk menghasilkan rekomendasi preventif yang aplikatif.

Dengan demikian, penelitian ini bertujuan untuk mengeksplorasi hubungan antara kadar konsumsi natrium dan tekanan darah, dengan mempertimbangkan kontribusi signifikan dari bumbu mi instan serta makanan tradisional Indonesia. Diharapkan hasil penelitian ini dapat memberikan kontribusi pada penyusunan strategi intervensi gizi, edukasi publik, serta kebijakan pangan yang mendukung penurunan prevalensi hipertensi secara nasional, tanpa mengabaikan aspek budaya dan kebiasaan konsumsi lokal masyarakat Indonesia.

5.3.2 Data dan Sumber Data

Data yang digunakan ini merupakan data sekunder, dimana data dikumpulkan oleh peneliti sebelumnya. Data dapat diakses melalui tautan berikut: Ilmu Keperawatan_30901900062_fullpdf.pdf. Selanjutnya data disusun dalam tabel kontingensi 2×2 berikut ini:

\[ \begin{array}{|c|c|c|c|} \hline \textbf{Konsumsi Natrium} & \textbf{Tensi Tidak Terkontrol} & \textbf{Tensi Terkontrol} & \textbf{Total} \\ \hline \textbf{Tinggi} & 67 & 1 & 68 \\ \hline \textbf{Rendah} & 6 & 12 & 18 \\ \hline \textbf{Total} & 73 & 13 & 86 \\ \hline \end{array} \]

Variabel yang digunakan dalam penelitian ini adalah Kadar Konsumsi Natrium yang terdiri dari Konsumsi Tinggi dan Konsumsi Rendah sebagai variabel X dan Status Kontrol Tekanan Darah (Tensi) yang terdiri dari Tekanan Darah Terkontrol dan Tekanan Darah Tidak Terkontrol. Sampel yang digunakan adalah pasien hipertensi baik laki-laki maupun perempuan yang melakukan kontrol di Poli Penyakit Dalam RSI Sultan Agung Semarang dalam rentang November 2022 - Januari 2023 sebanyak 86 orang.

5.3.3 Analisis

Akan dilakukan perhitungan untuk melihat distribusi peluang dan ukuran asosiasi untuk kasus konsumsi natrium ini.

5.3.3.1 Distribusi Peluang

# Perhitungan Distribusi Peluang
# Data Observasi
data_natrium <- matrix(c(67, 1, 6, 12), nrow = 2, byrow = TRUE)
colnames(data_natrium) <- c("Tensi Tidak Terkontrol", "Tensi Terkontrol")
rownames(data_natrium) <- c("Konsumsi Tinggi", "Konsumsi Rendah")
n <- sum(data_natrium)

# Peluang Bersama
P_joint <- data_natrium / n

# Peluang Marginal
P_marginal_rows <- rowSums(data_natrium) / n
P_marginal_cols <- colSums(data_natrium) / n

# Peluang Bersyarat
P_conditional <- data_natrium / rowSums(data_natrium)

# Hasil
list(Peluang_Bersama = P_joint, Peluang_Marginal_Baris = P_marginal_rows
,Peluang_Marginal_Kolom = P_marginal_cols, Peluang_Bersyarat = P_conditional)
## $Peluang_Bersama
##                 Tensi Tidak Terkontrol Tensi Terkontrol
## Konsumsi Tinggi             0.77906977       0.01162791
## Konsumsi Rendah             0.06976744       0.13953488
## 
## $Peluang_Marginal_Baris
## Konsumsi Tinggi Konsumsi Rendah 
##       0.7906977       0.2093023 
## 
## $Peluang_Marginal_Kolom
## Tensi Tidak Terkontrol       Tensi Terkontrol 
##              0.8488372              0.1511628 
## 
## $Peluang_Bersyarat
##                 Tensi Tidak Terkontrol Tensi Terkontrol
## Konsumsi Tinggi              0.9852941       0.01470588
## Konsumsi Rendah              0.3333333       0.66666667

5.3.3.2 Ukuran Asosiasi

# Perhitungan Ukuran Asosiasi
# Risk Difference
RD <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12))- (n21 / (n21 + n22))
}

# Risk Relative
RR <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12)) / (n21 / (n21 + n22))
}

# Odds Ratio
OR <- function(n11, n12, n21, n22) {
 (n11 * n22) / (n12 * n21)
}

# Hasil
list(Risk_Difference = RD(67, 1, 6, 12), Risk_Relative = RR(67, 1, 6, 12)
, Odds_Ratio = OR(67, 1, 6, 12))
## $Risk_Difference
## [1] 0.6519608
## 
## $Risk_Relative
## [1] 2.955882
## 
## $Odds_Ratio
## [1] 134

5.3.4 Interpretasi

5.3.4.1 Ditribusi Peluang

  1. Peluang Bersama menunjukkan probabilitas gabungan dari kejadian tertentu dalam tabel.
    • Konsumsi Tinggi dan Tensi Tidak Terkontrol memiliki probabilitas sebesar 0.77906977, yang berarti ada kemungkinan 77.91% individu dengan konsumsi natrium tinggi mengalami tekanan darah terkontrol.
    • Konsumsi Tinggi dan Tensi Terkontrol memiliki probabilitas sebesar 0.01162791, artinya hanya 1.16% individu dengan konsumsi natrium tinggi memiliki tekanan darah tidak terkontrol.
    • Konsumsi Rendah dan Tensi Tidak Terkontrol memiliki probabilitas sebesar 0.06976744, yang berarti 6.98% individu dengan konsumsi natrium rendah mengalami tekanan darah terkontrol.
    • Konsumsi Rendah dan Tensi Terkontrol memiliki probabilitas sebesar 0.13953488, yang berarti 13.95% indvidu dengan konsumsi natrium rendah mengalami tekanan darah tidak terkontrol.
  2. Peluang Marginal menunjukkan probabilitas suatu kejadian tanpa mempertimbangkan variabel lain.
    • Peluang untuk menemukan pasien dengan Konsumsi Natrium Tinggi di RSI tersebut adalah 0.7906977 atau sebanyak 79,1% dari 86 orang responden.
    • Peluang untuk menemukan pasien dengan Konsumsi Natrium Rendah di RSI tersebut adalah 0.2093023 atau sebanyak 70,9% dari 86 orang responden.
    • Peluang untuk menemukan pasien dengan Tensi Tidak Terkontrol di RSI tersebut adalah 0.8488372 atau sebanyak 84,9% dari 86 orang responden.
    • Peluang untuk menemukan pasien dengan Tensi Terkontrol di RSI tersebut adalah 0.1511628 atau sebanyak 15,1% dari 86 orang responden.
  3. Peluang Bersyarat
    • Peluang untuk menemukan pasien dengan Tensi Tidak Terkontrol apabila melakukan Konsumsi Natrium Tinggi adalah 0.9852941 atau sebesar 98,5%. Peluang sebesar 98,5% ini menunjukkan bahwa jika mengonsumsi natrium dengan kadar berlebihan hampir pasti mengalami hipertensi.
    • Peluang untuk menemukan pasien dengan Tensi Tidak Terkontrol apabila melakukan Konsumsi Natrium Rendah adalah 0.333333 atau sebesar 33,3%.
    • Peluang untuk menemukan pasien dengan Tensi Terkontrol apabila melakukan Konsumsi Natrium Tinggi adalah 0.01470588 atau sebesar 1,5%.
    • Peluang untuk menemukan pasien dengan Tensi Terkontrol apabila melakukan Konsumsi Natrium Rendah adalah 0.666667 atau sebesar 66,7%.

5.3.4.2 Ukuran Asosiasi

  1. Risk Difference RD > 0 yakni sebesar 0.6519608 menunjukkan bahwa perbedaan risiko kejadian antara kelompok pasien yang mengonsumsi natrium tinggi (kelompok 1) dan kelompok pasien yang mengonsumsi natrium rendah (kelompok 2) adalah 0.65. Karena nilai RD > 0, ini berarti risiko tekanan darah tidak terkontrol (hipertensi) lebih tinggi pada pasien yang mengonsumsi natrium tinggi dibandingkan dengan pasien yang mengonsumsi natrium rendah. Perbedaan ini cukup signifikan dan menunjukkan bahwa natrium tinggi berpengaruh besar terhadap pengendalian tekanan darah

  2. Risk Relative RR > 1 yakni sebesar 2.955882 menunjukkan bahwa kejadian tekanan darah tidak terkontrol lebih sering terjadi pada kelompok yang mengonsumsi natrium tinggi dibandingkan dengan kelompok yang mengonsumsi natrium rendah. Nilai RR = 2.96 menunjukkan bahwa individu dengan konsumsi natrium tinggi memiliki kemungkinan sekitar 3 kali lebih besar untuk memiliki tekanan darah tidak terkontrol dibandingkan dengan mereka yang mengonsumsi natrium rendah.

  3. Odds Ratio Karena OR > 1, yakni sebesar 134 berarti peluang kejadian tekanan darah tidak terkontrol lebih besar pada kelompok yang mengonsumsi natrium tinggi dibandingkan kelompok yang mengonsumsi natrium rendah. Nilai OR = 134 mengindikasikan bahwa individu yang mengonsumsi natrium tinggi memiliki peluang 134 kali lebih besar untuk memiliki tekanan darah tidak terkontrol dibandingkan dengan mereka yang mengonsumsi natrium rendah

BAB 6. Inferensi Tabel Kontingensi Dua Arah

Inferensi dalam statistik mengacu pada proses pengambilan kesimpulan mengenai populasi berdasarkan sampel data. Dalam konteks tabel kontingensi dua arah, inferensi digunakan untuk menganalisis hubungan antara dua variabel kategorikal yang disusun dalam tabel kontingensi.

Tabel kontingensi adalah tabel yang menyajikan distribusi frekuensi dari dua variabel kategorikal dalam bentuk matriks. Tujuan utama dari inferensi pada tabel ini adalah untuk memahami hubungan antara variabel-variabel tersebut melalui estimasi dan pengujian hipotesis. Inferensi dalam tabel kontingensi dua arah dapat dibagi menjadi dua kategori utama: - Estimasi - Pengujian

6.1 Estimasi

Estimasi bertujuan untuk memperkirakan parameter populasi berdasarkan data sampel. Estimasi dibagi menjadi:

6.1.1 Estimasi Titik

Estimasi titik digunakan untuk menentukan satu nilai spesifik sebagai perkiraan terbaik dari parameter populasi. Dalam persamaan matematika, estimasi titik dapat diekspresikan dengan:

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

  • \(\hat{p}\) adalah estimasi titik proporsi
  • \(x\) adalah jumlah individu dalam kategori tertentu
  • \(n\) adalah total jumlah individu dalam sampel.

6.1.2 Estimasi Interval

Estimasi interval bertujuan untuk memberikan rentang nilai yang diyakini mengandung parameter populasi dengan tingkat kepercayaan tertentu. Estimasi interval dapat dihitung dengan:

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

  • \(Z_{\alpha/2}\) adalah nilai dari distribusi normal standar untuk tingkat kepercayaan tertentu
  • \(\hat{p}\) adalah estimasi titik proporsi
  • \(n\) adalah ukuran sampel.

6.2 Uji Hipotesis

Terdapat beberapa Uji Hipotesis yang digunakan ketika kita menggunakan struktur data berupa tabel kontingensi 2×2

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.

Formulasi Uji Proporsi Untuk menguji hipotesis bahwa tidak ada perbedaan proporsi antara dua kelompok, kita menggunakan uji z dua proporsi, dengan hipotesis: • \(H_0\) : Tidak ada perbedaan proporsi antara dua kelompok, yaitu \(p_1 = p_2\)\(H_1\) : Terdapat perbedaan proporsi antara dua kelompok, yaitu \(p_1 \neq p_2\)

Estimasi proporsi dalam masing-masing kelompok diberikan oleh:

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

Estimasi proporsi gabungan dihitung dengan:

\[ \hat{p} = \frac{n_{11} + n_{21}}{n_1. + n_2.} \]

Statistik uji untuk uji proporsi dua sampel adalah:

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

Dimana \(\hat{p}\) adalah estimasi proporsi gabungan. Statistik uji \(Z\) mengikuti distribusi normal baku \(N(0, 1)\), dan p-value dihitung berdasarkan nilai kritis dari distribusi normal.

Uji proporsi dilakukan dengan kriteria uji berupa 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.

6.2.2 Uji Asosiasi

Uji asosiasi dalam tabel kontingensi 2×2 bertujuan untuk mengukur hubungan antara dua variabel kategori. Tiga ukuran utama dalam uji asosiasi adalah:

  1. Risk Difference (RD) untuk mengukur selisih risiko absolut antara dua kelompok.
  2. Relative Risk (RR) untuk mengukur perbandingan risiko antara dua kelompok.
  3. Odds Ratio (OR) untuk mengukur perbandingan odds/peluang kejadian antara dua kelompok.

Hipotesis Uji dalam Tabel Kontingensi 2 x 2 : Untuk setiap uji asosiasi, hipotesis yang diuji adalah: • \(H_0\) : Tidak ada asosiasi antara dua variabel. • \(H_1\) : Terdapat asosiasi antara dua variabel

Formulasi untuk ketiga ukuran utama dalam uji asosiasi adalah sebagai berikut.

6.2.2.1 Risk Difference (RD)

Risk Difference mengukur perbedaan absolut dalam probabilitas kejadian antara dua kelompok:

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

Standard Error untuk RD:

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

Statistik uji Z:

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

6.2.2.2 Relative Risk (RR)

Relative Risk membandingkan kemungkinan kejadian antara dua kelompok:

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

Standard Error untuk log(RR):

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

Statistik uji Z:

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

6.2.2.3 Odds Ratio (OR)

Odds Ratio membandingkan peluang kejadian antara dua kelompok:

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

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)} \]

Sebagaimana terlampir di atas, uji asosiasi dilakukan dengan melihat nilai standard error dan nilai statistik Z masing-masing ukuran asosiasi, yakni dengan kriteria uji apabila nilai statistik Z lebih besar daripada nilai tabel Z, maka hasilnya signifikan.

6.2.3 Uji Independensi

Uji independensi digunakan untuk menentukan apakah ada hubungan statistik antara dua variabel kate gorikal.

6.2.3.1 Uji Chi-Square

Uji Chi-Square digunakan untuk menguji apakah ada hubungan antara dua variabel kategorikal.

Rumus Chi-Square:

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

dimana:

  • \(O\) adalah nilai observasi dalam tabel kontingensi.
  • \(E\) adalah nilai yang diharapkan, dihitung sebagai:

\[ E_{ij} = \frac{(R_i \times C_j)}{N} \]

dengan:

  • \(R_i\) = total baris ke-i
  • \(C_j\) = total kolom ke-j
  • \(N\) = total sampel

Kriteria uji: Tolak H0 apabila chi-sq hitung > nilai tabel dan p-value < alpha. Jika H0 ditolak artinya terdapat hubungan antara variabel “terpapar” dan “kejadian”

6.2.3.2 Partisi Chi-Square

Partisi Chi-Square digunakan untuk mengidentifikasi kategori mana dalam tabel kontingensi yang bertanggung jawab atas hubungan yang signifikan. Jika uji Chi-Square pada tabel kontingensi I×Jsignifikan, maka partisi Chi-Square memungkinkan kita untuk menguraikan efek hubungan dalam subkelompok yang lebih kecil. Menurut Lancaster dan Irwin, statistik uji chi-square dapat dipecah menjadi komponen-komponen se banyak derajat bebas dari tabel kontingensi, memungkinkan identifikasi kategori yang berkontribusi pada hubungan yang signifikan. Hal ini juga dikenal dengan Simpson’s Paradox: 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×Jdan menghitung Chi-Square keselu ruhan. 2. Memecah tabel menjadi beberapa tabel 2×2sebanyak (I-1)(J-1). 3. Menghitung statistik Chi-Square pada masing-masing tabel 2 × 2. 4. Menginterpretasikan kategori mana yang memberikan kontribusi signifikan.

6.2.3.2.1 Contoh Kasus Partisi Chi-Square
6.2.3.2.1.1 Latar Belakang

Penelitian ini bertujuan untuk menyelidiki hubungan antara mutasi gen EGFR dengan kebiasaan merokok pada pasien yang terbagi menjadi tiga kelompok: perokok, bekas perokok, dan bukan perokok. Gen EGFR (epidermal growth factor receptor) memainkan peran penting dalam perkembangan kanker, khususnya pada kanker paru-paru. Mutasi pada gen ini dapat mempengaruhi sensitivitas sel kanker terhadap terapi, serta prognosis pasien. Oleh karena itu, pemahaman mengenai bagaimana kebiasaan merokok dapat berinteraksi dengan mutasi gen EGFR sangat penting, mengingat rokok adalah faktor risiko utama dalam perkembangan kanker paru-paru. Dalam penelitian ini, data yang diperoleh mengenai status merokok dan status mutasi gen EGFR diharapkan dapat memberikan wawasan baru tentang pola interaksi antara kebiasaan merokok dan perkembangan kanker paru-paru.

Selain itu, penelitian ini juga penting untuk mengetahui perbedaan pengaruh kebiasaan merokok, baik pada perokok aktif maupun bekas perokok, terhadap kejadian mutasi gen EGFR. Kebiasaan merokok tidak hanya mempengaruhi perokok aktif, tetapi juga bisa memiliki dampak jangka panjang pada bekas perokok, yang dapat mempengaruhi kesehatan mereka meskipun mereka telah berhenti merokok. Penelitian ini akan memberikan informasi mengenai apakah bekas perokok memiliki risiko yang berbeda dibandingkan dengan perokok aktif dan bukan perokok, serta apakah adanya mutasi gen EGFR pada kelompok-kelompok ini berhubungan dengan status merokok mereka. Hasil dari penelitian ini diharapkan dapat memberikan dasar ilmiah bagi upaya pencegahan dan pengobatan yang lebih terarah pada pasien kanker paru-paru.

6.2.3.2.1.2 Data dan Sumber Data

Data ini merupakan data sekunder yang dikumpulkan oleh peneliti sebelumnya. Data dapat diakses pada tautan berikut: Hubungan Jenis Kelamin dan Riwayat Merokok dengan Mutasi Gen EGFR pada Penderita Kanker Paru Tipe Adenokarsinoma | Ahyati | Homeostasis. Selanjutnya Data disusun dalam tabel kontingensi berikut:

\[ \begin{array}{|c|c|c|c|c|} \hline \textbf{Mutasi Gen EGFR} & \textbf{Perokok} & \textbf{Bekas Perokok} & \textbf{Bukan Perokok} & \textbf{Total} \\ \hline \textbf{Positif} & 5 & 1 & 11 & 17 \\ \hline \textbf{Negatif} & 21 & 5 & 10 & 36 \\ \hline \textbf{Total} & 26 & 6 & 21 & 53 \\ \hline \end{array} \]

6.2.3.2.1.3 Analisis
data <- matrix(c(5, 1, 11, 21, 5, 10 ), nrow = 2, byrow = TRUE)
colnames(data) <- c("Perokok", "Bekas Perokok", "Bukan Perokok")
rownames(data) <- c("Positif", "Negatif")
data
##         Perokok Bekas Perokok Bukan Perokok
## Positif       5             1            11
## Negatif      21             5            10
# Uji Chi-Square
chi_test <- chisq.test(data)
## Warning in chisq.test(data): Chi-squared approximation may be incorrect
print(chi_test)
## 
##  Pearson's Chi-squared test
## 
## data:  data
## X-squared = 6.5969, df = 2, p-value = 0.03694
# Uji Partisi
# Data observasi 1
data_partisi1 <- matrix(c(5,11,21,10), nrow=2, byrow=TRUE)
colnames(data_partisi1) <- c("Perokok", "Bukan Perokok")
rownames (data_partisi1) <- c("Positif", "Negatif")
data_partisi1
##         Perokok Bukan Perokok
## Positif       5            11
## Negatif      21            10
chi_test1 <- chisq.test(data_partisi1)
print(chi_test1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_partisi1
## X-squared = 4.3051, df = 1, p-value = 0.038
# Data observasi 2
data_partisi2 <- matrix(c(6,11,26,10), nrow=2, byrow=TRUE)
colnames(data_partisi2) <- c("Perokok + Bekas Perokok", "Bukan Perokok")
rownames (data_partisi2) <- c("Positif", "Negatif")
data_partisi2
##         Perokok + Bekas Perokok Bukan Perokok
## Positif                       6            11
## Negatif                      26            10
chi_test2 <- chisq.test(data_partisi2)
print(chi_test2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_partisi2
## X-squared = 5.1291, df = 1, p-value = 0.02353
# Data observasi 3
data_partisi3 <- matrix(c(5,12,21,15), nrow=2, byrow=TRUE)
colnames(data_partisi3) <- c("Perokok", "Bukan Perokok + Bekas Perokok")
rownames (data_partisi3) <- c("Positif", "Negatif")
data_partisi3
##         Perokok Bukan Perokok + Bekas Perokok
## Positif       5                            12
## Negatif      21                            15
chi_test2 <- chisq.test(data_partisi3)
print(chi_test2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_partisi3
## X-squared = 2.7942, df = 1, p-value = 0.0946
6.2.3.2.1.4 Interpretasi

Pada data utama, data_partisi1 serta data_partisi2, terdapat hubungan signifikan antara status perokok dan kondisi positif/negatif. Hal ini dapat dilihat dari p-value yang lebih kecil dari 0.05. Namun saat partisi ketiga dilakukan dimana variabel yang digunakan adalah perokok dan bukan perokok digabung bersama bekas perokok, didapatkan p-value yang lebih besar dari 0.05. Data partisi 1 dan data partisi 2 menunjukkan bahwa bekas perokok memiliki pengaruh yang signifikan terhadap hasil yang diteliti, yang mungkin berarti riwayat merokok (bahkan setelah berhenti merokok) masih dapat memengaruhi hasil yang dianalisis. Namun, hasil pada data_partisi3 menunjukkan bahwa perokok aktif saat ini mungkin tidak memiliki hubungan yang signifikan jika dibandingkan dengan status perokok secara keseluruhan (termasuk bekas perokok).

6.2.3.3 Uji Likelihood Ratio (G^2)

Uji Likelihood Ratio (G²) adalah alternatif dari uji chi-square yang digunakan untuk menguji hipotesis independensi dalam tabel kontingensi \(I \times J\). Statistik uji ini diberikan oleh:

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

Dimana: - \(n_{ij}\) adalah frekuensi observasi dalam tabel kontingensi. - \(\hat{n}_{ij} = n \cdot p_i \cdot p_j\) adalah frekuensi ekspektasi.

Penjelasan Statistik: - Statistik \(G^2\) mengikuti distribusi chi-square (\(\chi^2\)) dengan derajat bebas \((I-1)(J-1)\). - Tolak \(H_0\) jika \(G^2 \geq \chi^2_{\alpha}(I-1)(J-1)\), dengan derajat bebas \((I-1)(J-1)\).

6.4.3.3.1 Contoh Kasus Uji Likelihood Ratio
6.4.3.3.1.1 Latar Belakang

Obesitas adalah salah satu masalah kesehatan global yang semakin meningkat dan menjadi salah satu faktor risiko utama untuk berbagai penyakit serius seperti diabetes tipe 2, hipertensi, dan penyakit jantung. Salah satu faktor yang diketahui memengaruhi perkembangan obesitas adalah kebiasaan olahraga. Aktivitas fisik teratur dapat membantu dalam pengelolaan berat badan, meningkatkan metabolisme tubuh, dan mengurangi akumulasi lemak berlebih yang dapat menyebabkan obesitas. Oleh karena itu, penting untuk menyelidiki hubungan antara kebiasaan olahraga dengan kejadian obesitas di masyarakat.

Penelitian ini bertujuan untuk mengidentifikasi apakah kebiasaan olahraga yang teratur memiliki pengaruh terhadap kejadian obesitas. Dengan menganalisis data yang menunjukkan hubungan antara kebiasaan olahraga dan prevalensi obesitas, diharapkan dapat diperoleh wawasan yang lebih mendalam mengenai peran olahraga dalam pencegahan obesitas. Hasil dari penelitian ini diharapkan dapat memberikan rekomendasi berbasis bukti untuk kebijakan kesehatan masyarakat dan intervensi yang lebih efektif, seperti promosi olahraga teratur sebagai upaya pencegahan obesitas di kalangan masyarakat.

6.4.3.3.1.2 Data dan Sumber Data

Data ini merupakan data sekunder yang dikumpulkan oleh peneliti sebelumnya. Data dapat diakses pada tautan berikut: https://ejurnalmalahayati.ac.id/index.php/kesehatan/article/view/5665. Selanjutnya Data disusun dalam tabel kontingensi berikut:

\[ \begin{array}{|c|c|c|c|} \hline \textbf{Kebiasaan Olahraga} & \textbf{Obesitas} & \textbf{Tidak Obesitas} & \textbf{Total} \\ \hline \textbf{Tidak Teratur} & 23 & 1 & 24 \\ \hline \textbf{Teratur} & 7 & 29 & 36 \\ \hline \textbf{Total} & 30 & 30 & 60 \\ \hline \end{array} \]

6.4.3.3.1.3 Analisis
 # Data Observasi
 data_obes <- matrix(c(688, 650, 21, 59), nrow = 2, byrow = TRUE)
 colnames(data_obes) <- c("Obesitas", "Tidak Obesitas")
 rownames(data_obes) <- c("Tidak Teratur", "Teratur")
 
 # Hitung Frekuensi Ekspektasi
 data_expected <- chisq.test(data_obes)$expected
 # Hitung Statistik G²
 G2 <- 2 * sum(data_obes * log(data_obes / data_expected))
 29
## [1] 29
# Nilai kritis chi-square untuk df = 1 dan alpha = 0.05
 critical_value <- qchisq(0.95, df = 1)
 # Hasil
 list(G2 = G2, Critical_Value = critical_value, Decision = ifelse(G2 > critical_value, "Reject H0", "Fail to reject H0"))
## $G2
## [1] 19.87802
## 
## $Critical_Value
## [1] 3.841459
## 
## $Decision
## [1] "Reject H0"
6.4.3.3.1.4 Interpretasi

Berdasarkan hasil analisis yang sudah diilakukan didapatkan nilai Likelihood Ratio (\(G^2\)) yang lebih besar daripada nilai kritisnya, artinya kita punya bukti untuk menolak H0 dan menyatakan bahwa terdapat hubungan yang signifikan antara variabel kebiasaan olahraga dengan status obesitas.

6.2.3.4 Uji Exact Fisher

Uji Fisher’s Exact digunakan untuk menguji hubungan antara dua variabel kategorikal dalam tabel kontingensi kecil, dimana asumsi Chi-Square tidak berlaku karena ukuran sampel yang kecil.

Uji ini pertama kali dikembangkan oleh Sir Ronald A. Fisher, seorang ahli statistik, yang menggunakannya dalam penelitian biologi dan medis. Fisher’s Exact Test menjadi sangat penting dalam analisis data yang memiliki frekuensi kecil karena tidak bergantung pada asumsi distribusi normal.

Keunggulan:

  • Cocok untuk ukuran sampel kecil.
  • Tidak memerlukan asumsi normalitas atau chi-square.
  • Memberikan hasil yang lebih akurat dibandingkan uji Chi-Square pada data dengan frekuensi kecil.

Keterbatasan:

  • Perhitungan bisa menjadi sangat berat secara komputasi jika ukuran tabel besar.
  • Hanya cocok untuk tabel kontingensi kecil (misalnya 2x2 atau 3x3).
6.2.3.4.1 Contoh Kasus Exact Fisher
6.2.3.4.1.1 Latar Belakang

Penyakit Tuberkulosis (TB) paru merupakan salah satu masalah kesehatan masyarakat yang masih menjadi tantangan di banyak negara, termasuk di Indonesia. Keberhasilan pengobatan TB sangat bergantung pada kepatuhan pasien dalam menjalani pengobatan secara teratur dan tepat waktu. Meskipun TB dapat disembuhkan, banyak pasien yang mengalami kesulitan dalam mematuhi regimen pengobatan yang ditentukan. Ketidakpatuhan dalam pengobatan bisa menyebabkan resistensi obat, kegagalan terapi, dan bahkan meningkatnya angka kematian akibat TB. Oleh karena itu, penting untuk memahami sejauh mana kepatuhan dalam minum obat dapat mempengaruhi tingkat kesembuhan pasien TB paru.

Penelitian ini bertujuan untuk menganalisis hubungan antara kepatuhan minum obat dengan tingkat kesembuhan pada pasien TB paru dewasa. Dengan menganalisis data yang menunjukkan perbedaan antara pasien yang patuh dan tidak patuh dalam pengobatan, penelitian ini dapat memberikan informasi yang berguna bagi tenaga medis dan pembuat kebijakan dalam merancang strategi pencegahan dan pengobatan TB yang lebih efektif. Hasil dari penelitian ini diharapkan dapat meningkatkan pemahaman mengenai pentingnya kepatuhan dalam terapi TB untuk mencapai kesembuhan pasien yang lebih tinggi.

6.2.3.4.1.2 Data dan Sumber Data

Data ini merupakan data sekunder yang dikumpulkan oleh peneliti sebelumnya. Data dapat diakses pada tautan berikut: https://ejurnalmalahayati.ac.id/index.php/kesehatan/article/view/5665. Selanjutnya Data disusun dalam tabel kontingensi berikut:

\[ \begin{array}{|c|c|c|c|} \hline \textbf{Pola Aktivitas} & \textbf{Obesistas} & \textbf{Tidak Obesitas} & \textbf{Total} \\ \hline \textbf{Aktif di Luar Gedung} & 26 & 3 & 29 \\ \hline \textbf{Aktif di Dalam Gedung} & 4 & 27 & 31 \\ \hline \textbf{Total} & 30 & 30 & 60 \\ \hline \end{array} \]

6.2.3.4.1.3 Analisis
data_tb <- matrix(c(26, 3, 4, 27), nrow = 2, byrow = TRUE)
fisher.test(data_tb)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  data_tb
## p-value = 1.975e-09
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##   10.0221 399.2789
## sample estimates:
## odds ratio 
##    51.6547
6.2.3.4.1.4 Interpretasi

Berdasarkan hasil analisis di atas, dapat dilihat bahwa p-value sebesar 0,000 artinya kita punya cukup bukti untuk dapat menolak H0 dan menyatakan bahwa terdapat hubungan yang signifikan antara variabel Pola Aktivitas dan Kejadian Obesitas.

6.3 Analisis Residual dalam Tabel Kontingensi

Residual dalam tabel kontingensi digunakan untuk mengidentifikasi mana yang menyumbang paling banyak terhadap hubungan antara antar variabel kategorikal. Residual mengukur selisih antara frekuensi yang diamati dan frekuensi yang diharapkan berdasarkan model independensi. Jika suatu sel memiliki residual yang besar (positif atau negatif), berarti frekuensi observasi dalam sel tersebut sangat berbeda dari yang diharapkan. Sebaliknya, jika residualnya kecil, berarti nilai observasi mendekati nilai ekspektasi, sehingga sel tersebut tidak banyak menyumbang terhadap hubungan antara antar variabel (Agresti, A., 2013).

Jika Residual = 0:

  • Tidak ada perbedaan signifikan antara jumlah observasi yang terjadi di suatu sel dengan jumlah yang diprediksi oleh model independensi.
  • Artinya, variabel baris dan kolom dalam tabel tidak memiliki hubungan kuat atau tidak menunjukkan pola ketergantungan yang jelas.

Jika Residual Positif Besar:

  • Frekuensi observasi jauh lebih tinggi dari yang diharapkan, menunjukkan hubungan positif yang kuat antara kategori tersebut.

Jika Residual Negatif Besar:

  • Frekuensi observasi jauh lebih rendah dari yang diharapkan, menunjukkan hubungan negatif atau tidak adanya asosiasi antara kategori tersebut.

Kesimpulan Residual:

  • Residual kecil (0) → Tidak ada hubungan antara variabel baris dan kolom.
  • Residual besar (positif atau negatif) → Ada hubungan yang signifikan antara variabel baris dan kolom.

Jadi, dalam analisis residual tabel kontingensi, nilai residual mendekati nol mengindikasikan bahwa variabel-variabel yang dianalisis tidak memiliki hubungan yang signifikan, dan data sesuai dengan asumsi independensi.

6.3.1 Jenis Residual

Residual Pearson dihitung dengan rumus berikut:

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

dimana: - \(O_{ij}\) adalah nilai observasi pada sel ke-\(i,j\). - \(E_{ij}\) adalah nilai ekspektasi pada sel ke-\(i,j\).

Standardized Residual (Adjusted Residual) atau residual terstandarisasi dihitung dengan rumus berikut:

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

dimana: - \(p_i+\) dan \(p_{+j}\) adalah probabilitas marginal dari baris dan kolom.

6.3.2 Deteksi Outlier dalam Analisis Data Kategori Menggunakan Residual

Outlier dalam analisis data kategori adalah sel dalam tabel kontingensi yang memiliki nilai residual yang sangat besar, baik positif maupun negatif. Outlier ini menunjukkan bahwa ada kategori yang memiliki frekuensi observasi yang jauh lebih tinggi atau lebih rendah dibandingkan dengan nilai ekspektasi berdasarkan asumsi independensi.

Residual dapat digunakan pula untuk mendeteksi outlier dengan rumus berikut:

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

Jika nilai \(|e_{ij}| > 2\), maka sel tersebut dianggap sebagai indikasi adanya outlier.

Selanjutnya Standardized Residual (Adjusted Residual) dapat dihitung menggunakan:

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

Jika nilai \(|r_{ij}| > 3\), maka sel tersebut dianggap sebagai outlier signifikan.

6.4 Contoh Kasus

6.4.1 Latar Belakang

Indonesia, sebagai negara tropis, dikenal dengan suhu yang tinggi sepanjang tahun. Paparan sinar matahari yang terus-menerus berpotensi menyebabkan kerusakan kulit, salah satunya adalah munculnya kondisi kulit seperti melasma. Melasma merupakan hiperpigmentasi pada kulit yang muncul sebagai bercak-bercak cokelat, terutama pada area wajah, yang sering kali dipicu oleh paparan sinar UV matahari. Berdasarkan laporan World Health Organization (WHO), Indonesia memiliki tingkat radiasi matahari yang cukup tinggi sepanjang tahun, yang berdampak langsung pada kesehatan kulit masyarakat.

Dalam beberapa tahun terakhir, melasma semakin menjadi masalah kulit yang banyak dikeluhkan oleh masyarakat Indonesia, terutama bagi mereka yang sering terpapar sinar matahari langsung. Meningkatnya kesadaran akan pentingnya perlindungan kulit dari paparan UV telah membuat produk tabir surya (sunscreen) semakin populer. Namun, meskipun banyak orang yang mulai menggunakan sunscreen, masih banyak yang mengabaikan penggunaan secara rutin dan benar. Penelitian ini bertujuan untuk melihat hubungan antara penggunaan sunscreen dengan kejadian melasma pada masyarakat Indonesia, dengan fokus pada perbedaan antara mereka yang menggunakan dan tidak menggunakan sunscreen.

Dalam penelitian ini, kami akan menganalisis data mengenai kebiasaan penggunaan sunscreen dan kaitannya dengan melasma. Diharapkan hasil penelitian ini dapat memberikan wawasan yang lebih jelas tentang pengaruh penggunaan sunscreen terhadap prevalensi melasma di Indonesia. Hal ini penting untuk merumuskan kebijakan kesehatan masyarakat yang lebih efektif, guna menanggulangi peningkatan kasus melasma yang sejalan dengan peningkatan suhu dan paparan sinar UV yang lebih tinggi. Selain itu, hasil penelitian ini juga diharapkan dapat meningkatkan kesadaran masyarakat akan pentingnya perlindungan kulit dengan penggunaan sunscreen yang tepat.

6.4.2 Sumber Data

Data yang digunakan ini merupakan data sekunder, dimana data dikumpulkan oleh peneliti sebelumnya. Data dapat diakses melalui tautan berikut: http://eprints.ums.ac.id/50227/28/NASKAH%20PUBLIKASI.pdf

\[ \begin{array}{|c|c|c|c|} \hline \textbf{Penggunaan Sunscreen} & \textbf{Tidak Melasma} & \textbf{Melasma} & \textbf{Total} \\ \hline \textbf{Ya} & 21 & 8 & 29 \\ \hline \textbf{Tidak} & 5 & 24 & 29 \\ \hline \textbf{Total} & 26 & 32 & 58 \\ \hline \end{array} \]

Populasi penelitian adalah wanita IRT yang berusia 30-55 tahun yang terkena melasma maupun yang tidak terkena melasma yang tinggal di kecamatan Grogol-Sukoharjo. Metode pengambilan sampel dengan teknik Purposive sampling. Besar sampel adalah 58 wanita.

6.4.3 Analisis

Estimasi

# Data matriks
data <- matrix(c(21, 8, 5, 24), nrow = 2, byrow = TRUE)
colnames(data) <- c("Tidak Melasma", "Melasma")
rownames(data) <- c("Pakai Sunscreen", "Tidak Pakai Sunscreen")

# Estimasi Titik
p_hat_sunscreen <- data[1, 2] / sum(data[1, ])  
p_hat_no_sunscreen <- data[2, 2] / sum(data[2, ]) 
cat("Estimasi Titik (Pakai Sunscreen):", p_hat_sunscreen, "\n")
## Estimasi Titik (Pakai Sunscreen): 0.2758621
cat("Estimasi Titik (Tidak Pakai Sunscreen):", p_hat_no_sunscreen, "\n")
## Estimasi Titik (Tidak Pakai Sunscreen): 0.8275862
# Estimasi Interval
# Menghitung interval kepercayaan (95%)
confidence_level <- 0.95
alpha <- 1 - confidence_level
z_alpha_half <- qnorm(1 - alpha / 2)  

# Menghitung Margin of Error untuk masing-masing grup
margin_error_sunscreen <- z_alpha_half * sqrt(p_hat_sunscreen 
                          * (1 - p_hat_sunscreen) / sum(data[1, ]))
margin_error_no_sunscreen <- z_alpha_half * sqrt(p_hat_no_sunscreen
                          * (1 - p_hat_no_sunscreen) / sum(data[2, ]))

lb_sunscreen <- p_hat_sunscreen - margin_error_sunscreen
ub_sunscreen <- p_hat_sunscreen + margin_error_sunscreen

lb_no_sunscreen <- p_hat_no_sunscreen - margin_error_no_sunscreen
ub_no_sunscreen <- p_hat_no_sunscreen + margin_error_no_sunscreen

cat("Estimasi Interval (Pakai Sunscreen) 95% CI: [", lb_sunscreen, ","
    , ub_sunscreen, "]\n")
## Estimasi Interval (Pakai Sunscreen) 95% CI: [ 0.1131927 , 0.4385314 ]
cat("Estimasi Interval (Tidak Pakai Sunscreen) 95% CI: [", lb_no_sunscreen, ","
    , ub_no_sunscreen, "]\n")
## Estimasi Interval (Tidak Pakai Sunscreen) 95% CI: [ 0.6901055 , 0.9650669 ]

Uji Hipotesis

  1. Uji Proporsi
# Data Observasi
data <- matrix(c(21, 8, 5, 24), nrow = 2, byrow = TRUE)
colnames(data) <- c("Tidak Melasma", "Melasma")
rownames(data) <- c("Pakai Sunscreen", "Tidak Pakai Sunscreen")

# Uji Proporsi dengan variabel yang benar
prop_test <- prop.test(x =c(data[1,1], data[2,1]),
n =c(sum(data[1,]), sum(data[2,])))
print(prop_test)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(data[1, 1], data[2, 1]) out of c(sum(data[1, ]), sum(data[2, ]))
## X-squared = 15.685, df = 1, p-value = 7.481e-05
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.3042572 0.7991911
## sample estimates:
##    prop 1    prop 2 
## 0.7241379 0.1724138
  1. Uji Asosiasi
n11 <- 21; n12 <- 8; n21 <- 5; n22 <- 24
 n1. <- n11 + n12; n2. <- n21 + n22
 # Risk Difference
 p1<-(n11/n1.)
 p2<-(n21/n2.)
 rd <- p1- p2
 se_rd <- sqrt((p1 * (1- p1) / n1.) + p2*((1- p2) / n2.))
 z_rd <- rd / se_rd
 # Relative Risk
 rr <- (n11/n1.) / (n21/n2.)
 se_ln_rr <- sqrt((1/n11)- (1/n1.) + (1/n21)- (1/n2.))
 z_rr <- log(rr) / se_ln_rr
 # Odds Ratio
 or <- (n11 * n22) / (n12 * n21)
 se_ln_or <- sqrt((1/n11) + (1/n12) + (1/n21) + (1/n22))
 z_or <- log(or) / se_ln_or
 # Hasil
 list(RD = rd, SE_RD = se_rd, Z_RD = z_rd, RR = rr, SE_Ln_RR = se_ln_rr, Z_RR = z_rr, OR = or, SE_Ln_OR = se_ln_or, Z_OR = z_or)
## $RD
## [1] 0.5517241
## 
## $SE_RD
## [1] 0.1086674
## 
## $Z_RD
## [1] 5.077182
## 
## $RR
## [1] 4.2
## 
## $SE_Ln_RR
## [1] 0.4226743
## 
## $Z_RR
## [1] 3.395249
## 
## $OR
## [1] 12.6
## 
## $SE_Ln_OR
## [1] 0.6436503
## 
## $Z_OR
## [1] 3.936449
  1. Uji Independensi
# Data Observasi
data <- matrix(c(21, 8, 5, 24), nrow = 2, byrow = TRUE)
colnames(data) <- c("Tidak Melasma", "Melasma")
rownames(data) <- c("Pakai Sunscreen", "Tidak Pakai Sunscreen")

# Uji Chi-Square
chisq_test <- chisq.test(data)
print(chisq_test)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 15.685, df = 1, p-value = 7.481e-05

Analisis Residual

# Data Observasi
 observed <- matrix(c(21, 8, 5, 24), nrow = 2, byrow = TRUE)
colnames(data) <- c("Tidak Melasma", "Melasma")
rownames(data) <- c("Pakai Sunscreen", "Tidak Pakai Sunscreen")

 # Hitung nilai ekspektasi
 expected <- chisq.test(observed)$expected
 # Pearson Residual
 pearson_residual <- (observed- expected) / sqrt(expected)
 
# Standardized Residual
row_sum <- rowSums(observed)
col_sum <- colSums(observed)
total_sum <- sum(observed)
standardized_residual <- (observed- expected)/(sqrt(expected*(1-row_sum/total_sum)
                         *(1- col_sum/total_sum)))
 # Menampilkan hasil
 list(
 Observed = observed,
 Expected = expected,
 Pearson_Residual = pearson_residual,
 Standardized_Residual = standardized_residual
 )
## $Observed
##      [,1] [,2]
## [1,]   21    8
## [2,]    5   24
## 
## $Expected
##      [,1] [,2]
## [1,]   13   16
## [2,]   13   16
## 
## $Pearson_Residual
##           [,1] [,2]
## [1,]  2.218801   -2
## [2,] -2.218801    2
## 
## $Standardized_Residual
##           [,1]      [,2]
## [1,]  4.224471 -3.807887
## [2,] -4.686630  4.224471

6.4.1.4 Interpretasi

Estimasi

  1. Estimasi Titik

    Proporsi orang yang menggunakan sunscreen adalah 0.2758 atau sekitar 27.59% dan proporsi yang tidak menggunakan sunscreen adalah 0.8275 atau sekitar 82.76%

  2. Estimasi Interval

    Dengan Interval kepercayaan 95% untuk kelompok Pakai Sunscreen adalah [0.1131927, 0.4385314], dan untuk kelompok Tidak Pakai Sunscreen adalah [0.6901055, 0.9650669]

Uji Hipotesis

  1. Uji Proporsi

    Berdasarkan hasil analisis yang sudah dilakukan didapatkan X-squared sebesar 15.685 dan p-value sebesar 0.0000 yang jauh lebih kecil dari 0.05. Sehingga dapat disimpulkan bahwa terdapat perbedaan signifikansi antara proporsi yang menggunakan sunscreen dengan yang tidak. Interval kepercayaan [0.3042, 0.79919]

  2. Uji Asosiasi

    • Nilai RD = 0.5517 menunjukkan bahwa risiko melasma lebih tinggi pada kelompok yang tidak menggunakan sunscreen dibandingkan dengan kelompok yang menggunakan sunscreen, dengan perbedaan risiko sebesar 55.17%. Nilai Z yang tinggi (5.0772) menunjukkan bahwa perbedaan risiko antara kelompok yang menggunakan sunscreen dan yang tidak menggunakan sunscreen jauh lebih tinggi daripada yang diharapkan berdasarkan distribusi normal.

    • Relative Risk (RR) sebesar 4.2 menunjukkan bahwa kelompok yang tidak menggunakan sunscreen memiliki 4.2 kali lebih besar risiko untuk mengalami melasma dibandingkan dengan kelompok yang menggunakan sunscreen. Z-score yang cukup tinggi (3.3952) menunjukkan bahwa RR yang ditemukan sangat signifikan. Hal ini mengindikasikan bahwa hubungan antara penggunaan sunscreen dan melasma adalah hasil yang sangat signifikan, dan tidak mungkin disebabkan oleh kebetulan semata.

    • Odds Ratio (OR) sebesar 12.6 menunjukkan bahwa odds (peluang) untuk mengalami melasma pada kelompok yang tidak menggunakan sunscreen adalah 12.6 kali lebih tinggi dibandingkan dengan kelompok yang menggunakan sunscreen. Z-score yang sangat tinggi (3.9364) menunjukkan bahwa OR yang ditemukan sangat signifikan. Ini menandakan bahwa hubungan antara penggunaan sunscreen dan melasma sangat kuat dan nyata secara statistik.

  3. Uji Independensi

    Berdasarkan hasil analisis yang sudah dilakukan didapatkan X-squared sebesar 15.685 dan p-value sebesar 0.0000 yang jauh lebih kecil dari 0.05. Sehingga dapat disimpulkan bahwa terdapat hubungan yang signifikan antara pengguanaan sunscreen dengan kejadian melasma.

Analisis Residual

Berdasarkan analisis residual, kita dapat menyimpulkan bahwa penggunaan sunscreen secara signifikan mengurangi risiko melasma, karena residual yang sangat besar (baik positif maupun negatif) menunjukkan adanya hubungan yang kuat dan signifikan antara penggunaan sunscreen dan tingkat melasma.

BAB 7. Tabel Kontingensi 3 Arah

Bab ini membahas analisis tabel kontingensi tiga arah, yang mencakup analisis tabel parsial dan marginal, ukuran asosiasi, serta fenomena seperti Simpson’s Paradox dan independensi bersyarat. Tabel kontingensi tiga arah sangat berguna untuk mengevaluasi hubungan antara tiga variabel kategori sekaligus. Dalam beberapa situasi, hubungan antara dua variabel (misalnya X dan Y) dapat dipengaruhi oleh variabel ketiga (Z), yang berfungsi sebagai variabel kontrol atau kovariat. Tabel ini umumnya digunakan dalam analisis data yang mempertimbangkan faktor-faktor lain yang dapat mempengaruhi hubungan utama antara dua variabel. Sebagai contoh:

  • Dalam penelitian epidemiologi, untuk menyelidiki hubungan antara kebiasaan merokok (X) dan kanker paru-paru (Y) dengan memperhitungkan faktor usia (Z).
  • Dalam penelitian sosial, untuk mengkaji hubungan antara ras tersangka (X) dan keputusan hukuman mati (Y), dengan mempertimbangkan ras korban (Z).

Tabel kontingensi tiga arah dapat disusun menjadi dua jenis yakni tabel parsial dan tabel marginal.

7.1 Tabel Parsial dan Marginal

7.1.1 Tabel Parsial

Tabel parsial menunjukkan hubungan antara X dan Y setelah mengendalikan kategori Z. Hal ini memungkinkan analisis hubungan bersyarat antara dua variabel utama ketika pengaruh variabel ketiga dikontrol.

7.1.2 Tabel Marginal

Tabel marginal dihitung dengan mengabaikan variabel Z, yaitu dengan menjumlahkan kategori-kategori Z. Tabel ini memberikan gambaran umum tentang hubungan antara X dan Y tanpa memperhitungkan pengaruh dari variabel Z. Meskipun memberikan gambaran yang lebih luas, hasil analisis dari tabel marginal bisa terdistorsi oleh fenomena seperti Simpson’s Paradox, di mana tren yang terlihat dalam data dapat berubah jika variabel tambahan dipertimbangkan. Secara umum, tabel marginal lebih berguna untuk melihat asosiasi secara agregat. Namun, karena tidak mengontrol variabel pengganggu, analisis dengan tabel parsial sering kali lebih diutamakan untuk mendapatkan hasil yang lebih akurat.

Struktur Tabel Kontingensi Tiga Arah adalah sebagai berikut:

\[ \begin{array}{|c|c|c|c|c|c|c|} \hline \textbf{Z} & \textbf{X} & \textbf{Y = 1} & \textbf{Y = 2} & \dots & \textbf{Y = J} & \textbf{Y = .} \\ \hline \textbf{Z = 1} & {X = 1} & n_{111} & n_{121} & \dots & n_{1J1} & n_{1+1} \\ \textbf{} & {X = 2} & n_{211} & n_{221} & \dots & n_{2J1} & n_{2+1} \\ \textbf{} & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \textbf{} & {X = i} & n_{i11} & n_{i21} & \dots & n_{iJ1} & n_{i+1} \\ \textbf{} & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \textbf{} & {X = I} & n_{I11} & n_{I21} & \dots & n_{IJ1} & n_{I+1} \\ \hline \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \hline \textbf{Z = k} & {X = 1} & n_{11k} & n_{12k} & \dots & n_{1Jk} & n_{1+k} \\ \textbf{} & {X = 2} & n_{21k} & n_{22k} & \dots & n_{2Jk} & n_{2+k} \\ \textbf{} & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \textbf{} & {X = i} & n_{i1k} & n_{i2k} & \dots & n_{iJk} & n_{i+k} \\ \textbf{} & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \textbf{} & {X = I} & n_{I1k} & n_{I2k} & \dots & n_{IJk} & n_{I+k} \\ \hline \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \hline \textbf{Z = K} & {X = 1} & n_{11K} & n_{12K} & \dots & n_{1JK} & n_{1+K} \\ \textbf{} & {X = 2} & n_{21K} & n_{22K} & \dots & n_{2JK} & n_{2+K} \\ \textbf{} & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \textbf{} & {X = i} & n_{i1K} & n_{i2K} & \dots & n_{iJK} & n_{i+K} \\ \textbf{} & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ \textbf{} & {X = I} & n_{I1K} & n_{I2K} & \dots & n_{IJK} & n_{I+K} \\ \hline \textbf{Z = .} & {X = .} & n_{+1+} & n_{+2+} & \dots & n_{+J+} & n_{+++} \\ \hline \end{array} \]

7.2 Distribusi Peluang

7.2.1 Peluang Bersama

Peluang bersama didefinisikan sebagai:

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

Dimana:

  • \(P(Z, X, Y)\) adalah peluang bersama untuk variabel Z, X, dan Y.
  • \(f(Z, X, Y)\) adalah frekuensi bersama dari Z, X, dan Y.
  • \(N\) adalah total jumlah kejadian atau observasi.

7.2.2 Peluang Marginal

Peluang marginal untuk variabel \(Z\), \(X\), atau \(Y\) dapat dihitung dengan menjumlahkan peluang bersama pada semua nilai variabel lainnya. Sebagai contoh, untuk variabel \(Z\), peluang marginalnya dapat didefinisikan sebagai:

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

Dimana:

  • \(P(Z)\) adalah peluang marginal dari variabel \(Z\),
  • \(P(Z, X, Y)\) adalah peluang bersama antara variabel \(Z\), \(X\), dan \(Y\),
  • Penjumlahan dilakukan pada semua kombinasi nilai variabel \(X\) dan \(Y\).

Begitu pula, peluang marginal untuk variabel \(X\) dan \(Y\) dapat didefinisikan sebagai:

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

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

7.2.3 Peluang Bersyarat

Peluang bersyarat dapat dihitung dengan membagi peluang bersama antara dua atau lebih variabel dengan peluang marginal dari salah satu variabel.

1. Peluang Bersyarat \(P(Z | X, Y)\)

Peluang bersyarat \(P(Z | X, Y)\) adalah peluang variabel \(Z\) terjadi, diberikan bahwa \(X\) dan \(Y\) telah terjadi. Rumusnya adalah:

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

Dimana:

  • \(P(Z | X, Y)\) adalah peluang bersyarat \(Z\) diberikan \(X\) dan \(Y\),

  • \(P(Z, X, Y)\) adalah peluang bersama dari \(Z\), \(X\), dan \(Y\),

  • \(P(X, Y)\) adalah peluang bersama dari \(X\) dan \(Y\), yang dapat dihitung dengan menjumlahkan semua peluang bersama yang melibatkan \(X\) dan \(Y\):

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

2. Peluang Bersyarat \(P(X | Z, Y)\)

Peluang bersyarat \(P(X | Z, Y)\) adalah peluang variabel \(X\) terjadi, diberikan bahwa \(Z\) dan \(Y\) telah terjadi. Rumusnya adalah:

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

Dimana:

  • \(P(X | Z, Y)\) adalah peluang bersyarat \(X\) diberikan \(Z\) dan \(Y\),
  • \(P(Z, X, Y)\) adalah peluang bersama dari \(Z\), \(X\), dan \(Y\),
  • \(P(Z, Y)\) adalah peluang bersama dari \(Z\) dan \(Y\), yang dapat dihitung dengan menjumlahkan semua peluang bersama yang melibatkan \(Z\) dan \(Y\):

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

3. Peluang Bersyarat \(P(Y | Z, X)\)

Peluang bersyarat \(P(Y | Z, X)\) adalah peluang variabel \(Y\) terjadi, diberikan bahwa \(Z\) dan \(X\) telah terjadi. Rumusnya adalah:

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

Dimana:

  • \(P(Y | Z, X)\) adalah peluang bersyarat \(Y\) diberikan \(Z\) dan \(X\),
  • \(P(Z, X, Y)\) adalah peluang bersama dari \(Z\), \(X\), dan \(Y\),
  • \(P(Z, X)\) adalah peluang bersama dari \(Z\) dan \(X\), yang dapat dihitung dengan menjumlahkan semua peluang bersama yang melibatkan \(Z\) dan \(X\):

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

Dengan cara ini, kita dapat menghitung peluang bersyarat antara tiga variabel dalam tabel kontingensi 3 arah.

7.3 Ukuran Asosiasi

Ukuran asosiasi dalam tabel kontingensi digunakan untuk mengukur kekuatan hubungan antara dua variabel kategori. Tiga ukuran asosiasi yang umum digunakan adalah Risk Difference (RD), Relative Risk (RR), dan Odds Ratio (OR).

7.3.1 Risk Difference (RD)

Beda Peluang dihitung dengan rumus:

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

7.3.2 Risk Relative (RR)

Risiko Relatif dihitung dengan rumus:

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

7.3.3 Odds Ratio (OR)

Odds Ratio dihitung dengan rumus:

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

7.4 Conditional Independence

Conditional independence (kemandirian bersyarat) dalam tabel kontingensi terjadi ketika dua variabel menjadi independen setelah dikendalikan oleh variabel ketiga.

Secara matematis, dua variabel X dan Y dikatakan independen secara kondisional terhadap variabel Z jika:

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

Atau dalam bentuk frekuensi:

\[ \frac{n_{ijk}}{n_{k++}} = \frac{n_{i+k}}{n_{k++}} \times \frac{n_{+jk}}{n_{k++}} \]

7.5 Inferensi Tabel Kontingensi Tiga Arah

Tabel kontingensi tiga arah digunakan untuk menganalisis hubungan antara dua variabel kategorik dengan mempertimbangkan variabel kontrol.

7.5.1 Independensi Bersyarat dalam Tabel Kontingensi Tiga Arah

Independensi bersyarat adalah konsep penting dalam analisis tabel kontingensi tiga arah. Ini merujuk pada kondisi di mana dua variabel, \(X\) dan \(Y\), independen dalam setiap level variabel ketiga, \(Z\). Pengujian independensi bersyarat dilakukan dengan metode statistik seperti uji Cochran-Mantel-Haenszel (CMH).

Dua variabel, \(X\) dan \(Y\), dikatakan independen bersyarat terhadap variabel ketiga, \(Z\), jika rasio odds mereka dalam setiap strata \(Z\) sama dengan 1.

Secara matematis, ini dapat dituliskan sebagai:

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

Artinya, setelah mengendalikan pengaruh \(Z\), tidak ada hubungan antara \(X\) dan \(Y\) dalam setiap strata.

Hal yang perlu diperhatikan:

  • Meskipun \(X\) dan \(Y\) independen dalam setiap strata \(Z\), hal ini tidak berarti bahwa mereka juga independen dalam tabel marginal (keseluruhan data tanpa mempertimbangkan \(Z\)). Fenomena ini dikenal sebagai Paradoks Simpson.
  • Asumsi independensi bersyarat sering digunakan dalam studi epidemiologi, ilmu sosial, dan model pembelajaran mesin yang mengolah tabel kontingensi terstruktur.

7.5.2 Pengujian Statistik untuk Independensi Bersyarat

Pengujian statistik untuk independensi bersyarat dilakukan menggunakan Metode Cochran-Mantel-Haenszel (CMH). Tujuan Uji CMH: digunakan untuk menguji hubungan antara dua variabel kategori dengan mempertimbangkan efek dari variabel perancu (confounder). Uji ini berguna dalam:

  • Menguji hubungan yang dikendalikan oleh faktor perancu dalam tabel kontingensi berlapis (stratified contingency tables).
  • Menguji hipotesis independensi antara dua variabel kategori dengan mempertimbangkan efek dari variabel ketiga.
  • Mengatasi bias akibat confounding, misalnya dalam studi epidemiologi atau eksperimen sosial.

Uji CMH berangkat dari konsep tabel kontingensi berlapis (stratified 2 × 2 tables), di mana dua variabel utama dipecah menjadi beberapa strata berdasarkan variabel perancu. Sebagai contoh, jika kita ingin melihat hubungan antara merokok (\(X\)) dan kanker paru-paru (\(Y\)), namun juga ingin mempertimbangkan pengaruh polusi udara (\(Z\)), maka kita membuat beberapa tabel 2 × 2 berdasarkan tingkat polusi udara. CMH kemudian menguji hubungan antara \(X\) dan \(Y\) setelah mengontrol efek \(Z\).

Hipotesis yang digunakan dalam Uji CMH:

  • \(H_0\): \(\theta_{XY|Z_k} = 1\) untuk setiap \(k = 1, 2, \dots, K\)
  • \(H_1\): \(\theta_{XY|Z_k} \ne 1\) untuk paling sedikit satu \(k\)

Statistik uji Cochran-Mantel-Haenszel (CMH) dirumuskan sebagai:

\[ CMH = \frac{\sum_k (n_{1ik} - \mu_{1ik})^2}{\sum_k \text{var}(n_{1ik})} \]

Keterangan:

  • \(n_{1ik}\): nilai frekuensi sel baris 1 kolom 1 pada tabel parsial ke-\(k\).

  • \(\mu_{1ik}\): nilai ekspektasi sel baris 1 kolom 1 pada tabel parsial ke-\(k\), dihitung dengan rumus:

    \[ \mu_{1ik} = E(n_{1ik}) = \frac{n_{1.k} \cdot n_{.1k}}{n_{..}} \]

  • Varians dari \(n_{1ik}\) diberikan oleh:

    \[ \text{var}(n_{1ik}) = \frac{n_{1.k} \cdot n_{.2k} \cdot n_{1.k} \cdot n_{2k}}{n_{..}^2} \]

Statistik CMH mengikuti distribusi Chi-square dengan derajat kebebasan (db) = 1. Uji ini dilakukan dengan kriteria: Tolak \(H_0\) jika \(CMH > \chi^2_{(1)}\) atau \(p\text{-value} < \alpha\).

7.5.3 Odds Ratio Bersama

Penaksir (Khusus Tabel \(2 \times 2 \times K\))

  • Dalam tabel kontingensi \(2 \times 2 \times K\), terdapat \(K\) tabel parsial, sehingga ada sebanyak \(K\) odds ratio bersyarat relatif sama (tidak berbeda secara ekstrem) dan memiliki arah yang sama, maka kita dapat menentukan sebuah nilai tunggal untuk odds ratio yang disebut odds ratio bersama.
  • Odds ratio bersama ditaksir oleh statistik Mantel-Haenszel.

Odds ratio bersama ditaksir menggunakan rumus:

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

Dimana:

  • \(n_{11k}\): Frekuensi sel baris 1 kolom 1 pada tabel parsial ke-\(k\).
  • \(n_{12k}\): Frekuensi sel baris 1 kolom 2 pada tabel parsial ke-\(k\).
  • \(n_{21k}\): Frekuensi sel baris 1 pada tabel parsial ke-\(k\).
  • \(n_{22k}\): Frekuensi sel baris 2 pada tabel parsial ke-\(k\).
  • \(n_{..k}\): Total observasi dalam tabel parsial ke-\(k\).

Standard error untuk log odds ratio bersama dihitung dengan rumus:

\[ \sigma^2[\log(\hat{\theta}_{MH})] = \frac{{\sum(n_{11k} + n_{12k})(n_{11k}n_{22k})}/{n_{..k}^2}}{2({\sum n_{11k}n_{12k}}/{n_{..k}})^2} \\+ \frac{{\sum[(n_{11k} + n_{22k})(n_{11k} + n_{12k}) + (n_{12k} + n_{21k})(n_{11k} + n_{22k})]}/{n_{..k}^2}}{2(\sum n_{11k}n_{12k}/n_{..k})(\sum n_{12k}n_{21k}/n_{..k})} \\+ \frac{{\sum(n_{12k} + n_{212k})(n_{12k}n_{21k})}/{n_{..k}^2}}{2({\sum n_{12k}n_{21k}}/{n_{..k}})^2} \]

Interval kepercayaan untuk log odds ratio bersama ditaksir dengan rumus:

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

Odds ratio bersama digunakan untuk menyimpulkan hubungan antara dua variabel setelah mempertimbangkan efek dari variabel ketiga. Statistik Mantel-Haenszel adalah metode yang andal untuk mengestimasi dan menguji hubungan ini.

7.5.4 Uji Homogenitas Odds Ratio dengan Statistik Breslow-Day

Terlebih dahulu akan dipaparkan mengenai definisi Asosiasi Homogen sebagai berikut:

  • Asosiasi homogen terjadi jika odds ratio pada setiap tabel parsial bernilai sama:

    \[ \theta_{xy(1)} = \theta_{xy(2)} = \dots = \theta_{xy(k)} \]

  • Jika odds ratio konstan di semua strata variabel kontrol (\(Z\)), maka tidak ada interaksi antara variabel \(X\) dan \(Y\) dalam pengaruhnya terhadap \(Z\).

  • Jika odds ratio berbeda-beda antar level \(Z\), maka terdapat interaksi antara \(X\) dan \(Y\) dalam hubungannya dengan \(Z\).

Hipotesis yang digunakan dalam Uji Breslow-Day adalah sebagai berikut:

  • \(H_0\): \(\theta_{xy(k)} = \theta_{xy(1)} = \dots = \theta_{xy(K)}\) (odds ratio sama di seluruh strata)

  • \(H_1\): Setidaknya ada satu odds ratio yang berbeda.

Statistik uji Breslow-Day (BD) digunakan untuk menguji homogenitas odds ratio:

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

dimana:

- \(a_j\) adalah jumlah kasus terpapar yang diamati dalam strata \(j\).

- \(\tilde{a}_j\) adalah jumlah kasus terpapar yang dihargakan berdasarkan hipotesis nol.

- \(\hat{\text{Var}}(a_j|\hat{\\OR}_{MH})\) adalah varians dari \(a_j\).

Dengan statistik ini, kita dapat menguji apakah ada perbedaan yang signifikan dalam odds ratio antar strata. Chi-square pada uji ini mengikuti distribusi \(\chi^2_{K-1}\), dengan derajat kebebasan \(db = K-1\). Pengujian dilakukan dengan kriteria jika \(X^2_{HBD} > \chi^2_{K-1}\) atau \(p\text{-value} < \alpha\), kita tolak \(H_0\).

7.6 Contoh Kasus

7.6.1 Latar Belakang

Kejadian bunuh diri merupakan salah satu masalah kesehatan mental yang kini semakin menjadi perhatian global. Dalam beberapa tahun terakhir, angka bunuh diri menunjukkan peningkatan yang signifikan di banyak negara, termasuk Indonesia. Hal ini mencerminkan adanya masalah besar dalam aspek kesejahteraan psikologis individu yang perlu segera ditangani. Kesehatan mental yang buruk, seperti kecemasan, depresi, dan stres, dapat mempengaruhi pengambilan keputusan seseorang, termasuk keputusan untuk mengakhiri hidup. Oleh karena itu, penelitian tentang penyebab bunuh diri dan faktor-faktor yang berkontribusi pada kejadian tersebut sangat penting agar langkah-langkah pencegahan yang lebih efektif dapat dirancang.

Fokus dari penelitian ini adalah mengidentifikasi lokasi kejadian bunuh diri dan kaitannya dengan penyebab yang mungkin terjadi. Kejadian bunuh diri yang sering terjadi di rumah korban atau kerabat dekat menunjukkan bahwa faktor sosial dan interaksi dengan lingkungan sekitar sangat mempengaruhi individu dalam mengambil keputusan yang sangat drastis ini. Dalam berbagai penelitian sebelumnya, ditemukan bahwa individu yang merasa terisolasi atau tidak mendapatkan dukungan sosial yang cukup lebih rentan terhadap ide bunuh diri. Sebagai contoh, penelitian yang dilakukan oleh Gunnell et al. (2019) di The Lancet Psychiatry menunjukkan bahwa tekanan sosial dan ekonomi dapat memperburuk kondisi mental, terutama jika individu tidak memiliki akses yang memadai terhadap dukungan psikologis.

Oleh karena itu, penelitian ini bertujuan untuk menggali lebih dalam mengenai faktor-faktor yang dapat memicu tindakan bunuh diri. Dengan menggunakan pendekatan yang lebih sistematis melalui analisis data, diharapkan akan ditemukan pola-pola tertentu yang dapat membantu mencegah kejadian serupa di masa depan. Penelitian ini tidak hanya bertujuan untuk memberikan pemahaman yang lebih baik mengenai penyebab bunuh diri, tetapi juga untuk mendukung pengembangan kebijakan pencegahan yang lebih tepat sasaran. Semoga hasil dari penelitian ini dapat memberikan kontribusi dalam upaya menurunkan angka bunuh diri dan memberikan wawasan baru dalam menangani masalah kesehatan mental di Indonesia.

7.6.2 Data dan Sumber Data

Data yang digunakan ini merupakan data sekunder, dimana data dikumpulkan oleh peneliti sebelumnya. Data dapat diakses melalui tautan berikut: https://rpubs.com/reniamelia/responsi3adk. Selanjutnya data disusun dalam tabel kontingensi 3 arah berikut ini:

\[ \begin{array}{|c|c|c|c|c|} \hline \textbf{Lokasi Kejadian} & \textbf{Penyebab Cedera} & \textbf{Luka Fatal} & \textbf{Bukan Luka Fatal} & \textbf{Total} \\ \hline \multirow{2}{*}{\textbf{Rumah Korban}} & Bunuh Diri & 45 & 20 & 65 \\ \cline{2-5} & Kecelakaan & 15 & 29 & 44 \\ \hline \multirow{2}{*}{\textbf{Rumah Kerabat}} & Bunuh Diri & 13 & 12 & 25 \\ \cline{2-5} & Kecelakaan & 14 & 27 & 41 \\ \hline \multirow{2}{*}{\textbf{Lainnya}} & Bunuh Diri & 18 & 11 & 29 \\ \cline{2-5} & Kecelakaan & 11 & 29 & 40 \\ \hline \textbf{Total} & & 116 & 128 & 244 \\ \hline \end{array} \]

Data di atas terdiri dari 3 variabel, yakni Penyebab Cedera yang terdiri dari Bunuh Diri dan Kecelakaan sebagai Variabel X, Jenis Luka yang terdiri dari Luka Fatal dan Luka tidak Fatal sebagai variabel Y, dan Lokasi Kejadian yang terdiri dari Rumah Korban, Rumah Kerabat, dan Lainnya sebagai variabel Z atau variabel kontrol. Total Responden pada penelitian ini adalah sebanyak 244 orang.

7.6.3 Analisis

Terdapat beberapa hal yang akan dilakukan pada tahap analisis ini, yakni membentuk tabel parsial dan tabel marginal, menghitung distribusi peluang, mengukur asosiasi, dan melihat kebebasan bersyaratnya. Selanjutnya akan dilakukan juga inferensi dengan melihat odds ratio bersama dan homogenitas odds rationya.

7.6.3.1 Tabel Parsial

#Membentuk Tabel Parsial
data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29),
dim = c(2, 2, 3),
dimnames = list(
Penyebab = c("Bunuh Diri", "Kecelakaan"),
Luka = c("Luka Fatal", "Luka Tidak Fatal"),
Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
))

# Ekstrak tabel parsial berdasarkan usia
freq_parsial_rkorban <- data_cedera[, , "Rumah Korban"]
freq_parsial_rkerabat <- data_cedera[, , "Rumah Kerabat"]
freq_parsial_lainnya <- data_cedera[, , "Lainnya"]

# Tampilkan hasil
freq_parsial_rkorban
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri         40               20
##   Kecelakaan         15               29
freq_parsial_rkerabat
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri         13               12
##   Kecelakaan         14               27
freq_parsial_lainnya 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri         18               11
##   Kecelakaan         11               29

Dari proses pembentukan tabel parsial menggunakan syntax R di atas, didapatkan:

  1. Tabel Parsial Lokasi: Rumah Korban \[ \begin{array}{|c|c|c|} \hline \textbf{Penyebab Cedera} & \textbf{Luka Fatal} & \textbf{Bukan Luka Fatal} \\ \hline \textbf{Bunuh Diri} & 40 & 20 \\ \hline \textbf{Kecelakaan} & 15 & 29 \\ \hline \end{array} \]
  2. Tabel Parsial Lokasi: Rumah Kerabat \[ \begin{array}{|c|c|c|} \hline \textbf{Penyebab Cedera} & \textbf{Luka Fatal} & \textbf{Bukan Luka Fatal} \\ \hline \textbf{Bunuh Diri} & 13 & 12 \\ \hline \textbf{Kecelakaan} & 14 & 27 \\ \hline \end{array} \]
  3. Tabel Parsial Lokasi: Selain Rumah Korban dan Rumah Kerabat \[ \begin{array}{|c|c|c|} \hline \textbf{Penyebab Cedera} & \textbf{Luka Fatal} & \textbf{Bukan Luka Fatal} \\ \hline \textbf{Bunuh Diri} & 18 & 11 \\ \hline \textbf{Kecelakaan} & 11 & 29 \\ \hline \end{array} \]

7.6.3.2 Tabel Marginal

data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29),
dim = c(2, 2, 3),
dimnames = list(
Penyebab = c("Bunuh Diri", "Kecelakaan"),
Luka = c("Luka Fatal", "Luka Tidak Fatal"),
Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
))
#Hitungfrekuensimarginal
freq_marginal_X<-apply(data_cedera,1,sum)
freq_marginal_Z<-apply(data_cedera,3,sum)
#Tampilkanhasil
freq_marginal_X
## Bunuh Diri Kecelakaan 
##        114        125
freq_marginal_Z
##  Rumah Korban Rumah Kerabat       Lainnya 
##           104            66            69
  1. Tabel Marginal Luka:

\[ \begin{array}{|c|c|} \hline \textbf{Luka Fatal} & \textbf{Bukan Luka Fatal} \\ \hline 114 & 125 \\ \hline \end{array} \]

  1. Tabel Marginal Lokasi:

\[ \begin{array}{|c|c|c|} \hline \textbf{Rumah Korban} & \textbf{Rumah Kerabat} & \textbf{Lainnya} \\ \hline 104 & 66 & 69 \\ \hline \end{array} \]

7.6.3.3 Distribusi Peluang

Peluang Bersama

data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29),
dim = c(2, 2, 3),
dimnames = list(
Penyebab = c("Bunuh Diri", "Kecelakaan"),
Luka = c("Luka Fatal", "Luka Tidak Fatal"),
Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
))

# Hitung probabilitas bersama
total <- sum(data_cedera)
joint_prob <- data_cedera / total

# Tampilkan hasil
ftable(joint_prob)
##                             Lokasi Rumah Korban Rumah Kerabat    Lainnya
## Penyebab   Luka                                                         
## Bunuh Diri Luka Fatal                0.16736402    0.05439331 0.07531381
##            Luka Tidak Fatal          0.08368201    0.05020921 0.04602510
## Kecelakaan Luka Fatal                0.06276151    0.05857741 0.04602510
##            Luka Tidak Fatal          0.12133891    0.11297071 0.12133891

Peluang Marginal

data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29),
dim = c(2, 2, 3),
dimnames = list(
Penyebab = c("Bunuh Diri", "Kecelakaan"),
Luka = c("Luka Fatal", "Luka Tidak Fatal"),
Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
))

# Hitung probabilitas bersama
total <- sum(data_cedera)
joint_prob <- data_cedera / total

# Hitung probabilitas marginal
marginal_X <- apply(joint_prob, 1, sum)
marginal_Y <- apply(joint_prob, 2, sum)
marginal_Z <- apply(joint_prob, 3, sum)

# Tampilkan hasil
marginal_X
## Bunuh Diri Kecelakaan 
##  0.4769874  0.5230126
marginal_Y
##       Luka Fatal Luka Tidak Fatal 
##        0.4644351        0.5355649
marginal_Z
##  Rumah Korban Rumah Kerabat       Lainnya 
##     0.4351464     0.2761506     0.2887029

Peluang Bersyarat

# Data cedera dalam bentuk array 3D
data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29), 
                     dim = c(2, 2, 3), 
                     dimnames = list(
                       Penyebab = c("Bunuh Diri", "Kecelakaan"),
                       Luka = c("Luka Fatal", "Luka Tidak Fatal"),
                       Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
                     ))

# Menghitung total dari semua data cedera
total <- sum(data_cedera)

# Menghitung P(Z, X, Y) yaitu peluang total dari X, Y, dan Z
p_zxy <- data_cedera / total  # Peluang total (total data)

# Menghitung P(X, Y), peluang bersama dari X dan Y (mengabaikan Z)
p_xy <- apply(data_cedera, c(1, 2), sum) / total

# Memperluas p_xy ke dimensi 3D untuk kompatibilitas
p_xy_expanded <- array(rep(p_xy, each = 3), dim = c(2, 2, 3))

# Menghitung P(Z | X, Y) dengan rumus P(Z | X, Y) = P(Z, X, Y) / P(X, Y)
p_z_given_xy <- p_zxy / p_xy_expanded
p_z_given_xy
## , , Lokasi = Rumah Korban
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri  0.5633803        0.2816901
##   Kecelakaan  0.2112676        0.7250000
## 
## , , Lokasi = Rumah Kerabat
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri      0.325        0.2790698
##   Kecelakaan      0.350        0.6279070
## 
## , , Lokasi = Lainnya
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri  0.4186047        0.1294118
##   Kecelakaan  0.1294118        0.3411765
# Menghitung P(X, Z), peluang bersama dari X dan Z (mengabaikan Y)
p_xz <- apply(data_cedera, c(1, 3), sum) / total

# Memperluas p_xz ke dimensi 3D untuk kompatibilitas
p_xz_expanded <- array(rep(p_xz, each = 2), dim = c(2, 2, 3))

# Menghitung P(Y | X, Z) dengan rumus P(Y | X, Z) = P(X, Y, Z) / P(X, Z)
p_y_given_xz <- p_zxy / p_xz_expanded
p_y_given_xz
## , , Lokasi = Rumah Korban
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri  0.6666667        0.4545455
##   Kecelakaan  0.2500000        0.6590909
## 
## , , Lokasi = Rumah Kerabat
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri       0.52        0.2926829
##   Kecelakaan       0.56        0.6585366
## 
## , , Lokasi = Lainnya
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri  0.6206897            0.275
##   Kecelakaan  0.3793103            0.725
# Menghitung P(Y, Z), peluang bersama dari Y dan Z (mengabaikan X)
p_yz <- apply(data_cedera, c(2, 3), sum) / total

# Memperluas p_yz ke dimensi 3D untuk kompatibilitas
p_yz_expanded <- array(rep(p_yz, each = 2), dim = c(2, 2, 3))

# Menghitung P(X | Y, Z) dengan rumus P(X | Y, Z) = P(X, Y, Z) / P(Y, Z)
p_x_given_yz <- p_zxy / p_yz_expanded
p_x_given_yz
## , , Lokasi = Rumah Korban
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri  0.7272727        0.4081633
##   Kecelakaan  0.2727273        0.5918367
## 
## , , Lokasi = Rumah Kerabat
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri  0.4814815        0.3076923
##   Kecelakaan  0.5185185        0.6923077
## 
## , , Lokasi = Lainnya
## 
##             Luka
## Penyebab     Luka Fatal Luka Tidak Fatal
##   Bunuh Diri  0.6206897            0.275
##   Kecelakaan  0.3793103            0.725

7.6.3.4 Ukuran Asosiasi

Lokasi: Rumah Korban

# Perhitungan Ukuran Asosiasi
# Risk Difference
RD <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12))- (n21 / (n21 + n22))
}

# Risk Relative
RR <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12)) / (n21 / (n21 + n22))
}

# Odds Ratio
OR <- function(n11, n12, n21, n22) {
 (n11 * n22) / (n12 * n21)
}

# Hasil
list(Risk_Difference = RD(40, 20, 15, 29), Risk_Relative = RR(40, 20, 15, 29)
, Odds_Ratio = OR(40, 20, 15, 29))
## $Risk_Difference
## [1] 0.3257576
## 
## $Risk_Relative
## [1] 1.955556
## 
## $Odds_Ratio
## [1] 3.866667

Lokasi: Rumah Kerabat

# Perhitungan Ukuran Asosiasi
# Risk Difference
RD <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12))- (n21 / (n21 + n22))
}

# Risk Relative
RR <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12)) / (n21 / (n21 + n22))
}

# Odds Ratio
OR <- function(n11, n12, n21, n22) {
 (n11 * n22) / (n12 * n21)
}

# Hasil
list(Risk_Difference = RD(13, 12, 14, 27), Risk_Relative = RR(13, 12, 14, 27)
, Odds_Ratio = OR(13, 12, 14, 27))
## $Risk_Difference
## [1] 0.1785366
## 
## $Risk_Relative
## [1] 1.522857
## 
## $Odds_Ratio
## [1] 2.089286

Lokasi: Lainnya

# Perhitungan Ukuran Asosiasi
# Risk Difference
RD <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12))- (n21 / (n21 + n22))
}

# Risk Relative
RR <- function(n11, n12, n21, n22) {
 (n11 / (n11 + n12)) / (n21 / (n21 + n22))
}

# Odds Ratio
OR <- function(n11, n12, n21, n22) {
 (n11 * n22) / (n12 * n21)
}

# Hasil
list(Risk_Difference = RD(18, 11, 11, 29), Risk_Relative = RR(18, 11, 11, 29)
, Odds_Ratio = OR(18, 11, 11, 29))
## $Risk_Difference
## [1] 0.3456897
## 
## $Risk_Relative
## [1] 2.257053
## 
## $Odds_Ratio
## [1] 4.31405

7.6.3.5 Conditional Independence

data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29),
dim = c(2, 2, 3),
dimnames = list(
Penyebab = c("Bunuh Diri", "Kecelakaan"),
Luka = c("Luka Fatal", "Luka Tidak Fatal"),
Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
))

# Hitung Uji Chi-sq untuk masing-masing kelompok lokasi kejadian cedera
chisq_rumahkorban <- chisq.test(data_cedera[,,"Rumah Korban"])
chisq_rumahkerabat <- chisq.test(data_cedera[,,"Rumah Kerabat"])
chisq_lainnya <- chisq.test(data_cedera[,,"Lainnya"])
 
# Tampilkan hasil
chisq_rumahkorban
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_cedera[, , "Rumah Korban"]
## X-squared = 9.5432, df = 1, p-value = 0.002007
chisq_rumahkerabat
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_cedera[, , "Rumah Kerabat"]
## X-squared = 1.3759, df = 1, p-value = 0.2408
chisq_lainnya
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_cedera[, , "Lainnya"]
## X-squared = 6.8878, df = 1, p-value = 0.008679

7.6.3.6 Inferensi Tabel Kontingensi Tiga Arah

Uji Odds Ratio Bersama

data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29),
dim = c(2, 2, 3),
dimnames = list(
Penyebab = c("Bunuh Diri", "Kecelakaan"),
Luka = c("Luka Fatal", "Luka Tidak Fatal"),
Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
))

#Uji CMH
cmh_base <- mantelhaen.test(data_cedera, correct = FALSE)
cmh_base
## 
##  Mantel-Haenszel chi-squared test without continuity correction
## 
## data:  data_cedera
## Mantel-Haenszel X-squared = 19.787, df = 1, p-value = 8.655e-06
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.952218 5.735161
## sample estimates:
## common odds ratio 
##          3.346085

Uji Homogenitas Odds Ratio

 data_cedera <- array(c(40, 15, 20, 29, 13, 14, 12, 27, 18, 11, 11, 29),
dim = c(2, 2, 3),
dimnames = list(
Penyebab = c("Bunuh Diri", "Kecelakaan"),
Luka = c("Luka Fatal", "Luka Tidak Fatal"),
Lokasi = c("Rumah Korban", "Rumah Kerabat", "Lainnya")
))
 bd_test <- BreslowDayTest(data_cedera)
 print(bd_test)
## 
##  Breslow-Day test on Homogeneity of Odds Ratios
## 
## data:  data_cedera
## X-squared = 1.1863, df = 2, p-value = 0.5526

7.6.4 Interpretasi

7.6.4.1 Distribusi Peluang

1. Peluang Bersama (Joint Probability)

Pada bagian ini, kita menghitung probabilitas bersama untuk kombinasi antara penyebab, luka, dan lokasi kejadian. Probabilitas bersama ini menunjukkan kemungkinan terjadinya kombinasi spesifik antara ketiga faktor tersebut. Berikut adalah beberapa hasil dari perhitungan probabilitas bersama:

  • Probabilitas bersama untuk kombinasi Penyebab = Bunuh Diri, Luka = Luka Fatal, Lokasi = Rumah Korban ini adalah 0.16736402. Artinya, kemungkinan terjadi kejadian bunuh diri yang menyebabkan luka fatal di rumah korban adalah 16.73%.

  • Probabilitas Penyebab = Bunuh Diri, Luka = Luka Fatal, Lokasi = Rumah Kerabat adalah 0.0549331. Ini berarti bahwa kemungkinan bunuh diri menyebabkan luka fatal di rumah kerabat adalah 5.49%.

  • Probabilitas Penyebab = Bunuh Diri, Luka = Luka Tidak Fatal, Lokasi = Rumah Korban adalah 0.08368201. Ini menunjukkan bahwa kemungkinan bunuh diri menyebabkan luka tidak fatal di rumah korban adalah 8.37%.

  • Probabilitas Penyebab = Kecelakaan, Luka = Luka Fatal, Lokasi = Rumah Korban adalah 0.06276151. Dengan demikian, kecelakaan yang menyebabkan luka fatal di rumah korban memiliki kemungkinan sekitar 6.28%.

  • Probabilitas Penyebab = Kecelakaan, Luka = Luka Tidak Fatal, Lokasi = Rumah Kerabat adalah 0.05002921. Ini menunjukkan kemungkinan kecelakaan yang menyebabkan luka tidak fatal di rumah kerabat adalah 5.00%.

  • ProbabilitasPenyebab = Kecelakaan, Luka = Luka Tidak Fatal, Lokasi = Lainnya adalah 0.04602510, artinya kemungkinan kecelakaan menyebabkan luka tidak fatal di lokasi selain rumah korban atau kerabat adalah 4.60%.

2. Peluang Marginal (Marginal Probability)

Peluang marginal dihitung dengan menjumlahkan nilai-nilai dari probabilitas bersama untuk satu kategori tertentu, tanpa memperhatikan kategori lainnya. Berikut adalah perhitungan peluang marginal:

  • Probabilitas marginal untuk kejadian penyebab bunuh diri adalah 0.4769874. Ini menunjukkan bahwa kemungkinan kejadian bunuh diri, tanpa mempertimbangkan jenis luka dan lokasi, adalah sekitar 47.70%.
  • Probabilitas marginal untuk penyebab kecelakaan adalah 0.5230126, yang berarti ada 52.30% kemungkinan bahwa kejadian tersebut disebabkan oleh kecelakaan.
  • Probabilitas marginal untuk luka fatal adalah 0.5230126, artinya sekitar 52.30% dari kejadian yang terjadi menyebabkan luka fatal.
  • Probabilitas marginal untuk luka tidak fatal adalah 0.4769874, yang berarti sekitar 47.70% kejadian yang terjadi menyebabkan luka yang tidak fatal.
  • Probabilitas marginal untuk kejadian yang terjadi di rumah korban adalah 0.4351464, yang menunjukkan bahwa 43.51% kejadian terjadi di rumah korban.
  • Probabilitas marginal untuk kejadian di rumah kerabat adalah 0.2761506, yang berarti 27.62% kejadian terjadi di rumah kerabat.
  • Probabilitas marginal untuk lokasi lainnya adalah 0.2880729, yang menunjukkan bahwa 28.81% kejadian terjadi di lokasi selain rumah korban atau kerabat.

3. Peluang Bersyarat (Conditional Probability)

Setelah melakukan perhitungan menggunakan data cedera, kita memperoleh hasil probabilitas bersyarat untuk tiga kombinasi yang berbeda: \(P(Z | X, Y)\), \(P(Y | X, Z)\), dan \(P(X | Y, Z)\). Di bawah ini adalah interpretasi dari masing-masing hasil.

a. \(P(Z | X, Y)\) - Probabilitas Lokasi (Z) Berdasarkan Penyebab (X) dan Luka (Y)

Hasil pertama menunjukkan \(P(Z | X, Y)\), yaitu probabilitas Lokasi (Z) berdasarkan Penyebab (X) dan Luka (Y). Berikut adalah interpretasi dari hasil perhitungan:

  • Lokasi = Rumah Korban:
    • Penyebab = Bunuh Diri, Luka = Luka Fatal: Probabilitas Lokasi = Rumah Korban adalah 0.5633803 atau 56.34%.
    • Penyebab = Bunuh Diri, Luka = Luka Tidak Fatal: Probabilitas Lokasi = Rumah Korban adalah 0.2816901 atau 28.17%.
    • Penyebab = Kecelakaan, Luka = Luka Fatal: Probabilitas Lokasi = Rumah Korban adalah 0.2112676 atau 21.13%.
    • Penyebab = Kecelakaan, Luka = Luka Tidak Fatal: Probabilitas Lokasi = Rumah Korban adalah 0.7250000 atau 72.50%.
  • Lokasi = Rumah Kerabat:
    • Penyebab = Bunuh Diri, Luka = Luka Fatal: Probabilitas Lokasi = Rumah Kerabat adalah 0.325 atau 32.50%.
    • Penyebab = Bunuh Diri, Luka = Luka Tidak Fatal: Probabilitas Lokasi = Rumah Kerabat adalah 0.2790698 atau 27.91%.
    • Penyebab = Kecelakaan, Luka = Luka Fatal: Probabilitas Lokasi = Rumah Kerabat adalah 0.350 atau 35.00%.
    • Penyebab = Kecelakaan, Luka = Luka Tidak Fatal: Probabilitas Lokasi = Rumah Kerabat adalah 0.6279070 atau 62.79%.
  • Lokasi = Lainnya:
    • Penyebab = Bunuh Diri, Luka = Luka Fatal: Probabilitas Lokasi = Lainnya adalah 0.2112676 atau 21.13%.
    • Penyebab = Bunuh Diri, Luka = Luka Tidak Fatal: Probabilitas Lokasi = Lainnya adalah 0.4392457 atau 43.92%.
    • Penyebab = Kecelakaan, Luka = Luka Fatal: Probabilitas Lokasi = Lainnya adalah 0.4386364 atau 43.86%.
    • Penyebab = Kecelakaan, Luka = Luka Tidak Fatal: Probabilitas Lokasi = Lainnya adalah 0.6122642 atau 61.23%.

Probabilitas lokasi kejadian cenderung lebih tinggi pada Rumah Korban untuk luka fatal yang disebabkan oleh Bunuh Diri, namun Rumah Kerabat lebih mungkin terjadi pada Kecelakaan yang menyebabkan luka tidak fatal. Lokasi = Lainnya lebih sering terjadi pada Kecelakaan dengan luka tidak fatal.

b. \(P(Y | X, Z)\) - Probabilitas Luka (Y) Berdasarkan Penyebab (X) dan Lokasi (Z)

Hasil kedua menunjukkan \(P(Y | X, Z)\), yaitu probabilitas Luka (Y) berdasarkan Penyebab (X) dan Lokasi (Z). Berikut adalah interpretasi dari hasil perhitungan:

  • Lokasi = Rumah Korban:
    • Penyebab = Bunuh Diri, Lokasi = Rumah Korban:
      • P(Luka Fatal Bunuh Diri, Rumah Korban) adalah 0.6666667 atau 66.67%.
      • P(Luka Tidak Fatal | Bunuh Diri, Rumah Korban) adalah 0.3333333 atau 33.33%.
    • Penyebab = Kecelakaan, Lokasi = Rumah Korban:
      • P(Luka Fatal | Kecelakaan, Rumah Korban) adalah 0.5200000 atau 52.00%.
      • P(Luka Tidak Fatal | Kecelakaan, Rumah Korban) adalah 0.4800000 atau 48.00%.
  • Lokasi = Rumah Kerabat:
    • Penyebab = Bunuh Diri, Lokasi = Rumah Kerabat:
      • P(Luka Fatal | Bunuh Diri, Rumah Kerabat) adalah 0.52 atau 52%.
      • P(Luka Tidak Fatal | Bunuh Diri, Rumah Kerabat) adalah 0.48 atau 48%.
    • Penyebab = Kecelakaan, Lokasi = Rumah Kerabat:
      • P(Luka Fatal | Kecelakaan, Rumah Kerabat) adalah 0.7272727 atau 72.73%.
      • P(Luka Tidak Fatal | Kecelakaan, Rumah Kerabat) adalah 0.2727273 atau 27.27%.
  • Lokasi = Lainnya:
    • Penyebab = Bunuh Diri, Lokasi = Lainnya:
      • P(Luka Fatal | Bunuh Diri, Lainnya) adalah 0.6206897 atau 62.07%.
      • P(Luka Tidak Fatal | Bunuh Diri, Lainnya) adalah 0.3793103 atau 37.93%.
    • Penyebab = Kecelakaan, Lokasi = Lainnya:
      • P(Luka Fatal | Kecelakaan, Lainnya) adalah 0.7272727 atau 72.73%.
      • P(Luka Tidak Fatal | Kecelakaan, Lainnya) adalah 0.2727273 atau 27.27%.

Probabilitas luka fatal lebih tinggi pada Rumah Kerabat untuk Kecelakaan, sementara untuk Bunuh Diri, luka fatal lebih tinggi terjadi di Rumah Korban. Namun, untuk Lokasi = Lainnya, ada lebih banyak kemungkinan luka fatal baik untuk Bunuh Diri maupun Kecelakaan.

3. \(P(X | Y, Z)\) - Probabilitas Penyebab (X) Berdasarkan Luka (Y) dan Lokasi (Z)

Hasil ketiga menunjukkan \(P(X | Y, Z)\), yaitu probabilitas Penyebab (X) berdasarkan Luka (Y) dan Lokasi (Z). Berikut adalah interpretasi dari hasil perhitungan:

  • Lokasi = Rumah Korban:
    • Luka = Luka Fatal, Lokasi = Rumah Korban:
      • P(Bunuh Diri | Luka Fatal, Rumah Korban) adalah 0.6666667 atau 66.67%.
      • P(Kecelakaan | Luka Fatal, Rumah Korban) adalah 0.3333333 atau 33.33%.
    • Luka = Luka Tidak Fatal, Lokasi = Rumah Korban:
      • P(Bunuh Diri | Luka Tidak Fatal, Rumah Korban) adalah 0.25 atau 25%.
      • P(Kecelakaan | Luka Tidak Fatal, Rumah Korban) adalah 0.75 atau 75%.
  • Lokasi = Rumah Kerabat:
    • Luka = Luka Fatal, Lokasi = Rumah Kerabat:
      • P(Bunuh Diri | Luka Fatal, Rumah Kerabat) adalah 0.48 atau 48%.
      • P(Kecelakaan | Luka Fatal, Rumah Kerabat) adalah 0.52 atau 52%.
    • Luka = Luka Tidak Fatal, Lokasi = Rumah Kerabat:
      • P(Bunuh Diri | Luka Tidak Fatal, Rumah Kerabat) adalah 0.38 atau 38%.
      • P(Kecelakaan | Luka Tidak Fatal, Rumah Kerabat) adalah 0.62 atau 62%.
  • Lokasi = Lainnya:
    • Luka = Luka Fatal, Lokasi = Lainnya:
      • P(Bunuh Diri | Luka Fatal, Lainnya) adalah 0.62 atau 62%.
      • P(Kecelakaan | Luka Fatal, Lainnya) adalah 0.38 atau 38%.
    • Luka = Luka Tidak Fatal, Lokasi = Lainnya:
      • P(Bunuh Diri | Luka Tidak Fatal, Lainnya) adalah 0.38 atau 38%.
      • P(Kecelakaan | Luka Tidak Fatal, Lainnya) adalah 0.62 atau 62%.

Probabilitas Penyebab (X) untuk Luka Fatal lebih besar untuk Bunuh Diri di Rumah Korban, namun untuk Luka Tidak Fatal, Kecelakaan lebih mendominasi di Rumah Korban dan Rumah Kerabat.

7.6.4.2 Ukuran Asosiasi

  1. Lokasi: Rumah Korban

    Risk Difference (RD): 0.3257576 RD = 0.3257576 menunjukkan bahwa perbedaan risiko antara dua kelompok (misalnya antara Bunuh Diri dan Kecelakaan) adalah 32.58% di Rumah Korban. Artinya, risiko suatu kejadian (misalnya luka fatal) di rumah korban lebih tinggi dengan selisih 32.58%.

    Risk Relative (RR): 1.955556 RR = 1.955556 menunjukkan bahwa kejadian Luka Fatal (atau kejadian yang sedang dianalisis) pada Penyebab Bunuh Diri di Rumah Korban memiliki risiko yang hampir 2 kali lebih tinggi dibandingkan dengan Penyebab Kecelakaan di tempat yang sama.

    Odds Ratio (OR): 3.866667 OR = 3.866667 menunjukkan bahwa odds untuk Luka Fatal pada Penyebab Bunuh Diri di Rumah Korban adalah sekitar 3.87 kali lebih tinggi dibandingkan dengan Penyebab Kecelakaan di tempat yang sama.

  2. Lokasi: Rumah Kerabat

    Risk Difference (RD): 0.1785366 RD = 0.1785366 menunjukkan perbedaan risiko antara kelompok Penyebab Bunuh Diri dan Kecelakaan di Rumah Kerabat adalah 17.85%. Artinya, ada perbedaan risiko yang lebih kecil dibandingkan dengan Rumah Korban.

    Risk Relative (RR): 1.522857 RR = 1.522857 menunjukkan bahwa risiko kejadian yang dianalisis di Penyebab Bunuh Diri di Rumah Kerabat adalah sekitar 1.52 kali lebih tinggi dibandingkan dengan Penyebab Kecelakaan di lokasi yang sama.

    Odds Ratio (OR): 2.089286 OR = 2.089286 menunjukkan bahwa odds untuk Luka Fatal pada Penyebab Bunuh Diri di Rumah Kerabat adalah sekitar 2.09 kali lebih tinggi dibandingkan dengan Penyebab Kecelakaan di rumah kerabat.

  3. Lokasi: Lainnya

    Risk Difference (RD): 0.3456897 RD = 0.3456897 menunjukkan perbedaan risiko yang lebih besar antara kelompok Bunuh Diri dan Kecelakaan di Lokasi Lainnya sebesar 34.57%. Ini adalah perbedaan risiko terbesar di antara ketiga lokasi yang dianalisis.

    Risk Relative (RR): 2.257053 RR = 2.257053 menunjukkan bahwa risiko untuk Luka Fatal pada Penyebab Bunuh Diri di Lokasi Lainnya adalah 2.26 kali lebih tinggi dibandingkan dengan Penyebab Kecelakaan di lokasi yang sama.

    Odds Ratio (OR): 4.31405 OR = 4.31405 menunjukkan bahwa odds untuk Luka Fatal pada Penyebab Bunuh Diri di Lokasi Lainnya adalah sekitar 4.31 kali lebih tinggi dibandingkan dengan Penyebab Kecelakaan di tempat tersebut.

7.6.4.3 Conditional Independence

Hasil uji Chi-Square dengan Koreksi Kontinuitas Yates menunjukkan apakah ada hubungan yang signifikan antara Penyebab (X), Luka (Y), dan Lokasi (Z). Hasil uji ini menguji hipotesis null yang menyatakan bahwa Penyebab, Luka, dan Lokasi adalah independen, dibandingkan dengan alternatif yang menyatakan adanya hubungan antar ketiganya.

  1. Lokasi = Rumah Korban

    Hasil uji Chi-Square untuk Rumah Korban menunjukkan nilai X-squared sebesar 9.5432 dengan p-value sebesar 0.002007. Dengan p-value yang lebih kecil dari 0.05, kita dapat menolak hipotesis nol dan menyimpulkan bahwa ada hubungan yang signifikan antara Penyebab, Luka, dan Lokasi = Rumah Korban. Artinya, kejadian yang terjadi di Rumah Korban (baik itu Bunuh Diri atau Kecelakaan) berhubungan dengan jenis Luka yang terjadi (misalnya, Luka Fatal atau Luka Tidak Fatal).

  2. Lokasi = Rumah Kerabat

    Hasil uji Chi-Square untuk Rumah Kerabat menunjukkan nilai X-squared sebesar 1.3759 dengan p-value sebesar 0.2408. Dengan p-value yang lebih besar dari 0.05, kita gagal menolak hipotesis nol, yang berarti tidak ada hubungan yang signifikan antara Penyebab, Luka, dan Lokasi = Rumah Kerabat. Ini menunjukkan bahwa kejadian Luka di Rumah Kerabat tidak memiliki hubungan yang signifikan dengan Penyebab kejadian tersebut.

  3. Lokasi = Lainnya

    Hasil uji Chi-Square untuk Lokasi = Lainnya menunjukkan nilai X-squared sebesar 6.8878 dengan p-value sebesar 0.008679. Dengan p-value yang lebih kecil dari 0.05, kita dapat menolak hipotesis nol dan menyimpulkan bahwa ada hubungan yang signifikan antara Penyebab, Luka, dan Lokasi = Lainnya. Ini menunjukkan bahwa kejadian Luka di Lokasi Lainnya (misalnya, di luar rumah korban atau rumah kerabat) berhubungan dengan penyebabnya, baik itu Bunuh Diri atau Kecelakaan.

7.6.4.4 Odds Ratio Bersama

Uji Mantel-Haenszel menunjukkan bahwa ada hubungan yang sangat signifikan antara Penyebab, Luka, dan Lokasi. Penyebab Bunuh Diri memiliki kemungkinan lebih tinggi untuk menghasilkan Luka Fatal dibandingkan Kecelakaan, dengan odds kejadian tersebut 3.35 kali lebih besar dibandingkan dengan Kecelakaan di seluruh lokasi. Hasil ini memberikan gambaran bahwa lokasi tempat kejadian (misalnya Rumah Korban atau Rumah Kerabat) memengaruhi hubungan antara Penyebab dan Luka yang terjadi.

7.6.4.5 Homogenitas Odds Ratio

Hasil uji Breslow-Day menunjukkan bahwa odds ratio adalah homogen (sama) di seluruh strata yang diuji. Karena p-value lebih besar dari 0.05, kita tidak dapat menyimpulkan adanya perbedaan yang signifikan dalam odds ratio di antara strata-strata yang berbeda.

BAB 8. Generalized Linear Model

Generalized Linear Model (GLM) merupakan perluasan dari model regresi linear klasik. GLM memungkinkan kita untuk memodelkan data di mana variabel respons tidak terdistribusi normal dan/atau hubungan antara variabel prediktor dengan rata-rata dari respons tidak linear.

GLM terdiri dari tiga komponen utama:

  1. Distribusi dari exponential family untuk variabel respons.
  2. Fungsi link yang menghubungkan ekspektasi dari variabel respons ke kombinasi linear dari prediktor.
  3. Fungsi linear prediktor: \(\eta = X\beta\)

8.1 Eksponential Family

Distribusi termasuk dalam exponential family jika dapat ditulis dalam bentuk:

\[ f(y; \theta, \phi) = \exp\left\{ \frac{y\theta - b(\theta)}{\phi} + c(y, \phi) \right\} \]

Beberapa contoh distribusi yang termasuk dalam exponential family adalah: - Distribusi Normal - Distribusi Binomial - Distribusi Poisson - Distribusi Gamma

Contoh Pembuktian: Distribusi Binomial

Fungsi probabilitas distribusi binomial adalah:

\[ P(Y = y) = \binom{n}{y} \pi^y (1-\pi)^{n-y} \]

Kita tuliskan ulang dalam bentuk exponential family:

\[ P(Y = y) = \exp\left( \log \left( \binom{n}{y} \right) + y \log(\pi) + (n-y) \log(1-\pi) \right) \] - \(\theta = \log \left(\frac{\pi}{1-\pi}\right)\) - \(b(\theta) = -n \log(1-\pi)\) - \(\phi = 1\)

Maka distribusi binomial termasuk dalam exponential family.

8.2 Model Regresi Logistik

Persamaan regresi logistik menyerupai regresi linear, di mana nilai input dikombinasikan secara linear dengan koefisien (bobot) untuk menghasilkan prediksi. Namun, regresi logistik membatasi hasil prediksi menjadi nilai biner, yaitu 0 atau 1, dengan menggunakan fungsi aktivasi sigmoid. Output yang diprediksi oleh model terletak dalam rentang antara 0 hingga 1 dan mengikuti bentuk kurva S (S-shaped). Regresi logistik menganalisis hubungan antara satu atau lebih variabel independen dan mengklasifikasikan data ke dalam kelas-kelas diskrit. Model ini banyak digunakan dalam pemodelan prediktif, di mana model memperkirakan probabilitas matematis apakah suatu entitas termasuk ke dalam kategori tertentu atau tidak. Sebagai contoh, angka 0 dapat mewakili kelas negatif, dan angka 1 mewakili kelas positif. Regresi logistik biasanya digunakan untuk masalah klasifikasi biner, di mana variabel hasil hanya memiliki dua kemungkinan kategori (0 dan 1). Beberapa contoh penerapan klasifikasi biner di mana respons biner diharapkan atau tersirat antara lain:

  • Menentukan probabilitas serangan jantung: Dengan menggunakan model logistik, tenaga medis dapat menentukan hubungan antara variabel-variabel seperti berat badan, olahraga, dan sebagainya, untuk memprediksi apakah seseorang berisiko mengalami serangan jantung atau komplikasi medis lainnya.

  • Kemungkinan diterima di universitas: Sistem aplikasi dapat memperkirakan probabilitas seorang siswa untuk diterima di universitas tertentu atau program studi tertentu dengan menganalisis hubungan antara variabel-variabel penentu seperti skor GRE, GMAT, atau TOEFL.

  • Mendeteksi email spam: Kotak masuk email difilter untuk menentukan apakah suatu email merupakan komunikasi promosi atau spam dengan cara memahami variabel prediktor dan menerapkan algoritma regresi logistik untuk memeriksa keaslian.

Keunggulan Utama Regresi Logistik

Regresi logistik lebih mudah diterapkan dalam metode pembelajaran mesin Model pembelajaran mesin dapat dibangun secara efektif dengan menggunakan proses training (pelatihan) dan testing (pengujian). Proses pelatihan bertujuan untuk mengenali pola dalam data masukan (misalnya gambar) dan mengaitkannya dengan keluaran tertentu (label). Melatih model logistik dengan algoritma regresi tidak membutuhkan daya komputasi yang tinggi. Oleh karena itu, regresi logistik lebih mudah diimplementasikan, ditafsirkan, dan dilatih dibandingkan metode machine learning lainnya.

Penerapan Regresi Logistik

  1. Cocok untuk data yang dapat dipisahkan secara linear: Dataset yang dapat dipisahkan secara linear mengacu pada grafik di mana dua kelas data dapat dipisahkan oleh garis lurus. Dalam regresi logistik, variabel respons (y) hanya memiliki dua nilai. Oleh karena itu, jika data bersifat dapat dipisahkan secara linear, maka klasifikasi ke dalam dua kelas berbeda dapat dilakukan secara efektif.

  2. Memberikan wawasan yang berharga: Regresi logistik dapat mengukur seberapa relevan atau penting suatu variabel independen/prediktor (melalui ukuran koefisien), serta menunjukkan arah hubungan atau asosiasi antara prediktor dan respons (apakah positif atau negatif).

  3. Persamaan dan Asumsi dalam Regresi Logistik: Regresi logistik menggunakan fungsi logistik yang disebut fungsi sigmoid untuk memetakan prediksi dan probabilitas. Fungsi sigmoid adalah kurva berbentuk huruf S (S-shaped curve) yang menunjukkan nilai riil menjadi rentang antara 0 dan 1.

Fungsi Sigmoid

Fungsi sigmoid digunakan dalam regresi logistik untuk menghitung probabilitas suatu kejadian, dan fungsinya ditulis sebagai:

\[ f(x) = \frac{1}{1 + e^{-x}} \]

Interpretasi:

- Jika nilai prediksi lebih besar dari ambang batas (misalnya 0.5), maka diklasifikasikan sebagai kelas 1 (positif).

- Jika nilai prediksi kurang dari ambang batas (misalnya 0.5), maka diklasifikasikan sebagai kelas 0 (negatif).

Jika nilai keluaran fungsi sigmoid adalah 0,65, maka itu berarti terdapat peluang sebesar 65% bahwa peristiwa tersebut akan terjadi — misalnya dalam kasus pelemparan koin.

Kurva sigmoid dalam regresi logistik menunjukkan hubungan non-linear antara variabel prediktor dan probabilitas output. Pendekatan ini efektif untuk klasifikasi biner seperti deteksi penyakit, email spam, dan prediksi ya/tidak.

Spesifikasi Model

Fungsi link function logit dapat dinyatakan dalam bentuk berikut:

\[ g(\mu) = \log\left(\frac{\mu}{1-\mu}\right) \]

Model regresi logistik dituliskan dalam bentuk:

\[ \log\left(\frac{\mu}{1-\mu}\right) = X\beta \]

Fungsi inverse link untuk regresi logistik adalah:

\[ \mu = \frac{\exp(X\beta)}{1 + \exp(X\beta)} \]

Estimasi Parameter

Metode estimasi parameter pada GLM umumnya menggunakan Maximum Likelihood Estimation (MLE).

Log-likelihood fungsi untuk regresi logistik dinyatakan sebagai:

\[ l(\beta) = \sum_{i=1}^{n} [y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i)] \]

Dengan:

\[ \pi_i = \frac{\exp(X_i^T \beta)}{1 + \exp(X_i^T \beta)} \]

Estimasi dilakukan melalui iterasi Newton-Raphson atau algoritma Fisher Scoring.

GLM adalah kerangka model fleksibel untuk berbagai jenis data dan distribusi.Regresi logistik merupakan salah satu contoh penting dari GLM,sangat berguna dalam analisis data kategorik biner.Estimasi parameter dilakukan melalui metode MLE dan dapat diselesaikan secara efisien dengan fungsi glm di R.

8.3 Model Regresi Poisson

Regresi Poisson digunakan ketika variabel respons adalah data cacah (count data), yaitu bilangan bulat non-negatif. Model ini merupakan bagian dari Generalized Linear Model (GLM) dengan asumsi bahwa distribusi variabel respons adalah distribusi Poisson.

Distribusi Poisson memiliki fungsi probabilitas sebagai berikut:

\[ P(Y = y) = \frac{e^{-\lambda} \lambda^y}{y!} \]

Kita dapat menuliskan bentuk ini dalam format exponential family:

\[ f(y; \theta) = \exp \left( y \log(\lambda) - \lambda - \log(y!) \right) \]

dengan:

\[\theta = \log(\lambda)\]

\[b(\theta) = e^{\theta} = \lambda\]

\[\phi = 1\]

\[c(y, \phi) = - \log(y!)\]

Fungsi link kanonik untuk distribusi Poisson adalah fungsi logaritma:

\[ g(\mu) = \log(\mu) \]

Sehingga modelnya menjadi:

\[ \log(\mu_i) = X_i^T \beta \]

dan fungsi inverse link:

\[ \mu_i = \exp(X_i^T \beta) \]

Estimasi parameter \(\beta\) dilakukan dengan metode Maximum Likelihood Estimation (MLE). Log-likelihood fungsi untuk regresi Poisson adalah:

\[ l(\beta) = \sum_{i=1}^{n} \left[ y_i X_i^T \beta - \exp(X_i^T \beta) - \log(y_i!) \right] \]

Nilai \(\beta\) dapat diperoleh melalui metode numerik seperti iterasi Newton-Raphson.

8.4 Contoh Kasus

8.4.1 Model Regresi Logistik

8.4.1.1 Latar Belakang

Dalam dunia bisnis, memahami faktor-faktor yang mempengaruhi keputusan pelanggan untuk membeli suatu produk sangat penting untuk meningkatkan penjualan dan keberhasilan strategi pemasaran. Salah satu faktor yang sering dianalisis adalah tingkat kepuasan pelanggan terhadap produk atau layanan yang diberikan.

Pada sebuah perusahaan ritel, pihak manajemen ingin mengetahui bagaimana tingkat kepuasan pelanggan berpengaruh terhadap keputusan mereka untuk melakukan pembelian ulang. Mereka menggunakan skala kepuasan yang telah distandardisasi, yang bergerak dari -3 hingga 3. Nilai -3 menunjukkan ketidakpuasan yang sangat tinggi, 0 menunjukkan kepuasan netral, dan 3 menunjukkan kepuasan yang sangat tinggi.

Tujuan dari analisis ini adalah untuk memprediksi probabilitas pembelian produk berdasarkan tingkat kepuasan pelanggan. Model yang digunakan adalah regresi logistik, yang menghubungkan kepuasan pelanggan (variabel x) dengan kemungkinan mereka melakukan pembelian ulang (variabel y).

8.4.1.2 Data

Data yang digunakan pada analisis ini terdiri atas 2 variabel, yakni : x (Tingkat Kepuasan Pelanggan): Skala kepuasan yang telah distandardisasi, dengan rentang dari -3 (sangat tidak puas) hingga 3 (sangat puas) dan y (Keputusan Pembelian): Variabel biner yang menunjukkan apakah pelanggan akan melakukan pembelian ulang atau tidak. Nilai 1 menunjukkan pembelian ulang, sedangkan 0 menunjukkan tidak ada pembelian ulang.

 # Simulasi data untuk regresi logistik
 set.seed(42)
 n <- 100
 x <- seq(-3, 3, length.out = n)
 log_odds <--1 + 2 * x
 prob <- 1 / (1 + exp(-log_odds))
 y <- rbinom(n, 1, prob)
 # Buat data frame
 data <- data.frame(x = x, y = y, prob = prob)
 data

8.4.1.3 Analisis

Plot Kurva Sigmoid

# Simulasi data untuk regresi logistik
 set.seed(42)
 n <- 100
 x <- seq(-3, 3, length.out = n)
 log_odds <--1 + 2 * x
 prob <- 1 / (1 + exp(-log_odds))
 y <- rbinom(n, 1, prob)
 # Buat data frame
 data <- data.frame(x = x, y = y, prob = prob)

 # Visualisasi menggunakan base R 
plot(x, y, pch = 16, col = "gray60",
 xlab = "X", ylab = "Y / Probabilitas",
 main = "Simulasi Regresi Logistik dengan Kurva Sigmoid")
 lines(x, prob, col = "blue", lwd = 2)
 abline(h = 0.5, col = "red", lty = 2)
 legend("topleft",
 legend = c("Data Biner (0/1)", "Kurva Logistik", "Ambang 0.5"),
 col = c("gray60", "blue", "red"),
 pch = c(16, NA, NA),
 lty = c(NA, 1, 2),
 lwd = c(NA, 2, 1),
 pt.cex = 1.5,
 bty = "n")

Estimasi Regresi Logistik

# Simulasi data untuk regresi logistik
set.seed(42)
n <- 100
x <- seq(-3, 3, length.out = n)
log_odds <--1 + 2 * x
prob <- 1 / (1 + exp(-log_odds))
y <- rbinom(n, 1, prob)
# Buat data frame
data <- data.frame(x = x, y = y, prob = prob)

model <- glm(y ~ x, data = data, family = binomial)
summary(model)
## 
## Call:
## glm(formula = y ~ x, family = binomial, data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.5964     0.3640  -1.639    0.101    
## x             1.9572     0.3887   5.036 4.76e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 137.628  on 99  degrees of freedom
## Residual deviance:  54.664  on 98  degrees of freedom
## AIC: 58.664
## 
## Number of Fisher Scoring iterations: 6

Plot Probabilitas Prediksi

plot(data$x, data$y, pch = 16, col = "grey")
curve(predict(model, newdata = data.frame(x= x), type = "response")[order(x)],
add = TRUE, col = "blue", lwd = 2)

8.4.1.4 Interpretasi

1. Kurva Sigmoid dan Data Biner

Grafik ini menggambarkan hubungan antara variabel x (misalnya, tingkat kepuasan) dan probabilitas pembelian. Data biner (0/1) menunjukkan keputusan pembelian, dengan titik-titik yang tersebar di sepanjang sumbu x. Kurva sigmoid (berwarna biru) menunjukkan perubahan probabilitas pembelian yang meningkat secara tajam ketika x bergerak dari nilai negatif ke positif, dengan probabilitas mendekati 0 pada nilai x yang rendah (-3) dan mendekati 1 pada nilai x yang tinggi (3). Garis merah putus-putus pada ambang 0.5 menunjukkan titik di mana probabilitas pembelian berubah dari 0 menjadi 1, yaitu titik kritis di mana keputusan pembelian dapat diprediksi.

2. Output Model Regresi Logistik: Hasil Model

Output regresi logistik menunjukkan bahwa koefisien untuk x (1.9572) sangat signifikan (p-value < 0.001), mengindikasikan bahwa seiring dengan meningkatnya nilai x (misalnya, tingkat kepuasan), probabilitas untuk melakukan pembelian juga meningkat secara signifikan. Sementara itu, Intercept tidak signifikan, yang berarti ketika x = 0, probabilitas pembelian tetap rendah. Model ini memberikan perbaikan yang signifikan dibandingkan dengan model tanpa prediktor, dengan nilai AIC 58.664 dan penurunan deviance yang menunjukkan fit model yang baik terhadap data.

3. Grafik 2: Visualisasi Model Regresi Logistik

Pada grafik kedua, terlihat visualisasi dari model regresi logistik di mana probabilitas pembelian (y) berubah secara non-linear seiring dengan perubahan nilai x. Kurva biru menunjukkan bagaimana probabilitas pembelian meningkat secara bertahap dari nilai 0 (ketika x rendah) menuju nilai 1 (ketika x tinggi), sesuai dengan model yang dihasilkan. Grafik ini mengonfirmasi bahwa hubungan antara x dan y bersifat sigmoid, dan menunjukkan dengan jelas bagaimana variabel x mempengaruhi keputusan pembelian pada berbagai levelnya.

8.4.2 Model Regresi Poisson

8.4.2.1 Latar Belakang

8.4.2.2 Data

# Membuat data frame dengan dua kategori untuk vehicle_type dan road_condition
set.seed(42)  # Agar hasilnya dapat direproduksi

# Membuat data contoh
accidents_data <- data.frame(
  accidents = sample(1:10, 20, replace = TRUE),  # Jumlah kecelakaan (random)
  vehicle_type = factor(sample(c("M", "T"), 20, replace = TRUE)),  # Dua kategori: M (Mobil), T (Truk)
  road_condition = factor(sample(c("B", "S"), 20, replace = TRUE))  # Dua kategori: B (Baik), S (Sedang)
)

# Menampilkan data frame
print(accidents_data)
##    accidents vehicle_type road_condition
## 1          1            M              S
## 2          5            T              S
## 3          1            M              S
## 4          9            M              S
## 5         10            M              S
## 6          4            M              B
## 7          2            T              S
## 8         10            T              B
## 9          1            T              S
## 10         8            T              S
## 11         7            M              S
## 12         4            T              S
## 13         9            M              B
## 14         5            T              S
## 15         4            T              B
## 16        10            T              B
## 17         2            M              B
## 18         3            M              S
## 19         9            T              S
## 20         9            T              S

8.4.2.3 Analisis

Pemodelan Regresi Poisson

accidents_data
poisson_model <- glm(accidents ~ vehicle_type + road_condition, data = accidents_data , family = poisson)
summary(poisson_model)
## 
## Call:
## glm(formula = accidents ~ vehicle_type + road_condition, family = poisson, 
##     data = accidents_data)
## 
## Coefficients:
##                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       1.7727     0.1915   9.257   <2e-16 ***
## vehicle_typeT     0.1893     0.1919   0.986    0.324    
## road_conditionS  -0.2202     0.1983  -1.110    0.267    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 43.112  on 19  degrees of freedom
## Residual deviance: 41.061  on 17  degrees of freedom
## AIC: 114.47
## 
## Number of Fisher Scoring iterations: 5
exp(coef(poisson_model))
##     (Intercept)   vehicle_typeT road_conditionS 
##       5.8866972       1.2083691       0.8023715

Koefisien

exp(coef(poisson_model))
##     (Intercept)   vehicle_typeT road_conditionS 
##       5.8866972       1.2083691       0.8023715

Visualisasi Prediksi

accidents_data$predicted <- predict(poisson_model, type = "response")
ggplot(accidents_data, aes(x =vehicle_type, y=accidents, color = road_condition)) +
 geom_jitter(width = 0.2, alpha = 0.6) +
 geom_point(aes(y =predicted), shape = 18, size = 3, color = "black") +
 facet_wrap(~road_condition) +
 labs(title = "Prediksi Jumlah Kecelakaan berdasarkan Jenis Kendaraan dan Kondisi Jalan",
 x="Jenis Kendaraan",
 y="Kecelakaan",
 color = "Kondisi Jalan") +
 theme_minimal()

Evaluasi Model

plot(poisson_model$residuals, main = "Residual Plot", ylab = "Residual", xlab = "Index", pch = 19, col = "purple")
abline(h=0, col = "red", lty = 2)

8.4.2.4 Interpretasi

1. Pemodelan Regresi Poisson Model regresi Poisson ini menunjukkan bahwa intercept memiliki pengaruh signifikan terhadap jumlah kecelakaan dengan p-value < 2e-16, mengindikasikan bahwa kondisi dasar kecelakaan (tanpa variabel prediktor) adalah sekitar 1.7727. Sementara itu, vehicle_typeT (Truk) dan road_conditionS (Sedang) menunjukkan koefisien positif dan negatif masing-masing sebesar 0.1893 dan -0.2202, namun keduanya tidak signifikan dengan p-value > 0.05. Hal ini berarti jenis kendaraan truk dan kondisi jalan sedang tidak memberikan pengaruh signifikan terhadap kecelakaan. Model ini menghasilkan AIC = 114.47 dan menurunkan residual deviance dari 43.112 menjadi 41.061, yang menunjukkan adanya perbaikan model meskipun pengaruh prediktor relatif kecil. Secara keseluruhan, meskipun model memberikan beberapa penurunan deviance, variabel prediktor yang ada belum menunjukkan pengaruh yang kuat terhadap jumlah kecelakaan.

2. Koefisien Koefisien model regresi Poisson diubah menjadi rasio odds (exponential dari koefisien). Hasilnya menunjukkan bahwa:

  • Intercept (5.8867) berarti bahwa ketika variabel lainnya adalah nol (misalnya, vehicle_type = “M” dan road_condition = “B”), ekspektasi jumlah kecelakaan adalah sekitar 5.89.

  • vehicle_typeT (1.2084) menunjukkan bahwa truk (T) memiliki ekspektasi jumlah kecelakaan sekitar 1.21 kali lebih tinggi daripada sepeda motor (B) ketika kondisi jalan sama.

  • road_conditionsS (0.8024) menunjukkan bahwa kondisi jalan sedang (S) mengurangi ekspektasi jumlah kecelakaan menjadi sekitar 80.24% dari jumlah kecelakaan ketika kondisi jalan baik (B).

3. Visualisasi Prediksi Grafik ini menunjukkan prediksi jumlah kecelakaan berdasarkan kombinasi jenis kendaraan (M = mobil, T = truk) dan kondisi jalan (B = baik, S = sedang). Titik-titik di grafik mewakili prediksi jumlah kecelakaan, dengan warna yang berbeda menunjukkan kondisi jalan (merah untuk kondisi jalan baik, biru untuk kondisi jalan sedang). Titik besar (berwarna hitam) menggambarkan prediksi rata-rata kecelakaan untuk setiap kombinasi vehicle_type dan road_condition. Berdasarkan grafik, kendaraan jenis mobil pada kondisi jalan baik (B) memiliki prediksi kecelakaan yang lebih tinggi dibandingkan dengan kendaraan truk di kondisi jalan sedang (S).

4. Evaluasi Model Residual plot ini menunjukkan residual model regresi Poisson, yang mengukur selisih antara nilai observasi aktual dan nilai yang diprediksi oleh model. Titik-titik yang tersebar di sekitar garis horizontal (yang berlokasi di 0) menunjukkan distribusi residual yang cukup merata, tanpa pola yang jelas. Garis merah putus-putus pada residual = 0 menunjukkan nilai rata-rata dari residual. Plot ini menunjukkan bahwa model cukup baik dalam mengestimasi jumlah kecelakaan, karena tidak ada pola yang jelas dalam residual dan residual tersebar acak di sekitar nilai 0, yang mengindikasikan tidak adanya ketergantungan yang tidak terduga.

BAB 9. Inferensi Generalized Linear Model

Ekspektasi dan Varians dalam GLM

Dalam Generalized Linear Model (GLM), inferensi statistik sangat penting untuk memahami ekspektasi dan varians dari estimator model, yang digunakan untuk mengembangkan alat uji seperti Wald test, Likelihood Ratio test, dan interval kepercayaan.

1. Ekspektasi Estimator

Ekspektasi menunjukkan apakah suatu estimator tak bias, yaitu:

\[ E[\hat{\beta}] = \beta \]

Dalam GLM, Maximum Likelihood Estimator (MLE) dari \(\hat{\beta}\) bersifat asymptotically unbiased, yang berarti estimator ini akan mendekati nilai yang benar seiring dengan bertambahnya ukuran sampel.

2. Varians Estimator

Varians menunjukkan presisi dari estimasi parameter:

\[ Var(\hat{\beta}) \approx [X^T W X]^{-1} \]

Di mana W adalah matriks bobot yang tergantung pada distribusi dan fungsi link.

3. Distribusi Asimptotik Estimator

Dengan ukuran sampel yang besar, estimasi \(\hat{\beta}\) mengikuti distribusi normal:

\[ \hat{\beta} \sim N(\beta, Var(\hat{\beta})) \]

Dimana \(\beta\) adalah parameter asli dan \(Var(\hat{\beta})\) adalah varians dari estimator.

Distribusi ini digunakan sebagai dasar dalam mengembangkan alat uji seperti: - Uji Wald - Confidence Interval - P-value

Varian dalam GLM Tidak Konstan

Tidak seperti regresi linear (OLS) yang mengasumsikan homoskedastisitas, dalam GLM, varians \(Y_i\) tidak konstan dan mengikuti distribusi tertentu:

\[ Var(Y_i) = \sigma^2 \]

Dalam GLM, varians dapat dihitung dengan:

\[ Var(Y_i) = \phi V(\mu_i) \]

Di mana:

- \(\phi\) adalah parameter dispersi.

- \(V(\mu)\) adalah fungsi varians.

Contoh:

- Poisson: \(V(\mu) = \mu\)

- Binomial: \(V(\mu) = \mu(1 - \mu)\)

9.1 Mencari Ekspektasi dan Varians dalam GLM

Ekspektasi

Jika diturunkan berdasarkan fungsi momen:

\[ E(Y) = \int y f(y; \theta) dy = \mu \]

Untuk keluarga eksponensial, log-likelihood dapat ditulis sebagai:

\[ \log f(y; \theta) = a(y) + b(\theta)y + c(\theta) \]

Atau:

\[ \log f(y; \theta) = y\theta - b(\theta) + c(y) \]

Maka ekspektasi turunan pertama adalah:

\[ U(\theta) = \frac{\partial \ell}{\partial \theta} = y - b'(\theta) \]

Dan Ekspektasi Turunan Pertama:

\[ E[U(\theta)] = E[y - b'(\theta)] = \mu - b'(\theta) = 0 \]

Maka:

\[ \mu = b'(\theta) \]

Varians

Turunan kedua:

\[ \frac{\partial^2 \ell}{\partial \theta^2} = -b''(\theta) \]

Sehingga:

\[ Var(Y) = b''(\theta) = \phi V(\mu) \]

Dimana \(\phi\) adalah parameter dispersi dan \(V(\mu)\) adalah fungsi varians.

9.2 Metode Penaksiran Parameter

Prinsip dasar Maximum Likelihood Estimation (MLE) adalah memaksimalkan fungsi likelihood/log-likelihood. Langkah-langkah dalam MLE adalah:

  • Turunan pertama = 0
  • Turunan kedua < 0

Namun, karena bentuk GLM tidak eksplisit, digunakan metode numerik untuk mengoptimalkan estimasi.

Metode Optimisasi Newton-Raphson

Metode ini menggunakan:

- Score vector (gradien)

- Hessian matrix

Iterasi metode Newton-Raphson dapat ditulis sebagai:

\[ \beta^{(t+1)} = \beta^{(t)} - H^{-1}(\beta^{(t)}) U(\beta^{(t)}) \]

Fisher Scoring

Metode Fisher Scoring memodifikasi Newton-Raphson, menggantikan Hessian dengan matriks informasi Fisher.

IRLS (Iteratively Reweighted Least Square)

Metode ini memodifikasi Fisher Scoring dan menggunakan Least Square untuk estimasi parameter.

Implementasi Newton-Raphson

Statistik Score ke-\(j\):

\[ U_j(\beta) = \frac{\partial \log L(\beta)}{\partial \beta_j} \]

Turunan Kedua:

\[ H_{jk}(\beta) = \frac{\partial^2 \log L(\beta)}{\partial \beta_j \partial \beta_k} \]

Taylor Expansion:

\[ U(\beta^*) \approx U(\beta) + H(\beta)(\beta^* - \beta) \]

Estimasi Parameter:

\[ \hat{\beta} \approx \beta^{(t)} - H^{-1}(\beta^{(t)}) U(\beta^{(t)}) \]

9.3 Diagnostik Model GLM

Diagnostik digunakan untuk mengevaluasi apakah model sudah tepat. Beberapa metode diagnostik yang digunakan antara lain:

  • Uji formal
  • Grafik antara nilai prediksi vs nilai aktual

Statistik Devians

Statistik devians digunakan untuk mengukur apakah ada model lain yang lebih baik. Nilai devians yang besar menunjukkan bahwa model tidak cocok. Devians didefinisikan sebagai:

\[ D = 2 \sum_i \left[ y_i \log \left( \frac{y_i}{\hat{\mu}_i} \right) - (y_i - \hat{\mu}_i) \right] \]

Devians digunakan untuk membandingkan model terhadap saturated model. Semakin kecil devians, semakin cocok model tersebut dengan data.

Statistik Chi-Kuadrat Pearson

Statistik ini digunakan untuk menguji apakah model lebih baik daripada tidak ada model sama sekali. Statistik Chi-Kuadrat Pearson dihitung sebagai:

\[ X^2 = \sum_i \left( \frac{(y_i - \hat{\mu}_i)^2}{\hat{\mu}_i} \right) \]

Jika nilai statistik Chi-Kuadrat signifikan, maka model yang digunakan lebih baik daripada tanpa model.

Catatan

  • Untuk data yang dikelompokkan, statistik devians dan chi-kuadrat Pearson mengikuti distribusi Chi-Square.
  • Untuk data yang tidak dikelompokkan, statistik devians dan chi-kuadrat Pearson tidak mengikuti distribusi Chi-Square.
  • Devians dapat diminimalkan dengan Maximum Likelihood Estimation (MLE), yang cocok digunakan untuk evaluasi model.

Analisis Residual

  • Residual adalah selisih antara observasi dengan prediksi.
  • Residual dapat digunakan untuk memeriksa penyimpangan sistematis dalam model.
  • Residual juga dapat diplot untuk menilai asumsi model.

9.4 Detail Metode Estimasi dan Inferensi Regresi Logistik

Regresi logistik digunakan untuk memodelkan probabilitas dari variabel respons biner (0/1) berdasarkan satu atau lebih variabel prediktor. Estimasi parameter dilakukan menggunakan Maximum Likelihood Estimation (MLE) karena model tidak linear dalam parameternya.

Fungsi model logistik untuk probabilitas \(\pi(x)\) dapat ditulis sebagai:

\[ \pi(x) = \frac{\exp(\beta_0 + \beta_1 x)}{1 + \exp(\beta_0 + \beta_1 x)} \]

Log-likelihood untuk n observasi dapat ditulis sebagai:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \]

Estimasi dengan Newton-Raphson

Metode Newton-Raphson digunakan untuk mencari nilai parameter \(\beta\) yang memaksimalkan fungsi log-likelihood pada model regresi logistik.

Model regresi logistik untuk probabilitas:

\[ \pi_i = \frac{1}{1 + \exp(-x_i^T \beta)} \]

Log-likelihood untuk n observasi tetap dituliskan dengan bentuk yang sama:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \]

Langkah-Langkah Newton-Raphson

  1. Turunan Pertama (Score Function):

\[ U(\beta) = \frac{\partial \ell(\beta)}{\partial \beta} = X^T(y - \pi) \]

  1. Turunan Kedua (Hessian Matrix):

\[ H(\beta) = -X^T W X, \quad \text{dengan} \quad W = \text{diag}(\pi_i(1 - \pi_i)) \]

  1. Iterasi Newton-Raphson:

\[ \beta^{(t+1)} = \beta^{(t)} + (X^T W^{(t)} X)^{-1} X^T(y - \pi^{(t)}) \]

1. Uji Wald

Tujuan Uji Wald

Untuk menguji signifikansi parameter \(\beta_j\) dalam model regresi logistik:

  • \(H_0\): \(\beta_j = 0\)
  • \(H_1\): \(\beta_j \neq 0\)

Teori Uji Wald

Dari teori estimasi MLE, estimator \(\hat{\beta}_j\) mendekati distribusi normal:

\[ \hat{\beta}_j \sim N(\beta_j, Var(\hat{\beta}_j)) \]

Jika \(H_0\) benar (yaitu \(\beta_j = 0\)), maka:

\[ Z = \frac{\hat{\beta}_j}{SE(\hat{\beta}_j)} \sim N(0, 1) \]

Dengan statistik Wald:

\[ W = Z^2 = \left( \frac{\hat{\beta}_j}{SE(\hat{\beta}_j)} \right)^2 \sim \chi^2_1 \]

2. Uji Likelihood Ratio (Chi-Square)

Uji ini digunakan untuk membandingkan model penuh dengan model tanpa prediktor (null model). Uji ini mengukur apakah penambahan prediktor dalam model meningkatkan kecocokan model secara signifikan.

Evaluasi Kebaikan Model

  1. Akaike Information Criterion (AIC). Semakin kecil nilai AIC, semakin baik model yang dihasilkan. AIC digunakan untuk mengevaluasi keseimbangan antara kualitas kecocokan model dan kompleksitas model.

  2. Bayesian Information Criterion (BIC). BIC adalah alternatif terhadap AIC yang menghitung kompleksitas model. BIC lebih memperhitungkan penalti untuk kompleksitas model, dan semakin kecil nilai BIC, semakin baik model.

9.5 Detail Metode Estimasi dan Inferensi Regresi Poisson

Model regresi Poisson digunakan untuk memodelkan data count (jumlah kejadian) di mana variabel respons mengikuti distribusi Poisson. Estimasi parameter dilakukan dengan Maximum Likelihood Estimation (MLE), dan inferensi dilakukan dengan uji Wald dan Likelihood Ratio Test.

Fungsi Model Logistik:

Fungsi distribusi Poisson:

\[ P(Y_i = y_i) = \frac{e^{-\lambda_i} \lambda_i^{y_i}}{y_i!} \]

Model regresi Poisson:

\[ \log(\lambda_i) = x_i^T \beta \]

Estimasi Parameter (MLE)

Log-likelihood fungsi:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\lambda_i) - \lambda_i - \log(y_i!) \right] \]

Dengan:

\[ \lambda_i = \exp(x_i^T \beta) \]

Estimasi dilakukan dengan metode iterasi Iteratively Reweighted Least Squares (IRLS).

Langkah-langkah Estimasi

Tahap 1: Definisikan Model Regresi Poisson

\[ \log(\lambda_i) = x_i^T \beta \quad \text{sehingga} \quad \lambda_i = \exp(x_i^T \beta) \]

Tahap 2: Mencari Log-Likelihood yang Dimaksimalkan

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\lambda_i) - \lambda_i - \log(y_i!) \right] \]

Tahap 3: Formulasi Iteratif

\[ \beta^{(t+1)} = \left(X^T W^{(t)} X\right)^{-1} X^T W^{(t)} z^{(t)} \]

Dengan:

  • W = diag(\(\lambda_i\))
  • z = \(\eta\) + \(\frac{y_i - \lambda_i}{\lambda_i}\)

Dan:

\[ \eta_i = \log(\lambda_i) = x_i^T \beta \]

9.6 Contoh Kasus

9.6.1 Latar Belakang

Penelitian ini bertujuan untuk memodelkan jumlah kecelakaan lalu lintas di suatu wilayah dengan menggunakan model regresi Poisson, yang cocok untuk menganalisis data count (jumlah kejadian). Data kecelakaan lalu lintas sangat penting untuk memahami faktor-faktor yang mempengaruhi tingkat kecelakaan dan merancang kebijakan yang dapat meningkatkan keselamatan di jalan. Faktor seperti kecepatan kendaraan, kondisi jalan, dan kepadatan lalu lintas sering kali mempengaruhi tingkat kecelakaan. Dengan memodelkan data ini menggunakan regresi Poisson, kita dapat menganalisis hubungan antara variabel prediktor dan jumlah kecelakaan, yang dapat memberikan wawasan untuk perencanaan transportasi yang lebih baik.

9.6.2 Data

Dalam studi ini, data kecelakaan lalu lintas disimulasikan untuk tujuan penelitian. Variabel prediktor yang digunakan adalah kecepatan kendaraan (X), yang diasumsikan memiliki pengaruh terhadap jumlah kecelakaan yang terjadi. Variabel target adalah jumlah kecelakaan (Y), yang dihasilkan dengan menggunakan distribusi Poisson, mengingat bahwa jumlah kecelakaan adalah data count yang tidak mengikuti distribusi normal. Data ini dihasilkan secara acak menggunakan distribusi normal untuk kecepatan kendaraan dan Poisson untuk jumlah kecelakaan, dengan parameter yang mencerminkan hubungan antara kecepatan dan kecelakaan.

# Set seed untuk reproduksi hasil
set.seed(456)

# Tentukan jumlah data
n <- 100
x <- rnorm(n, mean = 60, sd = 10)   
X <- cbind(1, x) 
beta_true <- c(0.7, 0.05)  
eta <- X %*% beta_true
lambda <- exp(eta)
y <- rpois(n, lambda)

# Membuat data frame untuk melihat hasil
data <- data.frame(Kecepatan = x, Kecelakaan = y)

# Tampilkan beberapa baris pertama dari data
head(data)

9.6.3 Analisis

1. IRLS Manual

# Inisialisasi
set.seed(456)
n <- 100
x <- rnorm(n, mean = 60, sd = 10)  # Kecepatan kendaraan
X <- cbind(1, x)  # Menambahkan intercept pada model
beta <- c(0, 0)  # Nilai awal untuk beta (intercept dan koefisien)
y <- rpois(n, lambda = exp(X %*% beta))  # Data jumlah kecelakaan yang dihasilkan dari distribusi Poisson

# Parameter pengaturan
tol <- 1e-6  # Toleransi konvergensi
max_iter <- 100  # Maksimum iterasi

# Iterasi Newton-Raphson / IRLS
for (i in 1:max_iter) {
  # Langkah 1: Hitung eta dan lambda
  eta <- X %*% beta
  lambda <- exp(eta)
  
  # Langkah 2: Hitung W (matriks bobot) dan z (nilai iterasi)
  W <- diag(as.numeric(lambda))  # Matriks W adalah diagonal matriks lambda
  z <- eta + (y - lambda) / lambda  # Perhitungan untuk z
  
  # Langkah 3: Hitung estimasi beta baru
  beta_new <- solve(t(X) %*% W %*% X) %*% t(X) %*% W %*% z  # Estimasi beta baru
  
  # Langkah 4: Cek konvergensi
  if (sum(abs(beta_new - beta)) < tol) {
    cat("Konvergen pada iterasi ke-", i, "\n")
    break
  }
  
  # Pembaruan beta untuk iterasi berikutnya
  beta <- beta_new
}
## Konvergen pada iterasi ke- 4
# Menampilkan hasil estimasi beta
cat("Hasil estimasi beta: ", beta, "\n")
## Hasil estimasi beta:  -0.158337 -0.0004575211

2. Perbandingan dengan glm()

model_glm <- glm(y ~ x, family = poisson)
 summary(model_glm)
## 
## Call:
## glm(formula = y ~ x, family = poisson)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.1583370  0.6825303  -0.232    0.817
## x           -0.0004575  0.0110144  -0.042    0.967
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 118.97  on 99  degrees of freedom
## Residual deviance: 118.97  on 98  degrees of freedom
## AIC: 247.15
## 
## Number of Fisher Scoring iterations: 5

3. Pengujian Hipotesis a. Uji Wald

# Menggunakan data yang telah dibuat
set.seed(456)
n <- 100
x <- rnorm(n, mean = 60, sd = 10)  
X <- cbind(1, x)  
beta_true <- c(0.7, 0.05)  
eta <- X %*% beta_true  
lambda <- exp(eta)  
y <- rpois(n, lambda)  

model <- glm(y ~ X[, 2], family = poisson) 

# Koefisien dan standar error
coef_val <- coef(model)[2] 
se_val <- summary(model)$coefficients[2, 2]  

# Statistik Wald
wald_z <- coef_val / se_val  
wald_chisq <- wald_z^2 

# p-value untuk uji Wald
p_value <- 1 - pchisq(wald_chisq, df = 1)

# Menampilkan hasil
cat("Z:", wald_z, "\nChi-Square:", wald_chisq, "\np-value:", p_value)
## Z: 34.24844 
## Chi-Square: 1172.956 
## p-value: 0
  1. Uji Likelihood Ratio
# Set seed untuk reproduksi hasil
set.seed(456)

# Tentukan jumlah data
n <- 100
x <- rnorm(n, mean = 60, sd = 10)   
X <- cbind(1, x) 
beta_true <- c(0.7, 0.05)  
eta <- X %*% beta_true
lambda <- exp(eta)
y <- rpois(n, lambda)

# Membuat data frame untuk melihat hasil
data <- data.frame(Kecepatan = x, Kecelakaan = y)

model_null <- glm(y ~ 1, family = poisson, data = data)
 anova(model_null, model, test = "Chisq")

**4. Evaluasi Model (AIC & BIC)

model <- glm(y ~ X[, 2], family = poisson) 
AIC(model)
## [1] 657.9248
BIC(model)
## [1] 663.1351

9.6.4 Interpretasi

1. Iterasi Newton-Raphson / IRLS

Proses iterasi menggunakan metode Newton-Raphson berhasil konvergen pada iterasi ke-4, dengan hasil estimasi beta yang diperoleh sebagai -0.158337 untuk intercept dan -0.0004575211 untuk koefisien variabel prediktor. Iterasi ini menunjukkan bahwa estimasi parameter model stabil dan dapat diterima pada iterasi ke-4 dengan konvergensi tercapai berdasarkan toleransi yang telah ditentukan (tol = 1e-6).

2. Perbandingan dengan Model glm()

Model regresi Poisson yang diestimasi menggunakan fungsi glm() menunjukkan bahwa koefisien untuk intercept (0.573023) dan koefisien untuk kecepatan (0.051643) signifikan pada tingkat p < 0.001. Nilai z-value yang besar mengindikasikan bahwa kedua koefisien tersebut secara statistik signifikan dalam menjelaskan jumlah kecelakaan berdasarkan kecepatan kendaraan. Model ini memiliki AIC = 657.92 dan BIC = 663.14, yang menunjukkan bahwa model ini cukup baik dalam menjelaskan data.

3. Uji Wald

Statistik Z untuk uji Wald adalah 34.24844, dan statistik Chi-Square yang dihitung adalah 1172.956 dengan p-value = 0. Karena p-value sangat kecil (jauh lebih kecil dari 0.05), kita dapat menolak hipotesis nol (H0) yang menyatakan bahwa koefisien kecepatan (X) sama dengan nol, yang menunjukkan bahwa kecepatan kendaraan berpengaruh signifikan terhadap jumlah kecelakaan.

4. Uji Likelihood Ratio (Chi-Square)

Hasil uji Likelihood Ratio (Chi-Square) membandingkan model penuh (dengan prediktor kecepatan) dengan model tanpa prediktor (model null). Statistik Chi-Square adalah 1217.9, dengan p-value = 2.2e-16, yang sangat signifikan. Ini menunjukkan bahwa model penuh yang melibatkan kecepatan kendaraan lebih baik dibandingkan dengan model tanpa prediktor.

5. Evaluasi Model (AIC & BIC)

Nilai AIC = 657.92 dan BIC = 663.14 memberikan informasi bahwa model ini tidak hanya menjelaskan data dengan baik tetapi juga relatif sederhana (dengan sedikit parameter). Nilai AIC yang lebih kecil menunjukkan bahwa model ini lebih baik dibandingkan model lain yang lebih kompleks dengan parameter lebih banyak. BIC juga menunjukkan nilai yang agak lebih tinggi, yang memberikan penalti lebih besar untuk kompleksitas model.

BAB 10. Regresi Logistik dengan Prediktor Nominal, Ordinal, dan Rasio

Regresi logistik adalah salah satu teknik statistika yang digunakan untuk memodelkan hubungan antara satu atau lebih variabel prediktor (independen) dengan variabel respon yang bersifat kategorik (biasanya biner, seperti sukses/gagal, ya/tidak, atau 1/0). Berbeda dengan regresi linear, regresi logistik tidak memodelkan nilai respon secara langsung, melainkan peluang (probabilitas) kejadian dari suatu kategori sebagai fungsi dari prediktor. Regresi logistik dianggap sebagai alat yang sangat fleksibel dalam menganalisis hubungan antara variabel kategorik sebagai respon dengan berbagai jenis prediktor. Memahami jenis-jenis prediktor dan bagaimana mereka diinterpretasikan sangat penting dalam menyusun model yang valid dan dapat diandalkan.

Menurut Montgomery, Peck, dan Vining (2012), regresi logistik digunakan ketika asumsi normalitas residual pada regresi linear tidak terpenuhi karena bentuk data yang kategorik. Oleh karena itu, pendekatan yang digunakan adalah fungsi logit, yaitu log dari odds rasio:

\[ \log\left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_kX_k \]

di mana \(p\) adalah probabilitas bahwa respon bernilai 1, dan \(X_1, X_2, \ldots, X_k\) adalah variabel prediktor.

Jenis-Jenis Prediktor

Dalam regresi logistik, variabel prediktor bisa terdiri dari berbagai skala pengukuran, termasuk nominal (biner), ordinal, dan rasio. Setiap jenis prediktor memiliki peran dan interpretasi yang berbeda dalam model.

1. Prediktor Nominal (Biner)

Prediktor nominal adalah variabel kategorik yang tidak memiliki urutan. Dalam konteks regresi logistik, variabel ini biasanya dikodekan sebagai variabel dummy (0 dan 1). Misalnya, jenis kelamin (laki-laki = 1, perempuan = 0). Koefisien pada prediktor ini menunjukkan log odds perbedaan antara dua kategori. Misalkan, jika koefisien untuk jenis kelamin adalah -0.75, maka peluang kejadian untuk laki-laki adalah lebih rendah dibanding perempuan sebesar \(\exp(-0.75) = 0.472\) kali.

2. Prediktor Ordinal

Prediktor ordinal adalah variabel kategorik yang memiliki urutan atau tingkatan, namun jaraknya tidak harus sama. Contohnya adalah tingkat kepuasan (rendah, sedang, tinggi). Dalam regresi logistik, prediktor ordinal bisa dimasukkan sebagai variabel dummy atau dengan pendekatan proportional odds model jika menggunakan ordinal logistic regression. Misalkan, jika kita mengkodekan “rendah = 0”, “sedang = 1”, dan “tinggi = 2”, maka koefisien menggambarkan perubahan log odds ketika tingkat kepuasan naik satu tingkat.

3. Prediktor Rasio

Prediktor rasio adalah variabel numerik yang memiliki nol absolut dan perbandingan bermakna, seperti umur, pendapatan, atau suhu dalam Kelvin. Prediktor ini bisa dimasukkan langsung ke dalam model regresi logistik. Interpretasinya adalah perubahan log odds untuk setiap satu unit peningkatan pada prediktor rasio tersebut. Misalkan, jika koefisien umur adalah 0.05, maka setiap penambahan umur 1 tahun meningkatkan odds sebesar \(\exp(0.05) \approx 1.051\) kali lipat.

10.1 Contoh Kasus

Dalam menjelaskan regresi logistik dengan variabel prediktor yang berbeda, diambil suatu contoh kasus berikut.

Seorang pemilik toko ingin melihat apa saja faktor-faktor yang mempengaruhi minat pelanggan terhadap produk-produk yang premium. Digunakan 3 variabel prediktor, yaitu Gender, Frekuensi kunjungan ke website perminggu, Status keanggotaan untuk memprediksi probabilitas apakah pelanggan tertarik dalam membeli produk premium. Berikut adalah data yang digunakan:

10.1.1 Simulasi Data

# Jumlah observasi
n <- 500

# Variabel prediktor
set.seed(123) 
gender <- sample(c("Male", "Female"), n, replace = TRUE) 
visit_freq <- rpois(n, lambda = 5) # rata-rata 5 kunjungan per minggu 
membership <- sample(c("Free", "Basic", "Premium"), n, replace = TRUE, prob = c(0.5, 0.3, 0.2))

# Probabilitas logit
logit_p <- -1 + 0.6 * (gender == "Female") + 0.4 * as.numeric(factor(membership, levels = c("Free", "Basic", "Premium"), ordered = TRUE)) + 0.15 * visit_freq

p <- 1 / (1 + exp(-logit_p)) # transformasi ke probabilitas

# Variabel target (binomial response)
interested_premium <- rbinom(n, size = 1, prob = p)

# Gabungkan ke dalam data frame
library(tibble) 
sim_data <- tibble(interested_premium, gender, visit_freq, membership)

# Lihat data
head(sim_data)
str(sim_data) 
## tibble [500 × 4] (S3: tbl_df/tbl/data.frame)
##  $ interested_premium: int [1:500] 1 0 0 1 0 1 1 1 1 1 ...
##  $ gender            : chr [1:500] "Male" "Male" "Male" "Female" ...
##  $ visit_freq        : int [1:500] 4 4 4 2 4 3 5 5 9 4 ...
##  $ membership        : chr [1:500] "Free" "Basic" "Free" "Premium" ...
summary(sim_data) 
##  interested_premium    gender            visit_freq      membership       
##  Min.   :0.000      Length:500         Min.   : 0.000   Length:500        
##  1st Qu.:0.000      Class :character   1st Qu.: 3.000   Class :character  
##  Median :1.000      Mode  :character   Median : 5.000   Mode  :character  
##  Mean   :0.692                         Mean   : 4.956                     
##  3rd Qu.:1.000                         3rd Qu.: 6.000                     
##  Max.   :1.000                         Max.   :12.000

10.1.2 Eksplorasi Data

sim_data %>%
dplyr::group_by(interested_premium) %>%
dplyr::summarise(
  Jumlah = dplyr::n(),
  Rata2_visit_feq = mean(visit_freq)
)

Berdasarkan eksplorasi yang dilakukan, dapat dilihat distribusi jumlah pelanggan yang tertarik untuk mengambil premium adalah 346 dengan rata-rata frekuensi kedatangan 5.17, sedangkan yang tidak tertarik sebanyak 154 dengan rata-rata frekuensi kedatangan sebesar 4.47.

10.3 Perlakuan Variabel Ordinal

10.3.1 Treat sebagai Nominal

Pada pembahasan ini, akan diperlakukan variabel prediktor ‘membership’ sebagai nominal (dibentuk variabel dummy).

library(dplyr)
sim_data_nominal <- sim_data %>%
mutate(membership = factor(membership, levels = c("Free", "Basic", "Premium"))
)
model_nominal <- glm(interested_premium ~ gender + visit_freq + membership, data = sim_data_nominal, family = binomial)
summary(model_nominal)
## 
## Call:
## glm(formula = interested_premium ~ gender + visit_freq + membership, 
##     family = binomial, data = sim_data_nominal)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        0.29058    0.27665   1.050 0.293567    
## genderMale        -0.74365    0.20445  -3.637 0.000275 ***
## visit_freq         0.16508    0.04676   3.530 0.000415 ***
## membershipBasic    0.07678    0.22528   0.341 0.733255    
## membershipPremium  0.62101    0.28488   2.180 0.029264 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 617.49  on 499  degrees of freedom
## Residual deviance: 589.15  on 495  degrees of freedom
## AIC: 599.15
## 
## Number of Fisher Scoring iterations: 4

Model ini menggunakan Membership sebagai variabel dummy, ‘Free’ sebagai baseline. Setiap Koefisien membandingkan kategori terhadap baseline.

Interpretasi Koefisien

Didapatkan hasil odds ratio untuk masing-masing koefisien sebagai berikut: \[ \begin{array}{|l|r|r|p{8cm}|} \hline \textbf{Variabel} & \textbf{Estimate} & \textbf{Odds Ratio} & \textbf{Interpretasi} \\ \hline \textnormal{(Intercept)} & 0.29058 & 1.337 & Titik awal log odds saat semua variabel bernilai nol (referensi baseline). \\ \hline \textnormal{genderMale} & -0.74365 & 0.475 & Pria memiliki peluang 52.5\% lebih kecil (\(1 - 0.475\)) untuk tertarik pada premium dibanding wanita. \\ \hline \textnormal{visit freq} & 0.16508 & 1.179 & Setiap peningkatan frekuensi kunjungan meningkatkan peluang tertarik premium sebesar 17.9\%. \\ \hline \textnormal{membershipBasic} & 0.07678 & 1.080 & Anggota dengan membership basic memiliki peluang 8.0\% lebih tinggi dibanding baseline (mungkin non-member), tetapi tidak signifikan. \\ \hline \textnormal{membershipPremium} & 0.62101 & 1.861 & Anggota premium memiliki peluang 86.1\% lebih tinggi untuk tertarik premium dibanding baseline. \\ \hline \end{array} \] Interpretasi Goodness of Fit \[ \begin{array}{|l|r|p{8cm}|} \hline \textbf{Statistik} & \textbf{Nilai} & \textbf{Penjelasan} \\ \hline \textnormal{Null Deviance} & 617.49 & Deviance model tanpa prediktor. Semakin kecil nilainya, semakin baik model memprediksi dibanding model kosong. \\ \hline \textnormal{Residual Deviance} & 589.15 & Deviance model akhir setelah semua prediktor dimasukkan. Penurunan dari null deviance menunjukkan model lebih baik. \\ \hline \textnormal{Degrees of Freedom (Null)} & 499 & Jumlah observasi dikurangi 1 (tanpa variabel independen). \\ \hline \textnormal{Degrees of Freedom (Residual)} & 495 & Jumlah observasi dikurangi jumlah parameter yang diestimasi. \\ \hline \textnormal{AIC} & 599.15 & Akaike Information Criterion: digunakan untuk membandingkan model. Semakin rendah AIC, semakin baik model secara relatif. \\ \hline \textnormal{Fisher Scoring Iterations} & 4 & Jumlah iterasi algoritma maksimum likelihood hingga konvergen. Biasanya < 25, makin kecil makin baik konvergensi. \\ \hline \end{array} \] Signifikansi Model

  • Variabel visit_freq dan genderMale signifikan pada taraf 0.1% (p < 0.001), menunjukkan bahwa frekuensi kunjungan dan jenis kelamin berpengaruh kuat terhadap minat terhadap layanan premium.
  • Variabel membershipPremium signifikan pada taraf 5% (p = 0.029264), menunjukkan bahwa keanggotaan premium meningkatkan peluang ketertarikan terhadap premium.
  • Variabel membershipBasic tidak signifikan (p = 0.733255) dan memiliki pengaruh yang sangat kecil terhadap prediksi.
  • Intercept tidak signifikan (p = 0.293567) dan hanya mewakili baseline log-odds tanpa pengaruh variabel.
  • Model menurunkan deviance dari 617.49 menjadi 589.15, menunjukkan adanya peningkatan goodness-of-fit.
  • Nilai AIC = 599.15, yang cukup baik tetapi masih menyisakan ruang untuk peningkatan.

Kesimpulan Praktis

  • Frekuensi kunjungan (visit_freq) memiliki pengaruh positif yang signifikan: semakin sering pengguna berkunjung, semakin besar kemungkinan mereka tertarik dengan layanan premium.

  • Jenis kelamin pria cenderung memiliki kemungkinan yang lebih rendah untuk tertarik terhadap layanan premium dibanding wanita.

  • Anggota dengan status membership premium menunjukkan kecenderungan lebih tinggi dalam ketertarikan pada layanan premium dibandingkan dengan non-member atau basic member.

  • Model regresi ini lebih baik dibanding model null, namun masih dapat ditingkatkan dengan mempertimbangkan interaksi antar variabel atau menambahkan variabel lain yang relevan.

10.3.2 Treat sebagai Rasio (Numeric Rank)

Model menggunakan membership sebagai angka bertingkat 1-3. Koefisien membership numeric mengukur efek kenaikan satu tingkat terhadap peluang pelanggan tertarik dengan paket premium.

sim_data_numeric <- sim_data %>%
mutate(
membership_numeric = case_when(
membership == "Free" ~ 1,
membership == "Basic" ~ 2,
membership == "Premium" ~ 3,
)
)
model_numeric <- glm(interested_premium ~ gender + membership_numeric + visit_freq, data = sim_data_numeric, family = binomial)
summary(model_numeric)
## 
## Call:
## glm(formula = interested_premium ~ gender + membership_numeric + 
##     visit_freq, family = binomial, data = sim_data_numeric)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        -0.02807    0.33695  -0.083 0.933617    
## genderMale         -0.73231    0.20394  -3.591 0.000330 ***
## membership_numeric  0.26456    0.13203   2.004 0.045086 *  
## visit_freq          0.16625    0.04677   3.555 0.000378 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 617.49  on 499  degrees of freedom
## Residual deviance: 590.19  on 496  degrees of freedom
## AIC: 598.19
## 
## Number of Fisher Scoring iterations: 4

Model menggunakan membership sebagai angka bertingkat 1-3. Koefisien membership numeric mengukur efek kenaikan satu tingkat terhadap peluang pelanggan tertarik dengan paket premium.

Interpretasi Koefisien

\[ \begin{array}{|l|r|r|p{7.5cm}|} \hline \textbf{Variabel} & \textbf{Estimate} & \textbf{Odds Ratio} & \textbf{Interpretasi} \\ \hline \textnormal{(Intercept)} & -0.02807 & 0.972 & Tidak signifikan; mewakili log odds baseline saat semua prediktor bernilai nol. \\ \textnormal{genderMale} & -0.72331 & 0.485 & Laki-laki memiliki peluang sekitar 51.5\% lebih rendah (\(1 - 0.485\)) untuk tertarik layanan premium dibanding perempuan (p < 0.001). \\ \textnormal{membership\_numeric} & 0.26456 & 1.303 & Setiap kenaikan 1 unit skor membership meningkatkan peluang tertarik premium sebesar 30.3\% (p < 0.05). \\ \textnormal{visit\_freq} & 0.16625 & 1.181 & Setiap peningkatan frekuensi kunjungan meningkatkan peluang tertarik sebesar 18.1\% (p < 0.001). \\ \hline \end{array} \]

Interpretasi Goodness of Fit

\[ \begin{array}{|l|r|p{9cm}|} \hline \textbf{Statistik} & \textbf{Nilai} & \textbf{Interpretasi} \\ \hline Null Deviance & 617.49 & Deviance dari model tanpa prediktor. Menunjukkan total ketidaksesuaian data dengan model kosong. \\ \hline Residual Deviance & 590.19 & Deviance dari model akhir. Penurunan dari null deviance menunjukkan bahwa model dengan prediktor lebih sesuai dengan data. \\ \hline Degrees of Freedom (Null) & 499 & Jumlah observasi dikurangi 1 pada model tanpa prediktor. \\ \hline Degrees of Freedom (Residual) & 496 & Jumlah observasi dikurangi jumlah parameter pada model akhir. \\ \hline AIC & 598.19 & Akaike Information Criterion — semakin kecil nilainya, semakin baik model dalam keseimbangan antara fit dan kompleksitas. AIC ini sedikit lebih rendah dibanding model sebelumnya (599.15), mengindikasikan perbaikan. \\ \hline Fisher Scoring Iterations & 4 & Jumlah iterasi hingga model mencapai konvergensi. Nilai kecil (seperti 4) menunjukkan proses estimasi berjalan stabil. \\ \hline \end{array} \]

Signifikansi Model

  • Variabel genderMale dan visit_freq sangat signifikan secara statistik (p < 0.001), menunjukkan bahwa keduanya adalah prediktor kuat terhadap ketertarikan terhadap layanan premium.
  • Variabel membership_numeric juga signifikan (p < 0.05), artinya tingkat keanggotaan yang lebih tinggi memiliki hubungan positif terhadap ketertarikan pelanggan.
  • Intercept tidak signifikan (p = 0.933617) dan hanya menunjukkan baseline log-odds saat semua variabel = 0.
  • Model menunjukkan penurunan deviance dari 617.49 (null) menjadi 590.19 (residual), yang menandakan bahwa model dengan prediktor lebih mampu menjelaskan variasi dalam data.
  • Nilai AIC sebesar 598.19, sedikit lebih rendah dibanding model sebelumnya (599.15), menunjukkan model ini sedikit lebih baik dalam hal keseimbangan antara kompleksitas dan akurasi.

Kesimpulan Praktis

  • Laki-laki cenderung memiliki kemungkinan lebih rendah untuk tertarik pada layanan premium dibandingkan perempuan, dan efek ini signifikan secara statistik.
  • Frekuensi kunjungan yang lebih tinggi sangat berkorelasi dengan peningkatan peluang ketertarikan premium, sehingga metrik ini penting untuk dipertimbangkan dalam segmentasi pelanggan.
  • Tingkat keanggotaan juga berpengaruh: semakin tinggi tingkat keanggotaan (dalam skala numerik), semakin besar kemungkinan pengguna tertarik terhadap premium.
  • Secara umum, model ini sudah menunjukkan performa prediktif yang baik, tetapi bisa disempurnakan dengan eksplorasi interaksi antar variabel atau penambahan variabel lain yang relevan secara teoritis atau bisnis.

10.3.3 Perbandingan Model

10.3.3.1 Ringkasan Model

Model Nominal

library(knitr)
library(kableExtra)
library(broom)  # untuk tidy()

# Ringkasan model nominal
table_model <- tidy(model_nominal) %>%
  kable(format = "latex", booktabs = TRUE, 
        caption = "Ringkasan Koefisien Model dengan Ordinal sebagai Nominal")

# Styling tabel
kable_styling(table_model, latex_options = c("hold_position", "striped"))

Model Numeric

library(knitr)
library(kableExtra)
library(broom)  # untuk tidy()

# Ringkasan model numeric
table_model1 <- tidy(model_numeric) %>%
  kable(format = "latex", booktabs = TRUE, 
        caption = "Ringkasan Koefisien Model dengan Ordinal sebagai Rasio")

# Styling tabel
kable_styling(table_model1, latex_options = c("hold_position", "striped"))

10.3.3.2 Perbandingan AIC

list(
AIC_Nominal = AIC(model_nominal),
AIC_Numeric = AIC(model_numeric)
)
## $AIC_Nominal
## [1] 599.145
## 
## $AIC_Numeric
## [1] 598.1932

Hasil perhitungan AIC menunjukkan bahwa:

  • Model Nominal: AIC = 599.15
  • Model Numeric: AIC = 598.19

Perbedaan AIC yang kecil namun berpihak pada model numeric menunjukkan bahwa model ini sedikit lebih efisien. Dengan kompleksitas yang lebih rendah dan kinerja prediksi yang sebanding (atau lebih baik), model numeric dapat dipilih sebagai model yang lebih optimal untuk analisis lanjutan.

10.3.3.3 Goodness of Fit Model

nullmod <- glm(interested_premium ~ 1, data = sim_data, family = binomial)
r2_nominal <- 1 - (logLik(model_nominal)/logLik(nullmod))
r2_numeric <- 1 - (logLik(model_numeric)/logLik(nullmod))
list(
McFadden_R2_Nominal = r2_nominal,
McFadden_R2_Numeric = r2_numeric
)
## $McFadden_R2_Nominal
## 'log Lik.' 0.04590516 (df=5)
## 
## $McFadden_R2_Numeric
## 'log Lik.' 0.04420772 (df=4)

Nilai McFadden’s R² untuk kedua model berada di sekitar 4.5%, yang menunjukkan bahwa model hanya menjelaskan sebagian kecil dari variasi data. Ini cukup umum pada regresi logistik dengan data observasional.

Model Nominal sedikit lebih baik dibandingkan model Numeric menurut McFadden’s R², namun perbedaannya sangat kecil. Oleh karena itu, pemilihan model bisa dipertimbangkan dari aspek lain seperti interpretabilitas atau efisiensi model.

10.3.3.4 Visualisasi Prediksi

Plot untuk model nominal

library(ggplot2)

sim_data_nominal <- sim_data_nominal %>% mutate(predicted = predict(model_nominal, type = "response"))
sim_data_numeric <- sim_data_numeric %>% mutate(predicted = predict(model_numeric, type = "response"))

# Plot untuk model nominal
sim_data_nominal %>%
  ggplot(aes(x = visit_freq, y = predicted, color = membership)) +
  geom_point(alpha = 0.6) +
  labs(title = "Prediksi Probabilitas (Ordinal sebagai Nominal)", 
       x = "Frekuensi Kedatangan", 
       y = "Prediksi Probability"
  )+
  theme_minimal()

Plot untuk model numeric

sim_data_numeric %>%
  ggplot(aes(x = visit_freq, y = predicted, color = as.factor(membership_numeric))) +
  geom_point(alpha = 0.6) +
  labs(title = "Prediksi Probabilitas (Ordinal sebagai Numeric)", 
    x = "Frekuensi Kedatangan", 
    y = "Prediksi Probabilittheme_minimal"
)+
  theme_minimal()

Berdasarkan visualisasi kedua model, dapat dilihat perbedaan.Jika memang membership memiliki makna tingkatan (misalnya: Free < Basic < Premium), maka pemodelan sebagai numeric (ordinal) lebih relevan, efisien, dan mudah diinterpretasikan. Sebaliknya, jika efek antar level tidak bisa dipastikan bertingkat, maka pendekatan nominal lebih aman.

BAB 11. Pemilihan Model Regresi Logistik dan Evaluasi

11.1 Membangun Model Regresi Logistik: Pendekatan Confirmatory dan Exploratory

Dalam analisis regresi logistik, pemilihan model sangat krusial untuk mendapatkan model yang baik dalam memprediksi probabilitas kejadian suatu peristiwa (respon biner). Dua pendekatan utama dalam membangun model adalah pendekatan Confirmatory dan Exploratory.

1. Confirmatory (Pendekatan Konfirmatori)

Pendekatan ini digunakan ketika peneliti telah memiliki teori atau hipotesis yang jelas mengenai efek atau hubungan antara variabel prediktor dan respon.

Ciri-ciri: -

  • Model dibangun berdasarkan teori atau hasil penelitian sebelumnya.

  • Tujuan utamanya adalah menguji apakah efek tersebut benar-benar signifikan, bukan sekadar mencari model terbaik.

  • Peneliti biasanya menyusun model penuh terlebih dahulu, lalu menguji apakah penambahan atau pengurangan suatu efek (misalnya, interaksi) memberikan peningkatan model secara signifikan.

  • Uji signifikansi dilakukan dengan membandingkan model dengan efek tertentu dan model tanpa efek tersebut, misalnya dengan Likelihood Ratio Test.

Contoh penggunaan:

Misalnya, teori menyatakan bahwa faktor x1 dan x2 memengaruhi probabilitas seseorang membeli produk. Maka model logistik dibangun langsung dengan x1 dan x2, lalu diuji apakah kontribusi x2 benar-benar signifikan.

2. Exploratory (Pendekatan Eksploratori)

Pendekatan ini digunakan ketika peneliti belum memiliki teori yang pasti atau ingin mengeksplorasi hubungan potensial antar variabel.

Ciri-ciri: - Model dibangun secara bertahap dengan tujuan menemukan kombinasi prediktor terbaik. - Pemilihan variabel dilakukan berdasarkan kriteria statistik, seperti AIC, deviance, atau log-likelihood.

Proses seleksi dilakukan melalui:

  • Forward Selection: Mulai dari model kosong, satu per satu variabel dimasukkan jika signifikan.

  • Backward Elimination: Mulai dari model penuh, variabel yang tidak signifikan dikeluarkan.

  • Stepwise Selection: Gabungan dari keduanya, variabel dapat masuk dan keluar secara dinamis.

Tujuan:

Menemukan model yang parsimonious, yaitu cukup sederhana namun memiliki performa prediksi yang baik.

Pemilihan antara pendekatan Confirmatory dan Exploratory bergantung pada tujuan penelitian. Jika ingin menguji hipotesis tertentu, gunakan pendekatan Confirmatory. Jika ingin menemukan model terbaik berdasarkan data, gunakan pendekatan Exploratory. Dalam praktiknya, kedua pendekatan ini sering digunakan secara komplementer: teori digunakan sebagai dasar, dan seleksi eksploratori dilakukan untuk menyempurnakan model.

Simulasi Data

library(knitr)
library(dplyr)
library(ggplot2)
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
library(caret)
## Warning: package 'caret' was built under R version 4.3.3
## Loading required package: lattice
## 
## Attaching package: 'lattice'
## The following object is masked from 'package:gnm':
## 
##     barley
## 
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
## 
##     lift
## The following objects are masked from 'package:DescTools':
## 
##     MAE, RMSE
library(pROC)
## Warning: package 'pROC' was built under R version 4.3.3
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
library(DescTools)
set.seed(123)
n <- 200
x1 <- rnorm(n)
x2 <- rbinom(n, 1, 0.5)
x3 <- rnorm(n)
lin_pred <- -0.5 + 1.2 * x1 - 0.8 * x2 + 0.5 * x3
p <- 1 / (1 + exp(-lin_pred))
y <- rbinom(n, 1, p)
df <- data.frame(y = as.factor(y), x1, x2, x3)
head(df)

Pemilihan Model

Model Full

model_full <- glm(y ~ x1 + x2 + x3, data = df, family = binomial)
summary(model_full)
## 
## Call:
## glm(formula = y ~ x1 + x2 + x3, family = binomial, data = df)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.7148     0.2470  -2.894  0.00381 ** 
## x1            1.4029     0.2315   6.061 1.35e-09 ***
## x2           -0.2507     0.3463  -0.724  0.46903    
## x3            0.3567     0.1704   2.094  0.03630 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 257.72  on 199  degrees of freedom
## Residual deviance: 202.67  on 196  degrees of freedom
## AIC: 210.67
## 
## Number of Fisher Scoring iterations: 4

11.2 Metode Stepwise: Forward, Backward, dan Both

null_model <- glm(y ~ 1, data = df, family = binomial)
step_forward <- step(null_model, direction = "forward", scope = formula(model_full), trace = FALSE)
step_backward <- step(model_full, direction = "backward", trace = FALSE)
step_both <- step(null_model, direction = "both", scope = formula(model_full), trace = FALSE)
AIC(model_full, step_forward, step_backward, step_both)

11.3 Evaluasi Model: ROC dan AUC

pred_prob <- predict(step_both, type = "response")
roc_obj <- roc(df$y, pred_prob)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_obj, main = "Kurva ROC", col = "blue")

auc(roc_obj)
## Area under the curve: 0.7964

11.4 Pseudo R-Squared

PseudoR2(step_both, which = c("CoxSnell", "Nagelkerke", "McFadden"))
##   CoxSnell Nagelkerke   McFadden 
##  0.2385981  0.3294000  0.2115439

11.5 Tabel Klasifikasi dan Evaluasi

pred_class <- ifelse(pred_prob >= 0.5, 1, 0)
conf_matrix <- confusionMatrix(factor(pred_class), df$y, positive = "1")
conf_matrix
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 116  32
##          1  15  37
##                                        
##                Accuracy : 0.765        
##                  95% CI : (0.7, 0.8219)
##     No Information Rate : 0.655        
##     P-Value [Acc > NIR] : 0.0005028    
##                                        
##                   Kappa : 0.4478       
##                                        
##  Mcnemar's Test P-Value : 0.0196041    
##                                        
##             Sensitivity : 0.5362       
##             Specificity : 0.8855       
##          Pos Pred Value : 0.7115       
##          Neg Pred Value : 0.7838       
##              Prevalence : 0.3450       
##          Detection Rate : 0.1850       
##    Detection Prevalence : 0.2600       
##       Balanced Accuracy : 0.7109       
##                                        
##        'Positive' Class : 1            
## 
conf_matrix$byClass[c("Sensitivity", "Specificity")]
## Sensitivity Specificity 
##   0.5362319   0.8854962

Model terbaik berdasarkan AIC adalah model r names(which.min(c(AIC(model_full), AIC(step_forward),AIC(step_backward), AIC(step_both))). ROC menunjukkan r round(auc(roc_obj), 2) yang cukup baik. Pseudo-R² dan hasil klasifkasi juga menunjukkan model cukup akurat.

11.6 Metode Perbandingan Model dalam Regresi Logistik

Tujuan Dokumen ini menyajikan cara membandingkan model regresi logistik menggunakan ukuran: - Deviance - AIC (Akaike Information Criterion) - Likelihood-Ratio serta menjelaskan prinsip Parsimony dalam pemilihan model.

library(MASS)
library(broom)
library(DescTools)
set.seed(123)

Simulasi Data

n <- 300
x1 <- rnorm(n)
x2 <- rbinom(n, 1, 0.5)
x3 <- rnorm(n)
lin_pred <- -1 + 1.2 * x1 - 0.6 * x2 + 0.8 * x3
p <- 1 / (1 + exp(-lin_pred))
y <- rbinom(n, 1, p)
data <- data.frame(y = as.factor(y), x1, x2, x3)

Pembuatan Model

model1 <- glm(y ~ x1, data = data, family = binomial)
model2 <- glm(y ~ x1 + x2, data = data, family = binomial)
model3 <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)

Perbandingan AIC dan Deviance

model_comp <- data.frame(
Model = c("Model 1", "Model 2", "Model 3"),
AIC = c(AIC(model1), AIC(model2), AIC(model3)),
Deviance = c(deviance(model1), deviance(model2), deviance(model3))
)
model_comp

11.7 Likelihood-Ratio Test

anova(model1, model2, test = "LRT")
anova(model2, model3, test = "LRT")

11.8 Prinsip Parsimony

Model yang kompleks sering memiliki AIC dan deviance yang lebih kecil. Namun:
- Model sederhana lebih mudah diinterpretasikan.
- Jika penurunan AIC tidak signifikan, pilih model yang lebih sederhana.
- Prinsip parsimony membantu mencegah overfitting.

Rumus dan Penjelasan

Rumus AIC

\[ \text{AIC} = -2 (\log L - k) = -2 \log L + 2k \]

Penjelasan: AIC adalah ukuran untuk menilai model berdasarkan kombinasi antara goodness-of-fit (melalui log-likelihood) dan kompleksitas (jumlah parameter \(k\)). Semakin kecil AIC, semakin baik model tersebut secara keseluruhan karena AIC menghukum model yang terlalu kompleks meskipun memiliki likelihood tinggi.

Rumus Deviance

\[ D = -2 \left[ \log L(\text{model}) - \log L(\text{model saturasi}) \right] \]

Penjelasan:
Deviance mengukur seberapa jauh model saat ini dibandingkan dengan model sempurna (model saturasi). Nilai deviance yang kecil menunjukkan bahwa model memberikan prediksi yang mendekati data aktual.

Rumus Likelihood Ratio

\[ G^2 = -2 (\log L_0 - \log L_1) \]

Penjelasan:
Statistik Likelihood Ratio digunakan untuk menguji apakah penambahan variabel dalam model secara signifikan meningkatkan kecocokan model. Jika \(G^2\) besar dan p-value kecil, maka model kompleks lebih baik dari model sederhana secara statistik.

11.9 Evaluasi Tabel Klasifikasi dan Akurasi Model

pred_prob <- predict(model3, type = "response")
pred_class <- factor(ifelse(pred_prob >= 0.5, 1, 0))
conf_matrix <- confusionMatrix(pred_class, data$y, positive = "1")
conf_matrix
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 193  48
##          1  18  41
##                                           
##                Accuracy : 0.78            
##                  95% CI : (0.7288, 0.8256)
##     No Information Rate : 0.7033          
##     P-Value [Acc > NIR] : 0.0017748       
##                                           
##                   Kappa : 0.4159          
##                                           
##  Mcnemar's Test P-Value : 0.0003575       
##                                           
##             Sensitivity : 0.4607          
##             Specificity : 0.9147          
##          Pos Pred Value : 0.6949          
##          Neg Pred Value : 0.8008          
##              Prevalence : 0.2967          
##          Detection Rate : 0.1367          
##    Detection Prevalence : 0.1967          
##       Balanced Accuracy : 0.6877          
##                                           
##        'Positive' Class : 1               
## 

11.9.1 Sensitivitas dan Spesifitas

  • Sensitivitas: Kemampuan model mendeteksi kelas positif secara benar (True Positive Rate)

\[ \text{Sensitivity} = \frac{TP}{TP + FN} \]

  • Spesifisitas: Kemampuan model mendeteksi kelas negatif secara benar (True Negative Rate)

\[ \text{Specificity} = \frac{TN}{TN + FP} \]

conf_matrix$byClass[c("Sensitivity", "Specificity")]
## Sensitivity Specificity 
##   0.4606742   0.9146919

11.10 Detail ROC (Receiver Operating Characteristic)

Kurva ROC adalah alat visual yang digunakan untuk mengevaluasi performa model klasifikasi biner. Kurva ini menunjukkan trade-off antara True Positive Rate (Sensitivity) dan False Positive Rate (1 - Specificity) pada berbagai threshold klasifikasi.

  1. Definisi
  • Sumbu Y: Sensitivity = True Positive Rate = \(\frac{TP}{TP + FN}\)
  • Sumbu X: 1 - Specificity = False Positive Rate = \(\frac{FP}{FP + TN}\)
  • Garis diagonal (dari kiri bawah ke kanan atas) menunjukkan performa acak (random guess).
  • Kurva yang mendekati pojok kiri atas menunjukkan performa klasifikasi yang lebih baik.
  1. Cut-off dan Pergerakan Kurva
  • Saat cut-off menurun, model mengklasifikasikan lebih banyak pengamatan sebagai positif:
    • Sensitivitas naik
    • Spesifisitas turun
  • Saat cut-off naik, model menjadi lebih konservatif:
    • Sensitivitas turun
    • Spesifisitas naik
  1. Kurva ROC Ideal

Kurva ideal memiliki bentuk: - Naik tajam secara vertikal hingga sensitivitas = 1 - Lalu bergerak secara horizontal menuju 1 - specificity = 1 - Area under the curve (AUC) mendekati 1

  1. Interpretasi Luas Area (AUC)
  • AUC = 0.5 : model tidak lebih baik dari tebakan acak
  • AUC > 0.7 : model cukup baik
  • AUC > 0.9 : model sangat baik

AUC juga dikenal sebagai concordance index, yaitu probabilitas bahwa model memberikan nilai skor probabilitas yang lebih tinggi untuk kasus positif daripada kasus negatif.

  1. Kegunaan Kurva ROC
  • Untuk membandingkan performa beberapa model klasifikasi
  • Untuk memilih threshold (cut-off) optimal berdasarkan kebutuhan aplikasi
    (misalnya: lebih penting menghindari false negative atau false positive?)
  1. Visualisasi dalam R

Kurva ROC dapat menggunakan package pROC berikut:

library(pROC)
set.seed(123)
x1 <- rnorm(200)
x2 <- rbinom(200, 1, 0.5)
x3 <- rnorm(200)
lin_pred <- -1 + 1.5 * x1 - 0.7 * x2 + 0.6 * x3
p <- 1 / (1 + exp(-lin_pred))
y <- rbinom(200, 1, p)
data <- data.frame(y = as.factor(y), x1, x2, x3)
model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)
pred <- predict(model, type = "response")
roc_obj <- roc(data$y, pred)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_obj)

auc(roc_obj)
## Area under the curve: 0.8686
  1. Simulasi Pemilihan Threshold Optimal

Untuk memilih Threshold terbaik, kita bisa mengevaluasi sensitivitas dan spesifitas pada berbagai cut-off.

thresholds <- seq(0.1, 0.9, by = 0.05)
results <- data.frame(Threshold = thresholds)
results$Sensitivity <- sapply(thresholds, function(t) {
pred_class <- ifelse(pred >= t, 1, 0)
cm <- table(Pred = pred_class, Obs = data$y)
TP <- cm["1", "1"]
FN <- cm["0", "1"]
TP / (TP + FN)
})
results$Specificity <- sapply(thresholds, function(t) {
pred_class <- ifelse(pred >= t, 1, 0)
cm <- table(Pred = pred_class, Obs = data$y)
TN <- cm["0", "0"]
FP <- cm["1", "0"]
TN / (TN + FP)
})
print(results)
##    Threshold Sensitivity Specificity
## 1       0.10  0.91489362   0.5947712
## 2       0.15  0.85106383   0.6862745
## 3       0.20  0.80851064   0.7320261
## 4       0.25  0.76595745   0.7712418
## 5       0.30  0.72340426   0.8104575
## 6       0.35  0.68085106   0.8366013
## 7       0.40  0.61702128   0.8954248
## 8       0.45  0.59574468   0.9150327
## 9       0.50  0.51063830   0.9281046
## 10      0.55  0.51063830   0.9477124
## 11      0.60  0.42553191   0.9607843
## 12      0.65  0.36170213   0.9738562
## 13      0.70  0.29787234   0.9803922
## 14      0.75  0.19148936   0.9869281
## 15      0.80  0.12765957   0.9869281
## 16      0.85  0.06382979   1.0000000
## 17      0.90  0.02127660   1.0000000

Cut-of optimal bisa dipilih berdasarkan:

Maksimum dari Sensitivity + Specifcity

Atau mempertimbangkan trade-of sesuai tujuan aplikasi (misalnya: jika False Negative harus dihindari, maka prioritaskan sensitivitas tinggi)

11.11 Precision-Recall Curve (PR Curve)

Kurva Precision-Recall (PR) adalah alat evaluasi performa model klasifikasi, khususnya sangat berguna saat bekerja dengan data yang tidak seimbang (class imbalance).

  1. Definisi
  • Precision (Presisi): Proporsi prediksi positif yang benar-benar positif

\[ \text{Precision} = \frac{TP}{TP + FP} \]

  • Recall (Sensitivitas): Proporsi kasus positif yang berhasil diprediksi positif

\[ \text{Recall} = \frac{TP}{TP + FN} \]

  1. Interpretasi
  • PR Curve menunjukkan bagaimana presisi berubah saat recall meningkat.
  • Idealnya, kita ingin nilai presisi dan recall keduanya tinggi, tetapi biasanya ada trade-off.
  • Model dengan performa baik memiliki PR Curve yang melengkung ke pojok kanan atas pada grafik, menunjukkan kombinasi optimal antara presisi dan sensitivitas.
  1. Area Under PR Curve
  • Luas kurva (AUPRC) mendekati 1 berarti model sangat baik.
  • Baseline AUPRC = prevalensi kelas positif dalam data.
  1. PR Curve vs ROC Curve

\[ \begin{array}{|l|l|l|} \hline \textbf{Aspek} & \textbf{ROC Curve} & \textbf{Precision-Recall Curve} \\ \hline \textnormal{Fokus} & \textnormal{Semua kelas} & \textnormal{Kelas positif saja} \\ \hline \textnormal{Kuat di} & \textnormal{Data seimbang} & \textnormal{Data tidak seimbang} \\ \hline \textnormal{Sumbu Y} & \textnormal{Sensitivitas (Recall)} & \textnormal{Precision} \\ \hline \textnormal{Sumbu X} & \textnormal{1 - Spesifisitas} & \textnormal{Recall} \\ \hline \end{array} \]

  1. Visualisasi PR Curve di R
# install.packages("PRROC")
library(PRROC)
## Warning: package 'PRROC' was built under R version 4.3.3
## Loading required package: rlang
## Warning: package 'rlang' was built under R version 4.3.3
## 
## Attaching package: 'rlang'
## The following objects are masked from 'package:purrr':
## 
##     %@%, flatten, flatten_chr, flatten_dbl, flatten_int, flatten_lgl,
##     flatten_raw, invoke, splice
set.seed(123)
x1 <- rnorm(200)
x2 <- rbinom(200, 1, 0.5)
x3 <- rnorm(200)
lin_pred <- -1 + 1.5 * x1 - 0.7 * x2 + 0.6 * x3
p <- 1 / (1 + exp(-lin_pred))
y <- rbinom(200, 1, p)
data <- data.frame(y = y, x1, x2, x3)
model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)
prob <- predict(model, type = "response")
pr <- pr.curve(scores.class0 = prob[data$y == 1],
scores.class1 = prob[data$y == 0],
curve = TRUE)
plot(pr)

  1. Catatan
  • PR Curve sangat informatif untuk aplikasi seperti deteksi penipuan atau diagnosis penyakit langka.
  • Gunakan PR Curve saat:
    • Kelas positif jauh lebih jarang daripada kelas negatif.
    • Tujuan aplikasi lebih mementingkan presisi terhadap kelas minoritas.

11.12 Pseudo R-squared pada Regresi Logistik

Tujuan

Dokumen ini menjelaskan dan menghitung pseudo R-squared dalam regresi logistik:

  • \(R^2_{\text{Cox and Snell}}\)
  • \(R^2_{\text{McFadden}}\)

Simulasi Data

set.seed(123)
n <- 300
x1 <- rnorm(n)
x2 <- rbinom(n, 1, 0.5)
x3 <- rnorm(n)
lin_pred <- -1 + 1.2 * x1 - 0.6 * x2 + 0.8 * x3
p <- 1 / (1 + exp(-lin_pred))
y <- rbinom(n, 1, p)
data <- data.frame(y = as.factor(y), x1, x2, x3)

Model Logistik dan Null Model

model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)
model_null <- glm(y ~ 1, data = data, family = binomial)

Likelihood dan Rumus

\[ R^2_{\text{Cox and Snell}} = 1 - \left( \frac{L_0}{L_M} \right)^{2/n} \]

\[ R^2_{\text{McFadden}} = 1 - \frac{\log L_M}{\log L_0} \]

Dengan:

  • \(L_0\): likelihood model null (tanpa prediktor)
  • \(L_M\): likelihood model penuh

Perhitungan Manual R-Squared

logL0 <- logLik(model_null)
logLM <- logLik(model)
L0 <- exp(logL0)
LM <- exp(logLM)
n <- nobs(model)
cox_snell <- 1 - (L0 / LM)^(2 / n)
mcfadden <- 1 - (as.numeric(logLM) / as.numeric(logL0))
r2 <- data.frame(
R2_Cox_Snell = cox_snell,
R2_McFadden = mcfadden
)
r2

Perhitungan Otomatis dengan Package Tambahan

Menggunakan pscl

if (!require(pscl)) install.packages("pscl"); library(pscl)
## Loading required package: pscl
## Warning: package 'pscl' was built under R version 4.3.3
## 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 
## -135.2290328 -182.4040393   94.3500130    0.2586292    0.2698462    0.3835251

Menggunakan Desctools

if (!require(DescTools)) install.packages("DescTools"); library(DescTools)
PseudoR2(model, which = "all")
##        McFadden     McFaddenAdj        CoxSnell      Nagelkerke   AldrichNelson 
##       0.2586292       0.2366998       0.2698462       0.3835251       0.2392545 
## VeallZimmermann           Efron McKelveyZavoina            Tjur             AIC 
##       0.4360055       0.2893849       0.4315315       0.2936202     278.4580657 
##             BIC          logLik         logLik0              G2 
##     293.2731956    -135.2290328    -182.4040393      94.3500130

Interpretasi

  • Nilai \(R^2\) mendekati 1 berarti model memiliki kekuatan prediktif yang baik.

  • \(R^2_{\text{McFadden}} > 0.2\) sering dianggap sebagai model dengan kecocokan yang baik.

  • \(R^2_{\text{Cox and Snell}}\) lebih konservatif dan tidak pernah mencapai nilai 1 penuh.

Gunakan beberapa pendekatan ini sebagai pelengkap untuk menilai performa model logistik secara lebih menyeluruh.

BAB 12. Multinomial Logistik Regression

12.1 Distribusi Multinomial

Distribusi multinomial adalah generalisasi dari distribusi binomial untuk kasus dengan lebih dari dua kemungkinan hasil. Distribusi ini digunakan ketika sebuah percobaan memiliki \(k\) kemungkinan kategori hasil, dan setiap percobaan adalah independen serta saling eksklusif.

Misalkan \(Y = (Y_1, Y_2, ..., Y_k)\) adalah vektor jumlah kejadian pada masing-masing dari \(k\) kategori, dengan:

\(n\) adalah total percobaan,

\(p_1, p_2, ..., p_k\) adalah probabilitas tiap kategori (\(\sum_{i=1}^{k} p_i = 1\)),

dan \(y_1 + y_2 + ... + y_k = n\).

Maka fungsi probabilitas dari distribusi multinomial dengan \(k\) kategori adalah sebagai berikut:

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

dengan syarat:

  • \(x_1 + x_2 + \cdots + x_k = n\)
  • \(p_1 + p_2 + \cdots + p_k = 1\)

Distribusi ini sering digunakan ketika kita ingin memodelkan frekuensi dari berbagai kategori dalam sebuah data kategorikal.

Contoh Kasus: Minuman Favorit

Sebuah survei dilakukan terhadap 12 orang yang diminta memilih satu dari tiga jenis minuman favorit: Teh (T), Kopi (K), dan Jus (J). Berdasarkan survei tersebut, didapatkan hasil:

  • Teh: 5 orang
  • Kopi: 4 orang
  • Jus: 3 orang

lalu diketahui probabilitas teoritik preferensi masing-masing minuman sebesar:

  • \(p_T = 0.4\)
  • \(p_K = 0.3\)
  • \(p_J = 0.3\)

Selanjutnya muncul pertanyaan:

Berapa peluang bahwa dalam 12 orang akan ada 5 yang memilih Teh, 4 memilih Kopi, dan 3 memilih Jus?

Menggunakan rumus distribusi peluang multinomial yang sudah disebutkan sebelumnya, dengan:

  • \(n = 12\),
  • \(x_1 = 5\), \(x_2 = 4\), \(x_3 = 3\)
  • \(p_1 = 0.4\), \(p_2 = 0.3\), \(p_3 = 0.3\)

Dilakukanlah perhitungan Manual di R sebagai berikut:

# Parameter 
n<- 12 
x<- c(5, 4, 3) 
p<- c(0.4, 0.3, 0.3)


# Fungsi untuk menghitung probabilitas multinomial
prob <- factorial(n) / prod(factorial(x)) * prod(p^x) 
prob
## [1] 0.06207861

Probabilitas bahwa peluang bahwa dalam 12 orang akan ada 5 yang memilih Teh, 4 memilih Kopi, dan 3 memilih Jus (dengan proporsi preferensi 0.4, 0.3, dan 0.3) adalah 0,0621. Distribusi multinomial digunakan untuk menghitung peluang dalam percobaan dengan beberapa kategori hasil. Rumus dasarnya merupakan generalisasi dari binomial untuk lebih dari dua kategori.

12.2 Multinomial Logistic Regression (MLR) Model

Distribusi multinomial bukan hanya berguna untuk memodelkan frekuensi hasil, tetapi juga merupakan dasar teoritis bagi Multinomial Logistic Regression (MLR). Dalam konteks MLR, kita ingin memodelkan probabilitas keanggotaan dalam satu dari beberapa kategori kelas berdasarkan sekumpulan variabel prediktor.

Jika kita memiliki \(K\) kategori (kelas), dan kita pilih salah satu sebagai kategori referensi, maka model MLR menyatakan bahwa log-odds dari setiap kategori \(k\) relatif terhadap kategori referensi \(K\) adalah fungsi linier dari prediktor.

Model Multinomial Logistic Regression menyatakan bahwa log-odds dari kelas \(k\) relatif terhadap kelas referensi \(K\) dapat dituliskan sebagai:

\[ \log\left( \frac{P(Y = k)}{P(Y = K)} \right) = \beta_{0k} + \beta_{1k}X_1 + \beta_{2k}X_2 + \cdots + \beta_{pk}X_p, \quad \text{untuk } k = 1, \ldots, K - 1 \]

Dengan model ini, probabilitas untuk setiap kelas \(k\) adalah:

\[ P(Y = k) = \frac{\exp(\eta_k)}{1 + \sum_{j=1}^{K-1} \exp(\eta_j)}, \quad \text{dengan } \eta_k = \beta_{0k} + \sum_{i=1}^p \beta_{ik} X_i \]

Dan untuk kategori referensi (kelas ke-\(K\)):

\[ P(Y = K) = \frac{1}{1 + \sum_{j=1}^{K-1} \exp(\eta_j)} \]

12.2.1 Baseline-category logit model

Baseline-category logit model adalah model regresi logistik untuk variabel respon kategorik dengan lebih dari dua kategori (nominal). Model ini menggunakan satu kategori sebagai acuan (baseline) dan membandingkan kategori lainnya terhadap baseline tersebut dalam bentuk logit.

\[ \log\left(\frac{\pi_j}{\pi_c}\right), \quad j = 1, \dots, c - 1 \]

dengan:

  • \(\pi_j\) adalah probabilitas respon berada di kategori \(j\)
  • \(\pi_c\) adalah probabilitas respon berada di kategori acuan (baseline)

Maka, terdapat sebanyak \((c - 1)\) fungsi logit.

Catatan: Kategori baseline bisa ditentukan secara eksplisit, tetapi default di R adalah kategori terakhir.

Model Regresi

Jika terdapat satu prediktor \(x\), maka bentuk umum model logit-nya adalah:

\[ \log\left(\frac{\pi_j}{\pi_c}\right) = \alpha_j + \beta_j x, \quad j = 1, \dots, c - 1 \]

Contoh Kasus: 3 Kategori Respon

Misalkan respon \(Y\) memiliki tiga kategori: \(Y \in \{1, 2, 3\}\), dan kita gunakan kategori ke-3 sebagai baseline. Maka:

\[ \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 \]

Terdapat dua model logit, satu untuk perbandingan kategori 1 dengan 3, dan satu lagi untuk kategori 2 dengan 3.

Relasi Antar Kategori

Jika ingin menghitung logit antara kategori 1 dan 2: \[ \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_3}\right) - \log\left(\frac{\pi_2}{\pi_3}\right) \] \[ = (\alpha_1 + \beta_1 x) - (\alpha_2 + \beta_2 x) = (\alpha_1 - \alpha_2) + (\beta_1 - \beta_2) x \]

Ringkasan Model baseline-category logit:

  • Digunakan untuk respon dengan kategori > 2
  • Menghasilkan \((c - 1)\) fungsi logit terhadap satu baseline
  • Logit antar kategori selain baseline dapat dihitung dari selisih dua logit terhadap baseline
  • Implementasi di R menggunakan fungsi multinom() dari package nnet, dan kategori baseline bisa diatur dengan relevel()

12.2.2 Estimasi Parameter

Estimasi dilakukan menggunakan metode maximum likelihood dengan algoritma iteratif seperti Newton-Raphson.

Log-likelihood:

\[ \ell(\beta) = \sum_{i=1}^n \sum_{j=1}^K y_{ij} \log(\pi_{ij}) \]

dengan \(\pi_{ij} = P(Y_i = j | x_i)\) dan \(y_{ij} = 1\) jika \(Y_i = j\).

12.3 Contoh Kasus

12.3.1 Simulasi Data

set.seed(123)
n <- 300

# Simulasi variabel institusi (X3)
Institusi <- sample(c("DPR RI", "Kementerian/Lembaga", "BUMN/BUMD", 
                      "Pemerintah Provinsi", "Pemerintah Kabupaten/Kota", "Swasta"), 
                    size = n, replace = TRUE)

# Simulasi variabel jenis kelamin (X1)
JenisKelamin <- sample(c("Laki-laki", "Perempuan"), n, replace = TRUE, prob = c(0.9, 0.1))

# Simulasi variabel profesi (X2)
Profesi <- sample(c("Pimpinan Utama", "Manager", "Kepala Bagian", "Staf"), 
                  size = n, replace = TRUE, prob = c(0.3, 0.2, 0.2, 0.3))

# Simulasi variabel Y (jenis perkara) dengan probabilitas berbeda berdasarkan institusi
JenisPerkara <- mapply(function(inst){
  if (inst == "DPR RI") {
    sample(c("Penyuapan", "Penyalahgunaan Anggaran", "Pengadaan Barang dan Jasa"), 
           size = 1, prob = c(0.6, 0.2, 0.2))
  } else if (inst == "Kementerian/Lembaga") {
    sample(c("Penyuapan", "Penyalahgunaan Anggaran", "Pengadaan Barang dan Jasa"), 
           size = 1, prob = c(0.3, 0.3, 0.4))
  } else {
    sample(c("Penyuapan", "Penyalahgunaan Anggaran", "Pengadaan Barang dan Jasa"), 
           size = 1, prob = c(0.4, 0.4, 0.2))
  }
}, Institusi)

# Buat data frame
df <- data.frame(
  JenisPerkara = factor(JenisPerkara),
  JenisKelamin = factor(JenisKelamin),
  Profesi = factor(Profesi),
  Institusi = factor(Institusi)
)

head(df)

12.3.2 Estimasi Model

library(nnet)
## Warning: package 'nnet' was built under R version 4.3.3
model_mnlogit <- multinom(JenisPerkara ~ JenisKelamin + Profesi + Institusi, data = df)
## # weights:  33 (20 variable)
## initial  value 329.583687 
## iter  10 value 300.406947
## iter  20 value 299.513438
## final  value 299.510798 
## converged
summary(model_mnlogit)
## Call:
## multinom(formula = JenisPerkara ~ JenisKelamin + Profesi + Institusi, 
##     data = df)
## 
## Coefficients:
##                         (Intercept) JenisKelaminPerempuan ProfesiManager
## Penyalahgunaan Anggaran   0.2997781             0.7691376      0.1012584
## Penyuapan                 1.1687580             0.7764160     -0.2107605
##                         ProfesiPimpinan Utama ProfesiStaf InstitusiDPR RI
## Penyalahgunaan Anggaran             0.8137795   0.7998851     -1.01246920
## Penyuapan                           0.2181179   0.3423811     -0.04811933
##                         InstitusiKementerian/Lembaga
## Penyalahgunaan Anggaran                    -1.332619
## Penyuapan                                  -1.662124
##                         InstitusiPemerintah Kabupaten/Kota
## Penyalahgunaan Anggaran                         -0.3075101
## Penyuapan                                       -0.5361888
##                         InstitusiPemerintah Provinsi InstitusiSwasta
## Penyalahgunaan Anggaran                   0.08439841      -0.1355881
## Penyuapan                                -0.46709072      -0.6764695
## 
## Std. Errors:
##                         (Intercept) JenisKelaminPerempuan ProfesiManager
## Penyalahgunaan Anggaran   0.5774381             0.6949390      0.5201126
## Penyuapan                 0.5228970             0.6682628      0.4643222
##                         ProfesiPimpinan Utama ProfesiStaf InstitusiDPR RI
## Penyalahgunaan Anggaran             0.4786461   0.4777510       0.6776595
## Penyuapan                           0.4344297   0.4323848       0.5852977
##                         InstitusiKementerian/Lembaga
## Penyalahgunaan Anggaran                    0.6040185
## Penyuapan                                  0.5679740
##                         InstitusiPemerintah Kabupaten/Kota
## Penyalahgunaan Anggaran                          0.6190719
## Penyuapan                                        0.5821145
##                         InstitusiPemerintah Provinsi InstitusiSwasta
## Penyalahgunaan Anggaran                    0.6757666       0.6272626
## Penyuapan                                  0.6496943       0.6044925
## 
## Residual Deviance: 599.0216 
## AIC: 639.0216

12.3.3 Nilai P-value

z <- summary(model_mnlogit)$coefficients / summary(model_mnlogit)$standard.errors
pval <- 2 * (1 - pnorm(abs(z)))
round(pval, 4)
##                         (Intercept) JenisKelaminPerempuan ProfesiManager
## Penyalahgunaan Anggaran      0.6037                0.2684         0.8456
## Penyuapan                    0.0254                0.2453         0.6499
##                         ProfesiPimpinan Utama ProfesiStaf InstitusiDPR RI
## Penyalahgunaan Anggaran                0.0891      0.0941          0.1352
## Penyuapan                              0.6156      0.4285          0.9345
##                         InstitusiKementerian/Lembaga
## Penyalahgunaan Anggaran                       0.0274
## Penyuapan                                     0.0034
##                         InstitusiPemerintah Kabupaten/Kota
## Penyalahgunaan Anggaran                             0.6194
## Penyuapan                                           0.3570
##                         InstitusiPemerintah Provinsi InstitusiSwasta
## Penyalahgunaan Anggaran                       0.9006          0.8289
## Penyuapan                                     0.4722          0.2631

12.3.4 Prediksi dan Validasi

df$Predicted <- predict(model_mnlogit)
table(Predicted = df$Predicted, Actual = df$JenisPerkara)
##                            Actual
## Predicted                   Pengadaan Barang dan Jasa Penyalahgunaan Anggaran
##   Pengadaan Barang dan Jasa                        21                      13
##   Penyalahgunaan Anggaran                           9                      24
##   Penyuapan                                        37                      58
##                            Actual
## Predicted                   Penyuapan
##   Pengadaan Barang dan Jasa        16
##   Penyalahgunaan Anggaran          21
##   Penyuapan                       101
# Buat prediksi
df$Predicted <- predict(model_mnlogit)

# Hitung jumlah prediksi yang benar
jumlah_benar <- sum(df$Predicted == df$JenisPerkara)

# Hitung total data
total_data <- nrow(df)

# Hitung akurasi (persen benar)
akurasi <- jumlah_benar / total_data * 100
paste("Akurasi prediksi adalah:", round(akurasi, 2), "%")
## [1] "Akurasi prediksi adalah: 48.67 %"

12.3.5 Visualisasi

library(ggplot2)
library(dplyr)

df_plot <- df %>%
  count(Predicted, JenisPerkara)  # buat tabel frekuensi

ggplot(df_plot, aes(x = JenisPerkara, y = Predicted, fill = n)) +
  geom_tile(color = "white") +
  geom_text(aes(label = n), color = "black") +
  scale_fill_gradient(low = "white", high = "steelblue") +
  labs(title = "Confusion Matrix: Predicted vs Actual",
       x = "Actual", y = "Predicted") +
  theme_minimal()

12.3.6 Kesimpulan dan Interpretasi

Berdasarkan hasil pemodelan menggunakan regresi logistik multinomial, diperoleh akurasi prediksi sebesar 48,5%. Angka ini menunjukkan bahwa model hanya mampu mengklasifikasikan jenis perkara tindak pidana korupsi dengan benar kurang dari setengah dari total kasus yang diamati.

Akurasi yang rendah ini mengindikasikan bahwa:

  • Variabel-variabel prediktor yang digunakan (jenis kelamin, profesi, dan institusi) kemungkinan belum cukup kuat atau informatif dalam membedakan jenis perkara.

  • Terdapat kemungkinan beberapa variabel tidak signifikan secara statistik, yang justru menurunkan performa model.

  • Selain itu, distribusi kelas target yang tidak seimbang atau pola hubungan non-linear yang tidak tertangkap oleh model logistik turut berkontribusi terhadap rendahnya akurasi.

BAB 13. Regresi Logistik Ordinal

Regresi logistik ordinal merupakan salah satu metode analisis statistik yang digunakan ketika variabel respon bersifat kategorik dengan urutan atau tingkatan tertentu. Berbeda dengan regresi logistik multinomial yang digunakan untuk data kategorik tanpa urutan, model ordinal memperhitungkan struktur hierarkis dalam kategori respon, seperti “rendah”, “sedang”, dan “tinggi”, atau “ringan”, “sedang”, dan “berat”. Model ini banyak digunakan dalam ilmu sosial, kesehatan masyarakat, pemasaran, dan bidang-bidang lain yang memerlukan prediksi terhadap variabel bertingkat. Regresi logistik ordinal mengestimasi kemungkinan kumulatif dari suatu respon berada pada atau di bawah suatu tingkat tertentu, dengan mempertimbangkan pengaruh satu atau lebih variabel prediktor.

13.1 Konsep Cumulative Logit Model

Model yang digunakan adalah Cumulative Logit Model dengan asumsi proportional odds:

\[ \log\left( \frac{P(Y \leq j)}{P(Y > j)} \right) = \alpha_j + \beta x \]

  • \(\alpha_j\): intercept khusus untuk kategori ke-\(j\)
  • \(\beta\): koefisien regresi (sama untuk semua kategori kumulatif)

Untuk \(c\) kategori, terdapat \((c - 1)\) model logit kumulatif.

13.2 Interpretasi Koefisien

Koefisien \(\beta\) menjelaskan efek variabel \(x\) terhadap kemungkinan berada pada kategori yang lebih rendah atau sama.

  • Jika \(\beta > 0\): semakin besar nilai \(x\), semakin tinggi peluang berada di kategori rendah.
  • Jika \(\beta < 0\): semakin besar nilai \(x\), semakin besar peluang berada di kategori tinggi.

Odds ratio dari \(\beta\) dapat dihitung dengan rumus:

\[ \text{OR} = e^{\beta} \]

13.3 Contoh Kasus

13.3.1 Simulasi Data

set.seed(123)
n <- 300

# Usia pasien: rata-rata 45 tahun, sd 15
Usia <- round(rnorm(n, mean = 45, sd = 15))
Usia[Usia < 0] <- 18  # Usia minimum

# Komorbiditas: faktor risiko
Komorbid <- sample(c("Tidak Ada", "1 Komorbid", ">=2 Komorbid"), n, replace = TRUE, prob = c(0.4, 0.35, 0.25))

# Status vaksinasi: kategori
Vaksin <- sample(c("Belum", "1 Dosis", "Lengkap"), n, replace = TRUE, prob = c(0.2, 0.3, 0.5))

# Simulasi tingkat keparahan berdasarkan faktor risiko
Keparahan <- mapply(function(usia, komorbid, vaksin){
  prob <- c(Ringan = 0.6, Sedang = 0.3, Berat = 0.1)  # default

  # Komorbid mempengaruhi
  if (komorbid == "1 Komorbid") prob <- prob + c(-0.1, 0.05, 0.05)
  if (komorbid == ">=2 Komorbid") prob <- prob + c(-0.2, 0.05, 0.15)

  # Vaksinasi menurunkan keparahan
  if (vaksin == "Belum") prob <- prob + c(-0.2, 0.1, 0.1)
  if (vaksin == "Lengkap") prob <- prob + c(0.1, -0.05, -0.05)

  # Usia mempengaruhi risiko berat
  if (usia > 60) prob <- prob + c(-0.1, 0.0, 0.1)

  prob <- pmax(prob, 0)  # jangan negatif
  prob <- prob / sum(prob)  # normalisasi

  sample(c("Ringan", "Sedang", "Berat"), 1, prob = prob)
}, Usia, Komorbid, Vaksin)

# Buat data frame
df <- data.frame(
  Keparahan = factor(Keparahan, levels = c("Ringan", "Sedang", "Berat"), ordered = TRUE),
  Usia = Usia,
  Komorbid = factor(Komorbid),
  Vaksin = factor(Vaksin)
)

head(df)

13.3.2 Estimasi Model Ordinal

library(MASS)
model_ord <- polr(Keparahan ~ Usia + Komorbid + Vaksin, data = df, Hess = TRUE)
summary(model_ord)
## Call:
## polr(formula = Keparahan ~ Usia + Komorbid + Vaksin, data = df, 
##     Hess = TRUE)
## 
## Coefficients:
##                       Value Std. Error t value
## Usia                0.01522   0.008139  1.8699
## Komorbid1 Komorbid -0.29050   0.293816 -0.9887
## KomorbidTidak Ada  -0.86837   0.296806 -2.9257
## VaksinBelum         0.76839   0.323672  2.3740
## VaksinLengkap      -0.40398   0.258546 -1.5625
## 
## Intercepts:
##               Value   Std. Error t value
## Ringan|Sedang  0.2635  0.4595     0.5734
## Sedang|Berat   2.0633  0.4769     4.3263
## 
## Residual Deviance: 562.5954 
## AIC: 576.5954

13.3.3 Nilai P-value

(ctable <- coef(summary(model_ord)))
##                          Value  Std. Error    t value
## Usia                0.01521956 0.008139228  1.8699028
## Komorbid1 Komorbid -0.29049815 0.293815901 -0.9887081
## KomorbidTidak Ada  -0.86837285 0.296805729 -2.9257281
## VaksinBelum         0.76839112 0.323672360  2.3739782
## VaksinLengkap      -0.40398395 0.258546462 -1.5625197
## Ringan|Sedang       0.26349059 0.459497863  0.5734316
## Sedang|Berat        2.06329587 0.476915194  4.3263370
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
(ctable <- cbind(ctable, "p value" = round(p, 4)))
##                          Value  Std. Error    t value p value
## Usia                0.01521956 0.008139228  1.8699028  0.0615
## Komorbid1 Komorbid -0.29049815 0.293815901 -0.9887081  0.3228
## KomorbidTidak Ada  -0.86837285 0.296805729 -2.9257281  0.0034
## VaksinBelum         0.76839112 0.323672360  2.3739782  0.0176
## VaksinLengkap      -0.40398395 0.258546462 -1.5625197  0.1182
## Ringan|Sedang       0.26349059 0.459497863  0.5734316  0.5664
## Sedang|Berat        2.06329587 0.476915194  4.3263370  0.0000

13.3.4 Prediksi Probabilitas

# Misalnya kamu ingin memprediksi untuk beberapa kombinasi data baru
newdata <- data.frame(
  Usia = c(27, 73, 57),
  Komorbid = c("1 Komorbid", ">=2 Komorbid", "Tidak Ada"),  # jika ini kategorik
  Vaksin = c("1 Dosis", "Belum", "Lengkap")  # juga jika kategorik
)

# Prediksi probabilitas
predict(model_ord, newdata = newdata, type = "probs")
##      Ringan    Sedang      Berat
## 1 0.5357042 0.3389624 0.12533336
## 2 0.1657671 0.3800729 0.45415995
## 3 0.6611296 0.2607481 0.07812227

13.3.5 Asumsi Paralelisme

library(MASS)
#install.packages("brant")

library(brant)
## Warning: package 'brant' was built under R version 4.3.3
model <- polr(Keparahan ~ Usia + Komorbid + Vaksin, data = df, Hess = TRUE)
brant(model)
## ---------------------------------------------------- 
## Test for     X2  df  probability 
## ---------------------------------------------------- 
## Omnibus          2.84    5   0.72
## Usia         0.6 1   0.44
## Komorbid1 Komorbid   1.92    1   0.17
## KomorbidTidak Ada    1.23    1   0.27
## VaksinBelum      0.13    1   0.71
## VaksinLengkap        0.22    1   0.64
## ---------------------------------------------------- 
## 
## H0: Parallel Regression Assumption holds

BAB 14. Log Linear Model

Analisis data kategorik merupakan bagian penting dalam statistika terapan karena banyak fenomena di dunia nyata yang menghasilkan data dalam bentuk kategori, seperti jenis kelamin, status pekerjaan, tingkat pendidikan, preferensi konsumen, atau hasil diagnosis medis. Data kategori ini umumnya dianalisis menggunakan tabel kontingensi, model log-linier, dan model regresi logistik. Masing-masing pendekatan memiliki kekuatan dan kelemahan tergantung pada tujuan analisis dan struktur data.

Tabel kontingensi digunakan sebagai langkah awal eksplorasi untuk melihat hubungan antara dua atau lebih variabel kategorik. Misalnya, dalam studi tentang efek obat terhadap serangan jantung, tabel kontingensi dapat menyajikan jumlah pasien yang mengalami atau tidak mengalami serangan jantung, berdasarkan jenis obat yang dikonsumsi. Tabel ini membantu mengidentifikasi pola awal dan menghitung ukuran asosiasi seperti odds ratio, risk ratio, dan chi-square statistic untuk menguji independensi antar variabel.

Namun, ketika ingin membangun model statistik yang dapat mengendalikan efek dari banyak variabel dan interaksinya secara simultan, maka model log-linier menjadi sangat berguna. Model log-linier adalah bentuk khusus dari Generalized Linear Model (GLM) yang digunakan pada frekuensi sel dalam tabel kontingensi dan mengasumsikan distribusi Poisson. Tidak seperti regresi logistik, model log-linier tidak menetapkan variabel mana yang dependen dan mana yang independen, karena seluruh variabel diperlakukan secara simetris. Model ini lebih cocok ketika tujuan analisis adalah untuk memahami struktur asosiasi atau independensi antar variabel, bukan untuk prediksi.

Struktur model log-linier ditentukan berdasarkan efek utama dari masing-masing variabel serta interaksi di antara variabel-variabel tersebut. Misalnya, dalam tabel kontingensi tiga arah (misalnya: jenis kelamin, status merokok, dan penyakit paru), model log-linier dapat membedakan apakah interaksi dua variabel cukup menjelaskan data, ataukah diperlukan interaksi tiga arah untuk menangkap struktur asosiasinya. Penyesuaian model dapat dilakukan menggunakan metode likelihood ratio test untuk membandingkan model sederhana dengan model lebih kompleks.

Di sisi lain, regresi logistik adalah pendekatan paling umum ketika terdapat satu variabel kategorik yang secara eksplisit dianggap sebagai variabel dependen (misalnya, kejadian penyakit: ya/tidak), dan satu atau lebih variabel kategorik atau numerik sebagai prediktor. Model ini memodelkan logit dari probabilitas kejadian (yaitu log odds), dan sangat berguna dalam studi observasional dan eksperimental untuk menjelaskan atau memprediksi peluang suatu outcome. Regresi logistik juga memiliki ekstensi untuk outcome kategorik lebih dari dua kelas, seperti regresi logistik multinomial dan regresi logistik ordinal.

Dengan demikian, meskipun ketiganya beroperasi pada data kategorik, tabel kontingensi bersifat deskriptif, model log-linier bersifat eksploratif terhadap hubungan simetris, sedangkan regresi logistik bersifat prediktif terhadap outcome kategorik. Pemilihan metode tergantung pada apakah fokus utama analisis adalah deskripsi, eksplorasi struktur, atau prediksi hasil berdasarkan variabel penjelas. Kombinasi dari ketiganya sering digunakan dalam praktik untuk memperoleh pemahaman komprehensif dari data kategorik yang dianalisis.

Ringkasan Dalam analisis data kategorik, terdapat beberapa pendekatan statistik yang umum digunakan, antara lain:

  1. Tabel Kontingensi: penyajian frekuensi gabungan dari dua atau lebih variabel kategorik.

  2. Model Loglinear: digunakan untuk memodelkan struktur asosiasi di dalam tabel kontingensi tanpa menganggap ada variabel dependen.

  3. Model Regresi Logistik: digunakan untuk memodelkan probabilitas dari kategori variabel dependen berdasarkan variabel independen.

Meskipun ketiganya dapat digunakan pada data kategorik, pendekatan dan interpretasinya sangat berbeda.

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

Perbandingan Ketiga Pendekatan: \[ \begin{array}{|l|l|l|l|} \hline \textbf{Aspek} & \textbf{Tabel Kontingensi} & \textbf{Model Loglinear} & \textbf{Regresi Logistik} \\ \hline \text{Tujuan} & \text{Deskripsi frekuensi} & \text{Deteksi asosiasi} & \text{Prediksi probabilitas} \\ \hline \text{Variabel Dependen} & \text{Tidak ada} & \text{Tidak ada (simetris)} & \text{Ada (eksplisit)} \\ \hline \text{Distribusi} & \text{Tidak diasumsikan} & \text{Poisson (frekuensi sel)} & \text{Binomial (probabilitas)} \\ \hline \text{Bentuk Model} & \text{Tidak ada} & \text{GLM: log($\mu$) $\sim$ efek} & \text{GLM: logit(p) $\sim$ prediktor} \\ \hline \text{Cocok untuk} & \text{Eksplorasi awal} & \text{Tabel > 2 variabel} & \text{Studi prediktif} \\ \hline \end{array} \]

14.1 Log Linear Model

14.1.1 Tabel Kontingensi dan Model Loglinier

Tabel kontingensi menyajikan frekuensi dari kombinasi kategori antar dua atau lebih variabel. Misal:

# Contoh tabel 2x2
matrix(c(30, 20, 50, 70), nrow=2,
       dimnames = list(Obat = c("Timolol", "Placebo"),
                       Serangan = c("Ya", "Tidak")))
##          Serangan
## Obat      Ya Tidak
##   Timolol 30    50
##   Placebo 20    70

Model log-linier untuk tabel I x J dapat dituliskan: \[ \log(\mu_{ij}) = \lambda + \lambda_i^{T} + \lambda_j^{R} + \lambda_{ij}^{TR} \]

14.1.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(35, 65, 45, 55), nrow=2, byrow=TRUE)
dimnames(data) <- list(Obat = c("Timolol", "Placebo"), Serangan = c("Ya", "Tidak"))
ftable(data)
##         Serangan Ya Tidak
## Obat                     
## Timolol          35    65
## Placebo          45    55

Model saturated dapat dipasang dengan loglm dari package {MASS}:

model_saturated <- loglm(~ Obat * Serangan, data = data)
summary(model_saturated)
## Formula:
## ~Obat * Serangan
## attr(,"variables")
## list(Obat, Serangan)
## attr(,"factors")
##          Obat Serangan Obat:Serangan
## Obat        1        0             1
## Serangan    0        1             1
## attr(,"term.labels")
## [1] "Obat"          "Serangan"      "Obat:Serangan"
## 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

14.1.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(~ Obat + Serangan, data = data)
summary(model_indep)
## Formula:
## ~Obat + Serangan
## attr(,"variables")
## list(Obat, Serangan)
## attr(,"factors")
##          Obat Serangan
## Obat        1        0
## Serangan    0        1
## attr(,"term.labels")
## [1] "Obat"     "Serangan"
## 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 2.087576  1 0.1485015
## Pearson          2.083333  1 0.1489147

14.1.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

14.1.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] -0.4183685

14.1.6 Model Lebih Sederhana dan Perbandingan Model**

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:
##  ~Obat + Serangan 
## Model 2:
##  ~Obat * Serangan 
## 
##           Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1   2.087576  1                                    
## Model 2   0.000000  0   2.087576         1         0.1485
## Saturated 0.000000  0   0.000000         0         1.0000

14.1.7 Studi Kasus: Kepercayaan terhadap Surga**

Studi dari Agresti (2019) membahas hubungan antara kebahagiaan dan kepercayaan terhadap kehidupan akhirat.

data_survey <- matrix(c(32,190,
                        113,611,
                        51,326),
                      nrow = 3, byrow = TRUE,
                      dimnames = list(Kebahagiaan = c("Tidak", "Cukup", "Sangat"),
                                      Surga = c("Tidak Percaya", "Percaya")))
ftable(data_survey)
##             Surga Tidak Percaya Percaya
## Kebahagiaan                            
## Tidak                        32     190
## Cukup                       113     611
## Sangat                       51     326
loglm(~ Kebahagiaan + Surga, data = data_survey)
## Call:
## loglm(formula = ~Kebahagiaan + Surga, data = data_survey)
## 
## Statistics:
##                        X^2 df  P(> X^2)
## Likelihood Ratio 0.8911136  2 0.6404675
## Pearson          0.8836760  2 0.6428538

14.2. Rangkuman Model Log Linear 2 Arah

14.2.1 Model log-linear pada tabel kontingensi

Model log-linear adalah model yang digunakan untuk menganalisis hubungan antara dua atau lebih variabel kategorik yang disajikan dalam tabel kontingensi. Model ini mengasumsikan bahwa logaritma dari nilai ekspektasi frekuensi sel (\(\mu_{ij}\)) dapat dinyatakan sebagai penjumlahan efek variabel dan (bila perlu) interaksinya. Untuk tabel 2x2: \[ \log(\mu_{ij}) = \lambda + \lambda_i^{A} + \lambda_j^{B} + \lambda_{ij}^{AB} \]

14.2.2 Perbedaan utama antara model log-linear dan model regresi logistik

  • Model log-linear digunakan untuk memodelkan frekuensi (count) pada tabel kontingensi dan menguji asosiasi antar variabel kategorik, tanpa menganggap ada variabel respon dan prediktor.

  • Model regresi logistik digunakan untuk memodelkan probabilitas kejadian suatu outcome (biner) berdasarkan satu atau lebih prediktor (bisa kategorik maupun kontinu).

14.2.3 Estimasi Parameter log linear 2 arah**

Sistem Persamaan Model Log-Linear

\[ \log(\mu_{11}) = \lambda + \lambda^A_1 + \lambda^B_1 + \lambda^{AB}_{11} \]

\[ \log(\mu_{12}) = \lambda + \lambda^A_1 + \lambda^B_2 + \lambda^{AB}_{12} \]

\[ \log(\mu_{21}) = \lambda + \lambda^A_2 + \lambda^B_1 + \lambda^{AB}_{21} \]

\[ \log(\mu_{22}) = \lambda + \lambda^A_2 + \lambda^B_2 + \lambda^{AB}_{22} \]


Constraint Sum-to-Zero

\[ \lambda^A_1 + \lambda^A_2 = 0 \]

\[ \lambda^B_1 + \lambda^B_2 = 0 \]

\[ \lambda^{AB}_{11} + \lambda^{AB}_{12} + \lambda^{AB}_{21} + \lambda^{AB}_{22} = 0 \]


Rumus Estimasi Parameter dengan Sum-to-Zero Constraint

\[ \lambda^A_1 = \frac{1}{2} \left[ (\log \mu_{11} + \log \mu_{12}) - (\log \mu_{21} + \log \mu_{22}) \right] \]

\[ \lambda^B_1 = \frac{1}{2} \left[ (\log \mu_{11} + \log \mu_{21}) - (\log \mu_{12} + \log \mu_{22}) \right] \]

\[ \lambda^{AB}_{12} = \frac{1}{4} \left[ \log \mu_{12} - \log \mu_{11} - \log \mu_{22} + \log \mu_{21} \right] \]

14.2.4 Analisis Data Tabel Kontingensi 2x2

Diberikan data: \[ \begin{array}{|c|c|c|} \hline \textbf{Merokok} & \textbf{Sakit} & \textbf{Sehat} \\ \hline \text{Ya} & 30 & 20 \\ \hline \text{Tidak} & 10 & 40 \\ \hline \end{array} \]

14.2.5 Bentuk Model Log-Linear

Model log-linear pada tabel 2x2: \[ \log(\mu_{ij}) = \lambda + \lambda_i^{A} + \lambda_j^{B} + \lambda_{ij}^{AB} \] dengan constraint sum-to-zero: \[ \sum_i \lambda_i^A = 0,\quad \sum_j \lambda_j^B = 0,\quad \sum_{i,j} \lambda_{ij}^{AB} = 0 \]

14.2.6 Estimasi Parameter Model (Manual, Sum-to-zero)

Misalkan:

  • A1 = Merokok (Ya), A2 = Tidak
  • B1 = Sakit, B2 = Sehat

Observasi:


\[ \begin{aligned} n_{11} &= 30,\quad n_{12} = 20 \\ n_{21} &= 10,\quad n_{22} = 40 \end{aligned} \]


\[ \log(\mu_{11}) = \lambda + \lambda^A_1 + \lambda^B_1 + \lambda^{AB}_{11} \]

\[ \log(\mu_{12}) = \lambda + \lambda^A_1 + \lambda^B_2 + \lambda^{AB}_{12} \]

\[ \log(\mu_{21}) = \lambda + \lambda^A_2 + \lambda^B_1 + \lambda^{AB}_{21} \]

\[ \log(\mu_{22}) = \lambda + \lambda^A_2 + \lambda^B_2 + \lambda^{AB}_{22} \]


Constraint Sum-to-Zero

\[ \lambda^A_1 + \lambda^A_2 = 0 \]

\[ \lambda^B_1 + \lambda^B_2 = 0 \]

\[ \lambda^{AB}_{11} + \lambda^{AB}_{12} + \lambda^{AB}_{21} + \lambda^{AB}_{22} = 0 \]

Langkah-langkah:

  1. Hitung rata-rata log frekuensi sel:

\[ \lambda = \frac{1}{4} \sum_{i=1}^{2} \sum_{j=1}^{2} \log(n_{ij}) \]

\[ = \frac{1}{4} \left[ \log(30) + \log(20) + \log(10) + \log(40) \right] \]

\[ = 3.0971 \]

  1. Efek utama A (Merokok):

\[ \lambda_1^A = \frac{1}{2} \left[ (\log(30) + \log(20)) - (\log(10) + \log(40)) \right] \]

\[ = \frac{1}{2} \left[ (3.4012 + 2.9957) - (2.3026 + 3.6889) \right] \]

\[ = \frac{1}{2} \left( 6.3969 - 5.9915 \right) \]

\[ = \frac{1}{2} \left( 0.4054 \right) \]

\[ = 0.2027 \]

\[ \lambda_2^A = -0.2027 \]

  1. Efek utama B (Status):

\[ \lambda_{1}^{B} = \frac{1}{2}\left[(\log(30)+\log(10))-(\log(20)+\log(40))\right] \]

\[ = \frac{1}{2}\left[(3.4012+2.3026)-(2.9957+3.6889)\right] \]

\[ = \frac{1}{2}(5.7038-6.6846) \]

\[ = \frac{1}{2}(-0.9808) \]

\[ = -0.4904 \]

\[ \lambda_{2}^{B} = +0.4904 \]

  1. Efek interaksi:

\[ \lambda_{11}^{AB} = \frac{1}{4}\left[\log(30)-\log(20)-\log(10)+\log(40)\right] \]

\[ = \frac{1}{4}\left[3.4012-2.9957-2.3026+3.6889\right] \]

\[ = \frac{1}{4}(3.4012-2.9957-2.3026+3.6889) \]

\[ = \frac{1}{4}(1.7918) \]

\[ = 0.4479 \]

\[ \lambda_{12}^{AB} = -\lambda_{11}^{AB}=-0.4479 \]

\[ \lambda_{21}^{AB} = -0.4479 \]

\[ \lambda_{22}^{AB} = +0.4479 \]

Ringkasan Parameter

  • \(\lambda = 3.0971\)
  • \(\lambda_1^A = 0.2027, \lambda_2^A = -0.2027\)
  • \(\lambda_1^B = -0.4904, \lambda_2^B = 0.4904\)
  • \(\lambda_{11}^{AB} = 0.4479, \lambda_{12}^{AB} = -0.4479, \lambda_{21}^{AB} = -0.4479, \lambda_{22}^{AB} = 0.4479\)

14.2.7 Hitung Odds Ratio dan Interval Kepercayaan

\[ OR = \frac{n_{11} n_{22}}{n_{12} n_{21}} = \frac{30 \times 40}{20 \times 10} = \frac{1200}{200} = 6 \]

Log odds ratio: \[\log(OR) = \log(6) = 1.7918\]

Standard error (SE):

\[ SE = \sqrt{ \frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}} } \\ \\ = \sqrt{ \frac{1}{30} + \frac{1}{20} + \frac{1}{10} + \frac{1}{40} }\\ \\ = \sqrt{0.0333 + 0.05 + 0.1 + 0.025}\\ \\ = \sqrt{0.2083}\\ \\ = 0.4564 \\ \]

95\(\%\) Confidence Interval for \(\log(OR)\):

\[ \log(OR) \pm 1.96 \times SE = 1.7918 \pm 1.96 \times 0.4564 \]

\[ = (1.7918 - 0.895), \, (1.7918 + 0.895) \]

\[ = (0.8968, 2.6868) \]

Back-transform to get CI for \(OR\):

Lower = \(\exp(0.8968) = 2.452\)

Upper = \(\exp(2.6868) = 14.68\)

Jadi, OR=6 dengan taraf signifikansi 95\(\%\) memiliki interval kepercayaan dalam rentang [2.452 - 14.68]

14.2.8 Fitting Model Log-Linear dengan R

# Data 2x2
tabel <- matrix(c(30, 20, 10, 40), nrow = 2, byrow = TRUE)
colnames(tabel) <- c("Sakit", "Sehat")
rownames(tabel) <- c("Ya", "Tidak")
tabel
##       Sakit Sehat
## Ya       30    20
## Tidak    10    40
#Ubah menjadi bentuk tabel untuk glm
data <- as.data.frame(as.table(tabel))
colnames(data) <- c("Merokok", "Status", "Freq")
data
# Model tanpa interaksi
fit_no_inter <- glm(Freq ~ Merokok + Status, family = poisson, data = data)
summary(fit_no_inter)
## 
## Call:
## glm(formula = Freq ~ Merokok + Status, family = poisson, data = data)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  2.996e+00  1.871e-01  16.013   <2e-16 ***
## MerokokTidak 3.892e-10  2.000e-01   0.000    1.000    
## StatusSehat  4.055e-01  2.041e-01   1.986    0.047 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 21.288  on 3  degrees of freedom
## Residual deviance: 17.261  on 1  degrees of freedom
## AIC: 43.036
## 
## Number of Fisher Scoring iterations: 4
# Model dengan interaksi
fit_inter <- glm(Freq ~ Merokok * Status, family = poisson, data = data)
summary(fit_inter)
## 
## Call:
## glm(formula = Freq ~ Merokok * Status, family = poisson, data = data)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                3.4012     0.1826  18.629  < 2e-16 ***
## MerokokTidak              -1.0986     0.3651  -3.009  0.00262 ** 
## StatusSehat               -0.4055     0.2887  -1.405  0.16015    
## MerokokTidak:StatusSehat   1.7918     0.4564   3.926 8.65e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 2.1288e+01  on 3  degrees of freedom
## Residual deviance: 3.9968e-15  on 0  degrees of freedom
## AIC: 27.775
## 
## Number of Fisher Scoring iterations: 3

14.2.9 Intepretasi Parameter**

  • Parameter Utama (Intercept) menunjukkan rata-rata log frekuensi sel
  • Efek “Merokok” dan “Status”menunjukkan perbedaan log frekuensi antar kategori
  • Interaksi signifikan menunjukkan adanya asosiasi antara efek Merokok dan Status

Nilai \(\log(6)=1.7918\) sama dengan efek interaksi pada output R

14.2.10 Analisis Data Tabel Kontingensi 2x3**

Suatu survei dilakukan untuk mengetahui hubungan antara Jenis Kelamin (Laki-laki/Perempuan) dan Kategori BMI (Kurus/Normal/Gemuk): \[ \begin{array}{|c|c|c|c|} \hline \textbf{Jenis Kelamin} & \textbf{Kurus} & \textbf{Normal} & \textbf{Gemuk} \\ \hline \text{Laki-laki} & 12 & 20 & 8 \\ \hline \text{Perempuan} & 18 & 24 & 10 \\ \hline \end{array} \]

14.2.11 Bentuk Model Log-Linear untuk Tabel 2x3

Bentuk umum model log-linear untuk tabel 2x3 (dengan sum-to-zero constraint): \[ \log(\mu_{ij}) = \lambda + \lambda_i^{A} + \lambda_j^{B} + \lambda_{ij}^{AB} \] dengan:

  • \(\mu_{ij}\): ekspektasi frekuensi pada baris ke-i, kolom ke-j

  • A: Jenis Kelamin (i=1:Laki-laki, i=2:Perempuan)

  • B: Kategori BMI (j=1:Kurus, j=2:Normal, j=3:Gemuk)

  • Constraint: \[ \sum_i \lambda_i^A = 0,\quad \sum_j \lambda_j^B = 0,\quad \sum_{i} \lambda_{ij}^{AB} = 0, dan \sum_{j}\lambda_{ij}^{AB}=0 \]

Secara eksplisit :

\[ \log(\mu_{ij}) = \lambda \]

\[ + \lambda_1^A \, (\text{Laki-laki}), \, \lambda_2^A \, (\text{Perempuan}) \]

\[ + \lambda_1^B \, (\text{Kurus}), \, \lambda_2^B \, (\text{Normal}), \, \lambda_3^B \, (\text{Gemuk}) \]

\[ +\lambda_{ij}, (\text{interaksi jika ada}) \]

14.2.12 Fitting Model Log-Linear di R

# Membuat data frame dari tabel
tabel2x3 <- matrix(c(12, 20, 8, 18, 24, 10), nrow = 2, byrow = TRUE)
colnames(tabel2x3) <- c("Kurus", "Normal", "Gemuk")
rownames(tabel2x3) <- c("Laki-laki", "Perempuan")
tabel2x3
##           Kurus Normal Gemuk
## Laki-laki    12     20     8
## Perempuan    18     24    10
# Ubah menjadi data.frame untuk glm
data2x3 <- as.data.frame(as.table(tabel2x3))
colnames(data2x3) <- c("JenisKelamin", "BMI", "Freq")
data2x3
# Model log-linear tanpa interaksi (asumsi independen)
fit_no_inter <- glm(Freq ~ JenisKelamin + BMI, family = poisson, data = data2x3)
summary(fit_no_inter)
## 
## Call:
## glm(formula = Freq ~ JenisKelamin + BMI, family = poisson, data = data2x3)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             2.5683     0.2179  11.789   <2e-16 ***
## JenisKelaminPerempuan   0.2624     0.2103   1.248   0.2122    
## BMINormal               0.3830     0.2368   1.618   0.1058    
## BMIGemuk               -0.5108     0.2981  -1.713   0.0866 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 13.06443  on 5  degrees of freedom
## Residual deviance:  0.22527  on 2  degrees of freedom
## AIC: 35.26
## 
## Number of Fisher Scoring iterations: 3
# Model log-linear dengan interaksi (untuk cek asosiasi)
fit_inter <- glm(Freq ~ JenisKelamin * BMI, family = poisson, data = data2x3)
summary(fit_inter)
## 
## Call:
## glm(formula = Freq ~ JenisKelamin * BMI, family = poisson, data = data2x3)
## 
## Coefficients:
##                                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                       2.4849     0.2887   8.608   <2e-16 ***
## JenisKelaminPerempuan             0.4055     0.3727   1.088    0.277    
## BMINormal                         0.5108     0.3651   1.399    0.162    
## BMIGemuk                         -0.4055     0.4564  -0.888    0.374    
## JenisKelaminPerempuan:BMINormal  -0.2231     0.4802  -0.465    0.642    
## JenisKelaminPerempuan:BMIGemuk   -0.1823     0.6032  -0.302    0.762    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance:  1.3064e+01  on 5  degrees of freedom
## Residual deviance: -9.0719e-30  on 0  degrees of freedom
## AIC: 39.034
## 
## Number of Fisher Scoring iterations: 3

14.2.13 Intepretasi

Model tanpa interaksi: - Jika deviance tidak signifikan, maka Jenis Kelamin dan BMI independen.

  • Intercept: log frekuensi pada kategori referensi (Laki-laki, Kurus)
  • Koefisien JenisKelaminPerempuan: perbedaan log-frekuensi antara Perempuan vs Laki-laki (pada Kurus)
  • Koefisien BMI: perbedaan log-frekuensi kategori BMI (Normal/Gemuk) terhadap Kurus (pada Laki-laki)

Model dengan interaksi:

  • Jika koefisien interaksi signifikan, berarti ada hubungan/asosiasi antara Jenis Kelamin dan BMI. Artinya distribusi BMI berbeda antara Laki-laki dan Perempuan.

Contoh interpretasi hasil (misal):

  • Jika koefisien JenisKelaminPerempuan negatif: proporsi Perempuan pada kategori referensi lebih kecil dibanding Laki-laki.

  • Jika koefisien BMI_Normal positif: kemungkinan seseorang Normal lebih tinggi daripada Kurus (pada Laki-laki).

  • Jika model interaksi signifikan, pola distribusi BMI berbeda antara Laki-laki dan Perempuan.

14.3 Model Log Linear Tiga Arah**

Pada pembahasan sebelumnya, kita telah memahami bahwa salah satu tujuan utama dari penyusunan model log linear adalah untuk mengestimasi parameter-parameter yang menjelaskan hubungan di antara variabel-variabel kategorik.

Pada materi kali ini, kita akan membahas model log linear yang lebih kompleks, yaitu model log linear untuk tabel kontingensi tiga arah. Model ini melibatkan tiga variabel kategorik, sehingga kemungkinan interaksi yang dapat terjadi di dalam model pun menjadi lebih banyak. Dalam konteks ini, interaksi paling tinggi yang dapat dimodelkan adalah interaksi tiga arah, yaitu interaksi yang melibatkan ketiga variabel secara bersamaan.

14.3.1 Model Log-Linear untuk Tabel Tiga Arah

Model log-linear yang melibatkan tiga variabel kategorik (misal: X, Y, dan Z) dapat dibangun dalam berbagai bentuk model, tergantung pada tingkat interaksi yang ingin dimasukkan. Berikut adalah beberapa alternatif model log-linear yang umum digunakan:

1. Model Saturated \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} + \lambda^{XYZ}_{ijk} \] Model ini memuat semua kemungkinan interaksi, termasuk interaksi tiga arah (X, Y, dan Z).

  1. Model Homogen \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \] Model ini hanya mengakomodasi interaksi dua arah antar variabel tanpa memasukkan interaksi tiga arah.

  2. Model Conditional

    • Conditional pada X: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} \] Memuat interaksi X dengan Y dan X dengan Z.

    • Conditional pada Y: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{YZ}_{jk} \] Memuat interaksi Y dengan X dan Y dengan Z.

    • Conditional pada Z: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \] Memuat interaksi Z dengan X dan Z dengan Y.

  3. Model Joint Independence

    • Independensi antara X \(\&\) Y: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} \]

    • Independensi antara X \(\&\) Z: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} \]

    • Independensi antara Y \(\&\) Z: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{YZ}_{jk} \]

  4. Model Tanpa Interaksi \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k \] Model ini hanya memasukkan efek utama tanpa interaksi antar variabel.

14.3.2 Pengujian Interaksi dalam Model Log-Linear Tiga Arah

Dalam analisis model log-linear tiga arah, pengujian interaksi dilakukan untuk mengetahui ada atau tidaknya interaksi antar variabel. Pengujian ini dilakukan secara bertahap, dimulai dari tingkat interaksi tertinggi ke yang lebih rendah. Untuk model log-linear dengan tiga peubah (X, Y, dan Z), tahapan pengujian meliputi:

  1. Pengujian Interaksi Tiga Arah (XYZ):
    • Bandingkan model saturated dengan model homogenous.
  2. Pengujian Interaksi Dua Arah (XY, XZ, YZ):
    • Bandingkan model homogenous dengan model conditional.

    • Bandingkan model conditional dengan model joint independence.

    • Bandingkan model joint independence dengan model tanpa interaksi.

Setiap tahapan pengujian dilakukan untuk menilai kecocokan model dan menentukan struktur interaksi mana yang paling sesuai dengan data yang diamati.

14.3.3 Soal Praktikum

14.3.3.1 Soal

Tabel berikut menyajikan data dari survei General Social Survey (GSS) tahun 1994 mengenai jenis kelamin responden, tingkat fundamentalisme, dan sikap terhadap hukuman mati untuk kasus pembunuhan. Susun dan interpretasikan model log-linear paling sederhana (paling parsimonious) untuk data ini. Jelaskan proses yang Anda lakukan dalam menentukan model terbaik serta asosiasi apa saja yang teridentifikasi. Tunjukkan juga bagaimana nilai yang diprediksi dari model menggambarkan asosiasi tersebut.

14.3.3.2 Tabel Data Survei

\[ \begin{array}{|c|c|c|c|c|} \hline \textbf{Fundamentalisme} & \textbf{Jenis Kelamin} & \textbf{Mendukung} & \textbf{Menolak} & \textbf{Total} \\ \hline \text{Fundamentalist} & \text{Laki-laki} & 128 & 32 & 160 \\ \text{Fundamentalist} & \text{Perempuan} & 123 & 73 & 196 \\ \text{Fundamentalist} & \text{Total} & 251 & 105 & 356 \\ \hline \text{Moderate} & \text{Laki-laki} & 182 & 56 & 238 \\ \text{Moderate} & \text{Perempuan} & 168 & 105 & 273 \\ \text{Moderate} & \text{Total} & 350 & 161 & 511 \\ \hline \text{Liberal} & \text{Laki-laki} & 119 & 49 & 168 \\ \text{Liberal} & \text{Perempuan} & 111 & 70 & 181 \\ \text{Liberal} & \text{Total} & 230 & 119 & 349 \\ \hline \end{array} \]

Keterangan:

  • Fundamentalisme: Fundamentalist, Moderate, Liberal

  • Jenis Kelamin: Laki-laki, Perempuan

  • Sikap: Mendukung (Favor), Menolak (Oppose) hukuman mati

14.3.4 Analisis Log-Linear untuk Tabel Tiga Arah

14.3.4.1 Package yang Digunakan

library("epitools")
library("DescTools")
library("lawstat")
## Warning: package 'lawstat' was built under R version 4.3.3
# Input data sesuai tabel praktikum
z.fund <- factor(rep(c("1fund", "2mod", "3lib"), each = 4))
x.sex  <- factor(rep(c("1M", "2F"), each = 2, times = 3))
y.fav  <- factor(rep(c("1fav", "2opp"), times = 6))
counts <- c(128, 32, 123, 73, 182, 56, 168, 105, 119, 49, 111, 70)

data <- data.frame(
  Fundamentalisme = z.fund,
  Jenis_Kelamin   = x.sex,
  Sikap           = y.fav,
  Frekuensi       = counts

)
data

Membentuk Tabel Kontingensi 3 Arah

table3d <- xtabs(Frekuensi ~ Fundamentalisme + Jenis_Kelamin + Sikap, data = data)
ftable(table3d)
##                               Sikap 1fav 2opp
## Fundamentalisme Jenis_Kelamin                
## 1fund           1M                   128   32
##                 2F                   123   73
## 2mod            1M                   182   56
##                 2F                   168  105
## 3lib            1M                   119   49
##                 2F                   111   70

Analisis Log-Linear: Tahap Pemodelan Kita akan memodelkan tabel ini menggunakan beberapa model log-linear dan membandingkan kecocokan model (parsimonious model):

14.4 Uji Model Interaksi Tiga Arah (Saturated Vs Homogenous)

14.4.0.1 Penentuan Kategori Referensi

##=============================##
# Penentuan kategori reference
##=============================##
x.sex  <- relevel(x.sex, ref = "2F")
y.fav  <- relevel(y.fav, ref = "2opp")
z.fund <- relevel(z.fund, ref = "3lib")

Model Saturated

Model log-linear saturated memasukkan semua interaksi hingga tiga arah :

\[\log(\mu_{ijk}) = \lambda + \lambda^{X}i + \lambda^{Y}j + \lambda^{Z}k + \lambda^{XY}{ij} + \lambda^{XZ}{ik} + \lambda^{YZ}{jk} + \lambda^{XYZ}{ijk}\]

# Model saturated
model_saturated <- glm(counts ~ x.sex + y.fav + z.fund +
             x.sex*y.fav + x.sex*z.fund + y.fav*z.fund +
             x.sex*y.fav*z.fund,
             family = poisson(link = "log"))
summary(model_saturated)
## 
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav + 
##     x.sex * z.fund + y.fav * z.fund + x.sex * y.fav * z.fund, 
##     family = poisson(link = "log"))
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    4.248495   0.119523  35.545  < 2e-16 ***
## x.sex1M                       -0.356675   0.186263  -1.915  0.05551 .  
## y.fav1fav                      0.461035   0.152626   3.021  0.00252 ** 
## z.fund1fund                    0.041964   0.167285   0.251  0.80193    
## z.fund2mod                     0.405465   0.154303   2.628  0.00860 ** 
## x.sex1M:y.fav1fav              0.426268   0.228268   1.867  0.06185 .  
## x.sex1M:z.fund1fund           -0.468049   0.282210  -1.659  0.09721 .  
## x.sex1M:z.fund2mod            -0.271934   0.249148  -1.091  0.27507    
## y.fav1fav:z.fund1fund          0.060690   0.212423   0.286  0.77511    
## y.fav1fav:z.fund2mod           0.008969   0.196903   0.046  0.96367    
## x.sex1M:y.fav1fav:z.fund1fund  0.438301   0.336151   1.304  0.19227    
## x.sex1M:y.fav1fav:z.fund2mod   0.282383   0.301553   0.936  0.34905    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 2.4536e+02  on 11  degrees of freedom
## Residual deviance: 5.9952e-15  on  0  degrees of freedom
## AIC: 100.14
## 
## Number of Fisher Scoring iterations: 3
exp(model_saturated$coefficients)
##                   (Intercept)                       x.sex1M 
##                    70.0000000                     0.7000000 
##                     y.fav1fav                   z.fund1fund 
##                     1.5857143                     1.0428571 
##                    z.fund2mod             x.sex1M:y.fav1fav 
##                     1.5000000                     1.5315315 
##           x.sex1M:z.fund1fund            x.sex1M:z.fund2mod 
##                     0.6262231                     0.7619048 
##         y.fav1fav:z.fund1fund          y.fav1fav:z.fund2mod 
##                     1.0625694                     1.0090090 
## x.sex1M:y.fav1fav:z.fund1fund  x.sex1M:y.fav1fav:z.fund2mod 
##                     1.5500717                     1.3262868

Interprtasi Output Model Saturated

14.4.0.2 Ringkasan Model

Model yang digunakan adalah model log-linear saturated dengan semua efek utama, interaksi dua arah, dan interaksi tiga arah. Model ini memodelkan hubungan antara jenis kelamin (x.sex), sikap terhadap hukuman mati (y.fav), dan tingkat fundamentalisme (z.fund) terhadap frekuensi responden.

14.4.0.3 Hasil Estimasi Koefisien**

\[ \begin{array}{|l|c|c|c|c|} \hline \textbf{Parameter} & \textbf{Estimate} & \textbf{Std. Error} & \textbf{z value} & \textbf{Pr(>z)} \\ \hline \text{(Intercept)} & 4.25 & 0.12 & 35.55 & < 2e^{-16}\, \text{***} \\ \text{x.sex1M} & -0.36 & 0.19 & -1.92 & 0.055\, \text{.} \\ \text{y.fav1fav} & 0.46 & 0.15 & 3.02 & 0.0025\, \text{**} \\ \text{z.fund1fund} & 0.04 & 0.17 & 0.25 & 0.80 \\ \text{z.fund2mod} & 0.41 & 0.15 & 2.63 & 0.0086\, \text{**} \\ \text{x.sex1M:y.fav1fav} & 0.43 & 0.23 & 1.87 & 0.062\, \text{.} \\ \text{x.sex1M:z.fund1fund} & -0.47 & 0.28 & -1.66 & 0.097\, \text{.} \\ \text{x.sex1M:z.fund2mod} & -0.27 & 0.25 & -1.09 & 0.28 \\ \text{y.fav1fav:z.fund1fund} & 0.06 & 0.21 & 0.29 & 0.78 \\ \text{y.fav1fav:z.fund2mod} & 0.01 & 0.20 & 0.05 & 0.96 \\ \text{x.sex1M:y.fav1fav:z.fund1fund} & 0.44 & 0.34 & 1.30 & 0.19 \\ \text{x.sex1M:y.fav1fav:z.fund2mod} & 0.28 & 0.30 & 0.94 & 0.35 \\ \hline \end{array} \]

14.4.0.4 Interpretasi Koefisien

  • (Intercept): Rata-rata log jumlah kasus untuk kategori referensi (Perempuan, Menolak hukuman mati, Liberal) adalah 4.25 (atau \(\mu \approx 70\) ).

  • x.sex1M: Laki-laki memiliki expected count sekitar 0.7 kali Perempuan dalam kategori referensi lainnya, namun hanya mendekati signifikansi (p = 0.055).

  • y.fav1fav: Mereka yang mendukung hukuman mati memiliki expected count sekitar 1.59 kali lipat dibanding yang menolak (signifikan, p = 0.0025).

  • z.fund1fund: Kelompok Fundamentalist tidak berbeda nyata dari Liberal (exp(0.04) \(\approx\) 1.04; p = 0.80).

  • z.fund2mod: Kelompok Moderate memiliki expected count 1.5 kali lebih besar dibanding Liberal (signifikan, p = 0.0086).

  • Interaksi dua & tiga arah: Sebagian besar tidak signifikan (p > 0.05), artinya tidak ada bukti kuat adanya efek gabungan antar variabel.

14.4.0.5 Goodness-of-Fit

  • Residual deviance \(\approx\) 0 menandakan model saturated benar-benar fit terhadap data (seluruh variasi data dijelaskan oleh model).

  • AIC = 100.14 dapat digunakan untuk perbandingan dengan model yang lebih sederhana.

14.4.0.6 Kesimpulan

  • Model saturated ini sangat fit dengan data, namun tidak semua parameter/interaksi signifikan.

  • Efek utama yang paling signifikan adalah:

    • Sikap mendukung hukuman mati (expected count 1.6x lebih tinggi dari yang menolak)

    • Kelompok Moderate (expected count 1.5x lebih tinggi dari Liberal)

  • Tidak ditemukan bukti kuat interaksi dua atau tiga arah yang signifikan.

  • Model yang lebih sederhana (tanpa interaksi tiga arah) perlu dipertimbangkan untuk model final yang lebih parsimonious.

Catatan Interpretasi:

  • Nilai exp(coef) menyatakan rasio ekspektasi (expected count ratio) dibandingkan baseline.

  • Efek positif -> menaikkan expected count; Efek negatif -> menurunkan expected count.

  • Koefisien signifikan pada p-value < 0.05

14.4.1 Model Homogenous

Model log-linear homogenous memasukkan semua efek utama dan semua interaksi dua arah, tanpa interaksi tiga arah. Secara matematis, model ini dapat dituliskan sebagai berikut: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]

# Homogenous Model
model_homogenous <- glm(counts ~ x.sex + y.fav + z.fund +
              x.sex*y.fav + x.sex*z.fund + y.fav*z.fund,
              family = poisson(link = "log"))
summary(model_homogenous)
## 
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav + 
##     x.sex * z.fund + y.fav * z.fund, family = poisson(link = "log"))
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            4.31096    0.10522  40.972  < 2e-16 ***
## x.sex1M               -0.51575    0.13814  -3.733 0.000189 ***
## y.fav1fav              0.35707    0.12658   2.821 0.004788 ** 
## z.fund1fund           -0.06762    0.14452  -0.468 0.639854    
## z.fund2mod             0.33196    0.13142   2.526 0.011540 *  
## x.sex1M:y.fav1fav      0.66406    0.12728   5.217 1.81e-07 ***
## x.sex1M:z.fund1fund   -0.16201    0.15300  -1.059 0.289649    
## x.sex1M:z.fund2mod    -0.08146    0.14079  -0.579 0.562887    
## y.fav1fav:z.fund1fund  0.23873    0.16402   1.455 0.145551    
## y.fav1fav:z.fund2mod   0.13081    0.14951   0.875 0.381614    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 245.361  on 11  degrees of freedom
## Residual deviance:   1.798  on  2  degrees of freedom
## AIC: 97.934
## 
## Number of Fisher Scoring iterations: 3

14.4.2 Uji Hipotesis: Apakah Ada Interaksi Tiga Arah? (Saturated vs Homogenous)

Pengujian ini menggunakan residual deviance dari kedua model (saturated dan homogenous).

14.4.2.1 Langkah-Langkah Pengujian**

14.4.2.1.1. Hipotesis
  • H0 : Tidak ada interaksi tiga arah (model homogenous sudah cukup)

  • H1 : Ada interaksi tiga arah (model saturated diperlukan)

14.4.2.1.2. Hitung Selisih Deviance
# Deviance antar model
Deviance.model <- model_homogenous$deviance - model_saturated$deviance
Deviance.model
## [1] 1.797977
14.4.2.1.3. Hitung Derajat Bebas
# Derajat bebas = db model homogenous - db model saturated
derajat.bebas <- (model_homogenous$df.residual - model_saturated$df.residual)
derajat.bebas
## [1] 2
14.4.2.1.4. Chi-Square Tabel
chi.tabel <- qchisq(1 - 0.05, df = derajat.bebas)
chi.tabel
## [1] 5.991465
14.4.2.1.5. Keputusan Uji
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima H0", "Tolak H0")
Keputusan
## [1] "Terima H0"

Interpretasi : Pada taraf nyata 5\(\%\), belum cukup bukti untuk menolak H0 atau dapat dikatakan bahwa tidak ada interaksi tiga arah antara jenis kelamin, fundamentalisme, dan pendapat mengenai hukuman mati.

Catatan:

  • Model pengurang adalah model yang lebih lengkap (lebih banyak parameter, df lebih kecil), yaitu model saturated

  • Derajat bebas dihitung dari selisih derajat bebas model homogenous dan saturated

  • Keputusan berdasarkan perbandingan deviance model dengan chi-square tabel

Rangkuman

Pengujian ada tidaknya interaksi tiga arah (Saturated Model vs Homogenous Model)

  • Hipotesis

    • H0: \(\lambda_{ijk}^{XYZ}=0\) (Tidak ada interaksi tiga arah; model yang terbentuk adalah model homogenous) -

    • H0: \(\lambda_{ijk}^{XYZ}\neq0\) (Tidak ada interaksi tiga arah; model yang terbentuk adalah model homogenous)

  • Tingkat Signifikansi

    \(\alpha=5\)%$

  • Statistik Uji

    • \(\Delta\)Deviance = Deviance model homogenous - Deviance model saturated = 1.798 - 0.00 = 1.798

    • \(db\) = \(db\) model homogenous - \(db\) model saturated = 2 - 0 = 2

  • Daerah Penolakan

    Tolak H0 jika \(\Delta\)Deviance \(\>>\) \(\chi_{0.05,db}^2 = \chi_{0.05,2}^2 = 5.991\)

  • Keputusan

    Karena 1.798 < 5.991, maka terima H0

  • Interpretasi

    Pada taraf nyata 5\(\%\), belum cukup bukti untuk menolak H0 atau dapat dikatakan bahwa tidak ada interaksi tiga arah antara jenis kelamin, fundamentalisme, dan pendapat mengenai hukuman mati.

Catatan Perhitungan Derajat Bebas dan Selisish Deviance

Ingat, dalam membuat selisish deviance , model yang menjadi penguran adalah model yang lebih lengkap (parameter yang lebih banyak atau derajat bebasnya lebih kecil).

Makin banyak parameter, makin kecil derajat bebasnya, karena:

  • \(db\) = banyaknya amatan (atau perkalian dimensi tabel kontingensi, misal 2 x 2 x 3 = 12) dikurangi banyaknya parameter (koefisien, termasuk intercept)

Cek di output R ada berapa banyak coefficients (termasuk intercept) untuk menghitung derajat bebas yang benar.

14.4.3 Uji Model Interaksi Dua Arah (Homogenous Vs Conditional on X)

14.4.3.1 Model Conditional on X

Model log-linear conditional pada X memasukkan efek utama dan interaksi dua arah antara X dengan Y dan X dengan Z, tanpa interaksi antara Y dengan Z maupun interaksi tiga arah. \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} \]

# Conditional Association on X
model_conditional_X <- glm(counts ~ x.sex + y.fav + z.fund +
              x.sex*y.fav + x.sex*z.fund,
              family = poisson(link = "log"))
summary(model_conditional_X)
## 
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav + 
##     x.sex * z.fund, family = poisson(link = "log"))
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          4.23495    0.08955  47.293  < 2e-16 ***
## x.sex1M             -0.52960    0.13966  -3.792 0.000149 ***
## y.fav1fav            0.48302    0.08075   5.982 2.20e-09 ***
## z.fund1fund          0.07962    0.10309   0.772 0.439916    
## z.fund2mod           0.41097    0.09585   4.288 1.81e-05 ***
## x.sex1M:y.fav1fav    0.65845    0.12708   5.181 2.20e-07 ***
## x.sex1M:z.fund1fund -0.12841    0.15109  -0.850 0.395405    
## x.sex1M:z.fund2mod  -0.06267    0.13908  -0.451 0.652274    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 245.3612  on 11  degrees of freedom
## Residual deviance:   3.9303  on  4  degrees of freedom
## AIC: 96.067
## 
## Number of Fisher Scoring iterations: 4

Pengujian Ada Tidaknya Interaksi Antara Y dan Z (Homogenous Model vs Conditional Association on X)

  • Hipotesis

    • H0: \(\lambda_{jk}^{YZ}=0\) (Tidak ada interaksi antara pendapat hukuman mati (Y) dan fundamentalisme (Z)) -

    • H0: \(\lambda_{jk}^{YZ}\neq0\) (Ada interaksi antara pendapat hukuman mati (Y) dan fundamentalisme (Z))

  • Tingkat Signifikansi

    \(\alpha=5\%\)

  • Statistik Uji

    • \(\Delta\)Deviance = Deviance model conditional on X - Deviance model homogenous = 3.903 - 1.798 = 2.132

    • \(db\) = \(db\) model homogenous - \(db\) model saturated = 4 - 2 = 2

  • Daerah Penolakan

    Tolak H0 jika \(\Delta\)Deviance \(\>>\) \(\chi_{0.05,db}^2 = \chi_{0.05,2}^2 = 5.991\)

  • Keputusan

    Karena 2.132 < 5.991, maka terima H0

Interpretasi

Dengan taraf nyata 5\(\%\), belum cukup bukti untuk menolak H0 atau dapat dikatakan bahwa tidak ada interaksi antara pendapat tentang hukuman mati dan fundamentalisme. Dengan kata lain, model yang terbentuk adalah model tanpa parameter \(\lambda_{jk}^{YZ}\)

Pengujian Selisih Deviance (Conditional on X vs Homogenous)

# Pengujian hipotesis

# Deviance of Model
Deviance.model <- model_conditional_X$deviance - model_homogenous$deviance   # model_conditional_X: conditional on X, model_homogenous: homogenous
Deviance.model
## [1] 2.132302

Hitung Derajat Bebas

# Chi Square tabel dengan alpha = 0.05
derajat.bebas <- (4 - 2)
derajat.bebas
## [1] 2

Chi-Square Tabel

chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
## [1] 5.991465

Keputusan Uji

Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
## [1] "Terima"

Interpretasi

Karena nilai Deviance.model = 2.13 lebih kecil dari nilai kritis chi-square tabel = 5.99 (dengan df = 2, alpha = 0.05), maka keputusan uji adalah “Terima”.

Pada taraf nyata 5\(\%\), belum cukup bukti untuk menolak H0, atau dengan kata lain tidak ada interaksi antara pendapat mengenai hukuman mati (Y) dan fundamentalisme (Z). Model yang terbentuk cukup hanya sampai dua interaksi dengan X (conditional on X), sehingga interaksi Y*Z tidak signifikan secara statistik.

14.4.4 Uji Model Interaksi Dua Arah (Homogenous Vs Conditional on Y)

Model log-linear conditional pada Y memasukkan efek utama dan interaksi dua arah antara X dengan Y dan Y dengan Z, tanpa interaksi antara X dengan Z maupun interaksi tiga arah. \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{YZ}_{jk} \]

# Conditional Association on Y
model_conditional_Y <- glm(counts ~ x.sex + y.fav + z.fund +
              x.sex*y.fav + y.fav*z.fund,
              family = poisson(link = "log"))
summary(model_conditional_Y)
## 
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav + 
##     y.fav * z.fund, family = poisson(link = "log"))
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            4.33931    0.09919  43.748  < 2e-16 ***
## x.sex1M               -0.59345    0.10645  -5.575 2.48e-08 ***
## y.fav1fav              0.37259    0.12438   2.996  0.00274 ** 
## z.fund1fund           -0.12516    0.13389  -0.935  0.34989    
## z.fund2mod             0.30228    0.12089   2.500  0.01240 *  
## x.sex1M:y.fav1fav      0.65845    0.12708   5.181 2.20e-07 ***
## y.fav1fav:z.fund1fund  0.21254    0.16205   1.312  0.18966    
## y.fav1fav:z.fund2mod   0.11757    0.14771   0.796  0.42606    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 245.3612  on 11  degrees of freedom
## Residual deviance:   2.9203  on  4  degrees of freedom
## AIC: 95.057
## 
## Number of Fisher Scoring iterations: 4

Pengujian Ada Tidaknya Interaksi Antara X dan Z (Homogenous Model vs Conditional Association on Y)

  • Hipotesis

    • H0: \(\lambda_{ik}^{XZ}=0\) (Tidak ada interaksi antara jenis kelamin (X) dan fundamentalisme (Z)) -

    • H0: \(\lambda_{ik}^{XZ}\neq0\) (Ada interaksi antara jenis kelamin

      1. dan fundamentalisme (Z))
  • Tingkat Signifikansi

    \(\alpha=5\%\)

  • Statistik Uji

    • \(\Delta\)Deviance = Deviance model conditional on Y - Deviance model homogenous = 2.9203 - 1.798 = 1.1223

    • \(db\) = \(db\) model homogenous - \(db\) model saturated = 4 - 2 = 2

  • Daerah Penolakan

    Tolak H0 jika \(\Delta\)Deviance \(\>>\) \(\chi_{0.05,db}^2 = \chi_{0.05,2}^2 = 5.991\)

  • Keputusan

    Karena 1.1223 < 5.991, maka terima H0

  • Interpretasi

    Dengan taraf nyata 5\(\%\), belum cukup bukti untuk menolak H0 atau dapat dikatakan bahwa tidak ada interaksi antara jenis kelamin dan fundamentalisme. Dengan kata lain, model yang terbentuk adalah model tanpa parameter \(\lambda_{ik}^{XZ}\)

Pengujian Hipotesis Interaksi X dan Z (Conditional on Y vs Homogenous)

Hitung Selisih Deviance

# Deviance of Model
Deviance.model <- model_conditional_Y$deviance - model_homogenous$deviance   # model_conditional_Y: conditional on Y, model_homogenous: homogenous
Deviance.model
## [1] 1.122315

Hitung Derajat Bebas

# Chi Square tabel dengan alpha = 0.05
derajat.bebas <- (4 - 2)
derajat.bebas
## [1] 2

Chi-Square Tabel

chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
## [1] 5.991465

Keputusan Uji

Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
## [1] "Terima"

Interpretasi

Karena nilai Deviance.model = 1.12 lebih kecil dari nilai kritis chi-square tabel = 5.99 (dengan df = 2, alpha = 0.05), maka keputusan uji adalah “Terima”.

Pada taraf nyata 5\(\%\), belum cukup bukti untuk menolak H0, atau dengan kata lain tidak ada interaksi antara jenis kelamin (X) dan fundamentalisme (Z). Model yang terbentuk cukup hanya sampai dua interaksi dengan Y (conditional on Y), sehingga interaksi X*Z tidak signifikan secara statistik.

14.4.5 Uji Model Interaksi Dua Arah (Homogenous Vs Conditional on Z)

14.4.5.1 Model Conditional on Z

Model log-linear conditional pada Z memasukkan efek utama dan interaksi dua arah antara X dengan Z dan Y dengan Z, tanpa interaksi antara X dengan Y maupun interaksi tiga arah. \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]

# Conditional Association on Z
model_conditional_Z <- glm(counts ~ x.sex + y.fav + z.fund +
              x.sex*z.fund + y.fav*z.fund,
              family = poisson(link = "log"))
summary(model_conditional_Z)
## 
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * z.fund + 
##     y.fav * z.fund, family = poisson(link = "log"))
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            4.12255    0.10518  39.195  < 2e-16 ***
## x.sex1M               -0.07453    0.10713  -0.696    0.487    
## y.fav1fav              0.65896    0.11292   5.836 5.36e-09 ***
## z.fund1fund           -0.06540    0.15126  -0.432    0.665    
## z.fund2mod             0.33196    0.13777   2.410    0.016 *  
## x.sex1M:z.fund1fund   -0.12841    0.15109  -0.850    0.395    
## x.sex1M:z.fund2mod    -0.06267    0.13908  -0.451    0.652    
## y.fav1fav:z.fund1fund  0.21254    0.16205   1.312    0.190    
## y.fav1fav:z.fund2mod   0.11757    0.14771   0.796    0.426    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 245.361  on 11  degrees of freedom
## Residual deviance:  29.729  on  3  degrees of freedom
## AIC: 123.87
## 
## Number of Fisher Scoring iterations: 4

Pengujian Ada Tidaknya Interaksi Antara X dan Y (Homogenous Model vs Conditional Association on Z)

  • Hipotesis

    • H0: \(\lambda_{ij}^{XY}=0\) (Tidak ada interaksi antara jenis kelamin (X) dan pendapat tentang hukuman mati (Y)) -

    • H0: \(\lambda_{ij}^{XY}\neq0\) (Ada interaksi antara jenis kelamin

      1. dan pendapat tentang hukuman mati (Y))
  • Tingkat Signifikansi

    \(\alpha=5\%\)

  • Statistik Uji

    • \(\Delta\)Deviance = Deviance model conditional on Y - Deviance model homogenous = 29.729 - 1.798 = 27.931

    • \(db\) = \(db\) model homogenous - \(db\) model saturated = 3 - 2 = 1

  • Daerah Penolakan

    Tolak H0 jika \(\Delta\)Deviance \(\>>\) \(\chi_{0.05,db}^2 = \chi_{0.05,1}^2 = 3.841\)

  • Keputusan

    Karena 27.931 > 3.841, maka tolak H0

  • Interpretasi

    Dengan taraf nyata 5\(\%\), menolak H0 atau dapat dikatakan bahwa ada interaksi antara jenis kelamin dan pendapat tentang hukuman mati. Dengan kata lain, model yang terbentuk adalah model parameter \(\lambda_{ij}^{XY}\)

Pengujian Hipotesis Interaksi X dan Y (Conditional on Z vs Homogenous)

Hitung Selisih Deviance

# Deviance of Model
Deviance.model <- model_conditional_Z$deviance - model_homogenous$deviance   # model_conditional_Z: conditional on Z, model_homogenous: homogenous
Deviance.model
## [1] 27.93095

Hitung Derajat Bebas

# Chi Square tabel dengan alpha = 0.05
derajat.bebas <- (3 - 2)
derajat.bebas
## [1] 1

Chi-Square Tabel

chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
## [1] 3.841459

Keputusan Uji

Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
## [1] "Tolak"

Interpretasi

Karena nilai Deviance.model = 27.93 jauh lebih besar dari nilai kritis chi-square tabel = 3.84 (dengan df = 1, alpha = 0.05), maka keputusan uji adalah “Tolak”.

Pada taraf nyata 5\(\%\), terdapat cukup bukti untuk menolak H0, atau dengan kata lain ada interaksi antara jenis kelamin (X) dan pendapat tentang hukuman mati (Y). Model terbaik yang terbentuk adalah model dengan menyertakan parameter interaksi (conditional on Z).

14.5 Pemilihan Model Terbaik

14.5.1 Ringkasan Model Log Linier

\[ \begin{array}{|l|l|c|c|c|c|} \hline \textbf{Model} & \textbf{Parameter} & \textbf{Deviance} & \textbf{Jumlah Parameter} & \textbf{df} & \textbf{AIC} \\ \hline \text{Saturated} & \lambda + \lambda_i^x + \lambda_j^y + \lambda_k^z + \lambda_{ij}^{xy} + \lambda_{jk}^{yz} + \lambda_{ik}^{xz} + \lambda_{ijk}^{xyz} & 0.000 & 12 & 0 & 100.14 \\ \hline \text{Homogenous} & \lambda + \lambda_i^x + \lambda_j^y + \lambda_k^z + \lambda_{ij}^{xy} + \lambda_{jk}^{yz} + \lambda_{ik}^{xz} & 1.798 & 10 & 2 & 97.934 \\ \hline \text{Conditional on X} & \lambda + \lambda_i^x + \lambda_j^y + \lambda_k^z + \lambda_{jk}^{yz} & 3.9303 & 8 & 4 & 96.067 \\ \hline \text{Conditional on Y} & \lambda + \lambda_i^x + \lambda_j^y + \lambda_k^z + \lambda_{ik}^{xz} & 2.9203 & 8 & 4 & 95.057 \\ \hline \text{Conditional on Z} & \lambda + \lambda_i^x + \lambda_j^y + \lambda_k^z + \lambda_{ij}^{xy} & 29.729 & 9 & 3 & 123.87 \\ \hline \end{array} \]

14.5.2 Ringkasan Pengujian Interaksi 3 Arah dan 2 Arah

\[ \begin{array}{|c|l|c|c|c|c|l|} \hline \textbf{Interaksi} & \textbf{Pengujian} & \Delta \textbf{Deviance} & \Delta \textbf{df} & \textbf{Chi-Square Tabel} & \textbf{Keputusan} & \textbf{Keterangan} \\ \hline \text{XYZ} & \text{Saturated vs Homogenous} & 1.798 & 2 & 5.991 & \text{Terima H}_0 & \text{tidak ada interaksi} \\ \text{YZ} & \text{Conditional on X vs Homogenous} & 2.1323 & 2 & 5.991 & \text{Terima H}_0 & \text{tidak ada interaksi} \\ \text{XZ} & \text{Conditional on Y vs Homogenous} & 1.1223 & 2 & 5.991 & \text{Terima H}_0 & \text{tidak ada interaksi} \\ \text{XY} & \text{Conditional on Z vs Homogenous} & 27.931 & 1 & 3.841 & \text{Tolak H}_0 & \text{ada interaksi} \\ \hline \end{array} \]

14.5.3 Kesimpulan Pemilihan Model Terbaik

Dari hasil di atas diketahui bahwa asosiasi yang nyata hanya terdapat antara jenis kelamin dan pendapat mengenai hukuman mati. Sehingga, model terbaik adalah:

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} \]

Model terbaik adalah model log-linear tanpa interaksi tiga arah dan hanya memuat interaksi dua arah antara jenis kelamin (X) dan sikap terhadap hukuman mati (Y).

14.6 Model Terbaik

Model terbaik dipilih berdasarkan pengujian interaksi yang signifikan, yaitu hanya interaksi dua arah antara jenis kelamin (X) dan sikap terhadap hukuman mati (Y):

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} \]

# Model Terbaik
bestmodel <- glm(counts ~ x.sex + y.fav + z.fund +
                 x.sex*y.fav,
                 family = poisson(link = "log"))
summary(bestmodel)
## 
## Call:
## glm(formula = counts ~ x.sex + y.fav + z.fund + x.sex * y.fav, 
##     family = poisson(link = "log"))
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        4.26518    0.07794  54.721  < 2e-16 ***
## x.sex1M           -0.59345    0.10645  -5.575 2.48e-08 ***
## y.fav1fav          0.48302    0.08075   5.982 2.20e-09 ***
## z.fund1fund        0.01986    0.07533   0.264    0.792    
## z.fund2mod         0.38130    0.06944   5.491 4.00e-08 ***
## x.sex1M:y.fav1fav  0.65845    0.12708   5.181 2.20e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 245.3612  on 11  degrees of freedom
## Residual deviance:   4.6532  on  6  degrees of freedom
## AIC: 92.79
## 
## Number of Fisher Scoring iterations: 4

\[ \begin{array}{|l|c|} \hline \textbf{Model} & \textbf{AIC} \\ \hline \text{Saturated} & 100.14 \\ \text{Homogenous} & 97.934 \\ \text{Conditional on X} & 96.067 \\ \text{Conditional on Y} & 95.057 \\ \text{Conditional on Z} & 123.87 \\ \text{Model Terbaik} & 92.79 \\ \hline \end{array} \]

Dari hasil di atas, terlihat bahwa model terbaik memiliki AIC yang lebih rendah dibandingkan dengan model lainnya seperti saturated, homogennous, dan conditional model.

14.7 Interpretasi Koefisien Model Terbaik

# Interpretasi koefisien model terbaik
data.frame(
  koef = bestmodel$coefficients,
  exp_koef = exp(bestmodel$coefficients)
)

\[ \begin{array}{|l|c|c|} \hline \textbf{Koefisien} & \textbf{Nilai Koefisien} & \textbf{Exp(Nilai Koefisien)} \\ \hline \text{Intercept} & 4.265 & 71.1776 \\ \text{x.sex1M} & -0.5934 & 0.5524 \\ \text{y.fav1fav} & 0.483 & 1.621 \\ \text{z.fund1fund} & 0.0198 & 1.02 \\ \text{z.fund2mod} & 0.3813 & 1.464 \\ \text{x.sex1M:y.fav1fav} & 0.685 & 1.9318 \\ \hline \end{array} \]

14.7.1 Interpretasi Koefisien Model Terbaik

  • \(\exp(\lambda_{1M}^X) = \exp(-0.593) = 0.552 \rightarrow nilai odds\)

    Tanpa memperhatikan fundamentalisme dan pendapat mengenai hukuman mati, peluang seseorang berjenis kelamin laki-laki adalah 0,55 kali dibandingkan perempuan.
    Atau, peluang seseorang berjenis kelamin perempuan adalah \(1/0.55 = 1.81\) kali dibandingkan laki-laki.

  • \(\exp(\lambda_{1fav}^Y) = \exp(0.483) = 1.621 \rightarrow nilai odds\)

    Tanpa memperhatikan jenis kelamin dan fundamentalisme, peluang seseorang mendukung hukuman mati adalah 1,621 kali dibandingkan yang menolak.

  • \(\exp(\lambda_{1fund}^Z) = \exp(0.01986) = 1.02 \rightarrow nilai odds\)

    Tanpa memperhatikan jenis kelamin dan pendapat mengenai hukuman mati, peluang seseorang fundamentalist adalah 1,02 kali dibandingkan liberal.

  • \(\exp(\lambda_{2mod}^Z) = \exp(0.381) = 1.464 \rightarrow nilai odds\)

    Tanpa memperhatikan jenis kelamin dan pendapat mengenai hukuman mati, peluang seseorang moderate adalah 1,464 kali dibandingkan liberal.

  • \(\exp(\lambda_{1M,1fav}^{XY} = \exp(0.658) = 1.932 \rightarrow nilai odds ratio\)

    Tanpa memperhatikan fundamentalisme, odds mendukung hukuman mati (dibandingkan menolak) jika dia laki-laki adalah 1,932 kali dibandingkan odds yang sama jika dia perempuan.

14.8 Nilai Dugaan Model Terbaik

# Fitted values dari model terbaik
data.frame(
  Fund = z.fund,
  sex = x.sex,
  favor = y.fav,
  counts = counts,
  fitted = bestmodel$fitted.values
)

14.8.1 Perhitungan Manual Nilai Dugaan (Fitted Value) Model Terbaik

\[ \hat{\mu}_{111} = \exp(\lambda + \lambda_{1m}^{x} + \lambda_{1fav}^{y} + \lambda_{fund}^{z} + \lambda_{1m,1fav}^{xy}) \] \[ = \exp(4.265 - 0.593 + 0.483 + 0.01986 + 0.658) \] \[ = \exp(4.833) = 125.595 \]

\[ \hat{\mu}_{112} = \exp(\lambda + \lambda_{1m}^{x} + \lambda_{1fav}^{y} + \lambda_{2mod}^{z} + \lambda_{1m,1fav}^{xy}) \] \[ = \exp(4.265 - 0.593 + 0.483 + 0.381 + 0.658) \] \[ = \exp(5.195) = 180.279 \]

\[ \hat{\mu}_{113} = \exp(\lambda + \lambda_{1m}^{x} + \lambda_{1fav}^{y} + \lambda_{lib}^{z} + \lambda_{1m,1fav}^{xy}) \] \[ = \exp(4.265 - 0.593 + 0.483 + 0 + 0.658) \] \[ = \exp(4.813) = 123.126 \]

\[ \hat{\mu}_{121} = \exp(\lambda + \lambda_{1m}^{x} + \lambda_{2opp}^{y} + \lambda_{fund}^{z} + \lambda_{1m,2opp}^{xy}) \] \[ = \exp(4.265 - 0.593 + 0 + 0.01986 + 0) \] \[ = \exp(3.692) = 40.109 \]

\[ \hat{\mu}_{122} = \exp(\lambda + \lambda_{1m}^{x} + \lambda_{2opp}^{y} + \lambda_{2mod}^{z} + \lambda_{1m,2opp}^{xy}) \] \[ = \exp(4.265 - 0.593 + 0 + 0.381 + 0) \] \[ = \exp(4.053) = 57.572 \]

\[ \hat{\mu}_{123} = \exp(\lambda + \lambda_{1m}^{x} + \lambda_{2opp}^{y} + \lambda_{lib}^{z} + \lambda_{1m,2opp}^{xy}) \] \[ = \exp(4.265 - 0.593 + 0 + 0 + 0) \] \[ = \exp(3.672) = 39.320 \]

\[ \hat{\mu}_{211} = \exp(\lambda + \lambda_{2f}^{x} + \lambda_{1fav}^{y} + \lambda_{fund}^{z} + \lambda_{2f,1fav}^{xy}) \] \[ = \exp(4.265 + 0 + 0.483 + 0.01986 + 0) \] \[ = \exp(4.768) = 117.691 \]

\[ \hat{\mu}_{212} = \exp(\lambda + \lambda_{2f}^{x} + \lambda_{1fav}^{y} + \lambda_{2mod}^{z} + \lambda_{2f,1fav}^{xy}) \] \[ = \exp(4.265 + 0 + 0.483 + 0.381 + 0) \] \[ = \exp(5.1295) = 168.933 \]

\[ \hat{\mu}_{213} = \exp(\lambda + \lambda_{2f}^{x} + \lambda_{1fav}^{y} + \lambda_{lib}^{z} + \lambda_{2f,1fav}^{xy}) \] \[ = \exp(4.265 + 0 + 0.483 + 0 + 0) \] \[ = \exp(4.748) = 115.377 \]

\[ \hat{\mu}_{221} = \exp(\lambda + \lambda_{2f}^{x} + \lambda_{2opp}^{y} + \lambda_{fund}^{z} + \lambda_{2f,2opp}^{xy}) \] \[ = \exp(4.265 + 0 + 0 + 0.01986 + 0) \] \[ = \exp(4.285) = 72.605 \]

\[ \hat{\mu}_{222} = \exp(\lambda + \lambda_{2f}^{x} + \lambda_{2opp}^{y} + \lambda_{2mod}^{z} + \lambda_{2f,2opp}^{xy}) \] \[ = \exp(4.265 + 0 + 0 + 0.381 + 0) \] \[ = \exp(4.646) = 104.217 \]

\[ \hat{\mu}_{223} = \exp(\lambda + \lambda_{2f}^{x} + \lambda_{2opp}^{y} + \lambda_{lib}^{z} + \lambda_{2f,2opp}^{xy}) \] \[ = \exp(4.265 + 0 + 0 + 0 + 0) \] \[ = \exp(4.265) = 71.178 \]

Keterangan: Nilai \(\hat{\mu}_{ijk}\) akan sama apapun referensi dari kategori peubahnya yang digunakan.

REFERENSI

Yamamoto, J., et al. (2024). Self‐Performed Dietary Sodium Reduction and Blood Pressure in Hypertension. Journal of the American Heart Association, 13(3), e034632. https://doi.org/10.1161/JAHA.124.034632

World Health Organization. (2023). Hypertension. WHO. https://www.who.int/news-room/fact-sheets/detail/hypertension

Mente, A., O’Donnell, M., Rangarajan, S., et al. (2023). Effect of Dietary Sodium on Blood Pressure: A Crossover Trial. JAMA, 330(12), 1150–1159. https://doi.org/10.1001/jama.2023.16583

Pertiwi, E. A. (2023). Hubungan antara konsumsi natrium dengan tekanan darah pada pasien hipertensi di Poli Penyakit Dalam RSI Sultan Agung Semarang (Skripsi, Universitas Islam Sultan Agung). Repository Unissula. https://repository.unissula.ac.id/29922/1/Ilmu%20Keperawatan_30901900062_fullpdf.pdf

Gunnell, D., Luntamo, M., & Habib, F. (2019). Understanding suicide rates and their social determinants: a global perspective. The Lancet Psychiatry, 6(2), 145-151. https://doi.org/10.1016/S2215-0366(18)30379-6

Kienast, J. R., & Paoletti, S. (2017). Cigarette smoking, tobacco cessation, and lung cancer. Journal of Clinical Oncology, 35(15), 1932-1941. https://doi.org/10.1200/JCO.2016.70.2365

Xu, C., & Wang, S. (2017). The role of EGFR mutation in lung cancer therapy: From molecular mechanisms to clinical applications. Journal of Thoracic Disease, 9(9), 2854-2863. https://doi.org/10.21037/jtd.2017.08.42

Lee, J. H., & Choi, J. H. (2015). Melasma: Epidemiology, aetiology and treatment. Journal of Dermatology, 42(6), 499-508. https://doi.org/10.1111/1346-8138.12810

Global Health Observatory. (2020). UV index. World Health Organization. https://www.who.int/health-topics/uv-radiation

Sharquie, K. E., & Noaimi, A. (2018). Sunscreen and the prevention of hyperpigmentation. Journal of Cosmetic Dermatology, 17(6), 1107-1112. https://doi.org/10.1111/jocd.12500

Apriliyani, P. Y. (2017). Hubungan antara pemakaian tabir surya dengan derajat keparahan melasma (Skor MASI) pada wanita di Kecamatan Grogol-Sukoharjo. Publikasi Ilmiah. https://eprints.ums.ac.id/50227/28/NASKAH%20PUBLIKASI.pdf

Montgomery, D. C., Peck, E. A., & Vining, G. G. (2012). Introduction to Linear Regression Analysis (5th ed.). Wiley.

Hosmer, D. W., Lemeshow, S., & Sturdivant, R. X. (2013). Applied Logistic Regression (3rd ed.). Wiley.