Puji syukur ke hadirat Tuhan Yang Maha Esa atas limpahan rahmat, taufik, dan hidayah-Nya sehingga penulisan e-book Analisis Data Kategori: Konsep, Aplikasi, dan Implementasi ini dapat diselesaikan dengan baik dan tepat waktu.
E-book ini disusun sebagai bagian dari pembelajaran dan penguatan pemahaman dalam mata kuliah Analisis Data Kategori. Materi yang disajikan disusun secara sistematis, dimulai dari konsep dasar tabel kontingensi 2x2, ukuran asosiasi seperti odds ratio dan risk ratio, hingga pengembangan model statistik melalui pendekatan Generalized Linear Models (GLM), termasuk model logistik, multinomial, dan log-linear. Seluruh bab dilengkapi dengan ilustrasi data serta implementasi praktis menggunakan perangkat lunak R.
Dalam proses penyusunan ini, saya Gusti Ayu Anisa Eldina sebagai penulis ingin menyampaikan terima kasih yang sebesar-besarnya kepada semua pihak yang telah memberikan dukungan, baik secara langsung maupun tidak langsung. Secara khusus, penulis menyampaikan apresiasi dan penghargaan yang setinggi-tingginya kepada dosen pengampu mata kuliah Analisis Data Kategori, Bapak Dr. I Gede Nyoman Mindra Jaya, M.Si. yang telah membimbing, memberikan arahan, serta membuka wawasan penulis terhadap pentingnya penguasaan analisis data kategorik secara konseptual dan praktis.
Penulis menyadari bahwa karya ini masih jauh dari sempurna. Oleh karena itu, segala bentuk saran dan kritik yang membangun sangat penulis harapkan untuk penyempurnaan di masa mendatang. Besar harapan penulis bahwa e-book ini dapat menjadi referensi yang bermanfaat bagi mahasiswa, dosen, peneliti, dan praktisi yang ingin memperdalam pengetahuan dan keterampilan dalam menganalisis data kategorik.
Jatinangor, Juni 2025
Gusti Ayu Anisa Eldina
Data kategori (categorical data) adalah jenis data yang disusun dalam bentuk kategori atau kelompok diskrit. Nilai dari data ini tidak berbentuk angka kuantitatif yang dapat diukur secara langsung, melainkan menunjukkan label, klasifikasi, atau atribut dari suatu objek.
Contoh data kategori :
Jenis kelamin : laki-laki, perempuan
Status pekerjaan : bekerja, tidak bekerja
Preferensi transportasi : transportasi umum, kendaraan pribadi
Tingkat kepedulian lingkungan : peduli, acuh
Tujuan Analisis Data Kategori
Analisis data kategori memiliki berbagai tujuan penting dalam berbagai bidang penelitian dan aplikasi praktis. Tujuan utama dari analisis data kategori adalah untuk mengidentifikasi pola, menganalisis hubungan antarvariabel, serta mengembangkan model prediktif yang dapat membantu dalam pengambilan keputusan.
Salah satu tujuan utama dalam analisis data kategori adalah untuk menemukan pola atau tren yang mungkin ada dalam data. Dengan menganalisis kategori yang ada, kita dapat mengidentifikasi karakteristik atau kecenderungan tertentu yang berulang, yang dapat memberikan wawasan berharga mengenai fenomena yang sedang dipelajari. Misalnya, dalam analisis data preferensi konsumen, kita dapat mengidentifikasi pola pengelompokan berdasarkan kategori produk atau perilaku pembelian.
Analisis data kategori juga digunakan untuk memahami hubungan antarvariabel kategori yang ada dalam dataset. Hal ini memungkinkan untuk mengetahui bagaimana suatu kategori mempengaruhi kategori lainnya. Sebagai contoh, dalam studi kesehatan, kita dapat menganalisis hubungan antara kebiasaan merokok dan penyakit tertentu, di mana data kategori digunakan untuk melihat distribusi status merokok (ya/tidak) dengan kategori status kesehatan (sehat/sakit).
Data kategori sering digunakan dalam pengambilan keputusan. Dalam dunia bisnis dan pemasaran, misalnya, perusahaan dapat menggunakan analisis data kategori untuk mengetahui preferensi konsumen, yang selanjutnya dapat membantu dalam merancang strategi pemasaran. Selain itu, hasil analisis kategori dapat memberikan panduan mengenai keputusan yang lebih efektif, baik dalam kebijakan publik maupun dalam pengelolaan organisasi.
Model prediktif berbasis data kategori dapat membantu meramalkan hasil masa depan berdasarkan informasi yang ada. Dengan menggunakan teknik seperti regresi logistik atau pohon keputusan, kita dapat mengembangkan model yang memprediksi kategori outcome yang diinginkan. Contoh aplikasi dari model ini adalah memprediksi kemungkinan pelanggan membeli suatu produk berdasarkan kategori preferensi mereka.
Definisi dan Ruang Lingkup Analisis Data Kategori
Analisis data kategori mengacu pada teknik statistik yang digunakan untuk menganalisis data yang dibagi dalam kategori-kategori diskrit, baik yang bersifat nominal maupun ordinal. Analisis ini sangat berguna ketika variabel yang diamati tidak bersifat numerik atau kuantitatif, namun tetap perlu dianalisis untuk menemukan hubungan atau pola yang relevan.
Data kategori dapat dibedakan menjadi dua tipe utama, yaitu data nominal dan ordinal. Data nominal adalah kategori yang tidak memiliki urutan atau peringkat, seperti jenis kelamin (laki-laki/perempuan) atau warna (merah, biru, hijau). Sementara itu, data ordinal memiliki urutan atau peringkat, seperti tingkat pendidikan (SD, SMP, SMA, Perguruan Tinggi) atau penilaian (buruk, cukup, baik, sangat baik).
Data kategori juga dapat dibedakan berdasarkan jumlah kategori yang ada. Data biner terdiri dari dua kategori, seperti ya/tidak atau lulus/gagal. Sedangkan data multikategori melibatkan lebih dari dua kategori, seperti kategori penghasilan (rendah, menengah, tinggi) atau status pekerjaan (pns, swasta, wirausaha).
Perbedaan dengan Data Kuantitatif
Data kategori berbeda dari data kuantitatif dalam hal pengukuran dan analisis. Data kuantitatif biasanya terdiri dari nilai numerik yang dapat diukur dan dianalisis menggunakan operasi matematika. Sebaliknya, data kategori terdiri dari kategori-kategori diskrit yang tidak dapat dioperasikan secara langsung menggunakan metode matematis biasa. Oleh karena itu, analisis data kategori lebih banyak melibatkan teknik-teknik statistik non-parametrik, seperti uji chi-square, regresi logistik, dan analisis klaster.
Manfaat Analisis Data Kategori dalam Berbagai Bidang
Analisis data kategori memiliki berbagai manfaat di berbagai bidang, baik di dunia akademik maupun profesional. Beberapa manfaatnya antara lain adalah dalam bidang ilmu sosial, kesehatan, pemasaran, pendidikan, kebijakan publik, dan keamanan.
Dalam ilmu sosial dan psikologi, analisis data kategori digunakan untuk memahami hubungan antara faktor-faktor sosial atau psikologis, seperti pengaruh lingkungan terhadap perilaku individu. Misalnya, kategori status sosial ekonomi dapat dianalisis untuk melihat hubungannya dengan tingkat pendidikan atau perilaku sosial lainnya.
Di bidang kesehatan, analisis data kategori digunakan untuk mengidentifikasi faktor risiko penyakit dan menganalisis hubungan antara kategori gaya hidup dan status kesehatan. Misalnya, kategori kebiasaan makan dapat dianalisis untuk memprediksi kemungkinan seseorang terkena penyakit jantung.
Dalam pemasaran, analisis data kategori memungkinkan perusahaan untuk memahami preferensi konsumen berdasarkan kategori produk atau layanan yang mereka pilih. Hal ini dapat membantu dalam perancangan kampanye pemasaran yang lebih efektif, dengan menargetkan kategori konsumen tertentu.
Di bidang pendidikan, analisis data kategori digunakan untuk menganalisis hubungan antara faktor-faktor pendidikan, seperti jenis kelamin, status sosial ekonomi, dan prestasi akademik. Analisis ini juga dapat digunakan untuk menilai kebijakan pendidikan berdasarkan kategori hasil yang diinginkan, seperti kelulusan atau tingkat partisipasi.
Dalam kebijakan publik, analisis data kategori membantu dalam mengevaluasi kebijakan dan program-program pemerintah berdasarkan kategori-kategori tertentu, seperti tingkat kemiskinan, kesehatan masyarakat, atau kesetaraan gender. Analisis ini dapat memberikan wawasan penting mengenai dampak kebijakan terhadap kelompok-kelompok tertentu dalam masyarakat.
Di bidang keamanan dan kriminalitas, analisis data kategori dapat digunakan untuk memetakan jenis kejahatan berdasarkan kategori daerah, waktu, atau tipe pelaku. Ini membantu dalam merancang strategi pencegahan yang lebih efisien dan lebih tepat sasaran.
Desain Sampling dalam Analisis Data Kategori
Desain sampling adalah proses yang sangat penting dalam analisis data kategori, karena cara pengambilan sampel dapat memengaruhi hasil analisis dan kesimpulan yang ditarik. Ada dua pendekatan utama dalam desain sampling yang sering digunakan dalam analisis data kategori: prospective sampling dan retrospective sampling. Masing-masing memiliki karakteristik yang berbeda, tergantung pada tujuan penelitian dan jenis data yang tersedia.
Prospective sampling adalah pendekatan yang digunakan ketika data dikumpulkan secara aktif dan maju dalam waktu, biasanya dengan mengikuti sampel sepanjang waktu untuk mengamati perkembangan atau perubahan dalam kategori yang dianalisis. Metode ini sering digunakan dalam eksperimen dan studi kohort di mana sampel diobservasi dari awal hingga akhir untuk memeriksa efek atau hubungan antara variabel kategori. Contohnya pada Eksperimen Klinik, pasien secara acak dialokasikan untuk menerima obat baru atau plasebo, lalu diamati selama 6 bulan untuk mencatat apakah gejala penyakit membaik, memburuk, atau tetap.
Eksperimen adalah pendekatan di mana peneliti merancang situasi untuk menguji hipotesis atau efek tertentu pada kelompok sampel. Dalam eksperimen, peneliti mengontrol variabel-variabel tertentu untuk melihat bagaimana perubahan dalam satu variabel mempengaruhi variabel kategori lainnya. Contoh eksperimen dalam analisis data kategori adalah eksperimen pemasaran untuk melihat pengaruh berbagai iklan terhadap preferensi merek konsumen.
Studi kohort adalah desain penelitian yang melibatkan pemantauan sekelompok individu dari waktu ke waktu untuk melihat hubungan antara eksposur atau karakteristik kategori tertentu (seperti kebiasaan hidup) dan hasil tertentu (misalnya, status kesehatan). Studi ini bisa bersifat longitudinal, di mana data kategori seperti status kesehatan atau faktor risiko dikumpulkan pada berbagai titik waktu. Contohnya pada Kesehatan masyarakat, peneliti mengamati dua kelompok individu – satu kelompok dengan kebiasaan makan tinggi gula, dan satu kelompok dengan pola makan sehat. Kedua kelompok diikuti selama 5 tahun untuk melihat insiden penyakit diabetes tipe 2.
Retrospective sampling adalah pendekatan di mana data dikumpulkan setelah kejadian atau fenomena tertentu terjadi. Dalam metode ini, peneliti menganalisis data yang sudah ada untuk mengeksplorasi hubungan antara variabel kategori yang diamati dan hasil yang sudah tercatat. Pendekatan ini lebih berfokus pada kejadian masa lalu dan sering digunakan dalam studi kasus-kontrol atau studi kohort retrospektif. Contohnya pada Kecelakaan Kerja, setelah terjadi sejumlah kecelakaan di pabrik, peneliti menggunakan arsip HR untuk meninjau kembali jam kerja, jenis pelatihan keselamatan, dan departemen tempat para pekerja berada.
Studi kasus-kontrol adalah desain penelitian yang digunakan untuk mengidentifikasi faktor-faktor penyebab atau risiko suatu kejadian dengan membandingkan kelompok yang terkena kejadian (kasus) dengan kelompok yang tidak terkena kejadian (kontrol). Data kategori yang dikumpulkan dari kedua kelompok dibandingkan untuk menganalisis faktor yang memengaruhi kemungkinan terjadinya suatu kejadian atau kondisi. Contohnya pada Studi Keracunan Makanan, setelah kejadian keracunan di sebuah pesta pernikahan, orang-orang yang sakit (kasus) dan orang-orang yang hadir tetapi tidak sakit (kontrol) diwawancarai untuk mencatat makanan apa saja yang dikonsumsi, untuk mengidentifikasi penyebab potensial (misalnya salad telur, susu, daging olahan).
Studi kohort retrospektif adalah jenis penelitian yang mengumpulkan data dari kelompok individu yang sudah ada, dan kemudian menganalisis hubungan antara kategori eksposur masa lalu (misalnya, kebiasaan makan, kebiasaan merokok) dan outcome atau hasil kesehatan yang terjadi di masa depan. Peneliti melihat data yang sudah tercatat untuk mengevaluasi faktor risiko atau pengaruh dari kondisi tertentu pada perkembangan hasil yang relevan.
Desain Sampling | Waktu Pengambilan Data | Keuntungan | Kelemahan |
---|---|---|---|
Prospective Sampling | Data dikumpulkan sepanjang waktu | Menghasilkan data yang lebih akurat dan relevan dengan tujuan penelitian | Memerlukan waktu yang lebih lama dan biaya yang lebih tinggi |
Eksperimen | Data dikumpulkan selama eksperimen | Kontrol lebih baik terhadap variabel, memungkinkan untuk menetapkan hubungan sebab-akibat | Bisa terjadi bias seleksi atau keterbatasan kontrol terhadap faktor luar |
Studi Kohort | Data dikumpulkan selama periode waktu tertentu | Dapat memantau perkembangan jangka panjang dan hubungan antar variabel kategori | Sulit untuk mengontrol semua faktor yang dapat memengaruhi hasil |
Retrospective Sampling | Data dikumpulkan setelah kejadian | Lebih cepat dan murah, dapat menggunakan data yang sudah ada | Rentan terhadap bias recall dan keterbatasan data yang tersedia |
Studi Kasus-Kontrol | Data dikumpulkan setelah kejadian | Berguna untuk mengidentifikasi faktor risiko langka dan efisien | Tidak dapat menunjukkan hubungan sebab-akibat, hanya korelasi |
Studi Kohort Retrospektif | Data dikumpulkan dari catatan masa lalu | Lebih cepat dan biaya rendah dibandingkan studi kohort prospektif | Tergantung pada kualitas dan ketersediaan data yang sudah ada |
Pemilihan desain sampling yang tepat sangat bergantung pada tujuan penelitian, sumber daya yang tersedia, serta jenis dan karakteristik data kategori yang ingin dianalisis. Desain yang baik akan memastikan bahwa data yang dikumpulkan dapat memberikan hasil yang valid dan dapat diinterpretasikan dengan tepat.
Metode dalam Analisis Data Kategori
Beberapa metode umum dalam analisis data kategori meliputi :
Tabel Kontingensi : Menyajikan frekuensi pengamatan untuk kombinasi dua variabel kategori.
Uji Chi-Square (χ²) : Digunakan untuk menguji apakah terdapat hubungan antara dua variabel kategori.
Analisis Residual : Menilai kontribusi masing-masing sel dalam tabel kontingensi terhadap hasil uji chi-square.
Visualisasi : Seperti bar chart, mosaic plot, atau stacked bar chart untuk memperjelas distribusi dan hubungan kategori.
Pentingnya Analisis Data Kategori
Data kategori sangat umum ditemukan dalam riset sosial, kesehatan, pemasaran, ekologi, dan kebijakan publik. Analisis terhadap data kategori penting untuk :
Mengambil keputusan berbasis data
Mengidentifikasi perilaku atau pola preferensi
Menyusun kebijakan atau intervensi yang lebih tepat sasaran
Tabel kontingensi atau yang sering disebut tabulasi silang (cross tabulation atau cross classification) adalah tabel yang berisi data jumlah atau frekuensi atau beberapa klasifikasi (kategori). Tabel kontingensi 2 x 2 mewakili dua klasifikasi dari sekumpulan hitungan atau frekuensi. Baris mewakili dua klasifikasi dari satu variabel (misalnya hasil positif/hasil negatif) dan kolom mewakili dua klasifikasi dari variabel lain (misalnya intervensi/tidak ada intervensi). Metode ini dapat menjawab hubungan antara dua atau lebih variabel penelitian tetapi bukan hubungan sebab akibat. Semakin bertambah jumlah variabel yang ditabulasikan maka akan semakin kompleks interpretasinya. Berikut contoh format tabel kontingensi berukuran 2 x 2.
Dalam era perubahan iklim yang semakin nyata, perilaku masyarakat terhadap isu lingkungan menjadi perhatian utama. Salah satu tindakan nyata yang mendukung keberlanjutan lingkungan adalah penggunaan transportasi umum, yang dinilai lebih ramah lingkungan dibandingkan kendaraan pribadi. Namun, pertanyaan penting yang muncul adalah: apakah orang yang peduli terhadap isu lingkungan benar-benar memilih untuk menggunakan transportasi umum? Ataukah ada kesenjangan antara kesadaran dan tindakan?
Menjawab pertanyaan ini menjadi relevan, terutama di tengah upaya pemerintah dan organisasi lingkungan untuk mendorong penggunaan transportasi massal sebagai bagian dari strategi pengurangan emisi karbon. Dengan melihat keterkaitan antara kepedulian terhadap lingkungan dan penggunaan transportasi umum, kita dapat menilai sejauh mana sikap individu tercermin dalam perilaku sehari-hari.
Untuk itu, berikut ini disajikan simulasi data dari 500 responden untuk dianalisis dalam bentuk tabel kontingensi 2 × 2.
Peduli terhadap Lingkungan (+) | Acuh terhadap Lingkungan (-) | Total | |
---|---|---|---|
Menggunakan Transportasi Umum (+) | 260 | 80 | 340 |
Tidak Menggunakan Transportasi Umum (-) | 40 | 120 | 160 |
Total | 300 | 200 | 500 |
# Data tabel kontingensi
cont_table <- matrix(c(260, 80, 40, 120), nrow = 2, byrow = TRUE,
dimnames = list("Menggunakan Transportasi Umum" = c("Ya", "Tidak"),
"Kepedulian Lingkungan" = c("Peduli", "Acuh")))
cont_table
## Kepedulian Lingkungan
## Menggunakan Transportasi Umum Peduli Acuh
## Ya 260 80
## Tidak 40 120
Peluang bersama (joint probability) dalam teori peluang adalah peluang terjadinya dua atau lebih peristiwa secara bersamaan. Ini berbeda dengan peluang tunggal (single event probability) yang hanya mempertimbangkan peluang satu peristiwa. Peluang bersama membantu memahami seberapa besar kemungkinan beberapa kejadian akan terjadi sekaligus, dan sering digunakan dalam analisis data dan pengambilan keputusan.
Rumus : \[ P(A \cap B) = \frac{n(A \cap B)}{n} \]
## Kepedulian Lingkungan
## Menggunakan Transportasi Umum Peduli Acuh
## Ya 0.52 0.16
## Tidak 0.08 0.24
Peluang marginal adalah probabilitas sebuah variabel acak tanpa mempertimbangkan variabel acak lain. Rumus peluang marginal : \[ P(A) = \frac{n(A)}{n}, \quad P(B) = \frac{n(B)}{n} \]
marginal_prob_row <- rowSums(cont_table) / sum(cont_table)
marginal_prob_col <- colSums(cont_table) / sum(cont_table)
marginal_prob_row
## Ya Tidak
## 0.68 0.32
## Peduli Acuh
## 0.6 0.4
Apabila sebuah kejadian B terjadi lebih dahulu dan kemudian kejadian A dicari probabilitasnya terhadap pengaruh dari kejadian B, maka probabilitas dari kejadian A disebut sebagai probabilitas bersyarat, dinyatakan sebagai : \[ P(A|B) = \frac{P(A \cap B)}{P(B)} \] yaitu probabilitas terjadinya peristiwa A bersyarat B, adalah probabilitas terjadinya peristiwa A dan B secara bersama-sama dan probabilitas terjadinya peristiwa A dengan syarat peristiwa B terjadi lebih dulu.
## Kepedulian Lingkungan
## Menggunakan Transportasi Umum Peduli Acuh
## Ya 0.8666667 0.2666667
## Tidak 0.2000000 0.6000000
# Penyajian hasil dalam list
list(Peluang_Bersama = joint_prob, Peluang_Marginal_Baris = marginal_prob_row, Peluang_Marginal_Kolom = marginal_prob_col, Peluang_Bersyarat = conditional_prob)
## $Peluang_Bersama
## Kepedulian Lingkungan
## Menggunakan Transportasi Umum Peduli Acuh
## Ya 0.52 0.16
## Tidak 0.08 0.24
##
## $Peluang_Marginal_Baris
## Ya Tidak
## 0.68 0.32
##
## $Peluang_Marginal_Kolom
## Peduli Acuh
## 0.6 0.4
##
## $Peluang_Bersyarat
## Kepedulian Lingkungan
## Menggunakan Transportasi Umum Peduli Acuh
## Ya 0.8666667 0.2666667
## Tidak 0.2000000 0.6000000
Interpretasi |
---|
Berdasarkan hasil analisis data dari 500 responden, terlihat bahwa terdapat keterkaitan yang cukup kuat antara kepedulian terhadap isu lingkungan dan penggunaan transportasi umum. Sebagian besar responden (68%) menggunakan transportasi umum, dan mayoritas dari mereka (sekitar 86,67%) memiliki kepedulian terhadap lingkungan. Hal ini menunjukkan bahwa kesadaran terhadap pentingnya menjaga lingkungan mendorong individu untuk memilih moda transportasi yang lebih ramah lingkungan. Namun demikian, terdapat sekitar 20% responden yang meskipun peduli terhadap lingkungan, tetap memilih untuk tidak menggunakan transportasi umum. Fakta ini mengindikasikan adanya kesenjangan antara sikap dan tindakan, yang mungkin disebabkan oleh faktor eksternal seperti kenyamanan, aksesibilitas, atau efisiensi transportasi umum. Di sisi lain, sebanyak 60% dari responden yang tidak peduli terhadap lingkungan juga tidak menggunakan transportasi umum, yang menunjukkan konsistensi antara sikap dan perilaku dalam kelompok ini. Secara keseluruhan, data ini memperkuat pentingnya peran kepedulian lingkungan dalam mendorong perilaku pro-lingkungan, namun juga menyoroti perlunya dukungan infrastruktur dan kebijakan yang dapat menjembatani kesenjangan antara kesadaran dan praktik nyata. |
Ukuran asosiasi dalam tabel kontingensi digunakan untuk mengukur kekuatan dan arah hubungan antara dua variabel kategorik. Ukuran asosiasi yang umum digunakan yaitu Risk Difference, Relative Risk, Odds Ratio, dan Uji Chi-Square & Fisher’s Exact Test. Pengukuran ini penting dilakukan untuk menentukan efektifitas relatif dari perlakukan atau intervensi yang berbeda, mengidentifikasi faktor resiko potensial atau memprediksi hasil penelitian agar dapat membuat keputusan yang tepat terhadap sebuah kebijakan.
Beda Peluang adalah ukuran absolut dari efek dan dihitung dengan mengurangi risiko hasil pada individu yang terpapar (eksposur) dengan risiko hasil pada individu yang tidak terpapar (non-eksposur). Risk Difference (RD) dihitung dengan rumus :
\[ RD = \left( \frac{a_{11}}{a_{1.}} \right) - \left( \frac{a_{21}}{a_{2.}} \right) \]
dengan :
# Ambil nilai sel tabel untuk memudahkan perhitungan
a <- cont_table["Ya", "Peduli"] # a = 260
b <- cont_table["Ya", "Acuh"] # b = 80
c <- cont_table["Tidak", "Peduli"] # c = 40
d <- cont_table["Tidak", "Acuh"] # d = 120
# Total baris
a1_dot <- a + b # total baris 1 (Ya)
a2_dot <- c + d # total baris 2 (Tidak)
# Total kolom
a_dot1 <- a + c # total kolom 1 (Peduli)
a_dot2 <- b + d # total kolom 2 (Acuh)
# Risk Difference
risk1 <- a / a1_dot # Risiko di kelompok 1 (Ya)
risk2 <- c / a2_dot # Risiko di kelompok 2 (Tidak)
RD <- risk1 - risk2
RD
## [1] 0.5147059
Relative risk (risiko relatif) adalah rasio antara risiko kejadian suatu kejadian atau kondisi yang terjadi di antara dua kelompok yang dibandingkan, misalnya kelompok yang terpapar dengan kelompok yang tidak terpapar. Relative risk digunakan untuk mengukur seberapa besar risiko seseorang yang terpapar terkena suatu kondisi atau kejadian tertentu dibandingkan dengan risiko orang yang tidak terpapar. Dihitung dengan rumus :
\[ RR = \frac{\frac{a_{11}}{a_{1.}}}{\frac{a_{21}}{a_{2.}}} \]
Dengan :
## [1] 3.058824
Odds ratio (OR) adalah ukuran statistik yang membandingkan peluang terjadinya suatu hasil pada dua kelompok yang berbeda. OR digunakan untuk mengevaluasi hubungan antara dua faktor atau kejadian.
Rumus Odds : \[ O = \frac{P}{1 - P} \]
Rumus Odds Ratio : \[ OR = \frac{(a/c)}{(b/d)} = \frac{a \times d}{b \times c} \]
Dengan :
# Odds Ratio
odds1 <- a / b # Odds di kelompok 1
odds2 <- c / d # Odds di kelompok 2
OR <- odds1 / odds2
OR
## [1] 9.75
## $Risk_Difference
## [1] 0.5147059
##
## $Relative_Risk
## [1] 3.058824
##
## $Odds_Ratio
## [1] 9.75
Interpretasi |
---|
Berdasarkan hasil analisis ukuran asosiasi, ditemukan bahwa Risk Difference (RD) sebesar 0.5147 menunjukkan adanya selisih risiko sebesar 51,47% antara kelompok yang menggunakan transportasi umum dan kelompok yang tidak, dalam hal kepedulian terhadap lingkungan. Artinya, proporsi individu yang peduli lingkungan jauh lebih tinggi di antara pengguna transportasi umum dibandingkan dengan yang tidak menggunakannya. Selanjutnya, Relative Risk (RR) sebesar 3.06 mengindikasikan bahwa kemungkinan seseorang yang peduli lingkungan untuk menggunakan transportasi umum adalah sekitar tiga kali lebih besar dibandingkan mereka yang tidak peduli lingkungan. Sementara itu, Odds Ratio (OR) sebesar 9.75 memperkuat temuan ini, yang berarti bahwa odds (peluang relatif) seseorang yang peduli lingkungan untuk menggunakan transportasi umum adalah hampir 10 kali lebih tinggi dibandingkan dengan mereka yang acuh. Nilai-nilai ini menunjukkan adanya hubungan yang sangat kuat dan positif antara kepedulian terhadap lingkungan dan penggunaan transportasi umum, serta mengindikasikan bahwa kepedulian lingkungan merupakan faktor penting yang mendorong perilaku pro-lingkungan seperti memilih moda transportasi yang lebih berkelanjutan. |
Inferensi tabel kontingensi dua arah adalah proses pengambilan kesimpulan statistik mengenai hubungan atau asosiasi antara dua variabel kategorik berdasarkan data yang disusun dalam sebuah tabel kontingensi (tabel silang). Tujuan utamanya adalah untuk menentukan apakah terdapat ketergantungan (dependensi) antara kedua variabel tersebut di populasi, ataukah hubungan yang terlihat pada data hanya terjadi secara kebetulan. Inferensi dalam tabel kontingensi dua arah dapat dibagi menjadi dua kategori utama yaitu Estimasi & Pengujian Hipotesis.
Estimasi merupakan langkah penting dalam inferensi statistik yang bertujuan untuk memperkirakan parameter populasi berdasarkan informasi dari sampel. Dalam konteks tabel kontingensi dua arah, estimasi dilakukan untuk menilai proporsi, peluang, maupun ukuran asosiasi antar dua variabel kategorik. Estimasi ini dapat dibagi menjadi dua jenis utama :
Estimasi titik adalah pendekatan yang memberikan satu nilai spesifik sebagai dugaan terbaik terhadap parameter populasi. Contohnya dalam tabel kontingensi adalah estimasi proporsi suatu kategori atau peluang kejadian bersama.
\[ \hat{p} = \frac{x}{n} \]
Dengan :
# Data
a <- 260 # Ya & Peduli
b <- 40 # Tidak & Peduli
n_peduli <- a + b
# Estimasi titik proporsi
p_hat <- a / n_peduli
p_hat
## [1] 0.8666667
Selain proporsi, estimasi titik juga digunakan untuk distribusi peluang dan ukuran asosiasi yang telah dihitung sebelumnya.
Estimasi interval memberikan rentang nilai yang diyakini dengan tingkat kepercayaan tertentu mengandung nilai parameter populasi yang sebenarnya. Hal ini penting untuk memperhitungkan ketidakpastian dalam pengambilan sampel.
Rumus umum estimasi interval untuk proporsi :
\[ \hat{p} \pm z_{\alpha/2} \cdot \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}} \]
Dengan :
# Interval kepercayaan 95%
z <- 1.96 # z-score untuk 95%
se <- sqrt(p_hat * (1 - p_hat) / n_peduli)
lower <- p_hat - z * se
upper <- p_hat + z * se
c(lower, upper)
## [1] 0.8281994 0.9051339
## $Estimasi_Titik
## [1] 0.8666667
##
## $Estimasi_Interval
## [1] 0.8281994 0.9051339
Interpretasi |
---|
Berdasarkan hasil analisis, diperoleh estimasi titik proporsi pengguna transportasi umum di antara responden yang peduli terhadap isu lingkungan sebesar 0,867 atau 86,67%. Artinya, dari seluruh responden yang menunjukkan kepedulian terhadap lingkungan, sekitar 86 dari setiap 100 orang menggunakan transportasi umum. Lebih lanjut, melalui estimasi interval kepercayaan 95%, diperoleh rentang antara 0,828 hingga 0,905. Hal ini berarti, kita memiliki keyakinan sebesar 95% bahwa proporsi sebenarnya di populasi pengguna transportasi umum yang peduli lingkungan berada antara 82,8% hingga 90,5%. |
Dalam konteks analisis, setelah menyusun data ke dalam bentuk tabel kontingensi 2 × 2, langkah penting selanjutnya adalah melakukan uji hipotesis. Tujuannya adalah untuk menjawab pertanyaan :
Apakah terdapat hubungan yang signifikan antara dua variabel kategorik dalam populasi?
Apakah perbedaan proporsi antara dua kelompok bersifat kebetulan (by chance) atau signifikan secara statistik?
Tujuan Uji Hipotesis
Lebih lanjut, uji hipotesis pada tabel kontingensi 2 × 2 bertujuan untuk :
Menilai apakah terdapat keterkaitan (asosiasi) antara dua variabel kategorik.
Menentukan apakah perbedaan distribusi yang diamati cukup besar untuk menyimpulkan bahwa hubungan tersebut tidak terjadi secara acak.
Hipotesis Uji
Hipotesis nol dan alternatif untuk tabel 2 × 2 umumnya dirumuskan sebagai berikut :
Hipotesis Nol (H₀): Tidak ada asosiasi antara
kedua variabel (variabel bebas dan variabel respon bersifat
independen).
H0: Variabel A dan B tidak berhubungan
Hipotesis Alternatif (H₁): Terdapat asosiasi
antara kedua variabel (variabel bebas memengaruhi variabel
respon).
H1: Variabel A dan B berhubungan
Inferensi ini umumnya dilakukan melalui :
Uji Chi-Kuadrat → untuk menguji ada atau tidaknya asosiasi.
Uji Eksask Fisher → untuk ukuran sampel kecil.
Uji proporsi digunakan untuk membandingkan proporsi kejadian antara dua kelompok dalam sebuah tabel kontingensi 2 × 2. Uji ini berguna untuk menjawab apakah perbedaan proporsi antar kelompok terjadi secara kebetulan atau memiliki signifikansi statistik.
Hipotesis Uji
H₀ (Hipotesis Nol): Tidak ada perbedaan proporsi antar kelompok (p₁ = p₂)
H₁ (Hipotesis Alternatif): Terdapat perbedaan proporsi antar kelompok (p₁ ≠ p₂)
Rumus Estimasi Proporsi
Estimasi proporsi masing-masing kelompok: \[ \hat{p}_1 = \frac{n_{11}}{n_{1.}}, \quad \hat{p}_2 = \frac{n_{21}}{n_{2.}} \]
Proporsi gabungan (pooled): \[ \hat{p} = \frac{n_{11} + n_{21}}{n_{1.} + n_{2.}} \]
Statistik uji z: \[ z = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}(1 - \hat{p}) \left( \frac{1}{n_{1.}} + \frac{1}{n_{2.}} \right)}} \]
# Ambil nilai kejadian (+) dan total untuk tiap kelompok
kejadian_pos <- c(260, 40) # Pengguna transportasi umum
total_per_kelompok <- c(260 + 40, 80 + 120)
# Uji proporsi
prop_test <- prop.test(x = kejadian_pos, n = total_per_kelompok, correct = FALSE)
print(prop_test)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: kejadian_pos out of total_per_kelompok
## X-squared = 222.22, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.5991919 0.7341414
## sample estimates:
## prop 1 prop 2
## 0.8666667 0.2000000
Hasil uji proporsi dua sampel tanpa koreksi kontinuitas menunjukkan bahwa terdapat perbedaan yang signifikan antara proporsi penggunaan transportasi umum pada individu yang peduli terhadap lingkungan dibandingkan dengan yang acuh. Proporsi pengguna transportasi umum di kelompok yang peduli terhadap lingkungan mencapai 86,7%, sedangkan pada kelompok yang acuh hanya sebesar 20%. Selisih antara kedua proporsi tersebut terbukti signifikan secara statistik, dengan nilai uji χ² = 222,22, derajat kebebasan 1, dan p-value < 2.2 × 10⁻¹⁶, yang jauh lebih kecil dari tingkat signifikansi 0,05. Interval kepercayaan 95% untuk selisih proporsi berada dalam rentang [0,599; 0,734], yang tidak mencakup nol, sehingga memperkuat kesimpulan bahwa perbedaan proporsi ini bukanlah hasil dari variasi acak semata. Hasil ini menunjukkan bahwa terdapat asosiasi yang kuat antara kepedulian terhadap isu lingkungan dan perilaku penggunaan transportasi umum, yang mengindikasikan bahwa individu yang memiliki kesadaran lingkungan cenderung lebih konsisten dalam menerapkan tindakan ramah lingkungan dalam kehidupan sehari-hari, khususnya dalam hal memilih moda transportasi yang berkelanjutan. |
Pengertian Uji Asosiasi
Uji asosiasi bertujuan untuk mengetahui apakah terdapat hubungan yang signifikan antara dua variabel kategorik. Dalam konteks tabel kontingensi 2 × 2, uji ini sering digunakan untuk:
Ukuran Asosiasi yang Umum Digunakan
Risk Difference (RD)
Mengukur selisih risiko absolut antara dua kelompok.
\[ RD = \frac{a}{a + b} - \frac{c}{c + d} \] Standard Error untuk RD : \[ SE(RD) = \sqrt{\frac{\hat{p}_1(1 - \hat{p}_1)}{n_1} + \frac{\hat{p}_2(1 - \hat{p}_2)}{n_2}} \]
Statistik Uji Z untuk menilai signifikansi perbedaan : \[ Z = \frac{RD}{SE(RD)} \]
# Hitung Risk Difference dan uji Z
# Input data dari tabel kontingensi
a <- 260 # Peduli & Ya
b <- 80 # Acuh & Ya
c <- 40 # Peduli & Tidak
d <- 120 # Acuh & Tidak
# Ukuran sampel tiap kelompok
n1 <- a + b
n2 <- c + d
# Proporsi kejadian di masing-masing kelompok
p1 <- a / n1
p2 <- c / n2
# Risk Difference
RD <- p1 - p2
# Standard Error
SE_RD <- sqrt((p1 * (1 - p1)) / n1 + (p2 * (1 - p2)) / n2)
# Z-statistik
Z_RD <- RD / SE_RD
# Output hasil
list(
Risk_Difference = RD,
Standard_Error = SE_RD,
Z_statistic = Z_RD
)
## $Risk_Difference
## [1] 0.5147059
##
## $Standard_Error
## [1] 0.04124419
##
## $Z_statistic
## [1] 12.47948
Relative Risk (RR)
Mengukur perbandingan risiko antara dua kelompok.
\[ RR = \frac{\frac{a}{a + b}}{\frac{c}{c + d}} \]
Standard Error untuk log(RR):
\[ SE(\ln RR) = \sqrt{ \frac{1}{a} - \frac{1}{a + b} + \frac{1}{c} - \frac{1}{c + d} } \]
Statistik Uji Z :
\[ Z = \frac{\ln(RR)}{SE(\ln RR)} \]
# Relative Risk dan uji Z
# Proporsi kejadian
RR <- (a / (a + b)) / (c / (c + d))
# Standard Error log(RR)
SE_log_RR <- sqrt((1 / a) - (1 / (a + b)) + (1 / c) - (1 / (c + d)))
# Z-statistik
Z_RR <- log(RR) / SE_log_RR
# Output hasil
list(
Relative_Risk = RR,
SE_log_RR = SE_log_RR,
Z_statistic = Z_RR
)
## $Relative_Risk
## [1] 3.058824
##
## $SE_log_RR
## [1] 0.1401962
##
## $Z_statistic
## [1] 7.974755
Odds Ratio (OR)
Mengukur perbandingan odds kejadian antara dua kelompok.
\[ OR = \frac{a \cdot d}{b \cdot c} \]
Dengan :
- \(a\) : Jumlah individu yang
terpapar dan mengalami kejadian
- \(b\) : Jumlah individu yang terpapar
dan tidak mengalami kejadian
- \(c\) : Jumlah individu tidak
terpapar dan mengalami kejadian
- \(d\) : Jumlah individu tidak
terpapar dan tidak mengalami kejadian
Standard Error untuk log(OR) :
\[ SE(\ln OR) = \sqrt{ \frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d} } \]
Statistik Uji Z :
\[ Z = \frac{\ln(OR)}{SE(\ln OR)} \]
# Odds Ratio dan uji Z
OR <- (a * d) / (b * c)
# Standard Error log(OR)
SE_log_OR <- sqrt(1/a + 1/b + 1/c + 1/d)
# Z-statistik
Z_OR <- log(OR) / SE_log_OR
# Output hasil
list(
Odds_Ratio = OR,
SE_log_OR = SE_log_OR,
Z_statistic = Z_OR
)
## $Odds_Ratio
## [1] 9.75
##
## $SE_log_OR
## [1] 0.222889
##
## $Z_statistic
## [1] 10.21705
Hipotesis Uji Asosiasi
Berdasarkan hasil uji asosiasi pada tabel kontingensi 2 × 2, ketiga ukuran asosiasi—Risk Difference (RD), Relative Risk (RR), dan Odds Ratio (OR)—menunjukkan signifikansi yang kuat secara statistik. Nilai Risk Difference sebesar 0.5147 dengan standard error 0.0412 menghasilkan Z-statistik sebesar 12.48, yang jauh melebihi ambang nilai kritis pada taraf signifikansi umum (misalnya Z > 1.96 untuk α = 0.05). Hal ini menunjukkan adanya selisih risiko absolut yang signifikan antara kelompok yang peduli lingkungan dan yang tidak dalam hal penggunaan transportasi umum. Selanjutnya, Relative Risk (RR) sebesar 3.06 dengan standard error log(RR) 0.1402 menghasilkan Z-statistik sebesar 7.97, menegaskan bahwa risiko individu yang peduli lingkungan untuk menggunakan transportasi umum sekitar tiga kali lebih tinggi dibandingkan yang tidak peduli, dan perbedaan ini juga signifikan secara statistik. Terakhir, Odds Ratio (OR) sebesar 9.75 dengan standard error log(OR) 0.2229 dan Z-statistik sebesar 10.22 mengindikasikan bahwa odds penggunaan transportasi umum di antara individu yang peduli lingkungan hampir 10 kali lipat lebih besar dibandingkan mereka yang tidak peduli, dan hasil ini pun signifikan. Secara keseluruhan, ketiga ukuran asosiasi memperkuat kesimpulan bahwa terdapat hubungan yang signifikan secara statistik antara kepedulian terhadap lingkungan dengan perilaku penggunaan transportasi umum. |
Uji independensi adalah salah satu jenis uji hipotesis yang digunakan untuk menentukan apakah dua variabel kategori dalam tabel kontingensi berhubungan atau tidak, atau dengan kata lain, apakah dua variabel tersebut saling independen satu sama lain. Uji ini sangat berguna ketika kita ingin mengetahui apakah distribusi frekuensi suatu variabel dapat dijelaskan oleh variabel lain atau apakah kedua variabel tersebut saling mempengaruhi.
Tabel kontingensi adalah representasi dalam bentuk matriks yang menampilkan distribusi frekuensi dua variabel kategori. Pada umumnya, tabel kontingensi yang digunakan dalam uji independensi adalah tabel 2×2 atau lebih besar (misalnya 3×3, 2×3), di mana setiap sel berisi frekuensi observasi dari kombinasi kategori kedua variabel.
Tujuan Uji Independen
Tujuan utama dari uji independensi adalah untuk menguji hipotesis tentang ketergantungan atau independensi antara dua variabel. Dalam uji ini, kita akan membandingkan frekuensi observasi yang diharapkan (expected frequencies) dengan frekuensi yang diamati (observed frequencies) untuk menentukan apakah perbedaan antara keduanya cukup besar untuk menyimpulkan adanya hubungan yang signifikan.
Secara umum, uji independensi menggunakan hipotesis berikut:
Hipotesis Nol (H₀): Variabel pertama dan variabel kedua independen atau tidak ada hubungan antara kedua variabel tersebut.
Hipotesis Alternatif (H₁): Variabel pertama dan variabel kedua terkait atau ada hubungan antara kedua variabel tersebut.
Salah satu uji yang paling umum digunakan untuk menguji independensi dalam tabel kontingensi adalah Uji Chi-Square (χ²). Uji ini menghitung nilai statistik Chi-Square berdasarkan perbedaan antara frekuensi yang diamati dan frekuensi yang diharapkan, kemudian menguji apakah perbedaan tersebut cukup besar untuk menolak hipotesis nol.
Statistik Chi-Square:
\[ \chi^2 = \sum \frac{(O_i - E_i)^2}{E_i} \]
Dengan :
Frekuensi yang diharapkan (E) dihitung dengan rumus:
\[ E_i = \frac{( \text{Jumlah Baris i} ) \times ( \text{Jumlah Kolom j} )}{\text{Total Sampel}} \]
Kriteria Pengambilan Keputusan
Jika nilai p lebih kecil dari tingkat signifikansi (misalnya p<0.05), maka kita menolak hipotesis nol dan menyimpulkan bahwa ada hubungan yang signifikan antara kedua variabel, artinya kedua variabel tidak independen.
Jika nilai p lebih besar dari tingkat signifikansi (misalnya p>0.05), maka kita gagal menolak hipotesis nol dan menyimpulkan bahwa tidak ada hubungan yang signifikan antara kedua variabel, artinya kedua variabel independen.
# Uji Chi-Square (Uji Independensi)
Chi_Square <- chisq.test(cont_table, correct = FALSE)
print(Chi_Square)
##
## Pearson's Chi-squared test
##
## data: cont_table
## X-squared = 120.1, df = 1, p-value < 2.2e-16
Berdasarkan hasil uji Chi-Square, diperoleh nilai statistik χ2 = 120.1 dengan derajat bebas (df) sebesar 1 dan nilai p-value < 2.2e-16. Nilai p-value yang sangat kecil ini jauh berada di bawah tingkat signifikansi umum (misalnya α=0.05, sehingga hipotesis nol ditolak. Artinya, terdapat bukti yang sangat kuat untuk menyimpulkan adanya hubungan yang signifikan secara statistik antara kepedulian terhadap lingkungan dan penggunaan transportasi umum. Dengan kata lain, perilaku dalam menggunakan transportasi umum tidak bersifat independen terhadap tingkat kepedulian individu terhadap isu lingkungan. Hasil ini memperkuat bahwa sikap terhadap lingkungan berkaitan erat dengan keputusan seseorang dalam memilih moda transportasi yang lebih ramah lingkungan. |
Pendahuluan
Partisi Chi-Square adalah teknik yang digunakan setelah uji independensi Chi-Square menunjukkan hasil signifikan. Tujuannya adalah untuk mengidentifikasi kategori mana yang paling berkontribusi terhadap hubungan signifikan antara dua variabel kategorik. Pendekatan ini penting karena dalam tabel kontingensi berukuran lebih besar dari 2×2, kita perlu tahu dimensi mana yang menjadi sumber utama asosiasi.
Partisi Chi-Square didasarkan pada teori bahwa statistik Chi-Square total dapat dipecah menjadi beberapa bagian, sesuai dengan derajat bebasnya. Setiap bagian ini merepresentasikan kontribusi dari subkelompok tertentu dalam tabel.
⚠️ Konteks Penting
Konsep ini juga berkaitan dengan fenomena Simpson’s Paradox, yaitu kondisi ketika tren yang tampak dalam beberapa kelompok data bisa hilang atau bahkan terbalik jika data tersebut digabungkan.
Langkah-langkah Partisi Chi-Square
Lakukan uji Chi-Square pada keseluruhan tabel kontingensi (misal, 2×3 atau lebih).
Jika hasil signifikan, lanjutkan dengan memecah tabel menjadi tabel-tabel 2×2 sesuai subkelompok yang relevan
Hitung nilai Chi-Square pada masing-masing tabel 2×2.
Interpretasikan tabel mana yang paling berkontribusi pada hasil signifikan secara keseluruhan.
Contoh Kasus untuk Partisi Chi-Square
Topik mengenai preferensi hobi berdasarkan jenis kelamin merupakan isu yang menarik untuk diteliti karena dapat mencerminkan dinamika sosial, budaya, serta konstruksi gender dalam masyarakat. Pemilihan hobi seperti olahraga, otomotif, belanja (shopping), dan komputer tidak hanya berkaitan dengan minat individu, tetapi juga sering kali dipengaruhi oleh norma sosial yang melekat pada peran laki-laki dan perempuan. Dengan mengkaji keterkaitan antara jenis kelamin dan pilihan hobi, kita dapat memperoleh wawasan lebih dalam mengenai kecenderungan perilaku, stereotip gender, serta potensi pergeseran nilai-nilai dalam masyarakat modern. Selain itu, hasil analisis ini dapat berguna dalam berbagai konteks praktis, seperti penyusunan program pemasaran, perencanaan kegiatan komunitas, maupun pengembangan kebijakan pendidikan dan rekreasi yang lebih inklusif dan responsif terhadap kebutuhan kedua gender. Data untuk analisis disajikan sebagai berikut :
# Data dari tabel kontingensi
hobi_table <- matrix(c(30, 45, 20, 25,
10, 5, 40, 25),
nrow = 2, byrow = TRUE)
colnames(hobi_table) <- c("Olah Raga", "Otomotif", "Shopping", "Komputer")
rownames(hobi_table) <- c("Laki-laki", "Perempuan")
hobi_table
## Olah Raga Otomotif Shopping Komputer
## Laki-laki 30 45 20 25
## Perempuan 10 5 40 25
##
## Pearson's Chi-squared test
##
## data: hobi_table
## X-squared = 42.361, df = 3, p-value = 3.363e-09
# Partisi 1: Olah Raga vs. Hobi Lain
hobi1 <- matrix(c(30, 90, 10, 70), nrow = 2, byrow = TRUE)
colnames(hobi1) <- c("Olah Raga", "Lainnya")
rownames(hobi1) <- c("Laki-laki", "Perempuan")
chisq.test(hobi1, correct = FALSE)
##
## Pearson's Chi-squared test
##
## data: hobi1
## X-squared = 4.6875, df = 1, p-value = 0.03038
# Partisi 2: Otomotif vs. Hobi Lain
hobi2 <- matrix(c(45, 75, 5, 75), nrow = 2, byrow = TRUE)
colnames(hobi2) <- c("Otomotif", "Lainnya")
rownames(hobi2) <- c("Laki-laki", "Perempuan")
chisq.test(hobi2, correct = FALSE)
##
## Pearson's Chi-squared test
##
## data: hobi2
## X-squared = 25, df = 1, p-value = 5.733e-07
# Partisi 3: Shopping vs. Hobi Lain
hobi3 <- matrix(c(20, 100, 40, 40), nrow = 2, byrow = TRUE)
colnames(hobi3) <- c("Shopping", "Lainnya")
rownames(hobi3) <- c("Laki-laki", "Perempuan")
chisq.test(hobi3, correct = FALSE)
##
## Pearson's Chi-squared test
##
## data: hobi3
## X-squared = 25.397, df = 1, p-value = 4.667e-07
# Partisi 4: Komputer vs. Hobi Lain
hobi4 <- matrix(c(25, 95, 25, 55), nrow = 2, byrow = TRUE)
colnames(hobi4) <- c("Komputer", "Lainnya")
rownames(hobi4) <- c("Laki-laki", "Perempuan")
chisq.test(hobi4, correct = FALSE)
##
## Pearson's Chi-squared test
##
## data: hobi4
## X-squared = 2.7778, df = 1, p-value = 0.09558
Hasil uji chi-square keseluruhan menunjukkan bahwa terdapat hubungan yang sangat signifikan antara jenis kelamin dan jenis hobi (X² = 42,361; df = 3; p-value = 3,363 × 10⁻⁹). Hal ini mengindikasikan bahwa preferensi hobi berbeda secara nyata antara laki-laki dan perempuan. Untuk mengetahui kontribusi masing-masing kategori hobi terhadap hubungan tersebut, dilakukan uji partisi sebagai berikut:
Kesimpulannya, jenis kelamin berpengaruh terhadap preferensi beberapa jenis hobi. Hobi otomotif dan shopping memberikan pengaruh terbesar terhadap perbedaan ini, sementara hobi komputer tidak memperlihatkan perbedaan yang berarti antara laki-laki dan perempuan. |
Uji Likelihood Ratio (sering disebut sebagai uji G²) merupakan salah satu alternatif dari uji chi-square (χ²) yang digunakan untuk menguji hipotesis independensi dalam tabel kontingensi berukuran I × J. Uji ini didasarkan pada prinsip likelihood, yakni membandingkan seberapa besar kemungkinan (likelihood) data yang diamati muncul di bawah hipotesis nol (variabel bebas) dengan kemungkinan maksimum yang bisa terjadi. Uji G² sangat berguna terutama ketika asumsi uji chi-square kurang terpenuhi, misalnya saat ukuran sampel kecil atau distribusi data tidak merata.
Rumus Statistik Uji
Statistik uji G² didefinisikan sebagai :
\[ G^2 = 2 \sum_i \sum_j O_{ij} \cdot \ln \left( \frac{O_{ij}}{E_{ij}} \right) \]
Dengan :
\[ E_{ij} = \frac{(\text{jumlah baris } i) \times (\text{jumlah kolom } j)}{\text{total keseluruhan}} \]
Statistik \(G^2\) mengikuti distribusi \(\chi^2\) dengan derajat bebas:
\[ df = (I - 1)(J - 1) \]
Hipotesis yang diuji :
Kriteria keputusan :
Implementasi Analisis di R
# Hitung ekspektasi
expected <- chisq.test(cont_table)$expected
# Hitung G²
G2 <- 2 * sum(cont_table * log(cont_table / expected))
# Nilai kritis dan keputusan
df <- (nrow(cont_table) - 1) * (ncol(cont_table) - 1)
critical_value <- qchisq(0.95, df)
decision <- ifelse(G2 > critical_value, "Tolak H0", "Gagal Tolak H0")
# Output
list(G2 = G2, Critical_Value = critical_value, Decision = decision)
## $G2
## [1] 122.0601
##
## $Critical_Value
## [1] 3.841459
##
## $Decision
## [1] "Tolak H0"
Berdasarkan hasil uji Likelihood Ratio (G²) terhadap data transportasi yang melibatkan dua variabel, yaitu penggunaan transportasi umum (Ya/Tidak) dan kepedulian terhadap lingkungan (Peduli/Acuh), diperoleh nilai statistik uji G² sebesar 122,0601. Nilai ini jauh melebihi nilai kritis distribusi chi-square pada taraf signifikansi 5% dengan derajat bebas 1, yaitu sebesar 3,841459. Dengan demikian, keputusan yang diambil adalah menolak hipotesis nol (H₀), yang menyatakan bahwa tidak ada hubungan antara kedua variabel tersebut. Artinya, terdapat hubungan yang signifikan secara statistik antara kepedulian lingkungan dan kecenderungan seseorang dalam menggunakan transportasi umum. Hasil ini mengindikasikan bahwa individu yang memiliki kepedulian terhadap lingkungan cenderung lebih memilih menggunakan transportasi umum dibandingkan mereka yang acuh. Temuan ini selaras dengan dugaan bahwa kesadaran lingkungan dapat mendorong perilaku yang lebih ramah lingkungan dalam aktivitas keseharian, termasuk dalam pemilihan moda transportasi. |
Uji Exact Fisher adalah metode statistik yang digunakan untuk menguji hubungan antara dua variabel kategorikal dalam tabel kontingensi kecil, khususnya ketika asumsi-asumsi uji Chi-square tidak dapat diterapkan. Hal ini biasanya terjadi pada data dengan ukuran sampel yang kecil atau frekuensi harapan yang rendah. Uji ini pertama kali dikembangkan oleh Sir Ronald A. Fisher dan telah banyak diterapkan dalam bidang biologi dan medis, namun kini digunakan di berbagai disiplin ilmu.
Keunggulan Uji Exact Fisher
Cocok untuk ukuran sampel kecil: Uji ini ideal untuk data dengan jumlah sampel yang terbatas.
Tidak memerlukan asumsi normalitas atau distribusi chi-square: Tidak seperti uji chi-square yang mengasumsikan distribusi normal, uji Exact Fisher bekerja tanpa bergantung pada asumsi tersebut.
Keterbatasan Uji Exact Fisher
Distribusi hipergeometrik digunakan untuk menghitung probabilitas suatu kejadian dalam pengambilan sampel tanpa pengembalian. Dalam konteks uji Exact Fisher, distribusi ini digunakan untuk menghitung probabilitas semua kemungkinan tabel kontingensi yang dapat terbentuk dari data yang ada. Formula distribusi hipergeometrik untuk menghitung probabilitas P(X = x) adalah sebagai berikut :
\[ P(X = x) = \frac{\binom{K}{x} \binom{N-K}{n-x}}{\binom{N}{n}} \]
Dengan :
- \(N\) = total objek dalam populasi
- \(K\) = jumlah objek dalam kategori tertentu (misalnya sukses)
- \(n\) = jumlah sampel yang diambil
- \(x\) = jumlah objek yang diamati dalam kategori tertentu dalam sampel
Implementasi Analisis di R
# Langkah 1: Definisikan Data dan Hitung Probabilitas
# Data tabel kontingensi
N <- 500 # Total populasi
K <- 340 # Jumlah kategori "Peduli"
n <- 300 # Jumlah sampel "Ya"
x <- 260 # Jumlah sukses "Peduli" dan "Ya"
# Fungsi untuk menghitung probabilitas distribusi hipergeometrik
probabilitas <- choose(K, x) * choose(N - K, n - x) / choose(N, n)
probabilitas
## [1] 3.179769e-28
# Langkah 2: Menghitung Semua Kombinasi Tabel dan Menentukan p-value
# Fungsi untuk menghitung probabilitas kumulatif dari semua tabel 2 × 2 yang lebih kecil atau sama dengan tabel yang diamati
probabilitas_all <- function(data) {
total_combinations <- 0
# Generate semua kombinasi tabel 2 × 2 yang mungkin
for (i in 0:data[1,1]) {
for (j in 0:data[1,2]) {
prob <- choose(data[1,1], i) * choose(data[2,1], j) *
choose(data[1,2], data[1,1] - i) * choose(data[2,2], data[2,1] - j) /
choose(sum(data), sum(data))
total_combinations <- total_combinations + prob
}
}
total_combinations
}
# Data tabel kontingensi
cont_table <- matrix(c(260, 80, 40, 120), nrow = 2, byrow = TRUE,
dimnames = list("Menggunakan Transportasi Umum" = c("Ya", "Tidak"),
"Kepedulian Lingkungan" = c("Peduli", "Acuh")))
# Menghitung p-value manual dengan jumlah probabilitas
p_value_manual <- probabilitas_all(cont_table)
p_value_manual
## [1] 1.607357e+117
# Langkah 3: Perhitungan p-value Menggunakan Fungsi fisher.test() di R
# Uji Exact Fisher menggunakan R
fisher_result <- fisher.test(cont_table)
fisher_result
##
## Fisher's Exact Test for Count Data
##
## data: cont_table
## p-value < 2.2e-16
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 6.167146 15.499162
## sample estimates:
## odds ratio
## 9.696337
Pada Langkah 1, perhitungan probabilitas distribusi hipergeometrik untuk data yang diberikan menghasilkan nilai 3.179769e-28, yang sangat kecil. Hal ini menunjukkan bahwa kombinasi data yang diamati (260 orang yang menggunakan transportasi umum dan peduli lingkungan, serta distribusi lainnya) sangat jarang terjadi dalam populasi yang lebih besar. Probabilitas yang sangat kecil ini mengindikasikan bahwa kejadian yang diamati hampir tidak mungkin terjadi tanpa adanya hubungan signifikan antara variabel yang diuji. Pada Langkah 2, perhitungan p-value secara manual dilakukan dengan menggunakan distribusi hipergeometrik kumulatif dari semua kombinasi tabel 2 × 2 yang mungkin dengan total yang sama. Namun, hasil p-value yang diperoleh, 1.607357e+117, sangat besar dan tidak relevan untuk analisis statistik. Hal ini menunjukkan adanya potensi kesalahan dalam perhitungan kumulatif probabilitas, sehingga nilai p-value tersebut tidak dapat diinterpretasikan dengan benar dalam konteks uji Exact Fisher. Pada Langkah 3, perhitungan p-value dilakukan dengan
menggunakan fungsi Analisis juga menghasilkan odds ratio sebesar 9.696337, yang berarti bahwa peluang seseorang yang peduli terhadap lingkungan untuk menggunakan transportasi umum hampir 10 kali lebih tinggi dibandingkan dengan seseorang yang tidak peduli (sama seperti pada uji asosiasi sebelumnya). Hal ini menegaskan bahwa faktor kepedulian lingkungan memiliki pengaruh yang besar terhadap perilaku dalam menggunakan transportasi umum. Secara keseluruhan, hasil dari uji Exact Fisher ini memberikan bukti kuat bahwa ada hubungan signifikan antara kepedulian terhadap lingkungan dan penggunaan transportasi umum dalam data yang dianalisis. P-value yang sangat kecil mendukung penolakan hipotesis nol, sementara odds ratio yang tinggi menunjukkan bahwa kepedulian lingkungan mempengaruhi keputusan untuk menggunakan transportasi umum. |
Analisis residual dalam tabel kontingensi digunakan untuk mengidentifikasi sel mana yang menyumbang paling banyak terhadap hubungan antara variabel kategori. Residual mengukur selisih antara frekuensi yang diamati dan frekuensi yang diharapkan berdasarkan model independensi. Dalam analisis ini, kita akan menghitung residual untuk tabel kontingensi yang menunjukkan hubungan antara penggunaan transportasi umum dan kepedulian terhadap lingkungan.
Langkah-langkah Analisis Residual
1. Hitung Frekuensi yang Diharapkan
Untuk menghitung nilai ekspektasi pada setiap sel, rumus yang digunakan adalah:
\[ E_{ij} = \frac{(\text{Total Baris}) \times (\text{Total Kolom})}{\text{Total Keseluruhan}} \]
Berikut adalah nilai ekspektasi untuk setiap sel :
2. Hitung Pearson Residual
Pearson residual digunakan untuk mengukur penyimpangan antara nilai yang diamati dan nilai ekspektasi. Rumus yang digunakan adalah:
\[ e_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}} \]
- \(O_{ij}\) adalah nilai observasi pada sel \(ij\),
- \(E_{ij}\) adalah nilai ekspektasi pada sel \(ij\).
Berikut adalah perhitungan Pearson residual untuk setiap sel :
3. Hitung Standardized Residual
Standardized residual digunakan untuk mempertimbangkan pengaruh margin baris dan kolom dalam tabel. Rumus yang digunakan adalah:
\[ r_{ij} = \frac{O_{ij} - E_{ij}}{\sqrt{E_{ij}}(1 - \frac{n_i}{N})(1 - \frac{n_j}{N})} \]
Dengan menghitung nilai residual yang terstandarisasi untuk setiap sel :
# Data Observasi
observed <- matrix(c(260, 40, 80, 120), nrow = 2, byrow = TRUE)
# Hitung nilai ekspektasi
expected <- chisq.test(observed)$expected
# Pearson Residual
pearson_residual <- (observed - expected) / sqrt(expected)
# Standardized Residual
row_sum <- rowSums(observed)
col_sum <- colSums(observed)
total_sum <- sum(observed)
standardized_residual <- (observed - expected) / sqrt(expected * (1 - row_sum / total_sum) * (1 - col_sum / total_sum))
# Hasil
list( Observed = observed, Expected = expected, Pearson_Residual = pearson_residual, Standardized_Residual = standardized_residual )
## $Observed
## [,1] [,2]
## [1,] 260 40
## [2,] 80 120
##
## $Expected
## [,1] [,2]
## [1,] 204 96
## [2,] 136 64
##
## $Pearson_Residual
## [,1] [,2]
## [1,] 3.920784 -5.715476
## [2,] -4.801960 7.000000
##
## $Standardized_Residual
## [,1] [,2]
## [1,] 10.958925 -15.97524
## [2,] -7.517761 10.95893
4. Deteksi Outlier
Untuk mendeteksi outlier, kita menggunakan kriteria berikut :
Pearson Residual : Jika ∣eij∣>2, maka sel tersebut dianggap sebagai indikasi adanya outlier.
Standardized Residual : Jika ∣rij∣>3, maka sel tersebut dianggap sebagai outlier signifikan.
Hasil analisis residual menunjukkan adanya hubungan yang sangat kuat antara penggunaan transportasi umum dan kepedulian terhadap lingkungan. Sel dengan kombinasi Peduli lingkungan dan menggunakan transportasi umum memiliki residual standar sebesar 10.96, jauh lebih tinggi dari ambang signifikan, menandakan jumlah observasi jauh lebih besar dari yang diharapkan. Sebaliknya, kategori Acuh lingkungan yang menggunakan transportasi umum menunjukkan residual negatif besar (-15.98), mengindikasikan jumlah yang jauh lebih sedikit dari ekspektasi. Kategori Peduli tapi tidak menggunakan transportasi umum dan Acuh tapi tidak menggunakan transportasi umum juga menunjukkan deviasi besar dari model independensi, dengan residual standar masing-masing -7.52 dan 10.96. Seluruh residual jauh melampaui batas ±3, mengindikasikan bahwa hampir semua sel secara signifikan menyimpang dari model tanpa hubungan. Temuan ini menegaskan adanya keterkaitan kuat; semakin tinggi kepedulian lingkungan, semakin besar kecenderungan menggunakan transportasi umum. Residual besar menunjukkan bahwa data sangat menyimpang dari model independensi, sehingga dapat disimpulkan bahwa kedua variabel saling berasosiasi secara kuat. |
Tabel kontingensi tiga arah adalah tabel silang yang menampilkan hubungan antara tiga variabel kategoris. Tabel ini digunakan untuk menganalisis asosiasi atau hubungan antara variabel-variabel tersebut, termasuk asosiasi parsial atau kondisional.Tabel kontingensi tiga arah adalah bentuk lanjutan dari tabel kontingensi dua arah yang memungkinkan analisis interaksi antara tiga variabel kategori. Pendekatan ini sangat berguna untuk melihat hubungan dua variabel pada berbagai kondisi variabel ketiga.
Tabel marginal menghitung jumlah total terhadap satu atau dua variabel, mengabaikan variabel lainnya. Tabel parsial menampilkan hubungan dua variabel dengan mengendalikan variabel ketiga.
\[ P(X),\ P(Y),\ P(Z) \text{ diperoleh dari total marginal terhadap dua variabel lainnya.} \]
Contoh kasus
Topik mengenai hubungan antara frekuensi konsumsi makanan cepat saji (fastfood), kondisi sistem imun tubuh (imun), dan status individu sebagai mahasiswa atau pekerja merupakan isu yang relevan untuk dianalisis melalui pendekatan tabel kontingensi tiga arah. Dalam konteks kehidupan modern, makanan cepat saji telah menjadi bagian dari pola makan banyak individu, terutama di kalangan mahasiswa dan pekerja yang cenderung memiliki waktu terbatas dan gaya hidup yang dinamis. Namun, tingginya konsumsi jenis makanan ini sering dikaitkan dengan penurunan kualitas kesehatan, termasuk daya tahan tubuh. Dengan mempertimbangkan status individu, analisis ini tidak hanya memungkinkan pengujian adanya asosiasi dua arah antara variabel-variabel tersebut, tetapi juga membuka ruang untuk menilai adanya interaksi tiga arah yang kompleks. Pendekatan ini memberikan landasan statistik yang kuat untuk mengidentifikasi apakah pengaruh konsumsi fastfood terhadap sistem imun bervariasi antar kelompok status sosial, sehingga memperkaya pemahaman mengenai determinan kesehatan dalam perspektif multivariat. Data disajikan dan dianalisis sebagai berikut :
fastfood <- c("Sering", "Jarang")
imun <- c("Normal", "Menurun")
status <- c("Mahasiswa", "Pekerja")
data_array <- array(
c(
30, 70, # Mahasiswa - Sering
60, 40, # Mahasiswa - Jarang
50, 50, # Pekerja - Sering
80, 20 # Pekerja - Jarang
),
dim = c(2, 2, 2),
dimnames = list(
Fastfood = fastfood,
Imun = imun,
Status = status
)
)
data_array
## , , Status = Mahasiswa
##
## Imun
## Fastfood Normal Menurun
## Sering 30 60
## Jarang 70 40
##
## , , Status = Pekerja
##
## Imun
## Fastfood Normal Menurun
## Sering 50 80
## Jarang 50 20
# Marginal
marginal_xy <- apply(data_array, c(1, 2), sum)
marginal_xz <- apply(data_array, c(1, 3), sum)
marginal_yz <- apply(data_array, c(2, 3), sum)
# Parsial
parsial_mahasiswa <- data_array[, , "Mahasiswa"]
parsial_pekerja <- data_array[, , "Pekerja"]
marginal_xy
## Imun
## Fastfood Normal Menurun
## Sering 80 140
## Jarang 120 60
## Status
## Fastfood Mahasiswa Pekerja
## Sering 90 130
## Jarang 110 70
## Status
## Imun Mahasiswa Pekerja
## Normal 100 100
## Menurun 100 100
## Imun
## Fastfood Normal Menurun
## Sering 30 60
## Jarang 70 40
## Imun
## Fastfood Normal Menurun
## Sering 50 80
## Jarang 50 20
Interpretasi |
---|
Hasil tabulasi tiga arah antara variabel frekuensi konsumsi makanan cepat saji (fastfood), kondisi sistem imun (imun), dan status individu (status) menunjukkan pola hubungan yang menarik dan layak dianalisis lebih lanjut. Dari tabel kontingensi tiga arah, terlihat bahwa pada kelompok mahasiswa, proporsi responden yang sering mengonsumsi fastfood dan memiliki imun menurun cukup tinggi, yaitu 60 orang dibandingkan 30 orang yang memiliki imun normal. Sebaliknya, pada mahasiswa yang jarang mengonsumsi fastfood, mayoritas justru memiliki imun normal (70 orang), sementara sisanya (40 orang) memiliki imun menurun. Ini menunjukkan adanya kecenderungan bahwa pada kelompok mahasiswa, semakin sering konsumsi fastfood, semakin tinggi pula kemungkinan penurunan kondisi imun. Sementara itu, pada kelompok pekerja, pola serupa juga dapat diamati meskipun tidak sekuat pada mahasiswa. Di antara pekerja yang sering mengonsumsi fastfood, 80 orang mengalami penurunan imun, sedangkan hanya 50 orang memiliki imun normal. Sebaliknya, pada pekerja yang jarang mengonsumsi fastfood, proporsi individu dengan imun normal dan menurun masing-masing adalah 50 dan 20 orang. Dengan kata lain, baik pada mahasiswa maupun pekerja, konsumsi fastfood yang lebih jarang cenderung berkaitan dengan kondisi imun yang lebih baik. Analisis marginal juga memberikan wawasan tambahan. Ketika mengabaikan status, distribusi fastfood dan imun (marginal XY) menunjukkan bahwa dari total 140 individu yang sering mengonsumsi fastfood, 80 di antaranya memiliki imun normal dan 140 mengalami penurunan imun. Sebaliknya, dari 180 individu yang jarang mengonsumsi fastfood, 120 memiliki imun normal dan hanya 60 mengalami penurunan. Ini menguatkan indikasi bahwa konsumsi fastfood berkorelasi negatif dengan kondisi imun secara umum. Selain itu, distribusi marginal antara fastfood dan status (marginal XZ) memperlihatkan bahwa pekerja lebih banyak mengonsumsi fastfood dibanding mahasiswa (130 vs. 90 untuk kategori “sering”), namun jumlah pekerja yang jarang mengonsumsi fastfood lebih rendah (70 vs. 110). Distribusi imun dan status (marginal YZ) bersifat seimbang: baik mahasiswa maupun pekerja masing-masing memiliki jumlah yang sama antara imun normal dan menurun (100-100), menunjukkan bahwa status itu sendiri tidak terlalu memengaruhi distribusi kondisi imun secara langsung tanpa mempertimbangkan variabel lain. Dengan melihat tabel parsial, semakin jelas bahwa hubungan antara frekuensi konsumsi fastfood dan kondisi imun tidak identik antar kelompok status. Perbedaan pola ini mengindikasikan kemungkinan adanya interaksi tiga arah antara fastfood, imun, dan status, yang membuat analisis tabel kontingensi tiga arah menjadi sangat relevan dalam kasus ini. Interpretasi ini dapat dijadikan dasar untuk uji statistik lebih lanjut, seperti uji homogenitas asosiasi atau uji keberadaan interaksi, untuk memperoleh kesimpulan yang lebih mendalam dan valid secara inferensial. |
Distribusi peluang dalam tabel kontingensi tiga arah menggambarkan proporsi relatif dari setiap kombinasi tiga variabel kategori yang diamati. Dengan membagi frekuensi setiap sel terhadap total keseluruhan pengamatan, kita memperoleh probabilitas gabungan yang merepresentasikan kemungkinan kemunculan kombinasi tertentu dari ketiga variabel. Distribusi ini penting sebagai dasar dalam menghitung peluang bersyarat, mengidentifikasi pola asosiasi, serta mengevaluasi independensi antar variabel. Dalam konteks tiga arah, distribusi peluang memungkinkan analisis yang lebih mendalam terhadap bagaimana satu variabel dapat memoderasi hubungan antara dua variabel lainnya.
Teori : \[ P(X = x, Y = y, Z = z) = \frac{f_{xyz}}{N} \]
## , , Status = Mahasiswa
##
## Imun
## Fastfood Normal Menurun
## Sering 0.075 0.15
## Jarang 0.175 0.10
##
## , , Status = Pekerja
##
## Imun
## Fastfood Normal Menurun
## Sering 0.125 0.20
## Jarang 0.125 0.05
Interpretasi |
---|
Hasil perhitungan proporsi relatif terhadap total keseluruhan data memberikan pemahaman yang lebih mendalam mengenai distribusi gabungan antara variabel frekuensi konsumsi fastfood (Fastfood), kondisi imun (Imun), dan status individu (Status). Total keseluruhan pengamatan adalah 400 (hasil dari penjumlahan seluruh frekuensi pada array), dan setiap nilai dalam array proporsi menunjukkan kontribusi proporsi masing-masing sel terhadap total populasi. Pada kelompok mahasiswa, individu yang sering mengonsumsi fastfood dan memiliki imun menurun mencakup 15% dari total pengamatan (0.15), yang merupakan proporsi tertinggi dalam kelompok ini. Sebaliknya, mahasiswa yang sering mengonsumsi fastfood namun memiliki imun normal hanya sebesar 7.5%, mengindikasikan bahwa dalam kelompok mahasiswa, konsumsi fastfood yang sering lebih banyak berasosiasi dengan penurunan imun. Sementara itu, mahasiswa yang jarang mengonsumsi fastfood dan memiliki imun normal mencakup 17.5%, yang lebih besar dibandingkan 10% mahasiswa jarang konsumsi fastfood tetapi mengalami penurunan imun. Dengan kata lain, pada kelompok mahasiswa, konsumsi fastfood yang jarang lebih banyak dikaitkan dengan kondisi imun yang baik. Pada kelompok pekerja, proporsi terbesar juga berada pada individu yang sering mengonsumsi fastfood dan memiliki imun menurun, yaitu sebesar 20%, lebih tinggi dibandingkan proporsi mahasiswa dalam kategori yang sama. Hal ini menunjukkan bahwa pekerja yang sering mengonsumsi fastfood juga lebih rentan mengalami penurunan daya tahan tubuh. Proporsi pekerja yang jarang mengonsumsi fastfood dan memiliki imun normal adalah 12.5%, jauh lebih besar dibandingkan proporsi pekerja dalam kategori yang sama namun dengan imun menurun (5%). Hal ini konsisten dengan pola pada kelompok mahasiswa, yakni bahwa frekuensi konsumsi fastfood yang lebih jarang cenderung diikuti dengan kondisi imun yang lebih baik. Jika dibandingkan antar-kelompok status, pekerja cenderung memiliki proporsi lebih tinggi dalam kategori yang berisiko (sering konsumsi fastfood dan imun menurun = 20%) dibanding mahasiswa (15%), meskipun secara keseluruhan distribusi antara imun normal dan menurun adalah seimbang dalam data. Ini menunjukkan bahwa meskipun status sebagai mahasiswa atau pekerja tidak memengaruhi kondisi imun secara langsung (sebagaimana terlihat dalam marginal YZ), dampak konsumsi fastfood terhadap imun mungkin tidak sama antara kedua kelompok. Fakta ini kembali menegaskan pentingnya mempertimbangkan interaksi tiga arah, karena pola hubungan tidak seragam di seluruh subkelompok. |
Peluang bersyarat dalam tabel kontingensi tiga arah mengukur probabilitas terjadinya suatu kategori dari satu variabel, dengan asumsi bahwa nilai-nilai dari dua variabel lainnya telah diketahui. Analisis ini memungkinkan kita untuk menelusuri bagaimana hubungan antara dua variabel dapat berubah atau dipengaruhi oleh variabel ketiga. Dengan menghitung peluang bersyarat, kita dapat mengidentifikasi adanya ketergantungan yang tersembunyi, serta menilai konsistensi pola hubungan antar kelompok. Pendekatan ini sangat berguna untuk memahami interaksi kompleks dan memberikan landasan bagi pengujian independensi bersyarat.
Teori : \[ P(Y|X,Z) = \frac{P(X,Y,Z)}{P(X,Z)} \]
## , , Status = Mahasiswa
##
## Imun
## Fastfood Normal Menurun
## Sering 0.3333333 0.6666667
## Jarang 0.6363636 0.3636364
##
## , , Status = Pekerja
##
## Imun
## Fastfood Normal Menurun
## Sering 0.3846154 0.6153846
## Jarang 0.7142857 0.2857143
Interpretasi |
---|
Dari keempat kombinasi antara Fastfood dan Status, terlihat pola konsisten: semakin jarang seseorang mengonsumsi fastfood, semakin tinggi peluang mereka memiliki sistem imun yang normal. Selain itu, perbedaan proporsi ini cukup mencolok, terutama jika dibandingkan antara mahasiswa dan pekerja. Misalnya, peluang memiliki imun normal bagi mahasiswa yang jarang makan fastfood adalah 63.6%, sedangkan pada pekerja mencapai 71.4%. Sebaliknya, pada kelompok yang sering makan fastfood, keduanya menunjukkan penurunan peluang memiliki imun normal, meskipun pekerja sedikit lebih baik dibanding mahasiswa (38.5% vs. 33.3%). Pola ini memperkuat dugaan bahwa konsumsi fastfood dapat berasosiasi negatif terhadap kondisi imun, dan efeknya terlihat konsisten di berbagai kelompok status. Analisis seperti ini sangat penting dalam konteks analisis tabel kontingensi tiga arah, karena mengungkap hubungan bersyarat yang tidak selalu tampak pada tabel marginal. Untuk validasi lebih lanjut, langkah selanjutnya bisa dilakukan melalui uji homogenitas asosiasi atau model log-linear untuk mengevaluasi apakah perbedaan ini signifikan secara statistik. |
Ukuran asosiasi dalam tabel kontingensi tiga arah digunakan untuk menilai kekuatan dan arah hubungan antara dua variabel kategori pada tingkat tertentu dari variabel ketiga. Salah satu ukuran yang sering digunakan adalah odds ratio (OR), yang mengukur rasio peluang kejadian pada satu kelompok dibandingkan kelompok lain. Dalam konteks tiga arah, kita dapat menghitung OR parsial untuk setiap strata dari variabel ketiga, serta OR gabungan untuk seluruh data. Analisis ini membantu mengidentifikasi apakah hubungan antara dua variabel konsisten di seluruh level variabel ketiga, serta apakah terdapat interaksi atau efek yang bersifat mengganggu.
Teori : \[ \text{OR} = \frac{ad}{bc} \]
odds_ratio <- function(tab) {
(tab[1,1] * tab[2,2]) / (tab[1,2] * tab[2,1])
}
or_mahasiswa <- odds_ratio(parsial_mahasiswa)
or_pekerja <- odds_ratio(parsial_pekerja)
or_mahasiswa
## [1] 0.2857143
## [1] 0.25
Interpretasi |
---|
Perhitungan odds ratio (OR) dari masing-masing tabel parsial memberikan wawasan mengenai kekuatan asosiasi antara frekuensi konsumsi makanan cepat saji (fastfood) dan kondisi sistem imun (imun) dalam masing-masing kelompok status, yaitu mahasiswa dan pekerja. Untuk kelompok mahasiswa, nilai odds ratio sebesar 0.29 (dibulatkan dari 0.2857) menunjukkan bahwa mahasiswa yang sering mengonsumsi fastfood memiliki peluang sekitar 71% lebih rendah untuk memiliki imun normal dibanding mahasiswa yang jarang mengonsumsinya. Dengan kata lain, semakin sering mahasiswa mengonsumsi fastfood, semakin tinggi kecenderungan mereka memiliki kondisi imun yang menurun. Hal serupa juga terlihat pada kelompok pekerja, di mana nilai odds ratio sebesar 0.25 mengindikasikan bahwa pekerja yang sering mengonsumsi fastfood memiliki peluang 75% lebih rendah untuk memiliki imun normal dibanding pekerja yang jarang mengonsumsinya. Kedua nilai OR tersebut berada di bawah 1, yang secara konsisten menunjukkan adanya asosiasi negatif antara konsumsi fastfood dan kondisi imun di kedua kelompok. Artinya, konsumsi fastfood yang lebih sering berhubungan dengan risiko penurunan daya tahan tubuh, baik pada mahasiswa maupun pekerja. Namun demikian, perbedaan nilai OR antara kedua kelompok (0.29 vs. 0.25) mengisyaratkan bahwa kekuatan asosiasi ini tidak identik, meskipun arahnya sama. Hal ini membuka kemungkinan adanya interaksi antara variabel status dan pengaruh fastfood terhadap imun, yang patut diuji lebih lanjut melalui analisis formal seperti uji homogenitas odds ratio atau pendekatan model log-linear, untuk memastikan apakah perbedaan tersebut signifikan secara statistik atau hanya terjadi karena variasi acak. |
Conditional independence dalam tabel kontingensi tiga arah merujuk pada situasi di mana dua variabel kategori (misalnya X dan Y) tidak saling bergantung secara statistik jika pengaruh dari variabel ketiga (Z) dikendalikan atau tetap. Dengan kata lain, setelah memperhitungkan variabel Z, tidak ada asosiasi signifikan antara X dan Y. Konsep ini penting dalam analisis multivariat karena membantu mengidentifikasi apakah hubungan antar variabel bersifat langsung atau dimediasi oleh variabel lain. Pengujian conditional independence sering dilakukan dengan uji Cochran-Mantel-Haenszel atau pendekatan log-linear. Dua variabel X dan Y dikatakan independen bersyarat terhadap Z jika hubungan antara X dan Y hilang setelah mengendalikan Z.
Teori : \[ P(X,Y|Z) = P(X|Z)P(Y|Z) \]
## Warning: package 'vcdExtra' was built under R version 4.3.3
## Loading required package: vcd
## Warning: package 'vcd' was built under R version 4.3.3
## Loading required package: grid
## Loading required package: gnm
## Warning: package 'gnm' was built under R version 4.3.3
##
## Mantel-Haenszel chi-squared test with continuity correction
##
## data: data_array
## Mantel-Haenszel X-squared = 36.459, df = 1, p-value = 1.559e-09
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 0.1748874 0.4115846
## sample estimates:
## common odds ratio
## 0.2682927
|
## Fastfood
## Sering Jarang
## 220 180
## Imun
## Normal Menurun
## 200 200
Interpretasi |
---|
Analisis marginal terhadap data tiga arah ini memberikan
gambaran umum mengenai distribusi masing-masing variabel secara
terpisah. Dari hasil Namun, meskipun distribusi marginal imun terlihat seimbang, hasil ini tidak serta-merta menyiratkan tidak adanya asosiasi antara imun dan fastfood. Justru, kesetaraan marginal ini memberikan latar yang ideal untuk menyelidiki hubungan bersyarat dan potensi adanya interaksi dalam tabel kontingensi tiga arah. Jika ketidakseimbangan proporsi imun ditemukan dalam subkelompok tertentu (misalnya berdasarkan frekuensi fastfood atau status), maka hal tersebut mengindikasikan adanya asosiasi laten yang tidak terlihat pada distribusi marginal saja. |
Inferensi pada tabel kontingensi tiga arah bertujuan untuk menguji secara statistik adanya hubungan atau ketergantungan antara tiga variabel kategori. Dengan melakukan analisis inferensial, seperti uji chi-square pada setiap strata, uji Cochran-Mantel-Haenszel (CMH), dan uji homogenitas odds ratio (Breslow-Day), kita dapat menentukan apakah hubungan antara dua variabel tetap konsisten setelah mengendalikan variabel ketiga. Proses ini membantu mengidentifikasi pola asosiasi yang tidak terlihat dari analisis dua arah, serta memperkuat kesimpulan mengenai interaksi antar variabel dalam populasi yang lebih kompleks.
Independensi bersyarat dalam tabel kontingensi tiga arah mengacu pada situasi di mana dua variabel kategori (misalnya X dan Y) saling bebas atau tidak berhubungan setelah mengontrol atau mengkondisikan terhadap variabel ketiga (Z). Konsep ini penting untuk memahami apakah hubungan antara dua variabel tetap ada atau justru menghilang ketika faktor ketiga diperhitungkan. Dengan menguji independensi bersyarat, kita dapat membedakan apakah hubungan yang diamati merupakan pengaruh langsung antara dua variabel, atau hanya terlihat karena pengaruh bersama dari variabel ketiga. Pengujian independensi bersyarat dilakukan melalui uji chi-square per strata atau menggunakan pendekatan gabungan seperti uji Cochran-Mantel-Haenszel.
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: parsial_mahasiswa
## X-squared = 16.99, df = 1, p-value = 3.758e-05
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: parsial_pekerja
## X-squared = 18.484, df = 1, p-value = 1.714e-05
|
Odds ratio bersama dalam tabel kontingensi tiga arah digunakan untuk mengukur kekuatan asosiasi antara dua variabel (misalnya X dan Y) setelah dikontrol terhadap variabel ketiga (Z). Odds ratio ini merupakan gabungan dari odds ratio parsial pada masing-masing strata Z, sehingga memberikan gambaran umum tentang hubungan antara X dan Y secara keseluruhan, tanpa dipengaruhi perbedaan antar kelompok pada Z. Jika nilai odds ratio bersama signifikan dan konsisten antar strata, maka dapat disimpulkan bahwa terdapat asosiasi kuat antara X dan Y secara agregat.
Teori: \[ OR_{gabungan} = \frac{\sum_i a_i d_i / n_i}{\sum_i b_i c_i / n_i} \]
## [1] 0.2682927
|
## Warning: package 'DescTools' was built under R version 4.3.3
##
## Breslow-Day test on Homogeneity of Odds Ratios
##
## data: data_array
## X-squared = 0.092995, df = 1, p-value = 0.7604
Dengan p-value = 0.7604, yang lebih besar dari 0.05, kita tidak menolak hipotesis nol. Artinya, odds ratio di antara strata (dalam hal ini strata berdasarkan status) adalah homogen, dan tidak ada perbedaan yang signifikan antara odds ratio pada strata-strata tersebut. Jadi, berdasarkan hasil uji ini, dapat disimpulkan bahwa hubungan antara variabel X (pola makan fast food), Y (kondisi sistem imun), dan Z (status sosial-ekonomi) tidak menunjukkan interaksi yang berbeda secara signifikan antara kelompok mahasiswa dan pekerja dalam hal odds ratio. |
Generalized Linear Model (GLM) adalah ekstensi dari regresi linier yang memungkinkan analisis data dengan berbagai distribusi respons, selain distribusi normal. GLM sangat berguna untuk menganalisis data yang tidak memenuhi asumsi normalitas pada regresi linier, seperti data biner, count, atau data berdistribusi lainnya. Model ini terdiri dari tiga komponen utama: distribusi keluarga eksponensial, fungsi link, dan fungsi linear prediktor.
Distribusi keluarga eksponensial adalah kelas distribusi probabilitas yang mencakup banyak distribusi penting, termasuk distribusi normal, binomial, Poisson, dan gamma. GLM mengasumsikan bahwa respons mengikuti distribusi dari keluarga eksponensial. Bentuk umum dari distribusi keluarga eksponensial adalah :
\[ f(y | \theta, \phi) = \exp \left( \frac{y\theta - b(\theta)}{a(\phi)} + c(y, \phi) \right) \]
Dengan :
- \(y\) adalah data respons,
- \(\theta\) adalah parameter natural (biasanya parameter yang kita estimasi),
- \(b(\theta)\) adalah fungsi normalisasi,
- \(a(\phi)\) adalah parameter skala (biasanya \(1\)),
- \(c(y, \phi)\) adalah fungsi yang bergantung pada data dan parameter skala.
Beberapa distribusi dari keluarga eksponensial adalah ;
- Normal : digunakan untuk data kontinu yang terdistribusi normal.
- Binomial : digunakan untuk data biner, misalnya model regresi logistik.
- Poisson : digunakan untuk data hitungan, misalnya model regresi Poisson.
- Gamma : digunakan untuk data kontinu yang nilainya positif, misalnya model regresi Gamma (GLM dengan link log).
Fungsi link adalah hubungan antara rata-rata respons \(\mu\) dan prediktor linear. Fungsi link dapat berbeda untuk berbagai jenis model. Dalam GLM, fungsi link ditulis sebagai:
\[ g(\mu) = \eta = X \beta \]- \(g(\mu)\) adalah fungsi link dari rata-rata respons,
- \(\eta\) adalah prediktor linear,
- \(X\) adalah matriks prediktor,
- \(\beta\) adalah koefisien regresi yang diestimasi.
Model regresi logistik merupakan salah satu model dalam Generalized Linear Model (GLM) yang digunakan ketika variabel respon bersifat biner (misalnya: Ya/Tidak, Sukses/Gagal, 1/0). Berbeda dengan regresi linear biasa yang mengasumsikan distribusi normal, regresi logistik menggunakan distribusi binomial dan fungsi link logit.
Model regresi logistik memodelkan logit dari probabilitas keberhasilan sebagai fungsi linear dari prediktor :
\[ \text{logit}(\mu) = \log\left( \frac{\mu}{1 - \mu} \right) = X \beta \]
- \(\mu = P(Y = 1)\) adalah probabilitas kejadian sukses,
- \(X\) adalah matriks prediktor,
- \(\beta\) adalah vektor koefisien regresi yang akan diestimasi
Respon biner (0/1) atau proporsi.
Observasi independen satu sama lain.
Tidak ada multikolinearitas antar prediktor.
Tidak memerlukan normalitas residual atau homoskedastisitas seperti regresi linear.
Koefisien regresi logistik \(\beta_j\) menggambarkan perubahan dalam log-odds keberhasilan untuk setiap kenaikan satu unit pada prediktor \(X_j\), dengan asumsi variabel lain konstan.
\[ \text{logit}(\mu) = \log\left( \frac{\mu}{1 - \mu} \right) = \beta_0 + \beta_1 X_1 + \cdots + \beta_j X_j + \cdots + \beta_p X_p \]
Transformasi dari log-odds ke probabilitas :
\[ \mu = \frac{1}{1 + e^{-X\beta}} = \frac{e^{X\beta}}{1 + e^{X\beta}} \]
Untuk interpretasi yang lebih intuitif, kita gunakan odds ratio :
\[ \text{Odds Ratio} = e^{\beta_j} \]
Interpretasinya:
Contoh :
Jika \(\beta_j = 0.7\), maka odds ratio :
\[ e^{0.7} \approx 2.01 \]
Artinya, setiap kenaikan satu unit pada \(X_j\) akan meningkatkan odds keberhasilan sebesar 2,01 kali lipat (dengan asumsi variabel lain tetap).
Topik “Data Faktor Kelulusan Mahasiswa” menarik untuk dianalisis karena menyentuh persoalan yang sangat relevan di dunia pendidikan tinggi, yaitu memahami faktor-faktor yang memengaruhi kelulusan mahasiswa. Dalam kehidupan kampus, tidak semua mahasiswa dapat menyelesaikan studi tepat waktu, dan sering kali penyebabnya melibatkan kombinasi antara kemampuan akademik, manajemen waktu, serta keterlibatan dalam aktivitas non-akademik. Dengan menggunakan regresi logistik, kita dapat memodelkan probabilitas kelulusan berdasarkan variabel-variabel seperti IPK terakhir, total SKS yang telah ditempuh, jam belajar per minggu, dan keaktifan dalam organisasi. Pendekatan ini tidak hanya cocok secara statistik—karena variabel respons bersifat biner (lulus/tidak)—tetapi juga memberikan wawasan yang praktis bagi pihak kampus untuk mengidentifikasi mahasiswa yang berisiko tidak lulus dan merancang intervensi yang tepat. Lebih dari sekadar latihan analisis, studi ini mencerminkan bagaimana data dan metode statistik dapat digunakan untuk menjawab pertanyaan nyata dan berdampak langsung pada kebijakan pendidikan serta kesejahteraan mahasiswa. Data disajikan dan dianalisis sebagai berikut :
## Data Mahasiswa dalam Kasus Analisis Regresi Logistik
set.seed(123)
# Jumlah observasi
n <- 100
# Variabel prediktor
ips <- round(runif(n, 2.0, 4.0), 2) # IPK terakhir
sks_lulus <- sample(90:144, n, replace = TRUE) # Total SKS
aktif_organisasi <- sample(0:1, n, replace = TRUE) # Status organisasi
jam_belajar <- round(rnorm(n, mean = 15, sd = 5), 1) # Jam belajar/minggu
# Prediktor linear (untuk simulasi probabilitas)
linear_pred <- -4 + 1.2 * ips + 0.01 * sks_lulus +
0.5 * aktif_organisasi + 0.1 * jam_belajar
# Probabilitas kelulusan (menggunakan fungsi logit)
prob_lulus <- 1 / (1 + exp(-linear_pred))
# Respons biner: Lulus atau tidak
lulus <- rbinom(n, 1, prob_lulus)
# Buat data frame
data_pendidikan <- data.frame(
lulus = lulus,
ips = ips,
sks_lulus = sks_lulus,
aktif_organisasi = factor(aktif_organisasi, labels = c("Tidak Aktif", "Aktif")),
jam_belajar = jam_belajar
)
# Tampilkan sebagian data
head(data_pendidikan)
# Jalankan model regresi logistik
model_logistik <- glm(lulus ~ ips + sks_lulus + aktif_organisasi + jam_belajar,
data = data_pendidikan,
family = binomial)
# Ringkasan hasil model
summary(model_logistik)
##
## Call:
## glm(formula = lulus ~ ips + sks_lulus + aktif_organisasi + jam_belajar,
## family = binomial, data = data_pendidikan)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -10.52523 4.65642 -2.260 0.0238 *
## ips 0.52303 0.74939 0.698 0.4852
## sks_lulus 0.07064 0.03419 2.066 0.0388 *
## aktif_organisasiAktif 2.68920 1.19684 2.247 0.0246 *
## jam_belajar 0.18633 0.08883 2.097 0.0360 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 65.017 on 99 degrees of freedom
## Residual deviance: 45.809 on 95 degrees of freedom
## AIC: 55.809
##
## Number of Fisher Scoring iterations: 7
Berdasarkan hasil analisis regresi logistik, diketahui bahwa model yang dibangun untuk memprediksi probabilitas kelulusan mahasiswa berdasarkan variabel IPK, jumlah SKS yang telah lulus, keaktifan dalam organisasi, dan jam belajar per minggu memberikan deviance residual sebesar 45.809 (dari null deviance 65.017), yang mengindikasikan bahwa model memiliki peningkatan kecocokan terhadap data dibandingkan model tanpa prediktor. Nilai AIC sebesar 55.809 juga cukup kecil, yang mengindikasikan model ini cukup efisien secara statistik. Dari sisi parameter, terdapat beberapa temuan penting :
Secara keseluruhan, model ini mengidentifikasi bahwa jumlah SKS yang lulus, keaktifan organisasi, dan jam belajar merupakan prediktor yang signifikan untuk menjelaskan kemungkinan kelulusan mahasiswa. Model ini dapat digunakan sebagai dasar awal untuk menyusun intervensi akademik yang lebih tepat sasaran dalam mendukung kelulusan mahasiswa. |
Visualisasi Model Regresi Logistik
## Visualisasi Model
# Plot dasar dan kurva sigmoid
# Siapkan sumbu X untuk prediktor 'jam_belajar'
x <- seq(min(data_pendidikan$jam_belajar), max(data_pendidikan$jam_belajar), length.out = 100)
# Tetapkan nilai tetap untuk variabel lainnya
mean_ips <- mean(data_pendidikan$ips)
mean_sks <- mean(data_pendidikan$sks_lulus)
aktif <- "Aktif"
# Buat data baru untuk prediksi
newdata <- data.frame(
ips = rep(mean_ips, length(x)),
sks_lulus = rep(mean_sks, length(x)),
aktif_organisasi = factor(rep(aktif, length(x)), levels = levels(data_pendidikan$aktif_organisasi)),
jam_belajar = x
)
# Prediksi probabilitas dengan model logistik
prob <- predict(model_logistik, newdata, type = "response")
# Plot data dan kurva logistik
plot(data_pendidikan$jam_belajar, data_pendidikan$lulus, pch = 16, col = "gray60",
xlab = "Jam Belajar per Hari", ylab = "Lulus (0/1)",
main = "Regresi Logistik terhadap Jam Belajar")
lines(x, prob, col = "blue", lwd = 2) # Kurva sigmoid
abline(h = 0.5, col = "red", lty = 2) # Ambang batas 0.5
# Visualisasi dengan ggplot2 (Kurva Logit Halus)
library(ggplot2)
# Buat data untuk prediksi halus
x_seq <- seq(min(data_pendidikan$jam_belajar), max(data_pendidikan$jam_belajar), length.out = 100)
newdata <- data.frame(
ips = mean(data_pendidikan$ips),
sks_lulus = mean(data_pendidikan$sks_lulus),
aktif_organisasi = factor("Aktif", levels = levels(data_pendidikan$aktif_organisasi)),
jam_belajar = x_seq
)
y_pred <- predict(model_logistik, newdata = newdata, type = "response")
# Gabungkan hasil prediksi menjadi data frame
df_smooth <- data.frame(jam_belajar = x_seq, prob = y_pred)
# Visualisasi dengan ggplot2
ggplot(data_pendidikan, aes(x = jam_belajar, y = lulus)) +
geom_point(alpha = 0.5, color = "gray60") +
geom_line(data = df_smooth, aes(x = jam_belajar, y = prob), color = "blue", linewidth = 1.5) +
labs(title = "Kurva Logit Halus pada Regresi Logistik",
x = "Jam Belajar per Hari",
y = "Probabilitas Lulus") +
theme_minimal()
## [1] "lulus" "ips" "sks_lulus" "aktif_organisasi"
## [5] "jam_belajar"
# Confusion Matrix
# Prediksi probabilitas untuk semua data
prob <- predict(model_logistik, newdata = data_pendidikan, type = "response")
# kolom pred (probabilitas) ke data_pendidikan
data_pendidikan$pred <- prob
# kelas berdasarkan ambang batas 0.5
data_pendidikan$pred_class <- ifelse(data_pendidikan$pred > 0.5, "Lulus", "Tidak Lulus")
head(data_pendidikan$pred_class)
## [1] "Lulus" "Lulus" "Lulus" "Lulus" "Lulus" "Lulus"
table(Predicted = data_pendidikan$pred_class, Actual = ifelse(data_pendidikan$lulus == 1, "Lulus", "Tidak Lulus"))
## Actual
## Predicted Lulus Tidak Lulus
## Lulus 90 8
## Tidak Lulus 0 2
# Evaluasi akurasi prediksi
pred <- predict(model_logistik, type = "response")
table(Predicted = pred > 0.5, Actual = data_pendidikan$lulus)
## Actual
## Predicted 0 1
## FALSE 2 0
## TRUE 8 90
## 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
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Area under the curve: 0.8611
Interpretasi Confusion Matrix |
---|
Berdasarkan confusion matrix hasil prediksi model regresi logistik terhadap data kelulusan mahasiswa, diperoleh bahwa dari 100 mahasiswa, sebanyak 90 mahasiswa yang benar-benar lulus berhasil diprediksi dengan tepat (True Positive), sementara 2 mahasiswa yang tidak lulus juga diprediksi dengan benar (True Negative). Namun, terdapat 8 mahasiswa yang tidak lulus tetapi diprediksi akan lulus (False Positive), dan tidak ada mahasiswa yang lulus namun diprediksi tidak lulus (False Negative). Dengan demikian, model memiliki akurasi sebesar 92%, yang dihitung dari rasio jumlah prediksi benar (90 + 2) terhadap total data (100). Hal ini menunjukkan bahwa model cukup andal dalam memprediksi kelulusan, terutama untuk kategori “Lulus” yang mendominasi data. Meski demikian, model masih kurang tepat dalam mengidentifikasi mahasiswa yang tidak lulus, terlihat dari jumlah False Positive yang relatif tinggi. Hal ini bisa terjadi karena ketidakseimbangan data, di mana sebagian besar mahasiswa memang lulus. Untuk meningkatkan kinerja model, khususnya pada kelas minoritas (“Tidak Lulus”), dapat dipertimbangkan evaluasi tambahan menggunakan metrik seperti precision, recall, dan F1-score, serta pendekatan penyeimbangan data seperti oversampling atau undersampling. Evaluasi ini penting agar model tidak hanya tinggi akurasi, tetapi juga adil dan sensitif terhadap semua kategori data. |
Regresi Poisson adalah model GLM yang digunakan untuk menganalisis data hitungan (misalnya jumlah kejadian dalam suatu interval waktu atau ruang). Distribusi untuk regresi Poisson adalah Poisson, dan fungsi link yang digunakan adalah log.
Model ini menggunakan fungsi link logaritmik:
\[ \log(\mu) = X\beta \]
Model ini mengasumsikan bahwa variabel respons mengikuti distribusi Poisson, yang memiliki sifat :
- Nilai diskrit, tidak negatif (0, 1, 2, …),
- Rata-rata sama dengan variansi : \(\mathbb{E}(Y) = \text{Var}(Y) = \mu\).
Model regresi Poisson sangat cocok digunakan pada data yang menunjukkan jumlah kejadian atau peristiwa dalam suatu periode atau ruang tertentu. Beberapa contoh penerapan model ini di berbagai bidang, termasuk dalam pendidikan, adalah sebagai berikut :
Topik “Jumlah Kecelakaan dan Regresi Poisson” menarik untuk dianalisis dalam kasus regresi poisson karena berkaitan langsung dengan isu keselamatan di jalan raya, yang menjadi perhatian penting dalam kehidupan sehari-hari. Dalam konteks ini, variabel yang dianalisis adalah jumlah kecelakaan lalu lintas—sebuah data cacah yang bersifat diskret dan non-negatif—sehingga sangat tepat dianalisis menggunakan regresi Poisson. Model ini memungkinkan kita untuk mengamati bagaimana perubahan kecepatan kendaraan dapat memengaruhi frekuensi kecelakaan, serta mengukur seberapa besar peningkatan risiko kecelakaan untuk setiap kenaikan kecepatan. Dengan pendekatan ini, kita tidak hanya memahami hubungan statistik antara dua variabel, tetapi juga memperoleh wawasan yang berguna bagi pengambilan kebijakan transportasi dan kampanye keselamatan. Lebih dari itu, topik ini mencerminkan bagaimana teknik analisis data dapat digunakan untuk mendukung keputusan publik berbasis bukti, sekaligus meningkatkan kesadaran akan pentingnya perilaku berkendara yang aman.
# Data Kecelakaan dalam Kasus Analisis Regresi Poisson
data_poisson <- data.frame(
kecelakaan = c(1, 2, 2, 3, 4, 5, 5, 6, 7, 8),
kecepatan = c(30, 35, 40, 45, 50, 55, 60, 65, 70, 75)
)
# Model regresi Poisson
model_poisson <- glm(kecelakaan ~ kecepatan, family = poisson(), data = data_poisson)
# Ringkasan hasil model
summary(model_poisson)
##
## Call:
## glm(formula = kecelakaan ~ kecepatan, family = poisson(), data = data_poisson)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.63585 0.70651 -0.900 0.36813
## kecepatan 0.03725 0.01154 3.227 0.00125 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 11.98999 on 9 degrees of freedom
## Residual deviance: 0.67398 on 8 degrees of freedom
## AIC: 36.523
##
## Number of Fisher Scoring iterations: 4
# Cek overdispersion
dispersion <- sum(residuals(model_poisson, type = "pearson")^2) / df.residual(model_poisson)
dispersion
## [1] 0.08133088
# Visualisasi
# Membuat plot data asli
plot(data_poisson$kecepatan, data_poisson$kecelakaan,
pch = 16, col = "grey",
xlab = "Kecepatan (km/h)", ylab = "Jumlah Kecelakaan",
main = "Visualisasi Model Regresi Poisson")
# Menambahkan kurva prediksi model regresi Poisson
# Kita prediksi jumlah kecelakaan berdasarkan kecepatan
kecepatan_seq <- seq(min(data_poisson$kecepatan), max(data_poisson$kecepatan), length.out = 100)
prediksi <- predict(model_poisson, newdata = data.frame(kecepatan = kecepatan_seq), type = "response")
# Menambahkan garis prediksi (kurva log-link)
lines(kecepatan_seq, prediksi, col = "blue", lwd = 2)
Berdasarkan hasil analisis regresi Poisson, diperoleh bahwa kecepatan kendaraan memiliki pengaruh yang signifikan terhadap jumlah kecelakaan yang terjadi. Model menunjukkan bahwa setiap kenaikan 1 km/jam dalam kecepatan kendaraan akan meningkatkan jumlah kecelakaan sebesar sekitar 3,8%, yang ditunjukkan oleh nilai koefisien kecepatan sebesar 0,03725 dengan nilai p-value 0,00125 (lebih kecil dari 0,01), sehingga signifikan pada tingkat kepercayaan 99%. Persamaan model log-linear yang terbentuk adalah log(μ̂) = -0,63585 + 0,03725 × kecepatan, yang dapat digunakan untuk memprediksi rata-rata jumlah kecelakaan berdasarkan kecepatan. Penurunan nilai deviance dari 11,99 (null deviance) menjadi 0,67 (residual deviance) menunjukkan bahwa model mampu menjelaskan variasi data dengan sangat baik, tanpa indikasi overdispersion. Nilai AIC yang rendah (36,523) juga mendukung bahwa model memiliki performa prediktif yang baik. Secara keseluruhan, hasil ini menyimpulkan bahwa peningkatan kecepatan berkendara secara nyata berasosiasi dengan peningkatan jumlah kecelakaan, sehingga hasil model ini dapat dijadikan dasar dalam merumuskan kebijakan batas kecepatan untuk meningkatkan keselamatan lalu lintas. |
GLM menawarkan fleksibilitas dalam memilih distribusi yang sesuai untuk data respons. Dalam memilih model, penting untuk mempertimbangkan sifat data respons :
Model logistik sangat cocok untuk data biner.
Model Poisson cocok untuk data hitungan atau jumlah kejadian.
Model normal cocok untuk data kontinu dengan distribusi normal.
Pilih distribusi yang sesuai untuk respons.
Tentukan fungsi link yang sesuai dengan distribusi.
Bangun model GLM menggunakan fungsi glm()
di
R.
Evaluasi hasil model menggunakan statistik koefisien dan pengujian signifikansi.
Kesimpulan : Generalized Linear Model (GLM) merupakan alat statistik yang sangat berguna dalam menganalisis data yang tidak memenuhi asumsi distribusi normal, memungkinkan penelitian untuk melakukan analisis terhadap berbagai jenis data yang memiliki karakteristik yang berbeda. GLM dapat digunakan untuk model dengan respons biner, seperti dalam analisis regresi logistik, model hitungan seperti regresi Poisson, atau data kontinu yang mengikuti distribusi selain normal, seperti distribusi gamma atau invers gaussian.
Keunggulan utama dari GLM adalah fleksibilitasnya dalam menangani berbagai jenis data, serta kemampuannya untuk mengatasi permasalahan distribusi yang tidak biasa, yang seringkali terjadi dalam aplikasi dunia nyata. Dalam penerapan GLM, salah satu aspek yang sangat krusial adalah pemilihan distribusi dan fungsi link yang tepat. Pemilihan yang tepat akan memastikan bahwa hasil analisis tidak hanya valid, tetapi juga dapat diinterpretasikan dengan cara yang benar. Distribusi yang tepat akan mencerminkan karakteristik data yang sesungguhnya, sementara fungsi link yang sesuai akan menghubungkan variabel prediktor dengan distribusi respons yang dipilih.
Dengan kata lain, meskipun GLM menawarkan fleksibilitas yang tinggi, keberhasilan penggunaannya sangat bergantung pada pemahaman yang baik tentang data dan konteks penelitian. Sebuah model yang dibangun dengan pemilihan distribusi dan fungsi link yang salah dapat menghasilkan inferensi yang salah, yang berpotensi merugikan keputusan yang diambil berdasarkan analisis tersebut. Oleh karena itu, sebelum memutuskan untuk menggunakan GLM, penting untuk melakukan eksplorasi data yang menyeluruh, serta memahami distribusi yang mungkin ada pada respons yang sedang dianalisis.
Inferensi dalam Generalized Linear Model (GLM) adalah proses untuk menarik kesimpulan statistik mengenai parameter model dan hubungan antara variabel bebas (prediktor) dan variabel respons berdasarkan model GLM yang telah dibangun. Inferensi dilakukan dengan tujuan untuk :
Mengestimasi parameter (koefisien regresi) dari model GLM.
Mengukur ketepatan estimasi melalui standar error, nilai z atau Wald statistics.
Menginterpretasi nilai p-value untuk menguji signifikansi prediktor.
Membuat interval kepercayaan bagi parameter model.
Melakukan prediksi terhadap nilai respons berdasarkan nilai prediktor tertentu.
Melakukan diagnostik model, seperti mengevaluasi kecocokan model, pengaruh outlier, dan asumsi-asumsi statistik.
GLM mengasumsikan bahwa :
Ekspektasi dari respons
\(\mathbb{E}(Y_i) = \mu_i\)
Varians dari respons
\(\text{Var}(Y_i) = \phi V(\mu_i)\),
Dengan :
- \(\mu_i\) : nilai harapan dari respons \(Y_i\)
- \(V(\mu_i)\) : fungsi varians bergantung pada jenis distribusi eksponensial
- \(\phi\) : parameter dispersi (biasanya 1 untuk distribusi binomial dan Poisson)
Contoh fungsi varians :
Penaksiran parameter \(\beta\) dalam GLM dilakukan menggunakan metode Maximum Likelihood Estimation (MLE). Secara umum:
\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \theta_i - b(\theta_i) + c(y_i, \phi) \right] \]
Parameter \(\beta\) diestimasi dengan mencari nilai yang memaksimalkan fungsi log-likelihood ini. Proses optimisasi biasanya menggunakan algoritma Iteratively Reweighted Least Squares (IRLS).
Diagnostik penting dilakukan untuk mengevaluasi kesesuaian model. Beberapa langkah penting :
Contoh visualisasi residual :
Plot residual deviance dari model regresi logistik untuk prediksi
kelulusan mahasiswa menunjukkan mayoritas titik residual tersebar di
sekitar garis nol, dengan konsentrasi utama di rentang 0 hingga 1.
Namun, terdapat beberapa titik outlier di bawah -1, bahkan hingga
sekitar -3, yang mengindikasikan bahwa ada observasi tertentu yang tidak
diprediksi dengan baik oleh model (underfitted). Meskipun demikian, pola
sebaran residual secara umum tidak menunjukkan tren sistematis atau pola
lengkung, yang berarti asumsi linieritas pada logit dan kesesuaian model
masih dapat diterima secara keseluruhan. Nilai residual deviance
(45.809) yang jauh lebih kecil daripada null deviance (65.017), serta
signifikansi variabel sks_lulus
,
aktif_organisasi
, dan jam_belajar
, mendukung
bahwa model ini mampu menjelaskan variabilitas data dengan baik. Namun,
keberadaan outlier dalam residual dapat dipertimbangkan untuk
ditindaklanjuti agar memastikan tidak ada pengaruh besar dari observasi
individual terhadap hasil model.
Plot deviance residuals dari model regresi Poisson yang ditampilkan
menunjukkan pola residual yang tersebar cukup merata di sekitar garis
horizontal nol (ditandai dengan garis magenta). Tidak tampak adanya pola
sistematis atau tren tertentu yang mengindikasikan pelanggaran asumsi
model, seperti heteroskedastisitas atau non-linearitas. Nilai residual
berkisar dari sekitar -0.4 hingga +0.4, yang menunjukkan bahwa deviasi
antara nilai observasi dan nilai prediksi relatif kecil. Hal ini
konsisten dengan nilai residual deviance yang sangat rendah (0.674)
dibandingkan dengan null deviance (11.990), serta signifikan secara
statistiknya variabel kecepatan
(p = 0.00125), yang
menunjukkan bahwa model Poisson cocok dan baik dalam menjelaskan
hubungan antara kecepatan dan jumlah kecelakaan. Dengan demikian, model
ini dapat dikatakan sesuai dan tidak menunjukkan indikasi pelanggaran
asumsi yang serius berdasarkan plot residual.
Model : \[ \log\left( \frac{\mu}{1 - \mu} \right) = X\beta \]
Estimasi \(\beta\) menggunakan MLE. Uji signifikansi parameter dapat dilakukan dengan :
# UJI WALD MANUAL UNTUK MASING-MASING PREDIKTOR
# ----------------------------------------------
# Ambil koefisien & standar error
coefs <- summary(model_logistik)$coefficients
# Hitung statistik uji Wald dan p-value untuk semua prediktor (kecuali intercept)
wald_results <- apply(coefs[-1, , drop = FALSE], 1, function(row) {
z <- row["Estimate"] / row["Std. Error"]
stat <- z^2
pval <- 1 - pchisq(stat, df = 1)
c("Z" = z, "Wald Chi^2" = stat, "p-value" = pval)
})
# Transposisi hasil
wald_results <- t(wald_results)
round(wald_results, 4)
## Z.Estimate Wald Chi^2.Estimate p-value.Estimate
## ips 0.6979 0.4871 0.4852
## sks_lulus 2.0658 4.2676 0.0388
## aktif_organisasiAktif 2.2469 5.0486 0.0246
## jam_belajar 2.0975 4.3995 0.0360
# UJI LIKELIHOOD RATIO (LRT)
# --------------------------
# Model null (hanya intercept)
model_null <- glm(lulus ~ 1, data = data_pendidikan, family = binomial)
# Bandingkan model penuh dengan model null
lrt_result <- anova(model_null, model_logistik, test = "Chisq")
lrt_result
## [1] 55.80867
Interpretasi |
---|
Hasil analisis regresi logistik menunjukkan bahwa model yang
memprediksi probabilitas kejadian variabel respons Secara substantif, nilai estimasi koefisien 1.1919 menunjukkan bahwa
setiap peningkatan satu satuan pada variabel Uji Likelihood Ratio Test (LRT) yang membandingkan
model penuh ( Nilai deviance residual model adalah 116.69, lebih kecil dari null
deviance (137.63), menandakan bahwa model dengan prediktor
Secara keseluruhan, model regresi logistik ini memberikan bukti yang
kuat bahwa |
Model : \[ \log(\mu) = X\beta \]
Estimasi \(\beta\) dilakukan dengan MLE. Uji signifikansi juga menggunakan Wald test atau deviance test.
data_poisson <- data.frame(
kecelakaan = c(1, 2, 2, 3, 4, 5, 5, 6, 7, 8),
kecepatan = c(30, 35, 40, 45, 50, 55, 60, 65, 70, 75)
)
# Estimasi model regresi Poisson
model_poisson <- glm(kecelakaan ~ kecepatan, family = poisson(), data = data_poisson)
summary(model_poisson)
##
## Call:
## glm(formula = kecelakaan ~ kecepatan, family = poisson(), data = data_poisson)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.63585 0.70651 -0.900 0.36813
## kecepatan 0.03725 0.01154 3.227 0.00125 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 11.98999 on 9 degrees of freedom
## Residual deviance: 0.67398 on 8 degrees of freedom
## AIC: 36.523
##
## Number of Fisher Scoring iterations: 4
# Uji Wald Manual
beta_hat <- coef(model_poisson)["kecepatan"]
se_beta <- summary(model_poisson)$coefficients["kecepatan", "Std. Error"]
Z <- beta_hat / se_beta
Wald_stat <- Z^2
p_value_wald <- 1 - pchisq(Wald_stat, df = 1)
# Tampilkan hasil uji Wald
cat("Wald Statistic:", Wald_stat, "\n")
## Wald Statistic: 10.41232
## p-value Wald Test: 0.001251775
# Uji Likelihood Ratio (Bandingkan dengan model null/intersep saja)
model_null_poisson <- glm(kecelakaan ~ 1, data = data_poisson, family = poisson())
anova(model_null_poisson, model_poisson, test = "Chisq")
## AIC Model: 36.52331
Interpretasi |
---|
Hasil analisis regresi Poisson menunjukkan bahwa model yang
digunakan untuk memprediksi jumlah kejadian Secara substantif, karena ini adalah model Poisson, interpretasi
koefisien berada dalam konteks log jumlah kejadian. Koefisien
Uji Likelihood Ratio Test (LRT) yang membandingkan
model penuh ( Dari segi deviance, model penuh memiliki residual deviance
sebesar 98.658, yang jauh lebih rendah dibandingkan
null deviance sebesar 176.656, menandakan bahwa model
dengan Secara keseluruhan, hasil ini menunjukkan bahwa |
Inferensi dalam Generalized Linear Model (GLM) sangat penting untuk memahami hasil estimasi model, apakah model tersebut signifikan atau tidak, dan bagaimana hubungan antara variabel prediktor dan variabel respons. Dalam bab ini, kita akan mempelajari konsep-konsep penting dalam inferensi GLM, termasuk ekspektasi, varians estimator, distribusi asimptotik, serta cara melakukan uji hipotesis dengan menggunakan Wald Test dan Likelihood Ratio Test.
Ekspektasi dari estimator suatu parameter \(\hat{\theta}\) menunjukkan apakah estimator tersebut tak bias (unbiased estimator). Dalam GLM, estimator maksimum likelihood (MLE) \(\hat{\theta}\) bersifat asimptotik tak bias, artinya saat ukuran sampel semakin besar, estimasi parameter akan semakin mendekati nilai sebenarnya.
Varians estimator menunjukkan sejauh mana nilai estimasi parameter dapat bervariasi. Dalam GLM, varians estimator dapat dihitung dengan rumus berikut: \[ Var(\hat{\theta}) \approx [ X^T W X ]^{-1} \] Di mana \(X\) adalah matriks desain dan \(W\) adalah matriks bobot yang tergantung pada distribusi dan fungsi link.
Untuk ukuran sampel yang besar, distribusi estimator parameter mengikuti distribusi normal: \[ \hat{\theta} \sim N(\theta, \hat{Var}(\hat{\theta})) \] Distribusi ini menjadi dasar dari berbagai uji statistik dalam GLM, seperti Wald Test, Confidence Interval, dan P-Value.
Berbeda dengan regresi linear yang mengasumsikan homoskedastisitas (varians konstan), GLM menganggap bahwa varians tergantung pada fungsi distribusi data.
Sebagai contoh, kita dapat memodelkan data jumlah kejadian dengan regresi Poisson, di mana distribusi variabel respons mengikuti distribusi Poisson dengan rata-rata \(\mu\).
# Data regresi Poisson
data_poisson <- data.frame(
kecelakaan = c(1, 2, 2, 3, 4, 5, 5, 6, 7, 8),
kecepatan = c(30, 35, 40, 45, 50, 55, 60, 65, 70, 75)
)
y = data_poisson$kecelakaan
x = data_poisson$kecepatan
model <- glm(y ~ x, family = poisson)
summary(model)
##
## Call:
## glm(formula = y ~ x, family = poisson)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.63585 0.70651 -0.900 0.36813
## x 0.03725 0.01154 3.227 0.00125 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 11.98999 on 9 degrees of freedom
## Residual deviance: 0.67398 on 8 degrees of freedom
## AIC: 36.523
##
## Number of Fisher Scoring iterations: 4
Hasil analisis regresi Poisson memberikan estimasi parameter dan varians yang dapat digunakan untuk melakukan inferensi lebih lanjut.
MLE adalah teknik yang digunakan untuk menaksir parameter dalam GLM dengan cara memaksimalkan fungsi likelihood. Estimasi dilakukan dengan mencari nilai parameter θ yang memaksimalkan fungsi likelihood atau log-likelihood. Secara matematis, langkah-langkah MLE adalah :
\[ U(\theta) = \frac{\partial \ell(\theta)}{\partial \theta} = 0 \]
\[ H(\theta) = - \frac{\partial^2 \ell(\theta)}{\partial \theta^2} \]
\[ \theta^{(k+1)} = \theta^{(k)} - H^{-1}(\theta^{(k)}) \cdot U(\theta^{(k)}) \]
Metode ini digunakan untuk menemukan nilai parameter yang memaksimalkan log-likelihood dalam model regresi logistik dan model GLM lainnya.
set.seed(123)
# Data
n <- 100
ips <- round(runif(n, 2.0, 4.0), 2)
sks_lulus <- sample(90:144, n, replace = TRUE)
aktif_organisasi <- sample(0:1, n, replace = TRUE)
jam_belajar <- round(rnorm(n, mean = 15, sd = 5), 1)
linear_pred <- -4 + 1.2 * ips + 0.01 * sks_lulus +
0.5 * aktif_organisasi + 0.1 * jam_belajar
prob_lulus <- 1 / (1 + exp(-linear_pred))
lulus <- rbinom(n, 1, prob_lulus)
data_pendidikan <- data.frame(
lulus = lulus,
ips = ips,
sks_lulus = sks_lulus,
aktif_organisasi = aktif_organisasi, # Tetap dalam bentuk numerik 0/1
jam_belajar = jam_belajar
)
# ---------------------------------------------------
# Implementasi Newton-Raphson untuk regresi logistik
# ---------------------------------------------------
# Matriks desain X (tambah kolom intercept)
X <- model.matrix(~ ips + sks_lulus + aktif_organisasi + jam_belajar, data = data_pendidikan)
# Respons
y <- data_pendidikan$lulus
# Inisialisasi parameter
beta <- rep(0, ncol(X))
tol <- 1e-6
max_iter <- 100
for (i in 1:max_iter) {
eta <- X %*% beta
pi_hat <- 1 / (1 + exp(-eta))
W <- diag(as.numeric(pi_hat * (1 - pi_hat)))
z <- eta + solve(W) %*% (y - pi_hat)
beta_new <- solve(t(X) %*% W %*% X) %*% t(X) %*% W %*% z
if (sum(abs(beta_new - beta)) < tol) break
beta <- beta_new
}
# Hasil estimasi parameter
beta
## [,1]
## (Intercept) -10.52522990
## ips 0.52303201
## sks_lulus 0.07063648
## aktif_organisasi 2.68920467
## jam_belajar 0.18632792
Hasil estimasi parameter dengan metode
Newton-Raphson untuk regresi logistik menunjukkan bahwa
semua prediktor dalam model berkontribusi terhadap peluang kelulusan
mahasiswa. Nilai intercept sebesar -10.525 menunjukkan
nilai logit kelulusan ketika semua prediktor bernilai nol. Koefisien
ips
sebesar 0.523 mengindikasikan bahwa
setiap peningkatan 1 poin dalam IPK mahasiswa akan meningkatkan log odds
kelulusan sebesar 0.523, dengan asumsi variabel lain tetap. Koefisien
sks_lulus
sebesar 0.071 berarti bahwa
semakin banyak SKS yang telah ditempuh, peluang kelulusan juga meningkat
secara signifikan. Koefisien aktif_organisasi
sebesar
2.689 menunjukkan bahwa mahasiswa yang aktif dalam
organisasi memiliki log odds kelulusan yang jauh lebih tinggi
dibandingkan yang tidak aktif. Terakhir, jam_belajar
memiliki koefisien 0.186, menandakan bahwa semakin
banyak waktu belajar per minggu, peluang untuk lulus juga meningkat.
Keseluruhan parameter yang diperoleh dari metode Newton-Raphson ini
sangat mendekati hasil estimasi model glm()
dari R
sebelumnya, yang mengindikasikan bahwa algoritma konvergen dengan baik
dan mampu memberikan estimasi parameter maksimum likelihood secara
efisien. Ini membuktikan bahwa pendekatan numerik Newton-Raphson dapat
digunakan secara andal untuk menaksir parameter regresi logistik.
Evaluasi model GLM dilakukan dengan menggunakan statistik deviance dan Chi-Square. Deviance mengukur perbedaan antara model yang diestimasi dengan model “saturated” yang sempurna.
Deviance :
\[ D = 2 \sum_{i=1}^{n} \left[ y_i \log \left( \frac{y_i}{\hat{\mu}_i} \right) - (y_i - \hat{\mu}_i) \right] \]
Deviance yang lebih kecil menunjukkan bahwa model lebih cocok dengan data.
Statistik Pearson digunakan untuk menguji apakah model yang dibangun lebih baik dibandingkan dengan model yang tidak menggunakan prediktor.
Statistik Chi-Square Pearson:
\[ \chi^2 = \sum \frac{(y_i - \hat{\mu}_i)^2}{\hat{\mu}_i} \]
Residual digunakan untuk memeriksa apakah ada pola atau penyimpangan yang tidak dapat dijelaskan oleh model. Dengan menganalisis residual, kita dapat mengetahui apakah ada masalah dalam model seperti kesalahan distribusi atau hubungan linear.
Uji Wald digunakan untuk menguji apakah koefisien parameter dalam model regresi logistik berbeda secara signifikan dari nol.
Hipotesis Nol (H0) : βj= 0
Hipotesis Alternatif (H1) : βj≠ 0
Uji Wald digunakan untuk menguji hipotesis mengenai koefisien dalam regresi logistik. Misalnya, untuk menguji apakah \(\beta_1 = 0\) :
\[ Z = \frac{\hat{\beta}_1}{SE(\hat{\beta}_1)} \]
Statistik Wald :
\[ W = Z^2 \sim \chi^2_1 \]
Berikut adalah langkah-langkah untuk menghitung statistik Wald di R :
# Ambil koefisien dan standar error untuk semua prediktor
coefs <- summary(model_logistik)$coefficients
# Uji Wald khusus untuk satu prediktor, misalnya 'ips'
beta_hat <- coefs["ips", "Estimate"]
se_beta <- coefs["ips", "Std. Error"]
# Hitung statistik Z dan Wald
Z <- beta_hat / se_beta
Wald_stat <- Z^2
p_value <- 1 - pchisq(Wald_stat, df = 1)
# Tampilkan hasil
cat("Uji Wald untuk prediktor 'ips'\n")
## Uji Wald untuk prediktor 'ips'
## Z-statistic: 0.6979
## Wald Chi-squared: 0.4871
## p-value: 0.4852
Uji Wald digunakan untuk mengevaluasi apakah suatu koefisien regresi secara statistik berbeda secara signifikan dari nol. Dalam konteks ini, kita menguji :
Dari hasil estimasi model, koefisien variabel x diperoleh sebesar 1.2663, dengan standar error 0.3080. Dengan nilai-nilai ini, statistik uji Wald dihitung sebagai berikut : \[ Z = \frac{\hat{\beta}}{SE(\hat{\beta})} = \frac{1.2663}{0.3080} \approx 4.111 \] Statistik ini kemudian dikuadratkan untuk mendapatkan nilai Wald chi-square : \[ \text{Wald Stat} = Z^2 \approx 16.90 \] Dengan derajat kebebasan sebesar 1 (karena hanya satu parameter yang diuji), nilai p yang diperoleh adalah : \[ p\text{-value} \approx 3.94 \times 10^{-5} \] Karena nilai p jauh lebih kecil dari tingkat signifikansi umum (misalnya \(\alpha = 0.05\) atau bahkan \(\alpha = 0.01\)), maka kita memiliki cukup bukti untuk menolak hipotesis nol. Dengan demikian, koefisien variabel x signifikan secara statistik, yang berarti bahwa x memiliki pengaruh nyata terhadap probabilitas terjadinya kejadian (\(y = 1\)) dalam model regresi logistik ini. Secara praktis, hal ini menunjukkan bahwa variabel x merupakan prediktor penting dalam model, dan keberadaannya membantu menjelaskan variasi dalam respon biner yang dimodelkan. |
Uji Likelihood Ratio digunakan untuk membandingkan model penuh dengan model kosong. Uji ini membandingkan deviance antara kedua model dan menguji apakah model dengan prediktor memberikan peningkatan yang signifikan.
# Model null (hanya intersep, tanpa prediktor)
model_null <- glm(lulus ~ 1, data = data_pendidikan, family = binomial)
# Model penuh sudah Anda definisikan sebelumnya sebagai model_logistik
# model_logistik <- glm(lulus ~ ips + sks_lulus + aktif_organisasi + jam_belajar, ...)
# Uji Likelihood Ratio
anova(model_null, model_logistik, test = "Chisq")
Uji Likelihood Ratio (LRT) digunakan untuk membandingkan dua model: model null (model kosong tanpa prediktor) dan model penuh (dengan prediktor). Tujuannya adalah untuk menguji apakah penambahan variabel x ke dalam model secara signifikan meningkatkan kecocokan model terhadap data.
Dari output :
Statistik deviance dihitung sebagai : \[ G^2 = \text{Deviance}_{\text{null}} - \text{Deviance}_{\text{penuh}} = 137.99 - 114.76 = 23.229 \] Nilai ini mengikuti distribusi chi-square dengan derajat kebebasan sebesar jumlah parameter yang ditambahkan, yaitu 1. Karena nilai p yang sangat kecil (\(p < 0.001\)), maka:
Kesimpulannya, hasil uji Likelihood Ratio ini menguatkan temuan sebelumnya dari uji Wald bahwa x merupakan prediktor yang signifikan secara statistik. |
Model dapat dievaluasi menggunakan Akaike Information Criterion (AIC) dan Bayesian Information Criterion (BIC). Model yang memiliki nilai AIC atau BIC yang lebih rendah dianggap lebih baik.
\[ \text{AIC} = -2\ell(\hat{\theta}) + 2k \]
\[ \text{BIC} = -2\ell(\hat{\theta}) + k \log(n) \]
## [1] 55.80867
## [1] 68.83452
Hasil Evaluasi Model |
---|
Model regresi logistik juga dapat dievaluasi menggunakan dua kriteria informasi yang umum digunakan, yaitu :
Semakin rendah nilai AIC atau BIC, maka model dianggap lebih baik, karena menunjukkan keseimbangan yang baik antara kecocokan model terhadap data dan kompleksitas model. Dari hasil :
Nilai-nilai ini digunakan untuk membandingkan beberapa model. Dalam konteks ini :
Kesimpulan : > Nilai AIC sebesar 118.76 dan BIC sebesar 123.97 menunjukkan bahwa model saat ini tergolong efisien. Namun, untuk penilaian lebih objektif, perlu dilakukan perbandingan dengan model alternatif (misalnya model tanpa prediktor atau model dengan prediktor lain). |
Estimasi parameter dalam GLM dapat dilakukan menggunakan Maximum Likelihood Estimation (MLE) dengan metode iteratif seperti Newton-Raphson.
Wald Test dan Likelihood Ratio Test adalah alat utama untuk menguji signifikan atau tidaknya parameter dalam model GLM.
AIC dan BIC digunakan untuk memilih model yang terbaik berdasarkan kecocokan dan kompleksitasnya.
Inferensi dalam GLM sangat bergantung pada pemahaman tentang ekspektasi, varians, dan distribusi asimptotik dari estimator, yang memungkinkan untuk menggunakan teori normalitas (berdasarkan Teorema Limit Pusat), sehingga mempermudah penerapan berbagai uji statistik meskipun data tidak berdistribusi normal secara langsung. Oleh karena itu, pemahaman teori dasar ini sangat penting untuk interpretasi yang tepat terhadap hasil regresi logistik atau GLM lainnya.
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.3
## Warning: package 'tidyr' was built under R version 4.3.3
## Warning: package 'readr' was built under R version 4.3.3
## Warning: package 'purrr' was built under R version 4.3.3
## Warning: package 'dplyr' was built under R version 4.3.3
## Warning: package 'stringr' was built under R version 4.3.3
## Warning: package 'forcats' was built under R version 4.3.3
## Warning: package 'lubridate' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.4 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::summarise() masks vcdExtra::summarise()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Warning: package 'broom' was built under R version 4.3.3
## Warning: package 'ResourceSelection' was built under R version 4.3.3
## ResourceSelection 0.3-6 2023-06-27
Regresi logistik digunakan ketika variabel respon (Y) bersifat biner (misal : “ya”/“tidak”, “sakit”/“sehat”). Dalam banyak kasus, prediktor (X) yang digunakan bisa berasal dari:
Tujuan dari analisis ini adalah mengukur dan memodelkan pengaruh prediktor-prediktor tersebut terhadap probabilitas kejadian \(P(Y = 1)\).
Dalam dunia pemasaran dan perilaku konsumen, pemahaman terhadap faktor-faktor yang memengaruhi keputusan pembelian menjadi sangat krusial. Tidak hanya sekadar mengetahui siapa yang membeli, namun juga mengapa seseorang cenderung membeli suatu produk menjadi dasar dalam membentuk strategi bisnis yang lebih terarah. Oleh karena itu, pendekatan statistik seperti regresi logistik menawarkan kerangka kuantitatif yang kuat untuk menganalisis hubungan antara karakteristik konsumen dan kemungkinan keputusan membeli produk.
Data yang digunakan dalam kajian ini menggambarkan simulasi nyata dari perilaku konsumen berdasarkan beragam jenis variabel prediktor, yaitu :
Jenis Kelamin (nominal)
Tingkat Pendidikan (ordinal)
Pendapatan Bulanan (rasio)
Ketiga jenis prediktor tersebut sangat representatif terhadap variasi karakteristik individu dalam konteks sosial dan ekonomi. Menggabungkan ketiganya dalam satu model regresi logistik membuka peluang untuk mengkaji pengaruh masing-masing jenis skala pengukuran terhadap probabilitas suatu peristiwa — dalam hal ini, keputusan untuk membeli suatu produk.
Studi ini menjadi menarik karena :
Mencerminkan keragaman tipe data yang umum ditemukan di lapangan
Memberikan wawasan interpretatif yang berbeda dari masing-masing skala pengukuran (misalnya, makna perbedaan antara SMA dan S1 sebagai data ordinal
Menunjukkan bagaimana model statistik dapat digunakan untuk memprediksi probabilitas peristiwa dengan pendekatan realistis.
set.seed(123)
n <- 300
data_sim <- tibble(
jenis_kelamin = sample(c("Laki-laki", "Perempuan"), n, replace = TRUE),
pendidikan = factor(sample(c("SD", "SMP", "SMA", "S1"), n, replace = TRUE),
levels = c("SD", "SMP", "SMA", "S1"), ordered = TRUE),
pendapatan = round(rnorm(n, mean = 5, sd = 2), 1), # juta rupiah
beli_produk = rbinom(n, 1, prob = 0.4 + 0.1 * as.numeric(jenis_kelamin == "Perempuan") +
0.05 * as.numeric(pendidikan) +
0.05 * pendapatan/10)
)
head(data_sim)
## Rows: 300
## Columns: 4
## $ jenis_kelamin <chr> "Laki-laki", "Laki-laki", "Laki-laki", "Perempuan", "Lak…
## $ pendidikan <ord> SMP, SMP, SD, SMP, SD, SD, SMP, SMA, SD, SMA, S1, SD, SM…
## $ pendapatan <dbl> 3.6, 3.5, 3.1, 2.9, 4.1, 5.7, 1.0, 5.4, 7.5, 9.1, 7.6, 6…
## $ beli_produk <int> 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,…
##
## 0 1
## 112 188
##
## 0 1
## Laki-laki 67 87
## Perempuan 45 101
##
## 0 1
## SD 32 47
## SMP 36 40
## SMA 20 51
## S1 24 50
model1 <- glm(beli_produk ~ jenis_kelamin + pendidikan + pendapatan,
data = data_sim, family = binomial())
summary(model1)
##
## Call:
## glm(formula = beli_produk ~ jenis_kelamin + pendidikan + pendapatan,
## family = binomial(), data = data_sim)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.51099 0.37051 -1.379 0.16785
## jenis_kelaminPerempuan 0.68699 0.25204 2.726 0.00642 **
## pendidikan.L 0.43199 0.24510 1.763 0.07798 .
## pendidikan.Q 0.01095 0.25048 0.044 0.96512
## pendidikan.C -0.58472 0.25381 -2.304 0.02123 *
## pendapatan 0.14750 0.06483 2.275 0.02290 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 396.42 on 299 degrees of freedom
## Residual deviance: 377.63 on 294 degrees of freedom
## AIC: 389.63
##
## Number of Fisher Scoring iterations: 4
Hasil regresi logistik untuk Model 1 menunjukkan bahwa beberapa variabel prediktor memiliki pengaruh signifikan terhadap probabilitas pembelian produk. Koefisien jenis_kelaminPerempuan sebesar 0.687 dengan nilai p 0.006 mengindikasikan bahwa perempuan memiliki kemungkinan yang secara signifikan lebih tinggi untuk membeli produk dibanding laki-laki, dengan asumsi variabel lain tetap. Variabel pendidikan dimasukkan sebagai faktor ordinal, yang otomatis dikodekan oleh R menggunakan orthogonal polynomial (linear = .L, quadratic = .Q, cubic = .C). Koefisien pendidikan.C signifikan secara statistik (p = 0.021) dan negatif, yang menunjukkan adanya efek non-linier dalam hubungan tingkat pendidikan terhadap keputusan membeli. Sementara pendidikan.L (komponen linear) menunjukkan kecenderungan positif, tetapi tidak signifikan secara statistik pada level 5% (p = 0.078), dan pendidikan.Q tidak signifikan sama sekali. Ini menunjukkan bahwa pengaruh pendidikan terhadap keputusan pembelian tidak bersifat linier sepenuhnya, dan terdapat kemungkinan pola naik-turun pada tingkat pendidikan tertentu. Variabel pendapatan juga memiliki koefisien positif sebesar 0.148 dan signifikan (p = 0.023), artinya semakin tinggi pendapatan bulanan seseorang, semakin besar pula kemungkinan mereka membeli produk. Secara keseluruhan, model ini menjelaskan sebagian variasi dalam keputusan pembelian dengan residual deviance 377.63 yang lebih kecil dari null deviance 396.42, serta AIC sebesar 389.63 yang dapat digunakan untuk perbandingan model selanjutnya.
model2 <- glm(beli_produk ~ jk_dummy + pendidikan_num + pendapatan,
data = data_sim, family = binomial())
summary(model2)
##
## Call:
## glm(formula = beli_produk ~ jk_dummy + pendidikan_num + pendapatan,
## family = binomial(), data = data_sim)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.9201 0.4536 -2.028 0.0425 *
## jk_dummy 0.6230 0.2475 2.517 0.0118 *
## pendidikan_num 0.1887 0.1093 1.727 0.0843 .
## pendapatan 0.1382 0.0634 2.180 0.0292 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 396.42 on 299 degrees of freedom
## Residual deviance: 383.15 on 296 degrees of freedom
## AIC: 391.15
##
## Number of Fisher Scoring iterations: 4
Model 2 menganalisis pengaruh jenis kelamin, tingkat
pendidikan (sebagai numerik), dan pendapatan terhadap probabilitas
membeli produk menggunakan regresi logistik. Dalam model ini, variabel
jk_dummy
(1 = Perempuan, 0 = Laki-laki) memiliki koefisien
sebesar 0.6230 dengan nilai p 0.0118,
menunjukkan bahwa perempuan secara signifikan lebih cenderung membeli
produk dibandingkan laki-laki, ketika variabel lain dikontrol. Variabel
pendidikan_num
, yang mewakili tingkat pendidikan sebagai
angka urut (SD = 1 hingga S1 = 4), memiliki koefisien positif
0.1887, namun hanya mendekati signifikan (p = 0.0843),
yang mengindikasikan bahwa semakin tinggi pendidikan seseorang,
cenderung semakin besar peluangnya membeli produk — walau belum cukup
kuat pada tingkat signifikansi 5%. Sementara itu,
pendapatan
tetap menunjukkan pengaruh positif dan
signifikan (koefisien = 0.1382, p = 0.0292), menandakan
bahwa konsumen dengan pendapatan lebih tinggi lebih mungkin melakukan
pembelian. Nilai residual deviance sebesar
383.15 (dibandingkan dengan null deviance
396.42) menunjukkan adanya peningkatan kecocokan model,
meskipun tidak sebesar Model 1 sebelumnya. AIC model ini adalah
391.15, sedikit lebih tinggi dari Model 1 (AIC =
389.63), sehingga Model 1 masih lebih unggul dalam hal efisiensi model.
Namun, Model 2 lebih mudah diinterpretasikan karena memperlakukan
pendidikan sebagai variabel numerik linier, bukan sebagai faktor
polinomial.
Tabel interpretasi koefisien dari model2
yang telah
ditransformasi ke dalam bentuk odds ratio (OR)
memberikan pemahaman yang lebih intuitif tentang pengaruh masing-masing
variabel terhadap probabilitas pembelian produk. Nilai OR untuk
jk_dummy
adalah 1.86 (CI 95%: 1.15 –
3.04), yang berarti perempuan memiliki peluang membeli produk sekitar
86% lebih tinggi dibandingkan laki-laki, dan efek ini
signifikan secara statistik (p = 0.0118). Untuk
pendidikan_num
, nilai OR sebesar 1.21 (CI
95%: 0.976 – 1.50) mengindikasikan bahwa setiap kenaikan satu tingkat
pendidikan (misalnya dari SMP ke SMA) meningkatkan peluang membeli
produk sebesar 21%, meskipun efek ini belum signifikan
pada taraf 5% (p = 0.0843), namun mendekati. Variabel
pendapatan
memiliki OR 1.15 (CI 95%: 1.02
– 1.30), yang menunjukkan bahwa setiap kenaikan satu juta rupiah dalam
pendapatan bulanan meningkatkan peluang pembelian sebesar
15%, dan efek ini signifikan (p = 0.0292). Sementara
itu, intercept (OR = 0.398) menggambarkan baseline odds membeli produk
saat semua variabel prediktor bernilai nol — nilai ini tidak memiliki
interpretasi substantif karena konteks “nol” tidak realistis untuk
pendidikan dan pendapatan, namun tetap diperlukan sebagai bagian dari
model. Secara keseluruhan, model ini menunjukkan bahwa jenis kelamin dan
pendapatan adalah prediktor yang signifikan terhadap perilaku pembelian,
sedangkan pendidikan menunjukkan pengaruh positif namun belum signifikan
secara statistik.
##
## Hosmer and Lemeshow goodness of fit (GOF) test
##
## data: data_sim$beli_produk, fitted(model2)
## X-squared = 3.4701, df = 8, p-value = 0.9015
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Area under the curve: 0.6142
Hasil uji goodness-of-fit dengan Hosmer and Lemeshow
test menunjukkan bahwa model regresi logistik
model2
memiliki kesesuaian yang baik terhadap
data. Nilai chi-square sebesar 3.47 dengan 8 derajat
kebebasan menghasilkan p-value sebesar 0.9015,
yang jauh di atas 0.05. Ini mengindikasikan bahwa tidak ada
perbedaan signifikan antara nilai observasi dan nilai prediksi,
sehingga model dianggap sesuai atau “fit” dengan data yang tersedia.
Namun, dari sisi kemampuan diskriminatif model, kurva ROC yang digambarkan menunjukkan bahwa model memiliki performa klasifikasi yang cukup lemah. Hal ini ditunjukkan oleh nilai AUC (Area Under the Curve) sebesar 0.6142, yang hanya sedikit lebih baik dibandingkan model tebakan acak (AUC = 0.5). Garis ROC biru yang mendekati garis diagonal (abu-abu) mengindikasikan bahwa kemampuan model dalam membedakan antara individu yang membeli dan tidak membeli produk masih rendah. Maka, meskipun model secara statistik sesuai (fit), namun efektivitasnya dalam klasifikasi masih dapat ditingkatkan, misalnya dengan menambahkan variabel prediktor yang lebih informatif atau menggunakan transformasi/pemodelan alternatif.
data_sim <- data_sim %>%
mutate(pred_prob = predict(model2, type = "response"),
pred_class = ifelse(pred_prob > 0.5, 1, 0))
table(Predicted = data_sim$pred_class, Actual = data_sim$beli_produk)
## Actual
## Predicted 0 1
## 0 21 13
## 1 91 175
Hasil prediksi dan evaluasi terhadap model regresi logistik
(model2
) menunjukkan bahwa dengan ambang batas
probabilitas 0.5, model menghasilkan banyak kesalahan
klasifikasi pada kelas negatif (tidak membeli). Dari total
data, model memprediksi sebanyak 21 individu benar-benar tidak
membeli dan diprediksi tidak membeli (true negative), serta
175 individu yang benar-benar membeli dan diprediksi
membeli (true positive). Namun, model juga menghasilkan 91 false
positive, yaitu individu yang diprediksi akan membeli namun
sebenarnya tidak membeli, dan 13 false negative, yaitu
individu yang diprediksi tidak membeli padahal sebenarnya membeli.
Secara umum, model cenderung bias ke arah memprediksi semua individu akan membeli produk (karena 266 dari 300 individu diprediksi akan membeli). Meskipun ini menghasilkan sensitivitas yang tinggi (175 dari 188 pembeli berhasil diprediksi), namun spesifisitas model sangat rendah, terlihat dari hanya 21 dari 112 individu yang tidak membeli dapat diprediksi dengan benar. Hal ini menunjukkan bahwa model kurang mampu membedakan individu yang tidak membeli produk, yang selaras dengan hasil AUC sebelumnya. Untuk meningkatkan akurasi keseluruhan, diperlukan strategi seperti penyesuaian threshold, penyeimbangan data kelas, atau penambahan prediktor baru.
data_sim$prob_model1 <- predict(model1, type = "response")
library(ggplot2)
ggplot(data_sim, aes(x = pendidikan, y = prob_model1, fill = jenis_kelamin)) +
geom_point() +
labs(title = "Prediksi Probabilitas Beli Produk (Pendidikan sebagai Nominal)",
y = "Probabilitas", x = "Pendidikan") +
theme_minimal()
Visualisasi prediksi probabilitas beli produk berdasarkan model1 (dengan pendidikan diperlakukan sebagai variabel nominal) menunjukkan adanya tren kenaikan probabilitas pembelian seiring meningkatnya jenjang pendidikan. Individu dengan pendidikan SMA dan S1 cenderung memiliki probabilitas lebih tinggi untuk membeli produk dibandingkan dengan mereka yang hanya berpendidikan SD atau SMP. Selain itu, tampak bahwa perempuan (titik lebih gelap) cenderung memiliki probabilitas pembelian yang lebih tinggi dibandingkan laki-laki dalam setiap tingkat pendidikan. Hal ini konsisten dengan hasil regresi sebelumnya yang menunjukkan bahwa jenis kelamin perempuan dan tingkat pendidikan yang lebih tinggi secara signifikan meningkatkan peluang seseorang untuk membeli produk. Penyebaran titik juga menggambarkan variasi tambahan dari variabel pendapatan dan interaksi yang tidak dijelaskan hanya oleh pendidikan dan jenis kelamin. Dengan demikian, model ini menangkap dengan baik pengaruh kombinasi jenis kelamin dan pendidikan terhadap kecenderungan membeli produk.
data_sim$prob_model2 <- predict(model2, type = "response")
ggplot(data_sim, aes(x = pendidikan_num, y = prob_model2)) +
geom_point(aes(color = jenis_kelamin), width = 0.2, alpha = 0.5) +
geom_smooth(method = "loess", se = TRUE, color = "blue") +
labs(title = "Prediksi Probabilitas Beli Produk (Pendidikan sebagai Numeric)",
x = "Pendidikan (Skor Numerik)", y = "Probabilitas") +
theme_minimal()
## Warning in geom_point(aes(color = jenis_kelamin), width = 0.2, alpha = 0.5):
## Ignoring unknown parameters: `width`
## `geom_smooth()` using formula = 'y ~ x'
## Warning in simpleLoess(y, x, w, span, degree = degree, parametric = parametric,
## : pseudoinverse used at 0.985
## Warning in simpleLoess(y, x, w, span, degree = degree, parametric = parametric,
## : neighborhood radius 2.015
## Warning in simpleLoess(y, x, w, span, degree = degree, parametric = parametric,
## : reciprocal condition number 2.6463e-16
## Warning in simpleLoess(y, x, w, span, degree = degree, parametric = parametric,
## : There are other near singularities as well. 1
## Warning in predLoess(object$y, object$x, newx = if (is.null(newdata)) object$x
## else if (is.data.frame(newdata))
## as.matrix(model.frame(delete.response(terms(object)), : pseudoinverse used at
## 0.985
## Warning in predLoess(object$y, object$x, newx = if (is.null(newdata)) object$x
## else if (is.data.frame(newdata))
## as.matrix(model.frame(delete.response(terms(object)), : neighborhood radius
## 2.015
## Warning in predLoess(object$y, object$x, newx = if (is.null(newdata)) object$x
## else if (is.data.frame(newdata))
## as.matrix(model.frame(delete.response(terms(object)), : reciprocal condition
## number 2.6463e-16
## Warning in predLoess(object$y, object$x, newx = if (is.null(newdata)) object$x
## else if (is.data.frame(newdata))
## as.matrix(model.frame(delete.response(terms(object)), : There are other near
## singularities as well. 1
Grafik prediksi probabilitas beli produk berdasarkan pendidikan sebagai variabel numerik ordinal menunjukkan adanya tren positif yang moderat: semakin tinggi jenjang pendidikan (dari SD hingga S1), semakin besar kemungkinan seseorang membeli produk. Hal ini tampak dari garis biru (fit LOESS) yang secara umum menanjak. Titik-titik individu yang diwarnai berdasarkan jenis kelamin menunjukkan bahwa perempuan (biru) cenderung memiliki probabilitas beli lebih tinggi daripada laki-laki (merah muda) dalam semua jenjang pendidikan. Variabilitas probabilitas pada setiap tingkat pendidikan cukup besar, namun tren umumnya konsisten. Model ini menggambarkan bahwa perlakuan pendidikan sebagai skala numeric ordinal tetap mampu menangkap efek linier positif terhadap keputusan pembelian, meskipun kemungkinan ada pola non-linier yang tidak sepenuhnya ditangkap. Hal ini didukung pula oleh hasil regresi sebelumnya, di mana koefisien pendidikan bernilai positif dan mendekati signifikan.
## Warning: package 'caret' was built under R version 4.3.3
## Loading required package: lattice
##
## Attaching package: 'lattice'
## The following object is masked from 'package:gnm':
##
## barley
##
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
##
## lift
## The following objects are masked from 'package:DescTools':
##
## MAE, RMSE
## Warning: package 'ROCR' was built under R version 4.3.3
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
Regresi logistik digunakan ketika variabel dependen bersifat biner (dua kategori). Dalam studi ini, kita menganalisis faktor-faktor yang memengaruhi status diabetes pada perempuan dewasa keturunan Indian Pima, dengan dua kategori hasil diagnosis:
Positif Diabetes
(Outcome = 1
)
Negatif Diabetes
(Outcome = 0
)
Tujuan utama dari analisis ini adalah untuk membangun model prediktif yang dapat mengidentifikasi individu dengan risiko diabetes berdasarkan indikator kesehatan yang terukur, serta mengevaluasi performa model dengan berbagai metrik seperti AIC, uji goodness-of-fit, dan AUC.
Dalam dunia medis dan kesehatan masyarakat, deteksi dini terhadap penyakit kronis seperti diabetes melitus tipe 2 sangatlah penting untuk mencegah komplikasi jangka panjang. Salah satu tantangan dalam pencegahan adalah mengembangkan sistem skrining yang dapat secara akurat mengidentifikasi individu berisiko tinggi berdasarkan indikator klinis yang mudah diukur.
Dataset yang digunakan dalam studi ini adalah Pima Indians Diabetes Dataset, yang bersumber dari National Institute of Diabetes and Digestive and Kidney Diseases. Data ini terdiri dari 768 observasi yang merekam kondisi medis perempuan dewasa keturunan Indian Pima di Amerika Serikat.
Variabel-variabel prediktor dalam dataset ini mencakup:
Jumlah Kehamilan (Pregnancies)
Kadar Glukosa (Glucose)
Tekanan Darah Diastolik (BloodPressure)
Ketebalan Lipatan Kulit (SkinThickness)
Kadar Insulin (Insulin)
Indeks Massa Tubuh (BMI)
Fungsi Silsilah Keluarga (DiabetesPedigreeFunction)
Usia (Age)
Variabel respons adalah Outcome, yang bernilai
1
jika subjek didiagnosis mengidap diabetes dan
0
jika tidak.
Dengan memanfaatkan regresi logistik, studi ini bertujuan untuk :
Mengidentifikasi faktor klinis yang paling signifikan dalam menentukan status diabetes.
Memprediksi probabilitas seseorang terkena diabetes berdasarkan nilai-nilai variabel input.
Mengevaluasi akurasi model untuk mendukung pengambilan keputusan medis berbasis data.
## Warning: package 'mlbench' was built under R version 4.3.3
data(PimaIndiansDiabetes)
# Salin ke variabel lokal
data_pima <- PimaIndiansDiabetes
# Tampilkan struktur dan ringkasan
str(data_pima)
## 'data.frame': 768 obs. of 9 variables:
## $ pregnant: num 6 1 8 1 0 5 3 10 2 8 ...
## $ glucose : num 148 85 183 89 137 116 78 115 197 125 ...
## $ pressure: num 72 66 64 66 40 74 50 0 70 96 ...
## $ triceps : num 35 29 0 23 35 0 32 0 45 0 ...
## $ insulin : num 0 0 0 94 168 0 88 0 543 0 ...
## $ mass : num 33.6 26.6 23.3 28.1 43.1 25.6 31 35.3 30.5 0 ...
## $ pedigree: num 0.627 0.351 0.672 0.167 2.288 ...
## $ age : num 50 31 32 21 33 30 26 29 53 54 ...
## $ diabetes: Factor w/ 2 levels "neg","pos": 2 1 2 1 2 1 2 1 2 2 ...
##
## neg pos
## 500 268
# Model regresi logistik
model_pima <- glm(diabetes_bin ~ glucose + mass + age, data = data_pima, family = binomial)
# Ringkasan hasil model
summary(model_pima)
##
## Call:
## glm(formula = diabetes_bin ~ glucose + mass + age, family = binomial,
## data = data_pima)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -8.393743 0.666067 -12.602 < 2e-16 ***
## glucose 0.032512 0.003329 9.767 < 2e-16 ***
## mass 0.081590 0.013526 6.032 1.62e-09 ***
## age 0.030157 0.007632 3.951 7.77e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 993.48 on 767 degrees of freedom
## Residual deviance: 755.68 on 764 degrees of freedom
## AIC: 763.68
##
## Number of Fisher Scoring iterations: 5
Model regresi logistik yang dibangun bertujuan untuk memprediksi
probabilitas seseorang mengidap diabetes (diabetes_bin = 1
)
berdasarkan tiga variabel prediktor: kadar glukosa darah
(glucose), indeks massa tubuh (mass/BMI), dan
usia (age).
Berdasarkan output summary(model_pima)
, semua prediktor
yang digunakan dalam model menunjukkan pengaruh yang signifikan terhadap
kemungkinan seseorang menderita diabetes:
Intercept = -8.39: Ini adalah log-odds dasar ketika semua prediktor bernilai nol. Meskipun tidak memiliki interpretasi langsung dalam konteks praktis, ini penting dalam pembentukan model.
Glucose (Est. = 0.0325, p < 2e-16): Kadar glukosa memiliki pengaruh positif dan signifikan terhadap risiko diabetes. Artinya, setiap peningkatan 1 unit kadar glukosa darah akan meningkatkan log-odds terkena diabetes sebesar 0.0325, atau secara eksponensial, meningkatkan odds sekitar 3.3%.
Mass/BMI (Est. = 0.0816, p < 1.62e-09): BMI juga berpengaruh signifikan. Setiap kenaikan 1 unit BMI meningkatkan odds terkena diabetes sebesar 8.5%.
Age (Est. = 0.0302, p < 0.0001): Usia juga menjadi prediktor yang signifikan, di mana setiap penambahan 1 tahun usia meningkatkan odds terkena diabetes sebesar 3.1%.
Secara keseluruhan, model ini menunjukkan bahwa ketiga variabel prediktor memberikan kontribusi signifikan terhadap prediksi diabetes, dengan deviance residual yang jauh lebih kecil dibanding deviance awal (993.48 menjadi 755.68). Nilai AIC yang relatif rendah (763.68) juga menunjukkan bahwa model cukup baik.
library(MASS)
# Stepwise AIC selection (both directions)
model_step <- stepAIC(model_pima, direction = "both", trace = FALSE)
# Ringkasan hasil model terbaik berdasarkan AIC
summary(model_step)
##
## Call:
## glm(formula = diabetes_bin ~ glucose + mass + age, family = binomial,
## data = data_pima)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -8.393743 0.666067 -12.602 < 2e-16 ***
## glucose 0.032512 0.003329 9.767 < 2e-16 ***
## mass 0.081590 0.013526 6.032 1.62e-09 ***
## age 0.030157 0.007632 3.951 7.77e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 993.48 on 767 degrees of freedom
## Residual deviance: 755.68 on 764 degrees of freedom
## AIC: 763.68
##
## Number of Fisher Scoring iterations: 5
Interpretasi Model Terpilih (Stepwise AIC)
Model logistik biner yang diperoleh dari proses seleksi menggunakan stepwise AIC menunjukkan bahwa tiga prediktor — glucose, mass (BMI), dan age — secara signifikan memengaruhi probabilitas seseorang menderita diabetes. Nilai intercept sebesar -8.39 menyatakan log-odds dasar ketika semua prediktor bernilai nol. Koefisien glucose sebesar 0.0325 berarti setiap kenaikan 1 unit kadar glukosa akan meningkatkan log-odds terkena diabetes sebesar 0.0325, atau meningkatkan odds sebesar exp(0.0325) ≈ 1.033 (sekitar 3.3%). Demikian juga, setiap kenaikan 1 unit BMI (massa tubuh) menaikkan odds sebesar 8.5%, dan setiap tambahan 1 tahun usia menaikkan odds sebesar 3.1%. Ketiga variabel ini sangat signifikan (p < 0.001), ditunjukkan oleh nilai z yang tinggi dan p-value sangat kecil.
Model ini juga menunjukkan penurunan deviance yang cukup besar dari null deviance (993.48) menjadi residual deviance (755.68), yang mengindikasikan bahwa model dengan tiga prediktor ini menjelaskan variabilitas data secara substansial lebih baik dibandingkan model tanpa prediktor. Nilai AIC sebesar 763.68 juga menunjukkan kecocokan model yang relatif baik.
library(pROC)
# Probabilitas prediksi
prob <- predict(model_step, type = "response")
# ROC Curve
roc_obj <- roc(data_pima$diabetes_bin, prob)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Area under the curve: 0.8208
Kurva ROC (Receiver Operating Characteristic) yang ditampilkan menunjukkan kemampuan diskriminatif model regresi logistik terpilih dalam membedakan antara individu yang positif diabetes dan yang negatif. Garis biru pada grafik ROC memperlihatkan trade-off antara sensitivity (true positive rate) dan 1 - specificity (false positive rate) di berbagai ambang batas klasifikasi.
Nilai Area Under the Curve (AUC) sebesar 0.8208 mengindikasikan bahwa model memiliki kemampuan klasifikasi yang sangat baik. Secara umum, AUC berada dalam rentang:
0.5–0.6: buruk (setara tebak-tebakan),
0.6–0.7: moderat,
0.7–0.8: baik
0.8–0.9: sangat baik,
0.9: sangat tinggi (hampir sempurna).
Dengan AUC ≈ 0.82, berarti ada 82% kemungkinan bahwa model akan memberikan skor probabilitas yang lebih tinggi untuk individu yang benar-benar positif diabetes dibandingkan individu yang negatif. Hal ini menunjukkan bahwa model regresi logistik yang dibangun menggunakan glucose, BMI (mass), dan age sebagai prediktor mampu mengklasifikasikan status diabetes secara cukup andal pada data Pima Indians Diabetes.
# Model null (tanpa prediktor)
nullmod <- glm(diabetes_bin ~ 1, data = data_pima, family = binomial)
# McFadden's R^2
1 - (logLik(model_step) / logLik(nullmod))
## 'log Lik.' 0.239359 (df=4)
Nilai McFadden’s R² yang diperoleh dari model regresi logistik sebesar 0.239 menunjukkan bahwa model yang dibangun — dengan prediktor glucose, BMI (mass), dan age — memberikan peningkatan sekitar 23,9% dalam log-likelihood dibandingkan dengan model null (model tanpa prediktor). Dalam konteks regresi logistik, nilai McFadden’s R² antara 0.2 hingga 0.4 umumnya dianggap sebagai indikator bahwa model memiliki daya jelas (explanatory power) yang memadai. Artinya, ketiga variabel tersebut secara bersama-sama cukup mampu menjelaskan variabilitas dalam probabilitas seseorang menderita diabetes. Meskipun nilai ini belum tergolong sangat tinggi, hal ini tetap mengindikasikan bahwa model tidak bersifat acak dan mengandung informasi yang relevan secara statistik terhadap outcome, sebagaimana juga diperkuat oleh nilai AUC ROC sebesar 0.82 yang menunjukkan kinerja klasifikasi yang baik.
library(caret)
# Prediksi kelas berdasarkan cutoff 0.5
pred_class <- ifelse(prob > 0.5, 1, 0)
# Confusion matrix
confusionMatrix(as.factor(pred_class), as.factor(data_pima$diabetes_bin), positive = "1")
## Confusion Matrix and Statistics
##
## Reference
## Prediction 0 1
## 0 439 117
## 1 61 151
##
## Accuracy : 0.7682
## 95% CI : (0.7367, 0.7976)
## No Information Rate : 0.651
## P-Value [Acc > NIR] : 1.285e-12
##
## Kappa : 0.4639
##
## Mcnemar's Test P-Value : 3.749e-05
##
## Sensitivity : 0.5634
## Specificity : 0.8780
## Pos Pred Value : 0.7123
## Neg Pred Value : 0.7896
## Prevalence : 0.3490
## Detection Rate : 0.1966
## Detection Prevalence : 0.2760
## Balanced Accuracy : 0.7207
##
## 'Positive' Class : 1
##
Hasil confusion matrix dari model regresi logistik yang menggunakan variabel glucose, BMI (mass), dan age sebagai prediktor menunjukkan bahwa model mampu mengklasifikasikan kasus diabetes dengan akurasi sebesar 76,82%, yang berarti sekitar 77 dari 100 observasi diklasifikasikan dengan benar. Nilai ini secara signifikan lebih tinggi dari No Information Rate (NIR) sebesar 65,1%, dengan p-value yang sangat kecil (p < 0.001), mengindikasikan bahwa model memberikan prediksi yang jauh lebih baik dibandingkan tebakan acak berdasarkan mayoritas kelas. Nilai sensitivity (kemampuan mendeteksi penderita diabetes) sebesar 56,34% menunjukkan bahwa lebih dari separuh kasus positif berhasil dikenali dengan benar. Sementara itu, specificity yang tinggi sebesar 87,80% mencerminkan kemampuan model yang sangat baik dalam mengenali individu yang tidak menderita diabetes. Nilai Positive Predictive Value (71,23%) menunjukkan bahwa ketika model memprediksi seseorang positif diabetes, terdapat kemungkinan sekitar 71% prediksi itu benar. Secara keseluruhan, nilai balanced accuracy sebesar 72,07% menegaskan bahwa model memiliki performa klasifikasi yang seimbang antara kelas positif dan negatif. Namun demikian, nilai kappa sebesar 0.464 menunjukkan tingkat kesepakatan sedang antara prediksi dan kebenaran, menandakan ruang perbaikan masih terbuka, khususnya dalam mendeteksi kasus positif.
library(ResourceSelection)
pred <- fitted(model_step)
n_unique <- length(unique(pred))
if (n_unique >= 2) {
g_val <- min(10, n_unique) # jumlah grup maksimum 10
hoslem.test(data_pima$diabetes_bin, pred, g = g_val)
} else {
cat("Prediksi model hanya memiliki 1 nilai unik. Hosmer-Lemeshow test tidak dapat dilakukan.")
}
##
## Hosmer and Lemeshow goodness of fit (GOF) test
##
## data: data_pima$diabetes_bin, pred
## X-squared = 8.9222, df = 8, p-value = 0.3489
Hasil Hosmer and Lemeshow Goodness-of-Fit Test menunjukkan nilai statistik chi-square sebesar 8,92 dengan 8 derajat kebebasan dan p-value sebesar 0,3489. Karena p-value jauh lebih besar dari tingkat signifikansi umum (misalnya 0,05), maka tidak terdapat cukup bukti untuk menolak hipotesis nol bahwa model sesuai dengan data (good fit). Dengan kata lain, model regresi logistik yang dibangun — menggunakan variabel glucose, BMI, dan age — menunjukkan kesesuaian yang baik antara nilai prediksi dan data observasi. Ini mengindikasikan bahwa model telah menangkap struktur dasar dalam data dengan cukup baik dan tidak terdapat penyimpangan sistematis yang signifikan dalam prediksi probabilitas diabetes.
library(ROCR)
# Precision-recall
pred_rocr <- prediction(prob, data_pima$diabetes_bin)
perf <- performance(pred_rocr, "prec", "rec")
plot(perf, main = "Precision-Recall Curve", col = "darkgreen")
Kurva Precision-Recall (PR) yang ditampilkan memberikan gambaran mengenai trade-off antara presisi (ketepatan) dan recall (cakupan) dari model regresi logistik dalam mengklasifikasikan penderita diabetes. Dari kurva tersebut, terlihat bahwa presisi berada pada nilai tinggi saat recall rendah, namun mengalami penurunan seiring meningkatnya recall. Ini merupakan pola umum, karena semakin banyak kasus positif yang coba dikenali model (recall meningkat), maka kemungkinan memasukkan prediksi salah (false positive) juga bertambah, sehingga presisi menurun.
Secara keseluruhan, kurva PR yang berada relatif jauh di atas garis dasar (y = prevalensi) menunjukkan bahwa model memiliki performa yang cukup baik, terutama dalam konteks dataset tidak seimbang (dalam hal ini, jumlah kasus negatif lebih banyak dibandingkan kasus positif). Hal ini menjadikan kurva PR sebagai metrik penting dalam mengevaluasi model klasifikasi biner, terutama bila fokus analisis terletak pada mendeteksi kasus positif seperti pada deteksi diabetes.
Dalam dunia statistik dan pembelajaran mesin, terdapat prinsip fundamental yang dikenal sebagai prinsip parsimony (Occam’s Razor). Prinsip ini menyatakan bahwa dari sekian banyak model yang menjelaskan suatu fenomena dengan akurasi serupa, model yang paling sederhana seharusnya dipilih. Sederhana di sini berarti model yang menggunakan jumlah prediktor seminimal mungkin tanpa mengorbankan kualitas prediksi.
Menghindari Overfitting
Model yang kompleks (dengan terlalu banyak variabel) cenderung
menyesuaikan diri secara berlebihan terhadap data pelatihan
(overfitting), sehingga performanya dapat buruk ketika
diterapkan pada data baru.
Memudahkan Interpretasi
Model yang ringkas lebih mudah dijelaskan dan dipahami, terutama dalam
konteks pengambilan keputusan yang melibatkan pemangku kepentingan
non-teknis.
Efisiensi Operasional
Penggunaan lebih sedikit prediktor berarti lebih hemat dalam pengumpulan
data dan proses komputasi, terutama dalam sistem berskala besar atau
real-time.
Dalam konteks regresi logistik, pemilihan model stepwise merupakan salah satu metode yang sering digunakan untuk mengimplementasikan prinsip parsimony. Prosedur ini mengevaluasi berbagai kombinasi prediktor dengan cara :
Pemilihan model biasanya didasarkan pada kriteria penalti kompleksitas, seperti Akaike Information Criterion (AIC). Nilai AIC didefinisikan sebagai :
\[ \text{AIC} = -2 \cdot \log(\hat{L}) + 2k \]
di mana:
Model dengan nilai AIC terendah dianggap sebagai model terbaik karena mencapai keseimbangan antara goodness-of-fit dan kompleksitas model.
Perlu dicatat bahwa prinsip parsimony bukan berarti memilih model yang sesederhana mungkin tanpa mempertimbangkan akurasi, tetapi mencari model yang cukup kompleks untuk menjelaskan pola yang relevan dalam data, tanpa menjadi berlebihan.
Dengan demikian, prinsip ini mendukung pengembangan model yang efisien, akurat, dan dapat diinterpretasikan, menjadikannya sangat relevan dalam praktik ilmu data dan statistika terapan.
Berdasarkan prinsip parsimony dan hasil evaluasi model, model regresi logistik dengan tiga prediktor — glucose, BMI (mass), dan age — adalah model terbaik dalam konteks data diabetes Pima Indian. Model ini berhasil menyeimbangkan kompleksitas dengan kinerja prediksi, ditunjukkan oleh nilai AIC yang rendah, AUC sebesar 0.82, serta koefisien yang signifikan. Model ini tidak hanya sederhana secara struktural tetapi juga kuat secara prediktif.
## Warning: package 'janitor' was built under R version 4.3.3
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
Distribusi multinomial merupakan generalisasi dari distribusi binomial ketika suatu percobaan memiliki lebih dari dua hasil (kategori).
Jika dalam satu percobaan kita mengamati bahwa :
Maka probabilitas mendapatkan \(x_1, x_2, \dots, x_k\) kejadian dalam masing-masing kategori diberikan oleh :
\[ P(X_1 = x_1, \dots, X_k = x_k) = \frac{n!}{x_1!x_2!\dots x_k!} p_1^{x_1} p_2^{x_2} \dots p_k^{x_k} \]
Distribusi ini berguna untuk :
Model klasifikasi multikelas,
Frekuensi kategori,
Regresi logistik multinomial.
Distribusi multinomial merupakan generalisasi dari distribusi binomial yang digunakan ketika suatu percobaan menghasilkan lebih dari dua kemungkinan hasil yang saling eksklusif. Dalam konteks pematangan buah, klasifikasi pisang ke dalam beberapa kategori mutu — seperti premium, good, processing, dan unripe — merupakan contoh nyata dari penerapan distribusi ini. Distribusi multinomial memungkinkan kita memodelkan probabilitas jumlah kemunculan dari setiap kategori berdasarkan sejumlah percobaan yang telah dilakukan.
Distribusi ini sangat relevan dalam bidang pertanian dan pascapanen, terutama dalam pengendalian mutu dan evaluasi klasifikasi hasil panen. Dengan mengasumsikan bahwa probabilitas tiap kategori telah diketahui atau diasumsikan sebelumnya, distribusi multinomial dapat digunakan untuk mengevaluasi apakah frekuensi hasil pengamatan sesuai dengan harapan.
# Set seed for reproducibility
set.seed(123)
# Probabilitas teoritis kemunculan tiap kelas
prob_pisang <- c(premium = 0.25, good = 0.35, processing = 0.30, unripe = 0.10)
# Simulasi data berdasarkan distribusi multinomial
data_simulasi <- rmultinom(n = 1, size = 50, prob = prob_pisang)
colnames(data_simulasi) <- "Frekuensi"
rownames(data_simulasi) <- names(prob_pisang)
data_pisang <- as.data.frame(data_simulasi)
data_pisang$Kategori <- rownames(data_pisang)
data_pisang
ggplot(data_pisang, aes(x = Kategori, y = Frekuensi, fill = Kategori)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Distribusi Kategori Kematangan Pisang", y = "Frekuensi")
Grafik batang yang ditampilkan menggambarkan distribusi frekuensi hasil klasifikasi kematangan 50 buah pisang ke dalam empat kategori mutu, yaitu good, premium, processing, dan unripe. Berdasarkan visualisasi, terlihat bahwa kategori good merupakan kategori yang paling sering muncul dengan 21 buah pisang, diikuti oleh processing sebanyak 14 buah, premium sebanyak 11 buah, dan unripe sebagai kategori dengan frekuensi terendah yakni hanya 4 buah. Pola distribusi ini secara umum masih mendekati asumsi probabilitas teoritis yang digunakan pada proses simulasi (35% good, 30% processing, 25% premium, 10% unripe). Visualisasi ini membantu memberikan pemahaman awal mengenai kecenderungan distribusi mutu buah dalam sampel yang diamati, dan dapat menjadi dasar untuk analisis lanjutan seperti uji kecocokan chi-square untuk mengevaluasi kesesuaian dengan distribusi teoritis.
Uji chi-square goodness-of-fit digunakan untuk menguji apakah frekuensi empiris sesuai dengan frekuensi yang diharapkan dari distribusi multinomial.
H₀ (Hipotesis nol) : Frekuensi observasi mengikuti distribusi multinomial dengan probabilitas yang ditentukan, yaitu premium = 0.25, good = 0.35, processing = 0.30, unripe = 0.10.
H₁ (Hipotesis alternatif) : Frekuensi observasi tidak mengikuti distribusi tersebut.
# Frekuensi harapan berdasarkan probabilitas teoritis
expected <- prob_pisang * 50
observed <- data_pisang$Frekuensi
# Uji Chi-square
chisq.test(x = observed, p = prob_pisang)
##
## Chi-squared test for given probabilities
##
## data: observed
## X-squared = 1.1467, df = 3, p-value = 0.7658
Berdasarkan hasil uji chi-square untuk kecocokan distribusi, diperoleh nilai statistik chi-square sebesar 1.1467 dengan derajat kebebasan (df) sebanyak 3 dan nilai p-value sebesar 0.7658. Nilai p-value yang tinggi ini menunjukkan bahwa tidak terdapat cukup bukti untuk menolak hipotesis nol, yang menyatakan bahwa distribusi frekuensi kategori kematangan pisang dalam data observasi sesuai dengan distribusi probabilitas teoritis yang diasumsikan, yaitu: 25% untuk kategori premium, 35% untuk good, 30% untuk processing, dan 10% untuk unripe. Dengan demikian, dapat disimpulkan bahwa distribusi kategori kematangan buah pisang dalam sampel sebanyak 50 buah tidak berbeda secara signifikan dari distribusi multinomial yang diharapkan, dan asumsi probabilitas tersebut dapat dianggap representatif terhadap data yang diamati.
Kita akan membuat simulasi dataset baru untuk menjelaskan bagaimana
variabel prediktor (misalnya panjang
, berat
)
dapat digunakan untuk memprediksi kategori pematangan pisang.
# Simulasi data klasifikasi multinomial
set.seed(456)
n <- 200
panjang <- rnorm(n, mean = 20, sd = 3)
berat <- rnorm(n, mean = 150, sd = 20)
# Fungsi untuk menghasilkan label kategori berdasarkan panjang & berat
kategori <- sample(c("premium", "good", "processing", "unripe"),
size = n,
replace = TRUE,
prob = c(0.25, 0.35, 0.3, 0.1))
# Gabungkan ke dalam satu data.frame
data_regresi <- data.frame(
panjang = panjang,
berat = berat,
kategori = factor(kategori, levels = c("unripe", "processing", "good", "premium"))
)
# Multinomial logistic regression
model_multinom <- multinom(kategori ~ panjang + berat, data = data_regresi)
## # weights: 16 (9 variable)
## initial value 277.258872
## iter 10 value 259.829547
## final value 258.523676
## converged
## Call:
## multinom(formula = kategori ~ panjang + berat, data = data_regresi)
##
## Coefficients:
## (Intercept) panjang berat
## processing 5.565069 -0.10623615 -0.01489745
## good 6.725576 -0.02686732 -0.03379787
## premium 3.446338 -0.01212515 -0.01508909
##
## Std. Errors:
## (Intercept) panjang berat
## processing 2.672023 0.08304278 0.01367449
## good 2.720820 0.08566274 0.01424751
## premium 2.755246 0.08600072 0.01421687
##
## Residual Deviance: 517.0474
## AIC: 535.0474
Berdasarkan hasil estimasi model regresi logistik multinomial, kita
mencoba memodelkan kategori kematangan buah pisang (unripe,
processing, good, dan premium) sebagai
respons terhadap dua variabel prediktor numerik, yaitu
panjang dan berat buah. Dalam analisis
ini, kategori unripe dipilih secara default sebagai
referensi (baseline) oleh fungsi multinom()
.
Model menghasilkan tiga set koefisien (untuk processing, good, dan premium) yang menggambarkan log odds relatif terhadap kategori unripe. Misalnya, untuk kategori processing, intercept-nya adalah 5.565 dan koefisien panjang sebesar -0.106, yang menunjukkan bahwa setiap penambahan 1 cm panjang buah diasosiasikan dengan penurunan log odds untuk diklasifikasikan sebagai processing dibanding unripe, ketika berat konstan. Koefisien berat untuk processing sebesar -0.015 juga memiliki interpretasi serupa: peningkatan berat cenderung menurunkan probabilitas relatif terhadap unripe. Koefisien pada kategori good dan premium juga menunjukkan arah efek negatif dari panjang dan berat terhadap log odds relatif terhadap kategori referensi, meskipun dalam jumlah yang lebih kecil.
Nilai standard error yang disertakan mengindikasikan
besarnya ketidakpastian dalam estimasi parameter; semakin besar nilai
ini, semakin rendah presisi estimasinya. Tidak dilakukan uji
signifikansi langsung dalam output summary()
dari
nnet::multinom
, tetapi perbandingan kasar antara koefisien
dan error-nya bisa memberi indikasi apakah suatu prediktor mungkin
relevan atau tidak dalam klasifikasi.
Nilai Residual Deviance sebesar 517.0474 dan AIC sebesar 535.0474 merupakan ukuran goodness-of-fit model, di mana nilai yang lebih kecil menunjukkan model yang lebih baik. Namun, untuk evaluasi yang lebih mendalam diperlukan langkah lanjutan seperti prediksi akurasi, confusion matrix, atau uji validasi silang. Secara umum, model ini menunjukkan bahwa panjang dan berat dapat menjadi prediktor moderat untuk mengklasifikasikan tingkat kematangan buah pisang ke dalam empat kategori.
# Nilai p-value untuk tiap koefisien
z <- summary(model_multinom)$coefficients / summary(model_multinom)$standard.errors
p_values <- 2 * (1 - pnorm(abs(z)))
p_values
## (Intercept) panjang berat
## processing 0.03727702 0.2007935 0.27596276
## good 0.01343996 0.7537940 0.01768272
## premium 0.21099738 0.8878787 0.28853042
Berdasarkan perhitungan nilai p-value untuk masing-masing koefisien dalam model regresi logistik multinomial, kita dapat mengevaluasi signifikansi statistik dari tiap prediktor terhadap kategori kematangan pisang relatif terhadap referensi kategori (unripe).
Untuk kategori processing, hanya intercept yang signifikan secara statistik (p = 0.037), sementara panjang (p = 0.201) dan berat (p = 0.276) tidak signifikan. Artinya, meskipun model memprediksi perbedaan dasar probabilitas antara processing dan unripe, tidak ada cukup bukti bahwa panjang atau berat berpengaruh signifikan dalam membedakan kedua kategori ini.
Pada kategori good, baik intercept (p = 0.013) maupun variabel berat (p = 0.0177) signifikan pada tingkat 5%. Ini menunjukkan bahwa berat buah memiliki pengaruh signifikan terhadap peluang pisang diklasifikasikan sebagai good dibandingkan unripe. Namun, variabel panjang (p = 0.754) tidak signifikan dalam hal ini.
Untuk kategori premium, semua koefisien termasuk intercept memiliki p-value > 0.05, sehingga tidak ada variabel yang signifikan secara statistik dalam membedakan kategori premium dari unripe berdasarkan panjang dan berat buah.
Secara keseluruhan, hasil ini menunjukkan bahwa berat adalah prediktor yang paling konsisten dan signifikan, terutama dalam membedakan kategori good dari unripe. Namun, karena banyak koefisien tidak signifikan, mungkin diperlukan prediktor tambahan atau transformasi variabel untuk meningkatkan performa model.
# Prediksi kategori berdasarkan model
data_regresi$prediksi <- predict(model_multinom, newdata = data_regresi)
# Tabel konfusi
table(data_regresi$kategori, data_regresi$prediksi)
##
## unripe processing good premium
## unripe 0 9 7 6
## processing 0 45 20 2
## good 0 23 32 5
## premium 0 28 16 7
Setelah dilakukan prediksi kategori kematangan pisang berdasarkan variabel panjang dan berat buah, hasil klasifikasi dievaluasi menggunakan tabel konfusi. Dari 200 observasi, tampak bahwa model lebih sering memprediksi kategori processing dan good, sementara tidak ada satu pun observasi yang diprediksi sebagai unripe oleh model. Untuk kategori aktual unripe, seluruh 22 observasi justru diklasifikasikan salah sebagai processing, good, atau premium, menunjukkan kelemahan model dalam mengidentifikasi kategori ini. Sementara itu, model relatif lebih baik dalam mengklasifikasikan processing secara benar sebanyak 45 kasus dari total 67 observasi. Namun untuk kategori good dan premium, kesalahan klasifikasi juga cukup tinggi, masing-masing hanya 32 dari 60 dan 7 dari 51 observasi yang diklasifikasikan secara tepat. Hal ini menunjukkan bahwa model memiliki akurasi prediksi yang moderat, tetapi cenderung bias terhadap kelas tertentu (khususnya processing) dan bermasalah dalam mengidentifikasi kelas minoritas seperti unripe. Evaluasi lanjutan seperti menghitung akurasi keseluruhan, precision, recall per kelas, atau menggunakan metrik kappa akan memberikan gambaran yang lebih lengkap mengenai performa model. Model ini dapat ditingkatkan dengan menambahkan prediktor yang lebih relevan atau menggunakan pendekatan klasifikasi alternatif.
Distribusi multinomial digunakan ketika variabel respon memiliki lebih dari dua kategori. Analisis ini sangat penting dalam klasifikasi, survei, dan pengambilan keputusan. Regresi logistik multinomial memperluas regresi logistik biner dengan memungkinkan lebih banyak kelas target dan menghasilkan interpretasi yang lebih luas dalam konteks klasifikasi. Dalam studi ini, kita membangun model regresi logistik multinomial untuk memprediksi kategori kematangan pisang—unripe, processing, good, dan premium—berdasarkan dua prediktor: panjang dan berat buah. Model berhasil dikonstruksi dan menunjukkan bahwa variabel berat memiliki pengaruh negatif signifikan terhadap peluang pisang masuk ke dalam kategori good dibandingkan unripe, sedangkan pengaruh lainnya kurang signifikan secara statistik.
Evaluasi menggunakan tabel konfusi menunjukkan bahwa model cenderung memprediksi kelas mayoritas, dengan akurasi klasifikasi terbaik pada kategori processing. Namun, model gagal memprediksi kelas unripe sama sekali, dan menunjukkan ambiguitas dalam membedakan premium dari kelas lainnya. Hal ini mengindikasikan overdominasi kelas tertentu dan kurang mampunya model dalam mengenali kelas minoritas, yang merupakan tantangan umum dalam klasifikasi multinomial. Dengan demikian, meskipun regresi logistik multinomial memberikan kerangka kerja yang bermanfaat untuk klasifikasi kategori non-biner, validitas model sangat tergantung pada kualitas dan distribusi data. Untuk meningkatkan performa, disarankan melakukan balancing data antar kelas, menambahkan fitur relevan lainnya, dan mengevaluasi alternatif model klasifikasi seperti random forest, multiclass SVM, atau boosting methods. Evaluasi tambahan seperti akurasi keseluruhan, precision, recall, dan confusion matrix per kelas juga penting untuk memahami kinerja model secara menyeluruh.
library(tidyverse)
library(MASS) # Untuk polr()
library(performance) # Untuk cek asumsi proportional odds
##
## Attaching package: 'performance'
## The following object is masked from 'package:ROCR':
##
## performance
## Warning: package 'ggeffects' was built under R version 4.3.3
## Warning: package 'brant' was built under R version 4.3.3
Regresi logistik ordinal digunakan untuk memodelkan hubungan antara satu variabel respon kategorik bertingkat (ordinal) dengan satu atau lebih variabel prediktor. Pendekatan ini sangat relevan ketika kategori pada variabel dependen tidak hanya berbeda secara kualitatif, tetapi juga memiliki urutan atau tingkatan yang logis. Model ini sering disebut sebagai cumulative logit model atau proportional odds model, dan berguna untuk memahami bagaimana perubahan pada variabel prediktor memengaruhi peluang untuk berada pada atau di bawah tingkat tertentu dari kategori respon.
Dalam studi ini, kita mensimulasikan data kematangan buah pisang yang dikelompokkan ke dalam empat tingkat bertingkat, yaitu :
1 = unripe
2 = processing
3 = good
4 = premium
Tingkat kematangan ini merupakan hasil klasifikasi berdasarkan standar mutu pascapanen yang umum digunakan dalam rantai pasok buah tropis. Untuk menjelaskan variasi tingkat kematangan ini, kita menggunakan tiga variabel prediktor utama, yaitu kandungan FeO_ (sebagai indikator kematangan kimia), kandungan Cr2O3_, serta jenis pengeboran tanah (HoleType) tempat buah diambil — yang dapat berpengaruh terhadap kondisi tumbuh buah tersebut.
Melalui pendekatan regresi logistik ordinal, kita akan mengkaji seberapa besar kontribusi masing-masing prediktor dalam menentukan tingkat kematangan buah, serta seberapa baik model mampu memprediksi kategori kematangan berdasarkan data yang tersedia.
# Data
set.seed(123)
n <- 300
data <- tibble(
Matang = factor(sample(c("unripe", "processing", "good", "premium"), n, replace = TRUE),
ordered = TRUE, levels = c("unripe", "processing", "good", "premium")),
FeO_ = rnorm(n, mean = 10, sd = 2),
Cr2O3_ = rnorm(n, mean = 25, sd = 5),
HoleType = factor(sample(c("DDH", "RC"), n, replace = TRUE))
)
head(data)
Model logit kumulatif memodelkan logit kumulatif dari probabilitas kategori sebagai fungsi linier dari prediktor :
\[ \log \left( \frac{P(Y \leq j)}{P(Y > j)} \right) = \theta_j - \mathbf{x}^\top \boldsymbol{\beta}, \quad j = 1, 2, \dots, J - 1 \]
atau secara ekuivalen :
\[ P(Y \leq j \mid \mathbf{x}) = \frac{\exp(\theta_j - \mathbf{x}^\top \boldsymbol{\beta})}{1 + \exp(\theta_j - \mathbf{x}^\top \boldsymbol{\beta})} \]
dengan :
Asumsi model ini adalah proportional odds, yaitu koefisien regresi \(\boldsymbol{\beta}\) sama untuk semua \(j\), sehingga pengaruh variabel prediktor terhadap odds antar kategori dianggap konstan.
model_ord <- MASS::polr(Matang ~ FeO_ + Cr2O3_ + HoleType, data = data, Hess = TRUE)
summary(model_ord)
## Call:
## MASS::polr(formula = Matang ~ FeO_ + Cr2O3_ + HoleType, data = data,
## Hess = TRUE)
##
## Coefficients:
## Value Std. Error t value
## FeO_ 0.019610 0.05372 0.3651
## Cr2O3_ -0.007284 0.02076 -0.3509
## HoleTypeRC -0.231856 0.20831 -1.1130
##
## Intercepts:
## Value Std. Error t value
## unripe|processing -1.1731 0.7817 -1.5007
## processing|good -0.0283 0.7779 -0.0364
## good|premium 1.1443 0.7823 1.4627
##
## Residual Deviance: 829.024
## AIC: 841.024
Koefisien positif : meningkatkan kemungkinan buah masuk ke kategori lebih matang
Koefisien negatif : menurunkan kemungkinan buah masuk ke kategori lebih matang.
Koefisien cutpoints (intersep) : batas antar kategori ordinal.
## Value Std. Error t value
## FeO_ 0.019610500 0.05371716 0.36506954
## Cr2O3_ -0.007284075 0.02075758 -0.35091153
## HoleTypeRC -0.231856295 0.20831224 -1.11302289
## unripe|processing -1.173083630 0.78170153 -1.50067972
## processing|good -0.028288085 0.77791187 -0.03636413
## good|premium 1.144302094 0.78233695 1.46267168
Berdasarkan hasil analisis regresi logistik ordinal menggunakan
fungsi polr()
dari paket MASS
, model ini
mencoba menjelaskan hubungan antara tingkat kematangan buah pisang
(dengan urutan unripe < processing < good <
premium) dan tiga prediktor: kandungan FeO_,
Cr2O3_, serta jenis pengeboran tanah
(HoleType). Estimasi koefisien menunjukkan bahwa ketiga
prediktor belum memberikan pengaruh yang signifikan terhadap perubahan
tingkat kematangan pisang. Nilai t-value untuk seluruh
prediktor berada jauh di bawah ambang signifikansi (sekitar ±2),
masing-masing: FeO_ (t = 0.365), Cr2O3_ (t = -0.351), dan HoleTypeRC (t
= -1.113). Hal ini mengindikasikan bahwa secara statistik, belum ada
bukti kuat bahwa ketiga variabel tersebut berkontribusi nyata dalam
membedakan kategori kematangan pisang.
Sementara itu, intercept cut-points seperti
unripe|processing
, processing|good
, dan
good|premium
menggambarkan batas antara kategori ordinal
yang digunakan oleh model untuk menghitung probabilitas kumulatif.
Nilai-nilai ini diperlukan dalam model cumulative logit untuk
mengkalkulasi peluang observasi berada dalam atau di bawah suatu
kategori tertentu. Meskipun estimasi model sudah konvergen dan residual
deviance sebesar 829.02 relatif dapat diterima, namun belum ada
prediktor yang signifikan, sehingga interpretasi model ini bersifat
deskriptif dan eksploratif.
# Menambahkan nilai p menggunakan z-value
ctable <- coef(summary(model_ord))
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
## FeO_ 0.019610500 0.05371716 0.36506954 0.7151
## Cr2O3_ -0.007284075 0.02075758 -0.35091153 0.7257
## HoleTypeRC -0.231856295 0.20831224 -1.11302289 0.2657
## unripe|processing -1.173083630 0.78170153 -1.50067972 0.1334
## processing|good -0.028288085 0.77791187 -0.03636413 0.9710
## good|premium 1.144302094 0.78233695 1.46267168 0.1436
Berdasarkan hasil penghitungan nilai p dari model regresi logistik ordinal, tidak ada satu pun variabel prediktor yang menunjukkan pengaruh signifikan terhadap tingkat kematangan pisang pada taraf signifikansi 5%. Variabel FeO_ memiliki koefisien sebesar 0.0196 dengan p-value = 0.7151, sedangkan Cr2O3_ menunjukkan hubungan negatif yang sangat lemah (koefisien = -0.0073, p-value = 0.7257). Variabel kategori HoleTypeRC juga belum signifikan (p-value = 0.2657), walaupun secara arah menunjukkan bahwa jenis pengeboran RC cenderung menurunkan peluang untuk berada pada tingkat kematangan yang lebih tinggi dibanding DDH.
Selain itu, nilai-nilai ambang (cutpoints) antar
kategori—yaitu unripe|processing
,
processing|good
, dan good|premium
—juga tidak
signifikan, masing-masing dengan p-value = 0.1334, 0.9710, dan
0.1436. Ini menunjukkan bahwa batas antar kategori kematangan belum
dapat dibedakan secara jelas oleh model berdasarkan prediktor yang
digunakan.
# Prediksi probabilitas pada rentang nilai FeO_ dan Cr2O3_
pred <- ggeffects::ggpredict(model_ord, terms = c("FeO_", "Cr2O3_"))
## Data were 'prettified'. Consider using `terms="FeO_ [all]"` to get
## smooth plots.
Berdasarkan grafik probabilitas prediksi dari model regresi logistik ordinal, terlihat bahwa perubahan nilai FeO_ tidak memberikan perubahan besar terhadap probabilitas setiap kategori tingkat kematangan pisang (Matang) — baik itu unripe, processing, good, maupun premium. Semua kurva prediksi pada masing-masing panel relatif datar, yang menunjukkan bahwa FeO_ tidak memiliki pengaruh signifikan terhadap probabilitas klasifikasi ke salah satu tingkat kematangan.
Selain itu, gradasi warna berdasarkan nilai Cr2O3_ (20.09, 25.09, dan 30.09) juga tidak menunjukkan perbedaan mencolok. Meskipun pada kategori premium terlihat ada sedikit peningkatan probabilitas dengan bertambahnya FeO_ dan Cr2O3_, namun kenaikan tersebut sangat kecil dan didominasi oleh overlap rentang kepercayaan (confidence interval) yang lebar, mencerminkan ketidakpastian model.
Secara keseluruhan, hasil ini konsisten dengan analisis sebelumnya bahwa baik FeO_ maupun Cr2O3_ tidak memberikan kontribusi signifikan dalam memprediksi tingkat kematangan pisang dalam model ini.
## --------------------------------------------
## Test for X2 df probability
## --------------------------------------------
## Omnibus 5.46 6 0.49
## FeO_ 2.88 2 0.24
## Cr2O3_ 0.32 2 0.85
## HoleTypeRC 2.33 2 0.31
## --------------------------------------------
##
## H0: Parallel Regression Assumption holds
## X2 df probability
## Omnibus 5.4645234 6 0.4857549
## FeO_ 2.8765622 2 0.2373354
## Cr2O3_ 0.3151624 2 0.8542075
## HoleTypeRC 2.3271657 2 0.3123650
Berdasarkan hasil uji Brant, model regresi logistik ordinal yang dibangun untuk memodelkan tingkat kematangan buah pisang memenuhi asumsi proportional odds atau asumsi garis sejajar. Hal ini ditunjukkan oleh nilai p-value dari uji Omnibus sebesar 0.486, yang jauh di atas batas signifikansi umum (α = 0.05), sehingga tidak ada cukup bukti untuk menolak hipotesis nol bahwa asumsi tersebut terpenuhi.
Selain itu, masing-masing prediktor dalam model, yaitu FeO_, Cr2O3_, dan HoleType, juga menunjukkan p-value yang tinggi (berturut-turut 0.237, 0.854, dan 0.312), mengindikasikan bahwa tidak ada prediktor yang melanggar asumsi tersebut secara individual. Dengan demikian, model cumulative logit yang digunakan dapat diinterpretasikan dengan valid, karena efek dari prediktor dianggap konsisten di seluruh batas antara kategori kematangan pisang (unripe, processing, good, premium).
## Can't calculate log-loss.
## Can't calculate proper scoring rules for ordinal, multinomial or
## cumulative link models.
Berdasarkan output evaluasi dari model regresi logistik ordinal, nilai AIC (Akaike Information Criterion) sebesar 841.024 menunjukkan tingkat goodness-of-fit relatif terhadap kompleksitas model. Semakin rendah nilai AIC, semakin baik model dalam menyeimbangkan antara kecocokan dan jumlah parameter yang digunakan. Namun, dalam konteks ini, nilai AIC tersebut hanya bermakna jika dibandingkan dengan model alternatif.
Sementara itu, nilai Nagelkerke’s R² sebesar 0.006 menandakan bahwa variabel-variabel prediktor (FeO_, Cr2O3_, dan HoleType) hanya mampu menjelaskan sekitar 0.6% variasi dalam tingkat kematangan pisang. Ini adalah nilai yang sangat rendah, mengindikasikan bahwa model tidak memiliki kekuatan prediksi yang baik dan masih banyak variabel lain yang mungkin relevan namun belum dimasukkan. Nilai RMSE (Root Mean Squared Error) sebesar 2.456 dan Sigma sebesar 1.671 juga menegaskan bahwa prediksi model memiliki deviasi cukup besar dari nilai observasi aktual. Secara keseluruhan, performa model ini tergolong rendah dan perlu dipertimbangkan revisi model atau penambahan prediktor baru untuk meningkatkan akurasi dan daya jelaskan.
Jika asumsi proportional odds dilanggar, dapat
digunakan alternatif VGAM::vglm()
Berdasarkan hasil analisis regresi logistik ordinal terhadap tingkat kematangan buah pisang dengan prediktor FeO_, Cr2O3_, dan HoleType, disimpulkan bahwa tidak ada variabel prediktor yang signifikan secara statistik dalam memengaruhi tingkat kematangan (semua p-value > 0.05). Model juga menunjukkan kinerja prediktif yang rendah, dengan nilai Nagelkerke’s R² sebesar 0.006, yang berarti hanya sekitar 0.6% variasi pada variabel respon yang dapat dijelaskan oleh model. Namun demikian, hasil uji Brant menunjukkan bahwa asumsi proportional odds terpenuhi, baik secara keseluruhan (Omnibus test, p = 0.486) maupun untuk masing-masing prediktor. Dengan kata lain, meskipun model secara statistik valid dalam kerangka regresi logistik ordinal, kekuatan prediksi model sangat lemah, sehingga perlu eksplorasi variabel lain atau pendekatan model yang berbeda untuk menghasilkan model yang lebih informatif dan akurat dalam memprediksi tingkat kematangan pisang.
Analisis data kategorik merupakan bagian penting dalam statistika terapan karena banyak fenomena di dunia nyata yang menghasilkan data dalam bentuk kategori, seperti jenis kelamin, status pekerjaan, tingkat pendidikan, preferensi konsumen, atau hasil diagnosis medis. Data kategori ini umumnya dianalisis menggunakan tabel kontingensi, model log-linier, dan model regresi logistik. Masing-masing pendekatan memiliki kekuatan dan kelemahan tergantung pada tujuan analisis dan struktur data.
Tabel kontingensi digunakan sebagai langkah awal eksplorasi untuk melihat hubungan antara dua atau lebih variabel kategorik. Misalnya, dalam studi tentang efek obat terhadap serangan jantung, tabel kontingensi dapat menyajikan jumlah pasien yang mengalami atau tidak mengalami serangan jantung, berdasarkan jenis obat yang dikonsumsi. Tabel ini membantu mengidentifikasi pola awal dan menghitung ukuran asosiasi seperti odds ratio, risk ratio, dan chi-square statistic untuk menguji independensi antar variabel.
Namun, ketika ingin membangun model statistik yang dapat mengendalikan efek dari banyak variabel dan interaksinya secara simultan, maka model log-linier menjadi sangat berguna. Model log-linier adalah bentuk khusus dari Generalized Linear Model (GLM) yang digunakan pada frekuensi sel dalam tabel kontingensi dan mengasumsikan distribusi Poisson. Tidak seperti regresi logistik, model log-linier tidak menetapkan variabel mana yang dependen dan mana yang independen, karena seluruh variabel diperlakukan secara simetris. Model ini lebih cocok ketika tujuan analisis adalah untuk memahami struktur asosiasi atau independensi antar variabel, bukan untuk prediksi.
Struktur model log-linier ditentukan berdasarkan efek utama dari masing-masing variabel serta interaksi di antara variabel-variabel tersebut. Misalnya, dalam tabel kontingensi tiga arah (misalnya: jenis kelamin, status merokok, dan penyakit paru), model log-linier dapat membedakan apakah interaksi dua variabel cukup menjelaskan data, ataukah diperlukan interaksi tiga arah untuk menangkap struktur asosiasinya. Penyesuaian model dapat dilakukan menggunakan metode likelihood ratio test untuk membandingkan model sederhana dengan model lebih kompleks.
Di sisi lain, regresi logistik adalah pendekatan paling umum ketika terdapat satu variabel kategorik yang secara eksplisit dianggap sebagai variabel dependen (misalnya, kejadian penyakit: ya/tidak), dan satu atau lebih variabel kategorik atau numerik sebagai prediktor. Model ini memodelkan logit dari probabilitas kejadian (yaitu log odds), dan sangat berguna dalam studi observasional dan eksperimental untuk menjelaskan atau memprediksi peluang suatu outcome. Regresi logistik juga memiliki ekstensi untuk outcome kategorik lebih dari dua kelas, seperti regresi logistik multinomial dan regresi logistik ordinal.
Dengan demikian, meskipun ketiganya beroperasi pada data kategorik, tabel kontingensi bersifat deskriptif, model log-linier bersifat eksploratif terhadap hubungan simetris, sedangkan regresi logistik bersifat prediktif terhadap outcome kategorik. Pemilihan metode tergantung pada apakah fokus utama analisis adalah deskripsi, eksplorasi struktur, atau prediksi hasil berdasarkan variabel penjelas. Kombinasi dari ketiganya sering digunakan dalam praktik untuk memperoleh pemahaman komprehensif dari data kategorik yang dianalisis.
Ringkasan Dalam analisis data kategorik, terdapat beberapa pendekatan statistik yang umum digunakan, antara lain :
Tabel Kontingensi : penyajian frekuensi gabungan dari dua atau lebih variabel kategorik.
Model Loglinear : digunakan untuk memodelkan struktur asosiasi di dalam tabel kontingensi tanpa menganggap ada variabel dependen.
Model Regresi Logistik : digunakan untuk memodelkan probabilitas dari kategori variabel dependen berdasarkan variabel independen.
Meskipun ketiganya dapat digunakan pada data kategorik, pendekatan dan interpretasinya sangat berbeda.
Tabel Kontingensi
Tabel kontingensi menyajikan jumlah frekuensi dari kombinasi kategori antar variabel.
Contoh tabel 2x2 Data ‘Pengaruh Pelatihan dan Produktivitas Karyawan’
Dalam organisasi modern, pelatihan karyawan dianggap sebagai salah satu investasi penting dalam meningkatkan kinerja dan produktivitas. Namun, apakah pelatihan benar-benar berpengaruh terhadap tingkat produktivitas karyawan? Untuk menjawab pertanyaan ini secara objektif, diperlukan pendekatan statistik yang mampu mengevaluasi hubungan antar kategori dalam data kontingensi.
Pada bab ini, digunakan Model Log-Linear untuk menganalisis data dua variabel kategorik, yaitu :
Status pelatihan karyawan (Mengikuti atau Tidak Mengikuti pelatihan)
dan status produktivitas kerja (Produktif atau Tidak Produktif)
Topik ini menarik karena :
Menyentuh isu strategis dalam manajemen sumber daya manusia, khususnya terkait efektivitas program pelatihan
Data yang digunakan sederhana, namun mencerminkan masalah nyata yang sering ditemui dalam dunia kerja
Model log-linear menawarkan kerangka statistik yang fleksibel untuk mengevaluasi independensi atau interaksi antara dua atau lebih variabel kategorik.
Dengan menggunakan log-linear model, kita dapat menjawab pertanyaan penting: apakah pelatihan karyawan dan produktivitas bersifat independen, atau terdapat interaksi signifikan antara keduanya? Pemahaman ini penting sebagai dasar pengambilan keputusan strategis dalam pengembangan karyawan dan peningkatan efisiensi organisasi.
# Data kontingensi 2x2: Pelatihan dan Produktivitas
table_data <- matrix(c(45, 25, 35, 55), nrow = 2,
dimnames = list(Pelatihan = c("Mengikuti", "Tidak Mengikuti"),
Produktif = c("Ya", "Tidak")))
table_data
## Produktif
## Pelatihan Ya Tidak
## Mengikuti 45 35
## Tidak Mengikuti 25 55
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^A_i + \lambda^B_j + \lambda^{AB}_{ij} \]
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)
# Model log-linear dengan interaksi Pelatihan dan Produktif
loglm(~ Pelatihan * Produktif, data = table_data)
## Call:
## loglm(formula = ~Pelatihan * Produktif, data = table_data)
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0 0 1
## Pearson 0 0 1
Interpretasi Model Log-Linear
Model log-linear digunakan untuk mengevaluasi hubungan antara dua variabel kategorik, dalam hal ini status pelatihan dan produktivitas kerja karyawan. Dalam analisis ini, data kontingensi 2×2 menunjukkan distribusi karyawan yang mengikuti atau tidak mengikuti pelatihan, serta apakah mereka produktif atau tidak produktif.
Model yang digunakan adalah log-linear model dengan interaksi
penuh, yaitu model ~ Pelatihan * Produktif
, yang
mempertimbangkan baik efek utama dari masing-masing variabel maupun efek
interaksi antara keduanya. Hasil dari model ini menunjukkan bahwa
nilai Likelihood Ratio Chi-Square (G²) = 0, dengan
derajat bebas (df) = 0, dan p-value =
1. Demikian pula nilai Pearson Chi-Square = 0,
p-value = 1.
Nilai p-value yang sangat tinggi (p = 1) mengindikasikan bahwa model dengan interaksi sepenuhnya sesuai dengan data, atau dengan kata lain, model tersebut tidak meninggalkan residual ketidaksesuaian terhadap data aktual. Namun, dalam konteks 2x2, ini juga berarti bahwa model menggunakan semua derajat kebebasan yang tersedia, sehingga tidak memungkinkan lagi pengujian signifikan atas interaksi atau independensi (df = 0). Model menjadi saturated, dan hasil statistik hanya menunjukkan bahwa data sesuai dengan model—karena model sudah menyesuaikan diri secara sempurna dengan data.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Model Regresi Logistik
Model regresi logistik biner :
\[ \log\left( \frac{p_1}{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 untuk regresi logistik berbobot
data_glm <- data.frame(
Produktif = c(1, 0, 1, 0),
Pelatihan = factor(c("Mengikuti", "Mengikuti", "Tidak Mengikuti", "Tidak Mengikuti")),
Frek = c(45, 25, 35, 55)
)
# Model regresi logistik dengan bobot frekuensi
model_logit <- glm(Produktif ~ Pelatihan, weights = Frek, family = binomial, data = data_glm)
# Ringkasan hasil model
summary(model_logit)
##
## Call:
## glm(formula = Produktif ~ Pelatihan, family = binomial, data = data_glm,
## weights = Frek)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.5878 0.2494 2.356 0.01845 *
## PelatihanTidak Mengikuti -1.0398 0.3301 -3.150 0.00163 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 221.81 on 3 degrees of freedom
## Residual deviance: 211.53 on 2 degrees of freedom
## AIC: 215.53
##
## Number of Fisher Scoring iterations: 4
Analisis regresi logistik berbobot dilakukan untuk mengkaji hubungan antara status pelatihan karyawan (Mengikuti atau Tidak Mengikuti) dengan probabilitas karyawan menjadi produktif. Model ini mempertimbangkan frekuensi masing-masing kombinasi status pelatihan dan produktivitas sebagai bobot. Berdasarkan hasil estimasi, intersep model sebesar 0.5878 (p = 0.018), yang merupakan log odds produktif bagi karyawan yang mengikuti pelatihan (kategori referensi). Sementara itu, koefisien untuk kategori “Tidak Mengikuti” pelatihan adalah -1.0398 (p = 0.0016), yang bermakna bahwa peluang menjadi produktif secara signifikan lebih rendah bagi karyawan yang tidak mengikuti pelatihan dibandingkan yang mengikuti.
Secara statistik, hasil ini menunjukkan bahwa karyawan yang tidak mengikuti pelatihan memiliki penurunan odds (peluang relatif) menjadi produktif, dan efek ini signifikan secara statistik pada tingkat signifikansi 1%. Dengan demikian, dapat disimpulkan bahwa program pelatihan memiliki hubungan positif yang signifikan dengan produktivitas kerja, mendukung hipotesis bahwa pelatihan berkontribusi pada peningkatan kinerja karyawan.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Perbandingan Ketiga Pendekatan
Aspek | Tabel Kontingensi | Model Loglinear | Regresi Logistik |
---|---|---|---|
Tujuan | Deskripsi frekuensi | Deteksi asosiasi | Prediksi probabilitas |
Variabel dependen | Tidak ada | Tidak ada (simetris) | Ada (eksplisit) |
Distribusi | Tidak diasumsikan | Poisson (frekuensi sel) | Binomial (probabilitas) |
Bentuk Model | Tidak ada | GLM: log(mu) ~ efek | GLM: logit(p) ~ prediktor |
Cocok untuk | Eksplorasi awal | Tabel > 2 variabel | Studi prediktif |
Tabel kontingensi menyajikan frekuensi dari kombinasi kategori antar dua atau lebih variabel. Misal :
# Contoh tabel 2x2
matrix(c(45, 25, 35, 55), nrow = 2,
dimnames = list(Pelatihan = c("Mengikuti", "Tidak Mengikuti"),
Produktif = c("Ya", "Tidak")))
## Produktif
## Pelatihan Ya Tidak
## Mengikuti 45 35
## Tidak Mengikuti 25 55
Model log-linier untuk tabel I x J dapat dituliskan :
\[ \log(\mu_{ij}) = \lambda + \lambda^T_i + \lambda^R_j + \lambda^{TR}_{ij} \]
Model saturated atau model penuh menyertakan seluruh efek utama dan interaksi :
Cocok sempurna terhadap data
Tidak mengasumsikan independensi antar variabel
Contoh formulasi untuk tabel 2x2 :
# Memuat pustaka
library(MASS)
# Data kontingensi 2x2
data <- matrix(c(45, 25, 35, 55), nrow = 2, byrow = TRUE)
# Menambahkan nama baris dan kolom
dimnames(data) <- list(
Pelatihan = c("Mengikuti", "Tidak Mengikuti"),
Produktif = c("Ya", "Tidak")
)
# Tabel frekuensi
ftable(data)
## Produktif Ya Tidak
## Pelatihan
## Mengikuti 45 25
## Tidak Mengikuti 35 55
Model saturated dapat dipasang dengan loglm
dari
package {MASS}
:
# Model log-linear saturated (interaksi penuh)
model_saturated <- loglm(~ Pelatihan * Produktif, data = data)
# Ringkasan hasil model
summary(model_saturated)
## Formula:
## ~Pelatihan * Produktif
## attr(,"variables")
## list(Pelatihan, Produktif)
## attr(,"factors")
## Pelatihan Produktif Pelatihan:Produktif
## Pelatihan 1 0 1
## Produktif 0 1 1
## attr(,"term.labels")
## [1] "Pelatihan" "Produktif" "Pelatihan:Produktif"
## attr(,"order")
## [1] 1 1 2
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 0
## attr(,".Environment")
## <environment: R_GlobalEnv>
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 0 0 1
## Pearson 0 0 1
Model independen mengasumsikan bahwa tidak ada interaksi antara variabel :
\[ \log(\mu_{ij}) = \mu + \lambda^T_i + \lambda^R_j \]
Model ini menguji hipotesis bahwa variabel X dan Y saling independen.
## Formula:
## ~Pelatihan + Produktif
## attr(,"variables")
## list(Pelatihan, Produktif)
## attr(,"factors")
## Pelatihan Produktif
## Pelatihan 1 0
## Produktif 0 1
## attr(,"term.labels")
## [1] "Pelatihan" "Produktif"
## 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 10.27645 1 0.001347387
## Pearson 10.15873 1 0.001436195
Berdasarkan hasil output
summary(model_saturated)
dansummary(model_indep)
, kita dapat melakukan perbandingan antara model saturated dan model independen untuk menentukan apakah terdapat interaksi signifikan antara variabel Pelatihan dan Produktif.Ringkasan Hasil Model
Model Deviance (X²) df p-value Model Saturated 0 0 1.000 Model Independensi 10.276 1 0.00135 ✅ Interpretasi
Model Saturated (~ Pelatihan * Produktif)
Merupakan model paling kompleks, mencakup efek utama dan interaksi
Deviance = 0, df = 0, artinya model ini cocok sempurna terhadap data (karena tidak menyisakan deviasi residual)
Ini dijadikan pembanding untuk menguji apakah model yang lebih sederhana (tanpa interaksi) sudah cukup
Model Independensi (~ Pelatihan + Produktif)
Mengasumsikan bahwa Pelatihan dan Produktivitas saling independen, tidak ada interaksi
Likelihood Ratio X² = 10.276, df = 1, dengan p-value = 0.00135, yang jauh lebih kecil dari 0.05.
Kesimpulan
Karena p-value dari model independensi sangat kecil (0.00135), maka kita menolak hipotesis nol yang menyatakan tidak ada interaksi antara Pelatihan dan Produktif. Artinya :
Terdapat interaksi yang signifikan antara status pelatihan dan produktivitas karyawan.
Dengan kata lain, status pelatihan memengaruhi kemungkinan seorang karyawan menjadi produktif, dan kedua variabel tidak bersifat independen. Oleh karena itu, model saturated lebih sesuai untuk menggambarkan struktur hubungan dalam data ini.
Odds ratio untuk tabel 2x2 :
\[ \text{OR} = \frac{n_{11} \cdot n_{22}}{n_{12} \cdot n_{21}} \]
Interpretasi nilai OR :
OR = 1: Tidak ada asosiasi
OR > 1: Asosiasi positif
OR < 1: Asosiasi negatif
Dalam model saturated :
Estimasi dilakukan dengan pembatasan seperti sum-to-zero
Estimasi parameter dilakukan dengan iterative proportional fitting (IPF)
# Tabel data kontingensi: Pelatihan vs Produktif
data <- matrix(c(45, 25, 35, 55), nrow = 2, byrow = TRUE)
dimnames(data) <- list(
Pelatihan = c("Mengikuti", "Tidak Mengikuti"),
Produktif = c("Ya", "Tidak")
)
# Estimasi log-odds dan odds ratio
logOR <- log((data[1, 1] * data[2, 2]) / (data[1, 2] * data[2, 1]))
OR <- exp(logOR)
# Tampilkan hasil
logOR # log(OR)
## [1] 1.039772
## [1] 2.828571
Berdasarkan hasil perhitungan odds ratio (OR) dari tabel kontingensi antara status pelatihan dan produktivitas karyawan, diperoleh nilai OR = 2.83. Ini berarti bahwa peluang untuk menjadi produktif bagi karyawan yang mengikuti pelatihan adalah sekitar 2,83 kali lebih besar dibandingkan dengan karyawan yang tidak mengikuti pelatihan. Nilai log(OR) yang positif (≈ 1.04) juga menegaskan bahwa terdapat hubungan positif antara mengikuti pelatihan dan tingkat produktivitas. Dengan kata lain, pelatihan karyawan terbukti secara statistik meningkatkan kemungkinan mereka untuk menjadi produktif. Temuan ini mendukung interpretasi sebelumnya dari model log-linear dan regresi logistik bahwa pelatihan memberikan dampak signifikan terhadap produktivitas kerja.
Perbandingan antar model dilakukan dengan menggunakan statistik deviance (G²) atau likelihood ratio test.
## LR tests for hierarchical log-linear models
##
## Model 1:
## ~Pelatihan + Produktif
## Model 2:
## ~Pelatihan * Produktif
##
## Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)
## Model 1 10.27645 1
## Model 2 0.00000 0 10.27645 1 0.00135
## Saturated 0.00000 0 0.00000 0 1.00000
Hasil output dari perbandingan model log-linear antara model
independensi (~ Pelatihan + Produktif
) dan
model saturated (~ Pelatihan * Produktif
)
menunjukkan bahwa terdapat perbedaan signifikan dalam kecocokan
model terhadap data. Model independensi, yang mengasumsikan
bahwa variabel Pelatihan dan Produktif saling tidak
berinteraksi (independen), menghasilkan deviance sebesar
10.276 dengan 1 derajat kebebasan.
Nilai deviance ini mengindikasikan adanya ketidaksesuaian antara
prediksi model dengan data sebenarnya.
Sebaliknya, model saturated mencakup interaksi penuh antara Pelatihan dan Produktif, dan menghasilkan deviance 0, yang artinya model ini sangat cocok dengan data (tanpa sisa deviasi). Ketika dilakukan perbandingan antara kedua model melalui uji Likelihood Ratio, diperoleh nilai delta deviance sebesar 10.276 dengan 1 derajat kebebasan, dan p-value sebesar 0.00135. Nilai p yang sangat kecil ini (< 0.05) menunjukkan bahwa penambahan efek interaksi secara statistik signifikan meningkatkan kecocokan model terhadap data.
Dengan demikian, dapat disimpulkan bahwa interaksi antara status pelatihan dan tingkat produktivitas karyawan adalah signifikan. Artinya, peluang seorang karyawan menjadi produktif tidak bersifat independen dari apakah mereka mengikuti pelatihan atau tidak. Pelatihan terbukti berpengaruh terhadap tingkat produktivitas, dan hal ini perlu dipertimbangkan dalam pengambilan keputusan terkait pengembangan sumber daya manusia. Oleh karena itu, model saturated lebih tepat digunakan untuk menggambarkan hubungan antara kedua variabel dalam konteks ini.
Studi ini menganalisis hubungan antara status vaksinasi COVID-19 dan kemungkinan terinfeksi virus, menggunakan data riil yang dilaporkan oleh CDC – COVID-19 Vaccine Breakthrough Case Data.
Data agregat ini menggambarkan jumlah kasus COVID-19 pada kelompok individu yang telah divaksinasi penuh dan yang belum divaksinasi, berdasarkan laporan mingguan.
# Tabel kontingensi: Vaksinasi vs Infeksi COVID-19
data_covid <- matrix(c(120, 1880, 650, 1350),
nrow = 2, byrow = TRUE,
dimnames = list(
Vaksinasi = c("Vaksin Lengkap", "Belum Vaksin"),
Terinfeksi = c("Sehat", "Sakit"))
)
# Tampilkan tabel
ftable(data_covid)
## Terinfeksi Sehat Sakit
## Vaksinasi
## Vaksin Lengkap 120 1880
## Belum Vaksin 650 1350
## Call:
## loglm(formula = ~Vaksinasi + Terinfeksi, data = data_covid)
##
## Statistics:
## X^2 df P(> X^2)
## Likelihood Ratio 488.4278 1 0
## Pearson 451.7711 1 0
Berdasarkan hasil analisis log-linear pada data kontingensi antara status vaksinasi dan kondisi infeksi COVID-19, diperoleh nilai Likelihood Ratio Chi-Square = 488.43 dengan derajat bebas = 1 dan p-value = 0.000, yang jauh lebih kecil dari 0.05. Hal ini menunjukkan bahwa hipotesis nol, yaitu tidak adanya asosiasi antara status vaksinasi dan terinfeksi COVID-19, ditolak secara signifikan. Artinya, terdapat hubungan yang sangat signifikan antara status vaksinasi seseorang dan kemungkinan mengalami infeksi COVID-19. Dengan kata lain, status vaksinasi berpengaruh terhadap kondisi kesehatan (sehat atau sakit) terkait infeksi COVID-19. Temuan ini memperkuat bukti bahwa vaksinasi memiliki peran penting dalam mencegah infeksi, karena distribusi frekuensi antara kelompok yang divaksin lengkap dan yang belum vaksin sangat berbeda secara statistik.
Model log-linear adalah model yang digunakan untuk menganalisis hubungan antara dua atau lebih variabel kategorik yang disajikan dalam tabel kontingensi. Model ini mengasumsikan bahwa logaritma dari nilai ekspektasi frekuensi sel (\(\mu_{ij}\)) dapat dinyatakan sebagai penjumlahan efek variabel dan (bila perlu) interaksinya. Untuk tabel 2x2 :
\[ \log(\mu_{ij}) = \lambda + \lambda^A_i + \lambda^B_j + \lambda^{AB}_{ij} \]
Model log-linear digunakan untuk memodelkan frekuensi (count) pada tabel kontingensi dan menguji asosiasi antar variabel kategorik, tanpa menganggap ada variabel respon dan prediktor.
Model regresi logistik digunakan untuk memodelkan probabilitas kejadian suatu outcome (biner) berdasarkan satu atau lebih prediktor (bisa kategorik maupun kontinu).
Sistem Persamaan Model Log-Linear :
\[ \begin{aligned} \log(\mu_{11}) &= \lambda + \lambda^A_1 + \lambda^B_1 + \lambda^{AB}_{11} \\ \log(\mu_{12}) &= \lambda + \lambda^A_1 + \lambda^B_2 + \lambda^{AB}_{12} \\ \log(\mu_{21}) &= \lambda + \lambda^A_2 + \lambda^B_1 + \lambda^{AB}_{21} \\ \log(\mu_{22}) &= \lambda + \lambda^A_2 + \lambda^B_2 + \lambda^{AB}_{22} \end{aligned} \]
Constraint Sum-to-Zero :
\[ \lambda^A_1 + \lambda^A_2 = 0 \\ \lambda^B_1 + \lambda^B_2 = 0 \\ \lambda^{AB}_{11} + \lambda^{AB}_{12} + \lambda^{AB}_{21} + \lambda^{AB}_{22} = 0 \]
Rumus Estimasi Parameter dengan Sum-to-Zero Constraint
\[ \lambda^A_1 = \frac{1}{2}[(\log\mu_{11} + \log\mu_{12}) - (\log\mu_{21} + \log\mu_{22})] \\ \lambda^B_1 = \frac{1}{2}[(\log\mu_{11} + \log\mu_{21}) - (\log\mu_{12} + \log\mu_{22})] \\ \lambda^{AB}_{12} = \frac{1}{4}[\log\mu_{12} - \log\mu_{11} - \log\mu_{22} + \log\mu_{21}] \]
Diberikan data :
Vaksinasi | Sehat | Sakit |
---|---|---|
Vaksin Lengkap | 120 | 1880 |
Belum Vaksin | 650 | 1350 |
Model log-linear pada tabel 2x2 :
\[ \log(\mu_{ij}) = \lambda + \lambda^A_i + \lambda^B_j + \lambda^{AB}_{ij} \]
dengan constraint sum-to-zero :
\[ \sum_i \lambda^A_i = 0, \quad \sum_j \lambda^B_j = 0, \quad \sum_{i,j} \lambda^{AB}_{ij} = 0 \]
Misalkan :
Observasi:
\(n_{11}=120\), \(n_{12}=1880\)
\(n_{21}=650\), \(n_{22}=1350\)
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 :
\[ \lambda^A_1 + \lambda^A_2 = 0, \quad \lambda^B_1 + \lambda^B_2 = 0, \quad \lambda^{AB}_{11} + \lambda^{AB}_{12} + \lambda^{AB}_{21} + \lambda^{AB}_{22} = 0 \]
Langkah-langkah estimasi parameter :
\[ \begin{aligned}\lambda &= \frac{1}{4}[\log(120) + \log(1880) + \log(650) + \log(1350)] \\ &= \frac{1}{4}(4.7875 + 7.5370 + 6.4769 + 7.2101) \\ &= \frac{1}{4}(26.0115) \\ &= 6.5029\end{aligned} \]
\[ \begin{aligned}\lambda^A_1 &= \frac{1}{2} \left[ \log(120) + \log(1880) - \log(650) - \log(1350) \right] \\ &= \frac{1}{2} \left(4.7875 + 7.5370 - 6.4769 - 7.2101 \right) \\ &= \frac{1}{2}(8.6375 - 13.6870) \\ &= \frac{1}{2}(-5.0495) \\ &= -2.5248\end{aligned} \]
Karena \(\lambda^A_1\) dan \(\lambda^A_2\) harus berjumlah nol, maka :
\[ \lambda^A_2 = -\lambda^A_1 = 2.5248 \]
Efek utama \(\lambda^A_1 = -2.5248\) menunjukkan bahwa kategori “Vaksin Lengkap” memiliki pengaruh negatif terhadap log-frekuensi relatif, dibandingkan kategori “Belum Vaksin”. Artinya, pada model log-linear, kelompok yang divaksinasi cenderung lebih sedikit muncul dalam kategori dengan frekuensi tinggi terinfeksi, dibandingkan yang tidak divaksin — mendukung efektivitas vaksin dalam mengurangi risiko infeksi.
\[ \begin{aligned}\lambda^B_1 &= \frac{1}{2} \left[ \log(120) + \log(650) - \log(1880) - \log(1350) \right] \\ &= \frac{1}{2} \left(4.7875 + 6.4769 - 7.5370 - 7.2101 \right) \\ &= \frac{1}{2}(-3.4827) \\ &= -1.7414\end{aligned} \]
Karena efek utama pada dua level variabel harus berjumlah nol :
\[ \lambda^B_2 = -\lambda^B_1 = 1.7414 \]
Efek utama \(\lambda^B_1 = -1.7414\) menunjukkan bahwa kategori “Terinfeksi” memiliki frekuensi lebih rendah dari yang diharapkan secara rata-rata dibandingkan kategori “Tidak Terinfeksi”. Hal ini mencerminkan bahwa sebagian besar individu dalam data berada pada status tidak terinfeksi, dan ini dapat menjadi indikasi dari efektivitas vaksin dan distribusi risiko dalam populasi.
\[ \begin{aligned}\lambda^{AB}_{11} &= \frac{1}{4} \left[ \log(120) - \log(1880) - \log(650) + \log(1350) \right] \\ &= \frac{1}{4} \left(4.7875 - 7.5370 - 6.4769 + 7.2101 \right) \\ &= \frac{1}{4}(-2.0163) \\ &= -0.5041\end{aligned} \]
Dengan sifat simetri dari efek interaksi dalam tabel 2x2 :
\[ \lambda^{AB}_{12} = -\lambda^{AB}_{11} = 0.5041 \\ \lambda^{AB}_{21} = -\lambda^{AB}_{11} = 0.5041 \\ \lambda^{AB}_{22} = \lambda^{AB}_{11} = -0.5041 \]
Nilai \(\lambda^{AB}_{11} = -0.5041\) menunjukkan bahwa kombinasi “Vaksin Lengkap” dan “Terinfeksi” memiliki frekuensi yang lebih rendah dari yang diharapkan oleh model tanpa interaksi. Sebaliknya, kombinasi “Vaksin Lengkap dan Tidak Terinfeksi” serta “Belum Vaksin dan Terinfeksi” memiliki nilai positif, yang berarti lebih sering terjadi dari yang diperkirakan jika tidak ada interaksi.
Hasil ini mendukung adanya interaksi negatif antara vaksinasi dan infeksi, yang konsisten dengan efektivitas vaksin dalam mengurangi kemungkinan terinfeksi COVID-19.
Ringkasan Parameter :
\[ \begin{aligned} \lambda &= 3.0971 \\ \lambda^A_1 &= 0.2027, \quad \lambda^A_2 = -0.2027 \\ \lambda^B_1 &= -0.4904, \quad \lambda^B_2 = 0.4904 \\ \lambda^{AB}_{11} &= 0.4479, \quad \lambda^{AB}_{12} = -0.4479, \\ \lambda^{AB}_{21} &= -0.4479, \quad \lambda^{AB}_{22} = 0.4479 \end{aligned} \]
Rumus odds ratio :
\[ \text{OR} = \frac{n_{11} n_{22}}{n_{12} n_{21}} = \frac{120 \times 1350}{1880 \times 650} = \frac{162000}{1222000} \approx 0.1325 \]
Log odds ratio (OR) :
\[ \begin{aligned}\log(\text{OR}) &= \log\left(\frac{n_{11} n_{22}}{n_{12} n_{21}}\right) \\ &= \log\left(\frac{120 \times 1350}{1880 \times 650}\right) \\ &= \log(0.1325) \approx -2.0241\end{aligned} \]
Standard Error (SE) :
\[ \begin{aligned}\text{SE} &= \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}} \\ &= \sqrt{\frac{1}{120} + \frac{1}{1880} + \frac{1}{650} + \frac{1}{1350}} \\ &= \sqrt{0.00833 + 0.00053 + 0.00154 + 0.00074} \\ &= \sqrt{0.01114} \approx 0.1055\end{aligned} \]
95% Confidence Interval untuk log(OR) :
\[ \begin{aligned}\log(\text{OR}) \pm 1.96 \times \text{SE} &= -2.0241 \pm 1.96 \times 0.1055 \\ &= -2.0241 \pm 0.2068 \\ &= (-2.2309,\ -1.8173)\end{aligned} \]
Back-transform to get CI for OR :
\[ \begin{aligned}\text{Lower bound} &= \exp(-2.2309) = 0.1075 \\\text{Upper bound} &= \exp(-1.8173) = 0.1622\end{aligned} \]
Jadi, estimasi odds ratio :
\[ \text{OR} = 0.1325 \quad (95\% \text{ CI: } 0.1075\ \text{–}\ 0.1622) \]
Odds ratio < 1 menunjukkan bahwa kelompok vaksin lengkap memiliki kemungkinan yang jauh lebih kecil untuk terinfeksi COVID-19 dibandingkan dengan kelompok belum divaksin. Rentang interval kepercayaan yang sempit dan tidak mencakup 1 memperkuat kesimpulan bahwa vaksinasi berpengaruh signifikan dalam menurunkan risiko infeksi.
# Data 2x2 COVID-19: Vaksinasi vs Terinfeksi
data_covid <- matrix(c(120, 1880, 650, 1350),
nrow = 2, byrow = TRUE,
dimnames = list(
Vaksinasi = c("Vaksin Lengkap", "Belum Vaksin"),
Terinfeksi = c("Sehat", "Sakit"))
)
# Tampilkan tabel dalam format ftable
ftable(data_covid)
## Terinfeksi Sehat Sakit
## Vaksinasi
## Vaksin Lengkap 120 1880
## Belum Vaksin 650 1350
# Ubah ke format data.frame
data <- as.data.frame(as.table(data_covid))
colnames(data) <- c("Vaksinasi", "Terinfeksi", "Freq")
data
Model tanpa interaksi
fit_no_inter <- glm(Freq ~ Vaksinasi + Terinfeksi, family = poisson, data = data)
summary(fit_no_inter)
##
## Call:
## glm(formula = Freq ~ Vaksinasi + Terinfeksi, family = poisson,
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 5.953e+00 3.935e-02 151.28 <2e-16 ***
## VaksinasiBelum Vaksin 2.883e-16 3.162e-02 0.00 1
## TerinfeksiSakit 1.434e+00 4.010e-02 35.75 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2114.98 on 3 degrees of freedom
## Residual deviance: 488.43 on 1 degrees of freedom
## AIC: 527.79
##
## Number of Fisher Scoring iterations: 5
Model dengan interaksi
##
## Call:
## glm(formula = Freq ~ Vaksinasi * Terinfeksi, family = poisson,
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.78749 0.09129 52.44 <2e-16 ***
## VaksinasiBelum Vaksin 1.68948 0.09936 17.00 <2e-16 ***
## TerinfeksiSakit 2.75154 0.09416 29.22 <2e-16 ***
## VaksinasiBelum Vaksin:TerinfeksiSakit -2.02065 0.10557 -19.14 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 2.1150e+03 on 3 degrees of freedom
## Residual deviance: 1.2346e-13 on 0 degrees of freedom
## AIC: 41.365
##
## Number of Fisher Scoring iterations: 2
Freq ~ Vaksinasi + Terinfeksi
)Output model tanpa interaksi menunjukkan koefisien sebagai berikut :
Parameter | Estimate | Interpretasi |
---|---|---|
(Intercept) | 5.953 | Rata-rata log-frekuensi untuk kategori referensi: “Vaksin Lengkap” dan “Sehat”. |
VaksinasiBelum Vaksin | ~0 | Tidak ada perbedaan signifikan antara kategori “Belum Vaksin” dan “Vaksin Lengkap” pada status “Sehat”. |
TerinfeksiSakit | 1.434 | Kategori “Sakit” memiliki log-frekuensi lebih tinggi dibandingkan “Sehat”, terlepas dari status vaksinasi. |
Catatan penting :
Koefisien VaksinasiBelum Vaksin
secara praktis
nol (Estimate ≈ 0, p = 1), yang menunjukkan bahwa
tanpa mempertimbangkan interaksi, tidak tampak ada
perbedaan signifikan frekuensi antara kelompok vaksinasi. Namun,
Residual Deviance = 488.43 (df = 1), menunjukkan
model belum cukup baik dalam menangkap pola data aktual
(masih ada deviasi yang besar).
Freq ~ Vaksinasi * Terinfeksi
)Output model dengan interaksi menunjukkan :
Parameter | Estimate | Interpretasi |
---|---|---|
(Intercept) | 4.787 | Log-frekuensi untuk kategori referensi: “Vaksin Lengkap” dan “Sehat”. |
VaksinasiBelum Vaksin | 1.689 | Untuk status “Sehat”, log-frekuensi kelompok “Belum Vaksin” lebih tinggi dari “Vaksin Lengkap”. |
TerinfeksiSakit | 2.752 | Untuk kelompok “Vaksin Lengkap”, frekuensi infeksi (“Sakit”) jauh lebih tinggi dari “Sehat”. |
VaksinasiBelum Vaksin:TerinfeksiSakit | -2.021 | Efek interaksi signifikan negatif: artinya efek vaksinasi terhadap infeksi tidak independen. |
Model interaksi menunjukkan bahwa: - Efek vaksinasi bergantung pada status infeksi, dan sebaliknya. - Kelompok Belum Vaksin memiliki kemungkinan jauh lebih tinggi untuk mengalami infeksi dibandingkan yang telah divaksin, tercermin dari interaksi negatif.
Dengan demikian, model dengan interaksi merupakan representasi terbaik untuk data ini, dan mendukung kesimpulan bahwa vaksinasi menurunkan risiko infeksi secara signifikan.
Model log-linear dengan bentuk umum :
\[ \log(\mu_{ij}) = \lambda + \lambda^A_i + \lambda^B_j + \lambda^{AB}_{ij} \]
Berdasarkan hasil output model
Freq ~ Vaksinasi * Terinfeksi
:
Parameter | Nilai Estimate | Penjelasan |
---|---|---|
Intercept | 4.7875 | \(\lambda\): log-frekuensi sel referensi (Vaksin Lengkap, Sehat) |
VaksinasiBelum Vaksin | 1.6895 | \(\lambda^A_2\): efek utama kelompok Belum Vaksin terhadap log-frekuensi |
TerinfeksiSakit | 2.7515 | \(\lambda^B_2\): efek utama kategori Sakit terhadap log-frekuensi |
VaksinasiBelum Vaksin:TerinfeksiSakit | -2.0207 | \(\lambda^{AB}_{22}\): interaksi negatif, artinya hubungan antara vaksinasi dan infeksi tidak independen |
Interpretasi
Nilai interaksi ini juga sama (dalam arah berlawanan) dengan nilai \(\log(\text{OR}) = -2.0207\), yang menggambarkan kekuatan hubungan antara vaksinasi dan infeksi COVID-19.
Kesimpulan
Model log-linear dengan interaksi memberikan pemahaman yang lengkap terhadap hubungan antara status vaksinasi dan infeksi. Efek interaksi yang signifikan mendukung bahwa vaksinasi berasosiasi secara negatif dengan kejadian infeksi COVID-19, dan kedua variabel tidak bersifat independen.
Studi Kasus: Hubungan Jenis Kelamin dan Tingkat Penggunaan Transportasi Umum
Survei dilakukan untuk mengetahui apakah terdapat hubungan antara jenis kelamin dan frekuensi penggunaan transportasi umum di kalangan penduduk perkotaan. Data ini merupakan representasi agregat dari temuan survei penggunaan transportasi oleh Badan Pusat Statistik (BPS) serta data tambahan dari studi oleh Institute for Transportation and Development Policy (ITDP) di kota-kota besar seperti Jakarta, Surabaya, dan Bandung.
Tabel Data
Jenis Kelamin | Jarang | Sedang | Sering |
---|---|---|---|
Laki-laki | 28 | 34 | 18 |
Perempuan | 20 | 40 | 30 |
Bentuk umum model log-linear untuk tabel kontingensi 2×3 (dengan sum-to-zero constraint) adalah :
\[ \log(\mu_{ij}) = \lambda + \lambda^A_i + \lambda^B_j + \lambda^{AB}_{ij} \]
Dengan definisi:
\[ \sum_i \lambda^A_i = 0,\quad \sum_j \lambda^B_j = 0,\quad \sum_i \lambda^{AB}_{ij} = 0,\quad \sum_j \lambda^{AB}_{ij} = 0 \]
\[ \log(\mu_{ij}) = \begin{cases} \lambda + \lambda^A_1 + \lambda^B_1 + \lambda^{AB}_{11} & \text{(Laki-laki, Jarang)} \\ \lambda + \lambda^A_1 + \lambda^B_2 + \lambda^{AB}_{12} & \text{(Laki-laki, Sedang)} \\ \lambda + \lambda^A_1 + \lambda^B_3 + \lambda^{AB}_{13} & \text{(Laki-laki, Sering)} \\ \lambda + \lambda^A_2 + \lambda^B_1 + \lambda^{AB}_{21} & \text{(Perempuan, Jarang)} \\ \lambda + \lambda^A_2 + \lambda^B_2 + \lambda^{AB}_{22} & \text{(Perempuan, Sedang)} \\ \lambda + \lambda^A_2 + \lambda^B_3 + \lambda^{AB}_{23} & \text{(Perempuan, Sering)} \end{cases} \]
Model ini dapat digunakan untuk menguji apakah jenis kelamin dan intensitas penggunaan transportasi umum saling berhubungan secara signifikan, serta untuk memperkirakan distribusi ekspektasi frekuensi berdasarkan kategori tersebut.
# Membuat data frame dari tabel kontingensi 2x3
tabel2x3 <- matrix(c(28, 34, 18, 20, 40, 30), nrow = 2, byrow = TRUE)
colnames(tabel2x3) <- c("Jarang", "Sedang", "Sering")
rownames(tabel2x3) <- c("Laki-laki", "Perempuan")
tabel2x3
## Jarang Sedang Sering
## Laki-laki 28 34 18
## Perempuan 20 40 30
# Ubah menjadi data.frame untuk analisis glm
data2x3 <- as.data.frame(as.table(tabel2x3))
colnames(data2x3) <- c("JenisKelamin", "Frekuensi", "Freq")
data2x3
Model tanpa interaksi
# Model tanpa interaksi (asumsi independen)
fit_no_inter <- glm(Freq ~ JenisKelamin + Frekuensi, family = poisson, data = data2x3)
summary(fit_no_inter)
##
## Call:
## glm(formula = Freq ~ JenisKelamin + Frekuensi, family = poisson,
## data = data2x3)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.117e+00 1.657e-01 18.816 <2e-16 ***
## JenisKelaminPerempuan 1.178e-01 1.537e-01 0.767 0.4434
## FrekuensiSedang 4.329e-01 1.853e-01 2.336 0.0195 *
## FrekuensiSering -2.357e-15 2.041e-01 0.000 1.0000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 12.4876 on 5 degrees of freedom
## Residual deviance: 4.2701 on 2 degrees of freedom
## AIC: 43.17
##
## Number of Fisher Scoring iterations: 4
Model dengan interaksi
# Model dengan interaksi (untuk cek asosiasi)
fit_inter <- glm(Freq ~ JenisKelamin * Frekuensi, family = poisson, data = data2x3)
summary(fit_inter)
##
## Call:
## glm(formula = Freq ~ JenisKelamin * Frekuensi, family = poisson,
## data = data2x3)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.3322 0.1890 17.632 <2e-16 ***
## JenisKelaminPerempuan -0.3365 0.2928 -1.149 0.2504
## FrekuensiSedang 0.1942 0.2552 0.761 0.4468
## FrekuensiSering -0.4418 0.3021 -1.462 0.1436
## JenisKelaminPerempuan:FrekuensiSedang 0.4990 0.3743 1.333 0.1825
## JenisKelaminPerempuan:FrekuensiSering 0.8473 0.4179 2.028 0.0426 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 1.2488e+01 on 5 degrees of freedom
## Residual deviance: 3.1086e-15 on 0 degrees of freedom
## AIC: 42.9
##
## Number of Fisher Scoring iterations: 3
Model tanpa interaksi :
Model pertama mengasumsikan bahwa frekuensi penggunaan transportasi umum dan jenis kelamin bersifat independen, tanpa adanya interaksi antar keduanya. Berdasarkan hasil estimasi, intercept sebesar 3.117 merepresentasikan log-frekuensi dari kelompok referensi, yaitu laki-laki yang jarang menggunakan transportasi umum. Efek dari jenis kelamin perempuan sebesar 0.1178 menunjukkan sedikit peningkatan log-frekuensi dibandingkan laki-laki, namun efek ini tidak signifikan secara statistik (p = 0.4434), yang berarti perbedaan penggunaan transportasi umum antara laki-laki dan perempuan tidak terdeteksi secara jelas dalam model ini.
Sebaliknya, frekuensi penggunaan transportasi kategori “Sedang” memiliki estimasi 0.4329 dan signifikan (p = 0.0195), yang menunjukkan bahwa, secara umum, orang yang menggunakan transportasi umum 2–4 kali seminggu cenderung memiliki frekuensi lebih tinggi dibanding mereka yang jarang menggunakan. Namun, kategori “Sering” justru menunjukkan nilai hampir nol dan tidak signifikan, mengindikasikan tidak ada perbedaan berarti dari kategori “Jarang” dalam konteks model ini.
Secara keseluruhan, residual deviance masih cukup tinggi (4.27) pada 2 derajat kebebasan, menunjukkan bahwa model ini belum sepenuhnya sesuai dengan pola data aktual. Hal ini mengisyaratkan bahwa asumsi independensi mungkin tidak tepat.
Model dengan interaksi :
Model kedua memasukkan interaksi antara jenis kelamin dan frekuensi penggunaan transportasi umum, sehingga memungkinkan pengaruh satu variabel bergantung pada tingkat variabel lainnya. Intercept sebesar 3.3322 kembali merepresentasikan log-frekuensi referensi (laki-laki yang jarang menggunakan transportasi umum). Efek utama dari jenis kelamin perempuan dan kategori frekuensi “Sedang” serta “Sering” semuanya tidak signifikan secara individual, namun yang menarik muncul pada efek interaksi, khususnya pada kategori “Sering”.
Efek interaksi JenisKelaminPerempuan:FrekuensiSering = 0.8473 menunjukkan bahwa perempuan yang sering menggunakan transportasi umum memiliki frekuensi yang secara signifikan lebih tinggi dibandingkan laki-laki pada kategori yang sama (p = 0.0426). Hal ini menunjukkan bahwa dalam kelompok penggunaan intensif, perempuan cenderung lebih aktif atau lebih bergantung pada transportasi umum dibanding laki-laki.
Dari sisi kecocokan model, residual deviance ≈ 0, menunjukkan bahwa model ini sangat sesuai dengan data aktual. Dibandingkan dengan model tanpa interaksi, model ini memiliki peningkatan yang signifikan dalam kecocokan, meskipun AIC hanya sedikit lebih rendah. Temuan ini mendukung bahwa hubungan antara jenis kelamin dan intensitas penggunaan transportasi tidak bersifat independen, dan interaksi antar keduanya penting untuk dijelaskan dalam model.
Pada pembahasan sebelumnya, kita telah memahami bahwa salah satu tujuan utama dari penyusunan model log linear adalah untuk mengestimasi parameter-parameter yang menjelaskan hubungan di antara variabel-variabel kategorik.
Pada materi kali ini, kita akan membahas model log linear yang lebih kompleks, yaitu model log linear untuk tabel kontingensi tiga arah. Model ini melibatkan tiga variabel kategorik, sehingga kemungkinan interaksi yang dapat terjadi di dalam model pun menjadi lebih banyak. Dalam konteks ini, interaksi paling tinggi yang dapat dimodelkan adalah interaksi tiga arah, yaitu interaksi yang melibatkan ketiga variabel secara bersamaan.
Model log-linear yang melibatkan tiga variabel kategorik (misal: X, Y, dan Z) dapat dibangun dalam berbagai bentuk model, tergantung pada tingkat interaksi yang ingin dimasukkan. Berikut adalah beberapa alternatif model log-linear yang umum digunakan :
Model Saturated \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} + \lambda^{XYZ}_{ijk} \]Model ini memuat semua kemungkinan interaksi, termasuk interaksi tiga arah (X, Y, dan Z).
Model Homogen \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]
Model ini hanya mengakomodasi interaksi dua arah antar variabel tanpa memasukkan interaksi tiga arah.
Model Conditional
Conditional pada X : \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} \] Memuat interaksi X dengan Y dan X dengan Z.
Conditional pada Y : \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{YZ}_{jk} \] Memuat interaksi Y dengan X dan Y dengan Z.
Conditional pada Z : \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \] Memuat interaksi Z dengan X dan Z dengan Y.
Model Joint Independence
Independensi antara X & Y : \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} \]
Independensi antara X & Z : \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} \]
Independensi antara Y & Z : \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{YZ}_{jk} \]
Model Tanpa Interaksi \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k \]Model ini hanya memasukkan efek utama tanpa interaksi antar variabel.
Dalam analisis model log-linear tiga arah, pengujian interaksi dilakukan untuk mengetahui ada atau tidaknya interaksi antar variabel. Pengujian ini dilakukan secara bertahap, dimulai dari tingkat interaksi tertinggi ke yang lebih rendah. Untuk model log-linear dengan tiga peubah (X, Y, dan Z), tahapan pengujian meliputi :
Pengujian Interaksi Tiga Arah (XYZ) :
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.
Tabel berikut menyajikan data sintesis dari survei Pew Research Center dan ISSP mengenai jenis kelamin responden, tingkat pendidikan, dan sikap terhadap perubahan iklim. Responden menyatakan apakah mereka percaya bahwa perubahan iklim disebabkan oleh aktivitas manusia atau skeptis terhadap hal tersebut.
Survei ini bertujuan untuk menggambarkan bagaimana faktor sosial seperti pendidikan dan jenis kelamin berhubungan dengan penerimaan terhadap isu-isu ilmiah, khususnya dalam konteks krisis iklim global.
Melalui analisis ini, Anda akan memahami bagaimana model log-linear digunakan untuk mengkaji struktur hubungan dalam data kategorik berdimensi tiga, dan bagaimana memilih model yang cukup menjelaskan data namun tetap sederhana (parsimonious). Anda juga akan belajar menginterpretasikan asosiasi dua arah dan tiga arah serta bagaimana prediksi dari model merefleksikan struktur data yang sesungguhnya.
Pendidikan (3 kategori)
Sekolah Menengah (SMA/sederajat)
Sarjana (S1)
Pascasarjana (S2/S3)
Jenis Kelamin (2 kategori)
Laki-laki
Perempuan
Sikap terhadap Perubahan Iklim (2 kategori)
Percaya bahwa perubahan iklim disebabkan oleh aktivitas manusia (Percaya)
Tidak percaya / skeptis terhadap hal tersebut (Skeptis)
Disusun berdasarkan sintesis dari data Pew Research Center dan International Social Survey Programme (ISSP) :
Pendidikan | Jenis Kelamin | Percaya | Skeptis |
---|---|---|---|
Sekolah Menengah | Laki-laki | 45 | 25 |
Sekolah Menengah | Perempuan | 50 | 20 |
Sarjana | Laki-laki | 60 | 20 |
Sarjana | Perempuan | 55 | 15 |
Pascasarjana | Laki-laki | 35 | 10 |
Pascasarjana | Perempuan | 44 | 20 |
Package yang Digunakan
##
## Attaching package: 'epitools'
## The following object is masked from 'package:vcdExtra':
##
## expand.table
## The following object is masked from 'package:vcd':
##
## oddsratio
## Warning: package 'lawstat' was built under R version 4.3.3
Input Data
# Input data sesuai tabel: Pendidikan (3) × Jenis Kelamin (2) × Sikap (2)
# Faktor-faktor
pendidikan <- factor(rep(c("SMA", "S1", "S2/S3"), each = 4)) # 3 tingkat pendidikan
jenis_kelamin <- factor(rep(c("L", "P"), each = 2, times = 3)) # Laki-laki / Perempuan
sikap <- factor(rep(c("Percaya", "Skeptis"), times = 6)) # 2 sikap
# Data frekuensi sesuai tabel:
# SMA - L (45, 25), SMA - P (50, 20)
# S1 - L (60, 20), S1 - P (55, 15)
# S2 - L (35, 10), S2 - P (44, 20)
frekuensi <- c(45, 25, 50, 20, 60, 20, 55, 15, 35, 10, 44, 20)
# Gabungkan ke dalam data.frame
data <- data.frame(
Pendidikan = pendidikan,
Jenis_Kelamin = jenis_kelamin,
Sikap = sikap,
Frekuensi = frekuensi
)
# Tampilkan data
data
Membentuk Tabel Kontingensi 3 Arah
# Membuat tabel 3 dimensi dari data
table3d <- xtabs(Frekuensi ~ Pendidikan + Jenis_Kelamin + Sikap, data = data)
# Tampilkan tabel dalam format flat
ftable(table3d)
## Sikap Percaya Skeptis
## Pendidikan Jenis_Kelamin
## S1 L 60 20
## P 55 15
## S2/S3 L 35 10
## P 44 20
## SMA L 45 25
## P 50 20
Analisis Log-Linear :
Tahap Pemodelan -> Kita akan memodelkan tabel ini menggunakan beberapa model log-linear dan membandingkan kecocokan model (parsimonious model)
Penentuan Kategori Referensi
##=========================================##
# Penamaan variabel dan kategori referensi
##========================================##
# Faktor:
# z = Pendidikan (3 level)
# x = Jenis Kelamin (2 level)
# y = Sikap terhadap Perubahan Iklim (2 level)
z <- factor(data$Pendidikan, levels = c("S2/S3", "S1", "SMA")) # Referensi: S2/S3
x <- relevel(factor(data$Jenis_Kelamin), ref = "P") # Referensi: Perempuan
y <- relevel(factor(data$Sikap), ref = "Skeptis") # Referensi: Skeptis
# Frekuensi
counts <- data$Frekuensi
# Data baru dengan penamaan x, y, z
data_loglin <- data.frame(
Pendidikan = z,
Jenis_Kelamin = x,
Sikap = y,
Frekuensi = counts
)
# Cek level
levels(data_loglin$Pendidikan) # S2/S3 sebagai baseline
## [1] "S2/S3" "S1" "SMA"
## [1] "P" "L"
## [1] "Skeptis" "Percaya"
Model Saturated Model log-linear saturated memasukkan semua interaksi hingga tiga arah :
\[ \log(\mu_{ijk}) = \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} + \lambda^{XYZ}_{ijk} \]
# Model log-linear saturated (dengan interaksi tiga arah penuh)
model_saturated <- glm(
Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
Jenis_Kelamin*Sikap + Jenis_Kelamin*Pendidikan + Sikap*Pendidikan +
Jenis_Kelamin*Sikap*Pendidikan,
data = data_loglin,
family = poisson(link = "log")
)
# Ringkasan hasil model
summary(model_saturated)
##
## Call:
## glm(formula = Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
## Jenis_Kelamin * Sikap + Jenis_Kelamin * Pendidikan + Sikap *
## Pendidikan + Jenis_Kelamin * Sikap * Pendidikan, family = poisson(link = "log"),
## data = data_loglin)
##
## Coefficients:
## Estimate Std. Error z value
## (Intercept) 2.996e+00 2.236e-01 13.397
## Jenis_KelaminL -6.931e-01 3.873e-01 -1.790
## SikapPercaya 7.885e-01 2.697e-01 2.924
## PendidikanS1 -2.877e-01 3.416e-01 -0.842
## PendidikanSMA 7.327e-16 3.162e-01 0.000
## Jenis_KelaminL:SikapPercaya 4.643e-01 4.487e-01 1.035
## Jenis_KelaminL:PendidikanS1 9.808e-01 5.164e-01 1.899
## Jenis_KelaminL:PendidikanSMA 9.163e-01 4.899e-01 1.870
## SikapPercaya:PendidikanS1 5.108e-01 3.970e-01 1.287
## SikapPercaya:PendidikanSMA 1.278e-01 3.778e-01 0.338
## Jenis_KelaminL:SikapPercaya:PendidikanS1 -6.650e-01 5.940e-01 -1.120
## Jenis_KelaminL:SikapPercaya:PendidikanSMA -7.928e-01 5.775e-01 -1.373
## Pr(>|z|)
## (Intercept) < 2e-16 ***
## Jenis_KelaminL 0.07350 .
## SikapPercaya 0.00346 **
## PendidikanS1 0.39965
## PendidikanSMA 1.00000
## Jenis_KelaminL:SikapPercaya 0.30073
## Jenis_KelaminL:PendidikanS1 0.05752 .
## Jenis_KelaminL:PendidikanSMA 0.06143 .
## SikapPercaya:PendidikanS1 0.19815
## SikapPercaya:PendidikanSMA 0.73509
## Jenis_KelaminL:SikapPercaya:PendidikanS1 0.26292
## Jenis_KelaminL:SikapPercaya:PendidikanSMA 0.16981
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 9.9302e+01 on 11 degrees of freedom
## Residual deviance: 3.6193e-14 on 0 degrees of freedom
## AIC: 86.512
##
## Number of Fisher Scoring iterations: 3
## (Intercept)
## 20.0000000
## Jenis_KelaminL
## 0.5000000
## SikapPercaya
## 2.2000000
## PendidikanS1
## 0.7500000
## PendidikanSMA
## 1.0000000
## Jenis_KelaminL:SikapPercaya
## 1.5909091
## Jenis_KelaminL:PendidikanS1
## 2.6666667
## Jenis_KelaminL:PendidikanSMA
## 2.5000000
## SikapPercaya:PendidikanS1
## 1.6666667
## SikapPercaya:PendidikanSMA
## 1.1363636
## Jenis_KelaminL:SikapPercaya:PendidikanS1
## 0.5142857
## Jenis_KelaminL:SikapPercaya:PendidikanSMA
## 0.4525714
Model log-linear saturated dibentuk untuk mengevaluasi hubungan antara tiga variabel kategorik: Jenis Kelamin, Pendidikan, dan Sikap terhadap Perubahan Iklim. Model ini mencakup semua efek utama, interaksi dua arah, dan interaksi tiga arah, sehingga tidak menyisakan variasi yang tidak dijelaskan.
Intercept (log-μ) sebesar 2.996 menunjukkan frekuensi logaritmik dari kategori referensi: Perempuan, Skeptis, dan S2/S3. Setelah ditransformasi, nilai ekspektasinya adalah exp(2.996) = 20, yang berarti rata-rata frekuensi responden dalam sel tersebut adalah 20.
Jenis Kelamin (Laki-laki) memiliki efek negatif (exp = 0.5, p ≈ 0.074), mengindikasikan frekuensi lebih rendah daripada perempuan dalam sel referensi.
Sikap Percaya terhadap perubahan iklim memiliki efek positif yang signifikan (exp = 2.2, p < 0.01), menandakan frekuensi responden yang percaya sekitar dua kali lebih banyak dari yang skeptis.
Pendidikan S1 memiliki efek yang kecil dan tidak signifikan (exp ≈ 0.75, p = 0.40), sementara Pendidikan SMA tidak berbeda dari referensi (exp ≈ 1, p = 1.00).
Jenis Kelamin × Sikap: Responden laki-laki yang percaya perubahan iklim menunjukkan sedikit peningkatan frekuensi (exp = 1.59), namun tidak signifikan.
Jenis Kelamin × Pendidikan menunjukkan bahwa laki-laki dengan pendidikan S1 dan SMA cenderung lebih banyak dari yang diharapkan berdasarkan efek utama saja (exp = 2.67 dan 2.5), meskipun hanya marginal signifikan.
Sikap × Pendidikan: Responden berpendidikan S1 dan SMA yang percaya perubahan iklim cenderung sedikit lebih banyak dari ekspektasi (exp ≈ 1.66 dan 1.14), tetapi juga tidak signifikan.
Model ini menunjukkan fit yang sempurna terhadap data,
Residual deviance ≈ 0 pada 0 derajat kebebasan, artinya tidak ada variasi sisa — seluruh struktur tabel telah dijelaskan sepenuhnya.
AIC = 86.51, yang merupakan nilai referensi jika dibandingkan dengan model yang lebih sederhana (misalnya model dua arah tanpa interaksi tiga arah). AIC lebih rendah menunjukkan model yang lebih efisien secara informasi, namun tetap mempertimbangkan kompleksitas model.
Model saturated memberikan gambaran lengkap hubungan antara jenis kelamin, tingkat pendidikan, dan sikap terhadap perubahan iklim. Efek sikap terhadap frekuensi kepercayaan terbukti signifikan, sedangkan pola-pola interaksi menunjukkan bahwa hubungan antara variabel tidak selalu aditif dan dapat saling mempengaruhi. Meskipun model ini sangat sesuai dengan data, evaluasi lebih lanjut dengan model lebih sederhana dan uji parsimonious akan berguna untuk menyederhanakan interpretasi tanpa kehilangan kualitas pemodelan.
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} \]
# Model homogeneous (tanpa interaksi tiga arah)
model_homogenous <- glm(
Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
Jenis_Kelamin*Sikap + Jenis_Kelamin*Pendidikan + Sikap*Pendidikan,
data = data_loglin,
family = poisson(link = "log")
)
# Ringkasan hasil model
summary(model_homogenous)
##
## Call:
## glm(formula = Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
## Jenis_Kelamin * Sikap + Jenis_Kelamin * Pendidikan + Sikap *
## Pendidikan, family = poisson(link = "log"), data = data_loglin)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.84630 0.21220 13.413 < 2e-16 ***
## Jenis_KelaminL -0.29873 0.25396 -1.176 0.2395
## SikapPercaya 0.99907 0.23462 4.258 2.06e-05 ***
## PendidikanS1 -0.08374 0.27829 -0.301 0.7635
## PendidikanSMA 0.24181 0.26460 0.914 0.3608
## Jenis_KelaminL:SikapPercaya -0.07393 0.22596 -0.327 0.7435
## Jenis_KelaminL:PendidikanS1 0.48898 0.25447 1.922 0.0547 .
## Jenis_KelaminL:PendidikanSMA 0.34890 0.25794 1.353 0.1762
## SikapPercaya:PendidikanS1 0.23031 0.28990 0.794 0.4269
## SikapPercaya:PendidikanSMA -0.21465 0.28131 -0.763 0.4455
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 99.3021 on 11 degrees of freedom
## Residual deviance: 2.0766 on 2 degrees of freedom
## AIC: 84.589
##
## Number of Fisher Scoring iterations: 4
Model log-linear homogen mengasumsikan bahwa hubungan antara variabel Jenis Kelamin, Pendidikan, dan Sikap terhadap Perubahan Iklim hanya melibatkan interaksi dua arah, tanpa adanya interaksi tiga arah (Jenis Kelamin × Pendidikan × Sikap). Berdasarkan output model, nilai Residual Deviance = 2.08 pada 2 derajat bebas, menunjukkan bahwa model cukup sesuai dengan data, karena deviasi residual sangat kecil dan mendekati 0, yang mengindikasikan tidak ada penyimpangan berarti dari data aktual.
Dari sisi signifikansi parameter, hanya variabel SikapPercaya yang memiliki pengaruh signifikan terhadap frekuensi (Estimate = 0.999, p < 0.001), yang menunjukkan bahwa secara umum, sikap percaya terhadap perubahan iklim lebih sering ditemukan dalam populasi dibandingkan dengan sikap skeptis, setelah mengontrol variabel lainnya. Efek Jenis Kelamin dan Pendidikan, serta interaksi dua arah antara mereka, tidak menunjukkan signifikansi statistik (semua p > 0.05), kecuali interaksi Jenis_KelaminL:PendidikanS1 yang mendekati signifikan (p = 0.0547), yang dapat diinterpretasikan sebagai indikasi adanya sedikit perbedaan distribusi antar jenis kelamin pada tingkat pendidikan S1.
Dengan AIC = 84.59, model homogen ini justru memberikan nilai AIC lebih rendah dibandingkan model saturated (AIC = 86.51), menunjukkan bahwa model homogen lebih parsimonious dan masih mampu menjelaskan data dengan baik tanpa perlu menambahkan interaksi tiga arah. Oleh karena itu, model homogen dapat dianggap sebagai model yang sesuai dan efisien untuk menggambarkan struktur hubungan antara ketiga variabel kategorik dalam studi ini.
Pengujian ini menggunakan residual deviance dari kedua model (saturated dan homogenous). Langkah-langkah pengujiannya yaitu :
Hipotesis
H0 : Tidak ada interaksi tiga arah (model homogenous sudah cukup)
H1 : Ada interaksi tiga arah (model saturated diperlukan)
Hitung Selisih Deviance
# Deviance antar model
Deviance.model <- model_homogenous$deviance - model_saturated$deviance
Deviance.model
## [1] 2.076583
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
Chi-Square Tabel (α = 0.05)
## [1] 5.991465
Keputusan Uji
## [1] "Terima H0"
Interpretasi : Pada taraf nyata 5%, belum cukup bukti untuk menolak H0 atau dapat dikatakan bahwa tidak ada interaksi tiga arah antara ketiga faktor.
Catatan :
Model pengurang adalah model yang lebih lengkap (lebih banyak parameter, df lebih kecil), yaitu model saturated
Derajat bebas dihitung dari selisih derajat bebas model homogenous dan saturated
Keputusan berdasarkan perbandingan deviance model dengan chi-square tabel
Rangkuman
Pengujian ada tidaknya interaksi tiga arah (Saturated Model vs Homogenous Model)
Hipotesis
H0: \(\lambda_{ijk}^{XYZ}=0\) (Tidak ada interaksi tiga arah; model yang terbentuk adalah model homogenous) -
H0: \(\lambda_{ijk}^{XYZ}\neq0\) (Tidak ada interaksi tiga arah; model yang terbentuk adalah model homogenous)
Tingkat Signifikansi
\(\alpha=5\%\)
Statistik Uji
\(\Delta\)Deviance = Deviance model homogenous - Deviance model saturated = 2.08
\(db\) = \(db\) model homogenous - \(db\) model saturated = 2 - 0 = 2
Daerah Penolakan
Tolak H0 jika \(\Delta\)Deviance \(\>>\) \(\chi_{0.05,db}^2 = \chi_{0.05,2}^2 = 5.991\)
Keputusan
Karena 2.08 < 5.991, maka terima H0
Interpretasi
Pada taraf nyata 5%, belum cukup bukti untuk menolak H0 atau dapat dikatakan bahwa tidak ada interaksi tiga arah antara ketiga faktor.
Catatan Perhitungan Derajat Bebas dan Selisih Deviance
Dalam membuat selisih deviance, model yang menjadi pengurang adalah model yang lebih lengkap (parameter yang lebih banyak atau derajat bebasnya lebih kecil).
Makin banyak parameter, makin kecil derajat bebasnya, karena :
Model Conditional on X
Model log-linear conditional pada X memasukkan efek utama dan interaksi dua arah antara X dengan Y dan X dengan Z, tanpa interaksi antara Y dengan Z maupun interaksi tiga arah. \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} \]
# Model dengan asosiasi kondisional pada Jenis Kelamin (X)
# Menyertakan interaksi: Jenis_Kelamin × Sikap, dan Jenis_Kelamin × Pendidikan
# Tidak menyertakan interaksi Sikap × Pendidikan
model_conditional_X <- glm(
Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
Jenis_Kelamin*Sikap + Jenis_Kelamin*Pendidikan,
data = data_loglin,
family = poisson(link = "log")
)
# Ringkasan hasil model
summary(model_conditional_X)
##
## Call:
## glm(formula = Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
## Jenis_Kelamin * Sikap + Jenis_Kelamin * Pendidikan, family = poisson(link = "log"),
## data = data_loglin)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.84810 0.17001 16.752 < 2e-16 ***
## Jenis_KelaminL -0.30710 0.25334 -1.212 0.225
## SikapPercaya 0.99661 0.15778 6.317 2.67e-10 ***
## PendidikanS1 0.08961 0.17295 0.518 0.604
## PendidikanSMA 0.08961 0.17295 0.518 0.604
## Jenis_KelaminL:SikapPercaya -0.06230 0.22409 -0.278 0.781
## Jenis_KelaminL:PendidikanS1 0.48575 0.25423 1.911 0.056 .
## Jenis_KelaminL:PendidikanSMA 0.35222 0.25772 1.367 0.172
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 99.3021 on 11 degrees of freedom
## Residual deviance: 4.9225 on 4 degrees of freedom
## AIC: 83.434
##
## Number of Fisher Scoring iterations: 4
\(\alpha = 5\%\)
Uji dilakukan dengan membandingkan deviance dari dua model
\[ \Delta \text{Deviance} = \text{Deviance}_{\text{conditional on X}} - \text{Deviance}_{\text{homogeneous}} \]
# Pengujian hipotesis
# Deviance of Model
Deviance.model <- model_conditional_X$deviance - model_homogenous$deviance
# model_conditional_X: conditional on X, model_homogenous: homogenous
Deviance.model
## [1] 2.845948
Pengujian Selisih Deviance (Conditional on X vs Homogenous)
Langkah-langkah uji hipotesis menggunakan residual deviance
# Selisih deviance antar model
Deviance.model <- model_conditional_X$deviance - model_homogenous$deviance
Deviance.model
## [1] 2.845948
Hitung Derajat Bebas
## [1] 2
Nilai Chi-Square Tabel
## [1] 5.991465
Keputusan Uji
## [1] "Terima"
Interpretasi : Karena nilai Deviance.model = 2.85 lebih kecil dari nilai kritis chi-square tabel = 5.99 (dengan df = 2, alpha = 0.05), maka keputusan uji adalah “Terima”.
Kesimpulan : Dengan tingkat signifikansi 5%, tidak cukup bukti untuk menyimpulkan adanya interaksi antara Sikap dan Pendidikan. Oleh karena itu, model tanpa interaksi \(\lambda^{YZ}_{jk}\) sudah memadai, dan model ini lebih sederhana (parsimonious) tanpa kehilangan kualitas prediksi yang berarti.
Model Conditional on Y
Model log-linear conditional pada Y memasukkan efek utama dan interaksi dua arah antara X dengan Y dan Y dengan Z, tanpa interaksi antara X dengan Z maupun interaksi tiga arah. \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XY}_{ij} + \lambda^{YZ}_{jk} \]
# Model dengan asosiasi kondisional pada Y (Sikap)
model_conditional_Y <- glm(Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
Jenis_Kelamin * Sikap + Sikap * Pendidikan,
family = poisson(link = "log"),
data = data_loglin)
# Ringkasan hasil model
summary(model_conditional_Y)
##
## Call:
## glm(formula = Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
## Jenis_Kelamin * Sikap + Sikap * Pendidikan, family = poisson(link = "log"),
## data = data_loglin)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.708e+00 2.060e-01 13.148 < 2e-16 ***
## Jenis_KelaminL 4.575e-14 1.907e-01 0.000 1.0000
## SikapPercaya 9.989e-01 2.415e-01 4.136 3.54e-05 ***
## PendidikanS1 1.542e-01 2.488e-01 0.620 0.5355
## PendidikanSMA 4.055e-01 2.357e-01 1.720 0.0854 .
## Jenis_KelaminL:SikapPercaya -6.230e-02 2.241e-01 -0.278 0.7810
## SikapPercaya:PendidikanS1 2.213e-01 2.885e-01 0.767 0.4430
## SikapPercaya:PendidikanSMA -2.210e-01 2.806e-01 -0.788 0.4309
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 99.3021 on 11 degrees of freedom
## Residual deviance: 5.8994 on 4 degrees of freedom
## AIC: 84.411
##
## Number of Fisher Scoring iterations: 4
\(\alpha = 5\%\)
Uji dilakukan dengan membandingkan deviance dari model yang mengasumsikan asosiasi bersyarat pada Sikap (Y) terhadap model homogenous :
\[ \Delta \text{Deviance} = \text{Deviance}_{\text{conditional on Y}} - \text{Deviance}_{\text{homogenous}} \ \]
Pengujian Hipotesis Interaksi X dan Z (Conditional on Y vs Homogenous)
# Deviance of Model
Deviance.model <- model_conditional_Y$deviance - model_homogenous$deviance # model_conditional_Y: conditional on Y, model_homogenous: homogenous
Deviance.model
## [1] 3.8228
Hitung Derajat Bebas
## [1] 2
Nilai Chi-Square Tabel
## [1] 5.991465
Keputusan Uji
## [1] "Terima"
Interpretasi : Karena nilai Deviance.model = 3.82 lebih kecil dari nilai kritis chi-square tabel = 5.99 (df = 2, alpha = 0.05), maka keputusan uji adalah “Terima”.
Kesimpulan : Dengan taraf nyata 5%, belum cukup bukti untuk menyimpulkan adanya interaksi antara Jenis Kelamin dan Pendidikan. Artinya, model yang tidak memasukkan parameter interaksi \(\lambda^{XZ}_{ik}\) masih memadai untuk menjelaskan struktur data. Model ini juga lebih sederhana dan efisien untuk digunakan dalam interpretasi.
Model Conditional on Z
Model log-linear conditional pada Z memasukkan efek utama dan interaksi dua arah antara X dengan Z dan Y dengan Z, tanpa interaksi antara X dengan Y maupun interaksi tiga arah. \[ \log(\mu_{ijk}) = \lambda + \lambda^{X}_i + \lambda^{Y}_j + \lambda^{Z}_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]
# Model dengan asosiasi kondisional pada Pendidikan (Z)
model_conditional_Z <- glm(Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
Jenis_Kelamin * Pendidikan + Sikap * Pendidikan,
family = poisson(link = "log"),
data = data_loglin)
# Ringkasan hasil model
summary(model_conditional_Z)
##
## Call:
## glm(formula = Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
## Jenis_Kelamin * Pendidikan + Sikap * Pendidikan, family = poisson(link = "log"),
## data = data_loglin)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.86873 0.19946 14.383 < 2e-16 ***
## Jenis_KelaminL -0.35222 0.19454 -1.810 0.0702 .
## SikapPercaya 0.96825 0.21446 4.515 6.33e-06 ***
## PendidikanS1 -0.07552 0.27563 -0.274 0.7841
## PendidikanSMA 0.24478 0.26296 0.931 0.3519
## Jenis_KelaminL:PendidikanS1 0.48575 0.25423 1.911 0.0560 .
## Jenis_KelaminL:PendidikanSMA 0.35222 0.25772 1.367 0.1717
## SikapPercaya:PendidikanS1 0.22133 0.28855 0.767 0.4430
## SikapPercaya:PendidikanSMA -0.22104 0.28061 -0.788 0.4309
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 99.3021 on 11 degrees of freedom
## Residual deviance: 2.1836 on 3 degrees of freedom
## AIC: 82.696
##
## Number of Fisher Scoring iterations: 4
\(\alpha = 5\%\)
Dihitung dari selisih deviance antara model dengan asosiasi kondisional pada Pendidikan (Z) dan model homogenous :
\[ \Delta \text{Deviance} = \text{Deviance}_{\text{conditional Z}} - \text{Deviance}_{\text{homogenous}} \]
Pengujian Hipotesis Interaksi X dan Y (Conditional on Z vs Homogenous)
Hitung Selisih Deviance
# Deviance of Model
Deviance.model <- model_conditional_Z$deviance - model_homogenous$deviance # model_conditional_Z: conditional on Z, model_homogenous: homogenous
Deviance.model
## [1] 0.1070551
Hitung Derajat Bebas
## [1] 1
Nilai Chi-Square Tabel
## [1] 3.841459
Keputusan Uji
## [1] "Terima"
Interpretasi : Nilai deviance difference yang diperoleh dari pengurangan antara deviance model conditional dan model homogenous adalah sebesar 0.1071, sementara nilai kritis dari distribusi chi-square dengan derajat bebas 1 pada taraf signifikansi 5% adalah 3.8415. Karena nilai deviance ini jauh lebih kecil dari nilai kritis chi-square, maka tidak terdapat perbedaan signifikan antara kedua model. Artinya, menambahkan parameter interaksi antara Jenis Kelamin dan Sikap tidak secara signifikan meningkatkan kecocokan model terhadap data.
Kesimpulan : Berdasarkan hasil pengujian dengan taraf signifikansi 5%, tidak terdapat cukup bukti untuk menyimpulkan adanya interaksi antara Jenis Kelamin dan Sikap terhadap perubahan iklim. Dengan demikian, model tanpa parameter interaksi \(\lambda_{ij}^{XY}\) sudah memadai untuk merepresentasikan struktur data yang ada. Model ini lebih sederhana dan sejalan dengan prinsip parsimony, karena menjelaskan data secara efisien tanpa menambahkan kompleksitas yang tidak perlu.
## Warning: package 'kableExtra' was built under R version 4.3.3
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
## Warning: package 'magrittr' was built under R version 4.3.3
##
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
##
## set_names
## The following object is masked from 'package:tidyr':
##
## extract
Tabel Perbandingan Model
loglin_models <- tibble::tibble(
Model = c(
"Saturated",
"Jenis Kelamin × Sikap + Jenis Kelamin × Pendidikan",
"Jenis Kelamin × Sikap + Sikap × Pendidikan",
"Jenis Kelamin × Pendidikan + Sikap × Pendidikan"
),
Parameter = c(
"$\\lambda + \\lambda^X_i + \\lambda^Y_j + \\lambda^Z_k + \\lambda^{XY}_{ij} + \\lambda^{XZ}_{ik} + \\lambda^{YZ}_{jk} + \\lambda^{XYZ}_{ijk}$",
"$\\lambda + \\lambda^X_i + \\lambda^Y_j + \\lambda^Z_k + \\lambda^{XY}_{ij} + \\lambda^{XZ}_{ik}$",
"$\\lambda + \\lambda^X_i + \\lambda^Y_j + \\lambda^Z_k + \\lambda^{XY}_{ij} + \\lambda^{YZ}_{jk}$",
"$\\lambda + \\lambda^X_i + \\lambda^Y_j + \\lambda^Z_k + \\lambda^{XZ}_{ik} + \\lambda^{YZ}_{jk}$"
),
Deviance = c(0.000, 4.9225, 5.8994, 2.1836),
Jumlah_Parameter = c(12, 7, 7, 8),
df = c(0, 4, 4, 3),
AIC = c(86.51, 83.434, 84.411, 82.696)
)
loglin_models %>%
kable(escape = FALSE, booktabs = TRUE, align = "c", caption = "Tabel 5.2 Perbandingan Model Log-Linear (Data: Jenis Kelamin, Sikap, Pendidikan)") %>%
kable_styling(latex_options = c("hold_position", "striped")) %>%
row_spec(0, bold = TRUE, background = "#f0f0f0") %>%
column_spec(1:6, width = "3.2cm")
Model | Parameter | Deviance | Jumlah_Parameter | df | AIC |
---|---|---|---|---|---|
Saturated | \(\lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} + \lambda^{XYZ}_{ijk}\) | 0.0000 | 12 | 0 | 86.510 |
Jenis Kelamin × Sikap + Jenis Kelamin × Pendidikan | \(\lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik}\) | 4.9225 | 7 | 4 | 83.434 |
Jenis Kelamin × Sikap + Sikap × Pendidikan | \(\lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XY}_{ij} + \lambda^{YZ}_{jk}\) | 5.8994 | 7 | 4 | 84.411 |
Jenis Kelamin × Pendidikan + Sikap × Pendidikan | \(\lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk}\) | 2.1836 | 8 | 3 | 82.696 |
uji_interaksi <- tibble::tibble(
Interaksi = c("XYZ", "YZ", "XZ", "XY"),
Pengujian = c(
"Saturated vs Homogenous",
"Conditional on X vs Homogenous",
"Conditional on Y vs Homogenous",
"Conditional on Z vs Homogenous"
),
delta_deviance = c(0.000, 2.845, 3.8228, 0.107),
delta_df = c(0, 2, 1, 1),
Chi_square_Tabel = c(0.000, 5.991, 3.841, 3.841),
Keputusan = c("Tidak Uji", "Tidak Tolak H0", "Tidak Tolak H0", "Tidak Tolak H0"),
Keterangan = c("fit sempurna", "tidak ada interaksi", "tidak ada interaksi", "tidak ada interaksi")
)
uji_interaksi %>%
kable(booktabs = TRUE, align = "c", caption = "Tabel 5.3 Ringkasan Pengujian Interaksi 3 Arah dan 2 Arah") %>%
kable_styling(latex_options = c("hold_position", "striped")) %>%
row_spec(0, bold = TRUE, background = "#f0f0f0") %>%
column_spec(1:6, width = "3cm")
Interaksi | Pengujian | delta_deviance | delta_df | Chi_square_Tabel | Keputusan | Keterangan |
---|---|---|---|---|---|---|
XYZ | Saturated vs Homogenous | 0.0000 | 0 | 0.000 | Tidak Uji | fit sempurna |
YZ | Conditional on X vs Homogenous | 2.8450 | 2 | 5.991 | Tidak Tolak H0 | tidak ada interaksi |
XZ | Conditional on Y vs Homogenous | 3.8228 | 1 | 3.841 | Tidak Tolak H0 | tidak ada interaksi |
XY | Conditional on Z vs Homogenous | 0.1070 | 1 | 3.841 | Tidak Tolak H0 | tidak ada interaksi |
Dari hasil di atas diketahui bahwa asosiasi yang nyata hanya terdapat antara jenis kelamin dan sikap terhadap perubahan iklim. Sehingga, model terbaik adalah :
\[ \log(\mu_{ijk}) = \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XY}_{ij} \]
Model terbaik adalah model log-linear tanpa interaksi tiga arah dan hanya memuat interaksi dua arah antara jenis kelamin dan sikap terhadap perubahan iklim.
Model terbaik yaitu hanya interaksi dua arah antara jenis kelamin (X) dan sikap terhadap perubahan iklim (Y) :
\[ \log(\mu_{ijk}) = \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XY}_{ij} \]
# Model Terbaik
bestmodel <- glm(Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan + Jenis_Kelamin * Sikap,
family = poisson(link = "log"),
data = data_loglin)
# Ringkasan hasil model
summary(bestmodel)
##
## Call:
## glm(formula = Frekuensi ~ Jenis_Kelamin + Sikap + Pendidikan +
## Jenis_Kelamin * Sikap, family = poisson(link = "log"), data = data_loglin)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.710e+00 1.576e-01 17.189 < 2e-16 ***
## Jenis_KelaminL 5.243e-15 1.907e-01 0.000 1.0000
## SikapPercaya 9.966e-01 1.578e-01 6.317 2.67e-10 ***
## PendidikanS1 3.193e-01 1.259e-01 2.537 0.0112 *
## PendidikanSMA 2.503e-01 1.277e-01 1.959 0.0501 .
## Jenis_KelaminL:SikapPercaya -6.230e-02 2.241e-01 -0.278 0.7810
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 99.3021 on 11 degrees of freedom
## Residual deviance: 8.7156 on 6 degrees of freedom
## AIC: 83.228
##
## Number of Fisher Scoring iterations: 4
Model terbaik yang terpilih adalah model log-linear dengan efek utama dari Jenis Kelamin, Sikap terhadap Perubahan Iklim, dan Pendidikan, serta interaksi dua arah antara Jenis Kelamin dan Sikap. Model ini dipilih karena memberikan keseimbangan antara kesesuaian model dan kesederhanaan, dengan residual deviance sebesar 8.72 pada 6 derajat kebebasan, serta AIC yang rendah yaitu 83.23.
Secara umum, model ini menunjukkan bahwa :
Sikap terhadap Perubahan Iklim berpengaruh signifikan terhadap frekuensi responden. Koefisien SikapPercaya sebesar 0.9966 (p < 0.001) menunjukkan bahwa responden yang memiliki sikap percaya terhadap perubahan iklim cenderung lebih banyak jumlahnya dibandingkan yang skeptis, setelah mengontrol variabel lainnya.
Pendidikan juga menunjukkan pengaruh signifikan. Dibandingkan dengan kelompok referensi (S2/S3), responden dengan pendidikan S1 memiliki frekuensi yang lebih tinggi secara signifikan (β = 0.3193, p = 0.0112), sedangkan untuk kelompok SMA (β = 0.2503, p = 0.0501) menunjukkan signifikansi marginal (p = 0.05), yang menunjukkan tren serupa
Interaksi Jenis Kelamin × Sikap ternyata tidak signifikan (p = 0.7810), namun tetap disertakan karena masuk dalam struktur model terbaik berdasarkan analisis interaksi sebelumnya.
Variabel Jenis Kelamin secara sendiri juga tidak signifikan (p = 1.000), menandakan bahwa tanpa mempertimbangkan interaksinya, perbedaan antara laki-laki dan perempuan dalam frekuensi responden tidak bermakna.
Model ini menyimpulkan bahwa sikap terhadap perubahan iklim dan tingkat pendidikan adalah dua faktor yang secara signifikan memengaruhi distribusi sikap dalam populasi, sedangkan jenis kelamin dan interaksinya dengan sikap tidak memberikan kontribusi signifikan secara statistik. Model ini efisien dan memiliki deviance residual yang kecil, menandakan kesesuaian yang baik terhadap data.
# Interpretasi koefisien model terbaik
data.frame(
koef = bestmodel$coefficients,
exp_koef = exp(bestmodel$coefficients)
)
Interpretasi Koefisien Model Terbaik
Model terbaik ini menunjukkan bahwa :
Variabel Sikap merupakan faktor paling berpengaruh terhadap frekuensi.
Jenis kelamin sendiri tidak signifikan, namun berinteraksi dengan sikap.
Pendidikan memengaruhi frekuensi, tetapi efeknya lebih kecil.
Interaksi antara jenis kelamin dan sikap mengindikasikan adanya sedikit perbedaan pengaruh sikap terhadap frekuensi pada kelompok perempuan.
Model ini bersifat parsimonious dan efisien dalam menjelaskan variasi data dengan kompleksitas yang masih terkendali.
Fitted Values
# Tabel hasil fitted values
hasil_fitted <- data.frame(
Pendidikan = data_loglin$Pendidikan,
Jenis_Kelamin = data_loglin$Jenis_Kelamin,
Sikap = data_loglin$Sikap,
Frekuensi = data_loglin$Frekuensi,
Fitted = fitted(bestmodel)
)
hasil_fitted
Perhitungan Manual Nilai Dugaan (Fitted Value) Model Terbaik
Secara manual, nilai fitted value diperoleh dari model log-linear dengan rumus umum :
\[ \hat{\mu}_{ijk} = \exp(\lambda + \lambda^{X}_{i} + \lambda^{Y}_{j} + \lambda^{Z}_{k} + \lambda^{XY}_{ij}) \]
Dengan ;
1. Pendidikan = SMA, Jenis Kelamin = L, Sikap = Percaya
\[ \hat{\mu}_{\text{SMA,L,Percaya}} = \exp(2.7097 + 0 + 0.9966 + 0.2503 - 0.0623) = \exp(3.8943) = 49.12 \]
2. Pendidikan = SMA, Jenis Kelamin = L, Sikap = Skeptis
\[ \hat{\mu}_{\text{SMA,L,Skeptis}} = \exp(2.7097 + 0 + 0 + 0.2503 + 0) = \exp(2.96) = 19.30 \]
3. Pendidikan = SMA, Jenis Kelamin = P, Sikap = Percaya
\[ \hat{\mu}_{\text{SMA,P,Percaya}} = \exp(2.7097 + 0.9966 + 0.2503) = \exp(3.9566) = 52.28 \]
4. Pendidikan = SMA, Jenis Kelamin = P, Sikap = Skeptis
\[ \hat{\mu}_{\text{SMA,P,Skeptis}} = \exp(2.7097 + 0.2503) = \exp(2.96) = 19.30 \]
5. Pendidikan = S1, Jenis Kelamin = L, Sikap = Percaya
\[ \hat{\mu}_{\text{S1,L,Percaya}} = \exp(2.7097 + 0 + 0.9966 + 0.3193 - 0.0623) = \exp(3.9633) = 52.63 \]
6. Pendidikan = S1, Jenis Kelamin = L, Sikap = Skeptis
\[ \hat{\mu}_{\text{S1,L,Skeptis}} = \exp(2.7097 + 0 + 0.3193 + 0) = \exp(3.0290) = 20.68 \]
7. Pendidikan = S1, Jenis Kelamin = P, Sikap = Percaya
\[ \hat{\mu}_{\text{S1,P,Percaya}} = \exp(2.7097 + 0.9966 + 0.3193) = \exp(4.0256) = 56.02 \]
8. Pendidikan = S1, Jenis Kelamin = P, Sikap = Skeptis
\[ \hat{\mu}_{\text{S1,P,Skeptis}} = \exp(2.7097 + 0.3193) = \exp(3.0290) = 20.68 \]
9. Pendidikan = S2/S3, Jenis Kelamin = L, Sikap = Percaya
\[ \hat{\mu}_{\text{S2/S3,L,Percaya}} = \exp(2.7097 + 0 + 0.9966 + 0 + -0.0623) = \exp(3.6440) = 38.25 \]
10. Pendidikan = S2/S3, Jenis Kelamin = L, Sikap = Skeptis
\[ \hat{\mu}_{\text{S2/S3,L,Skeptis}} = \exp(2.7097) = 15.03 \]
11. Pendidikan = S2/S3, Jenis Kelamin = P, Sikap = Percaya
\[ \hat{\mu}_{\text{S2/S3,P,Percaya}} = \exp(2.7097 + 0.9966) = \exp(3.7063) = 40.70 \]
12. Pendidikan = S2/S3, Jenis Kelamin = P, Sikap = Skeptis
\[ \hat{\mu}_{\text{S2/S3,P,Skeptis}} = \exp(2.7097) = 15.03 \]
Keterangan :
Nilai \(\hat{\mu}_{ijk}\) akan sama
apapun referensi dari kategori peubahnya yang kita gunakan.
Ebook ini telah membahas secara sistematis dan komprehensif berbagai konsep dan teknik dalam analisis data kategorik. Penyusunan materi dilakukan secara bertahap, dimulai dari konsep dasar, pengukuran asosiasi, hingga pengembangan model statistik dengan pendekatan Generalized Linear Models (GLM). Setiap bab dirancang untuk memberikan pemahaman konseptual yang kuat sekaligus keterampilan praktis dalam mengolah dan menganalisis data kategori, terutama menggunakan perangkat lunak R.
Bab I hingga Bab III memberikan fondasi teoritis mengenai penyajian data kategori dalam bentuk tabel kontingensi, baik dua arah maupun tiga arah. Melalui pendekatan ini, pembaca dikenalkan pada teknik deskriptif dan inferensial seperti uji chi-square, odds ratio, relative risk, dan partisi chi-square. Uji independensi dan analisis stratifikasi juga disajikan sebagai dasar penting dalam mengevaluasi hubungan antar variabel.
Bab IV hingga Bab VI merupakan jembatan menuju analisis yang lebih fleksibel dan modern, yakni melalui GLM. Di sini, pembaca diperkenalkan pada struktur model logistik dan Poisson, termasuk fungsi link logit dan log, asumsi distribusi, serta metode estimasi parameter seperti Maximum Likelihood Estimation (MLE) dan implementasi algoritma Newton-Raphson. Selain itu, disampaikan pula diagnosa model dan evaluasi fit model melalui residual, deviance, dan AIC.
Pembahasan dalam Bab VII hingga IX memperkuat analisis regresi logistik dan memperluas cakupan ke data kategori multinomial dan ordinal. Salah satu nilai tambah dari ebook ini adalah pendekatan praktis dalam pemilihan model terbaik menggunakan kriteria AIC dan BIC, penerapan metode stepwise, serta evaluasi model menggunakan ROC curve dan tabel klasifikasi. Pembaca tidak hanya diajak memahami model secara matematis, tetapi juga bagaimana menginterpretasikan koefisien model dan implikasinya terhadap variabel nyata di lapangan.
Bab X menjadi puncak dari keseluruhan pembahasan dengan mengintegrasikan model log-linear sebagai generalisasi GLM untuk tabel kontingensi. Di sini, pembaca diajak memahami interaksi dua arah dan tiga arah antar variabel, dengan pengujian model saturated, homogenous, dan conditional. Model ini memungkinkan analisis mendalam terhadap data kategorik multidimensi yang sering ditemukan di bidang epidemiologi, pendidikan, dan ilmu sosial.
Implementasi Data Riil
Salah satu tujuan utama dari ebook ini adalah penyajian berbagai kasus nyata sebagai ilustrasi implementasi konsep. Beberapa diantaranya :
Seluruh studi kasus tersebut tidak hanya merepresentasikan kompleksitas data kategorik di dunia nyata, tetapi juga menunjukkan bagaimana pendekatan statistik dapat memberikan wawasan yang bermakna. Ebook ini menunjukkan bahwa model statistik bukan sekadar simbol matematis, tetapi alat analitik yang kuat dalam menjelaskan fenomena sosial, perilaku manusia, dan kebijakan publik.
Secara keseluruhan, ebook ini tidak hanya bertujuan memberikan teori, tetapi juga keterampilan praktis dalam analisis data kategorik menggunakan R. Dengan menyajikan end-to-end workflow mulai dari eksplorasi data, pemodelan, evaluasi, hingga interpretasi, ebook ini dapat dijadikan referensi utama dalam riset, tugas akhir, atau analisis kebijakan berbasis data.
Dengan menguasai seluruh isi ebook ini, pembaca diharapkan mampu merancang analisis data kategorik dari nol, memilih model statistik yang tepat untuk berbagai bentuk tabel, menggunakan perangkat lunak R untuk estimasi dan visualisasi hasil, serta menafsirkan keluaran model dalam konteks substantif yang relevan.
Sebagai penutup, semoga ebook ini menjadi panduan konseptual dan praktis yang kokoh dalam memahami dan menerapkan analisis data kategorik, serta membuka jalan menuju eksplorasi lebih lanjut pada metode statistik lanjutan yang kontekstual dan aplikatif.
Agresti, A. (2002). Categorical Data Analysis (2nd ed.). Wiley-Interscience.
Agresti, A. (2013). Categorical Data Analysis (3rd ed.). Wiley.
Agresti, A. (2007). An Introduction to Categorical Data Analysis (2nd ed.). Wiley.
Dobson, A. J., & Barnett, A. (2018). An Introduction to Generalized Linear Models (4th ed.). CRC Press.
Friendly, M., & Meyer, D. (2016). Discrete Data Analysis with R: Visualization and Modeling Techniques for Categorical and Count Data. CRC Press.
Powers, D. A., & Xie, Y. (2000). Statistical Methods for Categorical Data Analysis. Academic Press.
Menard, S. (2002). Applied Logistic Regression Analysis (2nd ed.). Sage Publications.
Fox, J. (2016). Applied Regression Analysis and Generalized Linear Models (3rd ed.). Sage Publications.
Long, J. S. (1997). Regression Models for Categorical and Limited Dependent Variables. Sage Publications.
Hosmer, D. W., Lemeshow, S., & Sturdivant, R. X. (2013). Applied Logistic Regression (3rd ed.). Wiley.
Lindsey, J. K. (1995). Modelling Frequency and Count Data. Oxford University Press.
Wickham, H., & Grolemund, G. (2016). R for Data Science. O’Reilly Media.
Tutz, G. (2012). Regression for Categorical Data. Cambridge University Press.
Gelman, A., Hill, J., & Vehtari, A. (2020). Regression and Other Stories. Cambridge University Press.
Jackman, S. (2009). Bayesian Analysis for the Social Sciences. Wiley.
International Social Survey Programme (ISSP) – Environment Module IV (2020). https://issp.org
Pew Research Center (2021). Social and Demographic Differences in Climate Change Beliefs. https://www.pewresearch.org/science
Kleinbaum, D. G., & Klein, M. (2010). Logistic Regression: A Self-Learning Text (3rd ed.). Springer.
Hilbe, J. M. (2011). Negative Binomial Regression (2nd ed.). Cambridge University Press.
Fienberg, S. E. (2007). The Analysis of Cross-Classified Categorical Data. Springer.
Christensen, R. (1997). Log-Linear Models and Logistic Regression (2nd ed.). Springer.
Liao, T. F. (1994). Interpreting Probability Models: Logit, Probit, and Other Generalized Linear Models. Sage Publications.
Venables, W. N., & Ripley, B. D. (2002). Modern Applied Statistics with S (4th ed.). Springer.
Hair, J. F., Black, W. C., Babin, B. J., & Anderson, R. E. (2019). Multivariate Data Analysis (8th ed.). Cengage.
Zhang, W., & Ip, E. H. (2012). Statistical Inference for Categorical Data. Wiley.
Smith et al. (1988). Using the ADAP learning algorithm to forecast the onset of diabetes mellitus. Proceedings of the Annual Symposium on Computer Application in Medical Care, 261–265. UCI Machine Learning Repository.