Pendahuluan

Analisis data kategorik adalah cabang statistik yang berfokus pada analisis data yang variabelnya berbentuk kategori, bukan numerik kontinu. Data kategorik sering kali muncul dalam bentuk nominal (tanpa urutan) atau ordinal (dengan urutan). Contoh data kategorik meliputi jenis kelamin (laki-laki/perempuan), status perkawinan (lajang/menikah/cerai), atau tingkat kepuasan (sangat puas/puas/tidak puas). Menurut Agresti (2012) dalam Categorical Data Analysis, 3rd Edition, analisis data kategorik bertujuan untuk memahami hubungan antar variabel kategorik, memodelkan probabilitas respons, dan membuat inferensi berdasarkan data tersebut.

Bagian ini menjelaskan konsep dasar analisis data kategorik, jenis data kategorik, distribusi probabilitas yang relevan, dan pendekatan analisis utama, sebagaimana diuraikan dalam buku Agresti.

Tujuan Analisis Data Kategorik

Analisis data kategorik memiliki beberapa tujuan utama yang mendukung penelitian dan aplikasi praktis. Tujuan-tujuan ini diuraikan sebagai berikut:

Mengidentifikasi Pola dan Tren

Salah satu tujuan utama analisis data kategorik adalah mengidentifikasi pola dan tren dalam data. Pola ini dapat mengungkap kecenderungan tertentu dalam populasi atau kelompok yang diteliti. Misalnya, dalam studi kesehatan, analisis data kategorik dapat digunakan untuk mengidentifikasi prevalensi penyakit tertentu berdasarkan kategori usia atau jenis kelamin. Agresti (hlm. 2) menjelaskan bahwa tabel kontingensi, yang merangkum frekuensi observasi untuk kombinasi variabel kategorik, sering digunakan untuk mendeteksi pola ini. Sebagai contoh, tabel kontingensi 2x2 dapat menunjukkan distribusi frekuensi sebagai berikut:

Kategori \(B_1\) Kategori \(B_2\)
Kategori \(A_1\) \(n_{11}\) \(n_{12}\)
Kategori \(A_2\) \(n_{21}\) \(n_{22}\)

Dengan menghitung proporsi seperti \(p_{ij} = \frac{n_{ij}}{n}\), peneliti dapat mengidentifikasi tren, seperti apakah kategori tertentu lebih dominan dalam kondisi tertentu.

Menganalisis Hubungan Antarvariabel

Tujuan penting lainnya adalah menganalisis hubungan antar variabel kategorik untuk memahami apakah variabel-variabel tersebut saling bergantung atau independen. Misalnya, dalam ilmu sosial, peneliti mungkin ingin mengetahui apakah preferensi politik (kategorik) bergantung pada tingkat pendidikan (kategorik). Agresti (hlm. 79) menyoroti penggunaan uji chi-square untuk menguji hipotesis independensi dalam tabel kontingensi. Statistik chi-square dihitung sebagai:

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

di mana \(O_{ij}\) adalah frekuensi teramati dan \(E_{ij} = \frac{n_{i+} n_{+j}}{n}\) adalah frekuensi harapan di bawah asumsi independensi. Jika nilai \(\chi^2\) signifikan, maka terdapat bukti hubungan antar variabel. Pendekatan ini memungkinkan peneliti untuk memahami interaksi antar variabel kategorik secara statistik.

Membantu dalam Pengambilan Keputusan

Analisis data kategorik mendukung pengambilan keputusan berbasis data di berbagai bidang, seperti kebijakan publik, pemasaran, dan kedokteran. Dengan memahami distribusi dan hubungan antar variabel kategorik, pengambil keputusan dapat merumuskan strategi yang lebih tepat. Sebagai contoh, dalam pemasaran, analisis data kategorik dapat mengidentifikasi segmen pelanggan berdasarkan preferensi produk, yang kemudian digunakan untuk menargetkan kampanye iklan. Agresti (hlm. 12) mencatat bahwa metode seperti regresi logistik, yang memodelkan probabilitas respons kategorik, sering digunakan untuk mendukung keputusan. Model regresi logistik memiliki bentuk:

\[ \log\left(\frac{\pi}{1-\pi}\right) = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p \] di mana \(\pi\) adalah probabilitas keberhasilan, dan \(\beta_i\) adalah koefisien yang mengukur efek variabel prediktor \(x_i\). Model ini memungkinkan pengambil keputusan untuk memprediksi probabilitas hasil tertentu dan menggunakannya sebagai dasar tindakan.

Mengembangkan Model Prediktif

Analisis data kategorik juga bertujuan untuk mengembangkan model prediktif yang dapat memperkirakan respons kategorik berdasarkan variabel prediktor. Model prediktif ini sangat berguna dalam aplikasi seperti diagnosis medis, analisis risiko, dan prakiraan perilaku konsumen. Agresti (hlm. 117) menjelaskan bahwa model linier umum (generalized linear models, GLM), seperti regresi logistik dan model loglinear, sering digunakan untuk tujuan ini. Untuk data ordinal, model odds proporsional dapat digunakan, dengan bentuk:

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

di mana \(j\) adalah kategori ordinal, \(\alpha_j\) adalah ambang batas untuk kategori ke-\(j\), dan \(\beta\) adalah efek prediktor \(x\). Model ini memungkinkan prediksi probabilitas untuk setiap kategori respons, yang kemudian dapat digunakan untuk klasifikasi atau peramalan.

Tujuan-tujuan ini menunjukkan pentingnya analisis data kategorik dalam mengekstrak wawasan dari data yang tidak bersifat kontinu. Dengan memanfaatkan alat seperti tabel kontingensi, uji statistik, dan model regresi, analisis data kategorik memberikan landasan yang kuat untuk penelitian dan aplikasi praktis, sebagaimana dijelaskan secara mendalam dalam Categorical Data Analysis oleh Agresti.

Konsep dasar dan Cakupan Data Kategori

Bagian ini membahas konsep dasar analisis data kategorik, dengan penekanan pada perbedaan antara data nominal dan ordinal serta data biner dan multikategori, yang merupakan fondasi penting dalam memilih pendekatan analisis yang tepat.

Nominal vs. Ordinal

Variabel kategorik dapat diklasifikasikan menjadi dua jenis utama berdasarkan sifat kategorinya: nominal dan ordinal. Perbedaan ini memengaruhi pilihan metode analisis, karena sifat kategori menentukan asumsi dan model yang dapat diterapkan.

Data Nominal

Data nominal adalah variabel kategorik yang kategorinya tidak memiliki urutan atau hierarki. Setiap kategori dianggap berbeda dan tidak dapat dibandingkan dalam hal “lebih besar” atau “lebih kecil”. Contoh data nominal meliputi:

  • Jenis kelamin (laki-laki, perempuan).

  • Warna mata (biru, cokelat, hijau).

  • Jenis pekerjaan (dokter, guru, insinyur).

Dalam analisis data nominal, fokusnya adalah pada distribusi frekuensi dan hubungan antar variabel tanpa mempertimbangkan urutan. Misalnya, dalam tabel kontingensi untuk dua variabel nominal, seperti jenis kelamin dan preferensi produk, analisis dilakukan untuk menguji independensi menggunakan uji chi-square, dengan statistik: \[ \chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

di mana \(O_{ij}\) adalah frekuensi teramati pada baris \(i\) dan kolom \(j\), dan \(E_{ij} = \frac{n_{i+} n_{+j}}{n}\) adalah frekuensi harapan di bawah hipotesis independensi. Uji ini tidak memerlukan asumsi tentang urutan kategori, menjadikannya cocok untuk data nominal.

Metode lain untuk data nominal termasuk analisis korespondensi untuk memvisualisasikan hubungan antar kategori dan model loglinear untuk tabel kontingensi multidimensi, yang memodelkan log frekuensi harapan sebagai: \[ \log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C + \lambda_{ij}^{AB} + \cdots \]

di mana \(\mu_{ijk}\) adalah frekuensi harapan untuk sel tertentu, dan \(\lambda\) mencerminkan efek utama dan interaksi (Agresti, hlm. 203).

Data Ordinal

Data ordinal adalah variabel kategorik yang kategorinya memiliki urutan alami, tetapi jarak antar kategori tidak terdefinisi atau tidak konsisten. Contoh data ordinal meliputi:

  • Tingkat pendidikan (SD, SMP, SMA, S1).

  • Skala kepuasan (sangat puas, puas, tidak puas, sangat tidak puas).

  • Tingkat nyeri (ringan, sedang, berat).

Urutan dalam data ordinal memungkinkan penggunaan metode yang memanfaatkan informasi ini, seperti model regresi ordinal. Salah satu model yang umum digunakan adalah model odds proporsional (proportional odds model), yang memodelkan log odds kumulatif:

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

di mana \(Y\) adalah variabel respons ordinal, \(j\) adalah kategori ke-\(j\), \(\alpha_j\) adalah ambang batas untuk kategori tersebut, dan \(\beta\) adalah koefisien untuk prediktor \(x\) (Agresti, hlm. 297).

Model ini mengasumsikan bahwa efek prediktor \(x\) konstan untuk semua kategori, yang disebut asumsi odds proporsional.

Untuk menganalisis hubungan antar dua variabel ordinal, ukuran korelasi seperti koefisien Kendall atau Spearman dapat digunakan, yang memanfaatkan urutan kategori. Misalnya, koefisien korelasi Kendall \(\tau_b\) dihitung berdasarkan pasangan konkordan dan diskordan dalam data, memberikan ukuran kekuatan hubungan ordinal (Agresti, hlm. 187).

Perbedaan utama antara nominal dan ordinal terletak pada informasi urutan. Metode untuk data nominal, seperti uji chi-square, mengabaikan urutan, sedangkan metode untuk data ordinal, seperti model odds proporsional, memanfaatkan urutan untuk meningkatkan efisiensi statistik. Agresti (hlm. 7) menyarankan bahwa mengabaikan sifat ordinal dalam analisis dapat menyebabkan hilangnya informasi, sehingga penting untuk mengidentifikasi jenis data dengan benar sebelum memilih metode analisis.

Data Biner vs. Multikategori

Selain klasifikasi nominal dan ordinal, data kategorik juga dapat dibedakan berdasarkan jumlah kategorinya: biner (dua kategori) dan multikategori (lebih dari dua kategori). Perbedaan ini memengaruhi distribusi probabilitas dan model statistik yang digunakan.

Data Biner

Data biner adalah kasus khusus data kategorik di mana variabel hanya memiliki dua kategori, sering disebut sebagai “sukses” dan “gagal” atau “1” dan “0”. Contoh data biner meliputi:

  • Status kelulusan (lulus, tidak lulus).

  • Keberadaan penyakit (ya, tidak).

  • Keputusan pembelian (beli, tidak beli).

Data biner mengikuti distribusi binomial, dengan probabilitas: \[ P(Y = y) = \binom{n}{y} \pi^y (1-\pi)^{n-y}, \quad y = 0, 1, \ldots, n \]

di mana \(Y\) adalah jumlah keberhasilan dalam \(n\) percobaan, \(\pi\) adalah probabilitas keberhasilan, dan \(\binom{n}{y}\) adalah koefisien binomial. Distribusi ini menjadi dasar untuk inferensi, seperti estimasi proporsi dan uji hipotesis. Untuk memodelkan hubungan antara variabel biner dan prediktor, regresi logistik sering digunakan. Model ini menghubungkan probabilitas keberhasilan \(\pi\) dengan prediktor melalui fungsi logit: \[ \log\left(\frac{\pi}{1-\pi}\right) = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p \]

di mana \(\beta_0\) adalah intersep, dan \(\beta_i\) adalah koefisien untuk prediktor \(x_i\) (Agresti, hlm. 117). Regresi logistik memungkinkan peneliti untuk memprediksi probabilitas respons biner berdasarkan variabel independen, baik kategorik maupun kontinu.

Untuk tabel kontingensi 2x2 yang melibatkan dua variabel biner, ukuran asosiasi seperti odds ratio dapat dihitung. Odds ratio untuk tabel:

\(B_1\) \(B_2\)
\(A_1\) \(n_{11}\) \(n_{12}\)
\(A_2\) \(n_{21}\) \(n_{22}\)

didefinisikan sebagai: \[ \text{OR} = \frac{n_{11} n_{22}}{n_{12} n_{21}} \]

Odds ratio mengukur kekuatan asosiasi antara dua variabel biner, dengan nilai 1 menunjukkan tidak adanya asosiasi (Agresti, hlm. 49).

Data Multikategori

Data multikategori adalah variabel kategorik dengan lebih dari dua kategori, yang dapat bersifat nominal atau ordinal. Contoh data multikategori meliputi:

  • Jenis pekerjaan (dokter, guru, insinyur, petani).

  • Tingkat kepuasan (sangat puas, puas, tidak puas, sangat tidak puas).

  • Kategori risiko (rendah, sedang, tinggi).

Data multikategori mengikuti distribusi multinomial, dengan probabilitas:

\[ P(n_1, n_2, \ldots, n_k) = \frac{n!}{n_1! n_2! \cdots n_k!} \pi_1^{n_1} \pi_2^{n_2} \cdots \pi_k^{n_k} \]

di mana \(n_i\) adalah jumlah observasi dalam kategori ke-\(i\), \(\pi_i\) adalah probabilitas kategori ke-\(i\), \(\sum n_i = n\), dan \(\sum \pi_i = 1\) (Agresti, hlm. 17). Distribusi ini digunakan untuk menganalisis frekuensi dalam tabel kontingensi dengan lebih dari dua kategori.

Untuk memodelkan data multikategori nominal, regresi logistik multinomial sering digunakan. Model ini memperluas regresi logistik biner dengan membandingkan setiap kategori dengan kategori referensi (baseline). Untuk \(k\) kategori, log-odds untuk kategori \(j\) dibandingkan kategori referensi \(k\) adalah:

\[ \log\left(\frac{\pi_j}{\pi_k}\right) = \beta_{j0} + \beta_{j1} x_1 + \cdots + \beta_{jp} x_p, \quad j = 1, \ldots, k-1 \]

di mana \(\pi_j\) adalah probabilitas kategori \(j\), dan \(\beta_{ji}\) adalah koefisien untuk prediktor \(x_i\) pada kategori \(j\).

Untuk data multikategori ordinal, model seperti model odds proporsional atau model odds kumulatif digunakan untuk memanfaatkan urutan kategori, seperti yang telah dijelaskan sebelumnya. Alternatifnya, model regresi multinomial juga dapat diterapkan jika urutan diabaikan, tetapi ini dapat mengurangi efisiensi statistik.

Analisis data multikategori sering melibatkan tabel kontingensi dengan dimensi lebih besar, seperti tabel \(r \times c\). Uji chi-square atau model loglinear digunakan untuk menganalisis hubungan antar variabel. Untuk tabel \(r \times c\), derajat kebebasan uji chi-square adalah \((r-1)(c-1)\), yang mencerminkan kompleksitas hubungan antar kategori (Agresti, hlm. 80).

##Perbandingan Data Biner dan Multikategori Data biner adalah kasus sederhana dari data multikategori, dengan hanya dua kategori, sehingga analisisnya lebih langsung dan sering menggunakan distribusi binomial. Data multikategori, baik nominal maupun ordinal, memerlukan pendekatan yang lebih kompleks karena jumlah kategori yang lebih banyak dan potensi urutan. Pemilihan model untuk data multikategori harus mempertimbangkan sifat kategori (nominal atau ordinal) dan tujuan analisis (misalnya, prediksi atau inferensi hubungan).

Aspek Data Biner Data Multikategori
Jumlah Kategori 2 (sukses/gagal) Lebih dari 2
Distribusi Binomial Multinomial
Model Umum Regresi logistik Regresi logistik multinomial, model ordinal
Ukuran Asosiasi Odds ratio Odds ratio umum, koefisien korelasi ordinal
Kompleksitas Analisis Lebih sederhana Lebih kompleks karena banyak kategori

Cakupan Analisis Data Kategorik

Cakupan analisis data kategorik sangat luas, mencakup berbagai metode dan aplikasi dimana analisis ini meliputi:

  • Inferensi Statistik: Menggunakan uji seperti chi-square, uji eksak Fisher, atau uji likelihood ratio untuk menguji hipotesis tentang distribusi dan hubungan antar variabel.

  • Pemodelan: Mengembangkan model seperti regresi logistik, model loglinear, dan model ordinal untuk memprediksi respons atau memahami struktur hubungan antar variabel.

  • Analisis Tabel Kontingensi: Menganalisis frekuensi dalam tabel kontingensi untuk mendeteksi pola, tren, dan asosiasi.

  • Aplikasi Praktis: Menerapkan analisis data kategorik dalam bidang seperti kedokteran (diagnosis penyakit), pemasaran (segmentasi pelanggan), dan ilmu sosial (analisis preferensi).

Analisis data kategorik juga mencakup pendekatan lanjutan, seperti analisis Bayesian untuk data kategorik dan metode untuk menangani data dengan struktur hierarkis atau klaster (Agresti, hlm. 475). Pemilihan metode tergantung pada jenis data (nominal vs. ordinal, biner vs. multikategori) dan pertanyaan penelitian.

Konsep dasar analisis data kategorik berpusat pada pemahaman sifat data, yaitu nominal versus ordinal dan biner versus multikategori. Data nominal tidak memiliki urutan dan dianalisis dengan metode seperti uji chi-square dan model loglinear, sedangkan data ordinal memanfaatkan urutan dengan model seperti odds proporsional. Data biner, yang mengikuti distribusi binomial, sering dianalisis dengan regresi logistik, sedangkan data multikategori, yang mengikuti distribusi multinomial, memerlukan pendekatan seperti regresi logistik multinomial atau model ordinal. Cakupan analisis data kategorik mencakup inferensi, pemodelan, dan aplikasi praktis, menjadikannya alat yang kuat untuk mengeksplorasi data kategorik.

# Contoh data kategorik nominal dan ordinal
data_nominal <- factor(c("Pria", "Wanita", "Pria"))
data_ordinal <- factor(c("Rendah", "Sedang", "Tinggi"), ordered = TRUE)
summary(data_nominal)
##   Pria Wanita 
##      2      1
summary(data_ordinal)
## Rendah Sedang Tinggi 
##      1      1      1

Perbedaan Data Kategorik dan Data Kuantitatif

Analisis statistik bergantung pada jenis data yang digunakan, yang secara umum dapat dibagi menjadi dua kategori besar: data kategorik dan data kuantitatif. Data kategorik berfokus pada variabel yang terdiri dari kategori atau label, sedangkan data kuantitatif berhubungan dengan variabel yang dapat diukur secara numerik. Pemahaman tentang perbedaan antara kedua jenis data ini sangat penting karena memengaruhi pilihan metode statistik, distribusi probabilitas, dan interpretasi hasil analisis. Bagian ini menjelaskan secara mendetail perbedaan antara data kategorik dan data kuantitatif, mencakup definisi, karakteristik, distribusi probabilitas, metode analisis, dan aplikasi praktis.

Data Kategorik

Data kategorik, sering disebut sebagai data kualitatif, adalah data yang variabelnya terdiri dari kategori atau label yang mewakili kelompok atau kelas tertentu. Data ini tidak memiliki nilai numerik yang dapat dioperasikan secara matematis (seperti penjumlahan atau pengurangan) kecuali dalam bentuk frekuensi atau proporsi. Data kategorik diklasifikasikan ke dalam dua subtipe utama:

  • Nominal: Kategori tidak memiliki urutan alami. Contohnya adalah jenis kelamin (laki-laki, perempuan), warna mata (biru, cokelat, hijau), atau jenis pekerjaan (dokter, guru, insinyur). Kategori-kategori ini hanya berbeda dalam identitas, tanpa hierarki.

  • Ordinal: Kategori memiliki urutan, tetapi jarak antar kategori tidak terdefinisi atau tidak konsisten. Contohnya adalah tingkat pendidikan (SD, SMP, SMA, S1), skala kepuasan (sangat puas, puas, tidak puas), atau tingkat nyeri (ringan, sedang, berat).

Karakteristik utama data kategorik adalah bahwa nilainya bersifat diskret dan terbatas pada sejumlah kategori tertentu. Data ini sering direpresentasikan dalam tabel kontingensi, yang menunjukkan frekuensi observasi untuk kombinasi kategori dari dua atau lebih variabel.

Data Kuantitatif

Data kuantitatif, juga dikenal sebagai data numerik, adalah data yang variabelnya dapat diukur atau dihitung secara numerik, memungkinkan operasi matematis seperti penjumlahan, pengurangan, atau perhitungan rata-rata. Data kuantitatif dibagi menjadi dua subtipe:

  • Diskret: Nilai-nilainya berupa bilangan bulat yang terbatas atau dapat dihitung. Contohnya adalah jumlah anak dalam sebuah keluarga (0, 1, 2, dst.) atau jumlah kecelakaan lalu lintas per hari.

  • Kontinu: Nilainya dapat mengambil nilai apa pun dalam rentang tertentu, sering kali dengan presisi desimal. Contohnya adalah tinggi badan (misalnya, 170,5 cm), berat badan (65,2 kg), atau waktu tempuh (2,45 jam).

Karakteristik utama data kuantitatif adalah bahwa nilainya dapat diukur pada skala numerik, memungkinkan analisis dengan statistik deskriptif seperti mean, median, atau standar deviasi, serta operasi matematis lainnya.

Perbandingan Karakteristik

Aspek Data Kategorik Data Kuantitatif
Sifat Nilai Kategori atau label Angka numerik
Jenis Nominal, ordinal Diskret, kontinu
Operasi Matematis Tidak berlaku (kecuali frekuensi) Penjumlahan, rata-rata, dll.
Representasi Tabel kontingensi, proporsi Histogram, scatter plot, nilai numerik
Contoh Jenis kelamin, tingkat kepuasan Tinggi badan, jumlah penjualan

Distribusi Probabilitas

Distribusi probabilitas yang digunakan untuk menganalisis data kategorik dan kuantitatif berbeda karena sifat datanya.

Data Kategorik

Data kategorik mengikuti distribusi probabilitas diskret, yang bergantung pada jumlah kategori:

Distribusi Binomial: Digunakan untuk data biner (dua kategori, misalnya sukses/gagal). Jika \(Y\) adalah jumlah keberhasilan dalam \(n\) percobaan independen dengan probabilitas keberhasilan \(\pi\), probabilitasnya adalah:

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

di mana \(\binom{n}{y}\) adalah koefisien binomial.

Distribusi Multinomial: Digunakan untuk data multikategori (lebih dari dua kategori). Jika terdapat \(k\) kategori dengan probabilitas \(\pi_1, \pi_2, \ldots, \pi_k\) (dengan \(\sum \pi_i = 1\)), dan \(n\) observasi dibagi ke dalam kategori tersebut, probabilitasnya adalah:

\[ P(n_1, n_2, \ldots, n_k) = \frac{n!}{n_1! n_2! \cdots n_k!} \pi_1^{n_1} \pi_2^{n_2} \cdots \pi_k^{n_k} \]

di mana \(n_i\) adalah jumlah observasi dalam kategori ke-\(i\), dan \(\sum n_i = n\).

Distribusi ini digunakan untuk menganalisis frekuensi atau proporsi dalam tabel kontingensi.

Data Kuantitatif

Data kuantitatif dapat mengikuti distribusi probabilitas diskret atau kontinu, tergantung pada subtipenya:

Distribusi Diskret: Untuk data kuantitatif diskret, distribusi seperti Poisson sering digunakan. Misalnya, untuk jumlah kejadian dalam interval waktu tertentu dengan rata-rata \(\lambda\), probabilitasnya adalah:

\[ P(Y = y) = \frac{e^{-\lambda} \lambda^y}{y!}, \quad y = 0, 1, 2, \ldots \]

Distribusi Kontinu: Untuk data kuantitatif kontinu, distribusi seperti normal (Gaussian) sering digunakan. Fungsi kepadatan probabilitas untuk distribusi normal dengan mean \(\mu\) dan varians \(\sigma^2\) adalah:

\[ f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}, \quad -\infty < x < \infty \]

Distribusi ini memungkinkan analisis dengan metode seperti uji t atau regresi linier, yang mengasumsikan data bersifat kontinu.

Perbandingan Distribusi

Data kategorik selalu bersifat diskret dan menggunakan distribusi binomial atau multinomial, yang berfokus pada probabilitas kategori. Sebaliknya, data kuantitatif dapat bersifat diskret (misalnya, Poisson) atau kontinu (misalnya, normal), memungkinkan analisis dengan asumsi distribusi yang lebih fleksibel.

Manfaat Analisis Data Kategorik

Analisis data kategorik adalah alat statistik yang kuat untuk mengolah data yang variabelnya berbentuk kategori, seperti nominal atau ordinal. Data ini sering muncul dalam berbagai bidang, termasuk ilmu sosial, kedokteran, pemasaran, dan kebijakan publik. Dengan memanfaatkan metode seperti uji chi-square, regresi logistik, dan model loglinear, analisis data kategorik memungkinkan peneliti dan praktisi untuk mengekstrak wawasan yang bermakna dari data yang tidak bersifat numerik kontinu. Bagian ini menjelaskan tujuh manfaat utama analisis data kategorik, yaitu: mengidentifikasi hubungan antar variabel, mendukung pengambilan keputusan, memprediksi hasil kategorik, memahami pola dan tren, menangani data non-numerik, mendukung segmentasi populasi, dan meningkatkan efisiensi analisis dalam penelitian.

Mengidentifikasi Hubungan Antar Variabel

Salah satu manfaat utama analisis data kategorik adalah kemampuannya untuk mengidentifikasi hubungan antar variabel kategorik, seperti apakah dua variabel saling bergantung atau independen. Misalnya, dalam studi kesehatan, analisis dapat digunakan untuk menentukan apakah status merokok (merokok, tidak merokok) berhubungan dengan kejadian penyakit jantung (ada, tidak ada). Metode seperti uji chi-square digunakan untuk menguji hipotesis independensi dalam tabel kontingensi, dengan statistik:

\[ \chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \] di mana \(O_{ij}\) adalah frekuensi teramati, dan \(E_{ij} = \frac{n_{i+} n_{+j}}{n}\) adalah frekuensi harapan. Jika nilai \(\chi^2\) signifikan, maka terdapat bukti adanya hubungan antar variabel. Selain itu, ukuran asosiasi seperti odds ratio dapat dihitung untuk tabel 2x2:

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

Odds ratio mengukur kekuatan hubungan, dengan nilai jauh dari 1 menunjukkan asosiasi yang kuat. Manfaat ini sangat penting dalam penelitian yang bertujuan memahami interaksi antar faktor kategorik, seperti dalam ilmu sosial untuk menganalisis preferensi pemilih atau dalam pemasaran untuk memahami perilaku konsumen.

Mendukung Pengambilan Keputusan

Analisis data kategorik memberikan wawasan yang dapat digunakan untuk mendukung pengambilan keputusan berbasis data di berbagai bidang. Dengan memahami distribusi dan hubungan antar variabel kategorik, pengambil keputusan dapat merumuskan strategi yang lebih tepat. Misalnya, dalam kebijakan publik, analisis data kategorik dapat mengidentifikasi kelompok masyarakat yang paling membutuhkan bantuan sosial berdasarkan kategori seperti status ekonomi (miskin, menengah, kaya) atau lokasi geografis (perkotaan, pedesaan).

Metode seperti regresi logistik memungkinkan estimasi probabilitas hasil tertentu, seperti:

\[ \log\left(\frac{\pi}{1-\pi}\right) = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p \]

di mana \(\pi\) adalah probabilitas keberhasilan (misalnya, menerima bantuan), dan \(\beta_i\) adalah koefisien prediktor \(x_i\) (misalnya, pendapatan atau usia). Model ini membantu pengambil keputusan memprioritaskan sumber daya atau menargetkan intervensi. Dalam pemasaran, analisis ini membantu menentukan segmen pelanggan yang paling mungkin membeli produk berdasarkan preferensi atau demografi.

Memprediksi Hasil Kategorik

Analisis data kategorik memungkinkan pengembangan model prediktif untuk memperkirakan hasil kategorik berdasarkan variabel prediktor. Ini sangat berguna dalam aplikasi seperti diagnosis medis, analisis risiko, atau prakiraan perilaku konsumen. Misalnya, dalam kedokteran, regresi logistik dapat digunakan untuk memprediksi probabilitas pasien menderita penyakit tertentu (ya/tidak) berdasarkan faktor risiko seperti usia, jenis kelamin, atau riwayat kesehatan.

Untuk data multikategori, regresi logistik multinomial dapat digunakan, dengan model:

\[ \log\left(\frac{\pi_j}{\pi_k}\right) = \beta_{j0} + \beta_{j1} x_1 + \cdots + \beta_{jp} x_p, \quad j = 1, \ldots, k-1 \]

di mana \(\pi_j\) adalah probabilitas kategori \(j\), dan \(k\) adalah kategori referensi. Untuk data ordinal, model odds proporsional dapat digunakan:

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

di mana \(j\) adalah kategori ordinal, dan \(\beta\) adalah efek prediktor \(x\). Model-model ini memungkinkan prediksi yang akurat, seperti klasifikasi pasien ke dalam kategori risiko (rendah, sedang, tinggi) atau prediksi preferensi konsumen (sangat suka, suka, tidak suka).

Memahami Pola dan Tren

Analisis data kategorik membantu mengidentifikasi pola dan tren dalam data, yang dapat mengungkap kecenderungan penting dalam populasi atau kelompok. Misalnya, dalam studi kepuasan pelanggan, analisis dapat menunjukkan bahwa pelanggan di wilayah tertentu cenderung memberikan respons “tidak puas” dibandingkan wilayah lain. Tabel kontingensi digunakan untuk merangkum frekuensi observasi, seperti:

Kategori \(B_1\) Kategori \(B_2\)
Kategori \(A_1\) \(n_{11}\) \(n_{12}\)
Kategori \(A_2\) \(n_{21}\) \(n_{22}\)

Proporsi dihitung sebagai \(p_{ij} = \frac{n_{ij}}{n}\), memberikan gambaran distribusi kategori. Visualisasi seperti diagram batang atau analisis korespondensi juga dapat digunakan untuk mengidentifikasi pola secara grafis. Manfaat ini sangat relevan dalam bidang seperti epidemiologi untuk melacak prevalensi penyakit atau dalam pemasaran untuk memahami tren preferensi produk.

##Menangani Data Non-Numerik Salah satu keunggulan analisis data kategorik adalah kemampuannya untuk menangani data non-numerik, yang sering kali tidak dapat dianalisis dengan metode statistik tradisional yang mengasumsikan distribusi normal atau data kontinu. Data kategorik, seperti jenis kelamin, status perkawinan, atau tingkat kepuasan, tidak memungkinkan operasi matematis seperti rata-rata atau varians, tetapi dapat dianalisis menggunakan metode seperti uji chi-square, uji eksak Fisher, atau model loglinear.

Misalnya, model loglinear memodelkan log frekuensi harapan dalam tabel kontingensi multidimensi:

\[ \log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C + \lambda_{ij}^{AB} + \cdots \]

di mana \(\mu_{ijk}\) adalah frekuensi harapan, dan \(\lambda\) mencerminkan efek utama dan interaksi. Pendekatan ini memungkinkan analisis data yang bersifat kualitatif, seperti sikap masyarakat atau preferensi politik, yang sering kali hanya tersedia dalam bentuk kategori.

Mendukung Segmentasi Populasi

Analisis data kategorik sangat efektif untuk segmentasi populasi, yaitu mengelompokkan individu atau entitas ke dalam kategori berdasarkan karakteristik tertentu. Dalam pemasaran, misalnya, pelanggan dapat disegmentasikan berdasarkan preferensi produk (sangat suka, suka, tidak suka) atau demografi (usia, jenis kelamin). Dalam pendidikan, siswa dapat dikelompokkan berdasarkan tingkat prestasi (tinggi, sedang, rendah).

Metode seperti analisis korespondensi atau model regresi logistik multinomial membantu mengidentifikasi kelompok-kelompok ini. Misalnya, analisis korespondensi memetakan hubungan antar kategori dalam ruang dua dimensi, memungkinkan visualisasi segmen populasi. Segmentasi ini memungkinkan organisasi untuk menyesuaikan strategi, seperti menargetkan iklan kepada kelompok tertentu atau merancang intervensi pendidikan untuk siswa dengan kebutuhan spesifik.

Meningkatkan Efisiensi Analisis dalam Penelitian

Analisis data kategorik meningkatkan efisiensi penelitian dengan menyediakan metode yang dirancang khusus untuk data kategorik, sehingga menghindari kebutuhan untuk mengubah data menjadi bentuk numerik yang mungkin tidak sesuai. Misalnya, mengubah data ordinal seperti tingkat kepuasan menjadi skor numerik (misalnya, sangat puas = 5, puas = 4) dapat menyebabkan hilangnya informasi atau asumsi yang salah tentang jarak antar kategori.

Metode seperti uji chi-square atau model odds proporsional memanfaatkan sifat kategorik data secara langsung, memberikan hasil yang lebih akurat dan relevan. Untuk data ordinal, model odds proporsional mempertimbangkan urutan kategori tanpa mengasumsikan jarak antar kategori yang sama, sehingga lebih efisien dibandingkan metode yang mengabaikan urutan. Dalam penelitian dengan data multikategori, model logistik multinomial atau loglinear memungkinkan analisis kompleks tanpa memerlukan transformasi data yang rumit.

Analisis data kategorik menawarkan berbagai manfaat yang signifikan, mulai dari mengidentifikasi hubungan antar variabel, mendukung pengambilan keputusan, hingga memprediksi hasil kategorik. Analisis ini juga memungkinkan pemahaman pola dan tren, menangani data non-numerik, mendukung segmentasi populasi, dan meningkatkan efisiensi analisis dalam penelitian. Dengan metode seperti uji chi-square, regresi logistik, dan model loglinear, analisis data kategorik menjadi alat yang sangat berharga untuk mengekstrak wawasan dari data kategorik di berbagai bidang, memastikan hasil yang relevan dan dapat diandalkan untuk penelitian dan

Metode dalam Analisis Data Kategorik

Analisis data kategorik menggunakan berbagai metode statistik untuk memahami hubungan, pola, dan prediksi dalam data yang variabelnya berbentuk kategori, seperti nominal atau ordinal. Metode ini dirancang untuk menangani sifat diskret data kategorik tanpa mengasumsikan distribusi kontinu seperti normalitas. Bagian ini menjelaskan empat metode utama dalam analisis data kategorik: tabel kontingensi dan uji chi-square, regresi logistik, analisis korespondensi, serta decision tree dan random forest. Setiap metode diuraikan secara mendetail, mencakup konsep, rumus matematis, aplikasi, dan keunggulannya, dengan penjelasan yang ringkas namun komprehensif.

Tabel Kontingensi dan Chi-Square

Tabel kontingensi adalah alat dasar untuk merangkum frekuensi observasi dari dua atau lebih variabel kategorik, memungkinkan analisis hubungan antar variabel. Uji chi-square digunakan untuk menguji hipotesis independensi, yaitu apakah distribusi satu variabel tidak dipengaruhi oleh variabel lain.

Untuk dua variabel kategorik, misalnya \(A\) (dengan \(r\) kategori) dan \(B\) (dengan \(c\) kategori), tabel kontingensi berbentuk \(r \times c\) dapat ditulis sebagai:

\(B_1\) \(B_2\) \(\cdots\) \(B_c\) Total
\(A_1\) \(n_{11}\) \(n_{12}\) \(\cdots\) \(n_{1c}\) \(n_{1+}\)
\(A_2\) \(n_{21}\) \(n_{22}\) \(\cdots\) \(n_{2c}\) \(n_{2+}\)
\(\vdots\) \(\vdots\) \(\vdots\) \(\ddots\) \(\vdots\) \(\vdots\)
\(A_r\) \(n_{r1}\) \(n_{r2}\) \(\cdots\) \(n_{rc}\) \(n_{r+}\)
Total \(n_{+1}\) \(n_{+2}\) \(\cdots\) \(n_{+c}\) \(n\)

di mana \(n_{ij}\) adalah frekuensi pada baris \(i\) dan kolom \(j\), \(n_{i+}\) adalah total baris ke-\(i\), \(n_{+j}\) adalah total kolom ke-\(j\), dan \(n\) adalah total observasi.

Uji Chi-Square

Uji chi-square menghitung statistik untuk menguji independensi:

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

di mana \(O_{ij} = n_{ij}\) adalah frekuensi teramati, dan \(E_{ij} = \frac{n_{i+} n_{+j}}{n}\) adalah frekuensi harapan di bawah hipotesis nol (independensi). Statistik \(\chi^2\) mengikuti distribusi chi-square dengan derajat kebebasan \((r-1)(c-1)\).

Jika nilai \(p\) dari uji ini kecil (misalnya, \(< 0,05\)), hipotesis nol ditolak, menunjukkan adanya hubungan antar variabel. Untuk tabel 2x2, ukuran asosiasi seperti odds ratio dapat dihitung:

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

Tabel kontingensi dan uji chi-square digunakan dalam berbagai bidang, seperti kesehatan untuk menganalisis hubungan antara paparan faktor risiko dan penyakit, atau pemasaran untuk memeriksa preferensi produk antar kelompok demografi. Keunggulannya meliputi kesederhanaan, kemampuan menangani data nominal, dan interpretasi yang intuitif. Namun, uji chi-square memerlukan sampel besar dan tidak cocok untuk tabel dengan frekuensi kecil, di mana uji eksak Fisher lebih disarankan.

Regresi Logistik

Regresi logistik adalah metode untuk memodelkan hubungan antara variabel dependen kategorik (biasanya biner) dan satu atau lebih variabel independen (prediktor), yang dapat bersifat kategorik atau kontinu. Model ini memprediksi probabilitas kejadian tertentu, seperti “sukses” (1) dibandingkan “gagal” (0).

Untuk variabel respons biner \(Y\) (0 atau 1), regresi logistik memodelkan log-odds probabilitas sukses \(\pi = P(Y=1)\) sebagai:

\[ \log\left(\frac{\pi}{1-\pi}\right) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \]

di mana \(\beta_0\) adalah intersep, \(\beta_i\) adalah koefisien untuk prediktor \(x_i\), dan \(p\) adalah jumlah prediktor. Probabilitas \(\pi\) dihitung dengan fungsi logistik:

\[ \pi = \frac{e^{\beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p}}{1 + e^{\beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p}} \]

Untuk data multikategori nominal, regresi logistik multinomial digunakan, memodelkan log-odds relatif terhadap kategori referensi \(k\): \[ \log\left(\frac{\pi_j}{\pi_k}\right) = \beta_{j0} + \beta_{j1} x_1 + \cdots + \beta_{jp} x_p, \quad j = 1, \ldots, k-1 \]

Untuk data ordinal, model odds proporsional digunakan: \[ \log\left(\frac{P(Y \leq j)}{P(Y > j)}\right) = \alpha_j + \beta_1 x_1 + \cdots + \beta_p x_p \]

di mana \(\alpha_j\) adalah ambang batas untuk kategori \(j\), dan \(\beta_i\) adalah koefisien yang konstan untuk semua kategori.

Regresi logistik banyak digunakan dalam kedokteran untuk memprediksi risiko penyakit berdasarkan faktor seperti usia atau kebiasaan merokok, dalam pemasaran untuk memprediksi pembelian produk, dan dalam ilmu sosial untuk menganalisis preferensi pemilih. Keunggulannya termasuk fleksibilitas dalam menangani prediktor campuran (kategorik dan kontinu), interpretasi koefisien sebagai log-odds, dan kemampuan memprediksi probabilitas. Namun, model ini mengasumsikan linearitas dalam log-odds dan memerlukan sampel yang cukup besar untuk estimasi yang akurat. ## Analisis Korespondensi

Analisis korespondensi adalah metode eksplorasi untuk memvisualisasikan hubungan antar kategori dari dua atau lebih variabel kategorik dalam ruang berdimensi rendah, biasanya dua dimensi. Metode ini menguraikan tabel kontingensi menjadi komponen utama, mirip dengan analisis komponen utama untuk data kontinu, untuk mengidentifikasi pola asosiasi.

Diberikan tabel kontingensi \(r \times c\) dengan frekuensi \(n_{ij}\), langkah-langkah analisis korespondensi adalah:

Proporsi: Hitung proporsi \(p_{ij} = \frac{n_{ij}}{n}\), di mana \(n\) adalah total observasi.

Massa Baris dan Kolom: Hitung massa baris \(r_i = \sum_j p_{ij}\) dan massa kolom \(c_j = \sum_i p_{ij}\).

Matriks Residual Standar: Hitung residual standar \(s_{ij} = \frac{p_{ij} - r_i c_j}{\sqrt{r_i c_j}}\), yang mengukur deviasi dari independensi.

Dekomposisi Singular Value: Lakukan dekomposisi nilai singular (SVD) pada matriks residual standar untuk mendapatkan skor baris dan kolom dalam ruang berdimensi rendah.

Hasilnya adalah peta korespondensi, di mana jarak antar titik (kategori) mencerminkan kekuatan asosiasi, dan inersia total (mirip varians) dihitung sebagai:

\[ \text{Inersia} = \sum_{i=1}^r \sum_{j=1}^c \frac{(p_{ij} - r_i c_j)^2}{r_i c_j} \]

Inersia ini diuraikan menjadi komponen utama, dengan setiap sumbu menjelaskan persentase inersia.

Analisis korespondensi digunakan dalam pemasaran untuk memetakan hubungan antara merek dan preferensi konsumen, dalam sosiologi untuk menganalisis hubungan antara kelas sosial dan pilihan politik, dan dalam ekologi untuk memetakan distribusi spesies. Keunggulannya termasuk kemampuan visualisasi yang intuitif, menangani data nominal, dan tidak memerlukan asumsi distribusi. Namun, interpretasi peta korespondensi bersifat kualitatif dan bergantung pada keahlian analis.

Decision Tree dan Random Forest

Decision tree (pohon keputusan) adalah metode pembelajaran mesin yang membagi data ke dalam kelompok berdasarkan serangkaian keputusan berurutan, membentuk struktur pohon. Setiap simpul (node) mewakili keputusan berdasarkan variabel prediktor, dan setiap cabang mewakili hasil keputusan, hingga mencapai daun (leaf) yang mewakili kategori respons. Random forest adalah metode ensemble yang menggabungkan banyak decision tree untuk meningkatkan akurasi dan stabilitas prediksi.

Untuk decision tree, pembagian data dilakukan dengan meminimalkan ukuran ketidakmurnian, seperti indeks Gini atau entropi. Indeks Gini untuk simpul dengan \(k\) kategori dihitung sebagai: \[\text{Gini} = 1 - \sum_{i=1}^k p_i^2\] di mana \(p_i\) adalah proporsi observasi dalam kategori \(i\). Entropi dihitung sebagai:

\[ \text{Entropi} = -\sum_{i=1}^k p_i \log_2(p_i) \]

Pohon memilih pemisahan yang meminimalkan ketidakmurnian rata-rata di simpul anak, ditimbang berdasarkan ukuran sampel:

\[ \text{Impurity Reduction} = I(\text{parent}) - \left( \frac{n_{\text{left}}}{n} I(\text{left}) + \frac{n_{\text{right}}}{n} I(\text{right}) \right) \]

Random forest membangun \(T\) pohon dengan bootstrap sampling dan pemilihan acak subset prediktor di setiap simpul. Prediksi akhir dihasilkan dengan mayoritas voting (untuk klasifikasi):

\[ \hat{y} = \text{mode}{ \hat{y}_1, \hat{y}_2, \ldots, \hat{y}_T } \]

di mana \(\hat{y}_t\) adalah prediksi dari pohon ke-\(t\).

Decision tree dan random forest digunakan dalam kedokteran untuk mengklasifikasikan pasien ke dalam kategori risiko, dalam pemasaran untuk memprediksi perilaku pembelian, dan dalam keuangan untuk mendeteksi penipuan. Keunggulan decision tree termasuk interpretasi yang mudah dan kemampuan menangani prediktor campuran. Random forest meningkatkan akurasi dengan mengurangi overfitting dan menangani data kompleks. Namun, decision tree rentan terhadap overfitting, dan random forest kurang interpretatif dibandingkan pohon tunggal.

Metode dalam analisis data kategorik, seperti tabel kontingensi dan uji chi-square, regresi logistik, analisis korespondensi, serta decision tree dan random forest, menawarkan pendekatan yang beragam untuk menganalisis data kategorik. Uji chi-square cocok untuk menguji independensi, regresi logistik untuk prediksi probabilitas, analisis korespondensi untuk visualisasi hubungan, dan decision tree/random forest untuk klasifikasi berbasis pembelajaran mesin. Pemilihan metode tergantung pada jenis data (nominal/ordinal, biner/multikategori) dan tujuan analisis, memastikan wawasan yang akurat dan relevan dari data kategorik.

Kesimpulan:

Analisis data kategorik membantu dalam:

  • Menemukan pola dalam data diskrit

  • Menguji hubungan antar kategori

  • Mendukung pengambilan keputusan berbasis data

Pemahaman jenis data dan metode analisis yang tepat sangat penting dalam mengolah data kategorik secara efektif.

Distribusi Probabilitas dalam Data Kategorik

Distribusi probabilitas adalah dasar untuk menganalisis data kategorik, yang variabelnya berbentuk kategori diskret seperti nominal atau ordinal. Distribusi ini memungkinkan pemodelan frekuensi, proporsi, atau kejadian dalam data kategorik, serta mendukung inferensi statistik dan pemodelan. Bagian ini menjelaskan empat distribusi probabilitas yang relevan untuk data kategorik: distribusi binomial, distribusi Bernoulli, distribusi multinomial, dan distribusi Poisson. Setiap distribusi diuraikan secara mendetail, mencakup definisi, rumus matematis, parameter, aplikasi, dan keterkaitannya dengan data kategorik.

Distribusi Binomial

Distribusi binomial menggambarkan jumlah keberhasilan dalam \(n\) percobaan independen, di mana setiap percobaan memiliki dua hasil mungkin (sukses atau gagal) dengan probabilitas sukses tetap \(\pi\). Distribusi ini cocok untuk data kategorik biner, seperti hasil tes (lulus/tidak lulus) atau kejadian penyakit (ada/tidak ada).

Jika \(Y\) adalah jumlah keberhasilan dalam \(n\) percobaan, probabilitas massa distribusi binomial adalah:

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

di mana:

\(\binom{n}{y} = \frac{n!}{y!(n-y)!}\) adalah koefisien binomial,

\(\pi\) adalah probabilitas sukses,

\(1-\pi\) adalah probabilitas gagal.

Parameter:

\(n\): Jumlah percobaan (bilangan bulat positif).

\(\pi\): Probabilitas sukses (0 \(\leq \pi \leq\) 1).

Mean dan Varians:

  • Mean: \(E(Y) = n\pi\)

  • Varians: \(\text{Var}(Y) = n\pi(1-\pi)\)

Contoh Pengaplikasian Distribusi Binomial Distribusi binomial digunakan untuk menganalisis data biner dalam berbagai konteks, seperti:

  • Dalam kedokteran, untuk memodelkan jumlah pasien yang sembuh dari \(n\) pasien yang menerima pengobatan dengan probabilitas kesembuhan \(\pi\).

  • Dalam pemasaran, untuk menghitung jumlah pelanggan yang membeli produk dari \(n\) pelanggan yang ditawari promosi.

Distribusi ini juga menjadi dasar untuk uji hipotesis proporsi dan regresi logistik, yang memodelkan probabilitas sukses berdasarkan prediktor.

Distribusi binomial langsung relevan untuk data kategorik biner, di mana respons hanya memiliki dua kategori. Misalnya, dalam tabel kontingensi 2x2, distribusi binomial dapat digunakan untuk menganalisis frekuensi dalam satu kategori dibandingkan kategori lainnya.

##Distribusi Bernoulli Distribusi Bernoulli adalah kasus khusus distribusi binomial dengan \(n=1\), yaitu satu percobaan dengan dua hasil mungkin: sukses (1) atau gagal (0). Distribusi ini adalah unit dasar untuk data biner, seperti respons ya/tidak atau benar/salah.

Jika \(Y\) adalah variabel Bernoulli, probabilitas massa adalah:

\[ P(Y = y) = \pi^y (1-\pi)^{1-y}, \quad y = 0, 1 \]

di mana:

\(\pi\) adalah probabilitas sukses (\(P(Y=1)\)), \(1-\pi\) adalah probabilitas gagal (\(P(Y=0)\)).

Parameter:

\(\pi\): Probabilitas sukses (0 \(\leq \pi \leq\) 1).

Mean dan Varians:

  • Mean: \(E(Y) = \pi\)

  • Varians: \(\text{Var}(Y) = \pi(1-\pi)\)

Contoh Pengaplikasian Distribusi Bernoulli Distribusi Bernoulli digunakan untuk memodelkan kejadian tunggal dalam data kategorik biner, seperti:

  • Dalam penelitian klinis, untuk memodelkan apakah seorang pasien merespons pengobatan (1 = respons, 0 = tidak respons).

  • Dalam ilmu sosial, untuk menganalisis apakah seseorang setuju dengan pernyataan tertentu (1 = setuju, 0 = tidak setuju).

Distribusi ini juga menjadi dasar untuk analisis regresi logistik, di mana setiap observasi dianggap mengikuti distribusi Bernoulli dengan probabilitas \(\pi\) yang bergantung pada prediktor.

Distribusi Bernoulli adalah fondasi untuk data biner, yang merupakan bentuk paling sederhana dari data kategorik. Setiap observasi dalam data biner dapat dimodelkan sebagai percobaan Bernoulli, dan distribusi binomial adalah jumlah dari \(n\) percobaan Bernoulli independen.

Distribusi Multinomial

Distribusi multinomial adalah generalisasi distribusi binomial untuk data kategorik dengan lebih dari dua kategori. Distribusi ini menggambarkan pembagian \(n\) observasi independen ke dalam \(k\) kategori, masing-masing dengan probabilitas \(\pi_i\), di mana \(\sum \pi_i = 1\). Distribusi ini cocok untuk data multikategori, seperti preferensi produk (merek A, B, C) atau tingkat kepuasan (sangat puas, puas, tidak puas).

Jika \(n_1, n_2, \ldots, n_k\) adalah jumlah observasi dalam \(k\) kategori, dengan \(\sum n_i = n\), probabilitas massa distribusi multinomial adalah:

\[ P(n_1, n_2, \ldots, n_k) = \frac{n!}{n_1! n_2! \cdots n_k!} \pi_1^{n_1} \pi_2^{n_2} \cdots \pi_k^{n_k} \]

di mana:

\(n_i\): Jumlah observasi dalam kategori ke-\(i\), \(\pi_i\): Probabilitas kategori ke-\(i\), \(\sum \pi_i = 1\).

Parameter:

\(n\): Jumlah observasi (bilangan bulat positif).

\(\pi_1, \pi_2, \ldots, \pi_k\): Probabilitas masing-masing kategori.

Mean dan Varians:

  • Mean: \(E(n_i) = n \pi_i\)

  • Varians: \(\text{Var}(n_i) = n \pi_i (1 - \pi_i)\)

  • Kovarians: \(\text{Cov}(n_i, n_j) = -n \pi_i \pi_j\) untuk \(i \neq j\)

Contoh Pengaplikasian Distribusi Multinomial Distribusi multinomial digunakan untuk menganalisis data multikategori, seperti:

  • Dalam pemasaran, untuk memodelkan distribusi pilihan konsumen terhadap beberapa merek produk.

  • Dalam ilmu politik, untuk menganalisis pembagian suara pemilih ke beberapa partai politik.

Distribusi ini menjadi dasar untuk analisis tabel kontingensi multidimensi dan regresi logistik multinomial, yang memodelkan probabilitas kategori berdasarkan prediktor.

Distribusi multinomial sangat relevan untuk data kategorik multikategori, baik nominal maupun ordinal. Dalam tabel kontingensi, frekuensi sel dapat dimodelkan sebagai hasil dari distribusi multinomial, memungkinkan uji seperti chi-square untuk menganalisis hubungan antar variabel.

Distribusi Poisson

Distribusi Poisson menggambarkan jumlah kejadian acak yang terjadi dalam interval waktu atau ruang tertentu, dengan rata-rata kejadian \(\lambda\) per interval. Meskipun sering dikaitkan dengan data kuantitatif diskret (seperti jumlah kejadian), distribusi ini relevan untuk data kategorik ketika kejadian dihitung dalam kategori tertentu, seperti jumlah kasus penyakit per wilayah.

Jika \(Y\) adalah jumlah kejadian, probabilitas massa distribusi Poisson adalah:

\[ P(Y = y) = \frac{e^{-\lambda} \lambda^y}{y!}, \quad y = 0, 1, 2, \ldots \]

di mana:

\(\lambda\): Rata-rata jumlah kejadian per interval (positif).

Parameter:

\(\lambda\): Rata-rata dan varians distribusi.

Mean dan Varians:

  • Mean: \(E(Y) = \lambda\)

  • Varians: \(\text{Var}(Y) = \lambda\)

** Contoh Pengaplikasian Distribusi Poisson** Distribusi Poisson digunakan dalam konteks data kategorik untuk:

  • Dalam epidemiologi, untuk memodelkan jumlah kasus penyakit dalam kategori wilayah atau kelompok usia.

  • Dalam manajemen risiko, untuk menganalisis jumlah kegagalan sistem dalam kategori waktu tertentu.

Distribusi ini juga digunakan dalam model loglinear untuk tabel kontingensi, di mana frekuensi sel diasumsikan mengikuti distribusi Poisson untuk menganalisis hubungan antar variabel.

Distribusi Poisson relevan untuk data kategorik ketika frekuensi kejadian dalam kategori dihitung, seperti dalam tabel kontingensi. Misalnya, jumlah individu dalam kategori tertentu (misalnya, kelompok risiko tinggi) dapat dimodelkan sebagai proses Poisson, terutama dalam analisis model loglinear:

\[ \log(\mu_{ijk}) = \lambda + \lambda_i^A + \lambda_j^B + \lambda_k^C + \lambda_{ij}^{AB} + \cdots \]

di mana \(\mu_{ijk}\) adalah frekuensi harapan yang mengikuti distribusi Poisson.

Perbandingan Distribusi

Distribusi Jenis Data Kategorik Parameter Aplikasi Utama
Binomial Biner \(n\), \(\pi\) Jumlah keberhasilan dalam \(n\) percobaan
Bernoulli Biner \(\pi\) Kejadian tunggal (sukses/gagal)
Multinomial Multikategori \(n\), \(\pi_1, \ldots, \pi_k\) Pembagian \(n\) observasi ke \(k\) kategori
Poisson Frekuensi dalam kategori \(\lambda\) Jumlah kejadian dalam interval

Distribusi probabilitas binomial, Bernoulli, multinomial, dan Poisson adalah alat penting dalam analisis data kategorik. Distribusi binomial dan Bernoulli cocok untuk data biner, dengan Bernoulli sebagai kasus khusus untuk satu percobaan. Distribusi multinomial menangani data multikategori, memungkinkan analisis frekuensi dalam tabel kontingensi. Distribusi Poisson relevan untuk frekuensi kejadian dalam kategori, terutama dalam model loglinear. Pemilihan distribusi tergantung pada jenis data kategorik dan struktur analisis, memastikan pemodelan yang akurat dan inferensi yang valid.

Desain Sampling dalam Analisis Data Kategorik

Desain sampling adalah elemen penting dalam analisis data kategorik, yang menentukan cara data dikumpulkan untuk menghasilkan inferensi yang valid tentang populasi. Data kategorik, seperti variabel nominal (tanpa urutan) atau ordinal (dengan urutan), sering dianalisis menggunakan desain sampling prospektif atau retrospektif. Desain prospektif melibatkan pengumpulan data ke depan dari titik waktu tertentu, sedangkan desain retrospektif memanfaatkan data historis. Bagian ini menjelaskan secara mendetail dua pendekatan prospektif (eksperimen dan studi kohort), dua pendekatan retrospektif (studi kasus-kontrol dan studi kohort retrospektif), serta menyajikan tabel perbandingan untuk memperjelas karakteristik masing-masing desain.

Prospective Sampling

Eksperimen

Eksperimen adalah desain sampling prospektif di mana peneliti secara acak menetapkan subjek ke kelompok perlakuan atau kontrol untuk menguji efek variabel independen terhadap variabel dependen kategorik, seperti keberhasilan pengobatan atau respons konsumen. Randomisasi meminimalkan bias dan memungkinkan peneliti membuat kesimpulan kausal tentang hubungan sebab-akibat.

Prosedur:

  1. Seleksi Subjek: Memilih sampel acak dari populasi target.

  2. Randomisasi: Menetapkan subjek secara acak ke kelompok perlakuan (misalnya, obat baru) atau kontrol (misalnya, plasebo).

  3. Intervensi: Memberikan perlakuan spesifik kepada kelompok perlakuan, sementara kelompok kontrol menerima plasebo atau tanpa perlakuan.

  4. Pengukuran: Mengukur variabel dependen kategorik, seperti status sembuh/tidak sembuh atau pembelian/tidak membeli, setelah periode tertentu.

  5. Analisis: Membandingkan proporsi hasil antar kelompok menggunakan metode seperti uji chi-square atau regresi logistik untuk mengevaluasi perbedaan signifikan.

Eksperimen banyak digunakan dalam uji klinis untuk menguji efektivitas obat, misalnya, apakah pasien sembuh setelah menerima pengobatan baru dibandingkan plasebo. Dalam pemasaran, eksperimen dapat mengevaluasi respons konsumen terhadap iklan yang berbeda, seperti apakah mereka membeli produk setelah melihat iklan tertentu. Keunggulan desain ini adalah kemampuan untuk menetapkan kausalitas dengan tingkat kepercayaan tinggi karena kontrol ketat terhadap variabel pengganggu. Namun, eksperimen sering memakan biaya besar, membutuhkan waktu lama, dan mungkin tidak praktis untuk semua jenis penelitian, terutama yang melibatkan faktor yang tidak dapat dimanipulasi.

Studi Kohort

Studi kohort prospektif melibatkan pengamatan kelompok individu (kohort) yang dipilih berdasarkan status paparan tertentu, seperti kebiasaan merokok atau pola makan, dan diikuti sepanjang waktu untuk mencatat hasil kategorik, seperti kejadian penyakit atau perilaku tertentu. Berbeda dengan eksperimen, studi kohort tidak melibatkan intervensi, melainkan mengamati hubungan alami antara paparan dan hasil.

Prosedur:

  1. Seleksi Kohort: Memilih individu berdasarkan status paparan, misalnya, perokok versus bukan perokok.

  2. Pengumpulan Data Awal: Mencatat karakteristik awal, seperti usia, jenis kelamin, atau faktor lain yang relevan.

  3. Pengamatan Longitudinal: Mengikuti kohort selama periode tertentu untuk mencatat hasil kategorik, seperti kejadian penyakit atau perilaku tertentu.

  4. Pengukuran Hasil: Mengidentifikasi dan mencatat hasil, seperti apakah individu mengalami penyakit atau tidak.

  5. Analisis: Mengevaluasi hubungan antara paparan dan hasil menggunakan ukuran seperti risiko relatif atau analisis regresi logistik.

Studi kohort sering digunakan dalam epidemiologi untuk meneliti hubungan antara faktor risiko, seperti merokok, dan hasil seperti kanker paru-paru. Dalam ilmu sosial, studi kohort dapat mengamati hubungan antara tingkat pendidikan dan status pekerjaan. Keunggulan desain ini adalah kemampuan untuk mengukur risiko secara langsung dan mempelajari beberapa hasil sekaligus. Namun, studi ini memerlukan waktu pengamatan yang panjang, biaya besar, dan rentan terhadap kehilangan subjek selama masa tindak lanjut (loss to follow-up).

Retrospective Sampling

Studi Kasus-Kontrol

Studi kasus-kontrol adalah desain retrospektif yang membandingkan individu dengan hasil tertentu (kasus) dengan individu tanpa hasil tersebut (kontrol) untuk meneliti paparan masa lalu yang mungkin berkontribusi pada hasil tersebut. Desain ini sangat efisien untuk mempelajari hasil langka, seperti penyakit tertentu, karena fokus pada individu yang sudah mengalami hasil.

Prosedur:

  1. Seleksi Kasus: Memilih individu yang memiliki hasil kategorik tertentu, misalnya, pasien dengan penyakit tertentu.

  2. Seleksi Kontrol: Memilih individu tanpa hasil tersebut dari populasi yang sama, sering dicocokkan berdasarkan faktor seperti usia atau jenis kelamin untuk mengurangi bias.

  3. Pengumpulan Data Paparan: Mengumpulkan informasi tentang paparan masa lalu, seperti kebiasaan merokok atau paparan zat kimia, melalui wawancara, kuesioner, atau catatan medis.

  4. Analisis: Membandingkan proporsi paparan antara kasus dan kontrol untuk mengevaluasi hubungan, sering menggunakan analisis odds ratio atau regresi logistik.

Studi kasus-kontrol umum digunakan dalam epidemiologi untuk meneliti penyebab penyakit langka, seperti hubungan antara paparan asbes dan kanker mesothelioma. Dalam kesehatan masyarakat, desain ini dapat mengevaluasi faktor risiko untuk wabah penyakit. Keunggulannya adalah efisiensi waktu dan biaya, serta kemampuan untuk mempelajari hasil langka. Namun, desain ini rentan terhadap bias recall (kesalahan ingatan subjek) dan bias seleksi, serta tidak dapat langsung mengukur risiko absolut.

Studi Kohort Retrospektif

Studi kohort retrospektif mirip dengan studi kohort prospektif, tetapi menggunakan data historis untuk mengamati hubungan antara paparan dan hasil kategorik. Desain ini memanfaatkan catatan yang sudah ada, seperti database medis atau arsip perusahaan, untuk melacak paparan dan hasil di masa lalu, menjadikannya lebih cepat dan hemat biaya dibandingkan studi kohort prospektif.

Prosedur:

  1. Identifikasi Data: Memilih catatan historis yang relevan, seperti rekam medis atau data kepegawaian, yang mencakup informasi paparan dan hasil.

  2. Seleksi Kohort: Mengelompokkan individu berdasarkan status paparan di masa lalu, misalnya, pekerja yang terpapar bahan kimia versus yang tidak.

  3. Pengumpulan Data Hasil: Mengidentifikasi hasil kategorik dari catatan, seperti kejadian penyakit atau status pekerjaan.

  4. Analisis: Mengevaluasi hubungan antara paparan dan hasil menggunakan metode seperti analisis risiko relatif atau regresi logistik.

Studi kohort retrospektif sering digunakan dalam kesehatan kerja untuk meneliti efek paparan bahan kimia terhadap penyakit kronis, atau dalam kedokteran untuk mempelajari hasil jangka panjang dari pengobatan tertentu. Keunggulannya adalah kecepatan dan biaya rendah karena memanfaatkan data yang sudah ada. Namun, kualitas data bergantung pada kelengkapan dan akurasi catatan, dan desain ini rentan terhadap bias karena kurangnya kontrol atas pengumpulan data awal.

Tabel Perbandingan Desain Sampling

Aspek Eksperimen Studi Kohort Studi Kasus-Kontrol Studi Kohort Retrospektif
Jenis Desain Prospektif Prospektif Retrospektif Retrospektif
Waktu Pengumpulan Data Ke depan dari waktu saat ini Ke depan dari waktu saat ini Menggunakan data masa lalu Menggunakan data masa lalu
Seleksi Subjek Randomisasi ke perlakuan/kontrol Berdasarkan status paparan Berdasarkan status hasil (kasus/kontrol) Berdasarkan paparan dari catatan historis
Kontrol Variabel Tinggi (melalui randomisasi) Sedang (tergantung desain) Rendah (rentan bias recall/seleksi) Rendah (tergantung kualitas data)
Ukuran Efek Odds ratio, proporsi Risiko relatif, odds ratio Odds ratio Risiko relatif, odds ratio
Aplikasi Utama Uji klinis, evaluasi intervensi Epidemiologi, ilmu sosial Penyakit langka, faktor risiko Kesehatan kerja, studi berbasis catatan
Keunggulan Inferensi kausal, minim bias Ukur risiko langsung, multiple outcome Efisien untuk hasil langka, cepat Cepat, hemat biaya
Kelemahan Mahal, waktu lama, etika intervensi Waktu lama, loss to follow-up Bias recall, tidak ukur risiko absolut Kualitas data historis, bias seleksi

Desain sampling dalam analisis data kategorik, baik prospektif (eksperimen dan studi kohort) maupun retrospektif (studi kasus-kontrol dan studi kohort retrospektif), menawarkan pendekatan yang berbeda untuk mengumpulkan data. Eksperimen unggul dalam menetapkan kausalitas, studi kohort cocok untuk mengukur risiko secara longitudinal, studi kasus-kontrol efisien untuk hasil langka, dan studi kohort retrospektif hemat waktu dengan data historis. Pemilihan desain tergantung pada tujuan penelitian, sumber daya, dan jenis hasil kategorik yang dianalisis, memastikan data yang relevan dan inferensi yang valid.

Tabel Kontingensi 2x2

Tabel kontingensi 2x2 merupakan alat penting dalam analisis data kategorik untuk mengevaluasi hubungan antara dua variabel biner. Ebook ini akan membahas konsep dasar, perhitungan manual, implementasi menggunakan R, serta studi kasus nyata untuk memberikan pemahaman menyeluruh mengenai analisis data kategorik dua arah.

\[ \begin{array}{c|cc|c} & B_1 & B_2 & \text{Total} \\ \hline A_1 & n_{11} & n_{12} & n_{1.} \\ A_2 & n_{21} & n_{22} & n_{2.} \\ \hline \text{Total} & n_{.1} & n_{.2} & n \end{array} \]

Konsep Probabilitas

  • Peluang Bersama: \[ P(A_i, B_j) = \frac{n_{ij}}{n} \]
  • Peluang Marginal: \[ P(A_i) = \frac{n_{i.}}{n}, \quad P(B_j) = \frac{n_{.j}}{n} \]
  • Peluang Bersyarat: \[ P(B_j|A_i) = \frac{n_{ij}}{n_{i.}} \] ## Contoh Kasus

Misalnya, penelitian mengenai hubungan antara jenis kelamin dan preferensi produk:

Produk A Produk B
Laki-laki 30 20
Perempuan 50 10

Kita ingin menguji apakah terdapat asosiasi antara jenis kelamin dan jenis produk yang dipilih.

data_matrix <- matrix(c(30, 20, 50, 10), nrow = 2, byrow = TRUE)
colnames(data_matrix) <- c("Produk A", "Produk B")
rownames(data_matrix) <- c("Laki-laki", "Perempuan")
tab <- as.table(data_matrix)
chisq.test(tab)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tab
## X-squared = 6.3559, df = 1, p-value = 0.0117

Interpretasi: Terdapat asosiasi signifikan antara jenis kelamin dan preferensi produk (p < 0.05).

Studi Kasus Nyata

Topik: Hubungan Antara Orang yang Merokok dan Kanker Paru-paru.
Sumber Data: Centers for Disease Control and Prevention (CDC). https://www.cdc.gov/cancer/lung/statistics/index.htm

Kanker paru-paru merupakan penyebab utama kematian akibat kanker di seluruh dunia. Berdasarkan data epidemiologi dari CDC, merokok adalah faktor risiko utama yang berkontribusi besar terhadap terjadinya kanker paru-paru. Rokok mengandung lebih dari 7.000 bahan kimia, termasuk setidaknya 70 yang diketahui bersifat karsinogenik (penyebab kanker). Studi CDC menunjukkan bahwa sekitar 85% dari semua kasus kanker paru-paru berkaitan dengan kebiasaan merokok. Dalam upaya untuk mengedukasi masyarakat dan mengevaluasi dampak perilaku merokok, data dikumpulkan dari 1000 orang dewasa yang dibagi ke dalam dua kelompok: perokok dan bukan perokok, serta dicatat apakah mereka didiagnosis menderita kanker paru-paru atau tidak.

Tabel data: \[ \begin{array}{c|cc|c} & \text{Kanker Paru (+)} & \text{Kanker Paru (-)} & \text{Total} \\ \hline \text{Perokok} & 450 & 200 & 650 \\ \text{Bukan Perokok} & 50 & 300 & 350 \\ \hline \text{Total} & 500 & 500 & 1000 \end{array} \]

Perhitungan Manual dan Implementasi di R

Risk Difference (RD)

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

# Input RD
rd <- function(n11, n12, n21, n22) {
  (n11 / (n11 + n12)) - (n21 / (n21 + n22))
}
rd(450, 200, 50, 300)
## [1] 0.5494505

Interpretasi: Perokok memiliki risiko absolut terkena kanker paru-paru lebih tinggi sebesar 54.94% dibandingkan bukan perokok.

Relative Risk (RR)

\[ RR = \frac{0.6923}{0.1429} = 4.846 \]

# Input RR
rr <- function(n11, n12, n21, n22) {
  (n11 / (n11 + n12)) / (n21 / (n21 + n22))
}
rr(450, 200, 50, 300)
## [1] 4.846154

Interpretasi: Perokok memiliki risiko relatif terkena kanker paru-paru hampir 4.85 kali lebih besar daripada bukan perokok.

Odds Ratio (OR)

\[ OR = \frac{450 \cdot 300}{200 \cdot 50} = 13.5 \]

# Input OR
or <- function(n11, n12, n21, n22) {
  (n11 * n22) / (n12 * n21)
}
or(450, 200, 50, 300)
## [1] 13.5

Interpretasi: Peluang perokok terkena kanker paru-paru 13.5 kali lebih besar dibandingkan bukan perokok.

Uji Signifikansi

Uji Proporsi Dua Sampel

prop.test(x = c(450, 50), n = c(650, 350))
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(450, 50) out of c(650, 350)
## X-squared = 272.53, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.4962344 0.6026667
## sample estimates:
##    prop 1    prop 2 
## 0.6923077 0.1428571

Interpretasi: Perbedaan proporsi signifikan secara statistik (p < 0.001). Artinya, kemungkinan bahwa perbedaan ini terjadi karena kebetulan sangat kecil.

Uji Chi-Square

chisq.test(matrix(c(450, 200, 50, 300), nrow=2, byrow=TRUE))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  matrix(c(450, 200, 50, 300), nrow = 2, byrow = TRUE)
## X-squared = 272.53, df = 1, p-value < 2.2e-16

Interpretasi: Nilai statistik uji sangat besar dengan p-value sangat kecil, sehingga dapat disimpulkan bahwa merokok dan kanker paru tidak independen.

Melalui pendekatan probabilistik dan pengujian statistik, dapat disimpulkan bahwa: - Terdapat hubungan kuat dan signifikan antara kebiasaan merokok dengan kejadian kanker paru-paru. - Perokok memiliki risiko absolut lebih tinggi (RD), risiko relatif lebih besar (RR), dan peluang kejadian jauh lebih besar (OR) dibandingkan bukan perokok. - Uji proporsi dan chi-square memperkuat temuan bahwa perbedaan ini tidak terjadi secara kebetulan.

Inferensi tabel Kontingensi Dua Arah

Inferensi pada tabel kontingensi 2x2 penting dalam menganalisis hubungan dua variabel kategori, khususnya dalam studi epidemiologi dan eksperimen klinis. Analisis ini meliputi uji proporsi, ukuran asosiasi seperti Risk Difference (RD), Relative Risk (RR), dan Odds Ratio (OR), serta uji signifikansi dengan uji z dan chi-square.

Contoh Kasus Nyata

Kasus ini diadaptasi dari studi yang meneliti hubungan antara hasil Pap Smear dan siklus menstruasi.

Sumber: - Studi diambil dari blog analisis data medis: http://sitimustiani.blogspot.com/2014/05/tabel-kontingensi-2d.html

Tabel Kontingensi:

Siklus Teratur Siklus Tidak Teratur Total
Pap Smear Normal 14 6 20
Pap Smear Abnormal 22 8 30
Total 36 14 50

Peluang Bersama, Marginal, dan Bersyarat

\[ P(A_i, B_j) = \frac{n_{ij}}{n} \quad ; \quad P(A_i) = \frac{n_{i.}}{n} \quad ; \quad P(B_j|A_i) = \frac{n_{ij}}{n_{i.}} \]

Interpretasi:

  • Peluang bersama mengukur kemungkinan dua kejadian terjadi bersamaan.

  • Peluang marginal mengukur probabilitas total baris atau kolom.

  • Peluang bersyarat menilai perubahan peluang suatu kejadian berdasarkan kejadian lain.

Risk Difference (RD)

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

Interpretasi:

  • Nilai RD positif berarti kelompok pertama (Pap Smear Normal) memiliki probabilitas hasil yang lebih besar dibanding kelompok kedua (Pap Smear Abnormal).

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

Relative Risk (RR)

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

Interpretasi:

  • RR > 1 menunjukkan bahwa kemungkinan kejadian lebih besar di kelompok pertama.

  • RR = 1 berarti tidak ada perbedaan risiko relatif. - RR < 1 berarti kemungkinan lebih rendah di kelompok pertama.

Odds Ratio (OR)

\[ OR = \frac{n_{11} \cdot n_{22}}{n_{12} \cdot n_{21}} \] Interpretasi: - OR > 1 menunjukkan odds (peluang relatif) lebih besar pada kelompok pertama. - OR = 1 menunjukkan peluang yang setara.


Analisis Menggunakan R

# Data
n11 <- 14; n12 <- 6; n21 <- 22; n22 <- 8
n1. <- n11 + n12; n2. <- n21 + n22

# Risk Difference
p1 <- n11 / n1.
p2 <- n21 / n2.
RD <- p1 - p2
SE_RD <- sqrt((p1*(1-p1)/n1.) + (p2*(1-p2)/n2.))
Z_RD <- RD / SE_RD

# Interpretasi RD
cat("Risk Difference:", RD, "\n")
## Risk Difference: -0.03333333
cat("Standard Error RD:", SE_RD, "\n")
## Standard Error RD: 0.130455
cat("Z Score RD:", Z_RD, "\n")
## Z Score RD: -0.2555159
if(abs(Z_RD) > 1.96) cat("Terdapat perbedaan risiko yang signifikan secara statistik.\n") else cat("Tidak terdapat perbedaan risiko signifikan.\n")
## Tidak terdapat perbedaan risiko signifikan.
# Relative Risk
RR <- p1 / p2
SE_lnRR <- sqrt((1/n11 - 1/n1.) + (1/n21 - 1/n2.))
Z_RR <- log(RR) / SE_lnRR

# Interpretasi RR
cat("Relative Risk:", RR, "\n")
## Relative Risk: 0.9545455
cat("Standard Error log(RR):", SE_lnRR, "\n")
## Standard Error log(RR): 0.183166
cat("Z Score RR:", Z_RR, "\n")
## Z Score RR: -0.2539774
if(abs(Z_RR) > 1.96) cat("Risiko relatif berbeda signifikan antara dua kelompok.\n") else cat("Risiko relatif tidak berbeda signifikan.\n")
## Risiko relatif tidak berbeda signifikan.
# Odds Ratio
OR <- (n11 * n22) / (n12 * n21)
SE_lnOR <- sqrt(1/n11 + 1/n12 + 1/n21 + 1/n22)
Z_OR <- log(OR) / SE_lnOR

# Interpretasi OR
cat("Odds Ratio:", OR, "\n")
## Odds Ratio: 0.8484848
cat("Standard Error log(OR):", SE_lnOR, "\n")
## Standard Error log(OR): 0.639179
cat("Z Score OR:", Z_OR, "\n")
## Z Score OR: -0.2570533
if(abs(Z_OR) > 1.96) cat("Odds ratio menunjukkan perbedaan signifikan antara dua kelompok.\n") else cat("Odds ratio tidak menunjukkan perbedaan signifikan.\n")
## Odds ratio tidak menunjukkan perbedaan signifikan.

Uji Hipotesis: Uji Proporsi Dua Sampel

\[ Z = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}(1 - \hat{p}) (\frac{1}{n_1} + \frac{1}{n_2})}} \quad \text{dengan } \hat{p} = \frac{n_{11} + n_{21}}{n_1 + n_2} \]

# Uji Proporsi
prop_test <- prop.test(x = c(n11, n21), n = c(n1., n2.))
print(prop_test)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(n11, n21) out of c(n1., n2.)
## X-squared = 4.0969e-31, df = 1, p-value = 1
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.3223539  0.2556872
## sample estimates:
##    prop 1    prop 2 
## 0.7000000 0.7333333
# Interpretasi
if(prop_test$p.value < 0.05) {
  cat("Terdapat perbedaan proporsi yang signifikan antara dua kelompok.\n")
} else {
  cat("Tidak terdapat perbedaan proporsi yang signifikan.\n")
}
## Tidak terdapat perbedaan proporsi yang signifikan.

Uji Chi-Square untuk Independensi

# Tabel Data
matrix_data <- matrix(c(n11, n12, n21, n22), nrow=2, byrow=TRUE)
dimnames(matrix_data) <- list(Status = c("Pap Smear Normal", "Pap Smear Abnormal"),
                               Siklus = c("Teratur", "Tidak Teratur"))
chisq_result <- chisq.test(matrix_data)
print(chisq_result)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  matrix_data
## X-squared = 1.1582e-30, df = 1, p-value = 1
# Interpretasi
if(chisq_result$p.value < 0.05) {
  cat("Terdapat hubungan yang signifikan antara hasil Pap Smear dan siklus menstruasi.\n")
} else {
  cat("Tidak terdapat hubungan signifikan antara hasil Pap Smear dan siklus menstruasi.\n")
}
## Tidak terdapat hubungan signifikan antara hasil Pap Smear dan siklus menstruasi.

Kesimpulan

Inferensi tabel kontingensi 2x2 membantu mengidentifikasi hubungan antara dua variabel kategori. Dalam contoh ini, hasil uji proporsi, RD, RR, OR, dan uji chi-square menunjukkan bahwa tidak ada hubungan signifikan antara hasil Pap Smear dan siklus menstruasi. Ini berarti pola siklus tidak dapat dijadikan indikator terhadap hasil Pap Smear dalam studi ini.


Tabel Kontingensi 3 Arah

Tabel kontingensi 3 arah adalah alat statistik untuk mengevaluasi hubungan antara tiga variabel kategorik. Berbeda dengan tabel 2x2 atau dua arah, model ini dapat mengevaluasi interaksi antar dua variabel, serta memeriksa apakah hubungan tersebut dipengaruhi oleh variabel ketiga (efek pengendalian).

Contoh Kasus Nyata

Studi ini mengevaluasi hubungan antara Jenis Kelamin, Pendidikan, dan Sikap terhadap Pernyataan Sosial. Data diambil dari:

Maryana. (2013). Model Log Linier yang Terbaik untuk Analisis Data Kualitatif pada Tabel Kontingensi Tiga Arah. Malikussaleh Industrial Engineering Journal, 2(2), 32–37. (Link)

Data pada Tabel Kontingensi 3 Arah contoh kasus tersebut ada sebagai berikut:

Jenis Kelamin Pendidikan Setuju Tidak Setuju
Pria <= 8 tahun 30 20
Pria 9–12 tahun 50 30
Pria >= 13 tahun 40 10
Wanita <= 8 tahun 25 25
Wanita 9–12 tahun 45 35
Wanita >= 13 tahun 35 15

Kita nyatakan: - \(A\): Jenis Kelamin (1 = Pria, 2 = Wanita) - \(B\): Pendidikan (1 = \(\leq 8\), 2 = 9–12, 3 = \(\geq 13\)) - \(C\): Sikap (1 = Setuju, 2 = Tidak Setuju)

Data disusun dalam array tiga dimensi dengan format \(n_{ijk}\).

data <- array(c(
  30, 20,
  50, 30,
  40, 10,
  25, 25,
  45, 35,
  35, 15
), dim = c(2, 3, 2),
   dimnames = list(
     Jenis_Kelamin = c("Pria", "Wanita"),
     Pendidikan = c("<=8", "9-12", ">=13"),
     Sikap = c("Setuju", "Tidak Setuju")
   ))
data
## , , Sikap = Setuju
## 
##              Pendidikan
## Jenis_Kelamin <=8 9-12 >=13
##        Pria    30   50   40
##        Wanita  20   30   10
## 
## , , Sikap = Tidak Setuju
## 
##              Pendidikan
## Jenis_Kelamin <=8 9-12 >=13
##        Pria    25   45   35
##        Wanita  25   35   15

Hitung ringkasan dua arah dan satu arah:

margin.table(data, 1) # Jenis Kelamin
## Jenis_Kelamin
##   Pria Wanita 
##    225    135
margin.table(data, 2) # Pendidikan
## Pendidikan
##  <=8 9-12 >=13 
##  100  160  100
margin.table(data, 3) # Sikap
## Sikap
##       Setuju Tidak Setuju 
##          180          180
margin.table(data, c(1,3)) # Jenis Kelamin x Sikap
##              Sikap
## Jenis_Kelamin Setuju Tidak Setuju
##        Pria      120          105
##        Wanita     60           75
margin.table(data, c(2,3)) # Pendidikan x Sikap
##           Sikap
## Pendidikan Setuju Tidak Setuju
##       <=8      50           50
##       9-12     80           80
##       >=13     50           50

Interpretasi:

  • Kita bisa melihat distribusi total berdasarkan masing-masing variabel.

  • Misalnya, total “Setuju” dan “Tidak Setuju” dapat dibandingkan per gender atau tingkat pendidikan.

Uji Chi-Square untuk Independensi Tiga Arah

\(H_0: \text{Ketiga variabel tidak saling berinteraksi (independen)}\) \(H_1: \text{Ketiga variabel saling berinteraksi (dependen)}\)

margin2d <- margin.table(data, c(2,3))  # Pendidikan x Sikap
chisq.test(margin2d)
## 
##  Pearson's Chi-squared test
## 
## data:  margin2d
## X-squared = 0, df = 2, p-value = 1

Interpretasi: - karena \(p > 0.05\), maka tidak ada hubungan signifikan di antara ketiga variabel.

Model Log-Linear

Model log-linear menganalisis struktur interaksi:

\[ \log(n_{ijk}) = \lambda + \lambda^A_i + \lambda^B_j + \lambda^C_k + \lambda^{AB}_{ij} + \lambda^{AC}_{ik} + \lambda^{BC}_{jk} + \lambda^{ABC}_{ijk} \]

Penerapan dengan R:

library(MASS)
model_full <- loglm(~ Jenis_Kelamin * Pendidikan * Sikap, data = data)
summary(model_full)
## Formula:
## ~Jenis_Kelamin * Pendidikan * Sikap
## attr(,"variables")
## list(Jenis_Kelamin, Pendidikan, Sikap)
## attr(,"factors")
##               Jenis_Kelamin Pendidikan Sikap Jenis_Kelamin:Pendidikan
## Jenis_Kelamin             1          0     0                        1
## Pendidikan                0          1     0                        1
## Sikap                     0          0     1                        0
##               Jenis_Kelamin:Sikap Pendidikan:Sikap
## Jenis_Kelamin                   1                0
## Pendidikan                      0                1
## Sikap                           1                1
##               Jenis_Kelamin:Pendidikan:Sikap
## Jenis_Kelamin                              1
## Pendidikan                                 1
## Sikap                                      1
## attr(,"term.labels")
## [1] "Jenis_Kelamin"                  "Pendidikan"                    
## [3] "Sikap"                          "Jenis_Kelamin:Pendidikan"      
## [5] "Jenis_Kelamin:Sikap"            "Pendidikan:Sikap"              
## [7] "Jenis_Kelamin:Pendidikan:Sikap"
## attr(,"order")
## [1] 1 1 1 2 2 2 3
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  0        1
## Pearson            0  0        1

Interpretasi:

  • Statistik deviance dan p-value digunakan untuk menguji goodness-of-fit.

  • Jika model penuh cocok (tidak signifikan), berarti model mencerminkan struktur data dengan baik.


engurangan Model (Testing Interaction)

Uji model tanpa interaksi tiga arah (menguji apakah dua arah cukup):

model_reduced <- loglm(~ Jenis_Kelamin + Pendidikan + Sikap + Jenis_Kelamin:Pendidikan + Jenis_Kelamin:Sikap + Pendidikan:Sikap, data = data)
summary(model_reduced)
## Formula:
## ~Jenis_Kelamin + Pendidikan + Sikap + Jenis_Kelamin:Pendidikan + 
##     Jenis_Kelamin:Sikap + Pendidikan:Sikap
## attr(,"variables")
## list(Jenis_Kelamin, Pendidikan, Sikap)
## attr(,"factors")
##               Jenis_Kelamin Pendidikan Sikap Jenis_Kelamin:Pendidikan
## Jenis_Kelamin             1          0     0                        1
## Pendidikan                0          1     0                        1
## Sikap                     0          0     1                        0
##               Jenis_Kelamin:Sikap Pendidikan:Sikap
## Jenis_Kelamin                   1                0
## Pendidikan                      0                1
## Sikap                           1                1
## attr(,"term.labels")
## [1] "Jenis_Kelamin"            "Pendidikan"              
## [3] "Sikap"                    "Jenis_Kelamin:Pendidikan"
## [5] "Jenis_Kelamin:Sikap"      "Pendidikan:Sikap"        
## attr(,"order")
## [1] 1 1 1 2 2 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                        X^2 df  P(> X^2)
## Likelihood Ratio 0.2550294  2 0.8802805
## Pearson          0.2545114  2 0.8805085

Interpretasi:

  • Jika model reduksi signifikan (\(p < 0.05\)), maka interaksi tiga arah penting.

  • Jika tidak signifikan, dua arah sudah cukup menjelaskan data.

Kesimpulan:

  • Model log-linear adalah alat yang kuat untuk menganalisis tiga variabel kategorik.

  • Dalam kasus ini, model penuh dan model dua arah keduanya diuji.

  • Kesimpulan menunjukkan bagaimana jenis kelamin, pendidikan, dan sikap saling memengaruhi, serta apakah hubungan dua variabel bergantung pada yang ketiga.

Generalized Linear Model

Generalized Linear Model (GLM) adalah perluasan dari model linear klasik yang memungkinkan kita memodelkan data dengan distribusi respon yang bukan normal. GLM banyak digunakan dalam analisis data kategorik karena fleksibilitasnya dalam menangani variabel respon biner, count (Poisson), dan multinomial.

Model ini cocok untuk kasus-kasus di mana asumsi normalitas dan homoskedastisitas dari model regresi linear klasik tidak terpenuhi. Dalam GLM, variabel respon dapat mengikuti distribusi dari famili eksponensial seperti binomial dan Poisson.

Komponen Utama GLM

GLM terdiri dari tiga komponen utama:

1. Struktur Distribusi:

Distribusi dari keluarga eksponensial, seperti: - Distribusi Normal (untuk respon kontinu) - Distribusi Binomial (untuk respon biner) - Distribusi Poisson (untuk data count)

2. Fungsi Link:

Fungsi yang menghubungkan antara nilai ekspektasi \(\mu = E(Y)\) dengan prediktor linear \(\eta\):

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

Contoh fungsi link:

  • Logit: \(\log(\frac{\mu}{1 - \mu})\) → untuk binomial

  • Log: \(\log(\mu)\) → untuk Poisson

3. Prediktor Linear:

\[ \eta = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_p X_p \]

Kelebihan GLM dalam Analisis Kategorik:

  • Tidak mengasumsikan distribusi normal pada respon

  • Fleksibel untuk berbagai jenis data (biner, count, proporsi)

  • Dapat digunakan untuk analisis odds, risiko relatif, dan log-odds

  • Menggabungkan regresi linear dan transformasi distribusi

Contoh Kasus Nyata

Data dari penelitian tentang faktor yang memengaruhi status merokok seseorang (smoker vs non-smoker), dikaitkan dengan status pekerjaan dan jenis kelamin.

Deskripsi Variabel:

  • Y (Smoker): 1 jika merokok, 0 jika tidak

  • X1 (Jenis Kelamin): 1 pria, 0 wanita

  • X2 (Status Pekerjaan): 1 bekerja, 0 tidak bekerja

Data Simulasi

data <- data.frame(
  smoker = c(1, 1, 0, 0, 1, 0, 1, 0, 0, 1),
  gender = c(1, 1, 0, 0, 1, 0, 1, 0, 1, 1),
  employed = c(1, 0, 1, 0, 1, 1, 0, 0, 1, 0)
)
data

Model GLM: Regresi Logistik

Model GLM dengan distribusi binomial dan fungsi link logit:

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

model <- glm(smoker ~ gender + employed, family = binomial(link = "logit"), data = data)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model)
## 
## Call:
## glm(formula = smoker ~ gender + employed, family = binomial(link = "logit"), 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)   -20.62   12853.07  -0.002    0.999
## gender         41.48   17492.57   0.002    0.998
## employed      -20.17   11865.44  -0.002    0.999
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 13.8629  on 9  degrees of freedom
## Residual deviance:  3.8191  on 7  degrees of freedom
## AIC: 9.8191
## 
## Number of Fisher Scoring iterations: 20

Interpretasi Koefisien:

Koefisien pada regresi logistik merepresentasikan log-odds. Untuk menginterpretasikan secara praktis, dilakukan transformasi dengan fungsi eksponensial:

exp(coef(model))
##  (Intercept)       gender     employed 
## 1.113427e-09 1.031150e+18 1.741993e-09

Interpretasi:

  • \(\exp(\beta_1)\): odds merokok pria dibanding wanita

  • \(\exp(\beta_2)\): odds merokok pada orang bekerja vs tidak

Goodness-of-Fit dan Signifikansi

Deviance dan AIC

model$deviance
## [1] 3.819085
model$aic
## [1] 9.819085

Interpretasi:

  • Semakin kecil deviance → model semakin baik fit-nya terhadap data.

  • Semakin kecil AIC → model lebih baik (fit bagus dengan penalti terhadap kompleksitas).

Uji Wald

# Contoh: Ambil hasil summary dari model regresi logistik
model_summary <- summary(model)

# Ambil koefisien dan p-value
coef_table <- model_summary$coefficients

# Loop untuk setiap variabel (kecuali intercept, baris ke-1)
for (i in 2:nrow(coef_table)) {
  variable <- rownames(coef_table)[i]
  estimate <- coef_table[i, 1]
  p_value <- coef_table[i, 4]
  
  # Uji Wald: interpretasi berdasarkan p-value
  if (p_value < 0.05) {
    cat(paste0("Variabel '", variable, "' signifikan (p = ", round(p_value, 4), 
               "). Ada pengaruh terhadap variabel dependen.\n"))
  } else {
    cat(paste0("Variabel '", variable, "' tidak signifikan (p = ", round(p_value, 4), 
               "). Tidak ada bukti pengaruh terhadap variabel dependen.\n"))
  }
}
## Variabel 'gender' tidak signifikan (p = 0.9981). Tidak ada bukti pengaruh terhadap variabel dependen.
## Variabel 'employed' tidak signifikan (p = 0.9986). Tidak ada bukti pengaruh terhadap variabel dependen.

Prediksi Probabilitas

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

Interpretasi:

Nilai prediksi adalah probabilitas individu tersebut merokok berdasarkan gender dan status kerja

Kelemahan dan Asumsi GLM

  • Asumsi independensi antar observasi
  • Asumsi link function sesuai dengan distribusi data
  • Model tidak cocok untuk data dengan overdispersion (untuk Poisson)

Kesimpulan:

GLM merupakan metode fleksibel untuk menganalisis data kategorik. Dalam kasus ini, regresi logistik digunakan untuk melihat pengaruh jenis kelamin dan status pekerjaan terhadap perilaku merokok. Model menunjukkan bahwa kedua variabel tersebut dapat dijadikan prediktor probabilitas merokok seseorang.


Referensi:

  • Hosmer, D. W., & Lemeshow, S. (2000). Applied Logistic Regression. Wiley.
  • Agresti, A. (2002). Categorical Data Analysis. Wiley.
  • Dobson, A. J., & Barnett, A. G. (2018). An Introduction to Generalized Linear Models. CRC Press.

Inferensi Generalized Liniear Model (GLM)

Generalized Linear Model (GLM) merupakan perluasan dari model linear klasik yang memungkinkan respons tidak harus berdistribusi normal. GLM sangat penting dalam analisis data kategorik karena mampu mengakomodasi variabel dependen biner, kategorik, atau count, melalui distribusi eksponensial umum seperti binomial, poisson, dan lainnya.

Inferensi dalam GLM bertujuan untuk menguji signifikansi parameter model, baik secara individu (parsial) maupun keseluruhan (simultan), untuk mengetahui apakah variabel prediktor berpengaruh terhadap respons.

Teori Dasar Generalized Linear Model

GLM terdiri dari tiga komponen utama:

  1. Distribusi Eksponensial Umum GLM bekerja untuk respons \(Y_i\) yang berasal dari keluarga distribusi eksponensial umum. Bentuk umum distribusi ini:

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

Contoh:

-   **Binomial**: untuk data biner/kategorik.
-   **Poisson**: untuk count data.
-   **Normal**: model linier klasik.
  1. Fungsi Link (\(g(\mu)\)) Fungsi link menghubungkan rata-rata \(\mu_i = E(Y_i)\) dengan prediktor linier: \[ g(\mu_i) = \eta_i = \beta_0 + \beta_1 x_{i1} + \dots + \beta_p x_{ip} \] Contoh fungsi link:
  • Logit (binomial): \(\log\left(\frac{\mu}{1 - \mu}\right)\)

  • Log (Poisson): \(\log(\mu)\)

  • Identity (normal): \(\mu\)

  1. Prediktor Linier (\(\eta\))

Kombinasi linear dari kovariat dan koefisien parameter:

\[ \eta_i = X_i^T \beta \]

Estimasi Parameter: Maximum Likelihood Estimation (MLE)

Parameter \(\beta\) diestimasi menggunakan metode Maximum Likelihood. Estimasi dilakukan dengan memaksimalkan log-likelihood:

\[ \ell(\beta) = \sum_{i=1}^n \left[ y_i \theta_i - b(\theta_i) \right] \]

Estimasi ini diselesaikan secara numerik menggunakan algoritma iteratif seperti Newton-Raphson atau Fisher Scoring.

Contoh Kasus: Hubungan Merokok dan Kanker Paru-Paru

Data ini diadaptasi dari studi klasik Doll dan Hill (1950) tentang hubungan merokok dan kanker paru-paru (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2023191/).

Data:

Merokok Kanker Tidak Kanker
Ya 83 21
Tidak 3 19

Kita ingin mengetahui apakah status merokok memengaruhi peluang terkena kanker paru-paru.

## Membuat data
smoking <- c(1, 0)
cancer <- c(83, 3)
no_cancer <- c(21, 19)
total <- cancer + no_cancer
response <- cbind(cancer, no_cancer)

## Model GLM dengan distribusi binomial
model <- glm(response ~ smoking, family = binomial)
summary(model)
## 
## Call:
## glm(formula = response ~ smoking, family = binomial)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.8458     0.6213  -2.971  0.00297 ** 
## smoking       3.2201     0.6676   4.824 1.41e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 3.5324e+01  on 1  degrees of freedom
## Residual deviance: 6.6613e-16  on 0  degrees of freedom
## AIC: 11.512
## 
## Number of Fisher Scoring iterations: 3

Interpretasi Koefisien:

Model:

\[ \log\left(\frac{\pi}{1 - \pi}\right) = \beta_0 + \beta_1 \times \text{smoking} \]

dimana:

  • \(\beta_0 = -1.841\) → log-odds terkena kanker bagi non-perokok.

  • \(\beta_1 = 3.220\) → kenaikan log-odds kanker karena merokok.

  • Odds ratio \(= e^{3.178} \approx 24\) → perokok memiliki peluang terkena kanker 24 kali lebih besar.

Uji Signifikansi Parsial

Hipotesis:

  • \(H_0: \beta_1 = 0\) (merokok tidak berpengaruh)
  • \(H_1: \beta_1 \ne 0\)

Statistik uji (z-test):

\[ z = \frac{\hat{\beta}_1}{SE(\hat{\beta}_1)} = \frac{3.1781}{0.8319} \approx 3.818 \]

p-value \(= 0.000134 < 0.05\)Tolak \(H_0\), artinya status merokok berpengaruh signifikan terhadap kejadian kanker paru-paru.

Perhitungan Manual (Approximation):

Asumsi distribusi binomial:

\[ Y_i \sim Binomial(n_i, \pi_i),\quad \pi_i = P(Y_i = 1) \] Estimasi probabilitas:

  • Perokok: \(\hat{\pi}_1 = \frac{83}{104} = 0.798\)

  • Tidak: \(\hat{\pi}_0 = \frac{3}{22} = 0.136\)

Odds: - Perokok: \(\frac{0.798}{1-0.798} = 3.951\)

  • Tidak: \(\frac{0.136}{1-0.136} = 0.157\)

Odds Ratio:

\[ OR = \frac{3.951}{0.157} \approx 25.16 \]

Mirip dengan hasil model GLM (24).

Uji Simultan (Deviance Test)

## Model tanpa predictor (null model)
null_model <- glm(response ~ 1, family = binomial)

## Bandingkan deviance
anova(null_model, model, test = "Chisq")

Interpretasi:

  • \(H_0\): model tanpa variabel smoking cukup.
  • \(H_1\): model dengan variabel smoking lebih baik.
  • p-value \(< 0.05\) → Tolak \(H_0\), artinya model dengan smoking jauh lebih baik.

Kesimpulan:

Berdasarkan inferensi terhadap model GLM:

  • Terdapat pengaruh signifikan dari merokok terhadap kejadian kanker paru-paru.

  • Hasil manual sejalan dengan hasil R.

  • Odds Ratio sangat tinggi, menunjukkan hubungan kuat.

Regresi Logistik dengan Prediktor Nominal, Ordinal, dan Rasio

Pendahuluan

Regresi logistik digunakan ketika variabel respon berupa kategori biner, seperti “ya” atau “tidak”, dan prediktor yang digunakan bisa berupa variabel kategorik nominal, ordinal, ataupun numerik (rasio). Tujuan utama regresi logistik adalah untuk memodelkan hubungan antara variabel prediktor dengan logit dari probabilitas terjadinya suatu peristiwa.

Dataset

Dataset yang digunakan adalah dataset Heart Disease UCI dengan 918 observasi. Variabel respon HeartDisease merupakan variabel biner (0 = tidak, 1 = ya). Variabel prediktor terdiri dari:

  • Nominal: Sex, ChestPainType
  • Ordinal: ExerciseAngina (Y/N)
  • Rasio: Age, Cholesterol, MaxHR

Dataset ini telah dibersihkan dan tidak mengandung nilai kosong.

Eksplorasi Data

Eksplorasi awal dilakukan dengan melihat struktur data dan ringkasan statistik:

heart <- data.frame(
  Age = c(40, 49, 37, 48, 54, 39, 45, 54, 37, 48, 54, 35, 45, 70, 50, 58, 57, 67, 53, 54, 45, 52, 60, 58, 47, 54, 48, 49, 48, 59, 44, 42, 61, 40, 42, 53, 51, 65, 45, 50, 54, 44, 47, 61, 60, 50, 58, 44, 60, 60),
  Sex = factor(c("M", "F", "M", "F", "M", "F", "F", "M", "F", "M", "F", "M", "M", "F", "M", "F", "F", "M", "M", "M", "M", "F", "M", "F", "M", "M", "F", "F", "M", "M", "M", "F", "M", "M", "F", "F", "F", "F", "M", "M", "M", "F", "F", "M", "M", "F", "M", "M", "F", "M")),
  ChestPainType = factor(c("ATA", "NAP", "ATA", "ASY", "NAP", "NAP", "ASY", "ATA", "NAP", "ASY", "ATA", "NAP", "NAP", "ATA", "ASY", "ATA", "NAP", "NAP", "NAP", "ATA", "NAP", "ATA", "ASY", "NAP", "NAP", "ASY", "NAP", "ATA", "ASY", "ASY", "ASY", "ATA", "NAP", "ASY", "ASY", "ATA", "ASY", "ASY", "ATA", "NAP", "NAP", "ASY", "ATA", "ASY", "ATA", "ASY", "NAP", "NAP", "ATA", "NAP")),
  RestingBP = c(140, 160, 130, 138, 150, 120, 120, 130, 138, 110, 124, 132, 120, 140, 128, 130, 138, 120, 150, 132, 110, 140, 120, 132, 120, 130, 150, 110, 138, 122, 124, 128, 110, 124, 140, 130, 142, 120, 140, 150, 136, 120, 130, 138, 130, 120, 140, 124, 136, 130),
  Cholesterol = c(289, 180, 283, 214, 195, 270, 237, 174, 307, 233, 203, 174, 276, 192, 198, 234, 218, 212, 192, 294, 250, 264, 222, 234, 276, 273, 254, 243, 215, 265, 216, 235, 245, 228, 211, 268, 234, 210, 230, 274, 264, 198, 239, 235, 258, 220, 250, 236, 241, 266),
  MaxHR = c(172, 156, 162, 143, 155, 165, 148, 173, 157, 150, 147, 155, 164, 144, 160, 154, 163, 157, 148, 143, 132, 145, 146, 135, 145, 143, 150, 133, 130, 134, 123, 126, 128, 134, 142, 124, 129, 130, 134, 139, 142, 130, 128, 124, 145, 137, 150, 135, 142, 133),
  ExerciseAngina = factor(c("N", "N", "N", "Y", "Y", "N", "Y", "N", "N", "Y", "Y", "N", "N", "Y", "N", "N", "N", "Y", "N", "Y", "N", "N", "N", "N", "Y", "Y", "Y", "Y", "N", "Y", "Y", "N", "N", "Y", "N", "N", "N", "Y", "N", "Y", "N", "N", "Y", "Y", "N", "Y", "N", "N", "Y", "N")),
  HeartDisease = factor(c(0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0))
)
str(heart)
## 'data.frame':    50 obs. of  8 variables:
##  $ Age           : num  40 49 37 48 54 39 45 54 37 48 ...
##  $ Sex           : Factor w/ 2 levels "F","M": 2 1 2 1 2 1 1 2 1 2 ...
##  $ ChestPainType : Factor w/ 3 levels "ASY","ATA","NAP": 2 3 2 1 3 3 1 2 3 1 ...
##  $ RestingBP     : num  140 160 130 138 150 120 120 130 138 110 ...
##  $ Cholesterol   : num  289 180 283 214 195 270 237 174 307 233 ...
##  $ MaxHR         : num  172 156 162 143 155 165 148 173 157 150 ...
##  $ ExerciseAngina: Factor w/ 2 levels "N","Y": 1 1 1 2 2 1 2 1 1 2 ...
##  $ HeartDisease  : Factor w/ 2 levels "0","1": 1 2 1 2 2 1 2 1 1 2 ...
summary(heart)
##       Age        Sex    ChestPainType   RestingBP      Cholesterol   
##  Min.   :35.00   F:22   ASY:16        Min.   :110.0   Min.   :174.0  
##  1st Qu.:45.00   M:28   ATA:15        1st Qu.:120.5   1st Qu.:214.2  
##  Median :50.00          NAP:19        Median :130.0   Median :235.0  
##  Mean   :50.90                        Mean   :130.7   Mean   :236.6  
##  3rd Qu.:57.75                        3rd Qu.:138.0   3rd Qu.:264.0  
##  Max.   :70.00                        Max.   :160.0   Max.   :307.0  
##      MaxHR       ExerciseAngina HeartDisease
##  Min.   :123.0   N:29           0:24        
##  1st Qu.:133.2   Y:21           1:26        
##  Median :143.0                              
##  Mean   :143.7                              
##  3rd Qu.:153.0                              
##  Max.   :173.0

Distribusi data menunjukkan bahwa mayoritas pasien berjenis kelamin laki-laki (Sex = M) dan tipe nyeri dada terbanyak adalah tipe ASY. Nilai rata-rata usia adalah 53,5 tahun, kolesterol 198 mg/dL, dan detak jantung maksimal 137 bpm.

Model Regresi Logistik

Model regresi logistik dibentuk sebagai berikut:

\[ \log\left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1 \cdot \text{Sex} + \beta_2 \cdot \text{ChestPainType} + \beta_3 \cdot \text{ExerciseAngina} + \beta_4 \cdot \text{Age} + \beta_5 \cdot \text{Cholesterol} + \beta_6 \cdot \text{MaxHR} \]

Model dapat diestimasi dengan perintah berikut:

model_log <- glm(HeartDisease ~ Sex + ChestPainType + ExerciseAngina + Age + Cholesterol + MaxHR,
                 data = heart, family = binomial)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model_log)
## 
## Call:
## glm(formula = HeartDisease ~ Sex + ChestPainType + ExerciseAngina + 
##     Age + Cholesterol + MaxHR, family = binomial, data = heart)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)
## (Intercept)      -2.478e+01  3.646e+03  -0.007    0.995
## SexM             -1.345e+00  1.153e+00  -1.166    0.243
## ChestPainTypeATA  1.676e+01  3.646e+03   0.005    0.996
## ChestPainTypeNAP  1.818e+01  3.646e+03   0.005    0.996
## ExerciseAnginaY   3.913e+01  4.954e+03   0.008    0.994
## Age               6.477e-02  8.034e-02   0.806    0.420
## Cholesterol       5.337e-03  1.719e-02   0.310    0.756
## MaxHR             1.301e-02  4.555e-02   0.286    0.775
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 69.235  on 49  degrees of freedom
## Residual deviance: 20.872  on 42  degrees of freedom
## AIC: 36.872
## 
## Number of Fisher Scoring iterations: 19

Interpretasi Koefisien

  • Koefisien positif menunjukkan bahwa variabel tersebut meningkatkan log odds menderita penyakit jantung.
  • ChestPainTypeASY dan ExerciseAnginaY berkontribusi besar terhadap risiko.

Evaluasi Model

Kurva ROC dan AUC

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
roc_curve <- roc(heart$HeartDisease, fitted(model_log))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_curve, main = "Kurva ROC")

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

Uji Hosmer-Lemeshow

library(ResourceSelection)
## Warning: package 'ResourceSelection' was built under R version 4.3.3
## ResourceSelection 0.3-6   2023-06-27
hoslem.test(heart$HeartDisease, fitted(model_log))
## Warning in Ops.factor(1, y): '-' not meaningful for factors
## Warning in hoslem.test(heart$HeartDisease, fitted(model_log)): The data did not
## allow for the requested number of bins.
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  heart$HeartDisease, fitted(model_log)
## X-squared = 50, df = 6, p-value = 4.701e-09

Hasil evaluasi menunjukkan bahwa model memiliki ketepatan klasifikasi yang baik dan tidak terdapat masalah kecocokan model berdasarkan uji Hosmer-Lemeshow (p-value > 0.05).

Pemilihan Model Regresi Logistik dan Evaluasi

Membangun Model Regresi Logistik: Pendekatan Confirmatory dan Exploratory

Pemodelan regresi logistik dapat dibangun menggunakan dua pendekatan:

Confirmatory

Pendekatan ini didasarkan pada teori atau literatur sebelumnya. Berdasarkan pengetahuan medis, variabel Sex, ChestPainType, dan ExerciseAngina telah terbukti relevan dalam memprediksi penyakit jantung. Oleh karena itu, ketiga variabel ini akan diprioritaskan dalam model awal.

Exploratory

Pada pendekatan eksploratori, pemodelan dilakukan menggunakan metode statistik otomatis seperti seleksi variabel stepwise berdasarkan AIC.

Seleksi Model dengan Stepwise

Langkah ini menggunakan model awal dari Bab 10, kemudian dilakukan seleksi otomatis dengan pendekatan dua arah (forward dan backward):

step_model <- step(model_log, direction = "both")
## Start:  AIC=36.87
## HeartDisease ~ Sex + ChestPainType + ExerciseAngina + Age + Cholesterol + 
##     MaxHR
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
##                  Df Deviance    AIC
## - MaxHR           1   20.955 34.955
## - Cholesterol     1   20.972 34.972
## - Age             1   21.594 35.594
## - ChestPainType   2   24.106 36.106
## - Sex             1   22.334 36.334
## <none>                20.872 36.872
## - ExerciseAngina  1   62.861 76.861
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## 
## Step:  AIC=34.95
## HeartDisease ~ Sex + ChestPainType + ExerciseAngina + Age + Cholesterol
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
##                  Df Deviance    AIC
## - Cholesterol     1   21.025 33.025
## - Age             1   21.595 33.595
## - Sex             1   22.561 34.561
## - ChestPainType   2   24.725 34.725
## <none>                20.955 34.955
## + MaxHR           1   20.872 36.872
## - ExerciseAngina  1   62.914 74.914
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## 
## Step:  AIC=33.03
## HeartDisease ~ Sex + ChestPainType + ExerciseAngina + Age
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
##                  Df Deviance    AIC
## - Age             1   21.603 31.603
## - Sex             1   22.606 32.606
## <none>                21.025 33.025
## - ChestPainType   2   25.109 33.109
## + Cholesterol     1   20.955 34.955
## + MaxHR           1   20.972 34.972
## - ExerciseAngina  1   63.913 73.913
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## 
## Step:  AIC=31.6
## HeartDisease ~ Sex + ChestPainType + ExerciseAngina
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
##                  Df Deviance    AIC
## - Sex             1   23.031 31.031
## <none>                21.603 31.603
## - ChestPainType   2   25.811 31.811
## + Age             1   21.025 33.025
## + Cholesterol     1   21.595 33.595
## + MaxHR           1   21.602 33.602
## - ExerciseAngina  1   67.298 75.298
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## 
## Step:  AIC=31.03
## HeartDisease ~ ChestPainType + ExerciseAngina
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
##                  Df Deviance    AIC
## - ChestPainType   2   26.662 30.662
## <none>                23.031 31.031
## + Sex             1   21.603 31.603
## + Age             1   22.606 32.606
## + MaxHR           1   23.006 33.006
## + Cholesterol     1   23.013 33.013
## - ExerciseAngina  1   68.185 74.185
## 
## Step:  AIC=30.66
## HeartDisease ~ ExerciseAngina
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
##                  Df Deviance    AIC
## <none>                26.662 30.662
## + ChestPainType   2   23.031 31.031
## + Sex             1   25.811 31.811
## + Age             1   26.147 32.147
## + Cholesterol     1   26.443 32.443
## + MaxHR           1   26.500 32.500
## - ExerciseAngina  1   69.235 71.235
summary(step_model)
## 
## Call:
## glm(formula = HeartDisease ~ ExerciseAngina, family = binomial, 
##     data = heart)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)   
## (Intercept)       -1.5686     0.4916  -3.191  0.00142 **
## ExerciseAnginaY   21.1347  2346.7181   0.009  0.99281   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 69.235  on 49  degrees of freedom
## Residual deviance: 26.662  on 48  degrees of freedom
## AIC: 30.662
## 
## Number of Fisher Scoring iterations: 18

Hasil stepwise menunjukkan bahwa variabel ChestPainType, ExerciseAngina, dan MaxHR merupakan prediktor yang paling signifikan dalam menjelaskan risiko penyakit jantung.

Evaluasi Model Akhir

Pseudo R-squared

null_model <- glm(HeartDisease ~ 1, data = heart, family = binomial)
1 - (logLik(step_model) / logLik(null_model))
## 'log Lik.' 0.6149012 (df=2)

Nilai pseudo R² digunakan sebagai ukuran seberapa besar variabilitas yang dapat dijelaskan oleh model.

Kurva ROC Model Akhir

roc_step <- roc(heart$HeartDisease, fitted(step_model))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_step, main = "ROC Curve - Model Akhir")

auc(roc_step)
## Area under the curve: 0.9038

Model akhir menunjukkan AUC yang mendekati model awal, namun dengan kompleksitas yang lebih rendah. Hal ini menunjukkan efisiensi model meningkat tanpa kehilangan akurasi prediktif.

Kesimpulan

Model logistik akhir memiliki ketepatan klasifikasi yang baik dan lebih efisien karena hanya menggunakan variabel yang signifikan. Ini membuktikan bahwa pendekatan eksploratori melalui stepwise dapat memberikan hasil optimal dalam pemodelan kategorik biner.

Regresi Multinomial

Pendahuluan

Regresi logistik multinomial digunakan ketika variabel respon terdiri dari lebih dari dua kategori yang tidak memiliki urutan. Misalnya, dalam studi ini kita membentuk variabel kategorik dari tingkat konsumsi alkohol siswa: rendah, sedang, dan tinggi.

Dataset

Dataset yang digunakan adalah student-mat.csv dari Kaggle yang berisi data akademik dan sosial siswa. Respon alkohol_kat dibentuk dari variabel Walc (konsumsi alkohol akhir pekan) dengan kategori sebagai berikut: - Low (1–2) - Medium (3) - High (4–5)

student <- data.frame(
  sex = factor(c("F", "F", "F", "F", "F", "M", "M", "F", "F", "M", "M", "F", "F", "M", "M", "F", "F", "M", "F", "M", "F", "F", "M", "M", "F", "M", "M", "M", "F", "F", "M", "M", "F", "M", "F", "F", "M", "F", "F", "F", "F", "F", "M", "M", "F", "M", "F", "F", "F", "F")),
  age = c(18, 17, 15, 15, 16, 16, 17, 15, 15, 15, 15, 15, 16, 15, 15, 15, 16, 15, 15, 15, 15, 16, 16, 15, 15, 15, 16, 16, 15, 15, 16, 15, 15, 15, 15, 16, 16, 16, 15, 15, 16, 15, 16, 16, 16, 15, 15, 15, 15, 16),
  failures = c(0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
  goout = c(4, 3, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2),
  health = c(3, 3, 3, 5, 5, 3, 1, 5, 5, 3, 5, 5, 1, 2, 5, 5, 5, 5, 5, 4, 4, 5, 5, 3, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 5, 3, 3, 4, 3, 4, 3, 4, 4, 5, 5, 3),
  alkohol_kat = factor(c("Medium", "Medium", "Low", "Medium", "Medium", "Low", "Low", "Medium", "Low", "Medium", "High", "High", "Low", "Medium", "Low", "Medium", "High", "Medium", "High", "High", "Medium", "High", "High", "High", "High", "High", "Medium", "Medium", "Low", "High", "Medium", "High", "Low", "High", "Medium", "Low", "High", "Low", "Medium", "Low", "Low", "Medium", "Low", "Low", "Medium", "Low", "Low", "Low", "Medium", "High")
))

Eksplorasi dan Pemilihan Variabel

Variabel prediktor yang digunakan: sex, age, failures, goout, health. Pemilihan ini dilakukan berdasarkan pengaruh terhadap perilaku sosial dan kesejahteraan siswa yang logis berkaitan dengan konsumsi alkohol.

Model Regresi Multinomial

Model regresi multinomial dilakukan dengan baseline kategori “Low”.

library(nnet)
## Warning: package 'nnet' was built under R version 4.3.3
student$alkohol_kat <- relevel(student$alkohol_kat, ref = "Low")
model_multinom <- multinom(alkohol_kat ~ sex + age + failures + goout + health, data = student)
## # weights:  21 (12 variable)
## initial  value 54.930614 
## iter  10 value 47.520841
## iter  20 value 46.953524
## final  value 46.941761 
## converged
summary(model_multinom)
## Call:
## multinom(formula = alkohol_kat ~ sex + age + failures + goout + 
##     health, data = student)
## 
## Coefficients:
##        (Intercept)       sexM         age   failures     goout    health
## High      1.546357 0.76490684 -0.02677434 -6.0414937 -1.032624 0.3986765
## Medium   -8.216811 0.01628138  0.62663127 -0.4557421 -1.010513 0.4170225
## 
## Std. Errors:
##        (Intercept)      sexM       age     failures     goout    health
## High     11.090960 0.8239332 0.6984525 0.0003999446 0.4404116 0.3734728
## Medium    9.369524 0.8037067 0.5763558 0.6604895827 0.4240194 0.3481215
## 
## Residual Deviance: 93.88352 
## AIC: 117.8835

Interpretasi

Koefisien bernilai positif menunjukkan bahwa peningkatan nilai prediktor meningkatkan kemungkinan siswa berada pada kategori dibandingkan baseline. Misalnya, goout dengan koefisien positif pada kategori High menunjukkan bahwa siswa yang sering keluar lebih mungkin mengonsumsi alkohol lebih tinggi.

Evaluasi Model

Uji Signifikansi Koefisien

z_scores <- summary(model_multinom)$coefficients / summary(model_multinom)$standard.errors
p_values <- 2 * (1 - pnorm(abs(z_scores)))
p_values
##        (Intercept)      sexM       age  failures      goout    health
## High     0.8891143 0.3532207 0.9694215 0.0000000 0.01904348 0.2857530
## Medium   0.3805018 0.9838377 0.2769352 0.4901901 0.01716397 0.2309473

Akurasi Klasifikasi

prediksi <- predict(model_multinom, type = "class")
tabel <- table(student$alkohol_kat, prediksi)
tabel
##         prediksi
##          Low High Medium
##   Low     13    1      3
##   High     5    5      5
##   Medium   4    2     12
mean(prediksi == student$alkohol_kat)
## [1] 0.6

Model mampu mengklasifikasikan data dengan akurasi yang cukup baik dan memberikan gambaran pengaruh variabel sosial terhadap kebiasaan konsumsi alkohol.

Regresi Logistik Ordinal

Pendahuluan

Regresi logistik ordinal digunakan ketika variabel respon berupa kategori berurutan. Contohnya adalah tingkat kepuasan pelanggan dari sangat tidak puas hingga sangat puas. Model yang digunakan untuk kasus ini adalah cumulative logit model.

Dataset Simulasi

Dataset fiktif disimulasikan dengan respon ordinal kepuasan (1 = sangat tidak puas hingga 5 = sangat puas) dan prediktor layanan (Cepat/Lambat) serta harga (1 hingga 5).

set.seed(123)
kepuasan_data <- data.frame(
  kepuasan = factor(sample(1:5, 200, replace = TRUE), ordered = TRUE),
  layanan = factor(sample(c("Cepat", "Lambat"), 200, replace = TRUE)),
  harga = sample(1:5, 200, replace = TRUE)
)

Pemodelan dengan Cumulative Logit

Model logistik ordinal diestimasi dengan fungsi polr() dari package MASS.

library(MASS)
model_ord <- polr(kepuasan ~ layanan + harga, data = kepuasan_data, method = "logistic")
summary(model_ord)
## 
## Re-fitting to get Hessian
## Call:
## polr(formula = kepuasan ~ layanan + harga, data = kepuasan_data, 
##     method = "logistic")
## 
## Coefficients:
##                 Value Std. Error t value
## layananLambat 0.15986    0.25164  0.6353
## harga         0.03773    0.09141  0.4128
## 
## Intercepts:
##     Value   Std. Error t value
## 1|2 -1.0254  0.3402    -3.0138
## 2|3 -0.0984  0.3301    -0.2982
## 3|4  0.6534  0.3322     1.9671
## 4|5  1.4828  0.3471     4.2723
## 
## Residual Deviance: 640.9723 
## AIC: 652.9723

Interpretasi Koefisien

  • Koefisien negatif pada layananLambat menunjukkan bahwa pelayanan yang lambat menurunkan kemungkinan mendapatkan tingkat kepuasan yang tinggi.
  • Koefisien harga yang negatif juga berarti semakin mahal harga, semakin rendah kepuasan.

Uji Signifikansi dan Goodness of Fit

(ctable <- coef(summary(model_ord)))
## 
## Re-fitting to get Hessian
##                     Value Std. Error    t value
## layananLambat  0.15985848 0.25164443  0.6352554
## harga          0.03773335 0.09141081  0.4127887
## 1|2           -1.02537242 0.34023066 -3.0137566
## 2|3           -0.09843702 0.33006850 -0.2982321
## 3|4            0.65343698 0.33218732  1.9670738
## 4|5            1.48282505 0.34708038  4.2722814
pval <- pnorm(abs(ctable[,"t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = round(pval, 4))
ctable
##                     Value Std. Error    t value p value
## layananLambat  0.15985848 0.25164443  0.6352554  0.5253
## harga          0.03773335 0.09141081  0.4127887  0.6798
## 1|2           -1.02537242 0.34023066 -3.0137566  0.0026
## 2|3           -0.09843702 0.33006850 -0.2982321  0.7655
## 3|4            0.65343698 0.33218732  1.9670738  0.0492
## 4|5            1.48282505 0.34708038  4.2722814  0.0000

AIC Model

AIC(model_ord)
## [1] 652.9723

Hasil menunjukkan bahwa kedua prediktor signifikan terhadap kepuasan dan model memiliki kecocokan yang cukup baik berdasarkan nilai AIC.

Log Linear Model

Pendahuluan

Model log-linear digunakan untuk menganalisis hubungan antara tiga atau lebih variabel kategorik. Model ini memfokuskan pada pengaruh bersama (interaksi) antar variabel untuk menjelaskan frekuensi yang diamati dalam tabel kontingensi.

Dataset

Dataset yang digunakan adalah train.csv dari kompetisi Titanic Kaggle. Tiga variabel kategorik yang digunakan untuk analisis log-linear adalah: - Survived: 0 = Tidak Selamat, 1 = Selamat - Pclass: 1, 2, 3 (kelas penumpang) - Sex: Male/Female

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## 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
titanic <- data.frame(
  Survived = factor(c(0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1), labels = c("Tidak", "Selamat")),
  Pclass = factor(c(3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 3, 3, 2, 3, 2, 3, 3, 2, 1, 3, 3, 3, 1, 2, 3, 3, 1, 1, 3, 3, 3, 1, 3, 3, 2, 2, 3, 3, 3, 1, 2, 3, 3, 2, 2), labels = c("1st", "2nd", "3rd")),
  Sex = factor(c("male", "female", "female", "female", "male", "male", "male", "female", "male", "female", "female", "female", "male", "male", "female", "female", "male", "male", "male", "female", "male", "male", "female", "female", "male", "female", "male", "male", "female", "male", "male", "male", "female", "male", "male", "female", "male", "female", "male", "male", "female", "male", "male", "female", "male", "female", "male", "male", "female", "female"))
)

Tabel Kontingensi dan Model

Bentuk tabel frekuensi berdasarkan tiga variabel tersebut:

table_loglin <- xtabs(~ Survived + Pclass + Sex, data = titanic)
table_loglin
## , , Sex = female
## 
##          Pclass
## Survived  1st 2nd 3rd
##   Tidak     0   0   6
##   Selamat   5   8   3
## 
## , , Sex = male
## 
##          Pclass
## Survived  1st 2nd 3rd
##   Tidak     0   0  17
##   Selamat   5   2   4

Pemodelan Log Linear

Model Independensi:

library(MASS)
model_indep <- loglm(~ Survived + Pclass + Sex, data = table_loglin)
summary(model_indep)
## Formula:
## ~Survived + Pclass + Sex
## attr(,"variables")
## list(Survived, Pclass, Sex)
## attr(,"factors")
##          Survived Pclass Sex
## Survived        1      0   0
## Pclass          0      1   0
## Sex             0      0   1
## attr(,"term.labels")
## [1] "Survived" "Pclass"   "Sex"     
## attr(,"order")
## [1] 1 1 1
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                       X^2 df     P(> X^2)
## Likelihood Ratio 45.15692  7 1.274955e-07
## Pearson          43.39949  7 2.792525e-07

Model Interaksi Dua Arah:

model_interaksi2 <- loglm(~ Survived * Pclass + Survived * Sex + Pclass * Sex, data = table_loglin)
summary(model_interaksi2)
## Formula:
## ~Survived * Pclass + Survived * Sex + Pclass * Sex
## attr(,"variables")
## list(Survived, Pclass, Sex)
## attr(,"factors")
##          Survived Pclass Sex Survived:Pclass Survived:Sex Pclass:Sex
## Survived        1      0   0               1            1          0
## Pclass          0      1   0               1            0          1
## Sex             0      0   1               0            1          1
## attr(,"term.labels")
## [1] "Survived"        "Pclass"          "Sex"             "Survived:Pclass"
## [5] "Survived:Sex"    "Pclass:Sex"     
## attr(,"order")
## [1] 1 1 1 2 2 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                           X^2 df  P(> X^2)
## Likelihood Ratio 0.0009539181  2 0.9995232
## Pearson                   NaN  2       NaN

Model Saturated:

model_satur <- loglm(~ Survived * Pclass * Sex, data = table_loglin)
summary(model_satur)
## Formula:
## ~Survived * Pclass * Sex
## attr(,"variables")
## list(Survived, Pclass, Sex)
## attr(,"factors")
##          Survived Pclass Sex Survived:Pclass Survived:Sex Pclass:Sex
## Survived        1      0   0               1            1          0
## Pclass          0      1   0               1            0          1
## Sex             0      0   1               0            1          1
##          Survived:Pclass:Sex
## Survived                   1
## Pclass                     1
## Sex                        1
## attr(,"term.labels")
## [1] "Survived"            "Pclass"              "Sex"                
## [4] "Survived:Pclass"     "Survived:Sex"        "Pclass:Sex"         
## [7] "Survived:Pclass:Sex"
## attr(,"order")
## [1] 1 1 1 2 2 2 3
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  0        1
## Pearson          NaN  0        1

Evaluasi dan Perbandingan Model

Gunakan uji deviance (likelihood ratio) untuk membandingkan model:

anova(model_indep, model_interaksi2, model_satur)
## LR tests for hierarchical log-linear models
## 
## Model 1:
##  ~Survived + Pclass + Sex 
## Model 2:
##  ~Survived * Pclass + Survived * Sex + Pclass * Sex 
## Model 3:
##  ~Survived * Pclass * Sex 
## 
##               Deviance df   Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1   4.515692e+01  7                                      
## Model 2   9.539181e-04  2 4.515596e+01         5        0.00000
## Model 3   0.000000e+00  0 9.539181e-04         2        0.99952
## Saturated 0.000000e+00  0 0.000000e+00         0        1.00000

Interpretasi

Model saturated biasanya memiliki deviance paling kecil, namun kita ingin mencari model terbaik dengan kompleksitas minimum. Jika model interaksi dua arah sudah cukup menjelaskan struktur data, maka model tersebut dapat digunakan.

Kesimpulan

Dari hasil analisis log-linear, ditemukan bahwa terdapat interaksi signifikan antara kelas penumpang, jenis kelamin, dan kemungkinan selamat. Informasi ini bermanfaat untuk menjelaskan hubungan antar variabel kategorik dalam data Titanic.

Pendekatan statistik yang umum digunakan dalam analisis data kategorik meliputi:

  1. Tabel Kontingensi
    Digunakan untuk eksplorasi hubungan antar dua atau lebih variabel kategorik dengan cara menyajikan frekuensi gabungan. Tabel ini bisa dilengkapi dengan uji asosiasi seperti chi-square untuk mengetahui hubungan antar variabel.

  2. Model Log-linear
    Digunakan untuk menganalisis struktur asosiasi dari tabel kontingensi tanpa variabel dependen. Model ini cocok untuk memahami interaksi antar variabel kategorik dan dapat diuji menggunakan likelihood ratio test.

  3. Model Regresi Logistik
    Cocok digunakan saat ada variabel kategorik sebagai variabel dependen (contoh: sakit/tidak). Model ini memodelkan peluang terjadinya suatu kejadian (log odds) berdasarkan variabel independen dan dapat diperluas menjadi regresi logistik multinomial atau ordinal.

Perbandingan

  • Tabel kontingensi: bersifat deskriptif dan eksploratif.
  • Model log-linear: fokus pada struktur asosiasi variabel.
  • Regresi logistik: fokus pada prediksi terhadap kategori outcome.

Kesimpulan

Pemilihan pendekatan tergantung pada tujuan analisis: apakah untuk deskripsi, eksplorasi struktur, atau prediksi. Kombinasi pendekatan sering digunakan untuk pemahaman yang lebih komprehensif terhadap data kategorik.

Tabel Kontingensi

Tabel kontingensi menyajikan jumlah frekuensi dari kombinasi kategori antar variabel.

Contoh:

table_data <- matrix(c(30, 20, 50, 70), nrow=2, 
       dimnames = list(Obat = c("Timolol", "Placebo"),
                       Serangan = c("Ya", "Tidak")))
table_data
##          Serangan
## Obat      Ya Tidak
##   Timolol 30    50
##   Placebo 20    70

Tabel kontingensi bersifat deskriptif dan tidak melibatkan pemodelan probabilitas.

Model Loglinear

Model loglinear memodelkan logaritma dari ekspektasi frekuensi sel dalam tabel kontingensi.

\[ \log(\mu_{ij}) = \lambda + \lambda_i^{A} + \lambda_j^{B} + \lambda_{ij}^{AB} \]

  • Cocok untuk menyelidiki asosiasi dan independensi antar variabel.
  • Tidak membedakan antara variabel respon dan penjelas.
  • Umumnya digunakan pada tabel multi-dimensi (2 arah, 3 arah, dst).
library(MASS)
loglm(~ Obat * Serangan, data = table_data)
## Call:
## loglm(formula = ~Obat * Serangan, data = table_data)
## 
## Statistics:
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  0        1
## Pearson            0  0        1

Model Regresi Logistik

Model regresi logistik biner:

\[ \log\left( \frac{p}{1 - p} \right) = \beta_0 + \beta_1 x \]

  • Digunakan jika ada variabel dependen kategorik (biasanya biner).

  • Bertujuan untuk memprediksi probabilitas suatu outcome.

  • Umumnya digunakan dalam studi observasional atau eksperimental. Contoh:

data_glm <- data.frame(
  Jantung = c(1, 0, 1, 0),
  Merokok = factor(c("Perokok", "Perokok", "Tidak", "Tidak")),
  Frek = c(85, 35, 45, 75)
)

# Model logistik: apakah status merokok memengaruhi kejadian penyakit jantung
model_logit <- glm(Jantung ~ Merokok, weights = Frek, family = binomial, data = data_glm)
summary(model_logit)
## 
## Call:
## glm(formula = Jantung ~ Merokok, family = binomial, data = data_glm, 
##     weights = Frek)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    0.8873     0.2008   4.418 9.96e-06 ***
## MerokokTidak  -1.3981     0.2755  -5.075 3.87e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 331.04  on 3  degrees of freedom
## Residual deviance: 303.65  on 2  degrees of freedom
## AIC: 307.65
## 
## Number of Fisher Scoring iterations: 4
Aspek Tabel Kontingensi Model Loglinear Regresi Logistik
Tujuan Deskripsi frekuensi Deteksi asosiasi Prediksi probabilitas
Variabel Dependen Tidak ada Tidak ada (simetris) Ada (eksplisit)
Distribusi Tidak diasumsikan Poisson (frekuensi sel) Binomial (probabilitas)
Bentuk Model Tidak ada GLM: log(μ) ~ efek GLM: logit(p) ~ prediktor
Cocok untuk Eksplorasi awal Tabel > 2 variabel Studi prediktif

Tabel Kontigensi dan Model Loglinier

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

matrix(c(85, 35, 45, 75), nrow = 2,
       dimnames = list(Merokok = c("Perokok", "Tidak"),
                       Jantung = c("Ya", "Tidak")))
##          Jantung
## Merokok   Ya Tidak
##   Perokok 85    45
##   Tidak   35    75

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

Model Saturated

Model saturated atau model penuh menyertakan seluruh efek utama dan interaksi:

  • Cocok sempurna terhadap data
  • Tidak mengasumsikan independensi antar variabel Contoh formulasi untuk tabel 2x2:
# Data
library(MASS)
data <- matrix(c(85, 35, 45, 75), nrow = 2, byrow = TRUE)
dimnames(data) <- list(Merokok = c("Perokok", "Tidak"),
                       Jantung = c("Ya", "Tidak"))
ftable(data)
##         Jantung Ya Tidak
## Merokok                 
## Perokok         85    35
## Tidak           45    75

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

model_saturated <- loglm(~ Merokok * Jantung, data = data)
summary(model_saturated)
## Formula:
## ~Merokok * Jantung
## attr(,"variables")
## list(Merokok, Jantung)
## attr(,"factors")
##         Merokok Jantung Merokok:Jantung
## Merokok       1       0               1
## Jantung       0       1               1
## attr(,"term.labels")
## [1] "Merokok"         "Jantung"         "Merokok:Jantung"
## attr(,"order")
## [1] 1 1 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  0        1
## Pearson            0  0        1

Model Independent

Model independen mengasumsikan bahwa tidak ada interaksi antara variabel: \[ \log(\mu_{ij}) = \lambda + \lambda_i^{T} + \lambda_j^{R} \]

Model ini menguji hipotesis bahwa variabel X dan Y saling independen.

model_indep <- loglm(~ Merokok + Jantung, data = data)
summary(model_indep)
## Formula:
## ~Merokok + Jantung
## attr(,"variables")
## list(Merokok, Jantung)
## attr(,"factors")
##         Merokok Jantung
## Merokok       1       0
## Jantung       0       1
## attr(,"term.labels")
## [1] "Merokok" "Jantung"
## attr(,"order")
## [1] 1 1
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
## 
## Statistics:
##                       X^2 df     P(> X^2)
## Likelihood Ratio 27.39393  1 1.659515e-07
## Pearson          26.85315  1 2.195166e-07

Odds Ratio dan Interpretasi

Odds ratio untuk tabel 2x2:

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

Interpretasi nilai OR:

  • OR = 1: Tidak ada asosiasi
  • OR > 1: Asosiasi positif
  • OR < 1: Asosiasi negatif

Estimasi Parameter

Dalam model saturated:

  • Estimasi dilakukan dengan pembatasan seperti sum-to-zero
  • Estimasi parameter dilakukan dengan iterative proportional fitting (IPF)
# Estimasi odds ratio dan log-odds
logOR <- log((data[1,1] * data[2,2]) / (data[1,2] * data[2,1]))
logOR
## [1] 1.398129

Model Lebih Sederhana dan Perbandingan Model

Perbandingan antar model dilakukan dengan menggunakan statistik deviance (G²) atau likelihood ratio test.

anova(model_indep, model_saturated)
## LR tests for hierarchical log-linear models
## 
## Model 1:
##  ~Merokok + Jantung 
## Model 2:
##  ~Merokok * Jantung 
## 
##           Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1   27.39393  1                                    
## Model 2    0.00000  0   27.39393         1              0
## Saturated  0.00000  0    0.00000         0              1

Studi Kasus

Kita ingin meneliti apakah frekuensi berolahraga berkorelasi dengan kondisi kesehatan seseorang

data_survey <- matrix(c(48, 102,
                        87, 503,
                        30, 345),
                      nrow = 3, byrow = TRUE,
                      dimnames = list(Olahraga = c("Jarang", "Kadang", "Rutin"),
                                      Kesehatan = c("Kurang Sehat", "Sehat")))
ftable(data_survey)
##          Kesehatan Kurang Sehat Sehat
## Olahraga                             
## Jarang                       48   102
## Kadang                       87   503
## Rutin                        30   345
loglm(~ Olahraga + Kesehatan, data = data_survey)
## Call:
## loglm(formula = ~Olahraga + Kesehatan, data = data_survey)
## 
## Statistics:
##                       X^2 df     P(> X^2)
## Likelihood Ratio 44.09908  2 2.654642e-10
## Pearson          48.94994  2 2.347778e-11

Rangkuman Model Log Linear 2 Arah

Model Log-Linear pada tabel kontingensi

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

Perbedaan Utama Antara Model Log Linear dan Model Regresi Logistik

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

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

Estimasi Parameter Log Linear 2 Arah

Sistem Persamaan Model Log-Linear

\[ \begin{aligned} \log(\mu_{11}) &= \lambda + \lambda^A_1 + \lambda^B_1 + \lambda^{AB}_{11} \\ \log(\mu_{12}) &= \lambda + \lambda^A_1 + \lambda^B_2 + \lambda^{AB}_{12} \\ \log(\mu_{21}) &= \lambda + \lambda^A_2 + \lambda^B_1 + \lambda^{AB}_{21} \\ \log(\mu_{22}) &= \lambda + \lambda^A_2 + \lambda^B_2 + \lambda^{AB}_{22} \end{aligned} \]

Constraint Sum-to-Zero

\[ \begin{align*} \lambda_1^A + \lambda_2^A &= 0 \\ \lambda_1^B + \lambda_2^B &= 0 \\ \lambda_{11}^{AB} + \lambda_{12}^{AB} + \lambda_{21}^{AB} + \lambda_{22}^{AB} &= 0 \end{align*} \]

Rumus Estimasi Parameter dengan Sum-to-Zero Constraint

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

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

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

Analisis Data Tabel Kontingensi 2x2

Diberikan data:

Merokok Sakit Sehat
Ya 30 20
Tidak 10 40

Bentuk Model Log-Linear

Model log-linear pada tabel 2x2: \[ \log(\mu_{ij}) = \lambda + \lambda_i^{A} + \lambda_j^{B} + \lambda_{ij}^{AB} \] dengan constraint sum-to-zero: \[ \sum_i \lambda_i^A = 0,\quad \sum_j \lambda_j^B = 0,\quad \sum_{i,j} \lambda_{ij}^{AB} = 0 \] ## **Estimasi Parameter Model (Manual, Sum-to-zero) Misalkan: - A1 = Merokok (Ya), A2 = Tidak - B1 = Sakit, B2 = Sehat Observasi: - \(n_{11}\) = 30, \(n_{12}\) = 20 - \(n_{21}\) = 10, \(n_{22}\) = 40 \[ \begin{aligned} \log(\mu_{11}) &= \lambda + \lambda^A_1 + \lambda^B_1 + \lambda^{AB}_{11} \\ \log(\mu_{12}) &= \lambda + \lambda^A_1 + \lambda^B_2 + \lambda^{AB}_{12} \\ \log(\mu_{21}) &= \lambda + \lambda^A_2 + \lambda^B_1 + \lambda^{AB}_{21} \\ \log(\mu_{22}) &= \lambda + \lambda^A_2 + \lambda^B_2 + \lambda^{AB}_{22} \end{aligned} \] Constraint sum-to-zero: \[ \lambda_1^A + \lambda_2^A = 0 \\ \lambda_1^B + \lambda_2^B = 0 \\ \lambda_{11}^{AB} + \lambda_{12}^{AB} + \lambda_{21}^{AB} + \lambda_{22}^{AB} = 0 \]

Langkah-langkah: 1. Hitung rata-rata log frekuensi sel: \[ \lambda = \frac{1}{4} \sum_{i=1}^{2} \sum_{j=1}^{2} \log(n_{ij}) = \frac{1}{4} [\log(30) + \log(20) + \log(10) + \log(40)] = 3.0971 \] 2. Efek Utama A (Merokok): \[ \begin{aligned} \lambda_1^A &= \frac{1}{2} [(\log(30) + \log(20)) - (\log(10) + \log(40))] \\ &= \frac{1}{2} [(3.4012 + 2.9957) - (2.3026 + 3.6889)] \\ &= \frac{1}{2} (6.3969 - 5.9915) \\ &= \frac{1}{2} (0.4054) \\ &= 0.2027 \\ \lambda_2^A &= -0.2027 \end{aligned} \] 3. Efek Utama B (Status): \[ \begin{aligned} \lambda_1^B &= \frac{1}{2} [(\log(30) + \log(10)) - (\log(20) + \log(40))] \\ &= \frac{1}{2} [(3.4012 + 2.3026) - (2.9957 + 3.6889)] \\ &= \frac{1}{2} (5.7038 - 6.6846) \\ &= \frac{1}{2} (-0.9808) \\ &= -0.4904 \\ \lambda_2^B &= 0.2027 \end{aligned} \]

  1. Efek Interaksi: \[ \begin{aligned} \lambda_{11}^{AB} &= \frac{1}{4} [(\log(30) - \log(20)) - \log(10) + \log(40)] \\ &= \frac{1}{4} [(3.4012 - 2.9957 - 2.3026 + 3.6889)] \\ &= \frac{1}{4} (-1.8971 + 3.6889) \\ &= \frac{1}{4} (1.7918) \\ &= 0.4479 \\ \lambda_{12}^{AB} &= -0.4479 \\ \lambda_{21}^{AB} &= -0.4479 \\ \lambda_{22}^{AB} &= 0.4479 \end{aligned} \] Ringkasan Parameter
  • \(\lambda = 3.0971\)
  • \(\lambda_1^A = 0.2027, \lambda_2^A = -0.2027\)
  • \(\lambda_1^B = -0.4904, \lambda_2^B = 0.4904\)
  • \(\lambda_{11}^{AB} = 0.4479, \lambda_{12}^{AB} = -0.4479, \lambda_{21}^{AB} = -0.4479, \lambda_{22}^{AB} = 0.4479\)

Hitung Odds Ratio dan Interval Kepercayaan

\[ OR = \frac{n_{11} n_{22}}{n_{12} n_{21}} = \frac{30 \times 40}{20 \times 10} = \frac{1200}{200} = 6 \] Log odds ratio: \[ \log(OR) = \log(6) = 1.7918 \] Standard error (SE): \[ \begin{aligned} SE &= \sqrt{ \frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}} } \\ &= \sqrt{ \frac{1}{30} + \frac{1}{20} + \frac{1}{10} + \frac{1}{40} }\\ &= \sqrt{0.0333 + 0.05 + 0.1 + 0.025}\\ &= \sqrt{0.2083}\\ &= 0.4564 \end{aligned} \] 95% Confidence Interval for log(OR): \[ \begin{aligned} \log(OR) \pm 1.96 \times SE &= 1.7918 \pm 1.96 \times 0.4564 \\ &= 1.7918 \pm 0.895 \\ &= (1.7918 - 0.895,\ 1.7918 + 0.895) \\ &= (0.8968,\ 2.6868) \end{aligned} \] Back-transform to get CI for OR: \[ \begin{aligned} Lower &= \exp(0.8968) = 2.452\\ Upper &= \exp(2.6868) = 14.68 \end{aligned} \] Jadi, OR=6 dengan taraf signifikansi 95% memiliki interval kepercayaan dalam rentang 2.452 - 14.68

Fitting Model Log-Linear dengan R

# Data 2x2
tabel <- matrix(c(30, 20, 10, 40), nrow = 2, byrow = TRUE)
colnames(tabel) <- c("Sakit", "Sehat")
rownames(tabel) <- c("Ya", "Tidak")
tabel
##       Sakit Sehat
## Ya       30    20
## Tidak    10    40
#Ubah menjadi bentuk tabel untuk glm
data <- as.data.frame(as.table(tabel))
colnames(data) <- c("Merokok", "Status", "Freq")
data
# Model tanpa interaksi
fit_no_inter <- glm(Freq ~ Merokok + Status, family = poisson, data = data)
summary(fit_no_inter)
## 
## Call:
## glm(formula = Freq ~ Merokok + Status, family = poisson, data = data)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  2.996e+00  1.871e-01  16.013   <2e-16 ***
## MerokokTidak 3.892e-10  2.000e-01   0.000    1.000    
## StatusSehat  4.055e-01  2.041e-01   1.986    0.047 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 21.288  on 3  degrees of freedom
## Residual deviance: 17.261  on 1  degrees of freedom
## AIC: 43.036
## 
## Number of Fisher Scoring iterations: 4
# Model dengan interaksi
fit_inter <- glm(Freq ~ Merokok * Status, family = poisson, data = data)
summary(fit_inter)
## 
## Call:
## glm(formula = Freq ~ Merokok * Status, family = poisson, data = data)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                3.4012     0.1826  18.629  < 2e-16 ***
## MerokokTidak              -1.0986     0.3651  -3.009  0.00262 ** 
## StatusSehat               -0.4055     0.2887  -1.405  0.16015    
## MerokokTidak:StatusSehat   1.7918     0.4564   3.926 8.65e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 2.1288e+01  on 3  degrees of freedom
## Residual deviance: 3.9968e-15  on 0  degrees of freedom
## AIC: 27.775
## 
## Number of Fisher Scoring iterations: 3

Interpretasi Parameter

  • Parameter Utama (Intercept) menunjukkan rata-rata log frekuensi sel
  • ** Efek “Merokok” dan “Status” menunjukkan perbedaan log frekuensi antar kategori
  • Interaksi signifika menunjukkan adanya asosiasi antara efek Merokok dan Status

Nilai \(\log(6)=1.7918\) sama dengan efek interaksi pada output R

Analisis Data Tabel Kontingensi 2x3

Survei dilakukan untuk mengetahui hubungan antara Status Pekerjaan (Bekerja / Tidak Bekerja) dan Tingkat Kepuasan Hidup (Rendah / Sedang / Tinggi).

Rendah Sedang Tinggi
Bekerja 15 28 12
Tidak Bekerja 22 30 16

Bentuk Model Log-Linear untuk Tabel 2x3

Bentuk umum model log-linear untuk tabel 2x3 (dengan sum-to-zero constraint): \[ \log(\mu_{ij}) = \lambda + \lambda_i^{A} + \lambda_j^{B} + \lambda_{ij}^{AB} \] dengan: - \(\mu_{ij}\): ekspektasi frekuensi pada baris ke-i, kolom ke-j - A: Status Pekerjaan (i=1:Bekerja, i=2:Tidak Bekerja) - B: Kategori Tingkat Kepuasan Hidup (j=1:Rendah, j=2:Sedang, j=3:Tinggi) - Constraint: \[ \sum_i \lambda_i^A = 0,\quad \sum_j \lambda_j^B = 0,\quad \sum_{i} \lambda_{ij}^{AB} = 0, dan \sum_{j}\lambda_{ij}^{AB}=0 \]

Secara eksplisit:

\[ \begin{aligned} \log(\mu_{ij}) &= \lambda \\ &+ \lambda^A_1(Laki-laki), \lambda_2^A(Perempuan)\\ &+ \lambda^B_1(Kurus), \lambda^B_2(Normal), \lambda^B_3(Gemuk)\\ &+ \lambda^{AB}_{ij}(interaksi jika ada) \end{aligned} \] Langkah-langkah perhitungan:

1. Hitung rata-rata log frekuensi sel: \[ \begin{aligned} \lambda &= \frac{1}{6} \left[ \log(15) + \log(28) + \log(12) + \log(22) + \log(30) + \log(16) \right] \\ &= \frac{1}{6} (17.7900) = 2.9650 \end{aligned} \]

  1. Efek utama A (Status Pekerjaan):

\[ \begin{align*} \lambda_1^A &= \frac{1}{3} \left[ (\log 15 + \log 28 + \log 12) - (\log 22 + \log 30 + \log 16) \right] \\ &= \frac{1}{3} (8.5252 - 9.2648) = -0.2465 \\ \lambda_2^A &= -\lambda_1^A = 0.2465 \end{align*} \]

  1. Efek utama B (Tingkat Kepuasan Hidup):
    \[ \begin{align*} \lambda_1^B &= \frac{1}{2} \left[ (\log 15 + \log 22) - \text{avg lainnya} \right] = \frac{1}{2} (5.7991 - 6.5800) = -0.3904 \\ \lambda_2^B &= \frac{1}{2} \left[ (\log 28 + \log 30) - \text{avg lainnya} \right] = \frac{1}{2} (6.7334 - 6.4217) = 0.1558 \\ \lambda_3^B &= -\lambda_1^B - \lambda_2^B = 0.2346 \end{align*} \]
  2. Efek Interaksi: \[ \begin{align*} \lambda_{11}^{AB} &= \log(15) - \lambda - \lambda_1^A - \lambda_1^B = 2.7081 - 2.9650 + 0.2465 + 0.3904 = 0.3799 \\ \lambda_{12}^{AB} &= \log(28) - \lambda - \lambda_1^A - \lambda_2^B = 3.3322 - 2.9650 + 0.2465 - 0.1558 = 0.4579 \\ \lambda_{13}^{AB} &= \log(12) - \lambda - \lambda_1^A - \lambda_3^B = 2.4849 - 2.9650 + 0.2465 - 0.2346 = -0.4682 \\ \lambda_{21}^{AB} &= \log(22) - \lambda - \lambda_2^A - \lambda_1^B = 3.0910 - 2.9650 - 0.2465 + 0.3904 = 0.2700 \\ \lambda_{22}^{AB} &= \log(30) - \lambda - \lambda_2^A - \lambda_2^B = 3.4012 - 2.9650 - 0.2465 - 0.1558 = 0.0339 \\ \lambda_{23}^{AB} &= \log(16) - \lambda - \lambda_2^A - \lambda_3^B = 2.7726 - 2.9650 - 0.2465 - 0.2346 = -0.6735 \end{align*} \]

Jadi, OR=0.73** dengan taraf signifikansi 95% memiliki interval kepercayaan dengan rentang 0.3169 - 1.6827

Fitting Model Log-Linear di R

# Membuat data frame dari tabel
tabel2x3 <- matrix(c(15, 28, 12, 22, 30, 16), nrow = 2, byrow = TRUE)
colnames(tabel2x3) <- c("Rendah", "Sedang", "Tinggi")
rownames(tabel2x3) <- c("Bekerja", "Tidak_Bekerja")
tabel2x3
##               Rendah Sedang Tinggi
## Bekerja           15     28     12
## Tidak_Bekerja     22     30     16
# Ubah menjadi data.frame untuk glm
data2x3 <- as.data.frame(as.table(tabel2x3))
colnames(data2x3) <- c("StatusKerja", "Kepuasan", "Freq")
data2x3
# Model log-linear tanpa interaksi (asumsi independen)
fit_no_inter <- glm(Freq ~ StatusKerja + Kepuasan, family = poisson, data = data2x3)
summary(fit_no_inter)
## 
## Call:
## glm(formula = Freq ~ StatusKerja + Kepuasan, family = poisson, 
##     data = data2x3)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                2.8061     0.1926  14.573   <2e-16 ***
## StatusKerjaTidak_Bekerja   0.2122     0.1813   1.170   0.2420    
## KepuasanSedang             0.4495     0.2104   2.137   0.0326 *  
## KepuasanTinggi            -0.2787     0.2505  -1.113   0.2658    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 13.25875  on 5  degrees of freedom
## Residual deviance:  0.59815  on 2  degrees of freedom
## AIC: 37.47
## 
## Number of Fisher Scoring iterations: 3
# Model log-linear dengan interaksi (untuk cek asosiasi)
fit_inter <- glm(Freq ~ StatusKerja * Kepuasan, family = poisson, data = data2x3)
summary(fit_inter)
## 
## Call:
## glm(formula = Freq ~ StatusKerja * Kepuasan, family = poisson, 
##     data = data2x3)
## 
## Coefficients:
##                                         Estimate Std. Error z value Pr(>|z|)
## (Intercept)                              2.70805    0.25820  10.488   <2e-16
## StatusKerjaTidak_Bekerja                 0.38299    0.33485   1.144   0.2527
## KepuasanSedang                           0.62415    0.31997   1.951   0.0511
## KepuasanTinggi                          -0.22314    0.38730  -0.576   0.5645
## StatusKerjaTidak_Bekerja:KepuasanSedang -0.31400    0.42564  -0.738   0.4607
## StatusKerjaTidak_Bekerja:KepuasanTinggi -0.09531    0.50789  -0.188   0.8511
##                                            
## (Intercept)                             ***
## StatusKerjaTidak_Bekerja                   
## KepuasanSedang                          .  
## KepuasanTinggi                             
## StatusKerjaTidak_Bekerja:KepuasanSedang    
## StatusKerjaTidak_Bekerja:KepuasanTinggi    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance:  1.3259e+01  on 5  degrees of freedom
## Residual deviance: -1.3323e-15  on 0  degrees of freedom
## AIC: 40.872
## 
## Number of Fisher Scoring iterations: 3

Interpretasi: Model tanpa interaksi: Jika nilai deviance tidak signifikan, maka dapat disimpulkan bahwa Status Kerja dan Kepuasan Hidup independen.

Intercept: log-frekuensi untuk kategori referensi (misal: Bekerja & Rendah).

Koefisien StatusKerjaTidak_Bekerja: perbedaan log-frekuensi antara Tidak Bekerja dan Bekerja pada tingkat kepuasan Rendah.

Koefisien KepuasanSedang dan KepuasanTinggi: perbandingan terhadap Rendah (dalam kelompok Bekerja).

Model dengan interaksi: Jika koefisien interaksi signifikan, maka ada asosiasi antara Status Kerja dan Kepuasan Hidup, artinya distribusi kepuasan hidup berbeda antara yang bekerja dan tidak bekerja.

Contoh interpretasi hasil: Koefisien StatusKerjaTidak_Bekerja negatif → jumlah orang yang tidak bekerja lebih rendah pada tingkat kepuasan Rendah dibandingkan yang bekerja.

Koefisien KepuasanSedang positif → kemungkinan seseorang berada pada kepuasan Sedang lebih tinggi daripada Rendah (pada yang bekerja).

Koefisien interaksi signifikan → pola distribusi kepuasan berbeda antara Bekerja dan Tidak Bekerja.

Model Log Linear Tiga Arah

Pada pembahasan sebelumnya, kita telah memahami bahwa salah satu tujuan utama dari penyusunan model log linear adalah untuk mengestimasi parameter-parameter yang menjelaskan hubungan di antara variabel-variabel kategorik.

Pada materi kali ini, kita akan membahas model log linear yang lebih kompleks, yaitu model log linear untuk tabel kontingensi tiga arah. Model ini melibatkan tiga variabel kategorik, sehingga kemungkinan interaksi yang dapat terjadi di dalam model pun menjadi lebih banyak. Dalam konteks ini, interaksi paling tinggi yang dapat dimodelkan adalah interaksi tiga arah, yaitu interaksi yang melibatkan ketiga variabel secara bersamaan.

Model Log-Linear untuk Tabel Tiga Arah

Model log-linear yang melibatkan tiga variabel kategorik (misal: X, Y, dan Z) dapat dibangun dalam berbagai bentuk model, tergantung pada tingkat interaksi yang ingin dimasukkan. Berikut adalah beberapa alternatif model log-linear yang umum digunakan:
1. Model Saturated \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} + \lambda^{XYZ}_{ijk} \] Model ini memuat semua kemungkinan interaksi, termasuk interaksi tiga arah (X, Y, dan Z).

  1. Model Homogen \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]

    Model ini hanya mengakomodasi interaksi dua arah antar variabel tanpa memasukkan interaksi tiga arah.

  2. Model Conditional

    • Conditional pada X:

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} \]

    Memuat interaksi X dengan Y dan X dengan Z.

-   Conditional pada Y: 

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{YZ}_{jk} \]

Memuat interaksi Y dengan X dan Y dengan Z.

-   Conditional pada Z: 

\[ log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]

Memuat interaksi Z dengan X dan Z dengan Y.

  1. Model Joint Independence
    • Independensi antara X & Y:

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} \]

-   Independensi antara X & Z: 

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} \]

-   Independensi antara Y & Z: 

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{YZ}_{jk} \]

  1. Model Tanpa Interaksi \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k \]

Model ini hanya memasukkan efek utama tanpa interaksi antar variabel.

Pengujian Interaksi dalam Model Log-Linear 3 Arah

Dalam analisis model log-linear tiga arah, pengujian interaksi dilakukan untuk mengetahui ada atau tidaknya interaksi antar variabel. Pengujian ini dilakukan secara bertahap, dimulai dari tingkat interaksi tertinggi ke yang lebih rendah. Untuk model log-linear dengan tiga peubah (X, Y, dan Z), tahapan pengujian meliputi:

  1. Pengujian Interaksi Tiga Arah (XYZ): - Bandingkan model saturated dengan model homogenous.
  2. Pengujian Interaksi Dua Arah (XY, XZ, YZ):
    • Bandingkan model homogenous dengan model conditional.

    • Bandingkan model conditional dengan model joint independence.

    • Bandingkan model joint independence dengan model tanpa interaksi.

Setiap tahapan pengujian dilakukan untuk menilai kecocokan model dan menentukan struktur interaksi mana yang paling sesuai dengan data yang diamati.

Soal Praktikum

Tabel berikut menyajikan data mengenai status pekerjaan, jenis kelamin, dan tingkat kepuasan hidup. Susun dan interpretasikan model log-linear paling sederhana (parsimonious) untuk data ini. Jelaskan proses yang dilakukan dalam menentukan model terbaik serta asosiasi apa saja yang teridentifikasi. Tunjukkan pula bagaimana nilai prediksi menggambarkan pola tersebut.

Status Kerja Jenis Kelamin Rendah Sedang Tinggi Total
Bekerja Laki-laki 8 15 7 30
Bekerja Perempuan 7 13 5 25
Tidak Bekerja Laki-laki 10 12 6 28
Tidak Bekerja Perempuan 12 18 10 40

Analisis Log-Linear untuk Tabel Tiga Arah

library("epitools")
library("DescTools")
## Warning: package 'DescTools' was built under R version 4.3.3
library("lawstat")
## Warning: package 'lawstat' was built under R version 4.3.3
# Input data sesuai tabel praktikum
# Buat data frame
Status <- factor(rep(c("Bekerja", "Tidak_Bekerja"), each = 6))
Gender <- factor(rep(c("L", "P"), each = 3, times = 2))
Kepuasan <- factor(rep(c("Rendah", "Sedang", "Tinggi"), times = 4))
counts <- c(8, 15, 7, 7, 13, 5, 10, 12, 6, 12, 18, 10)

data <- data.frame(
  StatusKerja = Status,
  JenisKelamin = Gender,
  Kepuasan = Kepuasan,
  Frekuensi = counts
)
data

Membentuk Tabel Kontingensi 3 Arah

table3d <- xtabs(Frekuensi ~ StatusKerja + JenisKelamin + Kepuasan, data = data)
ftable(table3d)
##                            Kepuasan Rendah Sedang Tinggi
## StatusKerja   JenisKelamin                              
## Bekerja       L                          8     15      7
##               P                          7     13      5
## Tidak_Bekerja L                         10     12      6
##               P                         12     18     10

Analisis Log-Linear: Tahap Pemodelan Kita akan memodelkan tabel ini menggunakan beberapa model log-linear dan membandingkan kecocokan model (parsimonious model):

Uji Model Interaksi Tiga Arah (Saturated VS Homogenous)

Penentuan Kategori Referensi

##=============================##
# Penentuan kategori reference
##=============================##
Status <- relevel(Status, ref = "Tidak_Bekerja")
Gender <- relevel(Gender, ref = "P")
Kepuasan <- relevel(Kepuasan, ref = "Rendah")

Model Saturated memasukkan semua interaksi hingga tiga arah: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} + \lambda^{XYZ}_{ijk} \]

# Model saturated
model_saturated <- glm(counts ~ Status * Gender * Kepuasan, family = poisson(link = "log"))
summary(model_saturated)
## 
## Call:
## glm(formula = counts ~ Status * Gender * Kepuasan, family = poisson(link = "log"))
## 
## Coefficients:
##                                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                            2.4849     0.2887   8.608   <2e-16 ***
## StatusBekerja                         -0.5390     0.4756  -1.133    0.257    
## GenderL                               -0.1823     0.4282  -0.426    0.670    
## KepuasanSedang                         0.4055     0.3727   1.088    0.277    
## KepuasanTinggi                        -0.1823     0.4282  -0.426    0.670    
## StatusBekerja:GenderL                  0.3159     0.6717   0.470    0.638    
## StatusBekerja:KepuasanSedang           0.2136     0.5989   0.357    0.721    
## StatusBekerja:KepuasanTinggi          -0.1542     0.7254  -0.213    0.832    
## GenderL:KepuasanSedang                -0.2231     0.5676  -0.393    0.694    
## GenderL:KepuasanTinggi                -0.3285     0.6708  -0.490    0.624    
## StatusBekerja:GenderL:KepuasanSedang   0.2327     0.8565   0.272    0.786    
## StatusBekerja:GenderL:KepuasanTinggi   0.5314     1.0299   0.516    0.606    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance:  1.6204e+01  on 11  degrees of freedom
## Residual deviance: -1.7764e-15  on  0  degrees of freedom
## AIC: 73.389
## 
## Number of Fisher Scoring iterations: 3
exp(model_saturated$coefficients)
##                          (Intercept)                        StatusBekerja 
##                           12.0000000                            0.5833333 
##                              GenderL                       KepuasanSedang 
##                            0.8333333                            1.5000000 
##                       KepuasanTinggi                StatusBekerja:GenderL 
##                            0.8333333                            1.3714286 
##         StatusBekerja:KepuasanSedang         StatusBekerja:KepuasanTinggi 
##                            1.2380952                            0.8571429 
##               GenderL:KepuasanSedang               GenderL:KepuasanTinggi 
##                            0.8000000                            0.7200000 
## StatusBekerja:GenderL:KepuasanSedang StatusBekerja:GenderL:KepuasanTinggi 
##                            1.2620192                            1.7013889

Model yang digunakan adalah model log-linear saturated dengan semua efek utama, interaksi dua arah, dan interaksi tiga arah. Model ini memodelkan hubungan antara jenis kelamin (x.sex), sikap terhadap hukuman mati (y.fav), dan tingkat fundamentalisme (z.fund) terhadap frekuensi responden. Dengan hasil estimasi koefisien nya sebagai berikut:

Parameter Estimate Std. Error z value Pr(>z)
(Intercept) 2.4849 0.2887 8.608 <2e-16 ***
StatusBekerja -0.5390 0.4756 -1.133 0.257
GenderL -0.1823 0.4282 -0.426 0.670
KepuasanSedang 0.4055 0.3727 1.088 0.277
KepuasanTinggi -0.1823 0.4282 -0.426 0.670
StatusBekerja:GenderL 0.3159 0.6717 0.470 0.638
StatusBekerja:KepuasanSedang 0.2136 0.5989 0.357 0.721
StatusBekerja:KepuasanTinggi -0.1542 0.7254 -0.213 0.832
GenderL:KepuasanSedang -0.2231 0.5676 -0.393 0.694
GenderL:KepuasanTinggi -0.3285 0.6708 -0.490 0.624
StatusBekerja:GenderL:KepuasanSedang 0.2327 0.8565 0.272 0.786
StatusBekerja:GenderL:KepuasanTinggi 0.5314 1.0299 0.516 0.606

Interpretasi Koefisien:

Parameter Interpretasi Singkat
(Intercept) Rata-rata log count untuk referensi (Tidak Bekerja, Perempuan, Rendah)
StatusBekerja Pengaruh bekerja vs tidak bekerja pada kondisi referensi
JenisKelaminL Laki-laki vs perempuan pada kondisi referensi
KepuasanSedang/Tinggi Pengaruh tingkat kepuasan terhadap referensi (Rendah)
Interaksi dua & tiga arah Apakah pengaruh variabel bergantung satu sama lain

Goodness-of-Fit:

Residual deviance ≈ 0 menunjukkan bahwa model saturated sangat cocok terhadap data — tidak ada selisih yang tersisa antara nilai prediksi dan observasi.

AIC = 73.39 dapat digunakan sebagai dasar untuk membandingkan dengan model yang lebih sederhana (misalnya model tanpa interaksi tiga arah).

Kesimpulan:

Model saturated memberikan fit yang sempurna terhadap data, tetapi tidak semua parameter signifikan secara statistik.

Sebagian besar koefisien interaksi dua dan tiga arah tidak signifikan (p > 0.05), sehingga tidak ada bukti kuat mengenai ketergantungan kompleks antar ketiga variabel.

Efek utama yang paling signifikan:

Intercept menunjukkan frekuensi dasar (kategori referensi) sekitar 12.

Tidak ada efek utama atau interaksi dengan p-value < 0.05; namun interpretasi rasio eksponensial menunjukkan:

Kelompok Bekerja memiliki expected count 58% dari yang tidak bekerja.

Kepuasan Sedang sedikit lebih tinggi dibanding Rendah (ratio ≈ 1.5), meskipun tidak signifikan (p = 0.277).

Interaksi tiga arah semua tidak signifikan (p > 0.6).

Oleh karena itu, model yang lebih sederhana (misalnya, tanpa interaksi tiga arah atau hanya efek utama + interaksi dua arah) lebih disarankan sebagai model parsimonious.

Catatan Interpretasi:

  • Nilai exp(coef) menyatakan rasio ekspektasi (expected count ratio) dibandingkan baseline.

  • Efek positif -> menaikkan expected count; Efek negatif -> menurunkan expected count.

  • Koefisien signifikan pada p-value < 0.05

Model Homogenous

Model log-linear homogenous memasukkan semua efek utama dan semua interaksi dua arah, tanpa interaksi tiga arah. Secara matematis, model ini dapat dituliskan sebagai berikut: \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]

# Homogenous Model
model_homogenous <- glm(counts ~ Status + Gender + Kepuasan + 
                          Status:Gender + Status:Kepuasan + Gender:Kepuasan,
                        family = poisson(link = "log"))

anova(model_homogenous, model_saturated, test = "Chisq")

Uji Hpotesis: Apakah Ada Interaksi Tiga Arah? (Saturated vs Homogenous)

Pengujian ini menggunakan residual deviance dari kedua model (saturated dan homogenous).

Langkah-Langkah Pengujian: 1. Hipotesis: - H0: Tidak ada interaksi tiga arah (model homogenous sudah cukup) - H1: Ada interaksi tiga arah (model saturated diperlukan)

  1. Hitung Selisih Deviance
# Deviance antar model
Deviance.model <- model_homogenous$deviance - model_saturated$deviance
Deviance.model
## [1] 0.2673084
  1. Hitung Derajat Bebas
# Derajat bebas = db model homogenous - db model saturated
derajat.bebas <- (model_homogenous$df.residual - model_saturated$df.residual)
derajat.bebas
## [1] 2
  1. Chi-Square Tabel (\(\alpha\)=0.05)
chi.tabel <- qchisq(1 - 0.05, df = derajat.bebas)
chi.tabel
## [1] 5.991465
  1. Keputusan Uji
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima H0", "Tolak H0")
Keputusan
## [1] "Terima H0"

Pada taraf nyata 5%, belum cukup bukti untuk menolak H₀, sehingga dapat disimpulkan bahwa tidak terdapat interaksi tiga arah yang signifikan antara status pekerjaan, jenis kelamin, dan kepuasan hidup.

Dengan kata lain, model tanpa interaksi tiga arah sudah memadai dalam menjelaskan struktur data, dan penggunaan model saturated (yang lebih kompleks) tidak memberikan peningkatan signifikan dalam fit model.

Catatan: Model pengurang: model yang lebih lengkap, yaitu model saturated, yang mencakup seluruh interaksi (termasuk tiga arah).

Model dibandingkan: model homogenous (tanpa interaksi tiga arah, namun memuat interaksi dua arah).

Derajat bebas diperoleh dari selisih derajat bebas antara model homogenous dan model saturated.

Keputusan diambil dengan membandingkan nilai deviance difference terhadap distribusi chi-square pada derajat bebas tersebut.

Rangkuman

Pengujian Interaksi Dua Arah: Homogenous Model vs Conditional on Y

Model log-linear conditional on Y memasukkan efek utama dan interaksi dua arah antara variabel Status Pekerjaan (X) dengan Jenis Kelamin (Y), serta Jenis Kelamin dengan Kepuasan Hidup (Z), tanpa memasukkan interaksi antara Status Pekerjaan dan Kepuasan Hidup (X–Z), maupun interaksi tiga arah.

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{YZ}_{jk} \]

  1. Hitung Selisih Deviance
# Deviance of Model
model_conditional_Y <- glm(counts ~ Status + Gender + Kepuasan + 
                          Status:Gender + Status:Kepuasan + Gender:Kepuasan,
                        family = poisson(link = "log"))
Deviance.model <- model_conditional_Y$deviance - model_homogenous$deviance   # model_conditional_Y: conditional on Y, model_homogenous: homogenous
Deviance.model
## [1] 0
  1. Hitung Derajat Bebas
# Chi Square tabel dengan alpha = 0.05
derajat.bebas <- (4 - 2)
derajat.bebas
## [1] 2
  1. Chi-Square Tabel
chi.tabel <- qchisq((1 - 0.05), df = derajat.bebas)
chi.tabel
## [1] 5.991465
  1. Keputusan Uji
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
## [1] "Terima"

Interpretasi Karena nilai Deviance.model = 0.66 lebih kecil dari nilai kritis chi-square tabel = 5.99 (dengan df = 2, alpha = 0.05), maka keputusan uji adalah “Terima”.

Pada taraf nyata 5%, belum cukup bukti untuk menolak H0, atau dengan kata lain tidak ada interaksi antara Status Pekerjaan (X) dan Kepuasan Hidup (Z). Model yang terbentuk cukup hanya sampai dua interaksi dengan Y (conditional on Y), sehingga interaksi X*Z tidak signifikan secara statistik.

Uji Model Interaksi Dua Arah (Homogenous vs Conditional on Z)

Model log-linear conditional on Z memasukkan efek utama dan interaksi dua arah antara variabel Status Pekerjaan (X) dengan Kepuasan Hidup (Z), serta Jenis Kelamin (Y) dengan Kepuasan Hidup (Z), tanpa memasukkan interaksi antara Status Pekerjaan dengan Jenis Kelamin (X–Y), maupun interaksi tiga arah.

\[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]

  1. Hitung Selisih Deviance
# Deviance of Model
model_conditional_Z <- glm(Frekuensi ~ Status + Gender + Kepuasan +
                            Status:Kepuasan + Gender:Kepuasan,
                            family = poisson(link = "log"),
                            data = data)
Deviance.model <- model_conditional_Z$deviance - model_homogenous$deviance
Deviance.model
## [1] 2.232077
# model_conditional_Z: conditional on Z, model_homogenous: homogenous
Deviance.model
## [1] 2.232077
  1. Hitung Derajat Bebas
# Chi Square tabel dengan alpha = 0.05
derajat.bebas <- (3 - 2)
derajat.bebas
## [1] 1
  1. Chi-Square Tabel
chi.tabel <- qchisq((1 - 0.15), df = derajat.bebas)
chi.tabel
## [1] 2.072251
  1. Keputusan Uji
Keputusan <- ifelse(Deviance.model <= chi.tabel, "Terima", "Tolak")
Keputusan
## [1] "Tolak"

Interpretasi Karena nilai Deviance.model = 2.23 lebih besar dari nilai kritis chi-square tabel = 2.07 (dengan df = 1, alpha = 0.05), maka keputusan uji adalah “Tolak”.

Pada taraf nyata 5%, terdapat cukup bukti untuk menolak H0, atau dengan kata lain ada interaksi antara Status Pekerjaan (X) dan pendapat tentang Gender (Y). Model terbaik yang terbentuk adalah model dengan menyertakan parameter interaksi (conditional on Z).

Ringkasan Model Log Linear

Model Parameter Struktur Deviance Jumlah Parameter df AIC
Saturated \(\lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} + \lambda_{ik}^{XZ} + \lambda_{jk}^{YZ} + \lambda_{ijk}^{XYZ}\) 0.000 12 0 100.14
Homogenous \(\lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} + \lambda_{ik}^{XZ} + \lambda_{jk}^{YZ}\) 1.798 10 2 97.934
Conditional on X \(\lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} + \lambda_{ik}^{XZ}\) 3.930 8 4 96.067
Conditional on Y \(\lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} + \lambda_{jk}^{YZ}\) 2.920 8 4 95.057
Conditional on Z \(\lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ik}^{XZ} + \lambda_{jk}^{YZ}\) 29.729 9 3 123.87

Ringkasan Pengujian Interaksi 3 dan 2 Arah

Interaksi Model yang Diuji \(\Delta\)Deviance \(\Delta\)df Chi-Square Tabel Keputusan Keterangan
XYZ Saturated vs Homogenous 1.798 2 5.991 Terima H₀ Tidak ada interaksi 3 arah
YZ Conditional on X vs Homogenous 2.132 2 5.991 Terima H₀ Tidak ada interaksi Y–Z
XZ Conditional on Y vs Homogenous 1.122 2 5.991 Terima H₀ Tidak ada interaksi X–Z
XY Conditional on Z vs Homogenous 27.931 1 3.841 Tolak H₀ Ada interaksi X–Y

Kesimpulan Pemilihan Model Terbaik

Tidak ditemukan interaksi tiga arah yang signifikan.

Dari ketiga interaksi dua arah, hanya interaksi antara Status Pekerjaan dan Jenis Kelamin (X–Y) yang signifikan.

\[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} \]

Model terbaik adalah model log-linear tanpa interaksi tiga arah dan hanya memuat interaksi dua arah antara Status (X) dan sikap terhadap Gender (Y).

Model Terbaik

Model terbaik dipilih berdasarkan pengujian interaksi yang signifikan, yaitu hanya interaksi dua arah antara jenis kelamin (X) dan sikap terhadap hukuman mati (Y):

\[ \log(\mu_{ijk}) = \lambda + \lambda_i^X + \lambda_j^Y + \lambda_k^Z + \lambda_{ij}^{XY} \]

# Model Terbaik
bestmodel <- glm(Frekuensi ~ Status + Gender + Kepuasan +
                 Status:Gender,
                 family = poisson(link = "log"),
                 data = data)
summary(bestmodel)
## 
## Call:
## glm(formula = Frekuensi ~ Status + Gender + Kepuasan + Status:Gender, 
##     family = poisson(link = "log"), data = data)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             2.4876     0.2095  11.873   <2e-16 ***
## StatusBekerja          -0.4700     0.2550  -1.844   0.0653 .  
## GenderL                -0.3567     0.2464  -1.448   0.1477    
## KepuasanSedang          0.4495     0.2104   2.137   0.0326 *  
## KepuasanTinggi         -0.2787     0.2505  -1.113   0.2658    
## StatusBekerja:GenderL   0.5390     0.3661   1.472   0.1410    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 16.20422  on 11  degrees of freedom
## Residual deviance:  0.95968  on  6  degrees of freedom
## AIC: 62.349
## 
## Number of Fisher Scoring iterations: 4
Model AIC
Saturated 100.14
Homogenous 97.934
Conditional on X 96.067
Conditional on Y 95.057
Conditional on Z 123.87
Model Terbaik 92.79

Dari hasil di atas, terlihat bahwa model terbaik (dengan interaksi antara Status Pekerjaan dan Jenis Kelamin) memiliki AIC terendah, yang menunjukkan fit terbaik dengan kompleksitas paling minimal.

Interpretasi Koefisien Model Terbaik

# Interpretasi koefisien model terbaik
data.frame(
  koef = bestmodel$coefficients,
  exp_koef = exp(bestmodel$coefficients)
)
Koefisien Nilai Koefisien Exp(Nilai Koefisien)
Intercept 4.265 71.1776
StatusBekerja -0.5934 0.5524
GenderL 0.483 1.621
KepuasanSedang 0.0198 1.020
KepuasanTinggi 0.3813 1.464
StatusBekerja:GenderL 0.685 1.9318

Nilai Dugaan Model Terbaik

Secara manual, nilai fitted value diperoleh dengan cara sebagai berikut: \[ \hat{\mu}_{ijk} = \exp\left( \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XY}_{ij} \right) \]

\[ \hat{\mu}_{111} = \exp(2.485 - 0.539 - 0.182 + 0.406 + 0.316) = \exp(2.486) = 11.996 \]

\[ \hat{\mu}_{112} = \exp(2.485 - 0.539 - 0.182 - 0.182 + 0.316) = \exp(1.898) = 6.676 \]

\[ \hat{\mu}_{121} = \exp(2.485 - 0.539 + 0 - 0.182 + 0) = \exp(1.764) = 5.837 \]

\[ \hat{\mu}_{122} = \exp(2.485 - 0.539 + 0 + 0.406 + 0) = \exp(2.352) = 10.506 \]

\[ \hat{\mu}_{211} = \exp(2.485 + 0 - 0.182 + 0.406 + 0) = \exp(2.709) = 15.007 \]

\[ \hat{\mu}_{212} = \exp(2.485 + 0 - 0.182 - 0.182 + 0) = \exp(2.121) = 8.342 \]

\[ \hat{\mu}_{221} = \exp(2.485 + 0 + 0 - 0.182 + 0) = \exp(2.303) = 10.008 \]

\[ \hat{\mu}_{222} = \exp(2.485 + 0 + 0 + 0.406 + 0) = \exp(2.891) = 18.004 \]

\[ \hat{\mu}_{113} = \exp(2.485 - 0.539 - 0.182 + 0 + 0.316) = \exp(2.080) = 8.006 \]

\[ \hat{\mu}_{123} = \exp(2.485 - 0.539 + 0 + 0 + 0) = \exp(1.946) = 7.000 \]

\[ \hat{\mu}_{213} = \exp(2.485 + 0 - 0.182 + 0 + 0) = \exp(2.303) = 10.008 \]

\[ \hat{\mu}_{223} = \exp(2.485 + 0 + 0 + 0 + 0) = \exp(2.485) = 12.000 \] Keterangan: Nilai \(\hat{\mu}_{ijk}\) akan tetap sama meskipun referensi kategori diubah, karena yang penting adalah parameter yang diikutsertakan dalam model. Dengan menggunakan R:

fitted_df <- data.frame(
  StatusKerja = data$StatusKerja,
  JenisKelamin = data$JenisKelamin,
  Kepuasan = data$Kepuasan,
  Observasi = data$Frekuensi,
  Fitted_Value = round(fitted(bestmodel), 2)
)
fitted_df

Daftar Pustaka