Download as pdf
Download as pdf
You are on page 1of 15
MODUL 2 TABEL KONTINGENSI DUA ARAH 2.1, Pendahuluan Dalam modul ini akan dijelaskan mengenai asosiasi antara dua variabel dalam tabel kontingensi 2 x 2. Pembahasan meliputi pada selang kepereayaan (Confidence intervals), odds ratio dan resiko relatif (relative risk), pengujian perbedaan proporsi dan uji independensi menggunakan pendekatan normal (untuk sampel besar) atau prosedur Wolf, Seeara umum untuk tabel kontingensi Jx J, pengujian independensi variabel baris dan kolom menggunkan uji chi kuadrat termasuk statistik rasio kemungkinan (likelihood ratio statistic) dan statistik Chi-Kuadrat Pearson, Sebagai catatan apabila variabel baris dan kolom mempunyai Kategori order maka yang digunakan pada hipotesis alternatif adalah trend. 2.2 Input Tabel Kontingensi dalam Software R Ada banyak cara untuk membuat tabel kontingensi didalam software R. Setidaknya ada tiga cara dapat dilakukan untuk membentuk tabel Kontingensi untuk contoh berikut mengenai penelitian kepereayaan seseorang mengenai adanya kehidupan setelah kematian (akhirat). Data disajikan dalam pada tabel berikut ini Percaya | Tidak Percaya | jumlah Laki-Laki 375 134 509 Perempuan 435 147 582 Jumlah 810 281 1091 (L) Menggunakan fungsi Matrix Cara pertama menginputkan data tersebut kedalam software R adalah menggunakan fungsi matriks yaitu dengan menganggap bahwa tabel tersebut adalah sebuah matriks, cara ini sama dengan menggunakan fungsi array. > afterlife <- matrix(c(375, 134,435,147) ,nrow=2, by row=TRUE) > afterlife [11 0,2] [1,] 375 134 [2,] 435 147 Tentu saja matriks diatas tidak menggambarkan apa-apa sehingga kita beri nama masing-masing kolom dan berisnya. > dimnames(afterlife) <- list(c("Laki- laki", "Perempuan") ,c("Percaya", "Tidak")) > afterlife Percaya Tidak Laki-laki 375 134 Perempuan 435147 Selain itu kita juga bisa memberikan nama variabel (atau faktor) dari kolom dan barisnya dengan cara sebagai berikut: > names (dimnames(afterlife)) <- ¢("JK","Kepercayaan") > afterlife Kepercayaan JK Percaya Tidak Laki-laki 375 134 Perempuan 435 147 Berikutnya yang dapat dilakukan adalah menghitung proporsi masing-masing sel terhadap total sampel (7) secara keseluruhan (p;). > tot <- sum(afterlife) > tot {1} 1091 > afterlife/tot Kepercayaan Jk Percaya Tidak Laki-laki 0,3437214 0.1228231 Perempuan 0.3987168 0.1347388 Untuk menghitung total masing-masing kolom (,) dan total masing-masing baris (n,) dapat menggunakan fungsi apply. Sedangkan untuk menghitung proporsi sel terhadap n, (p,) dan proporsi sel terhadap (p,) dapat menggunakan fungsi sweep. Adapun penggunaan kedua fungsi tersebut pada data adalah sebagai berikut > totBaris <- apply(afterlife, 1, sum) > totKolom <- apply(afterlife,2, sum) > totBaris Laki-laki Perempuan 509 582 > totKolom Percaya Tidak 810-281 > Prop.Baris <- sweep(afterlife,1,totBaris,"/") > Prop.Baris Kepercayaan Jk Percaya Tidak Laki-laki 0.7367387 0.2632613 Perempuan 0.7474227 0.2525773 > round(Prop. Baris,3) Kepercayaan Jk Percaya Tidak Laki-laki 0.737 0.263 Perempuan 0.747 0,253 > Prop.Kolom <- sweep(afterlife,2,totKolom,"/") > Prop.Kolom Kepercayaan Jk Percaya Tidak Laki-laki 0.462963 0.4768683 Perempuan 0.537037 0.5231317 > round(Prop.Kolom,3) Kepercayaan JK Percaya Tidak Laki-laki 0.463 0.477 Perempuan 0.537 0.523 (2) Menggunakan Data Frame Salah satu struktur data yang sering digunakan dalam R adalah data frame, untuk tabel kontingensi dalam bentuk data frame dapat memperlakukan variabel baris dan variabel kolom sebagai faktor. Pendekatan ini sebenarnya lebih tepat apabila data disimpan dalam file terpisah yang dapat dibaca di R. Baris-baris berikut adalah contohnya v JK <- c("Wanita", "Wanita", "Pria","Pria") Kepercayaan <- c("Ya","Tidak","Ya","Tidak") Jumlah <- ¢(435,147,375,134) afterlife <- data. frame(JK,Kepercayaan, Jumlah) afterlife JK Kepercayaan Jumlah 1 Wanita Ya 435 2 Wanita Tidak 147 3 Pria Ya 375 4 Pria Tidak 134 > rm(JK,Kepercayaan,Jumlah) # tidak dibutuhkan lagi v v v v Kita dapat membuat tabel kontingensi dengan memperlakukan data frame sebagai matriks atau menggunakan fungsi tapply dengan cara sebagai berikut > attach(afterlife) # mengunakan data frame afterlife > beliefs <- tapply(Jumlah, List (JK, Kepercayaan) ,c) > beliefs Tidak Ya Wanita 147 435 Pria 134 375 > detach(afterlife) # Kalau data tidak lagi dibutuhkan > names (dimnames(beliefs)) <- c("JK","Kepercayaan") > beliefs Kepercayaan Jk Tidak Ya Wanita 147 435 Pria 134 375 > beliefs <- beliefs[,c(2,1)] # Menukar kolom > beliefs Kepercayaan Jk Ya Tidak Wanita 435 147 Pria 375 (134 2.3 Membandingkan Proporsi Tabel 2 x 2 Secara umum data dapat di sajikan dalam berbagai cara berbeda, Untuk data kategori data dapat disajikan dalam tabel kontingensi 2 x 2 maupun dalam bentuk matriks. Untuk data yang disajikan dalam bentuk matriks perhatikan contoh berikut ini. Data yang digunakan adalah studi mengenai kesehatan psikologis pasien yang telah diberikan obat > phs <- matrix(c(189, 10845, 104, 10933) , byrow=TRUE, ncol=2) > phs (1) 0,2) [1,] 189 10845 [2,] 104 10933 > dimnames(phs) <- + List (Group=c ("Placebo > phs MI Group Yes No Placebo 189 10845 Aspirin 104 10933 Aspirin") ,MI=c("Yes","No")) > prop. test(phs) 2-sample test for equality of proportions with continuity correction data: phs X-squared = 24,4291, df = 1, p-value = 7.71e-07 alternative hypothesis: two.sided 95 percent confidence interval: ©.004597134 0.010814914 sample estimates: prop 1 prop 2 0,01712887 ©,00942285 Koreksi dalam statistik uji digunakan sebagai default dalam prop.test. Apabila koreksi ini tidak digunakan maka akan ada sedikit perbedaan dalam hasil (output) untuk contoh diatas seperti berikut ini: > prop.test(phs,correct=F) 2-sample test for equality of proportions without continuity correction data: phs X-squared = 25.0139, df = 1, p-value = 5,692e-07 alternative hypothesis: two.sided 95 percent confidence interval: 0.004687751 0.010724297 sample estimates: prop 1 prop 2 0.01712887 0.00942285 Selain itu output yang diperoleh juga dapat disimpan dan diubah sesuai dengan keinginan kita dengan beragam cara. Contoh untuk menyimpan output adalah sebagai berikut: > phs.test <- prop. test (phs) > names(phs.test) [1] "statistic" "parameter" [5] “null.value" "“conf.int" “alternative” "method" [9] "data.name" > phs.testSestimate prop 1 prop 2 0,01712887 ©.00942285 -value" "estimate" > phs.test$conf. int [1] ©.004597134 0.010814914 attr(, "conf. level") [1] 0.95 > round(phs.test$conf. int, 3) [1] 6.005 6.011 attr(, "conf. level") [1] 0.95 > phs.test$estimate[1]/phs.testSestimate[2] % relative risk prop 1 1.817802 2.4 Odds Ratio Resiko relatif (Relative risk) dan odds ratio secara mudah dapat dihitung dari tabel Kontingensi 2 x 2 dengan berbagai cara, Berikut adalah contohnya: > phs. test$estimate prop 1 prop 2 0,01712887 6.00942285 > odds <- phs.test$estimate/(1-phs.test$estimate) > odds prop 1 prop 2 ©.017427386 0.009512485 > odds[1]/odds [2] prop 1 1.832054 > (phs[1,1]*phs[2,2])/(phs[2,1]*phs[1,2]) # as cross-prod ratio [1] 1.832054 Apabila kita akan membuat selang kepercayaan (Confident Interval) bagi odds ratio maka langkah-langkah berikut dapat digunakan: > theta <- odds[1]/odds [2] > ASE <- sqrt(sum(1/phs)) > ASE [1] 0.1228416 > logtheta.CI <- log(theta) + c(-1,1)*1.96*ASE > logtheta.CI [1] 0.3646681 0.8462073 > exp(logtheta.CI) [1] 1.440036 2.330790 Kita dapat membuat fungsi sederhana yang dapat dipanggil sewaktu-waktu untuk menghitung odds ratio dari tabel kontingensi 2 x 2 dengan cara sebagai berikut odds.ratio <- function(x, pad.zeros=FALSE, conf.level=0.95) { if (pad.zeros) { if (any(x==0)) x <- x + 0.5 } theta <- x[1,1] * x[2,2] / ( x{2,1] * x[1,2] ) ASE <- sqrt(sum(1/x)) CI <- exp(log(theta) + ¢(-1,1) * qnorm(o.5*(1+conf.level)) *ASE ) List (estimator=theta, ASE=ASE, conf .interval=CI, conf. level=conf. level) } Sehingga odds ratio dapat dihitung dengan cara sebagai berikut: > odds. ratio(phs) Sestimator [1] 1.832054 SASE [1] 0.1228416 $conf. interval [1] 1.440042 2.330780 $conf. level [1] 0.95

You might also like