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
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:
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).
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).
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.
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.
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.
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
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
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
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
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.
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:
Dalam ilmu sosial dan psikologi, analisis data kategori digunakan untuk memahami perilaku manusia, opini publik, dan faktor sosial lainnya. Misalnya:
Dalam bidang kesehatan, analisis data kategori sangat penting dalam epidemiologi dan studi klinis. Contohnya:
Dalam pemasaran dan bisnis, data kategori digunakan untuk memahami preferensi pelanggan, segmentasi pasar, dan efektivitas strategi pemasaran. Beberapa penerapan meliputi:
Dalam dunia pendidikan, analisis data kategori berguna dalam mengevaluasi metode pengajaran, tingkat kepuasan mahasiswa, dan efektivitas kurikulum. Contohnya:
Pemerintah sering menggunakan analisis data kategori untuk memahami kebutuhan masyarakat dan merancang kebijakan yang lebih efektif. Beberapa penerapan termasuk:
Dalam bidang keamanan dan analisis kriminal, data kategori digunakan untuk memahami pola kejahatan dan merancang strategi pencegahan. Contohnya:
Berbagai metode dapat digunakan dalam analisis data kategori, tergantung pada tujuan penelitian. Beberapa metode umum meliputi:
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.
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:
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:
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\).
## Warning: package 'knitr' was built under R version 4.3.3
## Warning: package 'kableExtra' was built under R version 4.3.3
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
## Warning: package 'broom' was built under R version 4.3.3
## 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
## Warning: package 'ResourceSelection' was built under R version 4.3.3
## ResourceSelection 0.3-6 2023-06-27
## [1] 0 1 0 1 1 0 0 1 0 0
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.
## [1] 1 3 2 3 4 0 2 3 2 2
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.
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:
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
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.
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.
Dalam eksperimen, subjek secara acak dialokasikan ke dalam kelompok perlakuan dan kontrol. Teknik sampling umum:
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.
Retrospective sampling mengumpulkan data dari peristiwa masa lalu. Umumnya digunakan dalam studi observasional untuk menelusuri hubungan sebab-akibat.
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.
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.
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} \]
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} \]
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} \]
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} \]
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) \]
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) \]
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}} \]
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.
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.
Akan dilakukan perhitungan untuk melihat distribusi peluang dan ukuran asosiasi untuk kasus konsumsi natrium ini.
# 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
# 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
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
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.
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
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
Estimasi bertujuan untuk memperkirakan parameter populasi berdasarkan data sampel. Estimasi dibagi menjadi:
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:
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:
Terdapat beberapa Uji Hipotesis yang digunakan ketika kita menggunakan struktur data berupa tabel kontingensi 2×2
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.
Uji asosiasi dalam tabel kontingensi 2×2 bertujuan untuk mengukur hubungan antara dua variabel kategori. Tiga ukuran utama dalam uji asosiasi adalah:
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.
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)} \]
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)} \]
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.
Uji independensi digunakan untuk menentukan apakah ada hubungan statistik antara dua variabel kate gorikal.
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:
\[ E_{ij} = \frac{(R_i \times C_j)}{N} \]
dengan:
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”
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.
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.
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} \]
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
## Warning in chisq.test(data): Chi-squared approximation may be incorrect
##
## 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
##
## 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
##
## 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
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data_partisi3
## X-squared = 2.7942, df = 1, p-value = 0.0946
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).
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)\).
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.
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} \]
# 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"
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.
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:
Keterbatasan:
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.
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} \]
##
## 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
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.
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:
Jika Residual Positif Besar:
Jika Residual Negatif Besar:
Kesimpulan Residual:
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.
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.
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.
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.
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.
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
## 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
# 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
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
# 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
Estimasi
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%
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
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]
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.
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 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:
Tabel kontingensi tiga arah dapat disusun menjadi dua jenis yakni tabel parsial dan tabel marginal.
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.
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} \]
Peluang bersama didefinisikan sebagai:
\[ P(Z, X, Y) = \frac{f(Z, X, Y)}{N} \]
Dimana:
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:
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) \]
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(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(Z, X) = \sum_{Y} P(Z, X, Y) \]
Dengan cara ini, kita dapat menghitung peluang bersyarat antara tiga variabel dalam tabel kontingensi 3 arah.
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).
Beda Peluang dihitung dengan rumus:
\[ BP = P(Y | X_1, Z) - P(Y | X_2, Z) \]
Risiko Relatif dihitung dengan rumus:
\[ RR = \frac{P(Y | X_1, Z)}{P(Y | X_2, Z)} \]
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))} \]
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++}} \]
Tabel kontingensi tiga arah digunakan untuk menganalisis hubungan antara dua variabel kategorik dengan mempertimbangkan variabel kontrol.
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:
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:
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:
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\).
Penaksir (Khusus Tabel \(2 \times 2 \times K\))
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:
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.
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\).
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.
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.
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.
#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
## Luka
## Penyebab Luka Fatal Luka Tidak Fatal
## Bunuh Diri 13 12
## Kecelakaan 14 27
## 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:
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
## Rumah Korban Rumah Kerabat Lainnya
## 104 66 69
\[ \begin{array}{|c|c|} \hline \textbf{Luka Fatal} & \textbf{Bukan Luka Fatal} \\ \hline 114 & 125 \\ \hline \end{array} \]
\[ \begin{array}{|c|c|c|} \hline \textbf{Rumah Korban} & \textbf{Rumah Kerabat} & \textbf{Lainnya} \\ \hline 104 & 66 & 69 \\ \hline \end{array} \]
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
## Luka Fatal Luka Tidak Fatal
## 0.4644351 0.5355649
## 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
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
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
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data_cedera[, , "Rumah Kerabat"]
## X-squared = 1.3759, df = 1, p-value = 0.2408
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: data_cedera[, , "Lainnya"]
## X-squared = 6.8878, df = 1, p-value = 0.008679
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
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:
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:
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:
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:
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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:
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.
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
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.
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).
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.
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.
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).
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)
dataPlot 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)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.
# 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
Pemodelan Regresi Poisson
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
## (Intercept) vehicle_typeT road_conditionS
## 5.8866972 1.2083691 0.8023715
Koefisien
## (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)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.
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)\)
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.
Prinsip dasar Maximum Likelihood Estimation (MLE) adalah memaksimalkan fungsi likelihood/log-likelihood. Langkah-langkah dalam MLE adalah:
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)}) \]
Diagnostik digunakan untuk mengevaluasi apakah model sudah tepat. Beberapa metode diagnostik yang digunakan antara lain:
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
Analisis Residual
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
\[ U(\beta) = \frac{\partial \ell(\beta)}{\partial \beta} = X^T(y - \pi) \]
\[ H(\beta) = -X^T W X, \quad \text{dengan} \quad W = \text{diag}(\pi_i(1 - \pi_i)) \]
\[ \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:
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
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.
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.
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:
Dan:
\[ \eta_i = \log(\lambda_i) = x_i^T \beta \]
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.
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)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
## Hasil estimasi beta: -0.158337 -0.0004575211
2. Perbandingan dengan 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
# 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)
## [1] 657.9248
## [1] 663.1351
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.
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.
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:
# 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)## 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" ...
## 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
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.
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
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.
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
Kesimpulan Praktis
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"))## $AIC_Nominal
## [1] 599.145
##
## $AIC_Numeric
## [1] 598.1932
Hasil perhitungan AIC menunjukkan bahwa:
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.
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.
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.
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
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## 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
## 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
##
## 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
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)## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Area under the curve: 0.7964
## CoxSnell Nagelkerke McFadden
## 0.2385981 0.3294000 0.2115439
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
##
## 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.
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.
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_compModel 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.
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
##
\[ \text{Sensitivity} = \frac{TP}{TP + FN} \]
\[ \text{Specificity} = \frac{TN}{TN + FP} \]
## Sensitivity Specificity
## 0.4606742 0.9146919
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.
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
AUC juga dikenal sebagai concordance index, yaitu probabilitas bahwa model memberikan nilai skor probabilitas yang lebih tinggi untuk kasus positif daripada kasus negatif.
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
## Area under the curve: 0.8686
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)
Kurva Precision-Recall (PR) adalah alat evaluasi performa model klasifikasi, khususnya sangat berguna saat bekerja dengan data yang tidak seimbang (class imbalance).
\[ \text{Precision} = \frac{TP}{TP + FP} \]
\[ \text{Recall} = \frac{TP}{TP + FN} \]
\[ \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} \]
## 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)Tujuan
Dokumen ini menjelaskan dan menghitung pseudo R-squared dalam regresi logistik:
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:
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
)
r2Perhitungan Otomatis dengan Package Tambahan
Menggunakan 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.
## 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.
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:
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:
lalu diketahui probabilitas teoritik preferensi masing-masing minuman sebesar:
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:
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.
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)} \]
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:
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:
multinom() dari
package nnet, dan kategori baseline bisa diatur dengan
relevel()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\).
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)## Warning: package 'nnet' was built under R version 4.3.3
## # weights: 33 (20 variable)
## initial value 329.583687
## iter 10 value 300.406947
## iter 20 value 299.513438
## final value 299.510798
## converged
## 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
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
## 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 %"
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()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.
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.
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 \]
Untuk \(c\) kategori, terdapat \((c - 1)\) model logit kumulatif.
Koefisien \(\beta\) menjelaskan efek variabel \(x\) terhadap kemungkinan berada pada kategori yang lebih rendah atau sama.
Odds ratio dari \(\beta\) dapat dihitung dengan rumus:
\[ \text{OR} = e^{\beta} \]
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)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
## 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
# 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
## Warning: package 'brant' was built under R version 4.3.3
## ----------------------------------------------------
## 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
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:
Tabel Kontingensi: penyajian frekuensi gabungan dari dua atau lebih variabel kategorik.
Model Loglinear: digunakan untuk memodelkan struktur asosiasi di dalam tabel kontingensi tanpa menganggap ada variabel dependen.
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} \]
## 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} \]
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} \]
Model saturated atau model penuh menyertakan seluruh efek utama dan interaksi:
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}:
## 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
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.
## 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
Odds ratio untuk tabel 2x2:
\[ OR = \frac{n_{11} n_{22}}{n_{12} n_{21}} \]
Interpretasi nilai OR:
Dalam model saturated:
# Estimasi odds ratio dan log-odds
logOR <- log((data[1,1] * data[2,2]) / (data[1,2] * data[2,1]))
logOR## [1] -0.4183685
Perbandingan antar model dilakukan dengan menggunakan statistik deviance (G²) atau likelihood ratio test.
## 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
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
## 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
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} \]
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).
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] \]
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} \]
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 \]
Misalkan:
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:
\[ \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 \]
\[ \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 \]
\[ \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 \]
\[ \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
\[ 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]
# 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
Nilai \(\log(6)=1.7918\) sama dengan efek interaksi pada output R
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} \]
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}) \]
# 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
Model tanpa interaksi: - Jika deviance tidak signifikan, maka Jenis Kelamin dan BMI independen.
Model dengan interaksi:
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.
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.
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).
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.
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.
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} \]
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.
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:
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.
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.
\[ \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
## 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
)
dataMembentuk Tabel Kontingensi 3 Arah
## 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):
##=============================##
# 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
## (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
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.
\[ \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} \]
(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.
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.
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
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
Pengujian ini menggunakan residual deviance dari kedua model (saturated dan homogenous).
H0 : Tidak ada interaksi tiga arah (model homogenous sudah cukup)
H1 : Ada interaksi tiga arah (model saturated diperlukan)
# Deviance antar model
Deviance.model <- model_homogenous$deviance - model_saturated$deviance
Deviance.model## [1] 1.797977
# Derajat bebas = db model homogenous - db model saturated
derajat.bebas <- (model_homogenous$df.residual - model_saturated$df.residual)
derajat.bebas## [1] 2
## [1] 5.991465
## [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:
Cek di output R ada berapa banyak coefficients (termasuk intercept) untuk menghitung derajat bebas yang benar.
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
## [1] 2
Chi-Square Tabel
## [1] 5.991465
Keputusan Uji
## [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.
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
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
## [1] 2
Chi-Square Tabel
## [1] 5.991465
Keputusan Uji
## [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.
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
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
## [1] 1
Chi-Square Tabel
## [1] 3.841459
Keputusan Uji
## [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).
\[ \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} \]
\[ \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} \]
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).
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.
# 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} \]
\(\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.
# Fitted values dari model terbaik
data.frame(
Fund = z.fund,
sex = x.sex,
favor = y.fav,
counts = counts,
fitted = bestmodel$fitted.values
)\[ \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.
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.