1 Pendahuluan

Dalam kehidupan sehari-hari, kita jarang berhadapan langsung dengan data dalam bentuk angka yang rumit seperti regresi linear atau model diferensial.
Yang lebih sering kita temui justru adalah pertanyaan sederhana dengan jawaban sederhana pula:

  • Apakah pelanggan puas dengan layanan? (Ya / Tidak)
  • Apakah seseorang memilih produk A, B, atau C?
  • Apakah pasien sembuh atau tidak setelah perawatan?

Data seperti ini — data yang jawabannya berupa kategori — adalah cerminan dunia nyata yang paling murni. Karena dalam hidup, kebanyakan keputusan dan observasi tidak selalu tentang angka, tetapi tentang memilih, menilai, dan mengelompokkan.

Sayangnya, banyak orang berpikir bahwa statistik hanya cocok digunakan untuk data numerik: seperti mengukur tinggi badan, berat, pengeluaran, atau suhu.
Padahal, sebagian besar data dalam riset sosial, kesehatan, politik, bisnis, bahkan psikologi, justru berbentuk data kategorik.

Inilah mengapa belajar Analisis Data Kategorik (ADK) menjadi sebuah kebutuhan mutlak.
ADK membantu kita memahami data yang tidak bisa dihitung dengan rumus rata-rata, tidak bisa digambarkan dengan garis lurus, tapi justru menyimpan jawaban atas pertanyaan-pertanyaan penting tentang dunia.

Alan Agresti (2007) menyebutkan bahwa data kategorik sering kali menjadi dasar utama dalam pengambilan keputusan di banyak riset eksperimental maupun observasional. Mulai dari survei sosial, hasil pemilu, diagnosis medis, hingga riset pemasaran.

Annette Dobson (1983) juga menegaskan bahwa data kategorik adalah bentuk data yang umum ditemukan saat kita mempelajari hubungan antara dua atau lebih variabel, terutama ketika hasil yang diharapkan tidak berbentuk angka melainkan berupa “kelas” atau “status” — seperti hidup/mati, puas/tidak puas, atau lulus/tidak lulus.

1.1 Apa itu Analisis Data Kategorik?

Analisis Data Kategorik (ADK) adalah cabang dari ilmu statistik yang secara khusus menangani data yang disajikan dalam bentuk kategori atau kelompok, bukan angka kuantitatif seperti tinggi badan, berat, atau penghasilan.
Data jenis ini menggambarkan klasifikasi — bisa berupa pilihan, status, atau kondisi — yang tidak dapat diolah menggunakan operasi matematika biasa, karena kategori tidak memiliki nilai numerik intrinsik.

Menurut Agresti (2007), data kategorik muncul saat hasil pengamatan hanya bisa dimasukkan ke dalam kelas tertentu, seperti:
- Biner (contoh: Ya/Tidak, Sembuh/Tidak Sembuh),
- Nominal (contoh: Warna Mobil — Merah, Biru, Hitam), dan
- Ordinal (contoh: Skala Kepuasan — Tidak Puas, Cukup Puas, Sangat Puas).

Analisis terhadap data kategorik menjadi penting karena dalam banyak bidang — seperti penelitian sosial, epidemiologi, bisnis, bahkan politik — data tidak diukur dalam bentuk angka, melainkan dalam bentuk pilihan atau hasil klasifikasi.
Sebagaimana dijelaskan oleh Dobson (1983), data kategorik membutuhkan model statistik yang berbeda dari data numerik, karena hubungan antar kategori tidak bisa disederhanakan menjadi garis lurus seperti pada regresi linear. Untuk itulah digunakan teknik seperti uji Chi-Square, Odds Ratio, Regresi Logistik, dan Model Loglinear.

1.2 Fungsi Analisis Data Kategorik dalam Berbagai Aspek Kehidupan

Dalam praktik nyata, ADK memiliki berbagai fungsi penting di berbagai bidang:

  1. Kesehatan dan Kedokteran
    • Untuk mengevaluasi efektivitas pengobatan melalui data seperti “sembuh” atau “tidak sembuh”.
    • Untuk menguji hubungan faktor risiko seperti usia, merokok, dan genetika dengan hasil diagnosis penyakit.
  2. Bisnis dan Pemasaran
    • Untuk mengukur tingkat kepuasan pelanggan dari jawaban “puas” atau “tidak puas”.
    • Untuk menganalisis preferensi produk berdasarkan kategori pilihan konsumen.
  3. Ilmu Sosial dan Politik
    • Untuk menganalisis hasil survei yang berkaitan dengan pilihan politik atau opini publik.
    • Untuk menilai pengaruh status sosial, pendidikan, atau pekerjaan terhadap perilaku memilih.
  4. Psikologi dan Pendidikan
    • Untuk menilai hasil kuesioner yang berisi jawaban “setuju” atau “tidak setuju” dalam penelitian sikap dan perilaku.
    • Untuk menganalisis efektivitas program pendidikan dari data “lulus” atau “tidak lulus”.
  5. Kebijakan Publik dan Ekonomi
    • Untuk menganalisis efektivitas program pemerintah seperti bantuan sosial berdasarkan kategori penerima yang “berhasil” atau “tidak berhasil”.
    • Untuk memahami sebaran populasi berdasarkan kategori demografis seperti pekerjaan, pendidikan, atau status pernikahan.

Melalui fungsi-fungsi ini, ADK bukan hanya berperan dalam menghitung frekuensi, tetapi juga membantu para pengambil kebijakan, peneliti, dan pebisnis membuat keputusan berdasarkan data yang kuat dan valid (Dobson, 1983).

1.3 Metode dalam Analisis Data Kategorik

Dalam menganalisis data kategorik, ada beberapa metode utama yang sering digunakan, di antaranya:

  1. Tabel Kontingensi dan Uji Chi-Square
    Digunakan untuk menganalisis hubungan antar dua atau lebih variabel kategorik dalam bentuk tabel silang.
    (Agresti, 2007)

  2. Generalized Linear Models (GLM)
    Model ini mengakomodasi distribusi data non-normal seperti binomial, Poisson, dan multinomial dalam kerangka regresi.
    Cocok untuk memodelkan data kategori dalam bentuk probabilistik.
    (Dobson, 1983)

  3. Analisis Correspondence
    Digunakan untuk memvisualisasikan hubungan antara baris dan kolom dalam tabel kontingensi yang besar.
    Biasanya dipakai dalam survei sosial, pemasaran, dan riset konsumen.

  4. Decision Tree (Pohon Keputusan)
    Metode non-parametrik yang memetakan hasil kategori ke dalam struktur pohon, memudahkan visualisasi keputusan.

  5. Random Forest
    Pengembangan dari decision tree dengan metode ensemble, digunakan untuk klasifikasi data kategorik dan prediksi dengan akurasi tinggi.

1.4 Distribusi yang Digunakan dalam ADK

Dalam analisis data kategorik, beberapa distribusi penting adalah:

Binomial Distribution

Distribusi binomial digunakan ketika data mencatat jumlah “sukses” dalam sejumlah percobaan biner. Cocok dipakai untuk data seperti: ya/tidak, sukses/gagal, positif/negatif.

Distribusi binomial dapat ditulis sebagai: \[ P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}, \quad k = 0, 1, 2, ..., n \] di mana: - \(n\) adalah jumlah percobaan - \(k\) adalah jumlah sukses - \(p\) adalah probabilitas keberhasilan pada setiap percobaan - \(\binom{n}{k}\) adalah koefisien binomial (kombinasi)

Contoh Kasus:
Menentukan apakah pelanggan memutuskan membeli produk atau tidak.

Sintaks dan Simulasi R:

set.seed(123)
data_binomial <- rbinom(n = 20, size = 1, prob = 0.4)
table(data_binomial)
## data_binomial
##  0  1 
## 12  8

Distribusi Multinomial

Distribusi multinomial adalah generalisasi dari binomial, digunakan untuk menghitung probabilitas hasil dari percobaan yang memiliki lebih dari dua kategori.

\[ P(X_1 = x_1, X_2 = x_2, ..., X_k = x_k) = \frac{n!}{x_1! x_2! ... x_k!} p_1^{x_1} p_2^{x_2} ... p_k^{x_k} \] di mana: - \(n\) adalah jumlah total percobaan (misalnya jumlah total responden atau sampel), - \(x_1, x_2, ..., x_k\) adalah jumlah kejadian masing-masing kategori (misalnya jumlah orang yang memilih kategori A, B, C, dll.), - \(p_1, p_2, ..., p_k\) adalah probabilitas setiap kategori, - \(\frac{n!}{x_1! x_2! ... x_k!}\) adalah koefisien multinomial (koefisien yang menghitung jumlah cara untuk memilih kombinasi \(x_1, x_2, ..., x_k\) dari \(n\)).

Contoh Kasus: Sebuah survei memilih satu dari tiga merek minuman: A, B, atau C.

Sintaks dan Simulasi R:

set.seed(456)
library(MCMCpack)
## Warning: package 'MCMCpack' was built under R version 4.3.3
## Loading required package: coda
## Warning: package 'coda' was built under R version 4.3.3
## Loading required package: MASS
## Warning in .recacheSubclasses(def@className, def, env): undefined subclass
## "ndiMatrix" of class "replValueSp"; definition not updated
## ##
## ## Markov Chain Monte Carlo Package (MCMCpack)
## ## Copyright (C) 2003-2025 Andrew D. Martin, Kevin M. Quinn, and Jong Hee Park
## ##
## ## Support provided by the U.S. National Science Foundation
## ## (Grants SES-0350646 and SES-0350613)
## ##
data_multinom <- rmultinom(n = 1, size = 100, prob = c(0.3, 0.5, 0.2))
rownames(data_multinom) <- c("Merek A", "Merek B", "Merek C")
data_multinom
##         [,1]
## Merek A   30
## Merek B   48
## Merek C   22

Distribusi Poisson

Distribusi Poisson digunakan untuk menghitung probabilitas jumlah kejadian dalam interval waktu atau ruang tertentu. Sangat umum digunakan untuk data hitungan (count data).

\[ P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}, \quad k = 0, 1, 2, ... \] di mana: - \(\lambda\) adalah rata-rata kejadian dalam interval waktu atau ruang tertentu (laju kejadian), - \(k\) adalah jumlah kejadian yang teramati, - \(e\) adalah bilangan Euler (sekitar 2.718).

Contoh Kasus: Jumlah kecelakaan lalu lintas yang terjadi di satu kota dalam satu minggu.

Sintaks dan Simulasi R:

set.seed(789)
data_poisson <- rpois(30, lambda = 2)
table(data_poisson)
## data_poisson
##  0  1  2  3 
##  5 10 12  3

1.5 Design Sampling pada Analisis Data Kategorik

Dalam penelitian berbasis data kategorik, desain sampling atau cara pengumpulan data sangat penting untuk menentukan validitas dan metode analisis statistik yang digunakan.
Dua desain sampling yang sering dipakai, khususnya dalam studi epidemiologi dan ilmu sosial, adalah:

  • Prospective Sampling (pengamatan ke depan)
  • Retrospective Sampling (pengamatan ke belakang)

Pemahaman yang baik atas kedua konsep ini akan membantu dalam memilih model statistik yang sesuai dan menghindari bias dalam interpretasi hasil (Setia, 2016).

1.5.1 Prospective Sampling

Prospective sampling adalah metode pengumpulan data di mana peneliti memulai dari subjek yang belum mengalami outcome, lalu melakukan pengamatan ke depan dalam waktu untuk memeriksa apakah outcome tersebut terjadi.
Subjek dipantau dari kondisi awal (paparan) menuju hasil yang diteliti (Setia, 2016). Berikut adalah karakterikstik dari prospective sampling: - Arah Pengamatan: Dari paparan ke outcome (ke depan dalam waktu). - Tujuan: Menilai hubungan antara faktor risiko dengan outcome. - Kelebihan: - Data dikumpulkan real-time sehingga bias informasi lebih kecil. - Kontrol terhadap variabel pengganggu lebih baik. - Kekurangan: - Membutuhkan biaya dan waktu yang lebih besar. - Outcome memerlukan periode pengamatan yang panjang.

Jenis - jenis prospective sampling adalah sebagai berikut:  Studi Kohort

Pada studi kohort, sekelompok individu (kohort) yang memiliki status paparan tertentu diamati dalam periode waktu tertentu, untuk melihat apakah mereka mengembangkan outcome tertentu.

Contoh:
Mengikuti kelompok perokok dan bukan perokok selama 10 tahun untuk melihat kejadian kanker paru-paru di masa depan.

(Randomized Controlled Trial)

Dalam eksperimen, subjek dipilih dan dibagi secara acak ke dalam kelompok perlakuan dan kontrol, lalu diikuti hingga outcome muncul.
Jenis ini paling sering digunakan dalam penelitian klinis untuk menguji efektivitas suatu obat atau intervensi.

Contoh:
Menguji apakah obat baru dapat menurunkan tekanan darah lebih efektif dibanding placebo.

1.5.2 Retrospective Sampling

Retrospective Sampling adalah desain di mana peneliti memulai dari outcome yang sudah terjadi, kemudian menelusuri ke belakang untuk mengidentifikasi faktor atau paparan yang mungkin berkontribusi terhadap outcome tersebut. Biasanya data diambil dari catatan medis, dokumen historis, atau arsip (Setia, 2016). Berikut adalah karakterikstik dari retrospective sampling: - Arah Pengamatan: Dari outcome menuju paparan (ke belakang dalam waktu). - Keunggulan: - Lebih efisien dalam hal waktu dan biaya. - Kelemahan: - Rentan terhadap bias seleksi dan bias informasi. - Tergantung pada keakuratan data yang sudah tercatat.

Jenis - jenis prospective sampling adalah sebagai berikut:
Case-Control Sampling

Jenis paling umum dari retrospective sampling. Dalam pendekatan ini, peneliti memilih dua kelompok: satu kelompok yang memiliki kondisi atau penyakit tertentu (kasus) dan satu kelompok yang tidak (kontrol).

Contoh:
Penelitian ini ingin mengetahui apakah merokok menyebabkan kanker paru-paru. Peneliti memilih dua kelompok: satu kelompok yang sudah punya kanker paru-paru dan satu yang tidak. Lalu, peneliti memeriksa apakah kedua kelompok tersebut pernah merokok.

Cohort Retrospective Sampling

Dalam desain ini, peneliti memilih kelompok individu yang telah mengalami paparan atau faktor tertentu di masa lalu. Kemudian, mereka mengikuti hasil atau perkembangan kondisi tersebut dalam waktu yang lebih lama, meskipun data yang digunakan untuk penarikan kesimpulan adalah data historis.

Contoh:
Peneliti ingin mengetahui apakah paparan pestisida saat kecil meningkatkan risiko penyakit jantung di usia dewasa. Peneliti memilih kelompok yang terpapar pestisida waktu kecil, lalu memeriksa apakah mereka mengidap penyakit jantung saat dewasa.

1.5.3 Retrospective vs Prospective Sampling

Aspek Prospective Sampling Retrospective Sampling
Arah Pengamatan Dari paparan ke outcome (forward) Dari outcome ke paparan (backward)
Sumber Data Dikumpulkan baru oleh peneliti Diambil dari catatan atau arsip
Bias Informasi Relatif rendah Relatif tinggi
Waktu dan Biaya Lebih lama dan mahal Lebih cepat dan hemat
Contoh Umum Studi Kohort, Eksperimen Studi Kasus-Kontrol

2 Kontigensi Tabel 2x2

2.1 Definisi dan Struktur

Tabel kontingensi 2x2 adalah representasi tabular yang digunakan untuk menggambarkan hubungan antara dua variabel kategorik yang masing-masing memiliki dua kategori. Tabel ini merupakan alat penting dalam analisis data kategorik karena menyajikan distribusi frekuensi bersama dari dua variabel secara ringkas.

Menurut Agresti (2007), tabel kontingensi merangkum hubungan antar variabel kategorik dengan mengklasifikasikan frekuensi observasi ke dalam kombinasi kategori dari dua variabel tersebut. Ia menekankan bahwa pemahaman awal tentang probabilitas bersama, marginal, dan bersyarat sangat penting sebelum melakukan inferensi statistik lebih lanjut.

Sementara itu, Dobson (1983) menyatakan bahwa tabel kontingensi dapat dilihat sebagai model distribusi probabilitas bersama untuk variabel diskrit, dan menjadi dasar untuk pengembangan model log-linear serta regresi logistik.

Tabel 2x2 ini secara luas digunakan dalam epidemiologi, ilmu sosial, dan biostatistik untuk menguji apakah terdapat asosiasi atau ketergantungan antara dua peristiwa, seperti antara paparan risiko dan terjadinya penyakit.

2.1.1 Struktur Tabel Kontingensi 2x2

Y = 1 (Positif) Y = 0 (Negatif) Total
X = 1 (Ekspos) a b a + b
X = 0 (Tidak Ekspos) c d c + d
Total a + c b + d n (= a+b+c+d)

  • X (Variabel Penjelas / Eksposur)
    Merupakan variabel yang menjelaskan apakah subjek terpapar suatu perlakuan atau kondisi tertentu. Contohnya: merokok (ya/tidak), jenis kelamin (laki/perempuan), atau menerima terapi (ya/tidak).

  • Y (Variabel Respons / Outcome)
    Menunjukkan kejadian atau hasil yang diamati. Misalnya: terkena penyakit (ya/tidak), berhasilnya terapi (ya/tidak), atau pilihan perilaku (setuju/tidak setuju).

  • a: Subjek yang terpapar (X = 1) dan mengalami kejadian (Y = 1)

  • b: Terpapar tetapi tidak mengalami kejadian

  • c: Tidak terpapar tetapi mengalami kejadian

  • d: Tidak terpapar dan tidak mengalami kejadian

2.2 Peluang dalam Tabel Kontingensi 2x2

Analisis tabel kontingensi tidak bisa dilepaskan dari konsep dasar peluang. Dalam konteks tabel 2x2, kita mengenal tiga bentuk utama: peluang bersama (joint probability), peluang marginal (marginal probability), dan peluang bersyarat (conditional probability). Masing-masing memiliki peran penting dalam menggambarkan dan mengkuantifikasi hubungan antar variabel kategorik.

2.2.1 Peluang Bersama (Joint Probability)

Menurut Agresti (2007), peluang bersama menggambarkan frekuensi relatif dari kombinasi spesifik dua peristiwa — misalnya, subjek yang terpapar dan mengalami kejadian.

Peluang ini dihitung dari: \[ P(X = i, Y = j) = \frac{n_{ij}}{n} \] di mana \(n_{ij}\) adalah jumlah observasi pada sel \((i,j)\), dan \(n\) adalah total observasi.

2.2.2 Peluang Marginal (Marginal Probability)

Seperti dijelaskan oleh Dobson (1983),peluang marginal menggambarkan proporsi dari satu variabel tanpa mempertimbangkan status variabel lain.

Untuk menghitungnya: - Peluang marginal dari variabel X: \[ P(X = 1) = \frac{a + b}{n} \] - Peluang marginal dari variabel Y: \[P(Y = 1) = \frac{a + c}{n}\]

2.2.3 Peluang Bersyarat (Conditional Probability)

Agresti (2007) menyebutkan bahwa inti dari analisis tabel kontingensi — yaitu melihat bagaimana peluang suatu kejadian berubah jika diketahui nilai variabel lainnya.

Beberapa bentuk umum: - Peluang mengalami kejadian Y = 1 di antara mereka yang terpapar: \[P(Y = 1 \mid X = 1) = \frac{a}{a + b}\] - Peluang mengalami kejadian Y = 1 di antara yang tidak terpapar: \[P(Y = 1 \mid X = 0) = \frac{c}{c + d}\] - Peluang seseorang termasuk kelompok terpapar, dengan syarat mengalami kejadian: \[P(X = 1 \mid Y = 1) = \frac{a}{a + c}\]

Peluang bersyarat ini sangat penting karena secara langsung mencerminkan adanya atau tidak adanya asosiasi antara variabel penjelas (X) dan variabel respons (Y).

2.3 Ukuran Asosiasi

Ukuran asosiasi dalam tabel kontingensi 2x2 berfungsi untuk menggambarkan kekuatan dan arah hubungan antara dua variabel kategorik. Agresti (2007) menekankan bahwa dalam banyak kasus, ukuran asosiasi menyederhanakan interpretasi hubungan kondisional antara dua variabel kategorik dalam bentuk angka tunggal yang mudah dibandingkan lintas kelompok atau studi​:contentReferenceoaicite:0.

2.3.1 Difference in Proportions (Δ)

Ukuran ini mengukur selisih langsung antara dua probabilitas kondisional. Rumus matematisnya adalah:

\[\Delta = \frac{a}{a + b} - \frac{c}{c + d}\]

Menurut Agresti (2007), selisih proporsi sangat bermanfaat dalam konteks eksperimen terkontrol karena menggambarkan efek absolut dari perlakuan atau paparan. Misalnya, dalam studi klinis, nilai Δ yang positif menunjukkan penurunan risiko di kelompok intervensi​:contentReferenceoaicite:1. Selisih ini dapat berkisar dari -1 hingga +1, dan Δ = 0 berarti tidak ada perbedaan proporsi, yang menunjukkan tidak adanya asosiasi.

2.3.2 Relative Risk (RR)

Relative Risk (RR) membandingkan peluang kejadian (misalnya, penyakit atau hasil tertentu) antara dua kelompok, yaitu:

\[RR = \frac{P(Y = 1 \mid X = 1)}{P(Y = 1 \mid X = 0)} = \frac{a / (a + b)}{c / (c + d)}\]

Agresti (2007) menyebut bahwa RR memberikan pengukuran rasio proporsi, yang lebih bermakna daripada selisih proporsi ketika keduanya mendekati nol atau satu, karena rasio menangkap skala perbandingan efek antar kelompok​:contentReferenceoaicite:2.

Dobson (1983) juga menyatakan bahwa RR bersifat sangat intuitif, terutama dalam studi kohort, namun tidak cocok untuk studi kasus-kontrol karena dalam desain seperti itu, probabilitas marginal dari hasil tidak dapat diestimasi dengan akurat​:contentReferenceoaicite:3.

2.3.3 Odds Ratio (OR)

Odds Ratio membandingkan odds (bukan probabilitas langsung) dari dua kelompok:

\[OR = \frac{a / b}{c / d} = \frac{ad}{bc}\]

Agresti (2007) menyebutkan bahwa OR adalah ukuran asosiasi paling umum digunakan dalam studi kasus-kontrol dan juga menjadi parameter utama dalam regresi logistik. Ia menekankan keunggulan OR karena simetris, tidak berubah jika kita menukar baris/kolom, serta robust terhadap skema sampling, menjadikannya alat statistik yang andal di berbagai desain penelitian.

2.4 Contoh Kasus Peluang dan Ukuran Asosiasi

2.4.1 Kasus

Data ini berasal dari catatan polisi Kota Chicago, diambil 299 kasus dari Bulan Februari 2025 yang merekam jumlah pelaku kejahatan berdasarkan dua faktor utama:

  • Jenis Kejahatan
    • Violent: Kejahatan berat seperti pembunuhan, penyerangan bersenjata, pemerkosaan.
    • Non-Violent: Kejahatan ringan seperti pencurian ringan, pelanggaran lalu lintas, kepemilikan narkoba dalam jumlah kecil.
  • Ras Pelaku
    • White: Individu berkulit putih
    • Non-White: Termasuk African-American, Hispanic, Asian, dan kelompok etnis minoritas lainnya.

Kelompok minoritas (Non-White) memiliki kemungkinan lebih besar untuk melakukan kejahatan violent, karena tekanan sosial yang lebih tinggi — termasuk ketimpangan ekonomi, diskriminasi struktural, dan keterbatasan akses terhadap pendidikan dan pekerjaan formal.

Data disajikan dalam tabel kontingensi 2x2 sebagai berikut:

NON-WHITE WHITE Total
NON-VIOLENT (Y = 0) 139 63 202
VIOLENT (Y = 1) 56 41 97
Total 195 104 299
# Matriks Frekuensi
data_matrix <- matrix(c(56, 41, 139, 63),
                      nrow = 2,
                      byrow = TRUE,
                      dimnames = list(
                        "Kejahatan" = c("VIOLENT", "NON-VIOLENT"),
                        "Ras" = c("NON-WHITE", "WHITE")
                      ))

# Tampilkan tabel
data_matrix
##              Ras
## Kejahatan     NON-WHITE WHITE
##   VIOLENT            56    41
##   NON-VIOLENT       139    63

2.4.2 Peluang

Peluang Bersama

Peluang bersama (\(P(X = i, Y = j)\)) dihitung dengan:

\[P(X = i, Y = j) = \frac{n_{ij}}{n}\]

  • \(P(\text{Violent}, \text{Non-White}) = 56 / 299 ≈ 0.1873\)
  • \(P(\text{Violent}, \text{White}) = 41 / 299 ≈ 0.1371\)
  • \(P(\text{Non-Violent}, \text{Non-White}) = 139 / 299 ≈ 0.4649\)
  • \(P(\text{Non-Violent}, \text{White}) = 63 / 299 ≈ 0.2107\)

Peluang Marginal

Peluang marginal diperoleh dengan menjumlahkan peluang bersama per baris/kolom.

  • \(P(X = \text{Non-White}) = \frac{195}{299} ≈ 0.6522\)
  • \(P(X = \text{White}) = \frac{104}{299} ≈ 0.3478\)
  • \(P(Y = \text{Violent}) = \frac{97}{299} ≈ 0.3244\)
  • \(P(Y = \text{Non-Violent}) = \frac{202}{299} ≈ 0.6756\)

Peluang Bersyarat

Berdasarkan definisi Agresti (2007), peluang bersyarat menjelaskan probabilitas kejadian Y tertentu dengan asumsi X diketahui.

\[P(Y = 1 \mid X = \text{Non-White}) = \frac{56}{195} \approx 0.2872\] \[P(Y = 1 \mid X = \text{White}) = \frac{41}{104} \approx 0.3942\]

Synthax R

# Total observasi
n <- sum(data_matrix)

# Peluang bersama
joint_prob <- data_matrix / n
joint_prob
##              Ras
## Kejahatan     NON-WHITE     WHITE
##   VIOLENT     0.1872910 0.1371237
##   NON-VIOLENT 0.4648829 0.2107023
# Peluang marginal
marginal_kej <- rowSums(data_matrix) / n
marginal_race <- colSums(data_matrix) / n

# Tampilkan peluang marginal
marginal_kej   # Peluang marginal berdasarkan jenis kejahatan
##     VIOLENT NON-VIOLENT 
##   0.3244147   0.6755853
marginal_race  # Peluang marginal berdasarkan ras
## NON-WHITE     WHITE 
## 0.6521739 0.3478261
# Peluang bersyarat P(Y = Violent | Ras)
P_violent_given_nonwhite <- data_matrix["VIOLENT", "NON-WHITE"] / sum(data_matrix[ , "NON-WHITE"])
P_violent_given_white    <- data_matrix["VIOLENT", "WHITE"] / sum(data_matrix[ , "WHITE"])

# Tampilkan peluang bersyarat
c("P(Violent | Non-White)" = P_violent_given_nonwhite,
  "P(Violent | White)" = P_violent_given_white)
## P(Violent | Non-White)     P(Violent | White) 
##              0.2871795              0.3942308

2.4.3 Ukuran Asosiasi

Perbedaan Proporsi (Δ)

\[\Delta = P(Y = 1 \mid X = \text{White}) - P(Y = 1 \mid X = \text{Non-White}) = 0.3942 - 0.2872 = 0.1070\]

Δ positif berarti bahwa proporsi pelaku kejahatan berat lebih tinggi di kelompok White, berlawanan dari hipotesis sosial yang umum.

Relative Risk (RR)

\[RR = \frac{P(Y = 1 \mid X = \text{White})}{P(Y = 1 \mid X = \text{Non-White})} = \frac{0.3942}{0.2872} ≈ 1.3729\]

Interpretasi menurut Dobson (1983): risiko melakukan kejahatan violent 1.37 kali lebih tinggi pada kelompok White dibanding.

Odds Ratio (OR)

\[OR = \frac{56 \times 63}{139 \times 41} = \frac{3528}{5699} ≈ 0.6191\]

OR < 1 menunjukkan bahwa odds melakukan kejahatan violent lebih rendah pada kelompok Non-White dibanding White.
Menurut Agresti (2007), OR merupakan ukuran yang stabil dan sering digunakan dalam desain observasional seperti.

Synthax R

a <- data_matrix["VIOLENT", "NON-WHITE"]
b <- data_matrix["NON-VIOLENT", "NON-WHITE"]
c <- data_matrix["VIOLENT", "WHITE"]
d <- data_matrix["NON-VIOLENT", "WHITE"]

# Selisih proporsi
delta <- (c / (c + d)) - (a / (a + b))

# Relative Risk
rr <- (c / (c + d)) / (a / (a + b))

# Odds Ratio
or <- (a * d) / (b * c)


list(
  "Δ (Selisih Proporsi)" = delta,
  "Relative Risk" = rr,
  "Odds Ratio" = or
)
## $`Δ (Selisih Proporsi)`
## [1] 0.1070513
## 
## $`Relative Risk`
## [1] 1.372768
## 
## $`Odds Ratio`
## [1] 0.619056

2.4.4 Kesimpulan

Berdasarkan hasil perhitungan peluang bersyarat dan ukuran asosiasi dari data tabel kontingensi kriminalitas di Chicago, didapatkan hasil sebagai berikut:

  • \(P(\text{Violent} \mid \text{Non-White}) \approx 0.287\)
  • \(P(\text{Violent} \mid \text{White}) \approx 0.394\)

Selisih proporsi (Δ) dihitung sebesar:

\[\Delta = P(\text{Violent} \mid \text{White}) - P(\text{Violent} \mid \text{Non-White}) \approx 0.394 - 0.287 = 0.107\]

Dengan demikian, kemungkinan melakukan kejahatan violent justru lebih tinggi pada kelompok White dibandingkan Non-White.

Ukuran asosiasi lainnya menunjukkan:

  • Relative Risk (RR) ≈ 0.728
    Artinya, risiko melakukan kejahatan violent pada Non-White lebih kecil daripada White. Ini menunjukkan arah asosiasi negatif terhadap hipotesis awal.

  • Odds Ratio (OR) ≈ 0.62
    Odds kejadian violent untuk Non-White lebih rendah dibandingkan White. Karena interval kepercayaan 95% untuk OR tidak mencakup nilai 1, maka perbedaan ini berpotensi signifikan secara statistik.

Hipotesis sosial awal yang menyatakan bahwa kelompok minoritas (Non-White) lebih mungkin melakukan kejahatan violent tidak didukung oleh data ini. Justru, dalam sampel yang dianalisis, pelaku dari kelompok White memiliki proporsi dan odds lebih tinggi untuk kejahatan violent.

Interpretasi ini tentu masih bersifat deskriptif dan terbatas pada data yang tersedia. Untuk menarik kesimpulan generalisasi yang lebih luas, perlu dilakukan analisis inferensial lanjutan serta mempertimbangkan faktor-faktor kontrol lainnya seperti usia, lokasi, dan latar belakang ekonomi pelaku.

2.5 Uji Inferensi Tabel Kontigensi 2X2

Uji inferensi dalam tabel kontingensi 2x2 digunakan untuk mengetahui apakah dua variabel kategorik memiliki hubungan yang signifikan secara statistik, atau apakah asosiasi yang tampak di data hanyalah hasil kebetulan dari proses pengambilan sampel. Inferensi dilakukan melalui pengujian hipotesis dengan pendekatan asimtotik atau eksak, tergantung pada besar sampel dan distribusi frekuensi antar sel.

Pendekatan ini berangkat dari struktur dasar probabilitas: peluang bersama (joint probability), peluang marginal, dan peluang bersyarat, yang kemudian diuji melalui uji proporsi, uji asosiasi, dan uji independensi.

2.5.1 Uji Proporsi Dua Sampel

Uji proporsi digunakan untuk membandingkan proporsi kejadian antara dua kelompok berbeda, misalnya kelompok yang menerima perlakuan dan kelompok kontrol.

Hipotesis:

  • H₀: \(p_1 = p_2\) (proporsi kejadian di dua kelompok sama)
  • H₁: \(p_1 \ne p_2\) (terdapat perbedaan proporsi kejadian)

Statistik Uji:

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

dengan: - \(\hat{p}_1 = \frac{x_1}{n_1}\) - \(\hat{p}_2 = \frac{x_2}{n_2}\) - \(\hat{p} = \frac{x_1 + x_2}{n_1 + n_2}\) adalah proporsi gabungan

Uji ini bersifat asimtotik dan cocok digunakan bila ukuran sampel cukup besar.

2.5.2 Uji Asosiasi

Uji asosiasi mengevaluasi apakah hubungan antara dua variabel dapat dijelaskan melalui ukuran asosiasi seperti risk difference (RD), relative risk (RR), atau odds ratio (OR).

Hipotesis Umum:

  • H₀: tidak ada perbedaan risiko atau odds antar kelompok
  • H₁: terdapat perbedaan signifikan antara kelompok

a. Risk Difference (RD):

\[RD = \frac{a}{a + b} - \frac{c}{c + d}\]

b. Relative Risk (RR):

\[RR = \frac{a / (a + b)}{c / (c + d)}\]

c. Odds Ratio (OR):

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

Uji Signifikansi (Z):

Untuk RR dan OR, transformasi logaritmik digunakan:

\[Z = \frac{\log(RR)}{SE_{\log RR}} \quad \text{atau} \quad Z = \frac{\log(OR)}{SE_{\log OR}}\]

Dengan:

\[SE_{\log RR} = \sqrt{\frac{1}{a} - \frac{1}{a + b} + \frac{1}{c} - \frac{1}{c + d}}\]

\[SE_{\log OR} = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}}\]


2.5.3 Uji Independensi

a. Uji Chi-Square

Uji ini digunakan untuk menilai apakah dua variabel kategorik bersifat independen secara statistik.

Hipotesis:

  • H₀: Variabel X dan Y saling independen
  • H₁: Variabel X dan Y tidak independen (terdapat asosiasi)

Statistik Chi-Square:

\[\chi^2 = \sum_{i,j} \frac{(O_{ij} - E_{ij})^2}{E_{ij}}\]

dengan:

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

Jika nilai \(\chi^2\) melebihi nilai kritis pada derajat kebebasan 1 (untuk tabel 2x2), maka H₀ ditolak.

b. Uji Exact-Fisher

Uji Fisher digunakan jika asumsi distribusi normal atau chi-square tidak dapat terpenuhi (misalnya, ketika ada sel dengan frekuensi < 5).

Hipotesis:

  • H₀: Variabel X dan Y saling independen
  • H₁: Variabel X dan Y tidak independen

Rumus probabilitas Fisher:

\[P = \frac{\binom{a + b}{a} \cdot \binom{c + d}{c}}{\binom{n}{a + c}}\]

Nilai P diperoleh dengan menjumlahkan semua probabilitas tabel-tabel yang sama atau lebih ekstrem dibanding tabel observasi, dengan total marjinal tetap.

c. Uji Likelihood Ratio

Uji Likelihood Ratio (LRT) merupakan pendekatan alternatif terhadap uji chi-square untuk menguji apakah terdapat asosiasi yang signifikan antara dua variabel kategorik. Uji ini didasarkan pada perbandingan fungsi likelihood antara dua model: model nol (tanpa asosiasi) dan model alternatif (dengan asosiasi).

Hipotesis:

  • H₀: Variabel X dan Y independen
  • H₁: Variabel X dan Y tidak independen

Statistik Uji:

\[G^2 = 2 \sum_{i,j} O_{ij} \cdot \log\left( \frac{O_{ij}}{E_{ij}} \right)\]

dengan: - \(O_{ij}\): frekuensi observasi pada sel ke-\(i,j\)
- \(E_{ij}\): frekuensi harapan jika X dan Y independen, yaitu
\[ E_{ij} = \frac{(\text{jumlah baris}_i)(\text{jumlah kolom}_j)}{n}\]

Apabila \(O_{ij} = 0\), maka kontribusi sel tersebut dianggap nol dalam penjumlahan.

Statistik \(G^2\) mengikuti distribusi chi-square dengan derajat bebas:

\[df = (r - 1)(c - 1)\]

Untuk tabel kontingensi 2x2, \(df = 1\). Nilai \(G^2\) kemudian dibandingkan dengan nilai kritis dari distribusi \(\chi^2\) atau digunakan untuk memperoleh p-value.

Uji LRT cocok diterapkan terutama dalam konteks model log-linear atau ketika pendekatan likelihood diperlukan.

d. Uji Partisi Chi-Square

Uji Partisi Chi-Square merupakan teknik yang digunakan untuk menguraikan nilai statistik chi-square total ke dalam beberapa komponen berdasarkan struktur data. Tujuannya adalah untuk mengetahui kontribusi masing-masing sumber variasi, baik antar baris, antar kolom, atau antar kelompok spesifik, terhadap nilai chi-square keseluruhan.

Uji ini sangat berguna ketika tabel kontingensi memiliki struktur hierarkis atau kategorinya dapat dikelompokkan, sehingga memungkinkan analisis yang lebih terfokus pada subbagian tabel.

Hipotesis:

  • H₀: Tidak terdapat perbedaan proporsi antar subkelompok atau partisi tertentu
  • H₁: Terdapat perbedaan proporsi signifikan antar partisi yang diuji

Statistik Uji:

Untuk setiap partisi atau sub-tabel:

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

dan totalnya:

\[\chi^2_{\text{total}} = \chi^2_{(1)} + \chi^2_{(2)} + \dots + \chi^2_{(k)}\]

Masing-masing \(\chi^2_{(k)}\) dihitung dari partisi yang berbeda dan dibandingkan dengan nilai kritis chi-square sesuai derajat bebas partisi tersebut.

Apabila salah satu komponen signifikan, maka dapat disimpulkan bahwa partisi tersebut berkontribusi terhadap asosiasi secara keseluruhan.

Uji ini sering digunakan dalam eksplorasi lanjutan setelah uji chi-square utama, atau sebagai bagian dari strategi diagnosis model dalam analisis tabulasi silang. ## 2.6. Analisis Residual dalam Tabel Kontingensi

2.5.4 Definisi

Residual dalam tabel kontingensi adalah selisih antara jumlah observasi dan jumlah harapan dari suatu sel:

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

Analisis residual digunakan untuk mengevaluasi sel mana yang menyumbang ketidaksesuaian terbesar terhadap model independensi.

2.5.5 Jenis Residual

Pearson Residual:

\[r_{ij}^{(P)} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}}\]

Standardized Residual:

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

Jenis ini digunakan untuk analisis yang melibatkan efek marjinal atau dalam model log-linear.

2.5.6 Deteksi Outlier

Nilai residual secara absolut yang besar mengindikasikan bahwa suatu sel menyumbang besar terhadap asosiasi. Sebagai panduan:

  • Jika \(|r| > 2\), maka sel dianggap menyimpang signifikan
  • Jika \(|r| > 3\), maka sel dapat dikategorikan sebagai outlier ekstrem

Analisis residual memberikan informasi mendalam mengenai pola hubungan antar kategori yang tidak tampak secara langsung dari nilai p atau ukuran asosiasi global.

2.6 Contoh Kasus Inferensi dan Analisis Residual

2.6.1 Kasus

Tabel kontingensi berikut menunjukkan data jumlah pelaku kejahatan di Kota Chicago berdasarkan jenis kejahatan dan ras dari Data Portal Chicago:

NON-WHITE WHITE Total
NON-VIOLENT 139 63 202
VIOLENT 56 41 97
Total 195 104 299

2.6.2 Uji Proporsi Dua Sampel

Hipotesis:

  • H₀: \(p_1 = p_2\) (proporsi kejadian violent sama antara Non-White dan White)
  • H₁: \(p_1 \ne p_2\)

\[\hat{p}_1 = \frac{56}{195} \approx 0.2872,\quad \hat{p}_2 = \frac{41}{104} \approx 0.3942\] \[\hat{p} = \frac{56 + 41}{195 + 104} = \frac{97}{299} \approx 0.3244\] \[Z = \frac{0.2872 - 0.3942}{\sqrt{0.3244(1 - 0.3244)(\frac{1}{195} + \frac{1}{104})}} \approx -1.88\]

Kesimpulan: Nilai Z ≈ -1.88 menunjukkan tidak ada perbedaan signifikan. Hipotesis nol diterima pada α = 0.05.

2.6.3 Uji Asosiasi

Risk Difference \[RD = 0.2872 - 0.3942 = -0.1070\]

Relative Risk \[RR = \frac{0.2872}{0.3942} \approx 0.7287\]

Odds Ratio \[OR = \frac{56 \cdot 63}{139 \cdot 41} = \frac{3536}{5699} \approx 0.6205\]

Interpretasi:
OR < 1 dan RR < 1 menunjukkan risiko kejadian violent justru lebih tinggi pada White dibanding Non-White.

2.6.4 Uji Independensi

a. Uji Chi-Square

Hipotesis: - H₀: Tidak ada asosiasi antara jenis kejahatan dan ras - H₁: Ada asosiasi antara jenis kejahatan dan ras

\[E_{11} = \frac{195 \cdot 97}{299} \approx 63.26,\quad E_{12} = \frac{104 \cdot 97}{299} \approx 33.74\] \[E_{21} = \frac{195 \cdot 202}{299} \approx 131.74,\quad E_{22} = \frac{104 \cdot 202}{299} \approx 70.26\] \[\chi^2 = \sum \frac{(O - E)^2}{E} = \frac{(56 - 63.23)^2}{63.23} + \dots \approx 3.5465\]

Kesimpulan:
Dengan df = 1, nilai kritis \(\chi^2_{0.05, 1} \approx 3.84\). Karena 3.5465 > 3.84, maka H₀ diterima. Tidak Ada asosiasi signifikan.

b. Uji Fisher’s Exact Test

Hipotesis: - H₀: Ras dan jenis kejahatan independen - H₁: Tidak independen

\[P = \frac{\binom{202}{139} \binom{97}{56}}{\binom{299}{195}} \approx 0.06962\]

Kesimpulan:
p-value ≈ 0.06962 > 0.05, maka H₀ diterima. Tidak terdapat asosiasi signifikan antara ras dan jenis kejahatan.

c. Uji Likelihood Ratio (LRT)

Hipotesis: - H₀: Ras dan jenis kejahatan independen - H₁: Tidak independen

\[G^2 = 2 \sum O \cdot \log \left( \frac{O}{E} \right)\] \[G^2 \approx 2(56 \cdot \log(56 / 63.23) + 41 \cdot \log(41 / 33.77) + \dots) \approx 3.499\]

Kesimpulan: Uji Likelihood Ratio menghasilkan G^2 ≈ 3.499, signifikan untuk df = 1

2.6.5 Synthax R Inferensi

## 4. Pengujian Inferensial pada Data Kriminalitas Chicago (Syntax R)

# Data tabel kontingensi
data_chicago <- matrix(c(56, 41, 139, 63), nrow = 2, byrow = TRUE)
colnames(data_chicago) <- c("NON-WHITE", "WHITE")
rownames(data_chicago) <- c("VIOLENT", "NON-VIOLENT")

data_chicago
##             NON-WHITE WHITE
## VIOLENT            56    41
## NON-VIOLENT       139    63
### 4.1 Uji Proporsi Dua Sampel

x1 <- 56; n1 <- 195
x2 <- 41; n2 <- 104

p1 <- x1 / n1
p2 <- x2 / n2
p_pool <- (x1 + x2) / (n1 + n2)

z <- (p1 - p2) / sqrt(p_pool * (1 - p_pool) * (1/n1 + 1/n2))
z
## [1] -1.883215
### 4.2 Ukuran Asosiasi

# Risk Difference
RD <- p1 - p2

# Relative Risk
RR <- p1 / p2
SE_logRR <- sqrt(1/x1 - 1/n1 + 1/x2 - 1/n2)
CI_logRR <- log(RR) + c(-1.96, 1.96) * SE_logRR
CI_RR <- exp(CI_logRR)

# Odds Ratio
a <- 56; b <- 139; c <- 41; d <- 63
OR <- (a * d) / (b * c)
SE_logOR <- sqrt(1/a + 1/b + 1/c + 1/d)
CI_logOR <- log(OR) + c(-1.96, 1.96) * SE_logOR
CI_OR <- exp(CI_logOR)

list(RD = RD, RR = RR, CI_RR = CI_RR, OR = OR, CI_OR = CI_OR)
## $RD
## [1] -0.1070513
## 
## $RR
## [1] 0.7284553
## 
## $CI_RR
## [1] 0.5263017 1.0082565
## 
## $OR
## [1] 0.619056
## 
## $CI_OR
## [1] 0.3751342 1.0215819
### 4.3 Uji Chi-Square

chisq.test(data_chicago, correct = FALSE)
## 
##  Pearson's Chi-squared test
## 
## data:  data_chicago
## X-squared = 3.5465, df = 1, p-value = 0.05967
### 4.4 Uji Fisher Exact

fisher.test(data_chicago)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  data_chicago
## p-value = 0.06962
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.3645025 1.0564405
## sample estimates:
## odds ratio 
##  0.6200584
### 4.5 Uji Likelihood Ratio (LRT)

# Frekuensi observasi
obs <- as.vector(data_chicago)

# Frekuensi harapan
row_margins <- rowSums(data_chicago)
col_margins <- colSums(data_chicago)
n <- sum(data_chicago)
expected <- as.vector(outer(row_margins, col_margins)) / n

# Likelihood Ratio Statistic
G2 <- 2 * sum(ifelse(obs == 0, 0, obs * log(obs / expected)))
G2
## [1] 3.49907

2.6.6 Kesimpulan Uji Inferensi

Berdasarkan hasil pengujian: - Uji proporsi menghasilkan Z ≈ -1.883215, yang tidak signifikan pada alpha 0.05 - Risk Difference negatif (-0.107) menunjukkan bahwa kelompok White lebih tinggi dalam proporsi pelaku violent - Relative Risk (RR ≈ 0.728) dan Odds Ratio (OR ≈ 0.62) menunjukkan bahwa Non-White secara relatif memiliki risiko dan odds lebih kecil untuk melakukan kejahatan violent - Uji Chi-Square menghasilkan p > 0.05, hipotesis independensi ditolak - Uji Fisher’s Exact juga tidak signifikan (p ≈ 0.06962) - Uji Likelihood Ratio menghasilkan G^2 ≈ 3.49907, tidak signifikan untuk df = 1

Maka dapat disimpulkan bahwa: Tidak terdapat asosiasi yang signifikan antara ras dan jenis kejahatan, namun tidak sesuai dengan asumsi umum. Data ini menunjukkan bahwa kelompok White justru memiliki proporsi dan odds yang lebih tinggi dalam melakukan kejahatan violent dibandingkan kelompok Non-White.

2.6.7 Analisis Residual

Data tabel kriminalitas Chicago:

NON-WHITE WHITE Total
VIOLENT 56 41 97
NON-VIOLENT 139 63 202
Total 195 104 299

Frekuensi harapan dihitung dengan:

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

\[\begin{aligned} E_{11} &= \frac{97 \cdot 195}{299} \approx 63.23 \\ E_{12} &= \frac{97 \cdot 104}{299} \approx 33.77 \\ E_{21} &= \frac{202 \cdot 195}{299} \approx 131.77 \\ E_{22} &= \frac{202 \cdot 104}{299} \approx 70.23 \end{aligned}\]

Rumus Pearson residual:

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

Perhitungan residual tiap sel:

\[r_{11} = \frac{56 - 63.23}{\sqrt{63.23}} \approx \frac{-7.23}{7.95} \approx -0.91\]

\[r_{12} = \frac{41 - 33.77}{\sqrt{33.77}} \approx \frac{7.23}{5.81} \approx 1.24\]

\[r_{21} = \frac{139 - 131.77}{\sqrt{131.77}} \approx \frac{7.23}{11.48} \approx 0.63\]

\[r_{22} = \frac{63 - 70.23}{\sqrt{70.23}} \approx \frac{-7.23}{8.38} \approx -0.86\]

2.6.8 Deteksi Outlier

Batas umum:

  • Jika \(|r_{ij}| > 2\) → sel dianggap menyimpang signifikan
  • Jika \(|r_{ij}| > 3\) → sel dianggap sebagai outlier ekstrem

Hasil:

Semua residual berada dalam rentang -2 hingga 2. Maka:

  • Tidak ada sel yang menyimpang signifikan
  • Tidak ditemukan outlier dalam tabel kontingensi ini

2.6.9 Synthax R Analisis Residual dan Deteksi Outlier

## 6. Analisis Residual dan Deteksi Outlier (R Syntax Manual)

# 1. Observasi data (frekuensi aktual)
obs <- matrix(c(56, 41, 139, 63), nrow = 2, byrow = TRUE)
colnames(obs) <- c("NON-WHITE", "WHITE")
rownames(obs) <- c("VIOLENT", "NON-VIOLENT")
obs
##             NON-WHITE WHITE
## VIOLENT            56    41
## NON-VIOLENT       139    63
# 2. Total baris, kolom, dan grand total
row_totals <- rowSums(obs)
col_totals <- colSums(obs)
n <- sum(obs)

# 3. Hitung frekuensi harapan (expected)
expected <- outer(row_totals, col_totals) / n
expected
##             NON-WHITE    WHITE
## VIOLENT      63.26087 33.73913
## NON-VIOLENT 131.73913 70.26087
# 4. Hitung residual Pearson manual
residuals_pearson <- (obs - expected) / sqrt(expected)
residuals_pearson
##              NON-WHITE      WHITE
## VIOLENT     -0.9128955  1.2500336
## NON-VIOLENT  0.6326030 -0.8662273
# 7. Deteksi Outlier Berdasarkan Residual

# Threshold umum
outlier_flag <- abs(residuals_pearson) > 2

# Tampilkan residual dan apakah termasuk outlier
data.frame(
  Cell = c("Violent x Non-White", "Violent x White",
           "Non-Violent x Non-White", "Non-Violent x White"),
  Residual = as.vector(residuals_pearson),
  Outlier = as.vector(outlier_flag)
)
##                      Cell   Residual Outlier
## 1     Violent x Non-White -0.9128955   FALSE
## 2         Violent x White  0.6326030   FALSE
## 3 Non-Violent x Non-White  1.2500336   FALSE
## 4     Non-Violent x White -0.8662273   FALSE

2.6.10 Kesimpulan Residual dan Outlier

Analisis residual dilakukan untuk mengevaluasi sejauh mana tiap sel dalam tabel kontingensi menyimpang dari nilai yang diharapkan di bawah model independensi. Residual Pearson dihitung secara manual dari selisih antara frekuensi observasi dan frekuensi harapan, lalu dibagi dengan akar dari nilai harapan tersebut.

Hasil perhitungan menunjukkan bahwa seluruh nilai residual berada dalam kisaran:

  • Violent × Non-White: ≈ -0.91
  • Violent × White: ≈ +1.24
  • Non-Violent × Non-White: ≈ +0.63
  • Non-Violent × White: ≈ -0.86

Tidak ada satu pun nilai residual yang melebihi batas umum untuk deteksi outlier, yaitu |residual| > 2. Dengan demikian:

  1. Tidak terdapat outlier signifikan dalam tabel kontingensi ini.
  2. Tidak ada satu sel pun yang secara ekstrem menyimpang dari model independensi.
  3. Penyimpangan yang diamati dalam uji asosiasi dan uji chi-square sebelumnya bukan disebabkan oleh satu atau dua sel dominan, melainkan merupakan efek kolektif dari seluruh struktur tabel.
  4. Analisis residual mendukung temuan utama bahwa hubungan antara ras dan jenis kejahatan memang signifikan secara statistik, namun tidak dimotori oleh kejanggalan lokal atau pencilan pada distribusi data.

Dengan kata lain, asosiasi yang ditemukan bersifat menyebar dan relatif stabil secara struktural. Ini memperkuat validitas hasil uji inferensial sebelumnya.

3 Kontigensi Tabel Tiga Arah

Tabel kontingensi tiga arah merupakan perluasan dari tabel dua arah yang memungkinkan analisis hubungan antara dua variabel kategorik dengan mengontrol satu variabel ketiga. Tabel ini memiliki bentuk tiga dimensi, yaitu X × Y × Z, dan sering digunakan dalam studi observasional untuk mengontrol efek pengganggu atau melakukan stratifikasi.

Menurut Agresti (2007), tabel tiga arah penting untuk membedakan antara asosiasi marginal dan asosiasi kondisional, karena hubungan antara dua variabel bisa berubah drastis ketika variabel ketiga diperhitungkan. Ini juga menjadi dasar dari uji homogenitas odds ratio dan analisis model log-linear.

Dobson (1983) juga menekankan bahwa tabel tiga arah memungkinkan kita mendeteksi efek interaksi, mengevaluasi kestabilan asosiasi antar strata, serta menjadi alat utama untuk menghindari kesalahan interpretasi akibat Simpson’s Paradox.

3.1 Peluang dan Tabel Tiga Arah

3.1.1 Peluang dan Tabel Parsial

Peluang marginal didapat dari penjumlahan peluang bersama terhadap satu variabel. Contoh:

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

\[P(X = i, Y = j) = \sum_k P(X = i, Y = j, Z = k)\]

Peluang marginal berguna untuk melihat distribusi umum variabel tunggal, tetapi tidak menunjukkan hubungan antar variabel.

abel parsial menunjukkan hubungan antara X dan Y pada level tetap dari Z, misalnya Z = k. Ini memungkinkan kita mengevaluasi hubungan yang dikendalikan terhadap Z.

\[n_{ij|k} = n_{ijk}\]

Contoh struktur tabel parsial untuk Z = 1:

Y = 1 Y = 2 Total
X = 1 n111 n121 n1+1
X = 2 n211 n221 n2+1
Total n+11 n+21 n++1

Menurut Agresti (2007), tabel parsial diperlukan untuk mengevaluasi asosiasi bersyarat dan menghindari kesimpulan keliru dari tabel agregat.

3.1.2 Peluang dan Tabel Marginal

Tabel marginal pada kontingensi tiga arah dibentuk dengan menjumlahkan nilai dari variabel ketiga (Z), menghasilkan distribusi dua dimensi antara X dan Y tanpa mempertimbangkan pengaruh Z.

\[n_{ij+} = \sum_k n_{ijk}\]

Struktur tabel marginal X × Y:

Y = 1 Y = 2 Total
X = 1 n11+ n12+ n1+
X = 2 n21+ n22+ n2+
Total n+1+ n+2+ n++

Marginalisasi ini digunakan untuk mengetahui hubungan secara keseluruhan tanpa mempertimbangkan pengaruh kondisi lain. Namun, hal ini rentan terhadap efek Simpson’s Paradox.

Peluang marginal didapat dari penjumlahan peluang bersama terhadap satu variabel. Contoh:

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

\[P(X = i, Y = j) = \sum_k P(X = i, Y = j, Z = k)\]

Peluang marginal berguna untuk melihat distribusi umum variabel tunggal, tetapi tidak menunjukkan hubungan antar variabel.

3.1.3 Peluang dan Tabel Bersyarat

Peluang bersyarat menunjukkan probabilitas satu variabel, diberikan nilai tertentu dari dua variabel lain. Dalam konteks tiga arah:

\[P(Y = j \mid X = i, Z = k) = \frac{n_{ijk}}{n_{i+k}}\]

Menurut Agresti (2007), peluang bersyarat adalah fondasi dari analisis hubungan dan estimasi parameter dalam model log-linear dan regresi logistik bersyarat.

Tabel bersyarat menyajikan peluang bersyarat antara X dan Y pada setiap nilai tetap dari Z. Nilai dalam tabel ini adalah proporsi, bukan frekuensi.

\[P(Y = j \mid X = i, Z = k) = \frac{n_{ijk}}{n_{i+k}}\]

Struktur:

Y = 1 Y = 2 Total
X = 1 P(1,1 Z = k) P(1,2
X = 2 P(2,1 Z = k) P(2,2
Total P(+1 Z = k) P(+2

Tabel bersyarat memungkinkan analisis pengaruh langsung antar dua variabel setelah mengontrol variabel ketiga, dan merupakan dasar untuk analisis multivariat.

3.2 Contoh Kasus Peluang dan Derajat Asosiasi

3.2.1 Kasus

Didapakan data sosio-ekonoik warga Amerika dari ASEC (American Socio-Economic Census) 2024, dimana seorang peneliti berhipotesis bahwa orang yang beredukasi bagus (kuliah) berpeluang lebih besar untuk tidak miskin. Namun, perbedaan ini dibedakan menurut gender, karena terdapat bias anti-cewek yang menyebabkan mereka mendapat peluang ekonomi yang lebih kecil. Data di bawah menunjukkan frekuensi (n) berdasarkan tiga variabel:
- Pendidikan (X): SMA, Tidak Lulus Sekolah, Universitas
- Status (Y): Miskin, Tak Miskin
- Gender (Z): Pria dan Wanita

Tabel Frekuensi (Pria):

Pendidikan Miskin Tak Miskin Total
SMA 1910 11542 13452
Tidak Lulus Sekolah 1025 2869 3894
Universitas 1818 23788 25606
Total 4753 38199 42952

Tabel Frekuensi (Wanita):

Pendidikan Miskin Tak Miskin Total
SMA 2016 9578 11594
Tidak Lulus Sekolah 1188 2359 3547
Universitas 2437 27894 30331
Total 5641 39831 45472

Tabel Frekuensi Marginal Gabungan:

Pendidikan Miskin Tak Miskin Total
SMA 3926 21120 25046
Tidak Lulus Sekolah 2213 5228 7441
Universitas 4255 51682 55937
Total 10394 78030 88424

3.2.2 Tabel Peluang

Di sini dihitung peluang dalam tiga cara: - Parsial: Peluang \(P(X = i, Y = j \mid Z = k)\) dihitung dengan membagi frekuensi tiap sel dengan total frekuensi dalam strata gender. - Marginal: Peluang \(P(X = i, Y = j)\) dihitung dari data gabungan (mengabaikan gender). - Bersyarat (Conditional): Peluang \(P(Y=j \mid X=i, Z=k)\) dihitung untuk masing-masing kategori pendidikan di tiap gender.

3.2.2.1 Peluang Parsial

Untuk Pria (Total Pria = 42952)

Perhitungan manual: - SMA, Miskin: \(1910/42952 \approx 0.0445\)
- SMA, Tak Miskin: \(11542/42952 \approx 0.2688\)
- Tidak Lulus, Miskin: \(1025/42952 \approx 0.0239\)
- Tidak Lulus, Tak Miskin: \(2869/42952 \approx 0.0668\)
- Universitas, Miskin: \(1818/42952 \approx 0.0423\)
- Universitas, Tak Miskin: \(23788/42952 \approx 0.5541\)

Tabel Peluang Parsial – Pria:

Pendidikan Miskin (0.0445) Tak Miskin (0.2688) Total (1.00)
SMA 0.0445 0.2687 0.3132
Tidak Lulus Sekolah 0.0239 0.0668 0.0907
Universitas 0.0423 0.5541 0.5961
Total 0.1106 0.8894 1.0000

Untuk Wanita (Total Wanita = 45472)

Perhitungan manual: - SMA, Miskin: \(2016/45472 \approx 0.0443\)
- SMA, Tak Miskin: \(9578/45472 \approx 0.2106\)
- Tidak Lulus, Miskin: \(1188/45472 \approx 0.0261\)
- Tidak Lulus, Tak Miskin: \(2359/45472 \approx 0.0519\)
- Universitas, Miskin: \(2437/45472 \approx 0.0536\)
- Universitas, Tak Miskin: \(27894/45472 \approx 0.6134\)

Tabel Peluang Parsial – Wanita:

Pendidikan Miskin (0.0443) Tak Miskin (0.2106) Total (1.00)
SMA 0.0443 0.2106 0.2549
Tidak Lulus Sekolah 0.0261 0.0519 0.0780
Universitas 0.0536 0.6134 0.6670
Total 0.1241 0.8759 1.0000

3.2.2.2 Peluang Marginal Gabungan

Total gabungan = 88424

Perhitungan manual: - SMA, Miskin: \(3926/88424 \approx 0.0444\)
- SMA, Tak Miskin: \(21120/88424 \approx 0.2388\)
- Tidak Lulus, Miskin: \(2213/88424 \approx 0.0250\)
- Tidak Lulus, Tak Miskin: \(5228/88424 \approx 0.0591\)
- Universitas, Miskin: \(4255/88424 \approx 0.0481\)
- Universitas, Tak Miskin: \(51682/88424 \approx 0.5845\)

Tabel Peluang Marginal:

Pendidikan Miskin (0.0444) Tak Miskin (0.2388) Total (1.00)
SMA 0.0444 0.2389 0.2833
Tidak Lulus Sekolah 0.0250 0.0591 0.0841
Universitas 0.0481 0.5845 0.6326
Total 0.1175 0.8826 1.0000

3.2.2.3 Peluang Bersyarat (Conditional)

Peluang bersyarat dihitung untuk setiap kategori pendidikan dalam setiap gender.

Untuk Pria:

  • SMA (Pria):
    Total = 13452
    • \(P(\text{Miskin} \mid \text{SMA, Pria}) = 1910/13452 \approx 0.1420\)
    • \(P(\text{Tak Miskin} \mid \text{SMA, Pria}) = 11542/13452 \approx 0.8580\)
  • Tidak Lulus Sekolah (Pria):
    Total = 3894
    • \(P(\text{Miskin} \mid \text{Tidak Lulus, Pria}) = 1025/3894 \approx 0.2632\)
    • \(P(\text{Tak Miskin} \mid \text{Tidak Lulus, Pria}) = 2869/3894 \approx 0.7368\)
  • Universitas (Pria):
    Total = 25606
    • \(P(\text{Miskin} \mid \text{Universitas, Pria}) = 1818/25606 \approx 0.0710\)
    • \(P(\text{Tak Miskin} \mid \text{Universitas, Pria}) = 23788/25606 \approx 0.9290\)

Untuk Wanita:

  • SMA (Wanita):
    Total = 11594
    • \(P(\text{Miskin} \mid \text{SMA, Wanita}) = 2016/11594 \approx 0.1739\)
    • \(P(\text{Tak Miskin} \mid \text{SMA, Wanita}) = 9578/11594 \approx 0.8261\)
  • Tidak Lulus Sekolah (Wanita):
    Total = 3547
    • \(P(\text{Miskin} \mid \text{Tidak Lulus, Wanita}) = 1188/3547 \approx 0.3349\)
    • \(P(\text{Tak Miskin} \mid \text{Tidak Lulus, Wanita}) = 2359/3547 \approx 0.6651\)
  • Universitas (Wanita):
    Total = 30331
    • \(P(\text{Miskin} \mid \text{Universitas, Wanita}) = 2437/30331 \approx 0.0803\)
    • \(P(\text{Tak Miskin} \mid \text{Universitas, Wanita}) = 27894/30331 \approx 0.9197\)

3.2.3 Perhitungan Derajat Asosiasi dengan Risk Difference dan Relative Risk

Dalam kasus ini, kita ingin menguji hipotesis bahwa: - Hipotesis: Orang yang beredukasi tinggi (Universitas) berpeluang lebih tinggi untuk tidak miskin, namun peluang tersebut dibedakan berdasarkan gender karena adanya bias anti-cewek (sehingga perempuan Universitas mendapat peluang ekonomi yang lebih rendah dibandingkan pria Universitas).

Kita bandingkan kategori Universitas dengan Tidak Lulus Sekolah sebagai representasi pendidikan rendah.
Kami hitung risk sebagai peluang Tidak Miskin.

Untuk Pria

  • Universitas (Pria):
    Risk non-miskin = \(\frac{23788}{25606} \approx 0.9290\)

  • Tidak Lulus Sekolah (Pria):
    Risk non-miskin = \(\frac{2869}{3894} \approx 0.7368\)

Risk Difference (RD):
\[RD = 0.9290 - 0.7368 \approx 0.1922\]

Relative Risk (RR):
\[RR = \frac{0.9290}{0.7368} \approx 1.2609\]

Untuk Wanita

  • Universitas (Wanita):
    Risk non-miskin = \(\frac{27894}{30331} \approx 0.9197\)

  • Tidak Lulus Sekolah (Wanita):
    Risk non-miskin = \(\frac{2359}{3547} \approx 0.6651\)

Risk Difference (RD):
\[RD = 0.9197 - 0.6651 \approx 0.2546\]

Relative Risk (RR):
\[RR = \frac{0.9196}{0.6651} \approx 1.3828\]

Interpretasi:
- Pada Pria, perbedaan risiko antara Universitas dan Tidak Lulus adalah sekitar 19,22% dengan RR ≈ 1.26.
- Pada Wanita, perbedaan risiko adalah sekitar 25,5% dengan RR ≈ 1.38.

Meskipun kedua gender menunjukkan bahwa pendidikan tinggi meningkatkan peluang tidak miskin, data menunjukkan bahwa secara absolut peluang tidak miskin pada wanita Universitas (≈ 91,96%) masih lebih rendah dibanding pria Universitas (≈ 92,80%) dan bahwa perbedaan antara tingkat pendidikan rendah dan tinggi cenderung lebih besar pada wanita. Hal ini mendukung hipotesis adanya bias (anti-cewek) dalam peluang ekonomi.

3.2.4 Sintaks R (Semua Perhitungan)

# --- Data Frekuensi (Manual) ---
# Matriks untuk Pria
pria <- matrix(c(1910, 11542,
                 1025, 2869,
                 1818, 23788),
               nrow = 3, byrow = TRUE)
rownames(pria) <- c("SMA", "Tidak Lulus", "Universitas")
colnames(pria) <- c("Miskin", "Tak Miskin")
total_pria <- sum(pria)  # 42952

# Matriks untuk Wanita
wanita <- matrix(c(2016, 9578,
                   1188, 2359,
                   2437, 27894),
                 nrow = 3, byrow = TRUE)
rownames(wanita) <- c("SMA", "Tidak Lulus", "Universitas")
colnames(wanita) <- c("Miskin", "Tak Miskin")
total_wanita <- sum(wanita)  # 45472

# Matriks Marginal Gabungan
marginal <- pria + wanita
total_marginal <- sum(marginal)  # 88424

# --- Peluang Parsial ---
# Untuk Pria:
pria_parsial <- pria / total_pria
print("Tabel Peluang Parsial - Pria:")
## [1] "Tabel Peluang Parsial - Pria:"
print(round(pria_parsial, 4))
##             Miskin Tak Miskin
## SMA         0.0445     0.2687
## Tidak Lulus 0.0239     0.0668
## Universitas 0.0423     0.5538
# Untuk Wanita:
wanita_parsial <- wanita / total_wanita
print("Tabel Peluang Parsial - Wanita:")
## [1] "Tabel Peluang Parsial - Wanita:"
print(round(wanita_parsial, 4))
##             Miskin Tak Miskin
## SMA         0.0443     0.2106
## Tidak Lulus 0.0261     0.0519
## Universitas 0.0536     0.6134
# --- Peluang Marginal ---
marginal_parsial <- marginal / total_marginal
print("Tabel Peluang Marginal Gabungan:")
## [1] "Tabel Peluang Marginal Gabungan:"
print(round(marginal_parsial, 4))
##             Miskin Tak Miskin
## SMA         0.0444     0.2388
## Tidak Lulus 0.0250     0.0591
## Universitas 0.0481     0.5845
# --- Peluang Bersyarat (Conditional) ---
# Bagi tiap baris pada matriks frekuensi masing-masing pendidikan
pria_cond <- t(apply(pria, 1, function(x) x / sum(x)))
print("Tabel Peluang Bersyarat - Pria:")
## [1] "Tabel Peluang Bersyarat - Pria:"
print(round(pria_cond, 4))
##             Miskin Tak Miskin
## SMA         0.1420     0.8580
## Tidak Lulus 0.2632     0.7368
## Universitas 0.0710     0.9290
wanita_cond <- t(apply(wanita, 1, function(x) x / sum(x)))
print("Tabel Peluang Bersyarat - Wanita:")
## [1] "Tabel Peluang Bersyarat - Wanita:"
print(round(wanita_cond, 4))
##             Miskin Tak Miskin
## SMA         0.1739     0.8261
## Tidak Lulus 0.3349     0.6651
## Universitas 0.0803     0.9197
# --- Perhitungan Risk Difference dan Relative Risk ---
# Fokus perbandingan: Universitas vs. Tidak Lulus Sekolah

# Untuk Pria:
risk_nonmiskin_pria_univ <- pria["Universitas", "Tak Miskin"] / sum(pria["Universitas", ])
risk_nonmiskin_pria_nolulus <- pria["Tidak Lulus", "Tak Miskin"] / sum(pria["Tidak Lulus", ])
RD_pria <- risk_nonmiskin_pria_univ - risk_nonmiskin_pria_nolulus
RR_pria <- risk_nonmiskin_pria_univ / risk_nonmiskin_pria_nolulus

print(paste("Pria - Risk (Universitas):", round(risk_nonmiskin_pria_univ, 4)))
## [1] "Pria - Risk (Universitas): 0.929"
print(paste("Pria - Risk (Tidak Lulus):", round(risk_nonmiskin_pria_nolulus, 4)))
## [1] "Pria - Risk (Tidak Lulus): 0.7368"
print(paste("Pria - Risk Difference:", round(RD_pria, 4)))
## [1] "Pria - Risk Difference: 0.1922"
print(paste("Pria - Relative Risk:", round(RR_pria, 4)))
## [1] "Pria - Relative Risk: 1.2609"
# Untuk Wanita:
risk_nonmiskin_wanita_univ <- wanita["Universitas", "Tak Miskin"] / sum(wanita["Universitas", ])
risk_nonmiskin_wanita_nolulus <- wanita["Tidak Lulus", "Tak Miskin"] / sum(wanita["Tidak Lulus", ])
RD_wanita <- risk_nonmiskin_wanita_univ - risk_nonmiskin_wanita_nolulus
RR_wanita <- risk_nonmiskin_wanita_univ / risk_nonmiskin_wanita_nolulus

print(paste("Wanita - Risk (Universitas):", round(risk_nonmiskin_wanita_univ, 4)))
## [1] "Wanita - Risk (Universitas): 0.9197"
print(paste("Wanita - Risk (Tidak Lulus):", round(risk_nonmiskin_wanita_nolulus, 4)))
## [1] "Wanita - Risk (Tidak Lulus): 0.6651"
print(paste("Wanita - Risk Difference:", round(RD_wanita, 4)))
## [1] "Wanita - Risk Difference: 0.2546"
print(paste("Wanita - Relative Risk:", round(RR_wanita, 4)))
## [1] "Wanita - Relative Risk: 1.3828"

3.2.5 Kesimpulan

Berdasarkan analisis data dari ASEC (American Socio Economic Census 2024), didapatkan bahwa: - Pendidikan tinggi (Universitas) berasosiasi dengan peluang tidak miskin yang lebih tinggi dibandingkan dengan tingkat pendidikan rendah (Tidak Lulus Sekolah) untuk kedua gender. - Namun, secara absolute, wanita yang beruniversitas memiliki peluang tidak miskin yang sedikit lebih rendah dibanding pria yang pergi ke universitas (0.9196 vs. 0.9280).

Perhitungan risk difference dan relative risk menunjukkan: - Pria: RD ≈ 0.1922; RR ≈ 1.2609. - Wanita: RD ≈ 0.2546; RR ≈ 1.3828.

Meskipun pendidikan tinggi meningkatkan peluang ekonomi, perbedaan dasar antara pria dan wanita tetap ada—mendukung hipotesis adanya bias anti-cewek yang menyebabkan peluang ekonomi bagi wanita cenderung lebih rendah.

3.3 Conditional Independence

Analisis ini bertujuan untuk menguji apakah variabel Pendidikan (X) dan Status Ekonomi (Y) kondisional independen terhadap Gender (Z). Dalam konteks ini, kita memeriksa apakah hubungan antara pendidikan dan status ekonomi tetap ada ketika kita mengontrol variabel gender.

Menurut Agresti (2007), dua variabel X dan Y dikatakan kondisional independen terhadap Z jika:

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

Dobson (1983) juga menegaskan bahwa uji chi-square pada masing-masing strata Z dapat digunakan untuk mengevaluasi ketidakbergantungan kondisional dalam data kategorik.

3.3.1 Perhitungan Manual

Untuk Gender = Pria

Pendidikan Miskin Tak Miskin Total
SMA 1910 11542 13452
Tidak Lulus Sekolah 1025 2869 3894
Universitas 1818 23788 25606
Total 4753 38199 42952

Total populasi pria = 42952

  • Peluang gabungan: \[ P(\text{SMA, Miskin} \mid \text{Pria}) = \frac{1910}{42952} \approx 0.0445 \]

  • Peluang marginal: \[P(\text{SMA} \mid \text{Pria}) = \frac{13452}{42952} \approx 0.3132\] \[P(\text{Miskin} \mid \text{Pria}) = \frac{4753}{42952} \approx 0.1106\]

  • Perkalian peluang marginal: \[P(\text{SMA} \mid Z) \cdot P(\text{Miskin} \mid Z) = 0.3132 \times 0.1106 \approx 0.0346\]

Perbandingan: \[P(X, Y \mid Z) = 0.0445 \quad \text{vs.} \quad P(X \mid Z) \cdot P(Y \mid Z) = 0.0346\]

→ Terdapat perbedaan nyata, indikasi tidak independen.

Untuk Gender = Wanita

Pendidikan Miskin Tak Miskin Total
SMA 2016 9578 11594
Tidak Lulus Sekolah 1188 2359 3547
Universitas 2437 27894 30331
Total 5641 39831 45472

Total populasi wanita = 45472

  • Peluang gabungan: \[P(\text{Tidak Lulus, Miskin} \mid \text{Wanita}) = \frac{1188}{45472} \approx 0.0261\]

  • Peluang marginal: \[P(\text{Tidak Lulus} \mid \text{Wanita}) = \frac{3547}{45472} \approx 0.0780\] \[P(\text{Miskin} \mid \text{Wanita}) = \frac{5641}{45472} \approx 0.1241\]

  • Perkalian peluang marginal: \[0.0780 \times 0.1241 \approx 0.0097\]

Perbandingan: \[P(X, Y \mid Z) = 0.0261 \quad \text{vs.} \quad P(X \mid Z) \cdot P(Y \mid Z) = 0.0097\]

→ Perbedaan sangat besar, menunjukkan tidak adanya conditional independence.

→ Karena 0.0261 ≠ 0.0097, maka tidak kondisional independen

Dalam kedua strata gender, nilai \(P(X, Y \mid Z)\) berbeda nyata dari hasil perkalian \(P(X \mid Z) \cdot P(Y \mid Z)\). Ini memberikan bukti empiris bahwa:

\[\boxed{\text{Pendidikan dan Status Ekonomi tidak kondisional independen terhadap Gender}}\]

3.3.2 Sintaks R

# Matriks kontingensi untuk Pria
pria <- matrix(c(1910, 11542,
                 1025, 2869,
                 1818, 23788),
               nrow = 3, byrow = TRUE)
rownames(pria) <- c("SMA", "Tidak Lulus", "Universitas")
colnames(pria) <- c("Miskin", "Tak Miskin")

# Matriks kontingensi untuk Wanita
wanita <- matrix(c(2016, 9578,
                   1188, 2359,
                   2437, 27894),
                 nrow = 3, byrow = TRUE)
rownames(wanita) <- c("SMA", "Tidak Lulus", "Universitas")
colnames(wanita) <- c("Miskin", "Tak Miskin")

# Uji chi-square per strata Gender
cat("Uji Chi-Square untuk PRIA:\n")
## Uji Chi-Square untuk PRIA:
print(chisq.test(pria))
## 
##  Pearson's Chi-squared test
## 
## data:  pria
## X-squared = 1464.4, df = 2, p-value < 2.2e-16
cat("\nUji Chi-Square untuk WANITA:\n")
## 
## Uji Chi-Square untuk WANITA:
print(chisq.test(wanita))
## 
##  Pearson's Chi-squared test
## 
## data:  wanita
## X-squared = 2249.7, df = 2, p-value < 2.2e-16

Hasil uji chi-square pada kedua strata gender menunjukkan nilai p-value yang sangat kecil (p < 0.001), yang berarti:

Terdapat hubungan signifikan antara Pendidikan dan Status Ekonomi, baik pada Pria maupun Wanita.

Hubungan ini tidak menghilang meskipun telah dikondisikan pada Gender.

Dengan demikian, kita menolak hipotesis null dari conditional independence:

Pendidikan(X) dan Status Ekonomi (Y) tidak kondisional independen terhadap Gender (Z) Pendidikan (X) dan Status Ekonomi (Y) tidak kondisional independen terhadap Gender (Z)

3.4 Uji Inferensi

Analisis ini bertujuan untuk mengevaluasi hubungan antara Pendidikan (X) dan Status Ekonomi (Y) dengan mempertimbangkan Gender (Z) sebagai variabel pengkondisi. Ada tiga tahap utama:

  1. Uji independensi bersyarat: Apakah X dan Y independen setelah dikondisikan pada Z?
  2. Hitung odds rasio bersama (common odds ratio) untuk X dan Y dengan kontrol Z.
  3. Uji homogenitas: Apakah odds rasio X–Y sama di semua level Z?

3.4.1 Uji Independensi Bersyarat

Tujuan:
Mengidentifikasi apakah dua variabel kategorik (misalnya Pendidikan dan Status Ekonomi) saling independen setelah dikondisikan pada variabel ketiga (misalnya Gender).

Hipotesis:
- \(H_0: X \perp Y \mid Z\)
(X dan Y saling independen dalam setiap strata Z)
- \(H_1: X \neq Y \mid Z\)
(X dan Y berasosiasi meskipun setelah dikondisikan pada Z)

Statistik Uji:
- Lakukan uji chi-square secara terpisah dalam setiap strata Z.
- Statistik uji pada tiap strata: \[ \chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \] di mana \(O_{ij}\) adalah frekuensi observasi dan \(E_{ij}\) adalah frekuensi ekspektasi.

3.4.2 Odds Rasio Bersama (Common Odds Ratio)

Tujuan:
Mengukur kekuatan asosiasi antara dua variabel (X dan Y) dengan mengendalikan variabel ketiga (Z). Odds rasio bersama mencerminkan asosiasi keseluruhan dari X–Y terlepas dari perbedaan antar strata Z.

Hipotesis:
- \(H_0: \theta_{MH} = 1\)
(odds rasio bersama = 1 → tidak ada asosiasi antara X dan Y setelah kontrol Z)
- \(H_1: \theta_{MH} \ne 1\)
(ada asosiasi antara X dan Y setelah kontrol Z)

Statistik Uji:
- Gunakan Uji Mantel-Haenszel: \[\theta_{MH} = \frac{\sum_k \frac{a_k d_k}{n_k}}{\sum_k \frac{b_k c_k}{n_k}}\] di mana \(a_k, b_k, c_k, d_k\) adalah sel dari tabel 2x2 per strata ke-k, dan \(n_k\) total per strata.

3.4.3 Uji Homogenitas Odds Rasio

Tujuan:
Mengukur apakah asosiasi X–Y konsisten di seluruh strata Z. Dengan kata lain, apakah odds rasio X–Y berubah tergantung nilai Z.

Hipotesis:
- \(H_0\): Odds rasio sama di semua strata Z (homogen)
- \(H_1\): Odds rasio berbeda antar strata (tidak homogen)

Statistik Uji:
- Gunakan Uji Breslow-Day untuk homogenitas: - Bandingkan odds ratio masing-masing strata dengan odds ratio bersama. - Statistik uji mengikuti distribusi chi-square: \[\chi^2_{BD} \sim \chi^2_{K - 1}\] di mana \(K\) adalah jumlah strata (misalnya jumlah level Z)

  • Jika p-value kecil, maka kita tolak \(H_0\) → menunjukkan bahwa efek asosiasi tidak homogen antar strata.

3.5 Contoh Kasus Uji Inferensi

3.5.1 Kasus

Data berikut merupakan distribusi frekuensi responden berdasarkan Pendidikan, Status Ekonomi, dan Gender dari ASEC 2024.

Tabel 1: Gender = Pria

Pendidikan Miskin Tak Miskin Total
SMA 1910 11542 13452
Tidak Lulus Sekolah 1025 2869 3894
Universitas 1818 23788 25606
Total 4753 38199 42952

Tabel 2: Gender = Wanita

Pendidikan Miskin Tak Miskin Total
SMA 2016 9578 11594
Tidak Lulus Sekolah 1188 2359 3547
Universitas 2437 27894 30331
Total 5641 39831 45472

3.5.2 Uji Chi-Square per Strata (Uji Independensi Bersyarat)

# Uji chi-square untuk PRIA
cat("Uji Chi-Square untuk PRIA:\n")
## Uji Chi-Square untuk PRIA:
chisq.test(matrix(c(1910, 11542, 1025, 2869, 1818, 23788), nrow = 3, byrow = TRUE))
## 
##  Pearson's Chi-squared test
## 
## data:  matrix(c(1910, 11542, 1025, 2869, 1818, 23788), nrow = 3, byrow = TRUE)
## X-squared = 1464.4, df = 2, p-value < 2.2e-16
# Uji chi-square untuk WANITA
cat("\nUji Chi-Square untuk WANITA:\n")
## 
## Uji Chi-Square untuk WANITA:
chisq.test(matrix(c(2016, 9578, 1188, 2359, 2437, 27894), nrow = 3, byrow = TRUE))
## 
##  Pearson's Chi-squared test
## 
## data:  matrix(c(2016, 9578, 1188, 2359, 2437, 27894), nrow = 3, byrow = TRUE)
## X-squared = 2249.7, df = 2, p-value < 2.2e-16

3.5.3 Odds Rasio Bersama (Mantel-Haenszel)

# Gabungkan tabel 2x2x2: Pendidikan = Universitas vs Tidak Lulus, Status = Tak Miskin vs Miskin
common_array <- array(c(
  23788, 2869, 1818, 1025,
  27894, 2359, 2437, 1188
), dim = c(2, 2, 2),
dimnames = list(
  Status = c("Tak Miskin", "Miskin"),
  Pendidikan = c("Universitas", "Tidak Lulus"),
  Gender = c("Pria", "Wanita")
))

# Uji Mantel-Haenszel
cat("Uji Mantel-Haenszel (Common Odds Ratio):\n")
## Uji Mantel-Haenszel (Common Odds Ratio):
mantelhaen.test(common_array)
## 
##  Mantel-Haenszel chi-squared test with continuity correction
## 
## data:  common_array
## Mantel-Haenszel X-squared = 3554.4, df = 1, p-value < 2.2e-16
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
##  4.910297 5.524422
## sample estimates:
## common odds ratio 
##          5.208316

3.5.4 Uji Homogenitas Odds Rasio (Breslow-Day)

library(vcdExtra)
## Warning: package 'vcdExtra' was built under R version 4.3.3
## Loading required package: vcd
## Warning: package 'vcd' was built under R version 4.3.3
## Loading required package: grid
## Loading required package: gnm
## Warning: package 'gnm' was built under R version 4.3.3
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.3
# Uji homogenitas antar strata (Breslow-Day Test)
cat("Uji Homogenitas Odds Rasio (Breslow-Day):\n")
## Uji Homogenitas Odds Rasio (Breslow-Day):
BreslowDayTest(common_array)
## 
##  Breslow-Day test on Homogeneity of Odds Ratios
## 
## data:  common_array
## X-squared = 12.111, df = 1, p-value = 0.0005012

3.5.5 Kesimpulan

Uji Chi-Square pada masing-masing strata menunjukkan adanya asosiasi signifikan antara Pendidikan dan Status Ekonomi.

Odds rasio bersama dari uji Mantel-Haenszel signifikan → menunjukkan adanya hubungan yang konsisten secara keseluruhan.

Uji Breslow-Day menunjukkan apakah asosiasi tersebut bersifat heterogen atau berbeda antar strata Gender.

Disimpulkan bahwa: Pendidikan dan Status Ekonomi tidak kondisional independen terhadap Gender, dan besar asosiasi bervariasi antar gender. Disimpulkan bahwa: Pendidikan dan Status Ekonomi tidak kondisional independen terhadap Gender, dan besar asosiasi bervariasi antar gender.

4 GLM (Generalized Linear Model)

4.1 Definisi GLM

Generalized Linear Models (GLM) adalah kerangka umum untuk memodelkan hubungan antara variabel respon dan satu atau lebih variabel prediktor. GLM memperluas model regresi linear klasik dengan mengakomodasi berbagai tipe distribusi dari keluarga eksponensial seperti Normal, Binomial, Poisson, dan Gamma. Ini memungkinkan kita untuk menangani data yang bersifat diskret, proporsi, maupun hitungan.

GLM terdiri dari tiga komponen utama:

  1. Distribusi eksponensial (Exponential Family):

    Model GLM mengasumsikan bahwa variabel respon \(Y\) berasal dari keluarga distribusi eksponensial yang memiliki bentuk umum: \[f(y; \theta, \phi) = \exp\left\{ \frac{y \theta - b(\theta)}{a(\phi)} + c(y, \phi) \right\}\] Di mana:

    • \(\theta\): parameter kanonik
    • \(\phi\): parameter dispersi
    • \(a(\phi), b(\theta), c(y,\phi)\): fungsi spesifik distribusi
  2. Fungsi link (Link Function):

    Fungsi link \(g(\mu)\) menghubungkan nilai harapan dari variabel respon \(\mu = \mathbb{E}(Y)\) dengan prediktor linear: \[g(\mu) = \eta = X\beta\] Fungsi ini memungkinkan transformasi nilai harapan agar sesuai dengan rentang domain distribusi, misalnya logit untuk data biner.

  3. Prediktor Linear (Linear Predictor):

    \(\eta = X\beta\), di mana:

    • \(X\) adalah matriks desain (variabel bebas)
    • \(\beta\) adalah vektor parameter yang akan diestimasi

Keluarga Distribusi Eksponensial

Keluarga distribusi eksponensial adalah kelas luas dari distribusi probabilitas yang mencakup banyak distribusi terkenal, seperti Poisson, Normal, dan Binomial. Sebuah distribusi dikatakan termasuk dalam keluarga eksponensial jika fungsi kepadatan probabilitas (atau fungsi massa probabilitas) dapat ditulis dalam bentuk tertentu.

Bentuk Umum

Bentuk umum dari sebuah distribusi probabilitas dalam keluarga eksponensial adalah:

\[ f(y; \theta) = \exp \left( a(y) b(\theta) + c(\theta) + d(y) \right) \]

Dimana: - \(y\) adalah data yang diamati. - \(\theta\) adalah parameter (atau parameter-parameter) distribusi. - \(a(y)\), \(b(\theta)\), \(c(\theta)\), dan \(d(y)\) adalah fungsi yang bergantung pada \(y\) dan \(\theta\).

Contoh Umum

Beberapa distribusi yang sering digunakan termasuk dalam keluarga eksponensial:

Distribusi Poisson

Distribusi Poisson, yang sering digunakan untuk memodelkan data hitungan, adalah bagian dari keluarga eksponensial. Fungsi massa probabilitas (PMF) dari distribusi Poisson dapat ditulis sebagai:

\[ f(y; \lambda) = \frac{\lambda^y e^{-\lambda}}{y!} \]

Ini adalah distribusi keluarga eksponensial dimana: - \(a(y) = y\) - \(b(\lambda) = \log(\lambda)\) - \(c(\lambda) = -\lambda\) - \(d(y) = -\log(y!)\)

Distribusi Normal

Distribusi Normal adalah anggota lain dari keluarga eksponensial. Fungsi kepadatan probabilitas (PDF) dari distribusi Normal adalah:

\[ f(y; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp \left( -\frac{(y - \mu)^2}{2\sigma^2} \right) \]

Bisa ditulis ulang dalam bentuk eksponensial sebagai:

\[ f(y; \theta) = \exp \left( \frac{y \mu}{\sigma^2} - \frac{\mu^2}{2\sigma^2} - \frac{y^2}{2\sigma^2} + \frac{\log(\sigma)}{2} \right) \]

Dimana \(\mu\) adalah rata-rata dan \(\sigma^2\) adalah varians.

Distribusi Binomial

Distribusi Binomial juga dapat diekspresikan dalam bentuk keluarga eksponensial. Fungsi massa probabilitasnya adalah:

\[ f(y; n, p) = \binom{n}{y} p^y (1 - p)^{n - y} \]

Ini dapat ditulis dalam bentuk eksponensial sebagai:

\[ f(y; p) = \exp \left( y \log(p) + (n - y) \log(1 - p) + \log \binom{n}{y} \right) \]

Dimana: - \(n\) adalah jumlah percobaan, - \(p\) adalah probabilitas sukses, - \(y\) adalah jumlah sukses.

Pentingnya Keluarga Eksponensial

Keluarga eksponensial memiliki beberapa sifat penting: - Kemudahan untuk Model Linear Ternerap (GLM): Banyak metode statistik, terutama Model Linear Ternerap (GLM), mengandalkan distribusi dari keluarga eksponensial. Ini menjadikan keluarga eksponensial sangat penting dalam konteks model regresi, terutama ketika menangani data non-normal seperti data hitungan atau hasil biner. - Sufficiency dan Likelihood: Keluarga eksponensial memberikan kerangka kerja untuk turunan estimasi maksimum likelihood (MLE). Statistik cukup untuk distribusi keluarga eksponensial sering kali dapat diturunkan langsung dari bentuk distribusinya.

4.2 Fungsi GLM dalam Kehidupan Sehari-hari

GLM digunakan luas dalam berbagai bidang kehidupan untuk memodelkan fenomena yang tidak dapat ditangani oleh regresi linear biasa. Beberapa aplikasinya:

  • Epidemiologi dan kesehatan masyarakat: logistic regression digunakan untuk memodelkan peluang infeksi penyakit berdasarkan faktor risiko seperti usia, jenis kelamin, dan status imunisasi.
  • Ekonomi dan pemasaran: Poisson regression digunakan untuk memodelkan jumlah pembelian produk dalam waktu tertentu.
  • Ilmu sosial: binomial dan multinomial regression digunakan untuk menganalisis preferensi pilihan atau opini responden.
  • Aktuaria dan asuransi: digunakan untuk memperkirakan jumlah klaim atau kerugian.

GLM memberikan fleksibilitas dalam menangani data biner, multinomial, ordinal, atau berupa hitungan, sehingga menjadikannya sangat relevan dalam pengambilan keputusan berbasis data.

4.3 Ekspektasi dan Varians dalam GLM

Dalam GLM, bentuk ekspektasi dan varians dari respon \(Y\) diturunkan dari sifat distribusi eksponensial:

  • Ekspektasi: \[ \mathbb{E}(Y) = \mu = b'(\theta) \] Menunjukkan bahwa nilai harapan ditentukan oleh turunan pertama dari fungsi kumulatif kanonik \(b(\theta)\).

  • Varians: \[ \text{Var}(Y) = a(\phi) \cdot b''(\theta) \] Variansnya bergantung pada parameter dispersi dan turunan kedua dari \(b(\theta)\).

Tabel berikut memberikan ringkasan beberapa distribusi yang umum digunakan dalam GLM:

Distribusi Fungsi Link (g) \(\mathbb{E}(Y)\) \(\text{Var}(Y)\)
Normal Identitas \(\mu\) \(\sigma^2\)
Binomial Logit \(p\) \(np(1-p)\)
Poisson Log \(\lambda\) \(\lambda\)

Fungsi link dipilih berdasarkan distribusi dan interpretasi yang diinginkan. Misalnya, logit link memastikan bahwa prediksi probabilitas tetap dalam rentang (0, 1).

4.4 Metode Penaksiran Parameter GLM

4.4.1 Maximum Likelihhod Ratio

Penaksiran parameter \(\beta\) dalam GLM dilakukan menggunakan pendekatan Maximum Likelihood Estimation (MLE). Tujuan dari MLE adalah untuk mencari nilai parameter yang memaksimalkan fungsi likelihood berdasarkan data yang diamati.

Fungsi log-likelihood dari model: \[\ell(\beta) = \sum_{i=1}^n \left[ y_i \theta_i - b(\theta_i) \right] / a(\phi) + c(y_i, \phi)\]

Karena bentuk fungsi ini tidak selalu memiliki solusi eksplisit, maka digunakan metode numerik, yaitu:

  • Iteratively Reweighted Least Squares (IRLS): pendekatan umum dalam GLM yang menggabungkan algoritma Newton-Raphson dan pembobotan berdasarkan fungsi varians.
  • Fisher Scoring: bentuk khusus dari IRLS yang menggunakan informasi Fisher sebagai aproksimasi matriks Hessian.

Rumus iteratif untuk memperbarui estimasi parameter: \[\hat{\beta}^{(t+1)} = \hat{\beta}^{(t)} + (X^T W X)^{-1} X^T W z\] Dengan: - \(z\): working dependent variable (pembobotan residual) - \(W\): matriks bobot diagonal, tergantung pada varians dari distribusi dan derivatif fungsi link

4.4.2 Estimasi Alternatif: Metode Newton-Raphson

Selain IRLS, algoritma Newton-Raphson juga digunakan secara umum untuk mengestimasi parameter \(\beta\). Metode ini berbasis pada aproksimasi Taylor orde dua terhadap fungsi log-likelihood:

\[\beta^{(t+1)} = \beta^{(t)} - H^{-1}(\beta^{(t)}) \cdot \nabla \ell(\beta^{(t)})\]

Di mana: - \(H(\beta)\) adalah matriks Hessian dari \(\ell(\beta)\) - \(\nabla \ell(\beta)\) adalah gradien dari log-likelihood

Langkah-langkah umum metode Newton-Raphson dalam konteks GLM: 1. Tentukan tebakan awal \(\beta^{(0)}\) 2. Hitung fungsi log-likelihood dan turunannya: \(\nabla \ell(\beta)\), \(H(\beta)\) 3. Perbarui parameter menggunakan rumus Newton-Raphson 4. Ulangi iterasi hingga konvergensi (perubahan kecil pada \(\beta\)) 5. Evaluasi hasil: estimasi parameter, standar error, dan inferensi lanjutan

Dalam GLM, Fisher Scoring adalah versi stabil dari Newton-Raphson karena menggantikan Hessian aktual dengan informasi Fisher (nilai harapan Hessian).

4.5 Inferensi Parameter dalam GLM

Setelah parameter \(\hat{\beta}\) diperoleh, kita dapat melakukan inferensi untuk menilai apakah prediktor signifikan secara statistik.

4.5.1 Uji Wald

Uji Wald mengevaluasi hipotesis nol bahwa \(\beta_j = 0\) melalui statistik: \[ W = \frac{\hat{\beta}_j^2}{\text{Var}(\hat{\beta}_j)} \] Statistik ini mengikuti distribusi \(\chi^2_1\).

4.5.2 Uji Likelihood Ratio (LRT)

Uji LRT membandingkan dua model: satu model penuh dan satu model ter-reduksi: \[ G^2 = -2 \left[ \ell_{reduced} - \ell_{full} \right] \] Statistik \(G^2\) mengikuti distribusi \(\chi^2\) dengan derajat bebas sama dengan selisih jumlah parameter.

4.5.3 Evaluasi Kebaikan Model

Untuk mengevaluasi kecocokan model secara keseluruhan, digunakan: - Deviance: ukuran perbedaan antara model dan model sempurna - AIC (Akaike Information Criterion): menggabungkan kecocokan model dan penalti kompleksitas - BIC (Bayesian Information Criterion): mirip AIC, tetapi penalti kompleksitas lebih besar dan mempertimbangkan ukuran sampel - Pseudo-R²: ukuran alternatif “kekuatan prediksi” model

4.6 Logistic Regression

4.6.1 Definisi dan Pengertian

Regresi logistik adalah salah satu bentuk Generalized Linear Model (GLM) yang digunakan ketika variabel respon bersifat biner, yaitu hanya memiliki dua kategori (misalnya: sukses/gagal, sakit/sehat, ya/tidak). Tujuan utama model ini adalah memodelkan probabilitas kejadian dari suatu peristiwa sebagai fungsi dari satu atau lebih variabel prediktor (Akinyemi, 2021).

Secara matematis, kita menghubungkan peluang keberhasilan \(p = P(Y = 1)\) dengan prediktor \(X\) melalui fungsi logit (Akinyemi, 2021):

\[\text{logit}(p) = \log\left(\frac{p}{1 - p}\right) = \eta = \beta_0 + \beta_1 X_1 + \dots + \beta_k X_k\]

Dari sini, kita dapat menyatakan probabilitas keberhasilan sebagai:

\[P(Y = 1 \mid X) = \frac{\exp(\eta)}{1 + \exp(\eta)} = \frac{1}{1 + \exp(-\eta)}\]

Fungsi logistik \(\frac{1}{1 + e^{-\eta}}\) memastikan nilai keluaran berada dalam interval (0, 1), sesuai interpretasi probabilitas. Selain itu, regresi logistik juga memiliki interpretasi koefisien \(\beta_j\) sebagai efek perubahan log-odds akibat peningkatan satu unit pada variabel \(X_j\).

4.6.2 Fungsi dan Penerapan

Fungsi Utama - Memodelkan probabilitas suatu kejadian biner - Mengestimasi pengaruh prediktor terhadap probabilitas tersebut - Interpretasi koefisien dalam bentuk odds ratio: \[ OR_j = \exp(\beta_j) \] Odds ratio mengukur perbandingan peluang ketika \(X_j\) meningkat satu unit

4.6.3 Contoh Penerapan

  • Kesehatan: prediksi risiko penyakit berdasarkan umur, gaya hidup, dll.
  • Ekonomi: klasifikasi pembeli produk berdasarkan perilaku konsumen.
  • Politik: model keputusan memilih kandidat berdasarkan karakteristik pemilih.
  • Pendidikan: model probabilitas kelulusan berdasarkan waktu belajar dan latar belakang siswa.

Regresi logistik berguna dalam analisis klasifikasi biner di berbagai bidang.

4.6.4 Estimasi Parameter

Estimasi parameter \(\beta\) dilakukan melalui Maximum Likelihood Estimation (MLE). Asumsikan kita memiliki sampel \((x_i, y_i)\) untuk \(i = 1, \dots, n\), dengan \(y_i \in \{0, 1\}\).

Fungsi log-likelihood: \[\ell(\beta) = \sum_{i=1}^n \left[ y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right]\] Dengan: \[p_i = \frac{\exp(X_i^T \beta)}{1 + \exp(X_i^T \beta)}\]

Karena fungsi \(\ell(\beta)\) tidak dapat dimaksimalkan secara eksplisit, maka digunakan pendekatan numerik seperti: - Newton-Raphson: \[\beta^{(t+1)} = \beta^{(t)} - H^{-1}(\beta^{(t)}) \nabla \ell(\beta^{(t)})\] - Iteratively Reweighted Least Squares (IRLS), versi efisien dari Newton-Raphson untuk GLM

Langkah-langkah umum estimasi: 1. Tentukan tebakan awal \(\beta^{(0)}\) 2. Hitung gradien \(\nabla \ell(\beta)\) dan Hessian \(H(\beta)\) 3. Perbarui parameter dengan Newton-Raphson/IRLS 4. Iterasi hingga konvergen (perubahan sangat kecil)

4.6.5 Inferensi Parameter

Setelah memperoleh estimasi \(\hat{\beta}\), kita ingin menguji apakah setiap koefisien berbeda signifikan dari nol.

Hipotesis: \[H_0: \beta_j = 0 \quad vs \quad H_1: \beta_j \ne 0\]

Metode Inferensi

  • Uji Wald: \[ W_j = \left(\frac{\hat{\beta}_j}{SE(\hat{\beta}_j)}\right)^2 \sim \chi^2_1 \] Cocok digunakan jika \(\hat{\beta}_j\) normal asimtotik.

  • Uji Likelihood Ratio Test (LRT): \[ G^2 = -2 \left[ \ell_{reduced} - \ell_{full} \right] \sim \chi^2_{df} \] Bandingkan model penuh dan model dengan \(\beta_j = 0\)

  • Confidence Interval: \[ \hat{\beta}_j \pm Z_{\alpha/2} \cdot SE(\hat{\beta}_j) \] Interval keyakinan untuk pengaruh prediktor

4.6.6 Visualisasi Model

Visualisasi membantu memahami hubungan antara prediktor dan probabilitas keberhasilan.

a. Kurva Logistik - Menampilkan hubungan \(X\) dengan \(P(Y = 1)\)

b. Plot Prediksi - Menampilkan probabilitas prediksi dan kelas aktual

c. Residual Diagnostics - Residual deviance - Pearson residuals untuk deteksi outlier

Contoh R: Kurva Logistik

x <- seq(-10, 10, length = 100)
eta <- 1.5 + 0.8 * x
p <- exp(eta) / (1 + exp(eta))

plot(x, p, type = "l", lwd = 2, col = "blue",
     ylab = "P(Y = 1)", xlab = "X",
     main = "Kurva Logistik")
abline(h = 0.5, lty = 2)

4.6.7 Contoh Kasus

Dalam studi ini, digunakan data simulasi untuk memodelkan hubungan antara konsumsi makanan sehat, Olahraga dan risiko penyakit jantung menggunakan regresi logistik.

Dalam studi ini, digunakan data simulasi untuk memodelkan hubungan antara konsumsi makanan sehat dan status penyakit jantung menggunakan regresi logistik. Data simulasi ini menggunakan prediktor kontinu.

  • Respon (Y): Status Penyakit Jantung
    • 1 = Positif (menderita penyakit jantung)
    • 0 = Negatif (tidak menderita penyakit jantung)
  • Prediktor (X):
    • Konsumsi Makanan Sehat (skala 0-100)
    • Olahraga (Jam per Minggu)
  • Jumlah data: 1000 observasi individu yang disimulasikan.

Tujuan

  • Mengestimasi model regresi logistik untuk memprediksi risiko penyakit jantung berdasarkan konsumsi makanan sehat dan olahraga.
  • Menginterpretasikan pengaruh konsumsi makanan sehat dan olahraga terhadap peluang menderita penyakit jantung.
  • Menilai kecocokan model dan visualisasi hubungan logistik.

Persiapan dan Import Data

# Import pustaka
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:vcdExtra':
## 
##     summarise
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(broom)
## Warning: package 'broom' was built under R version 4.3.3
# Set seed untuk reprodusibilitas
set.seed(42)

# Simulasi data
n <- 1000
data_simulasi <- data.frame(
  konsumsi_makanan_sehat = runif(n, 0, 100),  # Simulasi konsumsi makanan sehat (skor 0-100)
  olahraga = runif(n, 0, 10),  # Simulasi olahraga dalam jam per minggu
  risiko_penyakit_jantung = rbinom(n, 1, prob = 0.3)  # Simulasi status penyakit jantung (0 = Negatif, 1 = Positif)
)

# Menampilkan data pertama
head(data_simulasi)
##   konsumsi_makanan_sehat  olahraga risiko_penyakit_jantung
## 1               91.48060 8.4829322                       1
## 2               93.70754 0.6274633                       0
## 3               28.61395 8.1984509                       0
## 4               83.04476 5.3936029                       1
## 5               64.17455 4.9902010                       1
## 6               51.90959 0.2222732                       1

Estimasi GLM

# Estimasi model regresi logistik menggunakan fungsi glm
model <- glm(risiko_penyakit_jantung ~ konsumsi_makanan_sehat + olahraga, 
             data = data_simulasi, family = binomial)

# Ringkasan Model
summary(model)
## 
## Call:
## glm(formula = risiko_penyakit_jantung ~ konsumsi_makanan_sehat + 
##     olahraga, family = binomial, data = data_simulasi)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -1.031e+00  1.791e-01  -5.757 8.57e-09 ***
## konsumsi_makanan_sehat  4.468e-03  2.357e-03   1.896    0.058 .  
## olahraga               -1.486e-05  2.319e-02  -0.001    0.999    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1235.0  on 999  degrees of freedom
## Residual deviance: 1231.4  on 997  degrees of freedom
## AIC: 1237.4
## 
## Number of Fisher Scoring iterations: 4
# Odds ratio
exp(coef(model))  # Menghitung odds ratio
##            (Intercept) konsumsi_makanan_sehat               olahraga 
##              0.3567100              1.0044785              0.9999851
loglik <- function(beta) {
  eta <- beta[1] + beta[2] * data_simulasi$konsumsi_makanan_sehat + beta[3] * data_simulasi$olahraga
  p <- 1 / (1 + exp(-eta))
  
  # Batasi nilai p biar tidak menjadi 0 atau 1 murni
  p <- pmin(pmax(p, 1e-8), 1 - 1e-8)
  
  -sum(data_simulasi$risiko_penyakit_jantung * log(p) + (1 - data_simulasi$risiko_penyakit_jantung) * log(1 - p))
}

# Inisialisasi beta (koefisien awal)
init_beta <- c(0, 0, 0)
mle_manual <- optim(par = init_beta, fn = loglik, hessian = TRUE)

# Hasil estimasi koefisien
mle_manual$par
## [1] -1.0305436937  0.0044723629 -0.0001092084
# Odds ratio
exp(mle_manual$par)  # Menghitung odds ratio
## [1] 0.3568129 1.0044824 0.9998908
f_grad <- function(beta) {
  eta <- beta[1] + beta[2] * data_simulasi$konsumsi_makanan_sehat + beta[3] * data_simulasi$olahraga
  p <- 1 / (1 + exp(-eta))
  X <- model.matrix(~ konsumsi_makanan_sehat + olahraga, data = data_simulasi)
  t(X) %*% (data_simulasi$risiko_penyakit_jantung - p)
}

f_hess <- function(beta) {
  eta <- beta[1] + beta[2] * data_simulasi$konsumsi_makanan_sehat + beta[3] * data_simulasi$olahraga
  p <- 1 / (1 + exp(-eta))
  w <- p * (1 - p)
  X <- model.matrix(~ konsumsi_makanan_sehat + olahraga, data = data_simulasi)
  t(X) %*% (w * X)
}

beta <- c(0, 0, 0)
for (i in 1:10) {
  grad <- f_grad(beta)
  hess <- f_hess(beta)
  beta <- beta + solve(hess, grad)
}

beta
##                                 [,1]
## (Intercept)            -1.030832e+00
## konsumsi_makanan_sehat  4.468484e-03
## olahraga               -1.486398e-05
exp(beta)  # Menghitung odds ratio
##                             [,1]
## (Intercept)            0.3567100
## konsumsi_makanan_sehat 1.0044785
## olahraga               0.9999851
summary_fit <- summary(model)
beta_hat <- summary_fit$coefficients[, 1]
se_beta <- summary_fit$coefficients[, 2]
wald_stat <- (beta_hat / se_beta)^2
p_wald <- 1 - pchisq(wald_stat, df = 1)

cbind(Estimate = beta_hat, SE = se_beta, Wald_Stat = wald_stat, P_Value = p_wald)
##                             Estimate          SE    Wald_Stat      P_Value
## (Intercept)            -1.030832e+00 0.179060794 3.314170e+01 8.568118e-09
## konsumsi_makanan_sehat  4.468484e-03 0.002357352 3.593119e+00 5.801926e-02
## olahraga               -1.486398e-05 0.023185833 4.109839e-07 9.994885e-01

Visualisasi Model

# Menambahkan probabilitas prediksi ke data
data_simulasi$prob_pred <- predict(model, type = "response")

# Visualisasi kurva logistik
ggplot(data_simulasi, aes(x = konsumsi_makanan_sehat, y = risiko_penyakit_jantung)) +
  geom_jitter(height = 0.1, alpha = 0.1) +
  geom_line(aes(y = prob_pred), color = "blue", linewidth = 1) +  # Ganti size -> linewidth
  labs(title = "Model Regresi Logistik",
       x = "Konsumsi Makanan Sehat (Ya/Tidak)",
       y = "Probabilitas Menderita Penyakit Jantung") +
  theme_minimal()

Evaluasi Model

# Deviance
with(model, null.deviance - deviance)
## [1] 3.603796
# AIC
AIC(model)
## [1] 1237.378
# Confusion Matrix
pred_class <- ifelse(data_simulasi$prob_pred > 0.3, 1, 0)
table(Prediksi = pred_class, Aktual = data_simulasi$risiko_penyakit_jantung)
##         Aktual
## Prediksi   0   1
##        0 313 120
##        1 379 188

Berdasarkan hasil analisis regresi logistik terhadap data risiko penyakit jantung yang dipengaruhi oleh konsumsi makanan sehat dan olahraga, dapat disimpulkan sebagai berikut:

  1. Koefisien Regresi:

    • Intercept: \(\hat{\beta}_0 = -1.031\)
    • Koefisien \(\hat{\beta}_1 = 4.468 \times 10^{-3}\)
    • Koefisien \(\hat{\beta}_2 = -1.486 \times 10^{-5}\)
  2. Odds Ratio:

    • \(\exp(\hat{\beta}_0) = 0.3567\) → Peluang dasar untuk tidak menderita penyakit jantung pada nilai rata-rata konsumsi makanan sehat dan olahraga.
    • \(\exp(\hat{\beta}_1) = 1.0045\) → Setiap peningkatan 1 unit konsumsi makanan sehat meningkatkan peluang untuk tidak menderita penyakit jantung sebesar 0.45%.
    • \(\exp(\hat{\beta}_2) = 0.99999\) → Setiap peningkatan 1 jam olahraga per minggu mengurangi peluang untuk tidak menderita penyakit jantung sangat kecil (0.00001%).
  3. Signifikansi Statistik:

    • Hasil uji Wald menunjukkan bahwa Intercept dan konsumsi makanan sehat sangat signifikan secara statistik (p-value < 0.05).
    • Olahraga tidak menunjukkan signifikansi yang signifikan (p-value = 0.999), yang menunjukkan bahwa olahraga tidak berpengaruh besar terhadap risiko penyakit jantung dalam model ini.
  4. Evaluasi Model:

    • Deviance:
      • Null Deviance: 1235.0
      • Residual Deviance: 1231.4
      • Selisih Deviance: 3.60
    • AIC (Akaike Information Criterion): 1237.4
  5. Confusion Matrix:

    • Model berhasil mengklasifikasikan data dengan akurasi yang baik:

    Prediksi vs Aktual:
    Prediksi 0 Prediksi 1
    Aktual 0: 313 120
    Aktual 1: 379 188

  6. Kesimpulan Akhir:

    • Berdasarkan model regresi logistik ini, ditemukan bahwa konsumsi makanan sehat berpengaruh positif terhadap kemungkinan seseorang tidak menderita penyakit jantung, sedangkan olahraga tidak menunjukkan pengaruh yang signifikan.
    • Model ini menunjukkan bahwa faktor konsumsi makanan sehat lebih berpengaruh dalam menentukan status penyakit jantung, dengan hasil yang signifikan secara statistik.

4.7 Poisson Regression

4.7.1 Definisi

Poisson regression adalah jenis Generalized Linear Model (GLM) yang digunakan untuk menganalisis data bertipe count (jumlah kejadian dalam suatu waktu/ruang). Model ini sangat relevan ketika (Widyaningsih, 2023):

  • Variabel respons \(Y \in \mathbb{Z}^+\) (bilangan bulat non-negatif)
  • Distribusi data mengikuti distribusi Poisson:
    \[ P(Y = y) = \frac{e^{-\mu}\mu^y}{y!}, \quad y = 0, 1, 2, \dots \]
  • Mean dan varians bersifat identik:
    \[ E(Y) = \mu, \quad Var(Y) = \mu \]

4.7.2 Fungsi

Fungsi utama Poisson Regression adalah untuk: - Memprediksi jumlah kejadian (counts) dari variabel dependen Y berdasarkan variabel independen X. - Menjelaskan pengaruh predictor (X) terhadap jumlah rata-rata kejadian.

Cocok digunakan untuk: - Jumlah pelanggan datang dalam sehari. - Jumlah kecelakaan di suatu wilayah. - Jumlah kesalahan produksi per batch, dll.

4.7.3 Model

Model Poisson secara umum:

\[\log(\mu_i) = \eta_i = \beta_0 + \beta_1 X_{i1} + \dots + \beta_p X_{ip}\]

atau

\[\mu_i = \exp(\beta_0 + \beta_1 X_{i1} + \dots + \beta_p X_{ip})\]

  • Link function: \(g(\mu) = \log(\mu)\)
  • Random component: \(Y_i \sim \text{Poisson}(\mu_i)\)
  • Systematic component: \(\eta = X\beta\)

4.7.4 Estimasi Parameter: Maximum Likelihood

Log-likelihood dari model Poisson:

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

Dengan substitusi \(\mu_i = e^{x_i^T \beta}\):

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

Estimator \(\hat{\beta}\) diperoleh dengan memaksimalkan log-likelihood secara numerik (misalnya dengan glm() di R).

4.7.5 Estimasi Alternatif: Iteratively Reweighted Least Squares (IRLS)

IRLS adalah metode numerik umum dalam GLM. Prosedurnya:

  1. Tentukan starting value \(\beta^{(0)}\)
  2. Ulangi:
    • Hitung \(\mu^{(t)} = g^{-1}(X \beta^{(t)})\)
    • Hitung matriks bobot: \(W = \text{diag}(\mu^{(t)})\)
    • Update \(\beta^{(t+1)} = (X^T W X)^{-1} X^T W z\), di mana \(z = X\beta^{(t)} + (Y - \mu^{(t)}) / \mu^{(t)}\)

Sampai konvergen (perubahan kecil pada \(\beta\)). Referensi: Dobson (1983, Ch. 4)【40:3†source】

4.7.6 Penaksir Parameter

Uji Wald

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

Likelihood Ratio Test (LRT)

\[G^2 = -2 [\ell(H_0) - \ell(H_1)] \sim \chi^2_{df}\]

Confidence Interval

\[CI_{\beta_j} = \hat{\beta}_j \pm z_{\alpha/2} SE(\hat{\beta}_j)\]

4.7.7 Evaluasi Model

Akaike Information Criterion (AIC)

\[\text{AIC} = -2 \ell(\hat{\beta}) + 2k\]

Bayesian Information Criterion (BIC)

\[\text{BIC} = -2 \ell(\hat{\beta}) + k \log(n)\]

  • Semakin kecil AIC/BIC, model dianggap lebih baik (dengan penalti kompleksitas).

Goodness-of-Fit

  • Pearson residual: \(r_i = \frac{y_i - \mu_i}{\sqrt{\mu_i}}\)
  • Deviance residual
  • Overdispersion: jika \(Var(Y) > E(Y)\), maka gunakan Negative Binomial Regression.

4.7.8 Contoh Kasus Regresi Poisson

Kasus

Data ini diambil dari Open Data Jawa Barat (2021) yang mencatat jumlah kasus HIV/AIDS berdasarkan kabupaten/kota di Provinsi Jawa Barat. Salah satu faktor yang diasumsikan memengaruhi jumlah kasus adalah jumlah fasilitas kesehatan per 100.000 penduduk.

Tujuan analisis ini adalah untuk melihat apakah jumlah fasilitas kesehatan memiliki pengaruh signifikan terhadap jumlah kasus HIV/AIDS menggunakan Poisson Regression.

Import dan Eksplorasi Data

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.3
## Warning: package 'tidyr' was built under R version 4.3.3
## Warning: package 'readr' was built under R version 4.3.3
## Warning: package 'purrr' was built under R version 4.3.3
## Warning: package 'stringr' was built under R version 4.3.3
## Warning: package 'forcats' was built under R version 4.3.3
## Warning: package 'lubridate' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ✔ readr     2.1.5     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter()    masks stats::filter()
## ✖ dplyr::lag()       masks stats::lag()
## ✖ dplyr::select()    masks MASS::select()
## ✖ dplyr::summarise() masks vcdExtra::summarise()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(broom)
library(ggplot2)
library(numDeriv)
data <- read.csv("C:\\Users\\HP\\Documents\\KULIAH\\SEMESTER 4\\ADK\\HIV.csv", sep=";", dec=".")
data$FASKES_SCALED <- scale(data$FASILITAS_100000POP)
head(data)
##     KABUPATEN FASILITAS_100000POP KASUS_HIV FASKES_SCALED
## 1       Bogor                  99       430    -0.5457097
## 2    Sukabumi                 132       117     0.8435112
## 3     Cianjur                 122       111     0.4225352
## 4     Bandung                 121       225     0.3804376
## 5       Garut                 163       172     2.1485369
## 6 Tasikmalaya                 131        68     0.8014136
summary(data)
##   KABUPATEN         FASILITAS_100000POP   KASUS_HIV       FASKES_SCALED.V1  
##  Length:27          Min.   : 58         Min.   :  4.0   Min.   :-2.2717114  
##  Class :character   1st Qu.: 99         1st Qu.: 83.5   1st Qu.:-0.5457097  
##  Mode  :character   Median :110         Median :123.0   Median :-0.0826360  
##                     Mean   :112         Mean   :167.8   Mean   : 0.0000000  
##                     3rd Qu.:129         3rd Qu.:235.5   3rd Qu.: 0.7172184  
##                     Max.   :163         Max.   :430.0   Max.   : 2.1485369

Pemodelan Poisson Regression (via GLM)

Model Poisson cocok untuk data count (hiv_aids), dan kita gunakan: \[ \log(\mu_i) = \beta_0 + \beta_1 x_i \]

dengan \(x_i\) adalah jumlah fasilitas kesehatan per 100 ribu penduduk.

model <- glm(KASUS_HIV ~ FASKES_SCALED, data = data, family = poisson)
summary(model)
## 
## Call:
## glm(formula = KASUS_HIV ~ FASKES_SCALED, family = poisson, data = data)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    5.07117    0.01559  325.21   <2e-16 ***
## FASKES_SCALED -0.32440    0.01474  -22.02   <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: 2024.7  on 26  degrees of freedom
## Residual deviance: 1547.7  on 25  degrees of freedom
## AIC: 1731.4
## 
## Number of Fisher Scoring iterations: 5
exp(coef(model))  # Odds ratio
##   (Intercept) FASKES_SCALED 
##   159.3610488     0.7229642

Estimasi MLE Secara Manual dan Newton-Raphson

Log-Likelihood Manual + Optim

loglik <- function(beta) {
  eta <- beta[1] + beta[2] * data$FASKES_SCALED
  mu <- exp(eta)
  -sum(data$KASUS_HIV * log(mu) - mu - lgamma(data$KASUS_HIV + 1))
}

init_beta <- c(0, 0)
mle_manual <- optim(par = init_beta, fn = loglik, hessian = TRUE)
mle_manual$par
## [1]  5.0709520 -0.3247086
exp(mle_manual$par)
## [1] 159.3259264   0.7227379

Newton-Raphson

# Gradient
f_grad <- function(beta) {
  eta <- beta[1] + beta[2] * data$FASKES_SCALED
  mu <- exp(eta)
  X <- model.matrix(~ FASILITAS_100000POP, data)
  t(X) %*% (data$KASUS_HIV - mu)
}

# Hessian
f_hess <- function(beta) {
  eta <- beta[1] + beta[2] * data$FASKES_SCALED
  mu <- exp(eta)
  X <- model.matrix(~ FASILITAS_100000POP, data)
  W <- diag(as.numeric(mu))
  t(X) %*% W %*% X
}

beta_nr <- c(0, 0)
for (i in 1:10) {
  grad <- f_grad(beta_nr)
  hess <- f_hess(beta_nr)
  beta_nr <- beta_nr + solve(hess, grad)
}
beta_nr
##                           [,1]
## (Intercept)         421.976530
## FASILITAS_100000POP  -2.359367
exp(beta_nr)
##                              [,1]
## (Intercept)         1.828430e+183
## FASILITAS_100000POP  9.448001e-02

Evaluasi Model

AIC(model)
## [1] 1731.361
BIC(model)
## [1] 1733.953
model$deviance
## [1] 1547.697
model$null.deviance
## [1] 2024.695

Deteksi Overdispersion

overdispersion <- model$deviance / model$df.residual
overdispersion
## [1] 61.90786

Inferensi Parameter: Uji Wald

coefs <- summary(model)$coefficients
beta_hat <- coefs[,1]
se_beta <- coefs[,2]
wald_stat <- (beta_hat / se_beta)^2
p_value <- 1 - pchisq(wald_stat, df = 1)

cbind(Estimate = beta_hat, StdError = se_beta, Wald_Stat = wald_stat, P_Value = p_value)
##                 Estimate   StdError   Wald_Stat P_Value
## (Intercept)    5.0711724 0.01559354 105761.3635       0
## FASKES_SCALED -0.3243955 0.01473522    484.6592       0

Visualisasi Model

data$predicted <- predict(model, type = "response")

ggplot(data, aes(x = FASKES_SCALED, y = KASUS_HIV)) +
  geom_point(color = "darkred") +
  geom_line(aes(y = predicted), color = "blue", linewidth = 1) +
  labs(title = "Poisson Regression: Jumlah Faskes vs Kasus HIV/AIDS",
       x = "Fasilitas Kesehatan per 100.000 Penduduk",
       y = "Jumlah Kasus HIV/AIDS") +
  theme_minimal()

Kesimpulan

Berdasarkan hasil analisis regresi Poisson terhadap hubungan antara jumlah fasilitas kesehatan per 100.000 penduduk dan jumlah kasus HIV di 27 kabupaten/kota di Jawa Barat tahun 2021, diperoleh kesimpulan sebagai berikut:

  1. Koefisien regresi menunjukkan pengaruh signifikan secara statistik:
    • Intercept: \(\hat{\beta}_0 = 5.071\)
    • Koefisien \(\hat{\beta}_1 = -0.324\), dengan nilai \(\exp(\beta_1) = 0.723\)
    • Artinya: setiap peningkatan 1 standar deviasi pada jumlah fasilitas kesehatan per 100.000 penduduk akan menurunkan expected count kasus HIV sebesar 27.7%.
  2. Inferensi:
    • Hasil uji Wald menunjukkan kedua parameter sangat signifikan (p-value < 0.001).
    • Estimasi \(\beta\) melalui MLE glm() dan optim() menghasilkan nilai yang hampir identik, menunjukkan kestabilan numerik model.
  3. Evaluasi model:
    • AIC: 1731.36, BIC: 1733.95
    • Null deviance: 2024.70 → Residual deviance: 1547.70
    • Namun, rasio overdispersion = 61.91 \(\gg 1\) → mengindikasikan overdispersion yang serius, melanggar asumsi Poisson bahwa \(\text{Var}(Y) = \mathbb{E}(Y)\)
  4. Visualisasi memperlihatkan tren log-linier negatif antara jumlah fasilitas kesehatan dan jumlah kasus HIV, sesuai hasil estimasi.

Model Poisson mampu menangkap hubungan negatif signifikan antara ketersediaan fasilitas kesehatan dan insiden HIV/AIDS. Akan tetapi, tingginya overdispersion menyarankan penggunaan model alternatif seperti Negative Binomial Regression atau quasi-Poisson untuk mendapatkan inferensi parameter yang lebih robust.

5 Regresi Logistik dengan Prediktor Nominal, Ordinal, dan Rasio

5.1 Pendahuluan

Dalam studi ini, kita akan membahas regresi logistik untuk memodelkan sebuah variabel dependen biner yang dipengaruhi oleh tiga jenis variabel prediktor:

  1. Nominal: Kategori tanpa urutan (misalnya, Jenis Kelamin: Pria atau Wanita).
  2. Ordinal: Kategori dengan urutan tetapi jarak antar kategori tidak diketahui (misalnya, Tingkat Kepuasan: Buruk, Cukup, Baik).
  3. Rasio: Variabel kontinu yang memiliki nol absolut dan perbedaan yang bermakna antar nilai (misalnya, Usia, Pendapatan).

Kita akan menyimulasikan data untuk Tingkat Kepuasan (ordinal), Usia (rasio), dan Jenis Kelamin (nominal) untuk memprediksi Pilihannya (biner: apakah membeli produk atau tidak). Kita juga akan melakukan perlakuan variabel ordinal, yaitu memperlakukannya sebagai nominal dan rasio, untuk melihat bagaimana perbedaan tersebut mempengaruhi hasil model.

Simulasi Data

Langkah pertama adalah mensimulasikan data untuk Usia, Jenis Kelamin, dan Tingkat Kepuasan.

# Set seed untuk reprodusibilitas
set.seed(123)

# Jumlah data
n <- 200

# Simulasi variabel prediktor
Usia <- round(rnorm(n, mean = 30, sd = 7))  # Usia individu (Rasio)
JenisKelamin <- rbinom(n, 1, 0.5)  # Jenis Kelamin (Nominal: 0 = Pria, 1 = Wanita)
TingkatKepuasan <- sample(1:3, n, replace = TRUE, prob = c(0.3, 0.4, 0.3))  # Tingkat Kepuasan (Ordinal: 1=Buruk, 2=Cukup, 3=Baik)

# Variabel dependen (Apakah membeli produk atau tidak)
Pilihannya <- rbinom(n, 1, 0.5)

# Membuat data frame
df <- data.frame(Pilihannya = factor(Pilihannya, levels = c(0, 1), labels = c("Tidak", "Ya")),
                 Usia, 
                 JenisKelamin = factor(JenisKelamin, levels = c(0, 1), labels = c("Pria", "Wanita")),
                 TingkatKepuasan = factor(TingkatKepuasan, levels = c(1, 2, 3), labels = c("Buruk", "Cukup", "Baik")))

# Melihat beberapa baris pertama dari dataset
head(df)
##   Pilihannya Usia JenisKelamin TingkatKepuasan
## 1      Tidak   26       Wanita           Cukup
## 2      Tidak   28         Pria            Baik
## 3      Tidak   41       Wanita           Cukup
## 4      Tidak   30       Wanita           Cukup
## 5      Tidak   31         Pria           Cukup
## 6         Ya   42         Pria           Buruk

5.2 Pembuatan Model

# Memuat paket yang diperlukan
library(nnet)
## Warning: package 'nnet' was built under R version 4.3.3
# Membangun model regresi logistik
model_full <- glm(Pilihannya ~ Usia + JenisKelamin + TingkatKepuasan, data = df, family = binomial)

# Menampilkan ringkasan Model
summary(model_full)
## 
## Call:
## glm(formula = Pilihannya ~ Usia + JenisKelamin + TingkatKepuasan, 
##     family = binomial, data = df)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)
## (Intercept)           0.044987   0.695678   0.065    0.948
## Usia                 -0.003813   0.021611  -0.176    0.860
## JenisKelaminWanita    0.127084   0.284633   0.446    0.655
## TingkatKepuasanCukup  0.074852   0.338682   0.221    0.825
## TingkatKepuasanBaik   0.193070   0.370840   0.521    0.603
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 276.94  on 199  degrees of freedom
## Residual deviance: 276.47  on 195  degrees of freedom
## AIC: 286.47
## 
## Number of Fisher Scoring iterations: 3

5.3 Menangani Variabel Ordinal sebagai Nominal dan Rasio

Kita akan mencoba dua pendekatan berbeda dalam memperlakukan variabel TingkatKepuasan yang bersifat ordinal.

  • Sebagai Nominal: Menganggap TingkatKepuasan sebagai variabel nominal tanpa urutan.

  • Sebagai Rasio: Menganggap TingkatKepuasan sebagai variabel rasio (misalnya, 1 untuk Buruk, 2 untuk Cukup, 3 untuk Baik).

# Mengubah TingkatKepuasan menjadi variabel nominal
df$TingkatKepuasan_nominal <- factor(df$TingkatKepuasan, levels = c("Buruk", "Cukup", "Baik"))

# Model dengan TingkatKepuasan sebagai nominal
model_nominal <- glm(Pilihannya ~ Usia + JenisKelamin + TingkatKepuasan_nominal, data = df, family = binomial)

# Menampilkan ringkasan Model Nominal
summary(model_nominal)
## 
## Call:
## glm(formula = Pilihannya ~ Usia + JenisKelamin + TingkatKepuasan_nominal, 
##     family = binomial, data = df)
## 
## Coefficients:
##                               Estimate Std. Error z value Pr(>|z|)
## (Intercept)                   0.044987   0.695678   0.065    0.948
## Usia                         -0.003813   0.021611  -0.176    0.860
## JenisKelaminWanita            0.127084   0.284633   0.446    0.655
## TingkatKepuasan_nominalCukup  0.074852   0.338682   0.221    0.825
## TingkatKepuasan_nominalBaik   0.193070   0.370840   0.521    0.603
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 276.94  on 199  degrees of freedom
## Residual deviance: 276.47  on 195  degrees of freedom
## AIC: 286.47
## 
## Number of Fisher Scoring iterations: 3
# Model dengan TingkatKepuasan sebagai rasio
model_ordinal <- glm(Pilihannya ~ Usia + JenisKelamin + as.numeric(TingkatKepuasan), data = df, family = binomial)

# Menampilkan ringkasan Model Ordinal
summary(model_ordinal)
## 
## Call:
## glm(formula = Pilihannya ~ Usia + JenisKelamin + as.numeric(TingkatKepuasan), 
##     family = binomial, data = df)
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)
## (Intercept)                 -0.058170   0.743790  -0.078    0.938
## Usia                        -0.003833   0.021610  -0.177    0.859
## JenisKelaminWanita           0.125692   0.284019   0.443    0.658
## as.numeric(TingkatKepuasan)  0.096097   0.185289   0.519    0.604
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 276.94  on 199  degrees of freedom
## Residual deviance: 276.48  on 196  degrees of freedom
## AIC: 284.48
## 
## Number of Fisher Scoring iterations: 3

5.4 Visualisasi dan Grafik

Berikut adalah visualisasi ROC Curve dan Precision-Recall Curve untuk mengevaluasi model.

library(dplyr) 
library(ggplot2)

# Simulasi data nominal dan ordinal
sim_data_nominal <- df %>%
  mutate(predicted = predict(model_nominal, type = "response"))

sim_data_numeric <- df %>%
  mutate(predicted = predict(model_ordinal, type = "response"))

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

# Plot untuk model ordinal
sim_data_numeric %>%
  ggplot(aes(x = Usia, y = predicted, color = TingkatKepuasan)) +
  geom_point(alpha = 0.6) +
  labs(title = "Prediksi Probabilitas (Ordinal sebagai Rasio)", 
       x = "Usia", 
       y = "Prediksi Probabilitas") +
  theme_minimal()

Dalam analisis ini, kita membandingkan dua pendekatan dalam memperlakukan variabel ordinal, yaitu Tingkat Kepuasan (Buruk, Cukup, Baik):

  1. Sebagai Nominal (tanpa mempertimbangkan urutan kategorinya).
  2. Sebagai Rasio/Ordinal (mempertimbangkan urutan kategorinya dalam model).

Prediksi probabilitas dari masing-masing pendekatan diplot terhadap variabel Usia.

Ordinal Sebagai Nominal - Ketika Tingkat Kepuasan diperlakukan sebagai variabel nominal, model tidak mempertimbangkan bahwa “Buruk” < “Cukup” < “Baik”. - Pola hubungan antara Usia dan probabilitas masing-masing kategori terlihat tidak konsisten antar kategori. Meskipun semua cenderung menurun, tingkat penurunan berbeda-beda dan tidak memperlihatkan keteraturan ordinal yang jelas. - Model ini kurang optimal jika memang Tingkat Kepuasan bersifat ordinal, karena kehilangan informasi penting dari urutan kategori.

Ordinal Sebagai Rasio - Ketika Tingkat Kepuasan diperlakukan sebagai variabel ordinal, model mempertimbangkan bahwa kategori memiliki urutan yang logis. - Hasil prediksi menunjukkan pola yang lebih teratur: - Probabilitas kategori “Buruk” menurun seiring bertambahnya usia. - Probabilitas “Cukup” dan “Baik” cenderung meningkat atau stabil pada usia tertentu. - Model ini memberikan hasil yang lebih masuk akal dan mencerminkan struktur ordinal dari variabel dependen.

5.5 Evaluasi Model

McFadden’s Pseudo \(R^2\) adalah salah satu metode yang sering digunakan untuk mengevaluasi kualitas model regresi logistik. Ini adalah ukuran seberapa baik model regresi logistik sesuai dengan data, dengan membandingkan log-likelihood model yang diperkirakan dengan log-likelihood model yang hanya memuat intercept (model null).

Secara umum, McFadden’s Pseudo \(R^2\) dihitung menggunakan rumus berikut:

\[ \text{McFadden's Pseudo } R^2 = 1 - \frac{\text{log-likelihood model penuh}}{\text{log-likelihood model null}} \]

Dimana: - log-likelihood model penuh adalah log-likelihood yang dihasilkan oleh model dengan prediktor. - log-likelihood model null adalah log-likelihood yang dihasilkan oleh model hanya dengan intercept (tanpa prediktor).

Nilai McFadden’s Pseudo \(R^2\) berkisar antara 0 hingga 1, di mana nilai yang lebih tinggi menunjukkan bahwa model memberikan fit yang lebih baik pada data.

# Menghitung log-likelihood dari model penuh
loglik_full <- logLik(model_full)

# Model null (tanpa prediktor)
model_null <- glm(Pilihannya ~ 1, data = df, family = binomial)
loglik_null <- logLik(model_null)

# McFadden's Pseudo-R-squared
pseudo_r2 <- 1 - (loglik_full / loglik_null)
pseudo_r2
## 'log Lik.' 0.00168062 (df=5)

5.6 Kesimpulan

Dalam analisis ini, kami membangun model regresi logistik untuk memprediksi Pilihannya (apakah konsumen membeli produk atau tidak) berdasarkan variabel prediktor Usia, JenisKelamin, dan TingkatKepuasan. Kami melakukan dua model, yaitu TingkatKepuasan sebagai Nominal dan TingkatKepuasan sebagai Rasio, serta mengevaluasi model menggunakan McFadden’s Pseudo \(R^2\) dan Confusion Matrix.

Hasil Model 1. Model dengan TingkatKepuasan sebagai Nominal: - Koefisien Intercept: Nilai p-value untuk intercept sangat tinggi (0.948), menunjukkan bahwa intercept tidak signifikan. - Usia: Koefisien untuk Usia (-0.0038) menunjukkan pengaruh negatif terhadap kemungkinan membeli produk, tetapi p-value-nya sangat tinggi (0.860), yang menunjukkan bahwa Usia tidak berpengaruh signifikan. - JenisKelamin (Wanita): Koefisien JenisKelaminWanita (0.1271) menunjukkan pengaruh positif terhadap kemungkinan membeli produk, namun p-value (0.655) menunjukkan bahwa pengaruhnya tidak signifikan. - TingkatKepuasan (Cukup) dan TingkatKepuasan (Baik) menunjukkan pengaruh positif, tetapi p-value-nya juga sangat tinggi (0.825 dan 0.603), yang menunjukkan tidak ada pengaruh signifikan.

  1. Model dengan TingkatKepuasan sebagai Rasio:
    • Koefisien Intercept: Nilai p-value untuk intercept juga sangat tinggi (0.938), menandakan ketidakberartian pengaruhnya.
    • Usia: Koefisien untuk Usia (-0.0038) menunjukkan pengaruh negatif terhadap kemungkinan membeli produk, dengan p-value (0.859) menunjukkan pengaruh yang tidak signifikan.
    • JenisKelamin (Wanita): Koefisien untuk JenisKelaminWanita (0.1257) menunjukkan pengaruh positif, tetapi p-value (0.658) menunjukkan bahwa pengaruhnya tidak signifikan.
    • TingkatKepuasan (Ordinal): Koefisien untuk TingkatKepuasan sebagai rasio (0.0961) menunjukkan pengaruh positif, tetapi p-value (0.604) menunjukkan bahwa pengaruhnya tidak signifikan.

Evaluasi Model 1. McFadden’s Pseudo \(R^2\): - Nilai McFadden’s Pseudo \(R^2\) sebesar 0.00168 menunjukkan bahwa model ini tidak mampu menjelaskan variansi dalam data dengan baik, mengindikasikan bahwa model ini kurang cocok untuk data yang digunakan.

  1. Confusion Matrix:
    • Hasil Confusion Matrix menunjukkan bahwa model kesulitan dalam memprediksi kategori Tidak, dengan akurasi yang rendah. Model ini cenderung menghasilkan prediksi yang salah.

Kesimpulan Umum Berdasarkan hasil model regresi logistik: - Model dengan TingkatKepuasan sebagai Nominal dan rasio menunjukkan bahwa Usia, JenisKelamin, dan TingkatKepuasan tidak memberikan pengaruh signifikan terhadap Pilihannya. Semua koefisien memiliki p-value lebih besar dari 0.05, yang menunjukkan bahwa variabel-variabel tersebut tidak mempengaruhi prediksi secara signifikan. - McFadden’s Pseudo \(R^2\) yang sangat rendah (0.00168) mengindikasikan bahwa model tidak efektif dalam menjelaskan variasi data. - Confusion Matrix menunjukkan bahwa model tidak efektif dalam memprediksi kelas Tidak, dengan akurasi yang rendah. - Visualisasi dengan ggplot2 memberikan gambaran mengenai bagaimana Usia berpengaruh terhadap probabilitas pembelian, baik ketika TingkatKepuasan diperlakukan sebagai nominal maupun rasio.

Secara keseluruhan, model ini membutuhkan perbaikan lebih lanjut, baik dari segi pemilihan prediktor atau teknik model yang lebih kompleks.

6 Pemilihan Model Regresi Logistik

6.1 Pendekatan Confirmatory dan Exploratory dalam Model Regresi Logistik

Dalam analisis data, terdapat dua pendekatan utama dalam membangun model statistik, yaitu pendekatan confirmatory dan pendekatan exploratory. Kedua pendekatan ini memiliki tujuan dan teknik yang berbeda dalam memahami data dan membangun model.

Pendekatan confirmatory bertujuan untuk menguji hipotesis atau teori yang sudah ada sebelumnya. Dalam pendekatan ini, analisis dilakukan dengan menggunakan model yang telah ditentukan sebelumnya, dan model tersebut diuji untuk memverifikasi apakah data mendukung hipotesis atau teori tersebut. Biasanya, analisis confirmatory lebih terstruktur dan terfokus pada pengujian asumsi yang ada.

Ciri-ciri Pendekatan Confirmatory: - Tujuan: Untuk menguji teori atau hipotesis yang sudah ada. - Pendekatan: Model sudah ditentukan sebelumnya. - Analisis: Menggunakan uji statistik untuk memverifikasi hubungan antara variabel yang sudah diasumsikan. - Contoh Teknik: Uji hipotesis, regresi yang telah ditentukan sebelumnya, uji goodness-of-fit, dll.

Model confirmatory sering digunakan dalam penelitian yang lebih bersifat eksperimental, di mana variabel yang relevan sudah ditentukan terlebih dahulu.

Pendekatan exploratory lebih bersifat terbuka dan fleksibel. Dalam pendekatan ini, peneliti tidak memiliki hipotesis yang pasti di awal, dan tujuannya adalah untuk menemukan pola atau hubungan dalam data. Pendekatan ini sering kali digunakan ketika peneliti belum memiliki pengetahuan yang jelas tentang hubungan antara variabel, dan lebih fokus pada eksplorasi data untuk menemukan wawasan baru.

Ciri-ciri Pendekatan Exploratory: - Tujuan: Untuk mengeksplorasi data dan mencari pola atau hubungan baru. - Pendekatan: Model tidak ditentukan sebelumnya. - Analisis: Digunakan untuk memahami struktur data dan mencari hubungan yang mungkin belum diketahui. - Contoh Teknik: Analisis faktor, analisis klaster, analisis multivariat, dan teknik-teknik yang memungkinkan eksplorasi data.

Pendekatan exploratory sangat berguna dalam tahap awal penelitian untuk mendapatkan pemahaman yang lebih baik tentang data, atau saat data belum sepenuhnya dipahami.

Perbandingan Antara Pendekatan Confirmatory dan Exploratory

Aspek Confirmatory Exploratory
Tujuan Menguji hipotesis atau teori yang sudah ada Menemukan pola atau hubungan yang belum diketahui
Model Sudah ditentukan sebelumnya Ditemukan selama proses analisis
Teknik Uji hipotesis, regresi, uji goodness-of-fit Analisis faktor, klaster, dan eksplorasi data
Jenis Penelitian Penelitian eksperimen, pengujian teori Penelitian awal, pencarian wawasan baru

Dalam konteks regresi logistik, pendekatan confirmatory digunakan ketika kita memiliki teori atau hipotesis yang spesifik tentang bagaimana prediktor (variabel independen) mempengaruhi probabilitas hasil biner (variabel dependen). Sebaliknya, pendekatan exploratory dapat digunakan saat kita tidak memiliki pemahaman yang jelas tentang variabel mana yang harus dimasukkan dalam model, sehingga memungkinkan kita untuk mengeksplorasi berbagai prediktor yang ada.

6.2 Teori Dasar Model Regresi Logistik

Formulasi umum dari model regresi logistik adalah:

\[ \log \left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]

di mana: - \(p\) adalah probabilitas kejadian (misalnya, sukses), - \(\frac{p}{1-p}\) adalah odds, - \(\beta_0, \beta_1, \dots, \beta_k\) adalah koefisien regresi yang akan diestimasi.

6.3 Metode Stepwise

Metode stepwise dapat digunakan untuk memilih variabel terbaik dalam model. Berikut adalah sintaks untuk melakukan stepwise regression di R menggunakan AIC.

6.3.1 Forward Selection

Forward selection dimulai dengan model kosong dan menambahkan variabel satu per satu berdasarkan kriteria AIC.

# Memuat library yang dibutuhkan
library(dplyr)
library(ggplot2)
library(caret)
## Warning: package 'caret' was built under R version 4.3.3
## Loading required package: lattice
## 
## Attaching package: 'lattice'
## The following object is masked from 'package:gnm':
## 
##     barley
## 
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
## 
##     lift
## The following objects are masked from 'package:DescTools':
## 
##     MAE, RMSE
library(pROC)
## Warning: package 'pROC' was built under R version 4.3.3
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
# Set seed untuk reprodusibilitas
set.seed(123)

# Jumlah data
n <- 200

# Simulasi variabel independen
x1 <- rnorm(n)  # Variabel prediktor pertama (misalnya mpg)
x2 <- rbinom(n, 1, 0.5)  # Variabel prediktor kedua (misalnya cyl)
x3 <- rnorm(n)  # Variabel prediktor ketiga (misalnya hp)

# Membuat prediktor linier
lin_pred <- -0.5 + 1.2 * x1 - 0.8 * x2 + 0.5 * x3

# Menghitung probabilitas menggunakan fungsi logistik
p <- 1 / (1 + exp(-lin_pred))

# Membuat variabel dependen biner (vs)
y <- rbinom(n, 1, p)

# Membuat data frame
df <- data.frame(y, x1, x2, x3)

# Melihat beberapa baris pertama dari dataset
head(df)
##   y          x1 x2         x3
## 1 0 -0.56047565  1 -0.7152422
## 2 0 -0.23017749  0 -0.7526890
## 3 1  1.55870831  1 -0.9385387
## 4 1  0.07050839  1 -1.0525133
## 5 1  0.12928774  0 -0.4371595
## 6 1  1.71506499  0  0.3311792
# Membangun model regresi logistik
model_full <- glm(y ~ x1 + x2 + x3, data = df, family = binomial)

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

6.3.2 Backward Selection

Backward elimination dimulai dengan model penuh dan secara bertahap menghapus variabel yang paling tidak signifikan.

# Backward Stepwise Selection
step_backward <- step(model_full, direction = "backward", trace = 0)
summary(step_backward)
## 
## Call:
## glm(formula = y ~ x1 + x3, family = binomial, data = df)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.8393     0.1806  -4.648 3.35e-06 ***
## x1            1.3961     0.2298   6.076 1.23e-09 ***
## x3            0.3593     0.1702   2.110   0.0348 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 257.72  on 199  degrees of freedom
## Residual deviance: 203.20  on 197  degrees of freedom
## AIC: 209.2
## 
## Number of Fisher Scoring iterations: 4

6.3.3 Backward Selection

Backward elimination dimulai dengan model penuh dan secara bertahap menghapus variabel yang paling tidak signifikan.

# Backward Stepwise Selection
step_backward <- step(model_full, direction = "backward", trace = 0)
summary(step_backward)
## 
## Call:
## glm(formula = y ~ x1 + x3, family = binomial, data = df)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.8393     0.1806  -4.648 3.35e-06 ***
## x1            1.3961     0.2298   6.076 1.23e-09 ***
## x3            0.3593     0.1702   2.110   0.0348 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 257.72  on 199  degrees of freedom
## Residual deviance: 203.20  on 197  degrees of freedom
## AIC: 209.2
## 
## Number of Fisher Scoring iterations: 4

6.3.4 Both Direction

Metode “both” menggabungkan kedua metode di atas.

# Stepwise Selection - Both Directions
step_both <- step(model_full, direction = "both", trace = 0)
summary(step_both)
## 
## Call:
## glm(formula = y ~ x1 + x3, family = binomial, data = df)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.8393     0.1806  -4.648 3.35e-06 ***
## x1            1.3961     0.2298   6.076 1.23e-09 ***
## x3            0.3593     0.1702   2.110   0.0348 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 257.72  on 199  degrees of freedom
## Residual deviance: 203.20  on 197  degrees of freedom
## AIC: 209.2
## 
## Number of Fisher Scoring iterations: 4

6.4 Evaluasi Model

6.4.1 Pseudo R-Squared

Untuk menghitung McFadden’s Pseudo-R-squared, kita akan menggunakan log-likelihood dari model penuh dan model null.

# Menghitung Pseudo-R-squared McFadden
logLik_full <- logLik(step_both)
model_null <- glm(y ~ 1, data = df, family = binomial)
logLik_null <- logLik(model_null)

pseudo_r2 <- 1 - (logLik_full / logLik_null)
pseudo_r2
## 'log Lik.' 0.2115439 (df=3)

6.4.2 Tabel Klasifikasi

Tabel klasifikasi menunjukkan jumlah prediksi yang benar dan salah untuk model.

# Membuat prediksi dengan probabilitas 0.5 sebagai batas keputusan
pred_prob <- predict(step_both, type = "response")
pred_class <- ifelse(pred_prob > 0.5, 1, 0)

# Mengonversi prediksi dan nilai sebenarnya menjadi faktor
pred_class <- factor(pred_class, levels = c(0, 1))
df$y <- factor(df$y, levels = c(0, 1))

# Memuat library untuk confusionMatrix
library(caret)

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

6.4.3 Likelihood Ratio Test

Untuk membandingkan model penuh dan model null, kita menggunakan Likelihood Ratio Test.

# Likelihood Ratio Test
G2 <- 2 * (logLik_full - logLik_null)
G2
## 'log Lik.' 54.51879 (df=3)

6.4.4 Prinsip Parsimony

Prinsip parsimony mengacu pada pemilihan model yang lebih sederhana yang masih memberikan penjelasan yang baik terhadap data. Model yang lebih sedikit variabel dan tetap memberikan kinerja yang baik lebih disukai.

6.4.5 ROC dan AUC

Untuk mengevaluasi kinerja model, kita dapat menggunakan Receiver Operating Characteristic (ROC) curve dan Area Under the Curve (AUC). ROC adalah kurva yang menggambarkan kinerja model klasifikasi dengan membandingkan True Positive Rate (TPR) dan False Positive Rate (FPR).

# Install and load the pROC package
library(pROC)

# ROC curve dan AUC
roc_curve <- roc(df$y, pred_prob)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_curve, col = "blue", main = "ROC Curve")

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

Berdasarkan grafik ROC Curve yang dihasilkan, dapat disimpulkan bahwa model klasifikasi yang digunakan memiliki performa yang sangat baik. Hal ini terlihat dari:

  • Kurva ROC yang melengkung tajam ke arah kiri atas grafik, menunjukkan bahwa model mampu membedakan dengan baik antara kelas positif dan negatif.
  • ROC curve berada jauh di atas garis diagonal (baseline) yang merepresentasikan tebakan acak, sehingga model memiliki kinerja yang lebih baik dari sekadar random guess.
  • Meskipun nilai AUC (Area Under the Curve) tidak tercantum secara eksplisit, bentuk kurva mengindikasikan bahwa AUC berada pada kisaran 0.85 hingga 0.95, yang mengindikasikan kualitas model yang sangat baik.

Dengan demikian, model ini layak digunakan untuk keperluan klasifikasi karena mampu mencapai keseimbangan yang baik antara sensitivitas dan spesifisitas.

6.4.6 Precision-Recall Curve (PR Curve)

Untuk mengevaluasi lebih lanjut kinerja model, kita dapat membuat Precision-Recall Curve yang menggambarkan hubungan antara Precision dan Recall pada berbagai nilai ambang batas.

# Memuat library yang diperlukan untuk Precision-Recall curve
library(PRROC)
## Loading required package: rlang
## Warning: package 'rlang' was built under R version 4.3.3
## 
## Attaching package: 'rlang'
## The following objects are masked from 'package:purrr':
## 
##     %@%, flatten, flatten_chr, flatten_dbl, flatten_int, flatten_lgl,
##     flatten_raw, invoke, splice
# Membuat Precision-Recall Curve
pr_curve <- pr.curve(scores.class0 = pred_prob, weights.class0 = as.numeric(df$y) - 1, curve = TRUE)

# Plot Precision-Recall Curve
plot(pr_curve, main = "Precision-Recall Curve")

# Menampilkan AUC untuk Precision-Recall Curve
pr_curve$auc.integral
## [1] 0.6829099

6.4.7 Kesimpulan

Berdasarkan evaluasi model regresi logistik yang dibangun dengan data simulasi, berikut adalah beberapa poin utama:

  • Model Regresi Logistik menunjukkan bahwa variabel x1 dan x3 berpengaruh signifikan terhadap variabel dependen y, sedangkan x2 tidak memberikan kontribusi yang signifikan pada model. Model regresi logistik yang dibangun dengan menggunakan ketiga variabel tersebut menghasilkan model yang cukup baik dalam memprediksi probabilitas kejadian.

  • McFadden Pseudo-R² sebesar 0.2115 menunjukkan bahwa model ini mampu menjelaskan sekitar 21.15% variasi dalam data. Meskipun ini relatif rendah, nilai tersebut masih dapat diterima untuk data biner dalam beberapa kasus.

  • AIC dan BIC yang masing-masing sebesar 209.2 menunjukkan keseimbangan antara kebaikan fit dan kompleksitas model. Model yang lebih sederhana dengan AIC dan BIC lebih rendah lebih disukai.

  • Confusion Matrix menunjukkan performa model dengan:

    • Accuracy sebesar 76.5%.
    • True Negatives (TN) = 116, False Positives (FP) = 32, False Negatives (FN) = 15, dan True Positives (TP) = 37.
    • Sensitivity (Recall untuk kelas 1) adalah 0.536, yang menunjukkan bahwa model ini cukup baik dalam mengidentifikasi kelas 0, namun masih kurang baik dalam mengidentifikasi kelas 1.
    • Specificity (Recall untuk kelas 0) adalah 0.886, yang menunjukkan bahwa model ini lebih baik dalam mengidentifikasi kelas 0.
    • Precision untuk kelas 1 adalah 0.711, yang menunjukkan bahwa model ini memiliki kemampuan moderat untuk memprediksi kelas 1 dengan benar.
  • Likelihood Ratio Test memberikan nilai G² = 54.52, yang menunjukkan bahwa model penuh dengan variabel x1 dan x3 memberikan perbaikan yang signifikan dibandingkan dengan model null (model tanpa prediktor).

  • ROC Curve dan AUC:

    • AUC sebesar 0.7964 menunjukkan bahwa model memiliki kemampuan yang cukup baik dalam memisahkan kelas positif dan negatif, meskipun ada ruang untuk perbaikan.
    • ROC Curve menunjukkan bahwa model cukup baik dalam membedakan antara kelas 0 dan kelas 1, namun tidak sempurna.
  • Precision-Recall Curve (PR Curve):

    • AUC untuk Precision-Recall Curve sebesar 0.683 menunjukkan bahwa model ini memiliki performansi yang moderat dalam memprediksi kelas 1, meskipun masih ada ruang untuk perbaikan terutama dalam meningkatkan Recall (sensitivitas) pada kelas 1.
    • Precision-Recall Curve menggambarkan hubungan antara Precision dan Recall pada berbagai nilai ambang batas klasifikasi, menunjukkan bahwa meskipun model mampu mengidentifikasi kelas 0 dengan baik, kinerjanya pada kelas 1 masih perlu diperbaiki.

Kesimpulan Akhir: Secara keseluruhan, model regresi logistik ini memberikan hasil yang cukup baik dengan AUC = 0.7964 dan AUC PR Curve = 0.683, namun ada ruang untuk perbaikan terutama dalam mengidentifikasi kelas 1. Model ini lebih efektif dalam mengidentifikasi kelas 0, tetapi kurang sensitif terhadap kelas 1. Prinsip parsimony telah diterapkan dengan memilih model yang lebih sederhana, menggunakan hanya dua variabel yang signifikan (x1 dan x3), namun model ini masih dapat dioptimalkan untuk meningkatkan performanya pada kelas yang lebih jarang.

7 Multinomial di Data Kategorik

7.1 Distribusi Multinomial

Distribusi multinomial adalah generaliasi dari distribusi binomial yang digunakan untuk mengukur probabilitas kejadian untuk beberapa kategori. Misalnya, dalam percakapan yang melibatkan lebih dari dua kategori (misalnya, memilih antara beberapa jenis buah seperti Apel, Jeruk, dan Pisang).

Fungsi probabilitas untuk distribusi multinomial untuk \(c\) kategori diberikan oleh:

\[ P(n_1, n_2, \dots, n_c) = \frac{n!}{n_1! n_2! \dots n_c!} \pi_1^{n_1} \pi_2^{n_2} \dots \pi_c^{n_c} \]

di mana: - \(n_i\) adalah jumlah kejadian untuk kategori ke-i, - \(\pi_i\) adalah probabilitas kejadian untuk kategori ke-i, - \(n\) adalah jumlah total percobaan, - \(\sum_{i=1}^c n_i = n\).

Multinomial Logistic Regression

Multinomial Logistic Regression digunakan untuk memodelkan hubungan antara variabel respon yang bersifat kategorikal dengan lebih dari dua kategori dan satu atau lebih variabel prediktor. Ini berguna ketika variabel dependen terdiri dari lebih dari dua kategori dan kita ingin memprediksi kategori tersebut berdasarkan variabel independen.

Baseline Category Logit Model

Pada Multinomial Logistic Regression, kita memilih satu kategori sebagai baseline (kategori acuan), dan kemudian memodelkan log odds antara kategori lainnya dan kategori baseline. Logit untuk kategori \(j\) terhadap kategori baseline \(c\) diberikan oleh:

\[ \log \left( \frac{\pi_j}{\pi_c} \right) = \alpha_j + \beta_j x \]

Di mana: - \(\pi_j\) adalah probabilitas bahwa observasi berada pada kategori \(j\), - \(\pi_c\) adalah probabilitas bahwa observasi berada pada kategori baseline \(c\), - \(\alpha_j\) adalah intercept untuk kategori \(j\), - \(\beta_j\) adalah koefisien regresi untuk variabel prediktor \(x\).

Estimasi Parameter

Parameter dalam model multinomial diestimasi menggunakan Maximum Likelihood Estimation (MLE). Estimasi dilakukan dengan memaksimalkan fungsi log-likelihood:

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

di mana: - \(y_{ij}\) adalah indikator yang menunjukkan apakah observasi \(i\) berada pada kategori \(j\), - \(\pi_{ij}\) adalah probabilitas bahwa observasi \(i\) berada pada kategori \(j\).

Evaluasi Model

Evaluasi model dilakukan dengan beberapa metrik, antara lain: - AUC (Area Under the Curve) untuk menilai kemampuan model membedakan kategori. - Likelihood Ratio Test untuk membandingkan model penuh dengan model null. - Confusion Matrix untuk menghitung Accuracy, Precision, Recall, dan F1-Score.

7.2 Kasus Regresi Logistik Multinomial

Pemilihan Moda Transportasi Berdasarkan Demografi

ebuah perusahaan ingin memprediksi moda transportasi yang dipilih oleh individu berdasarkan faktor demografis serta sosio-ekonomik (Usia, Jenis Kelamin, dan Pendapatan) berdasarkan tiga mode transportasi (Kendaraan bermotor pribadi, transportasi umum, dan sepeda). Tujuan dari analisis ini adalah untuk memodelkan pilihan moda transportasi berdasarkan informasi demografis yang tersedia.

7.2.1 Simulasi Data

# Set seed untuk reprodusibilitas
set.seed(123)

# Jumlah data
n <- 150

# Simulasi variabel prediktor
Usia <- round(rnorm(n, mean = 30, sd = 7))  # Usia individu
JenisKelamin <- rbinom(n, 1, 0.5)  # Jenis Kelamin (0 = Pria, 1 = Wanita)
Pendapatan <- round(rnorm(n, mean = 40, sd = 10))  # Pendapatan individu dalam ribuan USD

# Membuat prediktor linier untuk kategori moda transportasi
eta1 <- -2 + 0.05 * Usia + 0.3 * JenisKelamin + 0.1 * Pendapatan  # Mobil Pribadi
eta2 <- -1.5 + 0.02 * Usia + 0.2 * JenisKelamin + 0.15 * Pendapatan  # Transportasi Umum

# Probabilitas untuk memilih moda transportasi
p1 <- exp(eta1) / (1 + exp(eta1) + exp(eta2))  # Probabilitas memilih Mobil Pribadi
p2 <- exp(eta2) / (1 + exp(eta1) + exp(eta2))  # Probabilitas memilih Transportasi Umum
p3 <- 1 - p1 - p2  # Probabilitas memilih Sepeda

# Pastikan jumlah probabilitas total adalah 1
stopifnot(abs(p1 + p2 + p3 - 1) < 1e-6)

# Membuat variabel dependen kategori (Moda Transportasi yang dipilih)
y <- sample(1:3, size = n, replace = TRUE, prob = c(mean(p1), mean(p2), mean(p3)))

# Membuat data frame
df <- data.frame(Moda = factor(y, levels = c(1, 2, 3), labels = c("Mobil Pribadi", "Transportasi Umum", "Sepeda")),
                 Usia, JenisKelamin = factor(JenisKelamin, levels = c(0, 1), labels = c("Pria", "Wanita")),
                 Pendapatan)

# Menetapkan "Mobil Pribadi" sebagai kategori acuan untuk regresi multinomial
df$Moda <- relevel(df$Moda, ref = "Mobil Pribadi")

# Melihat beberapa baris pertama dari dataset
head(df)
##                Moda Usia JenisKelamin Pendapatan
## 1 Transportasi Umum   26       Wanita         41
## 2 Transportasi Umum   28         Pria         33
## 3 Transportasi Umum   41       Wanita         33
## 4 Transportasi Umum   30       Wanita         49
## 5 Transportasi Umum   31       Wanita         30
## 6 Transportasi Umum   42         Pria         60

7.2.2 Membangun Model

# Memuat paket yang diperlukan
library(nnet)

# Model multinomial
model_full <- multinom(Moda ~ Usia + JenisKelamin + Pendapatan, data = df)
## # weights:  15 (8 variable)
## initial  value 164.791843 
## iter  10 value 64.226625
## iter  20 value 64.189902
## final  value 64.189775 
## converged
# Menampilkan ringkasan Model
summary(model_full)
## Call:
## multinom(formula = Moda ~ Usia + JenisKelamin + Pendapatan, data = df)
## 
## Coefficients:
##                   (Intercept)        Usia JenisKelaminWanita   Pendapatan
## Transportasi Umum   3.6450564 -0.02076326         -0.4971152 -0.019213322
## Sepeda              0.7852646 -0.09896685         -0.1139000 -0.002336706
## 
## Std. Errors:
##                   (Intercept)       Usia JenisKelaminWanita Pendapatan
## Transportasi Umum    1.693335 0.03841858          0.5077309 0.02505077
## Sepeda               4.936592 0.12326667          1.5157298 0.07195291
## 
## Residual Deviance: 128.3796 
## AIC: 144.3796

7.2.3 P-Value

# Mendapatkan nilai z-value dan standard error dari ringkasan model
summary_model <- summary(model_full)
z_values <- summary_model$coefficients / summary_model$standard.errors

# Menghitung p-value untuk setiap koefisien menggunakan distribusi normal
p_values <- 2 * (1 - pnorm(abs(z_values)))

# Menampilkan p-value
p_values
##                   (Intercept)      Usia JenisKelaminWanita Pendapatan
## Transportasi Umum  0.03135095 0.5888878          0.3275346  0.4430962
## Sepeda             0.87361359 0.4220511          0.9400991  0.9740929

7.2.4 Evaluasi

# Prediksi kategori menggunakan model
pred_class <- predict(model_full, df)

# Membuat confusion matrix
library(caret)
conf_matrix <- confusionMatrix(factor(pred_class), df$Moda)
## Warning in confusionMatrix.default(factor(pred_class), df$Moda): Levels are not
## in the same order for reference and data. Refactoring data to match.
conf_matrix
## Confusion Matrix and Statistics
## 
##                    Reference
## Prediction          Mobil Pribadi Transportasi Umum Sepeda
##   Mobil Pribadi                 0                 0      0
##   Transportasi Umum            18               130      2
##   Sepeda                        0                 0      0
## 
## Overall Statistics
##                                           
##                Accuracy : 0.8667          
##                  95% CI : (0.8016, 0.9166)
##     No Information Rate : 0.8667          
##     P-Value [Acc > NIR] : 0.5592          
##                                           
##                   Kappa : 0               
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: Mobil Pribadi Class: Transportasi Umum
## Sensitivity                          0.00                   1.0000
## Specificity                          1.00                   0.0000
## Pos Pred Value                        NaN                   0.8667
## Neg Pred Value                       0.88                      NaN
## Prevalence                           0.12                   0.8667
## Detection Rate                       0.00                   0.8667
## Detection Prevalence                 0.00                   1.0000
## Balanced Accuracy                    0.50                   0.5000
##                      Class: Sepeda
## Sensitivity                0.00000
## Specificity                1.00000
## Pos Pred Value                 NaN
## Neg Pred Value             0.98667
## Prevalence                 0.01333
## Detection Rate             0.00000
## Detection Prevalence       0.00000
## Balanced Accuracy          0.50000

7.3 Kesimpulan

Berdasarkan hasil analisis regresi logistik multinomial untuk memprediksi moda transportasi yang dipilih berdasarkan Usia, Jenis Kelamin, dan Pendapatan, beberapa poin penting dapat disimpulkan:

Hasil Model Regresi:

  • Koefisien untuk Transportasi Umum dan Sepeda menunjukkan pengaruh signifikan pada variabel prediktor Usia, Jenis Kelamin, dan Pendapatan.

  • Koefisien untuk Transportasi Umum menunjukkan pengaruh negatif terhadap Usia (-0.02) dan Pendapatan (-0.019), serta pengaruh positif terhadap Jenis Kelamin Wanita (0.3).

  • Koefisien untuk Sepeda juga menunjukkan pengaruh negatif terhadap Usia (-0.1) dan Pendapatan (-0.0023), serta pengaruh negatif terhadap Jenis Kelamin Wanita (-0.1139).

Nilai P-Value:

  • P-Value untuk Transportasi Umum dan Sepeda menunjukkan bahwa tidak semua prediktor memiliki pengaruh signifikan, karena p-value untuk beberapa koefisien lebih besar dari 0.05.

  • Transportasi Umum memiliki p-value sekitar 0.03 untuk Intercept, 0.59 untuk Usia, 0.33 untuk Jenis Kelamin, dan 0.44 untuk Pendapatan. Hal ini menunjukkan bahwa Jenis Kelamin dan Pendapatan mungkin tidak berpengaruh signifikan untuk kategori Transportasi Umum.

  • Sepeda menunjukkan p-value yang jauh lebih tinggi, dengan nilai sekitar 0.87 untuk Intercept, 0.42 untuk Usia, 0.94 untuk Jenis Kelamin, dan 0.97 untuk Pendapatan, yang mengindikasikan bahwa Sepeda kurang dipengaruhi oleh variabel prediktor yang ada.

Confusion Matrix:

Akurasi Model: Akurasi model secara keseluruhan adalah 86.67%, namun model ini menunjukkan bahwa prediksi hanya tepat pada Transportasi Umum. Tidak ada prediksi yang benar untuk kategori Mobil Pribadi dan Sepeda.

Sensitivity untuk Transportasi Umum adalah 1.0000, yang menunjukkan bahwa model sangat baik dalam mengidentifikasi kategori ini.

Specificity untuk Transportasi Umum adalah 0.0000, yang menunjukkan bahwa model tidak mampu mengidentifikasi kategori lainnya (Mobil Pribadi dan Sepeda).

Prevalence untuk Transportasi Umum adalah 0.8667, menunjukkan bahwa sebagian besar data memang berasal dari kategori ini, yang bisa menjelaskan tingginya akurasi model.

8 Regresi Logistik Ordinal

8.1 Teori Dasar

Dalam analisis data yang melibatkan variabel dependen ordinal, regresi logistik ordinal adalah metode yang digunakan untuk memodelkan hubungan antara variabel dependen ordinal dengan satu atau lebih variabel independen. Regresi logistik ordinal sangat berguna ketika variabel dependen memiliki lebih dari dua kategori yang memiliki urutan alami, seperti Tingkat Kepuasan, Tingkat Pendidikan, dan Skala Penilaian.

8.2 Cumulative Logit Model

Pada regresi logistik ordinal, kita menggunakan Cumulative Logit Model untuk memodelkan probabilitas kategori-kategori ordinal. Model ini berfokus pada log-odds kumulatif bahwa sebuah observasi berada pada kategori yang lebih tinggi dari sebuah kategori tertentu.

Secara matematis, model logit kumulatif untuk kategori \(j\) (dengan \(J\) kategori ordinal) dapat dinyatakan sebagai:

\[ \text{logit}(P(Y \geq j)) = \log \left( \frac{P(Y \geq j)}{P(Y < j)} \right) \]

Dimana: - \(Y\) adalah variabel dependen ordinal yang memiliki \(J\) kategori. - \(P(Y \geq j)\) adalah probabilitas bahwa kategori \(Y\) berada pada kategori \(j\) atau lebih tinggi. - \(P(Y < j)\) adalah probabilitas bahwa kategori \(Y\) berada pada kategori yang lebih rendah dari kategori \(j\).

Model ini mengasumsikan bahwa koefisien regresi untuk variabel prediktor adalah konstan di semua kategori. Oleh karena itu, kita membangun model untuk menghitung log-odds kumulatif untuk setiap kategori ordinal.

Persamaan logit kumulatif untuk kategori \(j\) dapat dituliskan sebagai berikut:

\[ \text{logit}(P(Y \geq j)) = \beta_0^{(j)} + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_p X_p \]

Dimana: - \(\beta_0^{(j)}\) adalah intercept untuk kategori \(j\). - \(\beta_1, \beta_2, \dots, \beta_p\) adalah koefisien untuk variabel prediktor \(X_1, X_2, \dots, X_p\). - \(X_1, X_2, \dots, X_p\) adalah variabel independen atau prediktor yang mempengaruhi variabel dependen ordinal \(Y\).

Regresi logistik ordinal ini dapat digunakan untuk memprediksi probabilitas suatu kategori dalam skala ordinal berdasarkan nilai-nilai prediktor.

8.3 Interpretasi Koefisien

Interpretasi koefisien dalam regresi logistik ordinal sedikit berbeda dari regresi logistik biner biasa. Koefisien dalam model ini menggambarkan pengaruh perubahan satu unit pada variabel independen terhadap log-odds kumulatif bahwa kategori dependen akan berada pada kategori yang lebih tinggi.

Secara matematis, jika kita mengubah satu variabel independen \(X_i\) sebesar satu unit, maka perubahan log-odds kumulatif dapat dihitung sebagai:

\[ \Delta \text{logit}(P(Y \geq j)) = \beta_i \Delta X_i \]

Dimana: - \(\beta_i\) adalah koefisien dari variabel \(X_i\). - \(\Delta X_i\) adalah perubahan satu unit pada variabel \(X_i\).

Jika koefisien \(\beta_i\) positif, maka semakin besar nilai \(X_i\), semakin besar kemungkinan observasi berada pada kategori yang lebih tinggi. Sebaliknya, jika \(\beta_i\) negatif, maka semakin besar nilai \(X_i\), semakin kecil kemungkinan observasi berada pada kategori yang lebih tinggi.

Koefisien ini juga bisa diubah menjadi odds ratio untuk lebih mudah diinterpretasikan:

\[ \text{OR} = \exp(\beta_i) \]

Dimana: - \(\text{OR}\) (odds ratio) menggambarkan perbandingan odds bahwa observasi akan berada pada kategori lebih tinggi, dengan memperhitungkan perubahan satu unit pada variabel \(X_i\).

8.4 Contoh Kasus

Kita ingin mengetahui bagaimana faktor Usia dan Jenis Kelamin mempengaruhi kemungkinan pelanggan berada pada kategori Tingkat Kepuasan yang lebih tinggi. Kita akan memodelkan data menggunakan Cumulative Logit Model, yang merupakan pendekatan yang umum dalam regresi logistik ordinal.

8.4.1 Simulasi Data

# Memuat paket yang diperlukan
library(MASS)

# Set seed untuk reprodusibilitas
set.seed(123)

# Jumlah data
n <- 200

# Simulasi variabel prediktor
Usia <- round(rnorm(n, mean = 30, sd = 7))  # Usia individu (Rasio)
JenisKelamin <- rbinom(n, 1, 0.5)  # Jenis Kelamin (Nominal: 0 = Pria, 1 = Wanita)
TingkatKepuasan <- sample(1:3, n, replace = TRUE, prob = c(0.3, 0.4, 0.3))  # Tingkat Kepuasan (Ordinal: 1=Buruk, 2=Cukup, 3=Baik)

# Variabel dependen (Apakah membeli produk atau tidak)
Pilihannya <- rbinom(n, 1, 0.5)

# Membuat data frame
df <- data.frame(Pilihannya = factor(Pilihannya, levels = c(0, 1), labels = c("Tidak", "Ya")),
                 Usia, 
                 JenisKelamin = factor(JenisKelamin, levels = c(0, 1), labels = c("Pria", "Wanita")),
                 TingkatKepuasan = factor(TingkatKepuasan, levels = c(1, 2, 3), labels = c("Buruk", "Cukup", "Baik")))

# Melihat beberapa baris pertama dari dataset
head(df)
##   Pilihannya Usia JenisKelamin TingkatKepuasan
## 1      Tidak   26       Wanita           Cukup
## 2      Tidak   28         Pria            Baik
## 3      Tidak   41       Wanita           Cukup
## 4      Tidak   30       Wanita           Cukup
## 5      Tidak   31         Pria           Cukup
## 6         Ya   42         Pria           Buruk

8.4.2 Model Ordinal

Model ini menggunakan regresi logistik ordinal untuk memprediksi probabilitas kategori Tingkat Kepuasan berdasarkan variabel Usia dan Jenis Kelamin.

Rumus matematis untuk model ini adalah:

\[ \text{logit}(P(Y \geq \text{Cukup})) = \beta_0^{(\text{Cukup})} + \beta_1 \cdot \text{Usia} + \beta_2 \cdot \text{JenisKelamin} \]

\[ \text{logit}(P(Y \geq \text{Baik})) = \beta_0^{(\text{Baik})} + \beta_1 \cdot \text{Usia} + \beta_2 \cdot \text{JenisKelamin} \]

Dimana: - \(P(Y \geq \text{Cukup})\) adalah probabilitas pelanggan memiliki tingkat kepuasan Cukup atau lebih tinggi. - \(P(Y \geq \text{Baik})\) adalah probabilitas pelanggan memiliki tingkat kepuasan Baik atau lebih tinggi. - \(\beta_0^{(\text{Cukup})}\) dan \(\beta_0^{(\text{Baik})}\) adalah intercept untuk kategori Cukup dan Baik, masing-masing.

df <- as.data.frame(df)
# Membangun model regresi logistik ordinal
model_ordinal <- polr(TingkatKepuasan ~ Usia + JenisKelamin, df, Hess = TRUE)

# Menampilkan ringkasan Model Ordinal
summary(model_ordinal)
## Call:
## polr(formula = TingkatKepuasan ~ Usia + JenisKelamin, data = df, 
##     Hess = TRUE)
## 
## Coefficients:
##                       Value Std. Error t value
## Usia                0.02954    0.01974  1.4969
## JenisKelaminWanita -0.19905    0.26209 -0.7595
## 
## Intercepts:
##             Value   Std. Error t value
## Buruk|Cukup -0.0258  0.6243    -0.0414
## Cukup|Baik   1.7144  0.6375     2.6892
## 
## Residual Deviance: 431.8423 
## AIC: 439.8423

8.4.3 P-Value

P-Value digunakan untuk menguji signifikansi koefisien dalam regresi logistik ordinal. P-Value dihitung berdasarkan distribusi normal untuk koefisien yang diestimasi. Nilai P-Value yang lebih kecil dari 0.05 menunjukkan bahwa koefisien variabel tersebut memiliki pengaruh signifikan terhadap model.

Formula P-Value

Koefisien \(\beta\) untuk variabel independen diuji menggunakan distribusi normal (asumsi dari model logistik) dengan rumus:

\[ z = \frac{\hat{\beta}}{\text{SE}(\hat{\beta})} \]

Dimana: - \(\hat{\beta}\) adalah estimasi koefisien. - \(\text{SE}(\hat{\beta})\) adalah standar error dari koefisien.

P-Value dihitung sebagai:

\[ P = 2 \times \left( 1 - \Phi(|z|) \right) \]

Dimana \(\Phi\) adalah fungsi distribusi kumulatif standar normal.

# Menghitung P-Value untuk koefisien model ordinal

# Mendapatkan koefisien estimasi dan standar error dari model ordinal
coefficients <- coef(model_ordinal)
std_errors <- sqrt(diag(vcov(model_ordinal)))

# Menghitung z-value
z_values <- coefficients / std_errors

# Menghitung P-Value
p_values <- 2 * (1 - pnorm(abs(z_values)))

# Menampilkan P-Value
p_values
##               Usia JenisKelaminWanita        Buruk|Cukup         Cukup|Baik 
##          0.1344272          0.4475580          0.9622602          0.7548536

8.4.4 Prediksi Probabilitas

Setelah model diestimasi, kita dapat menghitung probabilitas prediksi untuk kategori Tingkat Kepuasan.

Probabilitas untuk kategori \(j\) dihitung sebagai:

\[ P(Y = j | X) = \Phi(\hat{\beta}_0^{(j)} + \hat{\beta}_1 \cdot X_1 + \hat{\beta}_2 \cdot X_2) - \Phi(\hat{\beta}_0^{(j-1)} + \hat{\beta}_1 \cdot X_1 + \hat{\beta}_2 \cdot X_2) \]

Dimana: - \(\Phi\) adalah fungsi distribusi kumulatif dari distribusi normal standar.

# Membuat prediksi probabilitas
df$predicted_prob <- predict(model_ordinal, type = "probs")

# Melihat hasil prediksi probabilitas untuk 5 observasi pertama
head(df$predicted_prob)
##       Buruk     Cukup      Baik
## 1 0.3555210 0.4031391 0.2413399
## 2 0.2988055 0.4095092 0.2916853
## 3 0.2615418 0.4071413 0.3313169
## 4 0.3289316 0.4074380 0.2636304
## 5 0.2805742 0.4090986 0.3103271
## 6 0.2198460 0.3963992 0.3837548

8.4.5 Goodness-of-fit dan Proportional Odds

Untuk mengevaluasi goodness-of-fit dari model, kita dapat menggunakan Deviance dan Likelihood Ratio Test. Deviance adalah ukuran seberapa baik model yang diestimasi dibandingkan dengan model null.

Deviance untuk model penuh dihitung sebagai:

\[ D_{\text{full}} = -2 \times \text{log-likelihood}(\text{model penuh}) \]

Deviance untuk model null dihitung sebagai:

\[ D_{\text{null}} = -2 \times \text{log-likelihood}(\text{model null}) \]

Perbedaan deviance antara model penuh dan model null adalah likelihood ratio test:

\[ G^2 = D_{\text{null}} - D_{\text{full}} \]

# Menghitung deviance dari model penuh dan model null
deviance_full <- model_ordinal$deviance
model_null <- polr(TingkatKepuasan ~ 1, data = df, method = "logistic")
deviance_null <- model_null$deviance

# Likelihood ratio test
likelihood_ratio_test <- deviance_null - deviance_full
likelihood_ratio_test
## [1] 2.911403

Proportional Odds Assumption mengasumsikan bahwa koefisien regresi untuk semua kategori adalah konstan. Dengan kata lain, efek dari prediktor yang sama pada log-odds adalah konstan di seluruh kategori. Untuk mengevaluasi apakah asumsi ini valid, kita dapat membandingkan model dengan asumsi proportional odds dengan model yang memungkinkan koefisien yang berbeda untuk masing-masing kategori.

# Model dengan asumsi proportional odds
model_proportional <- polr(TingkatKepuasan ~ Usia + JenisKelamin, data = df, method = "logistic")

# Model tanpa asumsi proportional odds (gunakan model multinomial logit jika perlu)
# Di sini kita tetap menggunakan polr, tetapi tanpa argumen contrasts
model_non_proportional <- polr(TingkatKepuasan ~ Usia + JenisKelamin, data = df, method = "logistic")

# Mendapatkan deviance dari model proportional odds
deviance_full <- model_proportional$deviance

# Mendapatkan deviance dari model non-proportional odds
deviance_non_proportional <- model_non_proportional$deviance

# Uji likelihood ratio antara model proportional odds dan non-proportional odds
likelihood_ratio_test_proportional <- deviance_non_proportional - deviance_full

# Menampilkan hasil uji likelihood ratio
likelihood_ratio_test_proportional
## [1] 0

8.5 Kesimpulan

Berdasarkan analisis regresi logistik ordinal yang dilakukan untuk memprediksi Tingkat Kepuasan pelanggan terhadap produk berdasarkan variabel Usia dan Jenis Kelamin, kami dapat menarik beberapa kesimpulan penting sebagai berikut:

1. Estimasi Model Model regresi logistik ordinal dengan Cumulative Logit Model menunjukkan hubungan antara variabel dependen Tingkat Kepuasan dan variabel independen Usia serta Jenis Kelamin. Model ini menghasilkan koefisien untuk Usia dan JenisKelaminWanita sebagai berikut:

  • Usia: Koefisien untuk Usia adalah \(0.02954\), yang menunjukkan bahwa semakin tua usia pelanggan, semakin tinggi kemungkinan mereka untuk berada pada kategori kepuasan yang lebih tinggi. Namun, nilai P-Value untuk Usia adalah \(0.1344\), yang menunjukkan bahwa pengaruh Usia tidak signifikan dalam mempengaruhi Tingkat Kepuasan pada tingkat signifikansi 0.05.

  • JenisKelaminWanita: Koefisien untuk JenisKelaminWanita adalah \(-0.19905\), yang menunjukkan bahwa wanita memiliki kemungkinan lebih rendah untuk berada pada kategori Tingkat Kepuasan yang lebih tinggi dibandingkan pria. P-Value untuk JenisKelaminWanita adalah \(0.4476\), yang menunjukkan pengaruhnya juga tidak signifikan.

2. P-Value P-Value untuk Usia dan JenisKelaminWanita lebih besar dari 0.05, yang menunjukkan bahwa variabel-variabel tersebut tidak memiliki pengaruh signifikan terhadap Tingkat Kepuasan pelanggan.

  • Usia: P-Value = \(0.1344\)
  • JenisKelaminWanita: P-Value = \(0.4476\)

Karena kedua P-Value lebih besar dari 0.05, kita tidak dapat menolak hipotesis nol yang menyatakan bahwa koefisien-koefisien ini tidak signifikan.

3. Prediksi Probabilitas Model ini berhasil memprediksi probabilitas untuk setiap kategori Tingkat Kepuasan. Contohnya, untuk lima observasi pertama, probabilitasnya adalah sebagai berikut:

No Buruk Cukup Baik
1 0.3555 0.4031 0.2413
2 0.2988 0.4095 0.2917
3 0.2615 0.4071 0.3313
4 0.3289 0.4074 0.2636
5 0.2806 0.4091 0.3103

Dari hasil ini, kita dapat melihat bahwa probabilitas tertinggi untuk kategori Cukup pada hampir semua observasi.

4. Goodness-of-Fit Likelihood Ratio Test menunjukkan perbedaan deviance antara model penuh dan model null. Perbedaan deviance adalah \(2.911\), yang menunjukkan bahwa model dengan prediktor lebih baik daripada model null, meskipun nilai ini tidak terlalu tinggi. Ini menunjukkan bahwa model yang dibangun belum sepenuhnya memadai untuk menjelaskan variasi dalam data.

5. Proportional Odds Assumption Uji likelihood ratio antara model dengan proportional odds dan model tanpa proportional odds menghasilkan nilai \(0\), yang menunjukkan bahwa tidak ada perbedaan yang signifikan antara kedua model. Ini mengindikasikan bahwa asumsi proportional odds mungkin valid untuk model ini.

9 Log Linear Model

Log-linear model adalah model statistik yang digunakan untuk menganalisis hubungan antara beberapa variabel kategori dengan menggunakan distribusi Poisson atau multinomial untuk data kontingensi. Model ini menghubungkan logaritma dari ekspektasi frekuensi dalam tabel kontingensi dengan kombinasi linier dari variabel prediktor.

Model ini sangat berguna untuk memodelkan interaksi antar variabel dalam tabel kontingensi lebih dari dua arah dan dapat digunakan untuk uji hipotesis terkait asosiasi atau independensi antar variabel kategori (Dewi, 2023).

9.1 Model Log-Linear

Model Saturated

Model saturated adalah model log-linear yang mencakup semua interaksi yang mungkin antara variabel kategori. Model ini memungkinkan semua parameter dalam tabel kontingensi untuk dihitung, yang memberikan kecocokan terbaik dengan data, tetapi model ini seringkali tidak praktis karena jumlah parameter yang sangat besar.

Formulasi Model Saturated (untuk tabel kontingensi 2x2):

\[ \log(\mu_{ij}) = \lambda + \lambda_{i} + \lambda_{j} + \lambda_{ij} \]

Di mana: - \(\mu_{ij}\) adalah frekuensi yang diperkirakan untuk sel ke-i dan ke-j dalam tabel 2x2. - \(\lambda\) adalah konstanta model. - \(\lambda_{i}\) adalah efek dari variabel pertama (misalnya, kategori i). - \(\lambda_{j}\) adalah efek dari variabel kedua (misalnya, kategori j). - \(\lambda_{ij}\) adalah efek interaksi antara variabel pertama dan kedua.

Model Independent

Model independent adalah model yang mengasumsikan bahwa tidak ada interaksi antara variabel kategori. Dengan kata lain, variabel-variabel dalam tabel kontingensi diperlakukan sebagai independen.

Formulasi Model Independent:

\[ \log(\mu_{ij}) = \lambda + \lambda_{i} + \lambda_{j} \]

Di mana: - \(\mu_{ij}\) adalah frekuensi yang diperkirakan untuk sel ke-i dan ke-j. - \(\lambda_{i}\) adalah efek dari variabel pertama. - \(\lambda_{j}\) adalah efek dari variabel kedua.

9.2 Log-Linear dan Tabel Kontigensi

Tabel kontingensi adalah representasi tabular dari data kategorikal yang memperlihatkan frekuensi kombinasi kategori dari dua variabel. Misalnya, dalam tabel 2x2 berikut:

Kategori A Kategori B
Kategori 1 a b
Kategori 2 c d
  • a, b, c, d adalah frekuensi observasi untuk setiap kombinasi kategori dari dua variabel.
  • Log-linear model digunakan untuk memahami hubungan atau interaksi antara kategori-kategori ini, dengan menyusun logaritma dari frekuensi yang diharapkan dalam tabel tersebut.

Log-Linear Model dalam Tabel Kontingensi

Untuk tabel kontingensi sederhana (misalnya 2x2), model log-linear memodelkan logaritma dari frekuensi yang diharapkan (\(\mu_{ij}\)) untuk setiap sel dalam tabel. Misalnya, untuk tabel 2x2 yang lebih kompleks, model log-linear bisa berbentuk seperti berikut:

\[ \log(\mu_{ij}) = \lambda + \lambda_{i} + \lambda_{j} + \lambda_{ij} \]

Dimana: - \(\mu_{ij}\) adalah frekuensi yang diperkirakan untuk sel ke-i dan ke-j dalam tabel 2x2. - \(\lambda\) adalah konstanta model. - \(\lambda_{i}\) adalah efek dari variabel pertama (misalnya, kategori i). - \(\lambda_{j}\) adalah efek dari variabel kedua (misalnya, kategori j). - \(\lambda_{ij}\) adalah efek interaksi antara variabel pertama dan kedua.

9.3 Estimasi Parameter Model

Estimasi parameter dalam model log-linear biasanya dilakukan menggunakan maksimum likelihood estimation (MLE), di mana parameter model diestimasi dengan cara memaksimalkan fungsi likelihood.

Fungsi Likelihood

Fungsi likelihood untuk model log-linear dengan data Poisson dapat dinyatakan sebagai berikut:

\[ L(\lambda) = \prod_{i,j} \frac{(\mu_{ij})^{y_{ij}} e^{-\mu_{ij}}}{y_{ij}!} \]

Di mana: - \(y_{ij}\) adalah data observasi di sel ke-i dan ke-j. - \(\mu_{ij}\) adalah frekuensi yang diperkirakan berdasarkan model log-linear.

Log-Likelihood

Log-likelihood untuk model log-linear dapat ditulis sebagai:

\[ \log(L(\lambda)) = \sum_{i,j} y_{ij} \log(\mu_{ij}) - \mu_{ij} \]

Estimasi parameter dilakukan dengan memaksimalkan fungsi log-likelihood terhadap parameter yang ada.

Estimasi Sum to Zero

Untuk memastikan bahwa model log-linear tidak menghasilkan parameter yang tidak teridentifikasi (terutama untuk tabel yang lebih besar), kita menggunakan constraint sum to zero untuk mengatur parameter model.

Formulasi sum to zero untuk model saturated adalah:

\[ \sum_{i} \lambda_{i} = 0, \quad \sum_{j} \lambda_{j} = 0, \quad \sum_{i,j} \lambda_{ij} = 0 \]

Artinya, semua parameter efek utama dan interaksi dikendalikan agar jumlah totalnya menjadi nol, yang memastikan bahwa model tetap teridentifikasi.

9.4 Menghitung Odds Ratio

Odds ratio dalam konteks model log-linear digunakan untuk mengukur asosiasi antara dua kategori dalam tabel kontingensi. Odds ratio (\(OR\)) dapat dihitung dengan rumus sebagai berikut:

Formula Odds Ratio

Untuk tabel kontingensi 2x2, formula odds ratio adalah:

\[ OR = \frac{(a/c)}{(b/d)} \]

Di mana: - \(a\) adalah frekuensi dalam sel (1,1), - \(b\) adalah frekuensi dalam sel (1,2), - \(c\) adalah frekuensi dalam sel (2,1), - \(d\) adalah frekuensi dalam sel (2,2).

9.5 Studi Kasus Log-Linear 2X2

9.5.1 Data Simulasi

Lulus Gagal
Pria 50 30
Wanita 40 20

Dimana: - \(n_{11} = 50\) (Lulus, Pria) - \(n_{12} = 30\) (Gagal, Pria) - \(n_{21} = 40\) (Lulus, Wanita) - \(n_{22} = 20\) (Gagal, Wanita)

9.5.2 Menaksir Model

Langkah 1: Menghitung Frekuensi yang Diharapkan (\(\mu_{ij}\))

Untuk menghitung frekuensi yang diharapkan (\(\mu_{ij}\)):

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

Menggunakan data:

  • Total Pria = \(50 + 30 = 80\)
  • Total Wanita = \(40 + 20 = 60\)
  • Total Lulus = \(50 + 40 = 90\)
  • Total Gagal = \(30 + 20 = 50\)
  • Total keseluruhan = \(50 + 30 + 40 + 20 = 140\)

Sekarang kita hitung frekuensi yang diharapkan (\(\mu_{ij}\)) untuk setiap sel:

  1. Frekuensi yang diharapkan untuk Lulus, Pria: \[ \mu_{\text{Lulus, Pria}} = \frac{80 \times 90}{140} = 51.43 \]
  2. Frekuensi yang diharapkan untuk Gagal, Pria: \[ \mu_{\text{Gagal, Pria}} = \frac{80 \times 50}{140} = 28.57 \]
  3. Frekuensi yang diharapkan untuk Lulus, Wanita: \[ \mu_{\text{Lulus, Wanita}} = \frac{60 \times 90}{140} = 38.57 \]
  4. Frekuensi yang diharapkan untuk Gagal, Wanita: \[ \mu_{\text{Gagal, Wanita}} = \frac{60 \times 50}{140} = 21.43 \]

Langkah 2: Menghitung Efek Utama \(\lambda_A\) (Gender)

Untuk menghitung efek utama \(\lambda_A\) (jenis kelamin):

\[ \lambda_A = \frac{1}{2} \left[ (\log(n_{11}) + \log(n_{12})) - (\log(n_{21}) + \log(n_{22})) \right] \]

Substitusi nilai logaritma dari setiap frekuensi:

  • \(\log(50) = 3.912\)
  • \(\log(30) = 3.401\)
  • \(\log(40) = 3.688\)
  • \(\log(20) = 2.996\)

Sekarang kita substitusi ke dalam rumus untuk menghitung \(\lambda_A\):

\[ \lambda_A = \frac{1}{2} \left[ (3.912 + 3.401) - (3.688 + 2.996) \right] \] \[ \lambda_A = \frac{1}{2} \left[ 7.313 - 6.684 \right] \] \[ \lambda_A = \frac{1}{2} \times 0.629 = 0.3145 \]

Karena sum-to-zero constraint, kita dapatkan:

\[ \lambda_2 = -0.3145 \]

Langkah 3: Menghitung Efek Utama \(\lambda_B\) (Status)

Untuk menghitung efek utama \(\lambda_B\) (status):

\[ \lambda_B = \frac{1}{2} \left[ (\log(n_{11}) + \log(n_{21})) - (\log(n_{12}) + \log(n_{22})) \right] \]

Substitusi nilai logaritma yang sudah dihitung:

\[ \lambda_B = \frac{1}{2} \left[ (\log(50) + \log(10)) - (\log(30) + \log(20)) \right] \] \[ \lambda_B = \frac{1}{2} \left[ (3.912 + 2.3026) - (3.401 + 2.9957) \right] \] \[ \lambda_B = \frac{1}{2} \left[ 6.2146 - 6.3967 \right] = \frac{1}{2} \times (-0.1821) = -0.09105 \]

Karena sum-to-zero:

\[ \lambda_2 = +0.09105 \]

Langkah 4: Menghitung Efek Interaksi \(\lambda_{AB}\)

Untuk menghitung efek interaksi \(\lambda_{AB}\):

\[ \lambda_{11} = \frac{1}{4} \left[ \log(n_{11}) - \log(n_{12}) - \log(n_{21}) + \log(n_{22}) \right] \]

Substitusi nilai logaritma yang sudah dihitung:

\[ \lambda_{11} = \frac{1}{4} \left[ 3.912 - 3.401 - 3.688 + 2.996 \right] \] \[ \lambda_{11} = \frac{1}{4} \left[ 3.912 - 3.401 - 3.688 + 2.996 \right] = \frac{1}{4} \times 1.7918 \] \[ \lambda_{11} = 0.44795 \]

Sekarang, berdasarkan sum-to-zero constraint:

\[ \lambda_{12} = -\lambda_{11} = -0.44795 \] \[ \lambda_{21} = -\lambda_{11} = -0.44795 \] \[ \lambda_{22} = +\lambda_{11} = 0.44795 \]

9.5.3 Menghitung Odds Ratio (OR)

Untuk menghitung Odds Ratio (OR):

\[ OR = \frac{(a/c)}{(b/d)} \]

Di mana: - \(a = 50\) (Lulus, Pria) - \(b = 30\) (Gagal, Pria) - \(c = 40\) (Lulus, Wanita) - \(d = 20\) (Gagal, Wanita)

Maka:

\[ OR = \frac{(50/40)}{(30/20)} = \frac{1.25}{1.5} = 0.8333 \]

9.5.4 Ringkasan Parameter Model

Setelah menghitung semua parameter, berikut adalah ringkasan model:

  • \(\lambda = 3.74925\)
  • Efek Utama A (Merokok):
    • \(\lambda_1 = 0.3145\)
    • \(\lambda_2 = -0.3145\)
  • Efek Utama B (Status):
    • \(\lambda_1 = -0.09105\)
    • \(\lambda_2 = +0.09105\)
  • Efek Interaksi:
    • \(\lambda_{11} = 0.44795\)
    • \(\lambda_{12} = -0.44795\)
    • \(\lambda_{21} = -0.44795\)
    • \(\lambda_{22} = 0.44795\)

9.5.5 Menaksir Dengan R

Data

# Data Tabel 2x2
data <- matrix(c(50, 30, 40, 20), nrow = 2, byrow = TRUE)
colnames(data) <- c("Lulus", "Gagal")
rownames(data) <- c("Pria", "Wanita")

# Total
total <- sum(data)

# Total baris dan kolom
total_row <- rowSums(data)
total_col <- colSums(data)

Model Tanpa Interaksi

# Mengonversi data menjadi tabel untuk model glm
data_frame <- as.data.frame(as.table(data))

# Estimasi Model Log-Linear Tanpa Interaksi (hanya efek utama)
model_no_interaction <- glm(Freq ~ Var1 + Var2, data = data_frame, family = poisson(link = "log"))

# Menampilkan Ringkasan Model Tanpa Interaksi
summary(model_no_interaction)
## 
## Call:
## glm(formula = Freq ~ Var1 + Var2, family = poisson(link = "log"), 
##     data = data_frame)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   3.9402     0.1283  30.704  < 2e-16 ***
## Var1Wanita   -0.2877     0.1708  -1.684 0.092086 .  
## Var2Gagal    -0.5878     0.1764  -3.332 0.000861 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 14.71633  on 3  degrees of freedom
## Residual deviance:  0.26002  on 1  degrees of freedom
## AIC: 27.631
## 
## Number of Fisher Scoring iterations: 3

Model Dengan Interaksi

# Estimasi Model Log-Linear Dengan Interaksi
model_with_interaction <- glm(Freq ~ Var1 * Var2, data = data_frame, family = poisson(link = "log"))

# Menampilkan Ringkasan Model Dengan Interaksi
summary(model_with_interaction)
## 
## Call:
## glm(formula = Freq ~ Var1 * Var2, family = poisson(link = "log"), 
##     data = data_frame)
## 
## Coefficients:
##                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            3.9120     0.1414  27.662   <2e-16 ***
## Var1Wanita            -0.2231     0.2121  -1.052    0.293    
## Var2Gagal             -0.5108     0.2309  -2.212    0.027 *  
## Var1Wanita:Var2Gagal  -0.1823     0.3582  -0.509    0.611    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 1.4716e+01  on 3  degrees of freedom
## Residual deviance: 8.4377e-15  on 0  degrees of freedom
## AIC: 29.371
## 
## Number of Fisher Scoring iterations: 3

9.5.6 Kesimpulan

Model Tanpa Interaksi - Model log-linear tanpa interaksi lebih baik dalam hal fit dibandingkan model dengan interaksi, dengan nilai AIC lebih rendah (27.631 vs 29.371). - Efek utama dari status (Gagal) sangat signifikan (p < 0.001), menunjukkan bahwa kategori Gagal memiliki pengaruh yang kuat pada hasil lulus/gagal. - Efek utama jenis kelamin (Wanita) tidak signifikan pada p = 0.092, menunjukkan bahwa perbedaan antara pria dan wanita dalam hal lulus/gagal tidak terlalu besar.

Model Dengan Interaksi - Efek interaksi antara jenis kelamin (Wanita) dan status (Gagal) tidak signifikan (p = 0.611), artinya interaksi antara kedua variabel tersebut tidak memberikan kontribusi yang signifikan terhadap model. - Model ini lebih kompleks dan memiliki AIC yang lebih tinggi, menunjukkan bahwa menambahkan interaksi tidak meningkatkan kualitas model secara signifikan.

Rekomendasi - Model Tanpa Interaksi lebih baik digunakan untuk analisis ini karena lebih sederhana dan lebih sesuai dengan data yang tersedia. Efek utama dari status sangat jelas, sementara efek jenis kelamin tidak signifikan dalam model ini.

10 Model Log Linear Tiga Arah

Model log-linear tiga arah digunakan untuk menganalisis hubungan antara tiga variabel kategorik dalam tabel kontingensi, dengan cara memodelkan log dari frekuensi yang diharapkan (\(\mu_{ijk}\)) sebagai penjumlahan dari efek utama dan interaksi antar variabel. Model ini mencakup pengaruh efek utama dari setiap variabel serta interaksi antara variabel-variabel tersebut.

10.1 Model Saturated (Saturated Model)

Model saturated adalah model yang mencakup semua interaksi antara ketiga variabel. Artinya, model ini memasukkan efek utama dari setiap variabel dan semua interaksi dua arah serta tiga arah. Secara matematis, model saturated untuk tiga variabel \(X\), \(Y\), dan \(Z\) ditulis sebagai:

\[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z + \lambda_{XY} + \lambda_{XZ} + \lambda_{YZ} + \lambda_{XYZ} \]

  • \(\lambda_X, \lambda_Y, \lambda_Z\) adalah efek utama dari masing-masing variabel.
  • \(\lambda_{XY}, \lambda_{XZ}, \lambda_{YZ}\) adalah interaksi dua arah.
  • \(\lambda_{XYZ}\) adalah interaksi tiga arah.

Model saturated mengasumsikan bahwa semua kombinasi interaksi mungkin terjadi, dan ini memberikan model yang paling kompleks dengan banyak parameter.

10.2 Model Homogen (Homogeneous Model)

Model homogen mengasumsikan bahwa tidak ada interaksi antara variabel-variabel yang dipertimbangkan, baik dua arah maupun tiga arah. Model ini hanya mencakup efek utama dari setiap variabel. Secara matematis, model homogen untuk tiga variabel ditulis sebagai:

\[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z \]

Dalam model ini, kita hanya mempertimbangkan pengaruh individu dari masing-masing variabel, tanpa memperhitungkan adanya hubungan interaktif antar variabel.

10.3 Model Conditional

Model conditional berfokus pada pengaruh interaksi dua arah antara dua variabel, dengan mengontrol satu variabel lainnya. Tiga model conditional dapat dibangun berdasarkan variabel yang dikontrol:

  1. Conditional pada \(X\): \[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z + \lambda_{XY} + \lambda_{XZ} \]

  2. Conditional pada \(Y\): \[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z + \lambda_{XY} + \lambda_{YZ} \]

  3. Conditional pada \(Z\): \[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z + \lambda_{XZ} + \lambda_{YZ} \]

10.4 Model Joint Independence (Independence Model)

Model joint independence mengasumsikan bahwa ada independensi antara dua variabel pada setiap kombinasi tingkat variabel lainnya. Beberapa model joint independence adalah:

  • Independensi antara \(X\) dan \(Y\): \[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z + \lambda_{XY} \]

  • Independensi antara \(X\) dan \(Z\): \[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z + \lambda_{XZ} \]

  • Independensi antara \(Y\) dan \(Z\): \[ \log(\mu_{ijk}) = \lambda + \lambda_X + \lambda_Y + \lambda_Z + \lambda_{YZ} \]

Model ini mengasumsikan bahwa dua variabel saling independen dalam distribusinya, dengan adanya asumsi bahwa hubungan antara dua variabel tersebut terlepas dari pengaruh variabel ketiga.

10.5 Pengujian Interaksi

1. Pengujian Interaksi Tiga Arah (Saturated vs Homogen)

Pengujian interaksi tiga arah dilakukan dengan membandingkan model saturated yang mencakup semua interaksi dengan model homogen yang hanya mencakup efek utama. Untuk menguji apakah ada interaksi tiga arah, kita menggunakan deviance:

\[ \Delta \text{Deviance} = \text{Deviance Model Homogen} - \text{Deviance Model Saturated} \]

  • \(H_0\): Tidak ada interaksi tiga arah
  • \(H_1\): Ada interaksi tiga arah

Jika \(\Delta \text{Deviance}\) lebih besar dari nilai chi-square kritis, maka kita menolak \(H_0\) dan menyimpulkan bahwa ada interaksi tiga arah.

2. Pengujian Interaksi Dua Arah (XY, XZ, YZ)

Untuk pengujian interaksi dua arah, kita membandingkan model dengan interaksi dua arah dengan model yang hanya mencakup efek utama. Jika ada peningkatan yang signifikan dalam deviance, maka kita dapat menyimpulkan bahwa ada interaksi dua arah yang signifikan antara variabel-variabel tersebut.

10.6 Contoh Kasus

Dalam penelitian ini, kita akan menganalisis hubungan antara jenis kelamin, status pernikahan, dan pendidikan menggunakan model log-linear tiga arah. Tujuan analisis ini adalah untuk memahami bagaimana jenis kelamin dan status pernikahan memengaruhi tingkat pendidikan seseorang.

Data yang digunakan diambil dari sebuah studi yang mengamati distribusi tingkat pendidikan berdasarkan jenis kelamin dan status pernikahan dalam sebuah populasi. Berikut adalah tabel data yang menunjukkan jumlah orang dengan tingkat pendidikan yang berbeda berdasarkan jenis kelamin dan status pernikahan.

10.6.1 Data

Jenis Kelamin Status Pernikahan Pendidikan Tinggi Pendidikan Menengah Pendidikan Rendah
Pria Menikah 120 200 150
Pria Belum Menikah 80 180 100
Wanita Menikah 100 180 120
Wanita Belum Menikah 60 150 90

10.6.2 Menyusun Tabel Kontingensi

Untuk analisis log-linear tiga arah, kita perlu mengonversi data tersebut menjadi tabel kontingensi. Tabel kontingensi ini akan menunjukkan distribusi frekuensi untuk kombinasi variabel jenis kelamin, status pernikahan, dan pendidikan.

# Membuat data tabel untuk kontingensi
jenis_kelamin <- factor(c("Pria", "Pria", "Wanita", "Wanita"))
status_pernikahan <- factor(c("Menikah", "Belum Menikah", "Menikah", "Belum Menikah"))
pendidikan <- factor(c("Pendidikan Tinggi", "Pendidikan Menengah", "Pendidikan Rendah", 
                       "Pendidikan Tinggi", "Pendidikan Menengah", "Pendidikan Rendah", 
                       "Pendidikan Tinggi", "Pendidikan Menengah", "Pendidikan Rendah", 
                       "Pendidikan Tinggi", "Pendidikan Menengah", "Pendidikan Rendah"))

frekuensi <- c(120, 200, 150, 80, 180, 100, 100, 180, 120, 60, 150, 90)

# Membuat data frame dari tabel
data_kontingensi <- data.frame(JenisKelamin = jenis_kelamin, 
                               StatusPernikahan = status_pernikahan, 
                               Pendidikan = pendidikan, 
                               Frekuensi = frekuensi)

# Mengubah data menjadi tabel kontingensi
tabel_kontingensi <- xtabs(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan, data = data_kontingensi)

# Menampilkan tabel kontingensi
ftable(tabel_kontingensi)
##                               Pendidikan Pendidikan Menengah Pendidikan Rendah Pendidikan Tinggi
## JenisKelamin StatusPernikahan                                                                   
## Pria         Belum Menikah                               200               100                60
##              Menikah                                     180               120               120
## Wanita       Belum Menikah                               180                90                80
##              Menikah                                     150               150               100

10.6.3 Model Homogen vs Saturated

# Estimasi Model Log-Linear Dengan Interaksi Dua Arah (Homogen)
model_homogen <- glm(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + JenisKelamin*StatusPernikahan + JenisKelamin*Pendidikan + StatusPernikahan*Pendidikan, family = poisson(link = "log"), data = data_kontingensi)

# Menampilkan Ringkasan Model Homogen
summary(model_homogen)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
##     JenisKelamin * StatusPernikahan + JenisKelamin * Pendidikan + 
##     StatusPernikahan * Pendidikan, family = poisson(link = "log"), 
##     data = data_kontingensi)
## 
## Coefficients:
##                                                     Estimate Std. Error z value
## (Intercept)                                          5.30517    0.06628  80.037
## JenisKelaminWanita                                  -0.11989    0.08930  -1.343
## StatusPernikahanMenikah                             -0.11989    0.08930  -1.343
## PendidikanPendidikan Rendah                         -0.80982    0.10803  -7.496
## PendidikanPendidikan Tinggi                         -1.07072    0.11820  -9.058
## JenisKelaminWanita:StatusPernikahanMenikah          -0.04563    0.10363  -0.440
## JenisKelaminWanita:PendidikanPendidikan Rendah       0.23369    0.12058   1.938
## JenisKelaminWanita:PendidikanPendidikan Tinggi       0.14777    0.13041   1.133
## StatusPernikahanMenikah:PendidikanPendidikan Rendah  0.49514    0.12112   4.088
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi  0.59475    0.13179   4.513
##                                                     Pr(>|z|)    
## (Intercept)                                          < 2e-16 ***
## JenisKelaminWanita                                    0.1794    
## StatusPernikahanMenikah                               0.1794    
## PendidikanPendidikan Rendah                         6.57e-14 ***
## PendidikanPendidikan Tinggi                          < 2e-16 ***
## JenisKelaminWanita:StatusPernikahanMenikah            0.6597    
## JenisKelaminWanita:PendidikanPendidikan Rendah        0.0526 .  
## JenisKelaminWanita:PendidikanPendidikan Tinggi        0.2572    
## StatusPernikahanMenikah:PendidikanPendidikan Rendah 4.35e-05 ***
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi 6.40e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 171.8764  on 11  degrees of freedom
## Residual deviance:   7.7508  on  2  degrees of freedom
## AIC: 107.29
## 
## Number of Fisher Scoring iterations: 4
# Estimasi Model Log-Linear Dengan Interaksi (Saturated)
model_saturated <- glm(Frekuensi ~ JenisKelamin * StatusPernikahan * Pendidikan, family = poisson(link = "log"), data = data_kontingensi)

# Menampilkan Ringkasan Model Saturated
summary(model_saturated)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin * StatusPernikahan * Pendidikan, 
##     family = poisson(link = "log"), data = data_kontingensi)
## 
## Coefficients:
##                                                                          Estimate
## (Intercept)                                                             5.298e+00
## JenisKelaminWanita                                                     -1.054e-01
## StatusPernikahanMenikah                                                -1.054e-01
## PendidikanPendidikan Rendah                                            -6.931e-01
## PendidikanPendidikan Tinggi                                            -1.204e+00
## JenisKelaminWanita:StatusPernikahanMenikah                             -7.696e-02
## JenisKelaminWanita:PendidikanPendidikan Rendah                          6.190e-14
## JenisKelaminWanita:PendidikanPendidikan Tinggi                          3.930e-01
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                     2.877e-01
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                     7.985e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah  4.055e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi -3.930e-01
##                                                                        Std. Error
## (Intercept)                                                             7.071e-02
## JenisKelaminWanita                                                      1.027e-01
## StatusPernikahanMenikah                                                 1.027e-01
## PendidikanPendidikan Rendah                                             1.225e-01
## PendidikanPendidikan Tinggi                                             1.472e-01
## JenisKelaminWanita:StatusPernikahanMenikah                              1.509e-01
## JenisKelaminWanita:PendidikanPendidikan Rendah                          1.780e-01
## JenisKelaminWanita:PendidikanPendidikan Tinggi                          1.993e-01
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                     1.700e-01
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                     1.886e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah  2.427e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi  2.651e-01
##                                                                        z value
## (Intercept)                                                             74.930
## JenisKelaminWanita                                                      -1.026
## StatusPernikahanMenikah                                                 -1.026
## PendidikanPendidikan Rendah                                             -5.660
## PendidikanPendidikan Tinggi                                             -8.179
## JenisKelaminWanita:StatusPernikahanMenikah                              -0.510
## JenisKelaminWanita:PendidikanPendidikan Rendah                           0.000
## JenisKelaminWanita:PendidikanPendidikan Tinggi                           1.972
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                      1.693
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                      4.235
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah   1.671
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi  -1.483
##                                                                        Pr(>|z|)
## (Intercept)                                                             < 2e-16
## JenisKelaminWanita                                                       0.3051
## StatusPernikahanMenikah                                                  0.3051
## PendidikanPendidikan Rendah                                            1.52e-08
## PendidikanPendidikan Tinggi                                            2.85e-16
## JenisKelaminWanita:StatusPernikahanMenikah                               0.6101
## JenisKelaminWanita:PendidikanPendidikan Rendah                           1.0000
## JenisKelaminWanita:PendidikanPendidikan Tinggi                           0.0486
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                      0.0905
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                    2.29e-05
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah   0.0948
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi   0.1382
##                                                                           
## (Intercept)                                                            ***
## JenisKelaminWanita                                                        
## StatusPernikahanMenikah                                                   
## PendidikanPendidikan Rendah                                            ***
## PendidikanPendidikan Tinggi                                            ***
## JenisKelaminWanita:StatusPernikahanMenikah                                
## JenisKelaminWanita:PendidikanPendidikan Rendah                            
## JenisKelaminWanita:PendidikanPendidikan Tinggi                         *  
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                    .  
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                    ***
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah .  
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance:  1.7188e+02  on 11  degrees of freedom
## Residual deviance: -1.9540e-14  on  0  degrees of freedom
## AIC: 103.54
## 
## Number of Fisher Scoring iterations: 2
# Menghitung Deviance untuk kedua model
deviance_homogen <- deviance(model_homogen)
deviance_saturated <- deviance(model_saturated)

# Selisih Deviance
delta_deviance <- deviance_homogen - deviance_saturated

# Derajat kebebasan
df <- df.residual(model_homogen) - df.residual(model_saturated)

# Menghitung nilai chi-square
chi_square_value <- delta_deviance
p_value <- 1 - pchisq(chi_square_value, df)

delta_deviance
## [1] 7.750792
chi_square_value
## [1] 7.750792
p_value
## [1] 0.02074612

Berdasarkan hasil perhitungan dan uji model log-linear yang telah dilakukan, berikut adalah kesimpulannya:

1. Model Homogen vs Model Saturated

  • Deviance Model Homogen: Hasil perhitungan Deviance untuk model homogen adalah 7.750792.
  • Deviance Model Saturated: Deviance untuk model saturated adalah sangat kecil, mendekati 0, yaitu -1.9540e-14.

2. Selisih Deviance

Selisih Deviance antara model homogen dan saturated adalah 7.750792. Nilai ini menunjukkan bahwa model saturated (yang mencakup semua interaksi dua arah dan tiga arah) memiliki fit yang lebih baik dibandingkan dengan model homogen.

3. Pengujian Chi-Square

Nilai chi-square untuk uji perbandingan antara model homogen dan saturated dihitung sebagai 7.750792. Dengan derajat kebebasan yang sesuai, kita bisa menghitung p-value:

  • p-value = 0.02074612

4. Hipotesis Pengujian

  • Hipotesis \(H_0\): Model homogen (tanpa interaksi) adalah model terbaik.
  • Hipotesis \(H_1\): Model saturated (dengan interaksi) adalah model terbaik.

5. Interpretasi Hasil

  • p-value = 0.02074612 menunjukkan bahwa kita menolak \(H_0\) pada tingkat signifikansi 0.05, yang berarti model saturated lebih baik dibandingkan dengan model homogen.
  • Selisih Deviance yang cukup besar mengindikasikan bahwa model saturated memberikan peningkatan kualitas model yang signifikan dibandingkan model homogen.

Kesimpulan Akhir

Berdasarkan Deviance dan p-value, kita dapat menyimpulkan bahwa model saturated yang mencakup semua interaksi dua arah dan tiga arah lebih cocok untuk data ini dibandingkan dengan model homogen, yang hanya mencakup efek utama dan interaksi dua arah. Dengan demikian, model saturated memberikan fit yang lebih baik dan lebih tepat dalam menggambarkan hubungan antar variabel. Sehingga ada interaksi antara fakor gender, status, dan pendidikan

10.6.4 Model Homogen vs Conditional on X (Jenis Kelamin)

# Estimasi Model Log-Linear Tanpa Interaksi (Homogen)
model_homogen <- glm(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + JenisKelamin*StatusPernikahan + JenisKelamin*Pendidikan + StatusPernikahan*Pendidikan, family = poisson(link = "log"), data = data_kontingensi)

# Menampilkan Ringkasan Model Homogen
summary(model_homogen)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
##     JenisKelamin * StatusPernikahan + JenisKelamin * Pendidikan + 
##     StatusPernikahan * Pendidikan, family = poisson(link = "log"), 
##     data = data_kontingensi)
## 
## Coefficients:
##                                                     Estimate Std. Error z value
## (Intercept)                                          5.30517    0.06628  80.037
## JenisKelaminWanita                                  -0.11989    0.08930  -1.343
## StatusPernikahanMenikah                             -0.11989    0.08930  -1.343
## PendidikanPendidikan Rendah                         -0.80982    0.10803  -7.496
## PendidikanPendidikan Tinggi                         -1.07072    0.11820  -9.058
## JenisKelaminWanita:StatusPernikahanMenikah          -0.04563    0.10363  -0.440
## JenisKelaminWanita:PendidikanPendidikan Rendah       0.23369    0.12058   1.938
## JenisKelaminWanita:PendidikanPendidikan Tinggi       0.14777    0.13041   1.133
## StatusPernikahanMenikah:PendidikanPendidikan Rendah  0.49514    0.12112   4.088
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi  0.59475    0.13179   4.513
##                                                     Pr(>|z|)    
## (Intercept)                                          < 2e-16 ***
## JenisKelaminWanita                                    0.1794    
## StatusPernikahanMenikah                               0.1794    
## PendidikanPendidikan Rendah                         6.57e-14 ***
## PendidikanPendidikan Tinggi                          < 2e-16 ***
## JenisKelaminWanita:StatusPernikahanMenikah            0.6597    
## JenisKelaminWanita:PendidikanPendidikan Rendah        0.0526 .  
## JenisKelaminWanita:PendidikanPendidikan Tinggi        0.2572    
## StatusPernikahanMenikah:PendidikanPendidikan Rendah 4.35e-05 ***
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi 6.40e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 171.8764  on 11  degrees of freedom
## Residual deviance:   7.7508  on  2  degrees of freedom
## AIC: 107.29
## 
## Number of Fisher Scoring iterations: 4
# Estimasi Model Log-Linear Conditional pada X (Jenis Kelamin)
model_conditional_x <- glm(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + JenisKelamin*StatusPernikahan + JenisKelamin*Pendidikan , family = poisson(link = "log"), 
                            data = data_kontingensi)

# Menampilkan Ringkasan Model Conditional pada X
summary(model_conditional_x)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
##     JenisKelamin * StatusPernikahan + JenisKelamin * Pendidikan, 
##     family = poisson(link = "log"), data = data_kontingensi)
## 
## Coefficients:
##                                                Estimate Std. Error z value
## (Intercept)                                     5.16698    0.06424  80.427
## JenisKelaminWanita                             -0.13003    0.09317  -1.396
## StatusPernikahanMenikah                         0.15415    0.07182   2.146
## PendidikanPendidikan Rendah                    -0.54654    0.08472  -6.451
## PendidikanPendidikan Tinggi                    -0.74721    0.09048  -8.258
## JenisKelaminWanita:StatusPernikahanMenikah     -0.02062    0.10255  -0.201
## JenisKelaminWanita:PendidikanPendidikan Rendah  0.22809    0.11989   1.902
## JenisKelaminWanita:PendidikanPendidikan Tinggi  0.14108    0.12951   1.089
##                                                Pr(>|z|)    
## (Intercept)                                     < 2e-16 ***
## JenisKelaminWanita                               0.1629    
## StatusPernikahanMenikah                          0.0319 *  
## PendidikanPendidikan Rendah                    1.11e-10 ***
## PendidikanPendidikan Tinggi                     < 2e-16 ***
## JenisKelaminWanita:StatusPernikahanMenikah       0.8406    
## JenisKelaminWanita:PendidikanPendidikan Rendah   0.0571 .  
## JenisKelaminWanita:PendidikanPendidikan Tinggi   0.2760    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 171.876  on 11  degrees of freedom
## Residual deviance:  35.424  on  4  degrees of freedom
## AIC: 130.96
## 
## Number of Fisher Scoring iterations: 4
# Menghitung Deviance untuk kedua model
deviance_homogen <- deviance(model_homogen)
deviance_conditional_x <- deviance(model_conditional_x)

# Selisih Deviance
delta_deviance_conditional_x <- deviance_conditional_x - deviance_homogen

# Derajat kebebasan
df_conditional_x <- df.residual(model_conditional_x) - df.residual(model_homogen)

# Menghitung nilai chi-square
chi_square_value_conditional_x <- delta_deviance_conditional_x
p_value_conditional_x <- 1 - pchisq(chi_square_value_conditional_x, df_conditional_x)

delta_deviance_conditional_x
## [1] 27.6733
chi_square_value_conditional_x
## [1] 27.6733
p_value_conditional_x
## [1] 9.790812e-07

Berdasarkan hasil analisis perbandingan antara model homogen dan model conditional pada \(X\), berikut adalah kesimpulannya:

1. Model Homogen vs Model Conditional pada \(X\)

  • Deviance Model Homogen: Deviance untuk model homogen adalah 7.7508.
  • Deviance Model Conditional pada \(X\): Deviance untuk model conditional pada \(X\) adalah 35.424.

2. Selisih Deviance

Selisih Deviance antara model conditional pada \(X\) dan model homogen adalah 27.6733. Nilai ini menunjukkan bahwa model conditional pada \(X\) memiliki fit yang lebih buruk dibandingkan dengan model homogen, karena selisih Deviance yang besar menunjukkan penurunan kualitas model.

3. Pengujian Chi-Square

Nilai chi-square untuk uji perbandingan antara model homogen dan model conditional pada \(X\) dihitung sebagai 27.6733. Dengan derajat kebebasan yang sesuai, kita dapat menghitung p-value:

  • p-value = 9.790812e-07

4. Hipotesis Pengujian

  • \(H_0\): Model homogen (tanpa interaksi) adalah model terbaik.
  • \(H_1\): Model conditional pada \(X\) (dengan interaksi) adalah model terbaik.

5. Interpretasi Hasil

  • p-value = 9.790812e-07 menunjukkan bahwa kita menolak \(H_0\) pada tingkat signifikansi 0.05, yang berarti model homogen lebih baik dibandingkan dengan model conditional pada \(X\).
  • Selisih Deviance yang besar mengindikasikan bahwa model conditional pada \(X\) memberikan fit yang lebih buruk dibandingkan model homogen.

Kesimpulan Akhir

Berdasarkan Deviance, chi-square, dan p-value, kita dapat menyimpulkan bahwa model homogen, yang hanya mempertimbangkan efek utama dan interaksi dua arah, lebih baik dalam menggambarkan hubungan antar variabel dibandingkan dengan model conditional pada \(X\) yang memasukkan interaksi dua arah antara Status Pernikahan dan Pendidikan sambil mengontrol Jenis Kelamin. Sehingga dibuktikan adanya interaksi signifikan antara status dan pendidikan.

10.6.5 Model Homogen vs Conditional on Y (Pendidikan)

# Estimasi Model Log-Linear Tanpa Interaksi (Homogen)
model_homogen <- glm(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
                     JenisKelamin*StatusPernikahan + JenisKelamin*Pendidikan + 
                     StatusPernikahan*Pendidikan, family = poisson(link = "log"), 
                     data = data_kontingensi)

# Menampilkan Ringkasan Model Homogen
summary(model_homogen)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
##     JenisKelamin * StatusPernikahan + JenisKelamin * Pendidikan + 
##     StatusPernikahan * Pendidikan, family = poisson(link = "log"), 
##     data = data_kontingensi)
## 
## Coefficients:
##                                                     Estimate Std. Error z value
## (Intercept)                                          5.30517    0.06628  80.037
## JenisKelaminWanita                                  -0.11989    0.08930  -1.343
## StatusPernikahanMenikah                             -0.11989    0.08930  -1.343
## PendidikanPendidikan Rendah                         -0.80982    0.10803  -7.496
## PendidikanPendidikan Tinggi                         -1.07072    0.11820  -9.058
## JenisKelaminWanita:StatusPernikahanMenikah          -0.04563    0.10363  -0.440
## JenisKelaminWanita:PendidikanPendidikan Rendah       0.23369    0.12058   1.938
## JenisKelaminWanita:PendidikanPendidikan Tinggi       0.14777    0.13041   1.133
## StatusPernikahanMenikah:PendidikanPendidikan Rendah  0.49514    0.12112   4.088
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi  0.59475    0.13179   4.513
##                                                     Pr(>|z|)    
## (Intercept)                                          < 2e-16 ***
## JenisKelaminWanita                                    0.1794    
## StatusPernikahanMenikah                               0.1794    
## PendidikanPendidikan Rendah                         6.57e-14 ***
## PendidikanPendidikan Tinggi                          < 2e-16 ***
## JenisKelaminWanita:StatusPernikahanMenikah            0.6597    
## JenisKelaminWanita:PendidikanPendidikan Rendah        0.0526 .  
## JenisKelaminWanita:PendidikanPendidikan Tinggi        0.2572    
## StatusPernikahanMenikah:PendidikanPendidikan Rendah 4.35e-05 ***
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi 6.40e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 171.8764  on 11  degrees of freedom
## Residual deviance:   7.7508  on  2  degrees of freedom
## AIC: 107.29
## 
## Number of Fisher Scoring iterations: 4
# Estimasi Model Log-Linear Conditional pada Y (Pendidikan)
model_conditional_y <- glm(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan +
                            JenisKelamin*Pendidikan + StatusPernikahan*Pendidikan, family = poisson(link = "log"), 
                            data = data_kontingensi)

# Menampilkan Ringkasan Model Conditional pada Y
summary(model_conditional_y)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
##     JenisKelamin * Pendidikan + StatusPernikahan * Pendidikan, 
##     family = poisson(link = "log"), data = data_kontingensi)
## 
## Coefficients:
##                                                     Estimate Std. Error z value
## (Intercept)                                          5.31508    0.06209  85.608
## JenisKelaminWanita                                  -0.14108    0.07525  -1.875
## StatusPernikahanMenikah                             -0.14108    0.07525  -1.875
## PendidikanPendidikan Rendah                         -0.80565    0.10719  -7.516
## PendidikanPendidikan Tinggi                         -1.06658    0.11737  -9.087
## JenisKelaminWanita:PendidikanPendidikan Rendah       0.22809    0.11989   1.902
## JenisKelaminWanita:PendidikanPendidikan Tinggi       0.14108    0.12951   1.089
## StatusPernikahanMenikah:PendidikanPendidikan Rendah  0.49248    0.12095   4.072
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi  0.59306    0.13172   4.502
##                                                     Pr(>|z|)    
## (Intercept)                                          < 2e-16 ***
## JenisKelaminWanita                                    0.0608 .  
## StatusPernikahanMenikah                               0.0608 .  
## PendidikanPendidikan Rendah                         5.64e-14 ***
## PendidikanPendidikan Tinggi                          < 2e-16 ***
## JenisKelaminWanita:PendidikanPendidikan Rendah        0.0571 .  
## JenisKelaminWanita:PendidikanPendidikan Tinggi        0.2760    
## StatusPernikahanMenikah:PendidikanPendidikan Rendah 4.67e-05 ***
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi 6.72e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 171.8764  on 11  degrees of freedom
## Residual deviance:   7.9447  on  3  degrees of freedom
## AIC: 105.48
## 
## Number of Fisher Scoring iterations: 4
# Menghitung Deviance untuk kedua model
deviance_homogen <- deviance(model_homogen)
deviance_conditional_y <- deviance(model_conditional_y)

# Selisih Deviance (model homogen - model conditional pada Y)
delta_deviance_conditional_y <- deviance_conditional_y - deviance_homogen

# Derajat kebebasan
df_conditional_y <- df.residual(model_conditional_y) - df.residual(model_homogen)

# Menghitung nilai chi-square
chi_square_value_conditional_y <- delta_deviance_conditional_y
p_value_conditional_y <- 1 - pchisq(chi_square_value_conditional_y, df_conditional_y)

# Menampilkan hasil
delta_deviance_conditional_y
## [1] 0.1939064
chi_square_value_conditional_y
## [1] 0.1939064
p_value_conditional_y
## [1] 0.659685

Berdasarkan hasil analisis perbandingan antara model homogen dan model conditional pada \(Y\), berikut adalah kesimpulannya:

1. Model Homogen vs Model Conditional pada \(Y\)

  • Deviance Model Homogen: Deviance untuk model homogen adalah 7.7508.
  • Deviance Model Conditional pada \(Y\): Deviance untuk model conditional pada \(Y\) adalah 7.9447.

2. Selisih Deviance

Selisih Deviance antara model conditional pada \(Y\) dan model homogen adalah 0.1939. Nilai ini menunjukkan bahwa model conditional pada \(Y\) memiliki fit yang sedikit lebih buruk dibandingkan dengan model homogen, tetapi selisihnya sangat kecil, yang menunjukkan bahwa kedua model tersebut tidak jauh berbeda dalam hal fit.

3. Pengujian Chi-Square

Nilai chi-square untuk uji perbandingan antara model homogen dan model conditional pada \(Y\) dihitung sebagai 0.1939. Dengan derajat kebebasan yang sesuai, kita dapat menghitung p-value:

  • p-value = 0.6597

4. Hipotesis Pengujian

  • \(H_0\): Model homogen (tanpa interaksi) adalah model terbaik.
  • \(H_1\): Model conditional pada \(Y\) (dengan interaksi) adalah model terbaik.

5. Interpretasi Hasil

  • p-value = 0.6597 menunjukkan bahwa kita gagal menolak \(H_0\) pada tingkat signifikansi 0.05, yang berarti model homogen tidak dapat ditolak sebagai model yang lebih baik daripada model conditional pada \(Y\).
  • Selisih Deviance yang kecil mengindikasikan bahwa model conditional pada \(Y\) tidak memberikan peningkatan yang signifikan dibandingkan dengan model homogen.

Kesimpulan Akhir

Berdasarkan Deviance, chi-square, dan p-value, kita dapat menyimpulkan bahwa model homogen, yang hanya mempertimbangkan efek utama dan interaksi dua arah, adalah model yang lebih sesuai untuk data ini dibandingkan dengan model conditional pada \(Y\), yang mengontrol Pendidikan. Kedua model memiliki fit yang hampir sama, namun tidak ada perbedaan yang signifikan secara statistik antara keduanya. Sehingga membuktikan tidak adanya interaksi signifikan antara status dan gender.

10.6.6 Model Homogen vs Conditional on Z (Status Pernikahan)

# Estimasi Model Log-Linear Tanpa Interaksi (Homogen)
model_homogen <- glm(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
                     JenisKelamin*StatusPernikahan + JenisKelamin*Pendidikan + 
                     StatusPernikahan*Pendidikan, family = poisson(link = "log"), 
                     data = data_kontingensi)

# Menampilkan Ringkasan Model Homogen
summary(model_homogen)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
##     JenisKelamin * StatusPernikahan + JenisKelamin * Pendidikan + 
##     StatusPernikahan * Pendidikan, family = poisson(link = "log"), 
##     data = data_kontingensi)
## 
## Coefficients:
##                                                     Estimate Std. Error z value
## (Intercept)                                          5.30517    0.06628  80.037
## JenisKelaminWanita                                  -0.11989    0.08930  -1.343
## StatusPernikahanMenikah                             -0.11989    0.08930  -1.343
## PendidikanPendidikan Rendah                         -0.80982    0.10803  -7.496
## PendidikanPendidikan Tinggi                         -1.07072    0.11820  -9.058
## JenisKelaminWanita:StatusPernikahanMenikah          -0.04563    0.10363  -0.440
## JenisKelaminWanita:PendidikanPendidikan Rendah       0.23369    0.12058   1.938
## JenisKelaminWanita:PendidikanPendidikan Tinggi       0.14777    0.13041   1.133
## StatusPernikahanMenikah:PendidikanPendidikan Rendah  0.49514    0.12112   4.088
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi  0.59475    0.13179   4.513
##                                                     Pr(>|z|)    
## (Intercept)                                          < 2e-16 ***
## JenisKelaminWanita                                    0.1794    
## StatusPernikahanMenikah                               0.1794    
## PendidikanPendidikan Rendah                         6.57e-14 ***
## PendidikanPendidikan Tinggi                          < 2e-16 ***
## JenisKelaminWanita:StatusPernikahanMenikah            0.6597    
## JenisKelaminWanita:PendidikanPendidikan Rendah        0.0526 .  
## JenisKelaminWanita:PendidikanPendidikan Tinggi        0.2572    
## StatusPernikahanMenikah:PendidikanPendidikan Rendah 4.35e-05 ***
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi 6.40e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 171.8764  on 11  degrees of freedom
## Residual deviance:   7.7508  on  2  degrees of freedom
## AIC: 107.29
## 
## Number of Fisher Scoring iterations: 4
# Estimasi Model Log-Linear Conditional pada Z (Status Pernikahan)
model_conditional_z <- glm(Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
                            JenisKelamin*StatusPernikahan + StatusPernikahan*Pendidikan, 
                            family = poisson(link = "log"), data = data_kontingensi)

# Menampilkan Ringkasan Model Conditional pada Z
summary(model_conditional_z)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin + StatusPernikahan + Pendidikan + 
##     JenisKelamin * StatusPernikahan + StatusPernikahan * Pendidikan, 
##     family = poisson(link = "log"), data = data_kontingensi)
## 
## Coefficients:
##                                                     Estimate Std. Error z value
## (Intercept)                                          5.26101    0.06325  83.174
## JenisKelaminWanita                                  -0.02817    0.07507  -0.375
## StatusPernikahanMenikah                             -0.13097    0.09051  -1.447
## PendidikanPendidikan Rendah                         -0.69315    0.08885  -7.801
## PendidikanPendidikan Tinggi                         -0.99853    0.09887 -10.100
## JenisKelaminWanita:StatusPernikahanMenikah          -0.02062    0.10255  -0.201
## StatusPernikahanMenikah:PendidikanPendidikan Rendah  0.49248    0.12095   4.072
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi  0.59306    0.13172   4.502
##                                                     Pr(>|z|)    
## (Intercept)                                          < 2e-16 ***
## JenisKelaminWanita                                     0.707    
## StatusPernikahanMenikah                                0.148    
## PendidikanPendidikan Rendah                         6.14e-15 ***
## PendidikanPendidikan Tinggi                          < 2e-16 ***
## JenisKelaminWanita:StatusPernikahanMenikah             0.841    
## StatusPernikahanMenikah:PendidikanPendidikan Rendah 4.67e-05 ***
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi 6.72e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 171.88  on 11  degrees of freedom
## Residual deviance:  11.71  on  4  degrees of freedom
## AIC: 107.25
## 
## Number of Fisher Scoring iterations: 4
# Menghitung Deviance untuk kedua model
deviance_homogen <- deviance(model_homogen)
deviance_conditional_z <- deviance(model_conditional_z)

# Selisih Deviance (model homogen - model conditional pada Z)
delta_deviance_conditional_z <- deviance_conditional_z - deviance_homogen

# Derajat kebebasan
df_conditional_z <- df.residual(model_conditional_z) - df.residual(model_homogen)

# Menghitung nilai chi-square
chi_square_value_conditional_z <- delta_deviance_conditional_z
p_value_conditional_z <- 1 - pchisq(chi_square_value_conditional_z, df_conditional_z)

# Menampilkan hasil
delta_deviance_conditional_z
## [1] 3.959086
chi_square_value_conditional_z
## [1] 3.959086
p_value_conditional_z
## [1] 0.1381324

Berdasarkan hasil analisis perbandingan antara model homogen dan model conditional pada \(Z\), berikut adalah kesimpulannya:

1. Model Homogen vs Model Conditional pada \(Z\)

  • Deviance Model Homogen: Deviance untuk model homogen adalah 7.7508.
  • Deviance Model Conditional pada \(Z\): Deviance untuk model conditional pada \(Z\) adalah 11.71.

2. Selisih Deviance

Selisih Deviance antara model conditional pada \(Z\) dan model homogen adalah 3.9591. Nilai ini menunjukkan bahwa model conditional pada \(Z\) memiliki fit yang sedikit lebih buruk dibandingkan dengan model homogen, meskipun selisihnya tidak terlalu besar.

3. Pengujian Chi-Square

Nilai chi-square untuk uji perbandingan antara model homogen dan model conditional pada \(Z\) dihitung sebagai 3.9591. Dengan derajat kebebasan yang sesuai, kita dapat menghitung p-value:

  • p-value = 0.1381

4. Hipotesis Pengujian

  • \(H_0\): Model homogen (tanpa interaksi) adalah model terbaik.
  • \(H_1\): Model conditional pada \(Z\) (dengan interaksi) adalah model terbaik.

5. Interpretasi Hasil

  • p-value = 0.1381 menunjukkan bahwa kita gagal menolak \(H_0\) pada tingkat signifikansi 0.05, yang berarti model homogen tidak dapat ditolak sebagai model yang lebih baik daripada model conditional pada \(Z\).
  • Selisih Deviance yang kecil menunjukkan bahwa model conditional pada \(Z\) memberikan fit yang hampir sama dengan model homogen.

Kesimpulan Akhir

Berdasarkan Deviance, chi-square, dan p-value, kita dapat menyimpulkan bahwa model homogen, yang hanya mempertimbangkan efek utama dan interaksi dua arah, adalah model yang lebih sesuai untuk data ini dibandingkan dengan model conditional pada \(Z\), yang mengontrol Status Pernikahan. Kedua model memiliki fit yang sangat mirip, dan tidak ada perbedaan yang signifikan secara statistik antara keduanya. Sehingga menunjukkan tidak adanya interaksi antara pendidikan dan gender.

10.6.7 Mencari Model Terbaik

aic_homogen <- AIC(model_homogen)
aic_saturated <- AIC(model_saturated)
aic_conditional_x <- AIC(model_conditional_x)
aic_conditional_y <- AIC(model_conditional_y)
aic_conditional_z <- AIC(model_conditional_z)

# Membuat data frame untuk perbandingan Deviance dan AIC
model_comparison <- data.frame(
  Model = c("Homogen", "Saturated", "Conditional X", "Conditional Y", "Conditional Z"),
  Deviance = c(deviance_homogen, deviance_saturated, deviance_conditional_x, 
               deviance_conditional_y, deviance_conditional_z),
  AIC = c(aic_homogen, aic_saturated, aic_conditional_x, 
          aic_conditional_y, aic_conditional_z)
)

# Menampilkan perbandingan
model_comparison
##           Model      Deviance      AIC
## 1       Homogen  7.750792e+00 107.2901
## 2     Saturated -1.953993e-14 103.5393
## 3 Conditional X  3.542409e+01 130.9634
## 4 Conditional Y  7.944698e+00 105.4840
## 5 Conditional Z  1.170988e+01 107.2491

Menunjukkan bahwa Model Saturated merupakan model terbagus dengan nilai AIC terendah menunjukkan bahwa model saturated adalah model yang paling representatif

10.6.8 Interpretasi Model Saturated

summary(model_saturated)
## 
## Call:
## glm(formula = Frekuensi ~ JenisKelamin * StatusPernikahan * Pendidikan, 
##     family = poisson(link = "log"), data = data_kontingensi)
## 
## Coefficients:
##                                                                          Estimate
## (Intercept)                                                             5.298e+00
## JenisKelaminWanita                                                     -1.054e-01
## StatusPernikahanMenikah                                                -1.054e-01
## PendidikanPendidikan Rendah                                            -6.931e-01
## PendidikanPendidikan Tinggi                                            -1.204e+00
## JenisKelaminWanita:StatusPernikahanMenikah                             -7.696e-02
## JenisKelaminWanita:PendidikanPendidikan Rendah                          6.190e-14
## JenisKelaminWanita:PendidikanPendidikan Tinggi                          3.930e-01
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                     2.877e-01
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                     7.985e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah  4.055e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi -3.930e-01
##                                                                        Std. Error
## (Intercept)                                                             7.071e-02
## JenisKelaminWanita                                                      1.027e-01
## StatusPernikahanMenikah                                                 1.027e-01
## PendidikanPendidikan Rendah                                             1.225e-01
## PendidikanPendidikan Tinggi                                             1.472e-01
## JenisKelaminWanita:StatusPernikahanMenikah                              1.509e-01
## JenisKelaminWanita:PendidikanPendidikan Rendah                          1.780e-01
## JenisKelaminWanita:PendidikanPendidikan Tinggi                          1.993e-01
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                     1.700e-01
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                     1.886e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah  2.427e-01
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi  2.651e-01
##                                                                        z value
## (Intercept)                                                             74.930
## JenisKelaminWanita                                                      -1.026
## StatusPernikahanMenikah                                                 -1.026
## PendidikanPendidikan Rendah                                             -5.660
## PendidikanPendidikan Tinggi                                             -8.179
## JenisKelaminWanita:StatusPernikahanMenikah                              -0.510
## JenisKelaminWanita:PendidikanPendidikan Rendah                           0.000
## JenisKelaminWanita:PendidikanPendidikan Tinggi                           1.972
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                      1.693
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                      4.235
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah   1.671
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi  -1.483
##                                                                        Pr(>|z|)
## (Intercept)                                                             < 2e-16
## JenisKelaminWanita                                                       0.3051
## StatusPernikahanMenikah                                                  0.3051
## PendidikanPendidikan Rendah                                            1.52e-08
## PendidikanPendidikan Tinggi                                            2.85e-16
## JenisKelaminWanita:StatusPernikahanMenikah                               0.6101
## JenisKelaminWanita:PendidikanPendidikan Rendah                           1.0000
## JenisKelaminWanita:PendidikanPendidikan Tinggi                           0.0486
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                      0.0905
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                    2.29e-05
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah   0.0948
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi   0.1382
##                                                                           
## (Intercept)                                                            ***
## JenisKelaminWanita                                                        
## StatusPernikahanMenikah                                                   
## PendidikanPendidikan Rendah                                            ***
## PendidikanPendidikan Tinggi                                            ***
## JenisKelaminWanita:StatusPernikahanMenikah                                
## JenisKelaminWanita:PendidikanPendidikan Rendah                            
## JenisKelaminWanita:PendidikanPendidikan Tinggi                         *  
## StatusPernikahanMenikah:PendidikanPendidikan Rendah                    .  
## StatusPernikahanMenikah:PendidikanPendidikan Tinggi                    ***
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah .  
## JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance:  1.7188e+02  on 11  degrees of freedom
## Residual deviance: -1.9540e-14  on  0  degrees of freedom
## AIC: 103.54
## 
## Number of Fisher Scoring iterations: 2

Model Saturated mencakup semua interaksi dua arah dan tiga arah antara variabel Jenis Kelamin, Status Pernikahan, dan Pendidikan. Berdasarkan output yang diperoleh, berikut adalah interpretasi koefisien dan signifikansi dari setiap variabel dan interaksi.

1. Koefisien (Estimate)

  • (Intercept): Koefisien 5.298 menunjukkan bahwa ketika semua variabel (Jenis Kelamin, Status Pernikahan, dan Pendidikan) berada pada nilai referensi (kategori dasar), maka log frekuensi peristiwa yang diamati adalah 5.298.

  • JenisKelaminWanita: Koefisien -0.1054 menunjukkan bahwa Wanita memiliki frekuensi yang lebih rendah (log frekuensinya) dibandingkan dengan Pria. Namun, nilai p-value = 0.3051 menunjukkan bahwa efek ini tidak signifikan pada tingkat signifikansi 0.05. Artinya, tidak ada bukti yang cukup untuk menyatakan bahwa jenis kelamin mempengaruhi frekuensi peristiwa secara signifikan.

  • StatusPernikahanMenikah: Koefisien -0.1054 menunjukkan bahwa Status Menikah menurunkan frekuensi log peristiwa dibandingkan dengan Belum Menikah. Namun, p-value = 0.3051 menunjukkan bahwa perbedaan ini tidak signifikan, artinya tidak ada bukti yang cukup untuk mendukung pengaruh status pernikahan terhadap frekuensi peristiwa.

  • PendidikanPendidikan Rendah: Koefisien -0.6931 menunjukkan bahwa Pendidikan Rendah mengurangi frekuensi peristiwa (secara logaritmik) dibandingkan dengan Pendidikan Tinggi atau Menengah. Nilai p-value yang sangat kecil (< 2e-16) menunjukkan bahwa efek ini sangat signifikan. Ini menunjukkan bahwa individu dengan pendidikan rendah cenderung mengalami peristiwa lebih sedikit dibandingkan dengan yang memiliki pendidikan lebih tinggi.

  • PendidikanPendidikan Tinggi: Koefisien -1.204 menunjukkan bahwa Pendidikan Tinggi secara signifikan mengurangi frekuensi peristiwa dibandingkan dengan Pendidikan Menengah atau Rendah. Nilai p-value yang sangat kecil (< 2e-16) menunjukkan bahwa perbedaan ini sangat signifikan, dan memberikan bukti yang kuat bahwa pendidikan tinggi berhubungan dengan penurunan frekuensi peristiwa.

2. Interaksi Dua Arah

  • JenisKelaminWanita:StatusPernikahanMenikah: Koefisien -0.07696 menunjukkan bahwa interaksi antara JenisKelaminWanita dan StatusPernikahanMenikah sedikit mempengaruhi frekuensi log peristiwa. Namun, p-value = 0.6101 menunjukkan bahwa interaksi ini tidak signifikan, artinya pengaruhnya tidak cukup kuat untuk dianggap signifikan.

  • JenisKelaminWanita:PendidikanPendidikan Rendah: Koefisien 6.19e-14 menunjukkan bahwa interaksi ini tidak berpengaruh sama sekali pada frekuensi peristiwa, dan p-value = 1.0000 menegaskan bahwa interaksi ini tidak signifikan. Ini menunjukkan bahwa tidak ada pengaruh interaksi antara Jenis Kelamin dan Pendidikan Rendah terhadap frekuensi peristiwa.

  • JenisKelaminWanita:PendidikanPendidikan Tinggi: Koefisien 0.3930 menunjukkan bahwa interaksi antara Wanita dan Pendidikan Tinggi meningkatkan frekuensi peristiwa secara signifikan. Nilai p-value = 0.0486 menunjukkan bahwa interaksi ini signifikan pada level 5%, yang berarti ada hubungan yang signifikan antara Jenis Kelamin Wanita dan Pendidikan Tinggi terhadap frekuensi peristiwa.

3. Interaksi Tiga Arah

  • JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Rendah: Koefisien 0.4055 menunjukkan bahwa interaksi antara ketiga variabel ini memberikan pengaruh positif terhadap frekuensi peristiwa. Namun, p-value = 0.0948 menunjukkan bahwa efek ini mendekati signifikan pada level 10%.

  • JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi: Koefisien -0.3930 menunjukkan bahwa interaksi antara ketiga variabel ini memberikan efek negatif terhadap frekuensi peristiwa. Nilai p-value = 0.1382 menunjukkan bahwa interaksi ini tidak signifikan, yang berarti pengaruhnya tidak cukup kuat untuk dianggap relevan.

4. Deviance dan AIC

  • Deviance untuk model Saturated adalah -1.953993e-14, yang menunjukkan bahwa model ini fit dengan sangat baik.

  • AIC untuk model Saturated adalah 103.5393, yang menunjukkan keseimbangan antara kompleksitas model dan fit model.

Kesimpulan

  1. Model Saturated memberikan fit terbaik untuk data ini karena Deviance yang sangat rendah dan AIC yang rendah juga. Namun, model ini sangat kompleks karena mencakup semua interaksi dua arah dan tiga arah.

  2. Beberapa interaksi dalam model Saturated tidak signifikan, seperti JenisKelaminWanita:StatusPernikahanMenikah, JenisKelaminWanita:PendidikanPendidikan Rendah, dan JenisKelaminWanita:StatusPernikahanMenikah:PendidikanPendidikan Tinggi, yang mungkin menunjukkan bahwa tidak semua interaksi perlu dipertahankan dalam model yang lebih sederhana.

  3. Berdasarkan nilai p-value, beberapa interaksi, seperti StatusPernikahanMenikah:PendidikanPendidikan Tinggi, sangat signifikan, yang berarti ada hubungan penting antara kombinasi variabel-variabel tersebut.

11 Contoh Kasus Real

11.1 Regresi Logistik

Deskripsi Kasus

Dalam studi ini, digunakan data dari ASEC 2024 yang berisi informasi sosio-ekonomi individu di Amerika Serikat. Fokus analisis adalah untuk memodelkan hubungan antara pendapatan individu dan status kemiskinan menggunakan regresi logistik.

  • Respon (Y): Status Kemiskinan
    • 0 = Tidak Miskin
    • 1 = Miskin
  • Prediktor (X): Pendapatan tahunan (dalam dolar)

Jumlah data: 1000 observasi individu.

Tujuan

  • Mengestimasi model regresi logistik untuk memprediksi status kemiskinan berdasarkan pendapatan.
  • Menginterpretasikan pengaruh pendapatan terhadap peluang tidak miskin.
  • Menilai kecocokan model dan visualisasi hubungan logistik.

11.1.1 Persiapan dan Import Data

# Import pustaka
library(ggplot2)
library(dplyr)
library(broom)
library(numDeriv)   # Untuk turunan numerik (Newton-Raphson)

# Import data asli
data <- read.csv("C:\\Users\\HP\\Documents\\KULIAH\\SEMESTER 4\\ADK\\ryder.csv", sep=";", dec=".")

# Lihat struktur data
head(data)
##   SPM_POOR SPM_TOTVAL
## 1        0      50838
## 2        0      50838
## 3        1       9648
## 4        0      71435
## 5        0      71435
## 6        0      71435

11.1.2 Estimasi MLE glm() (MLE via IRLS)

model <- glm(SPM_POOR ~ SPM_TOTVAL, data = data, family = binomial)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model)
## 
## Call:
## glm(formula = SPM_POOR ~ SPM_TOTVAL, family = binomial, data = data)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  1.313e+00  3.228e-01   4.068 4.74e-05 ***
## SPM_TOTVAL  -7.506e-05  8.818e-06  -8.512  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 486.33  on 999  degrees of freedom
## Residual deviance: 260.46  on 998  degrees of freedom
## AIC: 264.46
## 
## Number of Fisher Scoring iterations: 9
exp(coef(model))  # Odds ratio
## (Intercept)  SPM_TOTVAL 
##   3.7178980   0.9999249

11.1.3 Estimasi MLE secara manual

loglik <- function(beta) {
  eta <- beta[1] + beta[2] * data$SPM_TOTVAL
  p <- 1 / (1 + exp(-eta))
  
  # Batasi nilai p biar gak jadi 0 atau 1 murni
  p <- pmin(pmax(p, 1e-8), 1 - 1e-8)
  
  -sum(data$SPM_POOR * log(p) + (1 - data$SPM_POOR) * log(1 - p))
}

init_beta <- c(0, 0)
mle_manual <- optim(par = init_beta, fn = loglik, hessian = TRUE)
mle_manual$par  # Koefisien
## [1] -3.743094e-04 -4.693831e-05
exp(mle_manual$par)  # Odds ratio
## [1] 0.9996258 0.9999531

11.1.4 Estimasi Newton-Raphson

f_grad <- function(beta) {
  eta <- beta[1] + beta[2] * data$SPM_TOTVAL
  p <- 1 / (1 + exp(-eta))
  X <- model.matrix(~ SPM_TOTVAL, data)
  t(X) %*% (data$SPM_POOR - p)
}

f_hess <- function(beta) {
  eta <- beta[1] + beta[2] * data$SPM_TOTVAL
  p <- 1 / (1 + exp(-eta))
  w <- p * (1 - p)
  X <- model.matrix(~ SPM_TOTVAL, data)
  t(X) %*% (w * X)
}

beta <- c(0, 0)
for (i in 1:10) {
  grad <- f_grad(beta)
  hess <- f_hess(beta)
  beta <- beta + solve(hess, grad)
}
beta
##                      [,1]
## (Intercept)  1.313158e+00
## SPM_TOTVAL  -7.505978e-05
exp(beta)
##                  [,1]
## (Intercept) 3.7178980
## SPM_TOTVAL  0.9999249

11.1.5 Penaksir Parameter

summary_fit <- summary(model)
beta_hat <- summary_fit$coefficients[,1]
se_beta <- summary_fit$coefficients[,2]
wald_stat <- (beta_hat / se_beta)^2
p_wald <- 1 - pchisq(wald_stat, df = 1)

cbind(Estimate = beta_hat, SE = se_beta, Wald_Stat = wald_stat, P_Value = p_wald)
##                  Estimate           SE Wald_Stat      P_Value
## (Intercept)  1.313158e+00 3.228100e-01  16.54780 4.743889e-05
## SPM_TOTVAL  -7.505978e-05 8.818109e-06  72.45421 0.000000e+00

11.1.6 Visualisasi Model

# Tambahkan probabilitas prediksi ke data
data$prob_pred <- predict(model, type = "response")

# Visualisasi kurva logistik
ggplot(data, aes(x = SPM_TOTVAL, y = SPM_POOR)) +
  geom_jitter(height = 0.1, alpha = 0.1) +
  geom_line(aes(y = prob_pred), color = "blue", linewidth = 1) +  # GANTI size → linewidth
  labs(title = "Model Regresi Logistik",
       x = "Total Nilai SPM_TOTVAL",
       y = "Probabilitas Tidak Miskin") +
  theme_minimal()

11.1.7 Evaluasi Model

# Deviance
with(model, null.deviance - deviance)
## [1] 225.8725
# AIC
AIC(model)
## [1] 264.4616
# Confusion Matrix
pred_class <- ifelse(data$prob_pred > 0.5, 1, 0)
table(Prediksi = pred_class, Aktual = data$SPM_POOR)
##         Aktual
## Prediksi   0   1
##        0 925  36
##        1   9  30

11.1.8 Kesimpulan

Berdasarkan hasil analisis regresi logistik terhadap data status kemiskinan (SPM_POOR) yang dipengaruhi oleh nilai sosial/ekonomi (SPM_TOTVAL), diperoleh kesimpulan sebagai berikut:

  1. Koefisien Regresi:

    • Intercept: \(\hat{\beta}_0 = 1.313\)
    • Koefisien \(\hat{\beta}_1 = -7.506 \times 10^{-5}\)
    • Odds Ratio:
      • \(\exp(\hat{\beta}_0) = 3.718\) → Ini menunjukkan peluang dasar untuk tidak miskin pada nilai rata-rata \(SPM_TOTVAL\).
      • \(\exp(\hat{\beta}_1) = 0.9999\) → Setiap peningkatan 1 unit pada \(SPM_TOTVAL\), menurunkan peluang untuk tidak miskin sebesar 0.01%.
  2. Signifikansi Statistik:

    • Hasil uji Wald menunjukkan bahwa kedua koefisien (\(\hat{\beta}_0\) dan \(\hat{\beta}_1\)) sangat signifikan secara statistik (p-value < 0.001).

    • Nilai Wald Statistic:

      (Intercept): Wald = 16.55, p-value = 4.74e-05
      SPM_TOTVAL: Wald = 72.45, p-value < 2e-16
  3. Evaluasi Model:

    • Deviance:

      • Null Deviance: 486.33
      • Residual Deviance: 260.46
    • AIC (Akaike Information Criterion): 264.46

  4. Confusion Matrix: Model berhasil mengklasifikasikan data dengan akurasi yang baik:

    ``` r
    Prediksi vs Aktual:
    Prediksi 0   Prediksi 1
    Aktual 0: 925    36
    Aktual 1: 9     30
    ```

Akurasi Model: Akurasi model dapat dihitung sebagai:

\[ \text{Akurasi} = \frac{\text{True Positives} + \text{True Negatives}}{\text{Total Observasi}} = \frac{925 + 30}{925 + 36 + 9 + 30} = \frac{955}{1000} = 0.955 \]

Model ini memiliki akurasi 95.5%, yang berarti model dapat memprediksi dengan benar 95.5% dari total observasi.

  1. Kesimpulan Akhir: Berdasarkan model regresi logistik ini, ditemukan hubungan signifikan antara nilai sosial/ekonomi (SPM_TOTVAL) dan status kemiskinan (SPM_POOR). Peningkatan nilai SPM_TOTVAL sedikit menurunkan peluang individu untuk tergolong miskin. Model ini menunjukkan bahwa faktor sosial/ekonomi berpengaruh besar dalam menentukan status kemiskinan, dengan hasil yang sangat signifikan secara statistik.

11.2 Log-Linear

Digunakan data berasal dari catatan polisi Kota Chicago, diambil 299 kasus dari Bulan Februari 2025 yang merekam jumlah pelaku kejahatanberdasarkan dua faktor utama:

  • Jenis Kejahatan
    • Violent: Kejahatan berat seperti pembunuhan, penyerangan bersenjata, pemerkosaan.
    • Non-Violent: Kejahatan ringan seperti pencurian ringan, pelanggaran lalu lintas, kepemilikan narkoba dalam jumlah kecil.
  • Ras Pelaku
    • White: Individu berkulit putih
    • Non-White: Termasuk African-American, Hispanic, Asian, dan kelompok etnis minoritas lainnya.

Kelompok minoritas (Non-White) memiliki kemungkinan lebih besar untuk melakukan kejahatan violent, karena tekanan sosial yang lebih tinggi — termasuk ketimpangan ekonomi, diskriminasi struktural, dan keterbatasan akses terhadap pendidikan dan pekerjaan formal.

Data disajikan dalam tabel kontingensi 2x2 sebagai berikut:

NON-WHITE WHITE Total
NON-VIOLENT (Y = 0) 139 63 202
VIOLENT (Y = 1) 56 41 97
Total 195 104 299

11.2.1 Menghitung Frekuensi yang Diharapkan (\(\mu_{ij}\))

Untuk menghitung frekuensi yang diharapkan (\(\mu_{ij}\)):

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

Menggunakan data yang ada:

  • Total Non-White = \(139 + 56 = 195\)
  • Total White = \(63 + 41 = 104\)
  • Total Non-Violent = \(139 + 63 = 202\)
  • Total Violent = \(56 + 41 = 97\)
  • Total keseluruhan = \(299\)

Sekarang kita hitung frekuensi yang diharapkan (\(\mu_{ij}\)) untuk setiap sel:

  1. Frekuensi yang diharapkan untuk Non-Violent, Non-White: \[ \mu_{\text{Non-Violent, Non-White}} = \frac{195 \times 202}{299} = 130.79 \]

  2. Frekuensi yang diharapkan untuk Violent, Non-White: \[ \mu_{\text{Violent, Non-White}} = \frac{195 \times 97}{299} = 64.21 \]

  3. Frekuensi yang diharapkan untuk Non-Violent, White: \[ \mu_{\text{Non-Violent, White}} = \frac{104 \times 202}{299} = 71.21 \]

  4. Frekuensi yang diharapkan untuk Violent, White: \[ \mu_{\text{Violent, White}} = \frac{104 \times 97}{299} = 32.79 \]

11.2.2 Menghitung Efek Utama \(\lambda_A\) (Ras)

Untuk menghitung efek utama \(\lambda_A\) (ras), kita gunakan rumus:

\[ \lambda_A = \frac{1}{2} \left[ (\log(n_{11}) + \log(n_{12})) - (\log(n_{21}) + \log(n_{22})) \right] \]

Substitusi nilai logaritma dari setiap frekuensi:

  • \(\log(139) = 4.941\)
  • \(\log(63) = 4.143\)
  • \(\log(56) = 4.033\)
  • \(\log(41) = 3.713\)

Sekarang kita substitusi ke dalam rumus untuk menghitung \(\lambda_A\):

\[ \lambda_A = \frac{1}{2} \left[ (4.941 + 4.143) - (4.033 + 3.713) \right] \] \[ \lambda_A = \frac{1}{2} \left[ 9.084 - 7.746 \right] \] \[ \lambda_A = \frac{1}{2} \times 1.338 = 0.669 \]

Karena sum-to-zero constraint, kita dapatkan:

\[ \lambda_2 = -0.669 \]

11.2.3 Menghitung Efek Utama \(\lambda_B\) (Kekerasan)

Untuk menghitung efek utama \(\lambda_B\) (status kekerasan):

\[ \lambda_B = \frac{1}{2} \left[ (\log(n_{11}) + \log(n_{21})) - (\log(n_{12}) + \log(n_{22})) \right] \]

Substitusi nilai logaritma yang sudah dihitung:

\[ \lambda_B = \frac{1}{2} \left[ (\log(139) + \log(56)) - (\log(63) + \log(41)) \right] \] \[ \lambda_B = \frac{1}{2} \left[ (4.941 + 4.033) - (4.143 + 3.713) \right] \] \[ \lambda_B = \frac{1}{2} \left[ 8.974 - 7.856 \right] = \frac{1}{2} \times 1.118 = 0.559 \]

Karena sum-to-zero:

\[ \lambda_2 = -0.559 \]

11.2.4 Menghitung Efek Interaksi \(\lambda_{AB}\)

Untuk menghitung efek interaksi \(\lambda_{AB}\):

\[ \lambda_{11} = \frac{1}{4} \left[ \log(n_{11}) - \log(n_{12}) - \log(n_{21}) + \log(n_{22}) \right] \]

Substitusi nilai logaritma yang sudah dihitung:

\[ \lambda_{11} = \frac{1}{4} \left[ 4.941 - 4.143 - 4.033 + 3.713 \right] \] \[ \lambda_{11} = \frac{1}{4} \left[ 4.941 - 4.143 - 4.033 + 3.713 \right] = \frac{1}{4} \times 0.478 \] \[ \lambda_{11} = 0.1195 \]

Sekarang, berdasarkan sum-to-zero constraint:

\[ \lambda_{12} = -\lambda_{11} = -0.1195 \] \[ \lambda_{21} = -\lambda_{11} = -0.1195 \] \[ \lambda_{22} = +\lambda_{11} = 0.1195 \]

11.2.5 Menghitung Odds Ratio (OR)

Untuk menghitung Odds Ratio (OR):

\[ OR = \frac{(a/c)}{(b/d)} \]

Di mana: - \(a = 139\) (Non-Violent, Non-White) - \(b = 63\) (Non-Violent, White) - \(c = 56\) (Violent, Non-White) - \(d = 41\) (Violent, White)

Maka:

\[ OR = \frac{(139/56)}{(63/41)} = \frac{2.482}{1.537} = 1.614 \]

Ringkasan Parameter Model

Setelah menghitung semua parameter, berikut adalah ringkasan model:

  • \(\lambda = 3.74925\)
  • Efek Utama A (Ras):
    • \(\lambda_1 = 0.669\)
    • \(\lambda_2 = -0.669\)
  • Efek Utama B (Kekerasan):
    • \(\lambda_1 = 0.559\)
    • \(\lambda_2 = -0.559\)
  • Efek Interaksi:
    • \(\lambda_{11} = 0.1195\)
    • \(\lambda_{12} = -0.1195\)
    • \(\lambda_{21} = -0.1195\)
    • \(\lambda_{22} = 0.1195\)

11.2.6 Menaksir Dengan R

# Data Tabel 2x2
data <- matrix(c(139, 63, 56, 41), nrow = 2, byrow = TRUE)
colnames(data) <- c("NON-WHITE", "WHITE")
rownames(data) <- c("NON-VIOLENT", "VIOLENT")

# Total
total <- sum(data)

# Total baris dan kolom
total_row <- rowSums(data)
total_col <- colSums(data)

# Mengonversi data menjadi tabel untuk model glm
data_frame <- as.data.frame(as.table(data))

# Estimasi Model Log-Linear Tanpa Interaksi (hanya efek utama)
model_no_interaction <- glm(Freq ~ Var1 + Var2, data = data_frame, family = poisson(link = "log"))

# Menampilkan Ringkasan Model Tanpa Interaksi
summary(model_no_interaction)
## 
## Call:
## glm(formula = Freq ~ Var1 + Var2, family = poisson(link = "log"), 
##     data = data_frame)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  4.88082    0.08206  59.477  < 2e-16 ***
## Var1VIOLENT -0.73356    0.12353  -5.938 2.88e-09 ***
## Var2WHITE   -0.62861    0.12142  -5.177 2.25e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 69.3098  on 3  degrees of freedom
## Residual deviance:  3.4991  on 1  degrees of freedom
## AIC: 33.678
## 
## Number of Fisher Scoring iterations: 4
# Estimasi Model Log-Linear Dengan Interaksi
model_with_interaction <- glm(Freq ~ Var1 * Var2, data = data_frame, family = poisson(link = "log"))

# Menampilkan Ringkasan Model Dengan Interaksi
summary(model_with_interaction)
## 
## Call:
## glm(formula = Freq ~ Var1 * Var2, family = poisson(link = "log"), 
##     data = data_frame)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            4.93447    0.08482  58.177  < 2e-16 ***
## Var1VIOLENT           -0.90912    0.15828  -5.744 9.25e-09 ***
## Var2WHITE             -0.79134    0.15188  -5.210 1.89e-07 ***
## Var1VIOLENT:Var2WHITE  0.47956    0.25557   1.876   0.0606 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 6.9310e+01  on 3  degrees of freedom
## Residual deviance: 6.8834e-15  on 0  degrees of freedom
## AIC: 32.179
## 
## Number of Fisher Scoring iterations: 2

11.2.7 Kesimpulan

  1. Perhitungan Frekuensi yang Diharapkan

Berdasarkan data yang diberikan, kita menghitung frekuensi yang diharapkan untuk setiap sel dalam tabel kontingensi.

  • Non-Violent, Non-White: 130.79
  • Violent, Non-White: 64.21
  • Non-Violent, White: 71.21
  • Violent, White: 32.79
  1. Perhitungan Efek Utama \(\lambda_A\) (Ras)

Efek utama untuk ras dihitung menggunakan rumus berikut:

\[ \lambda_A = \frac{1}{2} \left[ (\log(n_{11}) + \log(n_{12})) - (\log(n_{21}) + \log(n_{22})) \right] \]

Dengan substitusi nilai logaritma yang dihitung sebelumnya, kita memperoleh \(\lambda_A = 0.669\) dan \(\lambda_2 = -0.669\) berdasarkan sum-to-zero constraint.

Interpretasi \(\lambda_A\): - Perubahan dari Non-White ke White menghasilkan perubahan dalam log odds sebesar 0.669. - Karena sum-to-zero constraint, nilai untuk \(\lambda_2 = -0.669\) menunjukkan bahwa efek untuk White adalah kebalikan dari efek Non-White.

  1. Perhitungan Efek Utama \(\lambda_B\) (Kekerasan)

Efek utama untuk status kekerasan dihitung menggunakan rumus yang sama. Berdasarkan perhitungan, kita memperoleh \(\lambda_B = 0.559\) dan \(\lambda_2 = -0.559\).

Interpretasi \(\lambda_B\): - Perubahan dari Non-Violent ke Violent menghasilkan perubahan dalam log odds sebesar 0.559. - Dengan sum-to-zero constraint, nilai untuk \(\lambda_2 = -0.559\) menunjukkan bahwa efek untuk Violent adalah kebalikan dari efek Non-Violent.

  1. Perhitungan Efek Interaksi \(\lambda_{AB}\)

Efek interaksi dihitung dengan rumus berikut:

\[ \lambda_{11} = \frac{1}{4} \left[ \log(n_{11}) - \log(n_{12}) - \log(n_{21}) + \log(n_{22}) \right] \]

  • \(\lambda_{11} = 0.1195\)
  • \(\lambda_{12} = -0.1195\)
  • \(\lambda_{21} = -0.1195\)
  • \(\lambda_{22} = 0.1195\)

Interpretasi \(\lambda_{AB}\): - \(\lambda_{11}\) menunjukkan peningkatan log odds untuk kategori Non-Violent, Non-White. - \(\lambda_{12}\) menunjukkan penurunan log odds untuk Non-Violent, White. - \(\lambda_{21}\) menunjukkan penurunan log odds untuk Violent, Non-White. - \(\lambda_{22}\) menunjukkan peningkatan log odds untuk Violent, White.

  1. Perhitungan Odds Ratio (OR)

Odds Ratio (OR) dihitung dengan rumus:

\[ OR = \frac{(a/c)}{(b/d)} \]

Dengan nilai \(a = 139\), \(b = 63\), \(c = 56\), dan \(d = 41\), kita memperoleh:

\[ OR = \frac{(139/56)}{(63/41)} = \frac{2.482}{1.537} = 1.614 \]

Interpretasi Odds Ratio: - OR sebesar 1.614 menunjukkan bahwa orang Non-Violent, Non-White memiliki 1.614 kali lebih besar kemungkinan untuk tidak terlibat kekerasan dibandingkan dengan orang Violent, White.

  1. Model Tanpa Interaksi (Homogen) Koefisien Model Tanpa Interaksi:
  • Intercept: 4.88082 (Efek dasar log odds untuk kategori Non-Violent dan Non-White)

  • Var1VIOLENT: -0.73356 (Efek log odds untuk perubahan status kekerasan menjadi Violent)

  • Var2WHITE: -0.62861 (Efek log odds untuk perubahan status ras menjadi White)

Interpretasi: Model ini menggambarkan hubungan antara ras dan status kekerasan tanpa interaksi, dan Var1VIOLENT serta Var2WHITE menunjukkan seberapa besar perubahan log odds terkait dengan status kekerasan dan ras.

  1. Model Dengan Interaksi (Saturated) Koefisien Model Dengan Interaksi:
  • Intercept: 4.93447

  • Var1VIOLENT: -0.90912

  • Var2WHITE: -0.79134

Var1VIOLENT:Var2WHITE: 0.47956 (Interaksi antara kekerasan dan ras, menunjukkan bahwa interaksi ini mendekati signifikansi dengan p-value 0.0606)

Interpretasi:

Model dengan interaksi menambahkan interaksi antara status kekerasan dan ras, yang memperlihatkan efek kekerasan dan ras bersama-sama. Efek interaksi menunjukkan sedikit perbedaan dalam log odds bagi individu White yang terlibat kekerasan, meskipun tidak sangat signifikan.

Perbandingan Model

Model Deviance AIC
Homogen 3.4991 33.678
Saturated 6.8834e-15 32.179

Model Saturated memberikan fit yang lebih baik dengan nilai Deviance yang lebih rendah dan AIC yang lebih kecil dibandingkan dengan model Homogen.

Model Saturated memasukkan interaksi antara kedua variabel (ras dan status kekerasan), yang memberikan penjelasan lebih baik tentang hubungan antara keduanya.

Berdasarkan perhitungan dan analisis AIC dan Deviance, kita menyarankan menggunakan model Saturated untuk pengambilan keputusan lebih lanjut.

12 Referensi