Charles Joshua Nathaniel
Waruwu
NPM. 140610230048
Dalam ilmu statistik, data kategori adalah data yang diklasifikasikan ke dalam kelompok atau kategori tertentu, bukan dalam bentuk angka kontinu. Data ini kerap digunakan di berbagai disiplin ilmu untuk menganalisis pola, hubungan antarvariabel, dan tren yang tidak bisa diukur secara langsung menggunakan skala numerik. Beberapa contoh umum dari data kategori antara lain preferensi belanja (online/offline), risiko kesehatan (rendah/sedang/tinggi), zona waktu tinggal (WIB/WITA/WIT), jenis kelamin (laki-laki/perempuan/non-biner), dan status perokok (aktif/pasif).
Karakteristrik data kategori yang bersifat nominal atau ordinal memerlukan pendekatan analisis yang berbeda dibandingkan dengan data kuantitatif. Oleh karena itu, metode-metode khusus seperti tabel kontingensi, uji Chi-Square, regresi logistik, serta estimasi distribusi probabilitas menjadi sangat relevan. Seiring dengan kemajuan teknologi informasi dan pengembangan kecerdasan buatan, analisis data kategori kini juga semakin banyak dimanfaatkan dalam machine learning serta analitik big data sehingga memperluas cakupan dan aplikasiannya dalam pengambilan keputusan berbasis data.
Analisis Data Kategori tentunya memiliki berbagai tujuan utama yang membantu dalam pengambilan keputusan berbasis data. Beberapa tujuan utama dari analisis ini meliputi:
Analisis data kategori memungkinkan peneliti untuk mengungkap pola distribusi atau kecenderungan dalam suatu kelompok. Misalnya, pola preferensi masyarakat terhadap jenis layanan publik berdasarkan usia atau wilayah tempat tinggal.
Contoh: Apakah warga usia muda lebih cenderung memilih layanan digital dibandingkan warga usia lanjut?
Tujuan ini berkaitan dengan upaya untuk melihat adanya keterkaitan atau asosiasi antara dua atau lebih variabel kategori. Teknik seperti uji chi-square atau tabel kontingensi umum digunakan dalam hal ini.
Contoh: Adakah hubungan antara jenis kelamin dan tingkat partisipasi dalam program pelatihan kerja?
Dengan memahami karakteristik kategori tertentu dalam populasi, pengambil keputusan atau praktisi dapat merancang intervensi atau strategi yang lebih tepat sasaran dan efisien.
Contoh: Dalam dunia pemasaran, mengetahui segmen pelanggan yang paling loyal membantu merancang strategi promosi yang lebih efektif.
Data kategori sering menjadi variabel prediktor dalam model statistik seperti regresi logistik atau pohon keputusan (decision tree) untuk memprediksi kejadian biner atau multikategori.
Contoh: Memodelkan kemungkinan seorang pasien mendaftar ke program vaksinasi berdasarkan status pekerjaan dan tingkat pendidikan.
Analisis data kategori dapat digunakan untuk mengevaluasi hasil dari suatu perlakuan atau intervensi dengan membandingkan proporsi hasil antar kelompok.
Contoh: Apakah program bantuan sosial berhasil mengurangi proporsi keluarga di bawah garis kemiskinan?
Analisis data kategori juga berguna untuk mengukur dan mengevaluasi perbedaan signifikan antar kelompok dalam suatu populasi berdasarkan variabel kategorik. Dengan pendekatan seperti uji proporsi dua sampel atau odds ratio, peneliti dapat melihat seberapa besar perbedaan peluang atau risiko antara dua kelompok.
Contoh: Apakah terdapat perbedaan signifikan dalam tingkat kelulusan antara siswa dari sekolah negeri dan swasta?
Analisis Data Kategori adalah metode statistik yang digunakan untuk menganalisis variabel yang bersifat kategorik. Jenis data ini dapat berbentuk nominal maupun ordinal serta dapat berupa biner maupun multikategori.
Nominal: Data yang berupa nama atau label tanpa urutan (contoh: jenis kelamin, warna mata).
Ordinal: Data yang memiliki urutan atau ranking (contoh: tingkat kepuasan, level pendidikan).
Data Biner: Hanya memiliki dua kemungkinan (contoh: ya/tidak, sukses/gagal).
Data Multikategori: Memiliki tiga atau lebih kategori (contoh: status pekerjaan: pelajar, bekerja, pengangguran).
Tabel kontingensi dan uji asosiasi (Chi-square, Fisher’s Exact Test)
Model prediktif seperti regresi logistik dan pohon keputusan
Analisis residual dan evaluasi model (misalnya melalui deviance)
Data Kategori: Menyediakan informasi tentang kelompok atau kategori yang tidak terukur secara numerik. Misalnya, jenis kelamin (pria/wanita), warna mata (hitam, biru, coklat).
Data Kuantitatif: Menyediakan informasi yang dapat diukur dalam bentuk angka. Misalnya, tinggi badan (170 cm), usia (25 tahun), atau jumlah pendapatan (Rp 5.000.000).
Data Kategori: Analisis data kategori lebih bersifat kualitatif, seperti menghitung frekuensi atau proporsi masing-masing kategori (misalnya, berapa banyak pria dan wanita).
Data Kuantitatif: Dapat dianalisis secara matematis, seperti perhitungan rata-rata, variansi, dan distribusi angka.
Data Kategori: Biasanya menggunakan skala nominal (tanpa urutan) atau ordinal (dengan urutan). Contoh skala ordinal adalah tingkat pendidikan (SMA, S1, S2).
Data Kuantitatif: Menggunakan skala interval atau rasio, yang memiliki jarak atau perbedaan yang dapat diukur secara konsisten dan memiliki nol mutlak. Contoh skala rasio adalah berat badan atau pendapatan.
Analisis Data Kategori memiliki pemanfaatan yang luas dalam berbagai bidang, baik dalam akademik maupun industri. Berikut adalah beberapa bidang umum yang memiliki pemanfaatan dalam analisis ini:
Segmentasi Pasar: Data kategori membantu dalam membagi pasar menjadi segmen-segmen berdasarkan karakteristik seperti usia, jenis kelamin, lokasi geografis, atau preferensi produk. Dengan segmentasi ini, perusahaan dapat menyesuaikan produk, layanan, dan strategi pemasaran mereka agar lebih relevan dan efektif untuk setiap kelompok.
Mengukur Kepuasan Pelanggan: Dengan menggunakan kategori seperti “sangat puas”, “puas”, atau “tidak puas”, perusahaan dapat memahami tingkat kepuasan pelanggan mereka. Ini membantu dalam menentukan area untuk perbaikan dan mengembangkan produk atau layanan yang lebih baik.
Pemetaan Penyakit: Analisis data kategori memungkinkan pemetaan penyakit berdasarkan kategori tertentu seperti usia, jenis kelamin, atau status sosial. Ini penting untuk menentukan kelompok rentan dan merancang program pencegahan yang lebih efektif.
Studi Epidemiologi: Dalam penelitian epidemiologi, analisis data kategori digunakan untuk mengelompokkan faktor-faktor risiko (misalnya, perokok vs. bukan perokok) dan mengetahui kaitannya dengan penyebaran penyakit tertentu. Ini memberikan wawasan penting untuk strategi pencegahan dan intervensi.
Menganalisis Kinerja Siswa: Data kategori dapat digunakan untuk mengelompokkan siswa berdasarkan nilai atau tingkat kehadiran, membantu pendidik untuk melihat pola yang ada dalam kinerja siswa dan mengidentifikasi area yang perlu mendapatkan perhatian lebih (misalnya, siswa dengan nilai rendah atau sering absen).
Evaluasi Program Pendidikan: Dengan menganalisis kategori program pendidikan (misalnya, kategori “berhasil”, “sedang berkembang”, “belum berhasil”), pendidik dan pembuat kebijakan dapat mengevaluasi efektivitas suatu program atau kurikulum dan merancang perbaikan yang dibutuhkan.
Studi Perilaku Sosial: Dalam ilmu sosial, data kategori digunakan untuk menganalisis perilaku masyarakat berdasarkan kategori tertentu, seperti kelompok usia, status sosial, atau afiliasi politik. Ini membantu dalam memahami kecenderungan sosial atau politik tertentu dalam suatu kelompok populasi.
Pemilu dan Survei Politik: Data kategori sering digunakan dalam survei politik untuk mengelompokkan pemilih berdasarkan partai pilihan, tingkat dukungan, atau isu-isu yang diutamakan. Ini penting untuk strategi kampanye dan analisis hasil pemilu.
Analisis Penggunaan Lahan: Data kategori dapat digunakan untuk mengelompokkan penggunaan lahan seperti “pertanian”, “hutan”, atau “perkebunan”. Ini membantu dalam perencanaan pengelolaan sumber daya alam dan konservasi, serta untuk mengidentifikasi area yang membutuhkan perlindungan lebih.
Pemantauan Keanekaragaman Hayati: Data kategori dapat digunakan untuk mengklasifikasikan spesies berdasarkan tingkat kelangkaan atau status konservasi mereka (misalnya, “terancam punah”, “rentan”, “aman”), yang sangat penting untuk usaha perlindungan keanekaragaman hayati.
Analisis Performa Atlet: Dalam olahraga, data kategori digunakan untuk mengelompokkan atlet berdasarkan kategori performa, misalnya “pemula”, “menengah”, atau “ahli”. Ini memungkinkan pelatih untuk menyusun program latihan yang sesuai dengan tingkat kemampuan masing-masing atlet.
Penyusunan Program Latihan: Data kategori mengenai kebugaran fisik (misalnya, kategori “aktif”, “kurang aktif”, “tidak aktif”) dapat membantu dalam menyusun program latihan yang sesuai untuk individu atau kelompok dengan tingkat kebugaran yang berbeda.
Umpan Balik Pengguna: Analisis data kategori terkait umpan balik pengguna produk atau perangkat lunak dapat membantu pengembang untuk memahami kelebihan dan kekurangan produk berdasarkan kategori respon (misalnya, kategori “sangat puas”, “tidak puas”, “masalah teknis”).
Pengembangan Fitur Baru: Dengan menganalisis preferensi pengguna berdasarkan kategori fitur yang paling sering digunakan atau diinginkan, perusahaan teknologi dapat mengembangkan fitur baru yang lebih sesuai dengan kebutuhan pengguna
Mengidentifikasi Pola Kejahatan: Data kategori dapat digunakan untuk mengelompokkan jenis kejahatan berdasarkan kategori seperti pencurian, penyerangan, atau penipuan. Ini memungkinkan pihak berwenang untuk mengidentifikasi pola kejahatan di suatu daerah, seperti waktu dan lokasi kejadian yang sering terjadi. Dengan informasi ini, tindakan pencegahan dan pengamanan dapat dirancang lebih efektif
Klasifikasi Bukti: Dalam penyelidikan kriminal, data kategori dapat digunakan untuk mengklasifikasikan jenis bukti yang ditemukan di tempat kejadian perkara (TKP). Bukti seperti senjata, jejak kaki, atau barang bukti lain dapat dianalisis berdasarkan kategori tertentu untuk membantu penyidik memahami lebih baik kejadian-kejadian yang berkaitan dengan kasus.
Berbagai metode dapat digunakan dalam Analisis Data Kategori, tergantung pada tujuan dan klasifikasi penelitian. Beberapa metode yang umum meliputi:
Tabel yang menunjukkan distribusi frekuensi data kategori dari dua (atau lebih) variabel.
Tujuan: Untuk melihat hubungan atau pola antar kategori
Contoh: Melihat hubungan antara jenis kelamin dengan preferensi produk.
Uji statistik untuk mengetahui apakah terdapat hubungan signifikan antara dua variabel kategori.
Tujuan: Menilai apakah hubungan antara dua variabel terjadi secara kebetulan atau tidak.
Contoh: Apakah ada hubungan antara tingkat pendidikan dengan status pekerjaan.
Digunakan saat variabel dependen bersifat kategori (biasanya biner: ya/tidak, 0/1).
Tujuan: Memprediksi kemungkinan suatu kejadian berdasarkan variabel-variabel independen.
Contoh: Memprediksi kemungkinan seseorang membeli produk berdasarkan jenis kelamin, umur, dan lokasi.
Metode eksploratif yang digunakan untuk menggambarkan hubungan antara dua variabel kategori dalam bentuk grafik dua dimensi.
Tujuan: Visualisasi asosiasi antar kategori.
Contoh: Menunjukkan kecenderungan kelompok umur memilih produk tertentu.
Ukuran kekuatan hubungan antara dua variabel kategori.
Tujuan: Mengetahui seberapa kuat hubungan antar dua kategori setelah uji Chi-Square dilakukan.
Skala: 0 (tidak ada hubungan) sampai 1 (hubungan sangat kuat)
Analisis Data Kategori sangat berperan penting dalam statistik yang memiliki beragam penerapan di berbagai bidang. Dengan menggunakan pendekatan yang sesuai, analisi ini mampu mengungkap pola, keterkaitan, serta tren dalam data yang bersifat kategorikal. Seiring berkembangnya teknologi, metode dalam data kategori ini juga ikut berkembang sehingga mendukung proses pengambilan keputusan yang lebih akurat dan berbasis data. Oleh karena itu, pemahaman analisis ini penting bagi peneliti, pelaku bisnis, pembuat kebijakan, dan profesional bidang tersebut.
Distribusi Probabilitas dalam Data Kategori menggambarkan kemungkinan (probability) terjadinya setiap kategori dalam suatu variabel kategorikal. Beberapa distribusi dalam data kategori ini meliputi:
Distribusi Bernoulli digunakan untuk memodelkan percobaan biner, yaitu percobaan dengan dua kemungkinan hasil: sukses (dilambangkan dengan 1) dengan probabilitas (p), dan gagal (dilambangkan dengan 0) dengan probabilitas (1-p). Fungsi probabilitasnya diberikan oleh:
\[ P(X = x) = p^x (1 - p)^{1 - x}, \quad x \in \{0, 1\} \]
Keterangan:
X: Variabel acak biner (0 atau 1)
p: Probabilitas sukses (X = 1)
1-p: Probabilitas gagal (X = 0)
Contoh Variabel Acak Bernoulli:
Hasil dari lemparan koin (Gambar= 1, Angka= 0)
Keberhasilan atau kegagalan dalam suatu percobaan klinis
Contoh Kasus:
Sebuah aplikasi streaming ingin mengetahui apakah seorang pengguna akan menonton trailer film baru (sukses = menonton, gagal = tidak menonton). Berdasarkan data sebelumnya, probabilitas seorang pengguna menonton trailer adalah 0,4.
Pertanyaan: Berapakah probabilitas seseorang pengguna menonton trailer dan tidak menonton trailer?
Perhitungan Melalui R
set.seed(123)
bernoulli_sample <- rbinom(n = 10, size = 1, prob = 0.4)
kable(bernoulli_sample, col.names = "Hasil", caption = "Simulasi 10 Percobaan Bernoulli (1 = Menonton, 0 = Tidak Menonton)")
Hasil |
---|
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
Interpretasi: Hasil perhitungan menunjukkan 10 pengguna acak, di mana 1 berarti pengguna menonton trailer dan 0 berarti tidak menonton.
Distribusi Binomial adalah generalisasi dari distribusi Bernoulli, yang memodelkan jumlah keberhasilan dalam (n) percobaan independen, di mana setiap percobaan memiliki probabilitas sukses (p). Fungsi probabilitasnya adalah:
\[ P(X = x) = \binom{n}{x} p^x (1 - p)^{n - x} \]
Keterangan:
X: Jumlah keberhasilan dalam n percobaan
n: Jumlah percobaan
k: Jumlah keberhasilan yang diamati
p: Probabilitas keberhasilan dalam satu percobaan
\(\binom{n}{x}\): Kombinasi “n memilih k”, dihitung sebagai \(\frac{n!}{k!(n - k)!}\)
Contoh Variabel Acak Binomial:
Jumlah keberhasilan dalam 20 kali lemparan koin
Jumlah jawaban benar pada soal pilihan ganda
Contoh Kasus:
Sebuah perusahaan e-commerce mengirimkan 12 email promosi ke pelanggan, dan probabilitas seorang pelanggan membuka email adalah 0,3.
Pertanyaan: Berapakah probabilitas tepat 4 pelanggan membuka email dari 12 email yang dikirim?
Perhitungan Melalui R
set.seed(123)
binomial_sample <- rbinom(n = 10, size = 12, prob = 0.3)
kable(binomial_sample, col.names = "Jumlah Membuka Email", caption = "Simulasi 10 Percobaan Binomial")
Jumlah Membuka Email |
---|
3 |
5 |
3 |
6 |
6 |
1 |
4 |
6 |
4 |
3 |
Interpretasi: Hasil perhitungan menunjukkan jumlah pelanggan yang membuka email dalam 10 kelompok pengiriman email, masing-masing terdiri dari 12 email.
Distribusi Multinomial adalah generalisasi dari distribusi Binomial untuk percobaan dengan lebih dari dua kemungkinan hasil. Jika suatu eksperimen dilakukan (n) kali, dan setiap percobaan dapat menghasilkan salah satu dari (k) kategori dengan probabilitas (p1, p2, …, pk), maka distribusi probabilitasnya adalah:
\[ P(X_1 = x_1, \dots, X_k = x_k) = \frac{n!}{x_1! \cdots x_k!} p_1^{x_1} \cdots p_k^{x_k} \]
Keterangan:
Xi : Frekuensi kemunculan kategori ke-i
n : Jumlah total percobaan
xi : Jumlah kejadian kategori ke-i
pi : Probabilitas kategori ke-i
Contoh Variabel Acak Multinomial:
Jumlah suara yang diperoleh dari masing-masing kotak pemilu tersebut
Distribusi warna baju dalam satu toko
Contoh Kasus:
Sebuah toko buku mengamati preferensi pembelian pelanggan terhadap tiga genre buku: fiksi, non-fiksi, dan anak-anak, dengan probabilitas masing-masing 0,5, 0,3, dan 0,2. Dalam satu hari, toko mencatat pembelian dari 15 pelanggan.
Pertanyaan: Berapakah probabilitas 7 pelanggan membeli buku fiksi, 5 membeli non-fiksi, dan 3 membeli buku anak-anak?
Perhitungan Melalui R
set.seed(123)
multinomial_sample <- rmultinom(n = 1, size = 15, prob = c(0.5, 0.3, 0.2))
kable(multinomial_sample, col.names = "Jumlah", caption = "Simulasi Distribusi Multinomial (Fiksi, Non-Fiksi, Anak-Anak)")
Jumlah |
---|
6 |
4 |
5 |
Interpretasi: Hasil perhitungan menunjukkan distribusi pembelian buku dari 15 pelanggan, dengan jumlah pelanggan per genre.
Distribusi Poisson digunakan untuk memodelkan jumlah kejadian dalam interval waktu atau ruang tertentu, dengan rata-rata kejadian per unit (\(\lambda\)) waktu atau ruang. Fungsi probabilitasnya adalah:
\[ P(X = x) = \frac{\lambda^x e^{-\lambda}}{x!}, \quad x = 0, 1, 2, \dots \]
Keterangan:
X: Jumlah kejadian dalam interval tertentu
\(\lambda\): Rata-rata kejadian dalam interval tersebut
k: Jumlah kejadian yang diamati
Contoh Variabel Acak Poisson:
Jumlah panggilan telepon yang diterima dalam satu jam
Peluang toko pakaian mendapat komplain dari 5 pelanggan selama 2 jam
Contoh Kasus:
Sebuah pusat layanan pelanggan menerima rata-rata 5 panggilan masuk per 15 menit selama jam sibuk.
Pertanyaan: Berapakah probabilitas pusat layanan menerima tepat 4 panggilan dalam 15 menit?
Perhitungan Melalui R
set.seed(123)
poisson_sample <- rpois(10, lambda = 5)
kable(poisson_sample, col.names = "Jumlah Panggilan", caption = "Simulasi 10 Interval Distribusi Poisson")
Jumlah Panggilan |
---|
4 |
7 |
4 |
8 |
9 |
2 |
5 |
8 |
5 |
5 |
Interpretasi: Hasil perhitungan menunjukkan jumlah panggilan masuk dalam 10 interval 15 menit, mengikuti distribusi Poisson dengan rata-rata 5 panggilan.
Dalam Analisis Data Kategori, desain sampling berperan penting dalam mengambil sampel dari populasi agar data yang dikumpulkan mewakili populasi secara valid dan efisien, seperti:
Menghindari bias,
Menjaga keakuratan estimasi proporsi atau distribusi kategori,
Mendukung validitas hasil analisis seperti uji Chi-Square atau regresi logistik.
Secara umum, desain sampling dalam analisis data kategori dapat dikelompokkan ke dalam dua pendekatan utama, yaitu prospective sampling dan retrospective sampling.
Prospective sampling adalah metode pengambilan sampel yang dilakukan pada periode awal tertentu untuk meneliti perkembangan subjek penelitian dari waktu ke waktu, dengan tujuan mengidentifikasi dan mengendalikan variabel-variabel penting yang memengaruhi hasil penelitian. Pendekatan ini memungkinkan peneliti untuk mengelola variabel bebas sebelum pengukuran hasil dilakukan, sehingga sering digunakan dalam penelitian kausal dan eksperimental.
Dalam penelitian, eksperimen melibatkan pengalokasian subjek secara acak ke dalam kelompok perlakuan dan kelompok kontrol. Teknik sampling yang umum digunakan dalam desain eksperimen meliputi:
Simple Random Sampling (SRS): Setiap individu dalam populasi memiliki peluang yang sama untuk dipilih secara acak.
Stratified Random Sampling: Populasi dibagi ke dalam kelompok (strata) berdasarkan karakteristik tertentu, lalu sampel diambil secara acak dari masing-masing stratum.
Cluster Sampling: Populasi dikelompokkan menjadi kelompok-kelompok kecil (cluster), kemudian beberapa cluster dipilih secara acak untuk dianalisis semua unitnya.
Studi kohort adalah penelitian observasional yang mengamati kelompok individu dengan karakteristik tertentu dari waktu ke waktu untuk mempelajari kejadian tertentu. Teknik sampling yang biasanya digunakan dalam studi kohort meliputi:
Census Sampling: Mengamati seluruh anggota populasi tertentu dalam penelitian.
Systematic Sampling: Memilih individu berdasarkan interval tertentu dari daftar populasi yang terurut.
Matched Sampling: Memasangkan individu dalam kelompok kohort dengan individu serupa dalam kelompok lain berdasarkan variabel tertentu.
Retrospective sampling adalah metode pengambilan sampel yang dilakukan dengan melihat data masa lalu untuk mengidentifikasi hubungan antara faktor risiko tertentu dengan hasil yang telah terjadi. Pendekatan ini sering digunakan dalam studi observasional untuk mengevaluasi keterkaitan antara variabel tertentu.
Studi kasus-kontrol melibatkan perbandingan antara kelompok individu yang memiliki kondisi tertentu (kasus) dengan kelompok individu yang tidak memiliki kondisi tersebut (kontrol). Teknik sampling yang umum digunakan dalam studi kasus-kontrol meliputi:
Purposive Sampling: Pemilihan sampel berdasarkan karakteristik yang relevan dengan tujuan penelitian.
Snowball Sampling: Subjek awal merekrut subjek lain yang memiliki karakteristik serupa untuk menjadi bagian dari sampel.
Incidence Density Sampling: Kasus dan kontrol dipilih dari populasi yang sama dengan memperhitungkan periode waktu kemunculan kasus.
Studi kohort retrospektif menggunakan data historis untuk mengelompokkan individu berdasarkan paparan tertentu, kemudian menganalisis hasil yang telah terjadi. Teknik sampling yang sering digunakan meliputi:
Convenience Sampling: Pemilihan subjek berdasarkan ketersediaan data yang sudah ada.
Quota Sampling: Sampel dipilih untuk mencerminkan proporsi tertentu dalam populasi.
Case-Based Sampling: Sampel dipilih berdasarkan karakteristik kasus yang telah terjadi.
Tabel Kontingensi 2 x 2 adalah bentuk sederhana yang digunakan untuk menganalisis hubungan antara dua variabel kategorik. Dalam berbagai analisis statistik, tabel ini digunakan untuk melihat apakah terdapat asosiasi antara dua variabel yang bersifat kategorik. Secara umum, tabel kontingensi 2 x 2 memiliki struktur sebagai berikut:
Kategori 1 (+) | Kategori 2 (-) | Total | |
---|---|---|---|
Grup 1 | n11 | n12 | n1. |
Grup 2 | n21 | n22 | n2. |
Total | n.1 | n.2 | n |
Peluang bersama adalah probabilitas bahwa kedua variabel terjadi secara bersamaan dalam tabel kontingensi. Peluang bersama dihitung sebagai:
\[ P(A \cap B) = \frac{n_{ij}}{n} \]
Peluang marginal adalah probabilitas kejadian suatu variabel tanpa mempertimbangkan variabel lainnya. Peluang marginal dihitung sebagai:
\[ P(A) = \frac{n_{A}}{n} \]
Peluang bersyarat adalah probabilitas suatu kejadian terjadi dengan syarat kejadian lain telah terjadi. Peluang bersyarat dihitung sebagai:
\[ P(B|A) = \frac{P(A \cap B)}{P(A)} \]
Berikut ini merupakan hasil survei terhadap mahasiswa Universitas Bikini Bottom dengan dua variabel kategorikal: Jenis Kelamin (Pria, Wanita) dan Status Merokok (Perokok Aktif, Perokok Pasif). Dikumpulkannya data sekitar 200 responden sehingga hasilnya disusun dalam tabel kontingensi 2 x 2 berikut:
Perokok Aktif (+) | Perokok Pasif (-) | Total | |
---|---|---|---|
Pria | 89 | 37 | 126 |
Wanita | 12 | 62 | 74 |
Total | 101 | 99 | 200 |
Tahapan 1 : Menghitung Peluang Bersama
Tahapan 2 : Menghitung Peluang Marginal
Tahapan 3 : Menghitung Peluang Bersyarat
Perhitungan melalui R
# Data Observasi
data = matrix(c(89, 37, 12, 62), nrow = 2, byrow = TRUE)
colnames(data) = c("Perokok Aktif (+)", "Perokok Pasif (-)")
rownames(data) = c("Pria", "Wanita")
n = sum(data)
# Peluang Bersama
P_joint = data/n
# Peluang Marginal
P_Marginal_Rows = rowSums(data)/n
P_Marginal_Cols = colSums(data)/n
# Peluang Bersyarat
P_Conditional_Smoke = data/colSums(data)
P_Conditional_Gender = data/rowSums(data)
# Hasil Perhitungan
list(Peluang_Bersama = P_joint,
Peluang_Marginal_Baris = P_Marginal_Rows,
Peluang_Marginal_Kolom = P_Marginal_Cols,
Peluang_Bersyarat_StatusMerokok = P_Conditional_Smoke,
Peluang_Bersyarat_JenisKelamin = P_Conditional_Gender)
## $Peluang_Bersama
## Perokok Aktif (+) Perokok Pasif (-)
## Pria 0.445 0.185
## Wanita 0.060 0.310
##
## $Peluang_Marginal_Baris
## Pria Wanita
## 0.63 0.37
##
## $Peluang_Marginal_Kolom
## Perokok Aktif (+) Perokok Pasif (-)
## 0.505 0.495
##
## $Peluang_Bersyarat_StatusMerokok
## Perokok Aktif (+) Perokok Pasif (-)
## Pria 0.8811881 0.3663366
## Wanita 0.1212121 0.6262626
##
## $Peluang_Bersyarat_JenisKelamin
## Perokok Aktif (+) Perokok Pasif (-)
## Pria 0.7063492 0.2936508
## Wanita 0.1621622 0.8378378
Interpretasi
Dalam analisis statistik, ukuran asosiasi digunakan untuk mengevaluasi kekuatan dan arah hubungan antara dua variabel biner, seperti paparan (misalnya, merokok/tidak merokok) dan hasil (misalnya, penyakit/tidak penyakit). Dalam tabel kontingensi 2 x 2, ukuran ini membantu peneliti memahami hubungan antara variabel, baik dalam konteks kausal maupun prediktif. Berikut adalah beberapa ukura asosiasi yang umum digunakan:
Risk Difference (RD): Mengukur selisih risiko antara dua kelompok.
Relative Risk (RR): Mengukur perbandingan risiko relatif antara dua kelompok.
Odds Ratio (OR): Membandingkan peluang kejadian antara dua kelompok.
Uji Chi-Square dan Fisher’s Exact Test: Menguji signifikansi hubungan antar variabel secara statistik.
Risk Difference (RD), atau selisih risiko, adalah ukuran asosiasi yang menghitung perbedaan risiko absolut kejadian tertentu antara kelompok yang terpapar dan kelompok yang tidak terpapar. Ukuran ini sering digunakan dalam epidemiologi untuk mengevaluasi efek paparan terhadap hasil tertentu, dengan mempertimbangkan proporsi kejadian pada masing-masing kelompok.
\[ RD = \frac{n_{11}}{n_{1.}} - \frac{n_{21}}{n_{2.}} \]
Keterangan:
Relative Risk (RR), atau risiko relatif, adalah ukuran asosiasi yang membandingkan risiko kejadian tertentu pada kelompok yang terpapar dengan risiko pada kelompok yang tidak terpapar. Ukuran ini sering digunakan untuk mengevaluasi seberapa besar paparan tertentu meningkatkan atau menurunkan risiko kejadian dibandingkan kelompok kontrol.
\[ RR = \frac{\frac{n_{11}}{n_{1.}}}{\frac{n_{21}}{n_{2.}}} \]
Keterangan:
Odds Ratio (OR) adalah ukuran asosiasi yang membandingkan peluang kejadian pada kelompok terpapar dengan peluang kejadian pada kelompok tidak terpapar. Ukuran ini sering digunakan dalam epidemiologi dan statistik, khususnya pada studi kasus-kontrol, kohort, dan eksperimental.
\[ OR = \frac{n_{11} \times n_{22}}{n_{12} \times n_{21}} \]
Keterangan:
Jika (OR > 1): Peluang kejadiian lebih tinggi pada Kelompok 1 dibandingkan Kelompok 2.
Jika (OR < 1): Peluang kejadian lebih rendah pada Kelompok 1 dibandingkan Kelompok 2.
Jika (OR = 1): Tidak ada perbedaan peluang kejadian antara dua kelompok.
Dengan menggunakan tabel kontingensi 2 x 2 sebelumnya, tentukan ukuran asosiasinya!
Perokok Aktif (+) | Perokok Pasif (-) | Total | |
---|---|---|---|
Pria | 89 | 37 | 126 |
Wanita | 12 | 62 | 74 |
Total | 101 | 99 | 200 |
Perhitungan Melalui R
Tahapan 1: Menghitung Risk Difference
RD <- function(n11, n12, n21, n22) {
(n11 / (n11 + n12)) - (n21 / (n21 + n22))
}
RD(89, 37, 12, 62)
## [1] 0.544187
Interpretasi:
Risk Difference menunjukkan perbedaan risiko antara dua kelompok. Berdasarkan hasil perhitungan, didapatkan nilai RD sebesar 0.544187. Karena RD (0.544187) > 0, maka risiko kejadian lebih tinggi pada Pria untuk menjadi perokok aktif dibandingkan Wanita, menunjukkan adanya asosiasi kuat antara jenis kelamin dengan status merokok.
Tahapan 2: Menghitung Relative Risk
RR <- function(n11, n12, n21, n22) {
(n11 / (n11 + n12)) / (n21 / (n21 + n22))
}
RR(89, 37, 12, 62)
## [1] 4.35582
Interpretasi:
Relative Risk menggambarkan seberapa besar kemungkinan terjadi antara dua kelompok. Berdasarkan hasil perhitungan, didapatkan nilai RR sebesar 4.35582 (RR > 1). Artinya, Pria memiliki risiko 4.35 kali lebih besar untuk menjadi Perokok Aktif dibandingkan Wanita, yang menunjukkan hubungan yang signifikan antara jenis kelamin dengan status merokok.
Tahapan 3: Menghitung Odds Ratio
OR <- function(n11, n12, n21, n22) {
(n11 * n22) / (n12 * n21)
}
OR(89, 37, 12, 62)
## [1] 12.42793
Interpretasi:
Odds Ratio menunjukkan perbandingan Odds antara dua kelompok. Berdasarkan hasil perhitungan, didapatkan nilai OR sebesar 12.42793 (OR > 1). Artinya, Odds pria untuk menjadi perokok aktif adalah 12.43 kali lebih besar dibandingkan odds wanita, menunjukkan asosiasi yang sangat kuat antara jenis kelamin dan status merokok.
Proses inferensi dilakukan untuk membuat generalisasi tentang hubungan antar variabel di tingkat populasi berdasarkan data sampel. Inferensi ini dapat digunakan untuk mengevaluasi apakah terdapat asosiasi yang signifikan antara dua variabel kategorik, dengan pendekatan berikut:
Estimasi bertujuan untuk memperkirakan parameter populasi berdasarkan data sampel. Estimasi dibagi menjadi:
Estimasi titik adalah metode untuk memperkirakan parameter populasi tertentu menggunakan satu nilai spesifik yang dihitung dari data sampel. Dalam konteks tabel kontingensi, estimasi titik sering digunakan untuk menghitung proporsi dalam kategori tertentu.
\[ \hat{p} = \frac{x}{n} \]
Keterangan:
Estimasi interval memberikan rentang nilai yang mungkin berisi parameter populasi, dengan tingkat kepercayaan tertentu (biasanya 95%). Estimasi ini memperhitungkan ketidakpastian statistik dari data sampel untuk memberikan gambaran yang lebih lengkap tentang parameter populasi.
\[ \hat{p} \pm Z_{\alpha/2} \sqrt{\frac{\hat{p} \times (1 - \hat{p})}{n}} \]
Keterangan:
Pengujian Proporsi digunakan untuk membandingkan proporsi suatu kejadian antara dua kelompok dalam tabel kontingensi. Tujuannya adalah untuk mengetahui apakah terdapat perbedaan proporsi yang signifikan antara kedua kelompok tersebut.
Tabel Kontingensi 2 x 2 memiliki struktur sebagai berikut:
Kategori 1 (+) | Kategori 2 (-) | Total | |
---|---|---|---|
Grup 1 | n11 | n12 | n1. |
Grup 2 | n21 | n22 | n2. |
Total | n.1 | n.2 | n |
Menggunakan uji z dua proporsi, dengan hipotesis:
Hipotesis Nol (H0): Tidak ada perbedaan proporsi antara dua kelompok, yaitu p1 = p2
Hipotesis Alternatif (H1): Terdapat perbedaan proporsi antara dua kelompok, yaitu p1 \(\neq\) p2
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:
\[ \hat{p} = \frac{n_{11} + n_{21}}{n_{1+} + n_{2+}} \]
Statistik uji untuk uji proporsi dua sampel:
\[ Z = \frac{\hat{p}1 - \hat{p}2}{\sqrt{\hat{p} \times (1 - \hat{p}) \times \left( \frac{1}{n_{1+}} + \frac{1}{n_{2+}} \right)}} \]
Statistik uji Z mengikuti distribusi normal baku N(0,1), dan p-value dihitung berdasarkan nilai kritis dari distribusi normal. Apabila |Z| lebih besar dari nilai kritis untuk tingkat signifikansi \(\alpha\), maka hipotesis nol ditolak sehingga terdapat perbedaan yang signifikan antara dua proporsi tersebut. Pengujian ini sangat cocok digunakan dalam studi kohort dan eksperimen klinis.
Dengan menggunakan tabel kontingensi sebelumnya, Lakukanlah pengujian proprosi!
Perokok Aktif (+) | Perokok Pasif (-) | Total | |
---|---|---|---|
Pria | 89 | 37 | 126 |
Wanita | 12 | 62 | 74 |
Total | 101 | 99 | 200 |
Tahapan 1 : Menghitung Proporsi Sampel
Tahapan 2 : Menghitung Proporsi Gabungan
\[ \hat{p} = \frac{89 + 12}{126 + 74} = \frac{101}{200} = 0.505 \]
Tahapan 3 : Menghitung Statistik Uji Z
\[ Z = \frac{0.706 - 0.162}{\sqrt{0.505 \times (1 - 0.505) \times \left( \frac{1}{126} + \frac{1}{74} \right)}} \]
\[ Z = \frac{0.544}{\sqrt{0.505 \times 0.495 \times 0.021}} \]
\[ Z = \frac{0.544}{\sqrt{0.00525}} \approx 7.50791 \]
Interpretasi:
Karena Z = 7.50791 lebih besar dari nilai kritis untuk \(\alpha = 0.05\) (yaitu 1.96), maka \(H_0\) ditolak sehingga terdapat Perbedaan yang signifikan antara dua proporsi.
Perhitungan Melalui R
## Data Observasi
set.seed(123)
data<- matrix(c(89, 37, 12, 62), nrow = 2, byrow = TRUE)
dimnames(data) <- list("Gender" = c("Pria", "Wanita"), "Status Merokok" = c("Aktif", "Pasif"))
print(data)
## Status Merokok
## Gender Aktif Pasif
## Pria 89 37
## Wanita 12 62
## Pengujian Proporsi
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 = 53.074, df = 1, p-value = 3.212e-13
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.4178040 0.6705701
## sample estimates:
## prop 1 prop 2
## 0.7063492 0.1621622
Interpretasi:
Berdasarkan hasil perhitungan, didapatkan bahwa nilai p-value sebesar 3.212e-13. Karena p-value < 0.05, maka terdapat perbedaan proporsi kejadian antara kelompok Pria dan Wanita.
Pengujian Asosiasi digunakan untuk mengukur hubungan antara dua variabel kategori dalam tabel kontingensi. Terdapat ukuran utama dalam pengujian ini:
Untuk setiap pengujian asosiasi, hipotesis yang diuji adalah:
Hipotesis Nol (H0): Tidak ada asosiasi antara dua variabel
Hipotesis Alternatif (H1): Terdapat asosiasi antara dua variabel
Risk Difference mengukur selisih risiko absolut kejadian antara dua kelompok.
\[ RD = (\frac{n_{11}}{n_{1+}}) - (\frac{n_{21}}{n_{2+}}) \]
Standar Error untuk RD:
\[ SE(RD) = \sqrt{\frac{\hat{p}_1 \times (1 - \hat{p}1)}{n{1+}} + \frac{\hat{p}_2 \times (1 - \hat{p}2)}{n{2+}}} \]
Statistik Uji Z:
\[ Z_{RD} = \frac{RD}{SE(RD)} \]
Relative Risk (RR) mengukur rasio risiko kejadian antara Kelompok 1 dan Kelompok 2.
\[ RR = \frac{\frac{n_{11}}{n_{1+}}}{\frac{n_{21}}{n_{2+}}} \]
Standar Error untuk log(RR):
\[ SE(\ln RR) = \sqrt{\frac{1}{n_{11}} - \frac{1}{n_{1+}} + \frac{1}{n_{21}} - \frac{1}{n_{2+}}} \]
Statistik Uji Z:
\[ Z_{RR} = \frac{\ln RR}{SE(\ln RR)} \]
Odds Ratio (OR) membandingkan peluang kejadian antara dua kelompok, sering digunakan dalam studi kasus-kontrol untuk mengukur asosiasi.
\[ OR = \frac{n_{11} \times n_{22}}{n_{12} \times n_{21}} \]
Standar 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)} \]
Dengan menggunakan tabel kontingensi sebelumnya, Lakukanlah pengujian proprosi!
Perokok Aktif (+) | Perokok Pasif (-) | Total | |
---|---|---|---|
Pria | 89 | 37 | 126 |
Wanita | 12 | 62 | 74 |
Total | 101 | 99 | 200 |
Perhitungan Manual untuk RD:
Misalkan \(\hat{p}_1 = \frac{89}{126} \approx 0.706\)
Misalkan \(\hat{p}_2 = \frac{12}{74} \approx 0.162\)
Risk Difference:
\[ RD = 0.706 - 0.162 = 0.544 \]
\[ SE(RD) = \sqrt{\frac{0.706 \times (1 - 0.706)}{126} + \frac{0.162 \times (1 - 0.162)}{74}} \approx 0.059 \]
\[ Z_{RD} = \frac{0.544}{0.059} = 9.22 \]
Perhitungan Manual untuk RR:
\[ RR = \frac{\frac{89}{126}}{\frac{12}{74}} \approx 4.354 \]
\[ SE(\ln RR) = \sqrt{\frac{1}{89} - \frac{1}{126} + \frac{1}{12} - \frac{1}{74}} \approx 0.2704 \]
\[ Z_{RR} = \frac{ln 4.354}{0.2704} = 5.44187 \]
Perhitungan Manual untuk OR:
\[ R = \frac{89 \times 62}{37 \times 12} = \frac{5518}{444} \approx 12.428 \]
Standar Error untuk Log(OR):
\[ SE(\ln OR) = \sqrt{\frac{1}{89} + \frac{1}{37} + \frac{1}{12} + \frac{1}{62}} \approx 0.3711 \]
Statistik Uji Z:
\[ Z_{OR} = \frac{ln 12.428}{0.3711} \approx 6.790228 \]
Perhitungan Melalui R
# Data Observasi
n11 <- 89; n12 <- 37; n21 <- 12; n22 <- 62
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 Perhitungan
list(RiskDifference = rd,
SE_RiskDifference = se_rd,
Z_RiskDifference = z_rd,
RelativeRisk = rr,
SE_RelativeRisk = se_ln_rr,
Z_RelativeRisk = z_rr,
OddsRatio = or,
SE_OddsRatio = se_ln_or,
Z_OddsRatio = z_or)
## $RiskDifference
## [1] 0.544187
##
## $SE_RiskDifference
## [1] 0.05901027
##
## $Z_RiskDifference
## [1] 9.221904
##
## $RelativeRisk
## [1] 4.35582
##
## $SE_RelativeRisk
## [1] 0.2704057
##
## $Z_RelativeRisk
## [1] 5.44187
##
## $OddsRatio
## [1] 12.42793
##
## $SE_OddsRatio
## [1] 0.3711137
##
## $Z_OddsRatio
## [1] 6.790228
Interpretasi:
Pengujian Independensi digunakan untuk menentukan apakah terdapat hubungan statistik antara dua variabel kategorikal.
Uji Chi-Square digunakan untuk menguji apakah terdapat hubungan antara dua variabel kategorikal. Secara umum, Chi-Square dibentuk sebagai berikut:
\[ \chi^2 = \sum{i=1}^r \sum{j=1}^c \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]
di mana:
\[ E_{ij} = \frac{(R_i \times C_j)}{N} \]
dengan:
Partisi Chi-Square digunakan untuk mengidentifikasi kategori mana yang berkontribusi pada hubungan signifikan dalam tabel kontingensi \(I \times J\). Jika uji Chi-Square menunjukkan hubungan signifikan, partisi Chi-Square membantu menguraikan efek tersebut pada subkelompok yang lebih kecil.
Uji Likelihood Ratio (G²) adalah alternatif dari uji Chi-Square untuk menguji hipotesis independensi antar variabel dalam tabel kontingensi \(I \times J\).
Statistik Uji ini diberikan oleh:
\[ G^2 = 2 \sum_{i=1}^I \sum_{j=1}^J n_{ij} \ln \left( \frac{n_{ij}}{\hat{\mu}_{ij}} \right) \]
di mana:
Uji Fisher’s Exact digunakan untuk menguji independensi dalam tabel kontingensi 2 x 2, terutama ketika ukuran sampel kecil atau frekuensi harapan kecil (< 5), sehingga uji Chi-Square tidak dapat digunakan dengan akurat.
Keunggulan:
Cocok untuk ukuran sampel kecil.
Tidak memerlukan asumsi normalitas atau Chi-Square.
Memberikan hasil yang lebih akurat dibandingkan Chi-Square pada data dengan frekuensi kecil.
Kekurangan:
Perhitungan bisa menjadi sangat berat secara komputasi jika ukuran tabel besar.
Hanya cocok untuk tabel kontingensi kecil (misalnya 2x2 atau 3x3).
Distribusi Hipergeometrik menggambarkan probabilitas mengambil \(x\) bola putih dalam pengembalian dari kumpulan \(N\) bola yang terdiri dari \(K\) bola putih dan \(N-K\) bola hitam. Secara umum, dibentuk sebagai berikut:
\[ P(X = x) = \frac{\binom{n_{1+}}{x} \binom{n_{2+}}{n_{+1} - x}}{\binom{N}{n_{+1}}} \]
dengan:
Analisis residual membantu mengidentifikasi sel-sel dalam tabel kontingensi yang menunjukkan penyimpangan signifikan dari model independensi. Residual mengukur perbedaan antara frekuensi yang diamati dan yang diharapkan, memungkinkan peneliti untuk menentukan sel mana yang berkontribusi pada hubungan antar variabel. Menurut Agresti (2013), jika residual sama dengan 0, maka:
Jika residual tidak sama dengan 0, maka: - Residual Positif: Frekuensi yang diamati lebih tinggi dari yang diharapkan, menunjukkan hubungan positif antar kategori. - Residual Negatif: Frekuensi yang diamati lebih rendah dari yang diharapkan, menunjukkan hubungan negatif antar kategori.
Analisis ini berperan penting dalam memahami pola hubungan antar variabel kategorik, terutama dalam tabel dengan banyak sel, dan membantu mengidentifikasi sel-sel yang menyimpang secara signifikan dari independensi.
Pearson Residual mengukur penyimpangan antara frekuensi yang diamati dan yang diharapkan, dinormalkan dengan akar dari frekuensi yang diharapkan.
\[ e_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}} \]
di mana:
Standardized residual menyesuaikan Pearson residual dengan mempertimbangkan probabilitas marginal, sehingga lebih akurat untuk mengidentifikasi penyimpangan signifikan.
\[ r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij} \times (1 - p_i) \times (1 - p_j)}} \]
di mana:
Dalam analisis data kategori, outlier merujuk pada sel-sel dalam tabel kontingensi yang menunjukkan nilai residual yang sangat besar, baik positif maupun negatif. Nilai ini menunjukkan bahwa terdapat kategori yang memiliki frekuensi observasi yang jauh lebih tinggi atau lebih rendah dibandingkan dengan nilai ekspektasi berdasarkan asumsi independensi.
\[ e_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}} \]
Jika \(|e_{ij}| > 2\), maka sel tersebut dianggap sebagai outlier signifikan.
\[ r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij} \times (1 - p_i) \times (1 - p_j)}} \]
Jika \(|r_{ij}| > 2\), maka sel tersebut dianggap sebagai outlier signifikan.
Tabel kontingensi tiga arah merupakan pengembangan dari tabel dua arah, dan digunakan untuk menganalisis keterkaitan antara tiga variabel kategori sekaligus. Dalam berbagai kasus, relasi antara dua variabel (misalnya \(X\) dan \(Y\)) dapat dipengaruhi oleh variabel ketiga \(Z\), yang dikenal sebagai variabel kontrol atau kovariat. Analisis dengan tabel ini berguna terutama ketika terdapat potensi faktor perancu yang bisa memengaruhi hubungan antara dua variabel utama. Seperti:
Tabel kontingensi tiga arah dapat dibagi menjadi:
Penggunaan tabel marginal dapat menunjukkan pola asosiasi secara keseluruhan, tetapi sering kali mengabaikan variabel kovariat yang penting untuk analisis lebih dalam. Oleh karena itu, analisis menggunakan tabel parsial sering lebih disukai dalam penelitian ilmiah agar hasilnya lebih akurat dan bermakna.
Contoh Data
Z (Jenis Kelamin) | X (Merokok) | Y (Kanker) | Tidak Kanker | Total |
---|---|---|---|---|
Pria | Ya | 40 | 60 | 100 |
Pria | Tidak | 10 | 90 | 100 |
Wanita | Ya | 30 | 70 | 100 |
Wanita | Tidak | 15 | 85 | 100 |
Tabel Frekuensi Parsial
Tabel Frekuensi Parsial menyajikan hubungan antara dua variabel kategori dalam tabel kontingensi tiga arah dengan mempertahanakn satu variabel sebagai kontrol. Tabel ini membantu dalam memahami hubungan bersyarat antara variabel dalam analisis data kategori.
Tabel Frekuensi Parsial dihitung dengan membagi tabel kontingensi tiga arah berdasarkan kategori variabel kontrol.
Tabel Frekuensi Parsial untuk Z (Jenis Kelamin) = Pria
Kanker (+) | Tidak Kanker (-) | Total | |
---|---|---|---|
Merokok | 40 | 60 | 100 |
Tidak Merokok | 10 | 90 | 100 |
Total | 50 | 150 | 200 |
Tabel Frekuensi Parsial untuk Z (Jenis Kelamin) = Wanita
Kanker (+) | Tidak Kanker (-) | Total | |
---|---|---|---|
Merokok | 30 | 70 | 100 |
Tidak Merokok | 15 | 85 | 100 |
Total | 45 | 155 | 200 |
Implementasi dalam R
data3 <- array(c(40, 10, 60, 90, 30, 15, 70, 85),
dim = c(2, 2, 2),
dimnames = list(
Merokok = c("Ya", "Tidak"),
Kanker = c("Ya", "Tidak"),
Gender = c("Pria", "Wanita")
))
# Ekstrak tabel parsial berdasarkan usia
freq_parsial_pria <- data3[, , "Pria"]
freq_parsial_wanita <- data3[, , "Wanita"]
# Hasil Perhitungan
freq_parsial_pria
## Kanker
## Merokok Ya Tidak
## Ya 40 60
## Tidak 10 90
freq_parsial_wanita
## Kanker
## Merokok Ya Tidak
## Ya 30 70
## Tidak 15 85
Kesimpulan
Tabel Frekuensi Parsial memungkinkan analisis hubungan antara dua variabel dengan mempertimbangkan variabel kontrol. Ini membantu mengidentifkasi pola yang mungkin tersembunyi dalam tabel.
Tabel Frekuensi Marginal
Tabel Frekuensi Marginal menampilkan jumlah total observasi untuk setiap variabel dengan mengabaikan variabel lainnya dalam tabel kontingensi tiga arah. Tabel ini membantu dalam memahami distribusi kategori secara agregat tanpa mempertimbangkan hubungan antarvariabel. Tabel frekuensi marginal dihitung dengan menjumlahkan frekuensi dari tabel kontingensi tiga arah berdasarkan variabel yang tersisa.
Tabel Frekuensi Marginal untuk X (Merokok) dan Y (Kanker):
X (Merokok) | Y (Kanker) | Tidak Kanker |
---|---|---|
Ya | 70 | 130 |
Tidak | 25 | 175 |
Tabel Frekuensi Marginal untuk Z (Jenis Kelamin) dan Y (Kanker):
Z (Jenis Kelamin) | Y (Kanker) | Tidak Kanker |
---|---|---|
Pria | 50 | 150 |
Wanita | 45 | 155 |
Implementasi dalam R
data3 <- array(c(40, 10, 60, 90, 30, 15, 70, 85),
dim = c(2, 2, 2),
dimnames = list(
Merokok = c("Ya", "Tidak"),
Kanker = c("Ya", "Tidak"),
Gender = c("Pria", "Wanita")
))
# Ekstrak tabel marginal
freq_marginal_X <- apply(data3, 1, sum)
freq_marginal_Z <- apply(data3, 3, sum)
# Hasil Perhitungan
freq_marginal_X
## Ya Tidak
## 200 200
freq_marginal_Z
## Pria Wanita
## 200 200
Tabel Kontingensi Tiga Arah digunakan untuk menganalisis hubungan antara dua variabel kategorik dengan mempertimbangkan variabel kontrol. Tabel ini terdiri dari beberapa tabel parsial (2x2) untuk setiap tingkat \(Z\), serta tabel marginal yang mengabaikan \(Z\). Ukuran asosiasi yang digunakan adalah odds ratio
\[ OR = \frac{a \times d}{b \times c} \]
Apabila odds ratio parsial relatif konstan pada semua strata, maka dapat menghitung odds ratio bersama menggunakan metode estimasi Mantel-Haenszel.
Independensi bersyarat adalah konsep penting dalam analisis tabel kontingensi tiga arah, yang merujuk pada kondisi di mana dua variabel, \(X\) dan \(Y\), independen pada setiap level variabel ketiga, \(Z\). Pengujian independensi bersyarat ini dilakukan dengan metode statistik seperti Pengujian 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 umum, dapat dibentuk sebagai:
\[ OR(X,Y|Z) = 1 \]
Artinya, setelah mengendalikan pengaruh \(Z\), tidak ada hubungan antara \(X\) dan \(Y\) dalam setiap strata. Meskipun begitu, terdapat beberapa hal yang perlu diperhatikan:
Uji Cochran-Mantel-Haenszel (CMH) digunakan untuk menguji hubungan antara dua variabel kategori dengan mempertimbangkan efek dari variabel perancu. Pengujian ini berguna dalam:
Uji CMH berasal dari konsep tabel kontingensi berlapis (stratified 2 x 2 tables), di mana dua variabel utama dipecah menjadi beberapa strata berdasarkan variabel perancu.
Statistik uji Cochran-Mantel-Haenszel (CMH) dirumuskan sebagai:
\[ CMH = \frac{\left( \sum_{k=1}^K (n_{11k} - \hat{\mu}{11k}) \right)^2}{\sum{k=1}^K var(\hat{\mu}_{11k})} \]
di mana:
\[ \hat{\mu}{11k} = E[n_{11k}] = \frac{n_{1+k} \times n_{+1k}}{n_{++k}} \]
\[ var(\hat{\mu}{11k}) = \frac{n{1+k} \times n_{2+k} \times n_{+1k} \times n_{+2k}}{n_{++k}^2 \times (n_{++k} - 1)} \]
Statistik CMH mengiktui distribusi Chi-square dengan derajat kebebasan \((db) = 1\)
Tolak \(H_0\) jika \(CMH > \chi^2_{(1), 1-\alpha}\) atau p-value < \(\alpha\).
Odds Ratio Bersama dibentuk oleh:
\[ OR_{MH} = \frac{\sum_{k=1}^K \frac{n_{11k} \times n_{22k}}{n_{++k}}}{\sum_{k=1}^K \frac{n_{12k} \times n_{21k}}{n_{++k}}} \]
di mana:
Standard Error untuk log odds ratio bersama dibentuk oleh:
\[ \hat{\sigma}^2[\log(\hat{\theta}{MH})] = \frac{\sum \left( (n{11k} + n_{22k}) \left( \frac{n_{11k} \times n_{22k}}{n_{++k}} \right) / n_{++k}^2 \right)}{2 \left( \sum \frac{n_{11k} \times n_{22k}}{n_{++k}} \right)^2} + \frac{\sum \left( (n_{11k} + n_{22k}) \left( \frac{n_{11k} \times n_{22k}}{n_{++k}} \right) + (n_{12k} + n_{21k}) \left( \frac{n_{12k} \times n_{21k}}{n_{++k}} \right) \right) / n_{++k}^2}{2 \left( \sum \frac{n_{11k} \times n_{22k}}{n_{++k}} \right) \left( \sum \frac{n_{12k} \times n_{21k}}{n_{++k}} \right)} + \frac{\sum \left( (n_{12k} + n_{21k}) \left( \frac{n_{12k} \times n_{21k}}{n_{++k}} \right) / n_{++k}^2 \right)}{2 \left( \sum \frac{n_{12k} \times n_{21k}}{n_{++k}} \right)^2} \]
di mana:
\[ \log(\hat{\theta}{MH}) \pm Z{\alpha/2} \hat{\sigma}[\log(\hat{\theta}_{MH})] \]
di mana:
\[ \theta_{XY(1)} = \theta_{XY(2)} = \cdots = \theta_{XY(K)} \] - Apabila odds ratio konstan di semua strata variabel kontrol \((Z)\), maka tidak ada interaksi antara variabel \(X\) dan \(Y\) dalam pengaruhnya terhadap \(Z\).
Statistik Uji Bresslow-Day (BD) digunakan untuk menguji homogenitas odds ratio. Secara matematis, dirumuskan sebagai:
\[ \chi^2_{HBD} = \sum_{j=1}^K \frac{(a_j - \hat{a}j)^2}{Var(a_j \mid OR{MH})} \]
di mana:
1. Estimasi Rasio Odds Gabungan (Mantel=Haenszel OR)
Estimasi rasio odds gabungan \((\hat {OR}_{MH})\) dapat dibentuk sebagai:
\[ OR_{MH} = \frac{\sum_{j=1}^K \frac{a_j \times d_j}{n_j}}{\sum_{j=1}^K \frac{b_j \times c_j}{n_j}} \]
di mana:
2. Menentukan Nilai Ekspektasi \(\hat{a}_j\)
Nilai Ekspektasi \(\hat{a}_j\) diperoleh dengan mencari solusi dari persamaan kuadrat berikut:
\[ -m_1 \times n_1 \times OR_{MH} + (m_2 - m_3 + OR_{MH} \times (m_1 + m_4)) \hat{a}j + (1 - OR{MH}) \hat{a}_j^2 = 0 \]
di mana:
3. Menghitung Varians \(Var(a_j \mid OR_{MH})\)
Varians \(Var(a_j \mid OR_{MH})\) dapat dibentuk sebagai:
\[ Var(a_j \mid OR_{MH}) = \left( \frac{1}{\hat{a}_j} + \frac{1}{\hat{b}_j} + \frac{1}{\hat{c}_j} + \frac{1}{\hat{d}_j} \right)^{-1} \]
di mana:
4. Menghitung Statistik Uji Breslow-Day
Statistik Uji Breslow-Day dapat dibentuk oleh:
\[ \chi^2_{HBD} = \sum_{j=1}^K \frac{(a_j - \hat{a}j)^2}{Var(a_j \mid OR{MH})} \]
di mana:
5. Koreksi Tarone
Korelasi Tarone ditetapkan untuk menyesuaikan statistik uji:
\[ \chi^2_{HBDT} = \chi^2_{HBD} - \frac{\left( \sum_{j=1}^K (a_j - \hat{a}j) \right)^2}{\sum{j=1}^K Var(a_j \mid OR_{MH})} \]
Koreksi ini memperhitungkan kemungkinan bias yang muncul karena varians yang digunakan dalam statistik uji tidak memperhitungkan ketergantungan antar strata.
6. P-value dan Keputusan Hipotesis
P-value dihitung berdasarkan distribusi chi-square dengan derajat kebebasan:
\[ df = K - 1 \]
dan
\[ p = 1 - \chi^2(\chi^2_{HBDT}, df) \]
Jika P-value < 0.05, maka \(H_0\) ditolak dan dapat disimpulkan bahwa rasio odds heterogen pada seluruh strata.
Generalized Linear Model (GLM) adalah bentuk perluasan dari regresi linear klasik. GLM memungkinkan kita untuk memodelkan data ketika variabel respon tidak mengikuti distribusi normal dan/atau saat hubungan antara variabel respon dan prediktor tidak bersifat linier terhadap rata-ratanya.
GLM memiliki tiga komponen utama, yaitu:
Sebuah distribusi dikatakan termasuk dalam keluarga eksponensial jika bentuk fungsi densitas atau peluangnya dapat dinyatakan sebagai:
\[ f(y;\theta,\phi) = \exp\left( \frac{y\theta - b(\theta)}{\phi} + c(y,\phi) \right) \]
Contoh distribusi yang termasuk dalam Exponential Family adalah sebagai:
Fungsi probabilitas Distribusi Poisson adalah:
\[ P(Y = y) = \frac{\lambda^y e^{-\lambda}}{y!}, \quad x = 0,1,2, \ldots \] Kita ingin membuktikan bahwa bentuk ini dapat ditulis dalam bentuk umum exponential family:
\[ f(y; \theta) = \exp\left\{ y \theta - b(\theta) + c(y, \phi) \right\} \]
Tahapan 1 : Ubah ke Bentuk Eksponensial
Mulai dari:
\[ f(y; \lambda) = \frac{\lambda^y e^{-\lambda}}{y!} \]
Menggunakan identitas logaritma:
\[ \lambda^y = e^{y \log \lambda} \]
sehingga:
\[ f(y; \lambda) = \frac{e^{y \log \lambda - \lambda}}{y!} = \exp \left( y \log \lambda - \lambda - \log y! \right) \]
Tahapan 2 : Samakan dengan Bentuk Exponential Family
Bentuknya sudah cocok dengan:
\[ \exp \left( y \theta - b(\theta) + c(y) \right) \]
Sehingga kita punya:
Tahapan 3 : Kesimpulan
Karena fungsi probabilitas dari Poisson dapat dituliskan dalam bentuk:
\[ f(y; \theta) = \exp\left\{ y \theta - e^\theta - \log y! \right\} \]
maka distribusi Poisson adalah bagian dari exponential family dengan:
Persamaan regresi logistik adalah bentuk regresi linear yang menggunakan kombinasi linear dari koefisien untuk menghasilkan prediksi. Namun, regresi logistik membatasi hasil prediksinya menjadi nilai biner, yaitu 0 atau 1, dengan menggunakan fungsi aktivasi signoid. Hasil yang diprediksi oleh model terletak dalam rentang antara 0 hingga 1 serta mengikuti bentuk kurva S (S-shaped).
Regresi logistik digunakan untuk mengklasifikasikan hubungan antara satu atau lebih variabel independen ke dalam kelas-kelas diskrit. Model ini tidak untuk prediksi numerik, melainkan untuk memperkirakan probabilitas apakah suatu objek termasuk dalam kategori tertentu atau tidak.
Sebagai contoh, angka 0 dapat mewakili kelas negatif, sedangkan angka 1 mewakili kelas positif. Regresi logistik biasanya diterapkan pada masalah klasifikasi biner, di mana variabel hasil hanya memiliki dua kemungkinan kategori (0 atau 1).
Berikut merupakan beberapa contoh pengaplikasian klasifikasi biner di mana respons biner diiharapkan atau tersirat:
Salah satu keunggulan utama regresi logistik adalah kemudahan penerapannya dalam metode pembelajaran mesin. Model ini dapat diolah secara efektif melalui proses training (pelatihan) dan testing (pengujian). Proses pelatihan bertujuan untuk mengenali pola dalam data (misalnya gambar) dan mengaitkannya dengan kelas tertentu (label). Melatih model regresi logistik memungkinkan pembelajaran mesin untuk mengenali hubungan antara prediktor dan respons, sehingga dapat digunakan untuk klasifikasi yang akurat.
1. Cocok untuk data yang dapat dipisahkan secara linear
Pastikan data yang digunakan dapat dipisahkan secara linier dengan membuat grafik yang memisahkan data ke dalam dua kelas menggunakan garis lurus. Dalam regresi logistik, variabel respons \((Y)\) hanya memiliki dua nilai. Oleh karena itu, jika pemisahan dapat dilakukan secara efektif, maka data tersebut dapat diklasifikasikan ke dalam dua kelas berbeda.
2. Memberikan wawasan yang berharga
Regresi logistik dapat memberikan informasi penting tentang hubungan antara variabel independen/prediktor (dengan menghitung koefisien regresi) dan variabel dependen/respons (apakah bernilai positif atau negatif).
3. Persamaan dan Asumsi dalam Regresi Logistik
Dalam regresi logistik, fungsi sigmoid digunakan untuk mengubah prediksi menjadi probabilitas. Fungsi sigmoid menghasilkan kurva berbentuk S (S-shaped) yang memetakan setiap nilai riil ke rentang antara 0 dan 1. Dengan demikian, jika nilai yang dihasilkan dari fungsi sigmoid lebih besar dari ambang batas tertentu (biasanya dihitung berdasarkan observasi), data akan diklasifikasikan ke dalam kelas tertentu. Sebaliknya, jika nilainya lebih kecil dari ambang batas, data akan masuk ke kelas lainnya.
Sebagai contoh:
Dengan kata lain, jika keluaran fungsi signoid adalah 0.78, maka terdapat peluang sebesar 78% bahwa peristiwa tersebut akan terjadi —- misalnya dalam kasus pelemparan dadu. Secara matematis, fungsi signoid dibentuk oleh:
\[ f(x) = \frac{1}{1 + e^{-x}} \]
Apabila nilai prediksi lebih besar dari ambang batas (misalnya 0.5), maka hasil diklasifikan sebagai 1. Jika kurang dari 0.5, diklasifikan sebagai 0.
Contoh Kasus: Simulasi dan Visualisasi Regresi Logistik
# Simulasi Data untuk Regresi Logistik
set.seed(123)
n <- 200
x <- rnorm(n)
log_odds <- -0.3 + 2 * x
prob <- 1 / (1 + exp(-log_odds))
y <- rbinom(n, 1, prob)
# Data Frame
data <- data.frame(y = y, x = x)
Estimasi Model Regresi Logistik
# Model regresi logistik
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.4238 0.1796 -2.360 0.0183 *
## x 1.9081 0.2839 6.721 1.81e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 272.12 on 199 degrees of freedom
## Residual deviance: 191.30 on 198 degrees of freedom
## AIC: 195.3
##
## Number of Fisher Scoring iterations: 5
Interpretasi:
Koefisien Log-Odds
exp(coef(model))
## (Intercept) x
## 0.654584 6.740552
Visualisasi Kurva
# Visualisasi Data
library(ggplot2)
data$pred <- predict(model, type = "response")
ggplot(data, aes(x = x, y = y)) +
geom_point(alpha = 0.5, color = "maroon") +
geom_line(aes(y = pred), color = "violet", linewidth = 1.5) +
labs(title = "Kurva Logit pada Regresi Logistik",
x = "X (Prediktor)",
y = "Probabilitas / Respons") +
theme_minimal()
Evaluasi Model
data$pred_class <- ifelse(data$pred > 0.5, 1, 0)
table(Predicted = data$pred_class, Actual = data$y)
## Actual
## Predicted 0 1
## 0 96 27
## 1 20 57
Interpretasi:
Regresi Poisson digunakan untuk mengatasi variabel respons adalah data cacah, yaitu bilangan bulat non-negatif. Model ini merupakan bagian dari Generalized Linear Model (GLM) dengan asumsi bahwa variabel respons adalah Distribusi Poisson.
Distribusi Poisson memiliki probabilitas:
\[ P(Y = y) = \frac{e^{-\mu}\mu^y}{y!} \]
Persamaan tersebut dapat dibentuk dalam format exponential family sehingga:
\[ f(y; \lambda) = \exp \left\{ y \log(\lambda) - \lambda - \log(y!) \right\} \]
dengan:
Maka, distribusi Poisson termasuk dalam exponential family.
Fungsi link kanonik untuk distribusi Poisson adalah fungsi logaritma, yakni:
\[ g(\mu) = \log(\mu) \]
sehingga modelnya menjadi:
\[ \log(\mu) = x^T \beta \]
dan fungsi inverse link:
\[ \mu = \exp(x^T \beta) \]
Estimasi parameter \(\beta\) dilakukan dengan metode Maximum Likelihood Estimation (MLE). Log-likehood fungsi untuk regresi Poisson sebagai:
\[ 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.
Contoh Kasus: Data Simulasi
Regresi Poisson digunakan untuk memodelkan data cacah. Oleh karena itu, akan digunakan dataset warpbreaks dari R base package yang berisi jumlah patahan benang pada mesin tenun. Secara matematis, dibentuk sebagai berikut:
data("warpbreaks")
head(warpbreaks)
## breaks wool tension
## 1 26 A L
## 2 30 A L
## 3 54 A L
## 4 25 A L
## 5 70 A L
## 6 52 A L
summary(data)
## y x pred pred_class
## Min. :0.00 Min. :-2.30917 Min. :0.007923 Min. :0.000
## 1st Qu.:0.00 1st Qu.:-0.62576 1st Qu.:0.165511 1st Qu.:0.000
## Median :0.00 Median :-0.05874 Median :0.369158 Median :0.000
## Mean :0.42 Mean :-0.00857 Mean :0.420000 Mean :0.385
## 3rd Qu.:1.00 3rd Qu.: 0.56840 3rd Qu.:0.659434 3rd Qu.:1.000
## Max. :1.00 Max. : 3.24104 Max. :0.996861 Max. :1.000
summary(warpbreaks)
## breaks wool tension
## Min. :10.00 A:27 L:18
## 1st Qu.:18.25 B:27 M:18
## Median :26.00 H:18
## Mean :28.15
## 3rd Qu.:34.00
## Max. :70.00
Permodelan Regresi Poisson
poissonmodel <- glm(breaks ~ wool + tension, data = warpbreaks, family = poisson)
summary(poissonmodel)
##
## Call:
## glm(formula = breaks ~ wool + tension, family = poisson, data = warpbreaks)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.69196 0.04541 81.302 < 2e-16 ***
## woolB -0.20599 0.05157 -3.994 6.49e-05 ***
## tensionM -0.32132 0.06027 -5.332 9.73e-08 ***
## tensionH -0.51849 0.06396 -8.107 5.21e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 297.37 on 53 degrees of freedom
## Residual deviance: 210.39 on 50 degrees of freedom
## AIC: 493.06
##
## Number of Fisher Scoring iterations: 4
Interpretasi Koefisien:
exp(coef(poissonmodel))
## (Intercept) woolB tensionM tensionH
## 40.1235380 0.8138425 0.7251908 0.5954198
Visualisasi Prediksi
warpbreaks$predicted <- predict(poissonmodel, type = "response")
library(ggplot2)
ggplot(warpbreaks, aes(x = tension, y = breaks, color = wool)) +
geom_jitter(width = 0.2, alpha = 0.6) +
geom_point(aes(y = predicted), shape = 18, size = 3, color = "maroon") +
facet_wrap(~wool) +
labs(title = "Prediksi Jumlah Patahan Benang berdasarkan Wol dan Ketegangan",
x = "Tingkat Ketegangan",
y = "Jumlah Patahan Benang",
color = "Jenis Wol") +
theme_minimal()
Evaluasi Model
plot(poissonmodel$residuals, main = "Residual Plot", ylab = "Residual", xlab = "Index", pch = 19, col = "purple")
Dalam Generalized Linear Model (GLM), inferensi statistik memberikan pemahaman tentang efek variabel, baik dari distribusi, efek variabel tertentu, Wald test, Likelihood Ratio test maupun interval kepercayaan untuk mengukur tingkat ketidakpastian. Berikut merupakan ekspektasi dan varians dalam GLM:
1. Ekspektasi Estimator
Ekspektasi menunjukkan apakah suatu estimator tak bias, yaitu:
\[ E(\hat{\beta}) = \beta \]
Dalam GLM, MLE dari \(\hat{\beta}\) bersifat asymptotically unbiased
2. Varians Estimator
Varians menunjukkan presisi dari estimasi parameter:
\[ \text{Var}(\hat{\beta}) \approx (X^T W X)^{-1} \]
di mana \(W\) adalah matriks koefisien yang tergantung pada distribusi dan fungsi link.
Dengan ukuran sampel besar:
\[ \hat{\beta} \sim N(\beta, \text{Var}(\hat{\beta})) \]
Maka, distribusi ini adalah dasar dari:
Tidak seperti regresi linier (OLS) yang mengasumsikan homoskedastisitas:
\[ \text{Var}(Y) = \sigma^2 \]
Maka, dalam GLM:
\[ \text{Var}(Y) = \phi V(\mu) \]
dengan:
Contoh Kasus: Regresi Poisson
# Simulasi Data
set.seed(123)
x = rnorm(200)
mu = exp(0.5 + 0.8 + x)
y = rpois(200, mu)
model = glm(y ~ x, family = poisson)
summary(model)
##
## Call:
## glm(formula = y ~ x, family = poisson)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.33929 0.03912 34.23 <2e-16 ***
## x 0.96247 0.02664 36.13 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 1420.02 on 199 degrees of freedom
## Residual deviance: 216.84 on 198 degrees of freedom
## AIC: 822.47
##
## Number of Fisher Scoring iterations: 5
Jika diturunkan berdasarkan fungsi momen:
\[ E[Y] = \int y f(y; \theta) dy = \mu \]
untuk exponential family:
\[ \log f(y; \theta) = y\theta - b(\theta) + c(y) \]
atau:
\[ \log f(y; \theta) = y\theta - b(\theta) + c(y, \phi) \]
maka turunan pertama:
\[ E[Y] = \frac{\partial b}{\partial \theta} = y - b'(\theta) \]
dan ekspektasi dari turunan pertama:
\[ EY = E[y - b'(\theta)] = y - b'(\theta) = 0 \]
sehingga:
\[ \mu = b'(\theta) \]
diturunkan pada turunan kedua:
\[ \frac{\partial^2 b}{\partial \theta^2} = -b''(\theta) \]
sehingga:
\[ \text{Var}(Y) = b''(\theta) = \phi V(\mu) \]
Pada Maximum Likelihood Estimation (MLE):
Prinsip dasar: Memaksimalkan fungsi likelihood/log-likelihood.
Tahapan:
Turunan pertama = 0
Turunan kedua < 0
Namun, karena bentuk GLM tidak eksplisit, digunakan metode numerik, yaitu Newton-Raphson, di mana:
\[ \beta^{(t+1)} = \beta^{(t)} - H^{-1}(\beta^{(t)})U(\beta^{(t)}) \]
Terdapat juga Fisher Scoring sebagai modifikasi Newton-Raphson dengan mengganti Hessian dengan matriks informasi Fisher, serta IRLS (Iteratively Reweighted Least Square) sebagai modifikasi dari Fisher Scoring dengan hasil estimasi yang mirip dengan Least Square.
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)^T \approx U(\beta) + H(\beta)(\beta^* - \beta) \]
Estimasi parameter:
\[ \hat{\beta} = \beta_0 - H^{-1}(\beta_0) U(\beta_0) \]
Diagnostik digunakan untuk memvalidasi apakah model sudah tepat.
\[ D = -2 \sum \left[ \log \left( \frac{y_i}{\hat{y}_i} \right) - (y_i - \hat{y}_i) \right] \]
\[ \chi^2 = \sum \frac{(y_i - \hat{y}_i)^2}{\hat{y}_i} \]
Regresi Logistik memanfaatkan metode probabilitas untuk mengestimasi parameter dengan pendekatan Maximum Likelihood Estimation (MLE). Fungsi model logistik adalah sebagai berikut:
\[ \pi(x) = \frac{\exp(\beta_0 + \beta_1 x)}{1 + \exp(\beta_0 + \beta_1 x)} \]
Log-likelihood untuk n observasi:
\[ l(\beta) = \sum_{i=1}^n \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \]
Model log-likelihood untuk probabilitas:
\[ \pi_i = \frac{1}{1 + \exp(-x_i^T \beta)} \]
Log-likelihood untuk observasi:
\[ l(\beta) = \sum_{i=1}^n \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \]
1. Turunan Pertama (Score Function):
\[ U(\beta) = \frac{\partial l(\beta)}{\partial \beta} = X^T (y - \pi) \]
2. Turunan Kedua (Hessian Matrix):
\[ H(\beta) = -X^T W X \]
3. Iterasi Newton-Raphson:
\[ \beta^{(t+1)} = \beta^{(t)} + (X^T W X)^{-1} X^T (y - \pi^{(t)}) \]
1. Uji Wald
Tujuan Uji Wald: Untuk menguji signifikansi parameter \(\beta_j\) dalam permodelan regresi logistik, melalui hipotesis:
Dalam teori estimasi MLE, estimator \(\beta_j\) mendekati distribusi normal:
\[ \hat{\beta}_j \sim N(\beta_j, \text{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 \]
Simulasi dan Uji Wald dengan Tahapan:
set.seed(123)
n <- 100
x <- rnorm(n)
log_odds <- -0.5 + 1.2 * x
p <- 1 / (1 + exp(-log_odds))
y <- rbinom(n, 1, p)
data <- data.frame(x, y)
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.3097 0.2296 -1.349 0.177
## x 1.2663 0.3080 4.111 3.94e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 137.99 on 99 degrees of freedom
## Residual deviance: 114.76 on 98 degrees of freedom
## AIC: 118.76
##
## Number of Fisher Scoring iterations: 4
Tahapan 1 : Mengambil nilai koefisien dan SE
beta_hat <- coef(model)["x"]
se_beta <- summary(model)$coefficients["x", "Std. Error"]
Tahapan 2 : Menghitung Statistik Z
Z <- beta_hat / se_beta; Z
## x
## 4.110965
Tahapan 3 : Menghitung Statistik Wald
Wald_stat <- Z^2; Wald_stat
## x
## 16.90003
Tahapan 4 : Menghitung p-value
p_value <- 1 - pchisq(Wald_stat, df = 1); p_value
## x
## 3.940095e-05
Interpretasi
Berdasarkan hasil perhitungan, didapatkan nilai p-value sebesar 3.940095e-05. Karena p-value < 0.05, maka koefisien signifikan yang menunjukkan bahwa variabel prediktor berpengaruh.
2. Uji Likelihood Ratio (Chi-square)
Membandingkan model penuh dengan model tanpa prediktor.
# Model null
model_null <- glm(y ~ 1, data = data, family = binomial)
# Likelihood ratio test
anova(model_null, model, test = "Chisq")
## Analysis of Deviance Table
##
## Model 1: y ~ 1
## Model 2: y ~ x
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 99 137.99
## 2 98 114.76 1 23.229 1.438e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Evaluasi Kebaikan Model
AIC(model)
## [1] 118.7598
BIC(model)
## [1] 123.9701
Interpretasi
Model Regresi Poisson digunakan untuk memodelkan data count (jumlah kejadian) di mana variabel respons mengikuti distribusi Poisson. Estimasi dilakukan dengan Maximum Likelihood Estimation (MLE), dan inferensi dilakukan dengan uji Wald dan Likelihood Ratio Test.
\[ P(Y_i = y_i) = \frac{e^{-\lambda} \lambda^{y_i}}{y_i!} \]
\[ \log(\lambda_i) = x_i^T \beta \]
\[ l(\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 Paramter model regresi Poisson dilakukan dengan MLE menggunakan metode Iteratively Reweighted Least Squares (IRLS) secara manual, hingga konvergen.
Tahap 1 : Definisikan Model Regresi Poisson
\[ \log(\lambda_i) = x_i^T \beta \]
sehingga
\[ \lambda_i = \exp(x_i^T \beta)\ \]
Tahap 2 : Mencari Log-likelihood yang dimaksimalkan
\[ l(\beta) = \sum_{i=1}^n \left[ y_i \log(\lambda_i) - \lambda_i - \log(y_i!) \right] \]
Tahap 3 : Formulasi Iteratif
\[ \beta^{(t+1)} = (X^T W X)^{-1} X^T W z^{(t)} \]
dengan:
dan
\[ \eta_i = \log(\lambda_i) = x_i^T \beta \]
Regresi Logistik digunakan untuk memodelkan hubungan antara variabel dependen biner (misalnya, 0 atau 1) dengan satu atau lebih variabel independen (prediktor) yang dapat bersifat nominal, ordinal, atau rasio. Dalam penerapannya, prediktor yang digunakan memiliki skala pengukuran berbeda, yaitu:
Nominal: Variabel kategori yang tidak memiliki urutan tertentu, seperti jenis kelamin dengan kategori “Laki-laki” dan “Perempuan”. Dalam regresi logistik, variabel nominal tidak dapat langsung dimasukkan ke dalam model karena tidak bersifat numerik. Oleh karena itu, variabel ini perlu dikodekan menjadi variabel dummy.
Untuk variabel nominal dengan \(k\) kategori, dapat membuat \(k-1\) variabel dummy, di mana suatu kategori dijadikan acuan. Misalnya, untuk variabel jenis kelamin dengan kategori “Laki-laki” dan “Perempuan”:
Kategori acuan: “Laki-laki” (diberi nilai 0)
Kategori lainnya: “Perempuan” (diberi nilai 1)
Dengan demikian, variabel dummy untuk jenis kelamin akan menjadi:
Jenis_Kelamin_Perempuan = 0
Jenis_Kelamin_Perempuan = 1
Dalam analisis regresi logistik, koefisien untuk variabel dummy ini akan menunjukkan perbedaan log-odds antara kategori “Perempuan” dibandingkan dengan kategori acuan “Laki-laki”, dengan prediktor lain konstan.
Contoh Kasus: Misalkan kita memiliki variabel dependen biner “Status” (0 = tidak lulus, 1 = lulus) dan prediktor nominal “Jenis Kelamin” (Laki-laki/Perempuan). Maka, model regresi logistik dengan variael dummy akan menjadi:
Di mana \(\beta_1\) adalah koefisien yang menunjukkan efek “Perempuan” dibandingkan “Laki-laki” terhadap log-odds kejadian lulus.
Ordinal: Variabel kategori yang memiliki urutan tertentu, tetapi jarak antar kategori tidak selalu sama, seperti tingkat pendidikan (SMA < Sarjana < Master < Doktor). Terdapat dua pendekatan utama untuk menangani prediktor ordinal dalam regresi logistik.
Menganggapnya sebagai variabel numerik dengan skor:
Setiap kategori diberi skor numerik berdasarkan urutannya.
Contoh: SMA = 1, Sarjana = 2, Master = 3, Doktor = 4
Pendekatan ini mengasumsikan bahwa jarak antar kategori adalah sama (misalnya, perbedaan antara SMA dan Sarjana sama dengan perbedaan antara Sarjana dan Master). Namun, dalam kenyataannya, jarak antar kategori mungkin tidak selalu sama sehingga pendekatan ini perlu digunakan secara hati-hati.
Menggunakan variabel dummy:
Variabel ordinal diperlukan seperti variabel nominal, dengan membuat \(k-1\) variabel dummy untuk \(k\) kategori.
Contoh: Untuk tingkat pendidikan (SMA, Sarjana, Master, Doktor), kita dapat memilih SMA sebagai kategori acuan, lalu membuat variabel dummy:
Sarjana
= 1 jika tingkat pendidikan adalah Sarjana,
0 jika tidak.
Master
= 1 jika tingkat pendidikan adalah Master, 0
jika tidak.
Doktor
= 1 jika tingkat pendidikan adalah Doktor, 0
jika tidak.
Pendekatan ini tidak mengasumsikan jarak antar kategori, tetapi juga tidak memanfaatkan informasi urutan.
Contoh Kasus: Misalkan kita memiliki variabel dependen “Status” (0 = Tidak Lulus, 1 = Lulus) dan prediktor ordinal “Tingkat Pendidikan” (SMA, Sarjana, Master, Doktor).
Di mana Tingkat Pendidikan
adalah variabel numerik (SMA
= 1, Sarjana = 2, Master = 3, Doktor = 4). Koefisien \(\beta_1\) menunjukkan perubahan log-odds
untuk setiap kenaikan satu tingkat pendidikan.
Rasio: Variabel numerik yang memiliki nol absolut dan jarak antar nilai yang sama, misalnya pendapatan bulanan (dalam juta rupiah). Variabel ini bersifat kontinu dan tidak memerlukan pengkodean khusus seperti variabel nominal atau ordinal. Skala rasio dapat langsung dimasukkan ke dalam model regresi logistik.
Di mana \(\beta_1\) menunjukkan perubahan log-odds untuk setiap kenaikan satu juta rupiah dalam pendapatan bulanan. Karena pendapatan bulanan adalah variabel rasio, kita tidak perlu melakukan transformasi tambahan, kecuali jika ada kebutuhan khusus (misalnya, penskalaan untuk memudahkan interpretasi).
Misalkan kita membuat dataset simulasi dengan 400 observasi.
n = 400
Jenis_Kelamin = sample(c("Laki-laki", "Wanita"), n, replace=TRUE)
Pendidikan = sample(c("SMA", "Sarjana", "Master", "Doktor"), n, replace=TRUE,
prob=c(0.4, 0.3, 0.2, 0.1))
Pendapatan = rnorm(n, mean=50, sd=15)
logit_p = -2 + 0.5 * (Jenis_Kelamin == "Perempuan") + 0.8 * as.numeric(factor(Pendidikan, ordered=TRUE)) + 0.03 * Pendapatan
p = 1/(1+exp(-logit_p))
set.seed(123)
sukses = rbinom(n, 1, p)
sim_data = tibble (sukses, Jenis_Kelamin, Pendidikan, Pendapatan)
head(sim_data)
## # A tibble: 6 × 4
## sukses Jenis_Kelamin Pendidikan Pendapatan
## <int> <chr> <chr> <dbl>
## 1 1 Wanita Master 62.7
## 2 1 Wanita SMA 38.3
## 3 1 Laki-laki SMA 66.7
## 4 0 Wanita Master 53.7
## 5 1 Laki-laki SMA 74.8
## 6 1 Laki-laki Sarjana 28.1
Interpretasi: Dataset yang berisi 400 observasi dengan variabel Jenis Kelamin, Pendidikan, Pendapatan, dan Status Keberhasilan.
sim_data %>%
dplyr::group_by(sukses) %>%
dplyr::summarise(
Jumlah = dplyr::n(),
Mean_Pendapatan = mean(Pendapatan)
)
## # A tibble: 2 × 3
## sukses Jumlah Mean_Pendapatan
## <int> <int> <dbl>
## 1 0 69 43.9
## 2 1 331 51.5
Interpretasi: Distribusi jumlah sukses dan gagal, serta rata-rata pendapatan pada masing-masing kelompok.
sim_data_nominal = sim_data %>%
mutate(
Pendidikan = factor(Pendidikan, levels = c("SMA", "Sarjana", "Master", "Doktor"))
)
model_nominal = glm(sukses ~ Jenis_Kelamin + Pendidikan + Pendapatan,
data = sim_data_nominal,
family = binomial)
summary(model_nominal)
##
## Call:
## glm(formula = sukses ~ Jenis_Kelamin + Pendidikan + Pendapatan,
## family = binomial, data = sim_data_nominal)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.990246 0.530460 1.867 0.061934 .
## Jenis_KelaminWanita -0.490160 0.287342 -1.706 0.088037 .
## PendidikanSarjana -0.680859 0.383749 -1.774 0.076025 .
## PendidikanMaster -1.525646 0.385588 -3.957 7.60e-05 ***
## PendidikanDoktor -1.971174 0.491024 -4.014 5.96e-05 ***
## Pendapatan 0.035027 0.009606 3.646 0.000266 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 367.86 on 399 degrees of freedom
## Residual deviance: 325.14 on 394 degrees of freedom
## AIC: 337.14
##
## Number of Fisher Scoring iterations: 5
Keterangan: Model ini menggunakan Pendidikan sebagai variabel dummy, dengan baseline “SMA”. Setiap koefisien membandingkan kategori terhadap baseline.
Interpretasi Koefisien
Nilai intercept dalam analisis regresi logistik ini menunjukkan log-odds dasar sebesar -0.2990 ketika semua variabel prediktor bernilai nol. Ini merupakan titik awal prediksi probabilitas keberhasilan sebelum mempertimbangkan pengaruh variabel lain seperti jenis kelamin atau pendidikan. Nilai negatif ini mengindikasikan bahwa tanpa adanya pengaruh dari variabel independen, peluang keberhasilan cenderung rendah, meskipun interpretasi lebih lanjut perlu melihat konteks data secara keseluruhan.
Variabel ini menunjukkan bahwa menjadi perempuan memiliki efek menurunkan log-odds keberhasilan sebesar 0.3120, dengan tingkat signifikansi p < 0.05. Artinya, ada bukti statistik yang cukup kuat bahwa jenis kelamin perempuan memiliki pengaruh negatif terhadap peluang keberhasilan dibandingkan laki-laki (yang menjadi acuan). Namun, besarnya efek ini relatif kecil, sehingga perlu dilihat bersama faktor lain untuk memahami dampak keseluruhan.
Variabel ini mengindikasikan bahwa memiliki pendidikan sarjana menurunkan log-odds keberhasilan sebesar 0.5965 dengan signifikansi p < 0.01. Hal ini menunjukkan bahwa dibandingkan dengan kelompok acuan (mungkin tanpa gelar atau pendidikan rendah), sarjana memiliki peluang keberhasilan yang lebih rendah secara statistik signifikan. Fenomena ini mungkin dipengaruhi oleh faktor konteks sosial atau pekerjaan yang tidak tercakup dalam model ini.
Pendidikan master memiliki efek penurunan log-odds sebesar 1.0943 dengan signifikansi p < 0.001. Ini menandakan bahwa dibandingkan kelompok acuan, individu dengan gelar master mengalami penurunan peluang keberhasilan yang lebih besar dan sangat signifikan secara statistik. Efek yang lebih kuat ini bisa mencerminkan dinamika tertentu, seperti ekspektasi karier atau saturasi di lapangan kerja untuk tingkat pendidikan ini.
Variabel ini menunjukkan penurunan log-odds sebesar 1.5125 dengan signifikansi p < 0.001, menegaskan bahwa pendidikan doktor memiliki pengaruh negatif yang sangat signifikan terhadap peluang keberhasilan dibandingkan kelompok acuan. Besaran efek ini yang paling besar di antara variabel pendidikan menunjukkan bahwa semakin tinggi jenjang pendidikan, semakin rendah peluang keberhasilan, yang mungkin terkait dengan faktor spesifik seperti spesialisasi atau pasar tenaga kerja
Berbeda dengan variabel lain, pendapatan memiliki efek positif dengan peningkatan log-odds sebesar 0.0519 per unit dan signifikansi p < 0.001. Ini berarti setiap kenaikan pendapatan meningkatkan peluang keberhasilan secara signifikan, menunjukkan bahwa aspek ekonomi memainkan peran penting dalam model ini. Efeknya kecil per unit, tetapi akumulasi dapat memberikan dampak besar tergantung pada rentang pendapatan
sim_data_numeric <- sim_data %>%
mutate(
Pendidikan_numeric = case_when(
Pendidikan == "SMA" ~ 1,
Pendidikan == "Sarjana" ~ 2,
Pendidikan == "Master" ~ 3,
Pendidikan == "Doktor" ~ 4
)
)
model_numeric <- glm(sukses ~ Jenis_Kelamin + Pendidikan + Pendapatan, data = sim_data_numeric, family = binomial)
summary(model_numeric)
##
## Call:
## glm(formula = sukses ~ Jenis_Kelamin + Pendidikan + Pendapatan,
## family = binomial, data = sim_data_numeric)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.980927 0.609518 -1.609 0.107540
## Jenis_KelaminWanita -0.490160 0.287342 -1.706 0.088037 .
## PendidikanMaster 0.445527 0.467886 0.952 0.340989
## PendidikanSarjana 1.290314 0.465475 2.772 0.005571 **
## PendidikanSMA 1.971174 0.491024 4.014 5.96e-05 ***
## Pendapatan 0.035027 0.009606 3.646 0.000266 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 367.86 on 399 degrees of freedom
## Residual deviance: 325.14 on 394 degrees of freedom
## AIC: 337.14
##
## Number of Fisher Scoring iterations: 5
Interpretasi Model menggunakan Pendidikan sebagai angka bertingkat 1-4. Koefisien Pendidikan_numeric mengukur efek kenaikan satu tingkat pendidikan terhadap peluang sukses.
Perbandingan Model
list(
AIC_Nominal = AIC(model_nominal),
AIC_Numeric = AIC(model_numeric)
)
## $AIC_Nominal
## [1] 337.1419
##
## $AIC_Numeric
## [1] 337.1419
Keterangan: Model dengan nilai AIC lebih kecil lebih disukai.
Interpretasi Koefisien
Nilai intercept dalam analisis regresi logistik ini menunjukkan log-odds dasar sebesar -1.81155 ketika semua variabel prediktor bernilai nol. Nilai negatif yang cukup besar ini mengindikasikan bahwa tanpa pengaruh variabel independen, peluang keberhasilan cenderung sangat rendah, sehingga konteks data dan variabel lain perlu dipertimbangkan untuk interpretasi lebih lanjut.
Variabel ini menunjukkan bahwa menjadi perempuan menurunkan log-odds keberhasilan sebesar 0.31205 dengan signifikansi p < 0.001. Efek ini sangat signifikan secara statistik, menandakan bahwa jenis kelamin perempuan memiliki pengaruh negatif terhadap peluang keberhasilan dibandingkan laki-laki (acuan), meskipun besarnya efek relatif moderat.
Pendidikan master meningkatkan log-odds keberhasilan sebesar 0.41205 dengan signifikansi p < 0.01. Ini menunjukkan bahwa dibandingkan kelompok acuan, individu dengan gelar master memiliki peluang keberhasilan yang lebih tinggi secara signifikan, meskipun efeknya tidak sebesar variabel lain seperti pendapatan.
Variabel ini mengindikasikan bahwa memiliki pendidikan sarjana meningkatkan log-odds keberhasilan sebesar 0.91391 dengan signifikansi p < 0.001. Efek positif dan sangat signifikan ini menunjukkan bahwa sarjana memiliki peluang keberhasilan yang lebih tinggi dibandingkan kelompok acuan, mungkin mencerminkan keunggulan kompetensi di pasar kerja.
Pendidikan SMA menurunkan log-odds kebesaran sebesar 1.51256 dengan signifikansi p < 0.001. Ini menandakan bahwa dibandingkan kelompok acuan, individu dengan pendidikan SMA memiliki peluang keberhasilan yang jauh lebih rendah secara statistik signifikan, yang bisa terkait dengan keterbatasan kualifikasi.
Variabel pendapatan memiliki efek positif dengan peningkatan log-odds sebesar 0.05196 per unit dan signifikansi p < 0.001. Ini menunjukkan bahwa setiap kenaikan pendapatan meningkatkan peluang keberhasilan secara signifikan, dengan efek yang konsisten meskipun kecil per unit, tergantung pada rentang pendapatan.
Model regresi logistik merupakan salah satu metode analisis statistik yang digunakan untuk memprediksi hubungan antara variabel independen (prediktor) dengan variabel dependen yang bersifat kategorikal (biasanya biner). Pendekatan dalam regresi logistik dapat dibagi menjadi dua jenis utama, yaitu pendekatan Confirmatory dan Exploratory.
Dalam analisis regresi logistik, pemilihan model sangat krusial untuk mendapatkan model yang baik dalam memprediksi probabilitas kejadian suatu peristiwa (respon biner) sehingga membutuhkan pendekatan. Berikut merupakan dua pendekatan utama dalam memahami model tersebut:
Pendekatan Confirmatory dalam regresi logistik dilakukan dengan tujuan untuk menguji hipotesis tertentu terkait pengaruh variabel prediktor terhadap variabel respons. Pendekatan ini berfokus pada pengujian teori yang telah ditentukan sebelumnya, sehingga pemilihan variabel prediktor dilakukan berdasarkan teori atau pengetahuan yang sudah ada.
Karakteristik
Berikut adalah ciri-ciri utama dari pendekatan confirmatory:
Berbasis Teori yang Kuat: Pemilihan variabel prediktor didasarkan pada teori atau hipotesis yang telah mapan. Misalnya, jika teori menyatakan bahwa faktor \(x1\) dan \(x2\) memengaruhi variabel respons \(y\), maka hanya variabel tersebut yang dimasukkan dalam model.
Pengujian Hipotesis: Tujuan utama pendekatan ini adalah untuk menguji apakah hubungan antara variabel prediktor dan respons sesuai dengan teori. Pengujian dilakukan dengan melihat signifikansi statistik (biasanya menggunakan nilai p-value).
Tidak ada Penambahan atau Pengurangan Variabel secara Otomatis: Variabel yang digunakan dalam model telah ditentukan sejak awal, sehingga tidak ada proses seleksi variabel secara otomatis. Hal ini berbeda dengan pendekatan exploratory yang akan dibahas lebih lanjut.
Penggunaan Model Likelihood Ratio Test: Dalam pendekatan ini, model dievaluasi menggunakan uji likelihood ratio test untuk membandingkan model yang lebih sederhana dengan model yang lebih kompleks. Rumus dasar likelihood ratio test adalah:
\[ \Lambda = -2 \left( \ln L_{\text{reduced}} - \ln L_{\text{full}} \right) \]
di mana:
Statistik uji \(\Lambda\) mengikuti distribusi chi-square \((\chi^2)\) dengan derajat bebas yang sama dengan selisih jumlah parameter antara kedua model.
Contoh Penggunaan
Misalkan kita memiliki model regresi logistik dengan variabel respons \(y\) (biner, misalnya 0 atau 1) dan dua variabel prediktor \(x_1\) dan \(x_2\). Model regresi logistik dapat ditulis sebagai:
\[ \log \left( \frac{P(y=1)}{P(y=0)} \right) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 \]
di mana: - \(\beta_0\): Intercept - \(\beta_1, \beta_2\): Koefisien regresi untuk \(x_1\) dan \(x_2\) - \(P(y=1)\): Probabilitas bahwa \(y=1\)
Dalam pendekatan sebelumnya, kita menguji apakah \(\beta_1\) dan \(\beta_2\) signifikan secara statistik (misalnya dengan p-value < 0.05). Jika ternyata \(\beta_1\) tidak signifikan, kita tetap mempertahankan variabel \(x_1\) dalam model jika teori mendukung keberadaannya, meskipun hasil statistik menunjukkan sebaliknya.
Pendekatan Exploratory digunakan ketika peneliti belum memiliki teori yang kuat tentang hubungan antara variabel prediktor dan respons. Pendekatan ini lebih fleksibel dan bertujuan untuk “mengeksplorasi” data guna menemukan kombinasi prediktor terbaik yang dapat menjelaskan variabel respons.
Karakteristik
Berikut adalah ciri-ciri utama dari pendekatan exploratory:
Berbasis Data: Pemilihan variabel prediktor dilakukan berdasarkan kriteria statistik, seperti nilai AIC (Akaike Information Criterion), log-likelihood, atau uji signifikansi statistik.
Seleksi Variabel Otomatis: Pendekatan ini sering menggunakan metode seleksi variabel seperti:
Forward Selection: Memulai dengan model kosong, lalu menambahkan variabel satu per satu berdasarkan kriteria tertentu (misalnya, variabel yang memberikan peningkatan terbesar pada likelihood).
Backward Elimination: Memulai dengan model penuh (semua variabel), lalu menghapus variabel satu per satu yang tidak signifikan.
Stepwise Selection: Kombinasi dari forward selection dan backward elimination, di mana variabel dapat ditambahkan atau dihapus pada setiap langkah berdasarkan kriteria tertentu.
Tujuan Eksplorasi: Pendekatan ini cocok digunakan ketika peneliti ingin menemukan pola atau hubungan baru dalam data tanpa teori yang kuat sebagai dasar.
Contoh Penggunaan
Misalkan kita memiliki data dengan variabel respons \((y)\) dan tiga variabel prediktor \((x_1, x_2, x_3)\). Dalam pendekatan exploratory, kita dapat memulai dengan model penuh:
\[ \log \left( \frac{P(y=1)}{P(y=0)} \right) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3 \]
Kemudian, kita menggunakan backward elimination untuk menghapus variabel yang tidak signifikan. Misalnya, jika \(\beta_3\) memiliki p-value > 0.05, maka \(x_3\) dihapus dari model, dan model baru menjadi:
\[ \log \left( \frac{P(y=1)}{P(y=0)} \right) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 \]
Proses ini dapat diulang hingga semua variabel yang tersisa signifikan atau hingga kriteria tertentu (misalnya, AIC minimum) tercapai.
Pendekatan confirmatory lebih cocok digunakan ketika peneliti memiliki teori yang jelas dan ingin menguji hipotesis tertentu. Sebaliknya, pendekatan exploratory lebih sesuai untuk penelitian yang bersifat eksploratif, di mana tujuannya adalah untuk menemukan pola atau hubungan baru dalam data. Namun, pendekatan exploratory memiliki risiko overfitting jika tidak dilakukan dengan hati-hati, karena pemilihan variabel yang berbasis data dapat menyesuaikan model terlalu erat dengan data yang ada.
Simulasi Data
library(knitr)
library(dplyr)
library(ggplot2)
library(MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
library(caret)
## Warning: package 'caret' was built under R version 4.3.3
## Loading required package: lattice
## Warning: package 'lattice' was built under R version 4.3.3
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.3
##
## Attaching package: 'DescTools'
## The following objects are masked from 'package:caret':
##
## MAE, RMSE
set.seed(123)
n = 300
x1 = rnorm(n)
x2 = rbinom(n, 1, 0.5)
x3 = rnorm(n)
lin_pred = -0.5 + 1.5 * x1 - 0.7 * 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)
## y x1 x2 x3
## 1 1 -0.56047565 0 1.4304023
## 2 1 -0.23017749 1 1.0466288
## 3 1 1.55870831 0 0.4352889
## 4 0 0.07050839 0 0.7151784
## 5 0 0.12928774 0 0.9171749
## 6 0 1.71506499 1 -2.6609228
Pemilihan Model
Model Full
model_full = glm(y ~ x1 + x2 + x3, data = df, family = binomial)
summary(model_full)
##
## Call:
## glm(formula = y ~ x1 + x2 + x3, family = binomial, data = df)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.6715 0.2091 -3.211 0.00132 **
## x1 1.4618 0.2037 7.177 7.10e-13 ***
## x2 -0.6194 0.2999 -2.065 0.03891 *
## x3 0.9034 0.1757 5.141 2.73e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 387.22 on 299 degrees of freedom
## Residual deviance: 276.53 on 296 degrees of freedom
## AIC: 284.53
##
## Number of Fisher Scoring iterations: 5
Berdasarkan hasil model regresi logistik binomial, terlihat pada intercept dan variabel \(x_1, x_2, x_3\) menunjukkan pengaruh yang signifikan terhadap variabel respon \(y\). Koefisien negatif pada \(x_1\) dan \(x_2\) serta positif pada \(x_3\) menandakan arah hubungan yang berbeda dengan \(y\), dengan semua variabel memiliki nilai p-value kecil yang menunjukkan pengaruh statistik yang kuat. Nilai residual deviance yang lebih rendah dibandingkan null deviance menunjukkan model ini cukup baik dalam menjelaskan data, didukung oleh nilai AIC yang menunjukkan kebaikan keseluruhan model setelah penyesuaian.
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)
## df AIC
## model_full 4 284.5334
## step_forward 4 284.5334
## step_backward 4 284.5334
## step_both 4 284.5334
library(pROC)
## Warning: package 'pROC' was built under R version 4.3.3
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
pred_prob = predict(step_both, type = "response")
roc_obj = roc(df$y, pred_prob)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_obj, main = "Kurva ROC", col = "red")
auc(roc_obj)
## Area under the curve: 0.8467
Berdasarkan kurva ROC yang ditamppilkan, terlihat bahwa grafik menunjukkan hubungan antara sensitivitas dan spesifisitas model, dengan kurva berwarna merah yang menunjukkan performa klasifikasi. Kurva yang naik tajam menuju sudut kiri atas menunjukkan kemampuan model yang baik dalam membedakan kelas positif dan negatif. Area di bawah kurva sebesar 0.8467, menunjukkan akurasi model yang cukup tinggi sehingga model memiliki kemampuan prediksi yang baik.
PseudoR2(step_both, which = c("CoxSnell", "Nagelkerke", "McFadden"))
## CoxSnell Nagelkerke McFadden
## 0.3085327 0.4256055 0.2858406
Pada hasil pseudo R-squared, model menunjukkan ketiga ukuran kebaikan model: CoxSnell (0.3085327), Nagelkerke (0.4256055), dan McFadden (0.2858406). Nilai CoxSnell dan Nagelkerke yang lebih tinggi menunjukkan proporsi variabilitas yang dijelaskan oleh model relatif baik, dengan Nagelkerke memberikan penyesuaian maksimum mendekati 1. Nilai McFadden, meskipun lebih rendah, tetap mengindikasikan kontribusi model yang signifikan terhadap data, menandakan model ini cukup efektif dalam menjelaskan hubungan yang diamati.
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 173 47
## 1 23 57
##
## Accuracy : 0.7667
## 95% CI : (0.7146, 0.8134)
## No Information Rate : 0.6533
## P-Value [Acc > NIR] : 1.404e-05
##
## Kappa : 0.4554
##
## Mcnemar's Test P-Value : 0.005977
##
## Sensitivity : 0.5481
## Specificity : 0.8827
## Pos Pred Value : 0.7125
## Neg Pred Value : 0.7864
## Prevalence : 0.3467
## Detection Rate : 0.1900
## Detection Prevalence : 0.2667
## Balanced Accuracy : 0.7154
##
## 'Positive' Class : 1
##
conf_matrix$byClass[c("Sensitivity", "Specificity")]
## Sensitivity Specificity
## 0.5480769 0.8826531
Berdasarkan confusion matriks, model menunjukkan akurasi yang cukup tinggi dengan nilai kappa yang menunjukkan kesepakatan di atas rata-rata, didukung oleh p-value yang tidak signifikan pada uji McNemar, menegaskan konsistensi prediksi. Sensitivitas dan spesifisitas yang baik mengindikasikan kemampuan model dalam mengenali kelas positif dan negatif, dengan nilai prediksi positif dan negatif yang seimbang.
Tujuan
Menyajikan cara membandingkan model regresi logistik menggunakan ukuran:
Deviance
AIC (Akaike Information Criterion)
Likelihood-Ratio
serta menjelaskan prinsip Parsimony dalam pemilihan model.
library(MASS)
library(broom)
## Warning: package 'broom' was built under R version 4.3.3
library(DescTools)
set.seed(123)
Simulasi Data
n <- 200
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); head(data)
## y x1 x2 x3
## 1 0 -0.56047565 1 -0.7152422
## 2 0 -0.23017749 0 -0.7526890
## 3 0 1.55870831 1 -0.9385387
## 4 0 0.07050839 1 -1.0525133
## 5 1 0.12928774 0 -0.4371595
## 6 1 1.71506499 0 0.3311792
Pembuatan Model
model1 <- glm(y ~ x1, data = data, family = binomial)
model2 <- glm(y ~ x1 + x2, data = data, family = binomial)
model3 <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)
Perbandingan AIC dan Deviance
model_comp <- data.frame(
Model = c("Model 1", "Model 2", "Model 3"),
AIC = c(AIC(model1), AIC(model2), AIC(model3)),
Deviance = c(deviance(model1), deviance(model2), deviance(model3))
)
model_comp
## Model AIC Deviance
## 1 Model 1 199.9136 195.9136
## 2 Model 2 201.7133 195.7133
## 3 Model 3 186.5407 178.5407
Berdasarkan perbandingan AIC dan Deviance, model 3 menunjukkan nilai AIC dan Deviance terendah dibandingkan model 1 dan model 2, yang menunjukkan bahwa model 3 memiliki keseluruhan kebaikan yang lebih baik dan mampu menjelaskan data dengan lebih efisien. Penurunan nilai Deviance dari model 1 ke model 3 mencerminkan peningkatan kecocokan model, sementara AIC yang lebih rendah pada model 3 menunjukkan keseimbangan yang optimal antara kompleksitas dan akurasi, sesuai degan prinsip Parsimony.
anova(model1, model2, test = "LRT")
## Analysis of Deviance Table
##
## Model 1: y ~ x1
## Model 2: y ~ x1 + x2
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 198 195.91
## 2 197 195.71 1 0.20031 0.6545
Berdasarkan output uji Likelihood Ratio Test (LRT), penambahan variabel \(x_2\) ke model tidak memberikan peningkatan signifikan terhadap model awal (p-value = 0.6545 > 0.05). Dengan demikian, \(x_2\) tidak berkontribusi signifikan dalam menjelaskan variabel respon \(y\) setelah mempertimbangkan \(x_1\).
anova(model2, model3, test = "LRT")
## Analysis of Deviance Table
##
## Model 1: y ~ x1 + x2
## Model 2: y ~ x1 + x2 + x3
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 197 195.71
## 2 196 178.54 1 17.172 3.413e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan output uji LRT, penambahan variabel \(x_3\) ke model secara signifikan meningkatkan model (p-value = 3.41e-05 < 0.001). Artinya, \(x_3\) berkontribusi signifikan dalam menjelaskan variabel respon \(y\) setelah mempertimbangkan \(x_1\) dan \(x_2\).
Model yang lebih kompleks sering kali memiliki AIC dan deviansi yang lebih kecil. Namun, model sederhana bisa lebih disukai karena mengurangi risiko overfitting. Prinsip ini menekankan pentingnya memilih model sederhana yang signifikan berdasarkan AIC, yang mencerminkan keseimbangan antara kesesuaian dan kesederhanaan.
Rumus dan Penjelasan
Rumus AIC
\[ AIC = -2(\log L - k) = -2\log L + 2k \]
Penjelasan: AIC adalah ukuran yang menggabungkan keseimbangan antara kecocokan model (melalui log-likelihood) dan kompleksitas (melalui jumlah parameter \(k\)). Semakin kecil nilai AIC, semakin baik model tersebut, meskipun AIC juga mempertimbangkan penalti untuk model yang terlalu rumit.
Rumus Deviance
\[ D = -2 [\log L(\text{model}) - \log L(\text{model saturasi})] \]
Penjelasan: Deviance mengukur seberapa jauh model saat ini dibandingkan dengan model sempurna (model saturasi). Nilai deviansi yang kecil menunjukkan 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 secara statistik dibandingkan model sederhana.
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 133 28
## 1 14 25
##
## Accuracy : 0.79
## 95% CI : (0.7269, 0.8443)
## No Information Rate : 0.735
## P-Value [Acc > NIR] : 0.04377
##
## Kappa : 0.4112
##
## Mcnemar's Test P-Value : 0.04486
##
## Sensitivity : 0.4717
## Specificity : 0.9048
## Pos Pred Value : 0.6410
## Neg Pred Value : 0.8261
## Prevalence : 0.2650
## Detection Rate : 0.1250
## Detection Prevalence : 0.1950
## Balanced Accuracy : 0.6882
##
## 'Positive' Class : 1
##
Berdasarkan confusion matrix, model menunjukkan akurasi yang cukup tinggi dengan interval kepercayaan yang sempit, menandakan konsistensi performa. Nilai kappa yang positif menunjukkan kesepakatan di atas kebetulan, didukung oleh p-value uji McNemar yang tidak signifikan, mengindikasikan konsistensi prediksi. Sensitivitas dan spesifisitas yang seimbang mencerminkan kemampuan model dalam mengenali kedua kelas dengan baik, dengan nilai prediksi positif dan negatif yang solid.
Sensitivitas dan Spesifisitas
\[ \text{Sensitivitas} = \frac{TP}{TP + FN} \]
\[ \text{Spesifisitas} = \frac{TN}{TN + FP} \]
conf_matrix$byClass[c("Sensitivity", "Specificity")]
## Sensitivity Specificity
## 0.4716981 0.9047619
Kesimpulan
Deviance yang kecil menunjukkan kecocokan model yang lebih baik
AIC yang rendah menunjukkan keseimbangan antara kecocokan dan kompleksitas
Likelihood Ratio Test mengevaluasi apakah model kompleks secara signifikan lebih baik
Tabel Klasifikasi membantu dalam menilai kinerja prediksi aktual vs prediksi model
Prinsip Parsimony mengutamakan model sederhana jika performanya mirip
Kurva ROC menggambarkan trade-off antara True Positive Rate (Sensitivitas) dan False Positive Rate (1 - Spesifisitas) untuk mengevaluasi performa model klasifikasi biner.
1. Definisi
Sumbu Y: Sensitivity = True Positive Rate = TP / (TP + FN)
Sumbu X: 1 - Specifcity = False Positive Rate = FP / (FP + TN)
Garis diagonal (dari kiri bawah ke kanan atas) menunjukkan performa acak (random guess).
Kurva yang mendekati pojok kiri atas menunjukkan performa klasifkasi yang lebih baik.
2. Cut-off dan Pergerakan Kurva
Saat cut-of menurun, model mengklasifkasikan lebih banyak pengamatan sebagai positif:
Sensitivitas naik
Spesifsitas turun
Saat cut-of naik, model menjadi lebih konservatif:
Sensitivitas turun
Spesifsitas naik
3. Kurva ROC Ideal
Kurva ideal memiliki bentuk:
Naik tajam secara vertikal hingga mencapai sensitivitas = 1
Lalu bergerak secara horizontal menuju 1 - specifcity = 1
Area under the curve (AUC) mendekati 1
4. Interpretasi Luar Area (AUC)
AUC = 0.5; menunjukkan bahwa model tidak lebih baik dari tebak acak
AUC > 0.7; menunjukkan model cukup baik
AUC > 0.9; menunjukkan model sangat baik
AUC dikenal juga sebagai concordance index, yaitu probabilitas bahwa model memberikan nilai skor probabilitas yang lebih tinggi untuk kasus positif daripada kasus negatif.
5. Kegunaan Kurva ROC
Untuk membandingkan performa beberapa model klasifkasi
Untuk memilih threshold (cut-of) optimal berdasarkan kebutuhan aplikasi (misalnya: lebih penting menghindari false negative atau false positive?)
6. Visualisasi dalam R
Kurva ROC dapat dibuat menggunakan package pROC
:
library(pROC)
set.seed(123)
# Banyak Data
n <- 150
# Pemisalan Data
x1 <- rnorm(n)
x2 <- rbinom(n, 1, 0.5)
x3 <- rnorm(n)
lin_pred <- -1 + 1.5 * x1 - 0.7 * x2 + 0.6 * x3
p <- 1 / (1 + exp(-lin_pred))
y <- rbinom(n, 1, p)
data <- data.frame(y = as.factor(y), x1, x2, x3)
model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial)
pred <- predict(model, type = "response")
roc_obj <- roc(data$y, pred)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_obj, col="blue")
auc(roc_obj)
## Area under the curve: 0.8689
Berdasarkan kurva ROC yang ditampilkan, rafik dengan warna biru menunjukkan hubungan antara sensitivitas dan spesifisitas model, dengan kurva yang naik tajam menuju sudut kiri atas, mengindikasikan performa klasifikasi yang baik. Area di bawah kurva (AUC) sebesar 0.8937 mencerminkan akurasi model yang tinggi, menunjukkan kemampuan yang sangat baik dalam membedakan kelas positif dan negatif, mendekati performa ideal.
7. Simulasi Pemilihan Threshold Optimal
Untuk memilih threshold terbaik, dapat mengevaluasi sensitivitas dan spesifisitas 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.9210526 0.5267857
## 2 0.15 0.8947368 0.6250000
## 3 0.20 0.8947368 0.7142857
## 4 0.25 0.8157895 0.7678571
## 5 0.30 0.7105263 0.8125000
## 6 0.35 0.6315789 0.8482143
## 7 0.40 0.6052632 0.8839286
## 8 0.45 0.5526316 0.9196429
## 9 0.50 0.4736842 0.9375000
## 10 0.55 0.4473684 0.9642857
## 11 0.60 0.3947368 0.9732143
## 12 0.65 0.3421053 0.9732143
## 13 0.70 0.2631579 0.9732143
## 14 0.75 0.2368421 0.9732143
## 15 0.80 0.2368421 0.9910714
## 16 0.85 0.2105263 1.0000000
## 17 0.90 0.1842105 1.0000000
Cut-off optimal dapat dipilih berdasarkan Maksimum dari Sensitivity + Specificity atau mempertimbangkan trade-off sesuai tujuan aplikasi.
Kurva Precision-Recall (PR) adalah alat evaluasi performa model klasifikasi, khususnya sangat berguna saat bekerja dengan data yang tidak seimbang.
1. Definisi
\[ \text{Precision} = \frac{TP}{TP + FP} \]
\[ \text{Recall} = \frac{TP}{TP + FN} \]
2. Interpretasi
PR Curve menunjukkan bagaimmana presisi berubah saat recall meningkat
Idealnya, diinginkan nilai presisi dan recall keduanya tinggi, tetapi biasanya ada trade-off
Model dengan performa baik memiliki PR Curve yang melengkung ke pojok kanan atas
3. Area Under PR Curve
Luas kurva (AUPRC) mendekati 1; menunjukkan bahwa model sangat baik
Baseline AUPRC = prevalensi kelas positif dalam data.
4. PR Curve vs ROC Curve
Aspek | PR Curve | ROC Cruve |
---|---|---|
Fokus | Semua kelas | Kelas positif saja |
Kuat di | Data seimbang | Data tidak seimbang |
Sumbu Y | Sensitivitas | Precision |
Sumbu X | 1 - Spesifisitas | Recall |
5. Visualisasi PR Curve di R
library(PRROC)
## Warning: package 'PRROC' was built under R version 4.3.3
## Loading required package: rlang
## Warning: package 'rlang' was built under R version 4.3.3
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)
Berdasarkan kurva PR (Precision-Recall) yang ditampilkan, grafik menunjukkan hubungan antara presisi dan recall model, dengan kurva yang menurun seiring peningkatan recall, mengindikasikan trade-off yang wajar. Area di bawah kurva (AUC) sebesar 0.676785 menunjukkan performa model yang sedang, dengan kemampuan yang cukup baik dalam menjaga keseimbangan antara presisi dan recall.
6. Catatan
PR Curve sangat informatif untuk aplikasi seperti deteksi penipuan atau diagnosis penyakit langka.
Gunakan PR Curve saat:
Kelas positif jauh lebih jarang daripada kelas negatif
Tujuan aplikasi lebih mementingkan presisi terhadap kelas minoritas
Tujuannya adalah untuk menjelaskan dan menghitung pseudo R-squared dalam regresi logistik:
\(R^2_{\text{Cox and Snell}}\)
\(R^2_{\text{McFadden}}\)
Simulasi Data
set.seed(123)
n <- 200
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); head(data)
## y x1 x2 x3
## 1 0 -0.56047565 1 -0.7152422
## 2 0 -0.23017749 0 -0.7526890
## 3 0 1.55870831 1 -0.9385387
## 4 0 0.07050839 1 -1.0525133
## 5 1 0.12928774 0 -0.4371595
## 6 1 1.71506499 0 0.3311792
Model Logistik dan Null Model
model <- glm(y ~ x1 + x2 + x3, data = data, family = binomial); model
##
## Call: glm(formula = y ~ x1 + x2 + x3, family = binomial, data = data)
##
## Coefficients:
## (Intercept) x1 x2 x3
## -1.37451 1.32300 -0.07823 0.77582
##
## Degrees of Freedom: 199 Total (i.e. Null); 196 Residual
## Null Deviance: 231.3
## Residual Deviance: 178.5 AIC: 186.5
Berdasarkan hasil model regresi logistik binomial, intersep menunjukkan efek awal yang signifikan, sementara variabel \(x_1\), \(x_2\), dan \(x_3\) memiliki kontribusi yang bervariasi terhadap respons \(y\), dengan \(x_1\) menunjukkan pengaruh positif yang kuat dan \(x_2\) serta \(x_3\) memiliki efek yang lebih kecil. Nilai residual deviance yang lebih rendah dibandingkan null deviance mengindikasikan model ini cukup baik dalam menjelaskan data, didukung oleh AIC yang menunjukkan keseimbangan yang memadai antara kecocokan dan kompleksitas.
model_null <- glm(y ~ 1, data = data, family = binomial); model_null
##
## Call: glm(formula = y ~ 1, family = binomial, data = data)
##
## Coefficients:
## (Intercept)
## -1.02
##
## Degrees of Freedom: 199 Total (i.e. Null); 199 Residual
## Null Deviance: 231.3
## Residual Deviance: 231.3 AIC: 233.3
Berdasarkan hasil model null regresi logistik binomial, intersep menunjukkan efek awal yang signifikan tanpa mempertimbangkan variabel prediktor lain. Nilai null deviance dan residual deviance yang sama mengindikasikan model ini tidak menjelaskan variabilitas data, dengan AIC yang mencerminkan keadaan baseline tanpa penyesuaian tambahan, menunjukkan keterbatasan model dalam memprediksi respons \(y\).
Likelihood dan Rumus
\[ R^2_{Cox and Snell} = 1 - \left(\frac{L_0}{L_M}\right)^{2/n} \]
\[ R^2_{McFadden} = 1 - \frac{\log L_M}{\log L_0} \]
dengan:
\(L_0\): likelihood model null (tanpa prediktor)
\(L_M\): likelihood model penuh
Perhitungan Manual R-Squared
logL0 <- logLik(model_null)
logLM <- logLik(model)
L0 <- exp(logL0)
LM <- exp(logLM)
n <- nobs(model)
cox_snell <- 1 - (L0 / LM)^(2 / n)
mcfadden <- 1 - (as.numeric(logLM) / as.numeric(logL0))
r2 <- data.frame(
R2_Cox_Snell = cox_snell,
R2_McFadden = mcfadden
)
r2
## R2_Cox_Snell R2_McFadden
## 1 0.2318271 0.2280616
Perhitungan Otomatis
Menggunakan pscl
if (!require(pscl)) install.packages("pscl"); library(pscl)
## Loading required package: pscl
## Warning: package 'pscl' was built under R version 4.3.3
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
pR2(model)
## fitting null model for pseudo-r2
## llh llhNull G2 McFadden r2ML r2CU
## -89.2703659 -115.6444116 52.7480914 0.2280616 0.2318271 0.3382377
Menggunakan DescTools
if (!require(DescTools)) install.packages("DescTools"); library(DescTools)
PseudoR2(model, which = "all")
## McFadden McFaddenAdj CoxSnell Nagelkerke AldrichNelson
## 0.2280616 0.1934728 0.2318271 0.3382377 0.2086983
## VeallZimmermann Efron McKelveyZavoina Tjur AIC
## 0.3891638 0.2580563 0.3768188 0.2583411 186.5407319
## BIC logLik logLik0 G2
## 199.7340013 -89.2703659 -115.6444116 52.7480914
Interpretasi
Nilai \(R^2\) mendekati 1; menunjukkan model memiliki kekuatan prediktif yang baik.
McFadden \(R^2\) > 0.2 sering dianggap sebagai model dengan kecocokan yang baik.
Cox & Shell \(R^2\) lebih konservatif dan tidak pernah mencapai 1 penuh.
Distribusi multinomial adalah perluasan dari distribusi binomial yang lebih dari dua kategori.
Jika \(X_1, X_2, ..., X_k\) menyatakan banyaknya kejadian dalam masing-masing dari \(k\) kategori, maka:
\[ P(X_i = x_1, \ldots, X_n = x_n) = \frac{n!}{x_1! \cdot x_2! \cdot \ldots \cdot x_n!} p_1^{x_1} p_2^{x_2} \cdot \ldots \cdot p_n^{x_n} \]
dengan \(\sum_{i=1}^k x_i = n\) dan \(\sum_{i=1}^k p_i = 1\).
Sebuah survei dilakukan terhadap 20 orang yang diminta memilih satu dari tiga fakultas favorit: Kedokteran (FK), Hukum (FH), dan Psikologi (FPsi).
Hasil survei:
Kedokteran: 8 orang
Hukum: 6 orang
Psikologi: 6 orang
Probabilitas teoretik preferensi:
\(p_{FK} = \frac{8}{20} = 0.4\)
\(p_{FH} = \frac{6}{20} = 0.3\)
\(p_{FPsi} = \frac{6}{20} = 0.3\)
Pertanyaannya adalah, berapa peluang bahwa dalam 20 orang akan ada 8 orang yang memilih Kedokteran, 6 orang memilih Hukum, dan 6 orang memilih Psikologi?
Rumus Distribusi Peluang Multinomial
\[ P(X_i = x_1, \ldots, X_n = x_n) = \frac{n!}{x_1! \cdot x_2! \cdot \ldots \cdot x_n!} p_1^{x_1} p_2^{x_2} \cdot \ldots \cdot p_n^{x_n} \]
dengan:
\(n = 20, x_1 = 8, x_2 = 6, x_3 = 6\)
\(p_{FK} = 0.4, p_{FH} = 0.3, p_{FPsi} = 0.3\)
Perhitungan Manual di R
n <- 20
x <- c(8, 6, 6)
p <- c(0.4, 0.3, 0.3)
# Komponen Koefisien
faktorial_total <- factorial(n)
faktorial_x <- prod(factorial(x))
koefisien <- faktorial_total / faktorial_x
# Hitung peluang
peluang <- koefisien * prod(p^x)
peluang
## [1] 0.0405391
Interpretasi:
Probabilitas bahwa 8 orang yang memilih Fakultas Kedokteran, 6 orang yang memilih Fakultas Hukum, dan 6 orang yang memilih Fakultas Psikologi (dengan proporsi preferensi 0.4, 0.3, dan 0.3) adalah 0.0405391. Distribusi multinomial digunakan untuk menghitung peluang dalam percobaan dalam beberapa kategori hasil. Rumus dasarnya merupakan perluasan dari distribusi binomial untuk lebih dari dua kategori.
Model ini digunakan untuk memodelkan hubungan antara satu variabel respon kategorik (>2 kategori) dan satu atau lebih variabel prediktor. Misalkan \(Y\) memiliki \(K\) kategori, dan akan dipilih referensi kategori \(K\), maka model logit untuk kategori \(j\) adalah:
\[ \log \left( \frac{P(Y = j)}{P(Y = K)} \right) = \beta_{j0} + \beta_{j1}x_1 + \cdots + \beta_{jp}x_p \]
di mana \(j = 1, 2, \ldots, K-1\).
Pendekatan ini menggunakan model regresi logistik untuk variabel respons kategorikal dengan banyak kategori. Model ini menghitung logit setiap kategori dibandingkan dengan kategori acuan yang dipilih (baseline), di mana kategori acuan jadi patokan buat semua kategori lainnya.
Persamaan logit-nya adalah:
\[ \log \left( \frac{\pi_j}{\pi_c} \right), \quad j = 1, \ldots, c-1 \]
di mana:
\(\pi_j\) adalah probabilitas respons berada di kategori \(j\),
\(\pi_c\) adalah probabilitas respons berada di kategori acuan (baseline).
Catatan Diasumsikan ada \(c - 1\) fungsi logit yang digunakan. Kategori acuan biasanya ditetapkan sebagai kategori default \(R\) kecuali disebutkan lain.
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, \ldots, c-1 \]
Contoh Kasus: 3 Kategori Respons
Misalkan respons \(Y\) punya 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 \]
Interpretasi dan Model Logit
Satu prediktor \(x\) memengaruhi logit rasio antara kategori ke-1 dan ke-3 serta antara kategori ke-2 dan ke-3. Mengenai relasi antar kategori, jika terdapat dua logit, maka:
\[ \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 \]
Model Baseline-Category Logit:
Misalkan tiga kategori respons dengan kategori ke-3 sebagai baseline.
Logit antara kategori pertama dan baseline, serta kategori kedua dan baseline, dihitung berdasarkan data.
Implementasi di R memungkinkan fungsi multinom (dari package nnet) untuk mengevaluasi baseline.
Estimasi dilakukan menggunakan metode Maximum Likelihood dengan algoritma iteratif seperti Newton-Raphson. Persamaan Log-likelihood adalah sebagai berikut:
\[ f(\theta) = \sum_{i=1}^n \log P(y_i | x_i; \theta) \]
di mana \(x_i = P(Y = y_i | x_i; \theta)\), dan \(j = 1, \ldots, J\).
Sebuah perusahaan pembelajaran ingin memahami faktor-faktor yang mempengaruhi preferensi siswa-siswi terhadap jenis metode belajar yang diberikan: Luring, Hybrid, atau Daring.
Perusahaan melakukan survei terhadap 85 siswa dan dikumpulkannya data sebagai berikut:
Study: Jenis metode belajar yang dipilih (Luring, Hybrid, Daring)
Age: Usia siswa-siswi
Department: Jurusan tempat belajar (IPA, IPS, Bahasa)
Experience: Lama pengalaman belajar dalam tahun
Tujuannya adalah untuk mengetahui bagaimana usia, jurusan, dan pengalaman sekolah memengaruhi preferensi metode belajar.
set.seed(123)
n <- 85
Department <- sample(c("IPA", "IPS", "Bahasa"), n, replace = TRUE)
Age <- round(rnorm(n, mean = 20, sd = 2))
Experience <- round(pmax(rnorm(n, mean = 10, sd = 4), 0))
# Simulasikan Study berdasarkan probabilitas berbeda per Department
Study <- sapply(Department, function(dep) {
if (dep == "IPA") {
sample(c("Luring", "Hybrid", "Daring"), size = 1, prob = c(0.6, 0.2, 0.2))
} else if (dep == "IPS") {
sample(c("Luring", "Hybrid", "Daring"), size = 1, prob = c(0.3, 0.3, 0.4))
} else {
sample(c("Luring", "Hybrid", "Daring"), size = 1, prob = c(0.4, 0.4, 0.2))
}
})
df <- data.frame(Study = factor(Study), Age, Department = factor(Department), Experience)
df$Study <- relevel(df$Study, ref = "Luring") # baseline
head(df)
## Study Age Department Experience
## 1 Hybrid 23 Bahasa 6
## 2 Daring 22 Bahasa 13
## 3 Luring 21 Bahasa 10
## 4 Luring 18 IPS 12
## 5 Hybrid 19 Bahasa 6
## 6 Daring 23 IPS 7
library(nnet)
## Warning: package 'nnet' was built under R version 4.3.3
model_mnlogit <- multinom(Study ~ Age + Department + Experience, data = df)
## # weights: 18 (10 variable)
## initial value 93.382045
## iter 10 value 78.968386
## final value 78.894339
## converged
summary(model_mnlogit)
## Call:
## multinom(formula = Study ~ Age + Department + Experience, data = df)
##
## Coefficients:
## (Intercept) Age DepartmentIPA DepartmentIPS Experience
## Daring 0.4432467 -0.09451879 -0.8093811 1.54102542 0.1027095
## Hybrid 2.0044284 -0.02322590 -1.3973250 0.09285109 -0.1543840
##
## Std. Errors:
## (Intercept) Age DepartmentIPA DepartmentIPS Experience
## Daring 3.23326 0.1570204 0.6987885 0.7300046 0.07053668
## Hybrid 3.36040 0.1634064 0.6844793 0.7464661 0.07751208
##
## Residual Deviance: 157.7887
## AIC: 177.7887
Interpretasi:
Model ini menunjukkan bahwa siswa jurusan IPS cenderung memilih metode belajar secara Daring, sementara siswa jurusan IPA cenderung menghindari Hybrid. Usia dan pengalaman sedikit menurunkan peluang memilih Hybrid, tetapi pengalaman justru sedikit menaikkan peluang memilih Daring.
z <- summary(model_mnlogit)$coefficients / summary(model_mnlogit)$standard.errors
pval <- 2 * (1 - pnorm(abs(z)))
round(pval, 4)
## (Intercept) Age DepartmentIPA DepartmentIPS Experience
## Daring 0.8910 0.5472 0.2468 0.0348 0.1454
## Hybrid 0.5509 0.8870 0.0412 0.9010 0.0464
Interpretasi:
Semua p-value memiliki nilai yang lebih dari 0.05, yang berarti tidak ada prediktor (Age, Departmenet, Experience) yang secara statistik signifikan dalam membedakan pilihan metode Daring atau Hybrid terhadap kategori referensi. Jadi, meskipun terdapat arah efek, tidak ada bukti kuat bahwa variabel tersebut berpengaruh signifikan secara statistik.
df$Predicted <- predict(model_mnlogit)
table(Predicted = df$Predicted, Actual = df$Study)
## Actual
## Predicted Luring Daring Hybrid
## Luring 22 9 8
## Daring 5 16 6
## Hybrid 6 3 10
Kesimpulan:
Model ini menunjukkan confusion matrix hasil prediksi model. Secara umum, model bisa mengklasifikasikan cukup baik untuk kategori “Luring” (22 benar dari 39), tetapi agak lemah untuk “Hybrid” (hanya 10 benar dari 24) dan “Daring” (16 benar dari 28). Hal ini menunjukkan model cenderung lebih akurat untuk metode “Luring”, tetapi sering keliru dalam membedakan antara metode “Daring” dan “Hybrid”.
Pada kasus ini, akan digunakan dataset mtcars
untuk
memodelkan jenis transmisi mobil berdasarkan horsepower dan berat mobil.
Karena jenis transmisi mobil adalah biner, maka dapat memakai
multinom()
dari packages nnet.
# Dataset
data(mtcars)
# Memastikan am dalam bentuk faktor (0 = otomatis, 1 = manual)
mtcars$am <- factor(mtcars$am, labels = c("Automatic", "Manual"))
# Model Multinomial (Walau hanya memiliki 2 kelas, tetap bisa digunakan)
model <- multinom(am ~ hp + wt, data = mtcars)
## # weights: 4 (3 variable)
## initial value 22.180710
## iter 10 value 5.153535
## iter 20 value 5.030811
## final value 5.029555
## converged
# Hasilnya
summary(model)
## Call:
## multinom(formula = am ~ hp + wt, data = mtcars)
##
## Coefficients:
## Values Std. Err.
## (Intercept) 18.86747203 7.44417193
## hp 0.03625126 0.01773155
## wt -8.08361260 3.06874953
##
## Residual Deviance: 10.05911
## AIC: 16.05911
Model ini memprediksi jenis transmisi (manual vs otomatos) berdasarkan horsepower (hp) dan berat mobil (wt). Koefisien positif untuk hp menunjukkan bahwa mobil dengan tenaga lebih besar cenderung memiliki transmisi manual. Sebaliknya, koefisien negatif untuk wt menunjukkan bahwa mobil yang lebih berat cenderung otomatis.
Interpretasi Koefisien
z <- summary(model)$coefficients / summary(model)$standard.errors
p_values <- 2 * (1 - pnorm(abs(z)))
round(p_values, 4)
## (Intercept) hp wt
## 0.0113 0.0409 0.0084
Nilai p-value menunjukkan apakah variabel prediktor berpengaruh signifikan terhadap log-odds dibandingkan baseline category. Semua nilai p-value < 0.05, artinya keduanya berpengaruh signifikan terhadap jenis transmisi. Sehingga, tenaga dan berat mobil memang berperan penting dalam membedakan jenis mobil manual dan otomatis.
Prediksi dan Visualisasi
mtcars$predicted <- predict(model, newdata = mtcars)
table(Predicted = mtcars$predicted, Actual = mtcars$am)
## Actual
## Predicted Automatic Manual
## Automatic 18 1
## Manual 1 12
Confusion Matrix ini menunjukkan performa model yang sangat baik. Dari total 32 data, hanya 2 yang salah klasifikasi. Model berhasil memprediksi 18 dari 19 mobil otomatis dan 12 dari 13 mobil manual dengan benar, menghasilkan akurasi sekitar 94%.
ggplot(mtcars, aes(x = hp, y = wt, color = predicted)) +
geom_point(size = 2) +
labs(title = "Multinomial Logistic Regression Predictions",
x = "Horsepower (hp)", y = "Weight (wt)") +
theme_minimal()
Pada visualisasi tersebut, sumbu X menunjukkan tenaga kuda (horsepower) dari kendaraan. Sementara itu, sumbu Y menunjukkan berat kendaraan. Didapatkan bahwa:
Mobil yang lebih ringan (wt rendah) dan memiliki tenaga kuda lebih kecil hingga sedang (hp rendah–sedang) cenderung diprediksi sebagai Manual.
Mobil yang lebih berat dan/atau bertenaga lebih tinggi umumnya diprediksi sebagai Automatic.
Titik-titik tersebar dengan jelas mengikuti pola tersebut, menunjukkan bahwa model cukup baik dalam memisahkan dua kelas berdasarkan dua variabel ini.
Hal ini menunjukkan bahwa kombinasi kedua variabel tersebut cukup
informatif untuk memprediksi jenis transmisi mobil pada dataset
mtcars
.
Regresi Logistik Ordinal merupakan metode statistik yang digunakan untuk menganalisis hubungan antara variabel respons berupa kategori berurutan dan sejumlah variabel prediktor, misalnya tingkat kepuasan: Rendah, Sedang, Tinggi.
Model ini berbeda dengan:
Regresi logistik biner: hanya 2 kategori
Regresi logistik multinomial: kategori > 2 tetapi tidak berurutan
Model yang digunakan adalah Cumulative Logit Model dengan asumsi proportional odds:
\[ \text{logit} \left( \frac{P(Y \leq j)}{P(Y > j)} \right) = \alpha_j + \beta x \]
di mana:
\(\alpha_j\) : intercept khusus untuk kategori ke \(j\)
\(\beta\) : koefisien regresi yang konsisten untuk semua kategori kecuali kumulatif
untuk \(c\) kategori, terdapat \((c-1)\) model logit kumulatif
Koefisien \(\beta\) menjelaskan efek \(x\) terhadap kemungkinan berada pada kategori yang lebih rendah atau sama.
Jika \(\beta > 0\): semakin besar \(x\), semakin besar peluang berada di kategori rendah.
Jika \(\beta < 0\): semakin besar \(x\), semakin besar peluang berada di kategori tinggi.
Rasio Odds dapat dihitung dengan \(OR = e^\beta\)
Contoh Data: Kesulitan Memahami Materi
Misalnya diketahui data fiktif tingkat kesulitan memahami materi (1: Rendah, 2: Sedang, 3: Tinggi) terhadap efektivitas pembelajaran:
set.seed(123)
n <- 300
efektif <- round(runif(n, 1, 10))
satisfaction <- cut(5 + 0.5*efektif + rnorm(n),
breaks = c(-Inf, 5.5, 7.5, Inf),
labels = c("Rendah", "Sedang", "Tinggi"),
ordered_result = TRUE)
df <- data.frame(satisfaction, efektif); head(df)
## satisfaction efektif
## 1 Tinggi 4
## 2 Tinggi 8
## 3 Tinggi 5
## 4 Tinggi 9
## 5 Tinggi 9
## 6 Rendah 1
model_ord <- polr(satisfaction ~ efektif, data = df, Hess = TRUE)
summary(model_ord)
## Call:
## polr(formula = satisfaction ~ efektif, data = df, Hess = TRUE)
##
## Coefficients:
## Value Std. Error t value
## efektif 0.8171 0.0827 9.88
##
## Intercepts:
## Value Std. Error t value
## Rendah|Sedang 0.6836 0.3410 2.0046
## Sedang|Tinggi 3.8531 0.4244 9.0785
##
## Residual Deviance: 358.8558
## AIC: 364.8558
Berdasarkan hasil estimasi model ordinal yang ditampilkan, koefisien
untuk variabel efektif
sebesar 0.8171 dengan nilai t
sebesar 9.88 menunjukkan adanya pengaruh signifikan terhadap variabel
satisfaction
, di mana peningkatan efektif
meningkatkan peluang kepuasan yang lebih tinggi. Nilai intercept untuk
kategori Rendah/Sedang
(0.6836) dan
Sedang/Tinggi
(3.8531) dengan nilai t masing-masing 2.046
dan 9.078 mengindikasikan ambang batas yang signifikan antara kategori
kepuasan. Nilai residual dan AIC dapat digunakan untuk mengevaluasi
model terbaik, dengan nilai yang lebih rendah menunjukkan model yang
lebih baik.
ctable <- coef(summary(model_ord)); ctable
## Value Std. Error t value
## efektif 0.8171047 0.08270251 9.880047
## Rendah|Sedang 0.6835885 0.34100944 2.004603
## Sedang|Tinggi 3.8530542 0.42441604 9.078484
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
## efektif 0.8171047 0.08270251 9.880047 0.000
## Rendah|Sedang 0.6835885 0.34100944 2.004603 0.045
## Sedang|Tinggi 3.8530542 0.42441604 9.078484 0.000
Berdasarkan hasil analisis, variabel efektif
dan
intercept Rendah/Sedang
serta Sedang/Tinggi
menunjukkan pengaruh statistik signifikan terhadap variabel
satisfaction
.
datanew <- data.frame(efektif = 5:9)
predict(model_ord, newdata = datanew, type = "probs")
## Rendah Sedang Tinggi
## 1 0.032235046 0.40990797 0.5578570
## 2 0.014499440 0.24480749 0.7406931
## 3 0.006456796 0.12746971 0.8660735
## 4 0.002862341 0.06107473 0.9360629
## 5 0.001266344 0.02802063 0.9707130
Hasil prediksi probabilitas menunjukkan bahwa untuk nilai
efektif
sebesar 5.9, peluang kategori Rendah, Sedang, dan
Tinggi berturut-turut adalah 0.01263504, 0.02802063, dan 0.9707130 pada
pukul 04:03 WIB, 12 Juni 2025. Ini mengindikasikan bahwa kategori Tinggi
memiliki probabilitas paling dominan, mencapai 97.07%, sedangkan Rendah
dan Sedang memiliki peluang sangat kecil, masing-masing 1.26%
dan 2.80%.
Model cumulative logit mengasumsikan efek prediktor sama untuk setiap cutoff. Jika tidak, pertimbangkan model non-proporsional odds seperti Generalized Ordinal Model.
Selain cumulative logit, terdapat alternatif dalam model ordinal lainnya:
Adjacent-category logit: Model ini membandingkan probabilitas setiap pasangan kategori berurutan dalam variabel respons ordinal, misalnya probabilitas berada di kategori “Rendah” versus “Sedang” atau “Sedang” versus “Tinggi”. Pendekatan ini memperlakukan setiap transisi antar kategori sebagai analisis terpisah, sehingga cocok untuk memahami perbedaan relatif antar kategori yang berdekatan.
Continuation-ratio (sequential) logit: Model ini membandingkan probabilitas suatu kategori dengan semua kategori yang lebih tinggi secara bertahap. Misalnya, probabilitas “Rendah” versus (“Sedang” dan “Tinggi”) digabungkan, lalu “Sedang” versus “Tinggi”. Metode ini berguna untuk menganalisis proses bertahap atau hierarkis dalam data ordinal.
Kesimpulan:
Regresi ordinal efektif untuk respon berurutan.
Model cumulative logit menginterpretasikan efek dalam bentuk log-odds kumulatif.
Implementasi di R dengan fungsi polr()
dari package
MASS. Jika diperlukan uji lanjut, bisa digunakan
uji devians atau likelihood ratio
test.
Model regresi logistik ordinal yang memuat asumsi Cumulative Logit Model mengandung asumsi Proportional Odds serta asumsi paralelisme (parallel lines assumption). Asumsi tersebut menyatakan bahwa koefisien regresi \((\beta)\) sama untuk setiap kategori kumulatif dari variabel respon.
Berikut merupakan bentuk umum model tersebut:
\[ \log \left( \frac{P(Y \leq j)}{P(Y > j)} \right) = \alpha_j + \beta x \]
untuk \(j = 1, ..., c - 1\)
Hanya intercept \((a_j)\) yang berbeda-beda.
Koefisien \(\beta\) tetap sama untuk semua fungsi logit kumulatif.
Visualisasi
Dalam asumsi paralelisme, kurva logit kumulatif dari tiap kategori terhadap prediktor akan memiliki kemiringan yang sama, hanya berbeda posisi (intercept).
Konsekuensi Pelanggaran Asumsi
Jika asumsi ini tidak terpenuhi:
Efek prediktor berbeda untuk setiap batas kategori
Model cumulative logit tidak valid.
Diperlukan model alternatif: Generalized Ordinal Logistic Regression dan Partial Proportional Odds Model.
Pengujian Asumsi Paralelisme
Untuk memeriksa asumsi, dapat digunakan:
Likelihood Ratio Test antara model proportional dan non-proportional
Brant Test (paket brast
di
R)
Contoh Kasus (dengan package brast
):
library(brant)
## Warning: package 'brant' was built under R version 4.3.3
model <- polr(satisfaction ~ efektif, data = df, Hess = TRUE)
brant(model)
## --------------------------------------------
## Test for X2 df probability
## --------------------------------------------
## Omnibus 0.23 1 0.63
## efektif 0.23 1 0.63
## --------------------------------------------
##
## H0: Parallel Regression Assumption holds
Karena semua nilai p-value > 0.05, maka asumsi paralelisme tersebut terpenuhi.
Analisis Data Kategorik berperan penting dalam Statistika Terapan karena berbagai fenomena nyata menghasilkan data berbentuk kategorik, seperti jenis kelamin, status pekerjaan, tingkat pendidikan, preferensi konsumen, atau diagnosis medis. Data ini biasanya dianalisis menggunakan tabel kontingensi, model log-linier, dan regresi logistik, dengan masing-masing metode yang memiliki kelebihan dan kekurangan sesuai tujuan analisis dan karakteristik data.
Tabel kontingensi merupakan tahapan awal untuk eksplorasi hubungan antar variabel kategorik. Sebagai contoh, dalam penelitian mengenai pengaruh obat terhadap serangan jantung, tabel kontingensi dapat menunjukkan jumlah pasien yang mengalami atau tidak mengalami serangan jantung berdasarkan jenis obat yang digunakan. Tabel ini membantu mengenali pola awal dan menghitung ukuran asosiasi seperti odds ratio, risk relative, atau statistik chi-square untuk menguji independensi variabel.
Namun, jika tujuannya adalah membangun model statistik yang mampu mengendalikan efek banyak variabel dan interaksinya secara bersamaan, model log-linier menjadi pilihan yang tepat. Model log-linier, sebagai bagian dari Generalized Linear Model (GLM), bekerja pada frekuensi sel dalam tabel kontingensi dengan asumsi distribusi Poisson. Berbeda dari regresi logistik, model log-linier tidak membedakan variabel dependen dan independen, melainkan memperlakukan semua variabel secara simetris. Model ini cocok untuk memahami struktur asosiasi atau independensi antar variabel, bukan untuk prediksi.
Struktur model log-linier ditentukan oleh efek utama setiap variabel dan interaksi antar variabel. Misalnya, pada tabel kontingensi tiga dimensi (seperti jenis kelamin, status merokok, dan penyakit paru), model log-linier dapat menentukan apakah interaksi dua variabel cukup menjelaskan data atau apakah interaksi tiga arah diperlukan untuk memahami hubungan asosiasi. Penyesuaian model dilakukan dengan uji rasio likelihood untuk membandingkan model sederhana dengan model yang lebih kompleks.
Sebaliknya, regresi logistik adalah metode yang umum digunakan ketika ada satu variabel kategorik yang jelas sebagai variabel dependen (misalnya, kejadian penyakit: ya/tidak) dan variabel lain sebagai prediktor, baik kategorik maupun numerik. Model ini memodelkan logit dari probabilitas kejadian (log odds) dan sangat berguna untuk menjelaskan atau memprediksi peluang suatu hasil dalam studi observasional atau eksperimental. Regresi logistik juga memiliki variasi seperti regresi logistik multinomial dan ordinal untuk outcome dengan lebih dari dua kategori.
Secara keseluruhan, tabel kontingensi bersifat deskriptif, model log-linier bersifat eksploratif untuk hubungan simetris, dan regresi logistik bersifat prediktif untuk outcome kategorik. Pemilihan metode bergantung pada apakah analisis bertujuan untuk mendeskripsikan, mengeksplorasi struktur, atau memprediksi hasil berdasarkan variabel penjelas. Kombinasi ketiga metode ini sering digunakan untuk memberikan pemahaman menyeluruh terhadap data kategorik.
Dalam analisis data kategorik, terdapat beberapa pendekatan statistik yang umum digunakan, antara lain:
Tabel Kontingensi: Menyajikan frekuensi gabungan dari dua atau lebih variabel kategorik untuk melihat hubungan awal.
Model Log-Linear: Memodelkan struktur asosiasi dalam tabel kontingensi tanpa membedakan variabel dependen dan independen.
Model Regresi Logistik: Memodelkan probabilitas kategori variabel dependen berdasarkan variabel independen.
Meskipun berlaku untuk data kategorik, namun ketiga metode ini memiliki pendekatan dan tujuan interpretasi yang berbeda.
Tabel Kontingensi
Tabel Kontingensi menyajikan jumlah frekuensi dari kombinasi kategorik antar variabel. Berikut merupakan contoh dari tabel 2x2:
contingency_table = matrix(c(20, 15, 40, 65), nrow=2,
dimnames=list(Obat=c("Panadol", "Paramex"),
Serangan=c("Ya", "Tidak")))
contingency_table
## Serangan
## Obat Ya Tidak
## Panadol 20 40
## Paramex 15 65
Tabel kontingensi bersifat deskriptif dan tidak melibatkan permodelan probabilitas.
Model Loglinear
Model Loglinear memodelkan logaritma dari ekspektasi frekuesni sel dalam tabel kontingensi. Secara matematis, memenuhi persamaan:
\[ \log(\mu_{ij}) = \lambda + \lambda^{A}_i + \lambda^{B}_j + \lambda^{AB}_{ij} \]
Interpretasi:
Cocok untuk menyelidiki asosiasi dan independensi antar variabel.
Tidak membedakan antara variabel respon dengan penjelas.
Umumnya digunakan pada tabel multi-dimensi (2 arah, 3 arah, dst).
library(MASS)
loglm(~ Obat * Serangan, data = contingency_table)
## Call:
## loglm(formula = ~Obat * Serangan, data = contingency_table)
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0 0 1
## Pearson 0 0 1
Model Regresi Logistik
\[ \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.
data_glm = data.frame(
Serangan = c(1, 0, 1, 0),
Obat = factor(c("Panadol", "Panadol", "Paramex", "Paramex")),
Freq = c(20, 15, 40, 65)
)
model_logit = glm(Serangan ~ Obat, weights = Freq, family = binomial, data = data_glm)
summary(model_logit)
##
## Call:
## glm(formula = Serangan ~ Obat, family = binomial, data = data_glm,
## weights = Freq)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.2877 0.3416 0.842 0.3996
## ObatParamex -0.7732 0.3963 -1.951 0.0511 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 191.21 on 3 degrees of freedom
## Residual deviance: 187.35 on 2 degrees of freedom
## AIC: 191.35
##
## Number of Fisher Scoring iterations: 4
Interpretasi:
Berdasarkan hasil model regresi logistik biner, terlihat bahwa
Intercept menunjukkan tidak ada efek signifikan secara statistik. Lalu,
koefisien untuk ObatParamex
mendekati signifikansi pada
ambang batas umum, menunjukkan potensi pengaruh negatif terhadap
Serangan
, meskipun belum cukup kuat. Nilai Residual
Deviance lebih rendah dari Null Deviance, yang mengindikasikan model ini
sedikit lebih baik dibandingkan model null, dengan nilai AIC (191.35)
yang menunjukkan kebaikan keseluruhan model setelah penyesuaian.
Perbandingan Ketiga Pendekatan
Aspek | Tabel Kontingensi | Model Loglinear | Regresi Logistik |
---|---|---|---|
Tujuan | Deskripsi Frekuensi | Deteksi Asosiasi | Prediksi probabilitas |
Variabel Dependen | Tidak ada | Tidak ada (simetris) | Ada (eksplisit) |
Distribusi | Tidak diasumsikan | Poisson (frekuensi sel) | Binomial (probabilitas) |
Bentuk Model | Tidak ada | GLM: log(mu) ~ efek | GLM: logit(p) ~ prediktor |
Cocok untuk | Eksplorasi awal | Tabel > 2 variabel | Studi prediktif |
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^{T}_i + \lambda^{R}_j + \lambda^{TR}_{ij} \]
Model saturated atau model penuh menyertakan seluruh efek utama dan interaksi:
Cocok sempurna terhadap data
Tidak mengasumsikan independensi antar variabel
Contoh formulasi untuk tabel 2x2:
Model saturated dapat dipasang dengan loglm
dari
package {MASS}
# 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 logm dari package {MASS}
model_saturated <- loglm(~ Obat * Serangan, data = data)
summary(model_saturated)
## Formula:
## ~Obat * Serangan
## attr(,"variables")
## list(Obat, Serangan)
## attr(,"factors")
## Obat Serangan Obat:Serangan
## Obat 1 0 1
## Serangan 0 1 1
## attr(,"term.labels")
## [1] "Obat" "Serangan" "Obat:Serangan"
## attr(,"order")
## [1] 1 1 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0 0 1
## Pearson 0 0 1
Interpretasi:
Hasil model logistik saturasi menunjukkan bahwa interaksi antara
Obat
dan Serangan
telah dimodelkan sepenuhnya
dengan formula Obat * Serangan
. Matriks desain menegaskan
bahwa model mencakup kedua variabel serta interaksinya, dengan intersep
dan respons yang terdefinisikan. Nilai statistik Likelihood Ratio dan
Pearson menunjukkan X² sebesar 0 dengan derajat kebebasan 0 dan p-value
1, yang mengindikasikan tidak ada perbedaan signifikan antara model
saturasi dan model null, menegaskan bahwa model ini sesuai dengan data
yang diberikan.
Model independen mengasumsikan bahwa tidak ada interaksi antara variabel:
\[ \log(\mu_{ij}) = \mu + \lambda^{T}_i + \lambda^{R}_j \]
Model ini menguji hipotesis bahwa variabel X dan Y saling independen.
model_indep <- loglm(~ Obat + Serangan, data = data)
summary(model_indep)
## Formula:
## ~Obat + Serangan
## attr(,"variables")
## list(Obat, Serangan)
## attr(,"factors")
## Obat Serangan
## Obat 1 0
## Serangan 0 1
## attr(,"term.labels")
## [1] "Obat" "Serangan"
## attr(,"order")
## [1] 1 1
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 2.087576 1 0.1485015
## Pearson 2.083333 1 0.1489147
Interpretasi:
Hasil model logistik independen menunjukkan bahwa Obat
dan Serangan
dimodelkan sebagai variabel utama tanpa
interaksi. Statistik Likelihood Ratio dan Pearson menunjukkan nilai X²
masing-masing 2.087576 dan 2.083333 dengan derajat kebebasan 1 dan
p-value 0.1485015 serta 0.1489147, yang menandakan tidak ada bukti
signifikan untuk menolak model null pada level 0.05, sehingga efek
tersebut secara individu tidak cukup kuat untuk memengaruhi hasil.
Odds ratio untuk tabel 2x2:
\[ OR = \frac{n_{11} n_{22}}{n_{12} n_{21}} \]
Interpretasi nilai OR:
OR = 1: Tidak ada asosiasi
OR > 1: Asosiasi positif
OR < 1: Asosiasi negatif
Dalam model saturated:
Estimasi dilakukan dengan pembatasan seperti sum-to-zero
Estimasi parameter dilakukan dengan iterative proportional fitting (IPF)
# Estimasi odds ratio dan log-odds
logOR <- log((data[1,1] * data[2,2]) / (data[1,2] * data[2,1]))
logOR
## [1] -0.4183685
Nilai log-odds ratio (logOR) yang dihitung sebear **-0.4183685 menunjukkan perbandingan logaritma odds antara dua kategori data, dengan nilai negatif mengindikasikan bahwa peluang kategori pertama lebih rendah dibandingkan kategori kedua.
Perbandingan antar model dilakukan dengan menggunakan statistik deviance (G²) atau likelihood ratio test.
anova(model_indep, model_saturated)
## LR tests for hierarchical log-linear models
##
## Model 1:
## ~Obat + Serangan
## Model 2:
## ~Obat * Serangan
##
## Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1 2.087576 1
## Model 2 0.000000 0 2.087576 1 0.1485
## Saturated 0.000000 0 0.000000 0 1.0000
Studi dari Agresti (2019) membahas hubungan antara kebahagiaan dan kepercayaan terhadap kehidupan akhirat.
data_survey <- matrix(c(32,190,
113,611,
51,326),
nrow = 3, byrow = TRUE,
dimnames = list(Kebahagiaan = c("Tidak", "Cukup", "Sangat"),
Surga = c("Tidak Percaya", "Percaya")))
ftable(data_survey)
## Surga Tidak Percaya Percaya
## Kebahagiaan
## Tidak 32 190
## Cukup 113 611
## Sangat 51 326
loglm(~ Kebahagiaan + Surga, data = data_survey)
## Call:
## loglm(formula = ~Kebahagiaan + Surga, data = data_survey)
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0.8911136 2 0.6404675
## Pearson 0.8836760 2 0.6428538
Interpretasi:
Analisis regresi logistik mengevaluasi hubungan antara kebahagiaan dan kepercayaan terhadap surga menggunakan data survei dengan mariks kontingensi 2x3. Hasil statistik menunjukkan nilai Likelihood Ratio X² sebesar 0.891136 dengan derajat kebebasan 2 dan p-value 0.6404675, serta Pearson X² sebesar 0.8836760 dengan p-value 0.6428538. Kedua p-value yang besar (> 0.05) menunjukkan tidak ada bukti signifikan bahwa kebahagiaan dan kepercayaan terhadap surga memiliki hubungan yang kuat dalam data ini.
Model log-linear 2 arah adalah model statistik yang digunakan untuk menganalisis hubungan antara dua variabel kategorikal dalam data kontingensi (tabel silang). Model ini didasarkan pada pendekatan log-linear, di mana hubungan antara frekuensi yang diamati dimodelkan menggunakan transformasi logaritmik. Dalam konteks 2 arah, model ini mempertimbangkan interaksi antara dua variabel tanpa memerlukan variabel dependen atau independen yang eksplisit, melainkan fokus pada distribusi frekuensi bersama.
Secara matematis, model log-linear 2 arah dapat ditulis sebagai:
\[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \]
dengan:
\(\mu_{ij}\) : frekuensi yang diharapkan pada sel ke-\(i,j\)
\(\lambda\) : efek konstanta
\(\lambda_i^A\) : efek utama variabel \(A\) pada level \(i\)
\(\lambda_j^B\) : efek utama variabel \(B\) pada level \(j\)
\(\lambda_{ij}^{AB}\) : efek interaksi antara \(A\) dan \(B\)
Jika \(\lambda_{ij}^{AB} = 0\), maka model menjadi model independen, artinya tidak ada interaksi antara \(A\) dan \(B\).
Sistem Persamaan Model Log-Linear
\[ Log(\mu_{11})=\lambda+\lambda_1^A+\lambda_1^B+\lambda_{11}^{AB} \]
\[ Log(\mu_{12})=\lambda+\lambda_1^A+\lambda_2^B+\lambda_{12}^{AB} \]
\[ Log(\mu_{21})=\lambda+\lambda_2^A+\lambda_1^B+\lambda_{21}^{AB} \]
\[ Log(\mu_{22})=\lambda+\lambda_2^A+\lambda_2^B+\lambda_{22}^{AB} \]
Constraint Sum-to-Zero
\[ \lambda_1^A+\lambda_2^A=0 \]
\[ \lambda_1^B+\lambda_2^B=0 \]
\[ \lambda_{11}^{AB}+\lambda_{12}^{AB}+\lambda_{21}^{AB}+\lambda_{22}^{AB}=0 \]
Rumus Estimasi Parameter dengan Sum-to-Zero Constraint
\[ \lambda_1^A=1/2[(\log\mu_{11}+\log\mu_{12})-(\log\mu_{21}+\log\mu_{22})] \]
\[ \lambda_1^B=1/2[(\log\mu_{11}+\log\mu_{12})-(\log\mu_{21}+\log\mu_{22})] \]
\[ \lambda_{12}^{AB}=1/4[\log\mu_{12}-\log\mu_{11}-\log\mu_{22}-\log\mu_{21}] \]
Diberikan data:
Sakit | Sehat | |
---|---|---|
Merokok Ya | 30 | 20 |
Merokok Tidak | 10 | 40 |
Bentuk Model Log-Linear
Model log-linear pada tabel 2x2:
\[ \log(\mu_{ij}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_{ij}^{AB} \]
dengan constraint sum-to-zero:
\[ \sum_i \lambda_i^A = 0, \quad \sum_j \lambda_j^B = 0, \quad \sum_{i,j} \lambda_{ij}^{AB} = 0 \]
Estimasi Parameter Model
Misalkan:
Observasi:
\[ \begin{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} \end{aligned} \]
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} [\log(30) + \log(20) + \log(10) + \log(40)] \\ = 3.0971 \]
\[ \lambda^A_1 = \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} (6.3969 - 5.9915) \\ = \frac{1}{2} (0.4054) = 0.2027 \\ \lambda^A_2 = -0.2027 \]
\[ \lambda^B_1 = \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) \\ = -0.4904 \\ \lambda^B_2 = +0.4904 \]
\[ \lambda^{AB}_{11} = \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} (1.7918) = 0.4479 \\ \lambda^{AB}_{12} = -0.4479 \\ \lambda^{AB}_{21} = -0.4479 \\ \lambda^{AB}_{22} = +0.4479 \]
Ringkasan parameter:
Odds Ratio dan Interval Kepercayaan
\[ \text{OR} = \frac{n_{11} \cdot n_{22}}{n_{12} \cdot n_{21}} = \frac{30 \times 40}{20 \times 10} = \frac{1200}{200} = 6 \]
Log odds ratio:
\[ \log(\text{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(\text{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:
\[ \text{Lower} = \exp(0.8968) = 2.452 \\ \text{Upper} = \exp(2.6868) = 14.68 \]
Jadi, OR = 6 (95% CI: 2.45 – 14.68)
Fitting Model Log Linear dengan R
# Data 2x2
tabel <- matrix(c(30, 20, 10, 40), nrow = 2, byrow = TRUE)
colnames(tabel) <- c("Sakit", "Sehat")
rownames(tabel) <- c("Ya", "Tidak")
tabel
## Sakit Sehat
## Ya 30 20
## Tidak 10 40
data <- as.data.frame(as.table(tabel))
colnames(data) <- c("Merokok", "Status", "Freq")
data
## Merokok Status Freq
## 1 Ya Sakit 30
## 2 Tidak Sakit 10
## 3 Ya Sehat 20
## 4 Tidak Sehat 40
# 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
Interpretasi Parameter
Nilai \(\log(6) = 1.79\) itu sama dengan efek interaksi output R.
Mehta, C. R., & Patel, N. R. (1983). A Network Algorithm for Performing Fisher’s Exact Test in r × c Contingency Tables. Journal of the American Statistical Association, 78(382), 427-434.
Howell, D. C. (2012). Statistical Methods for Psychology (8th ed.). Cengage Learning.
Agresti, A. (2013). Categorical Data Analysis. John Wiley & Sons.
Agresti, A. (2019). An Introduction to Categorical Data Analysis. Wiley.
Christensen, R. (1997). Log-Linear Models and Logistic Regression. Springer.
McCulloch, C. (2011). Generalized Linear Models. WIREs Computational Statistics.
Apsari, W. (2013). Estimasi Parameter Regresi Logistik Multinomial dengan Metode Bayes. Sci Space.
Morgan, S. (1988). Logistic Regression: Descriptions, Examples, and Comparisons. Marriage and Family.
Liou, J. (2023). Modeling Categorical Variables by Mutual Information Decomposition. Entropy.
Jing, Wei. (2020). On the correspondence of deviances and maximum-likelihood and interval estimates from log-linear to logistic regression modelling.. Royal Society Open Science.