modul adk mei 2011

Upload: marisdani-hermina-gremita-sipahutar

Post on 16-Jul-2015

729 views

Category:

Documents


10 download

TRANSCRIPT

MODUL 1 DISTRIBUSI UNTUK DATA KATEGORI

Data kategori setidaknya terdiri atas dua hal yaitu data yang diukur pada skala nominal yang apabila diberikan nilai maka nilainya hanya berfungsi sebagai simbol dan tidak menyatakan urutan dan data yang diukur pada skala nominal yang apabila diberikan nilai memberikan arti urutan tetapi bukan nilai numerik tetapi hanya berupa simbol. Variabel kategori terkadang disebut juga variabel diskrit karena nilainya hanya diperoleh dengan cara mencacah. Dalam Agresti (2007) tiga distribusi utama yang dapat digunakan untuk data kategori yaitu: 1. Binomial yaitu distribusi yang menyatakan banyaknya percobaan yang saling bebas dari percobaan bernoulli yang memiliki hasil biner (terdiri hanya dua kategori: sukses atau gagal). Peluang sukses (p) adalah tetap untuk setiap percobaan dan variabel X menyatakan banyaknya sukses dari seluruh percobaan (n). 2. Multinomial merupakan perluasan dari distribusi binomial akan tetapi mempunyai hasil percobaan lebih dari dua. 3. Poisson adalah distribusi yang menyatakan banyaknya peristiwa yang terjadi dalam waktu yang lama (jangka panjang) yang setiap kejadiannya saling bebas. Dengan kata lain Distribusi Poisson dapat dikatakan sebagai distribusi untuk peristiwa yang jarang terjadi. 1.1 Distribusi Peluang Diskrit dalam R Software R come mendukung banyak distribusi peluang baik diskrit yaitu Poisson, negative binomial, geometric, hypergeometric, dan uniform diskrit. Selain itu juga ada beberapa distribusi-distribusi peluang khusus yang dapat diperoleh dari website CRAN seperti negatifbinomial yang terdapat pada fungsi rnegbin() paket MASS, beta-binomial terdapat pada paket rmutil dan gnlm dan masih banyak lagi. Setiap distribusi peluang mempunyai fungsi untuk memperoleh peluang kumulatif, nilai densitas dan kuantil. Selain itu juga bisa membangkitkan data (random data) dari distribusi 1

tersebut. Berikut adalah beberapa fungsi yang dapat digunakan untuk menghitung nilai-nilai dari distribusi di dalam R. Distribusi Binomial dengan peluang sukses p dan banyak percobaan n. > dbinom(x, n, p) # menghitung nilai peluang pada saat P(X = x) > pbinom(x, n, p) # menghitung nilai peluang kumulatif P(X qbinom(p, n, p) # menghitung nilai kuantil ke p > rbinom(N, n, p) # membangkitkan data sebanyak N dari distribusi Binomial

Distribusi Poisson dengan parameter lambda > dpois(x, lambda) # menghitung nilai peluang pada saat P(X = x) > ppois(x, lambda) # menghitung nilai peluang kumulatif P(X qpois(p, lambda) # menghitung nilai kuantil ke p > rpois(N, lambda) # membangkitkan data sebanyak N dari distribusi Poisson

Distribusi Multinomial dengan vektor peluang p > dmultinom(x, p) > rmultinom(n, size, prob)

Contoh: > dbinom(3, size=10, prob=0.25) # P(X = 3) untuk distribusi binomial

dengan n=10 dan peluang sukses 0.25 > pbinom(3, size=10, prob=0.25) # P(X prop.test(x, n, p = NULL, alternative = c("two.sided", "less", "greater"), conf.level = 0.95, correct = TRUE)

Keterangan:

x: adalah vektor banyak sukses atau berupa tabel satu dimensi dengan dua taraf atau tabel dua dimensi (atau matriks) dengn dua kolom berisi banyak sukses dan gagal. n: adalah vektor banyaknya percobaan, diabaikan apabila 'x' adalah matriks atau tabel. p: adalah vektor peluang sukses. Panjang vektor p harus sama dengan banyaknya kelompok yang bersesuaian dengan vektor x dan nilainya harus lebih besar dari nol dan lebih kecil dari 1. alternative: adalah hipotesis alternatif yang digunakan yaitu "two.sided" (default) untuk tidak sama, "greater" untuk lebih besar atau "less"

3

untuk lebih kecil. Dapat pula menggunakan huruf inisialnya saja. Opsi ini hanya digunakan untuk pengujian satu sampel dengan hipotesis sama dengan nilai tertentu, atau pada pengujian kesamaan dua proporsi.

conf.level: adalah derajat kepercayaan yang digunakan. Nilainya harus antara 0 dan 1. Opsi ini hanya digunakan untuk pengujian satu sampel dengan hipotesis sama dengan nilai tertentu, atau pada pengujian kesamaan dua proporsi.

correct: berisi TRUE atau FALSE yang mengindikasikan 'Yates' continuity correction yang digunakan apabila memungkinkan.

Nilai-nilai yang dapat diperoleh dari fungsi ini adalah

statistic: adalah nilai statistik uji chi-kuadrat Pearson's .

parameter: adalah derajat kebebasan yang digunakan pada statistik uji yang mengikuti distribusi chi-kuadrat.

p.value: adalah nilai 'p-value' pengujian.

estimate: adalah vektor dengan proporsi sampel x/n.

conf.int: adalah selang kepercayaan untuk proporsi satu sampel atau untuk perbedaan proporsi dua sampel Selang kepercayaan untuk proporsi dihitung dengan derajat kepercayaan sebesar conf.level yang telah didefinisikan.

null.value: adalah nilai spesifik p pada hipotesis nol.

alternative: adalah hipotesis alternatif yang digunakan.

method: adalah metode yang digunakan dan melliputi Yates' continuity correction yang digunakan.

data.name: adalah nama dari data yang digunakan.

4

Contoh Pengamat ekonomi memiliki dugaan bahwa 70% perusahaan besar di Indonesia dimiliki oleh warga negara asing. Untuk membuktikan dugaannya, diambil sampel acak 210 perusahaan yang digolongkan perusahaan besar. Dari 210 perusahaan besar sebanyak 130 perusahaan dimiliki oleh Orang Asing. Dengan tingkat signifikansi sebesar 0.05 Lakukan pengujian hipotesisnya! > prop.test(130, 210, 0.7, conf.level=0.95) 1-sample proportions test with continuity correction data: 130 out of 210, null probability 0.7 X-squared = 6.1735, df = 1, p-value = 0.01297 alternative hypothesis: true p is not equal to 0.7 95 percent confidence interval:

0.5493720 0.6842925 sample estimates: p 0.6190476

Karena p-value lebih kecil dari 0.05 maka hipotesis ditolak. Artinya, proporsi sampel tidak sama dengan 0.7 sehingga kesimpulannya tidak cukup alasan untuk setuju dengan pendapat ahli ekonomi tersebut dengan keyakinan 95%. Pengujian proporsi dalam software R merupakan pengujian proporsi menggunakan uji chi-kuadrat. Pendekatan lain untuk menguji proporsi adalah menggunakan statistik uji Z. Secara default R tidak menyediakan uji proporsi menggunakan statiistik Z. tetapi dalam R dimungkinkan untuk membuat fungsi yang dapat digunakan untuk menguji proporsi dengan statistik uji Z. Berikut adalah contoh pembuatan fungsi pengujian proporsi satu sampel. > ztes.prop prop=x/n > alpha=1-conf.level > zstar=qnorm(1-alpha/2) > SE=(prop*(1-prop)/n)^0.5 > zhitung=(prop-p)/SE > pvalue=1-pnorm(abs(zhitung)) > BB=(prop1-prop2)-zstar*SE

5

> BA=(prop1-prop2)+zstar*SE > Ringkasan zhitung=c(zhitung),pvalue=c(pvalue),BatasAtas=c(BA),BatasBawah=c(BB)) > Ringkasan$Kesimpulan=0.05,c("H0 Diterima"),c("Ho Ditolak")) > print(Ringkasan) >}

Fungsi tersebut dapat dipanggil dengan cara sebagai berikut: > ztes.prop(130,210,0.7,0.95) # kasus satu sampel

1.3 Pengujian Proporsi Dua Sampel Digunakan untuk membandingkan proporsi dua sampel. Dalam R masih menggunakan prop.test dengan syntax sebagai berikut >prop.test(c(a,b),c(n1,n2))

keterangan: a adalah banyaknya kategori A dalam sampel 1 b adalah banyaknya kategori A dalam sampel 2 n1 adalah ukuran sampel 1 n2 adalah ukuran sampel 2 Contoh Suatu kegiatan survey dilakukan sebanyak dua kali untuk mengetahui apakah ada perbedaan pilihan masyarakat terhadap calon tertentu dalam pemilihan presiden. Data disajikan sebagai berikut: Minggu ke 1 Minggu ke 2 Memilih 45 56

Tidak Memilih 35 47 6

Dengan tingkat signifikansi 5% lakukan pengujian apakah terdapat perbedaan proporsi minggu 1 dan minggu 2 > prop.test(c(45,56),c(45+35,56+47))

2-sample test for equality of proportions with continuity correction

data: c(45, 56) out of c(45 + 35, 56 + 47)

X-squared = 0.0108, df = 1, p-value = 0.9172

alternative hypothesis: two.sided

95 percent confidence interval:

-0.1374478 0.1750692

sample estimates:

prop 1 prop 2

0.5625000 0.5436893

Karena p-value lebih besar dari 0.05 maka hipotesis diterima. Artinya, proporsi sampel 1 tidak berbeda dengan sampel 2 sehingga kesimpulannya dengan keyakinan 95% sampel 1 tidak berbeda nyata dengan sampel 2. Seperti pada kasus satu asmpel pengujian proporsi dalam software R merupakan pengujian proporsi menggunakan uji chi-kuadrat. Pendekatan lain untuk menguji proporsi adalah menggunakan statistik uji Z. Secara default R tidak menyediakan uji proporsi menggunakan

statiistik Z. tetapi dalam R dimungkinkan untuk membuat fungsi yang dapat digunakan untuk menguji proporsi dengan statistik uji Z. Berikut adalah contoh pembuatan fungsi pengujian proporsi dua sampel. > ztes.prop2 prop1=x1/n1;prop2=x2/n2 > alpha=1-conf.level > zstar=qnorm(1-alpha/2) > SE=(prop1*(1-prop1)/n1+prop2*(1-prop2)/n2)^0.5 > zhitung=(prop1-prop2)/SE > pvalue=1-pnorm(abs(zhitung)) > BB=(prop1-prop2)-zstar*SE > BA=(prop1-prop2)+zstar*SE >Ringkasan zhitung=c(zhitung),pvalue=c(pvalue),BatasAtas=c(BA),BatasBawah=c(BB)) > Ringkasan$Kesimpulan=0.05,c("H0 Diterima"),c("Ho Ditolak")) > print(Ringkasan) >}

Fungsi tersebut dapat dipanggil dengan cara sebagai berikut: > ztes.prop2(45,56,80,103,0.95) # kasus dua sampel

8

MODUL 2 TABEL KONTINGENSI

2.1. Pendahuluan Dalam modul ini akan dijelaskan mengenai asosiasi antara dua variabel dalam tabel kontingensi. Pembahasan meliputi pada selang kepercayaan (Confidence intervals), odds ratio dan resiko relatif (relative risk), pengujian perbedaan proporsi dan uji independensi menggunakan pendekatan normal (untuk sampel besar) atau prosedur Wolf. Secara umum untuk tabel kontingensi I x 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 kepercayaan seseorang mengenai adanya kehidupan setelah kematian (akhirat). Data disajikan dalam pada tabel berikut ini Tabel 2.1 Kepercayaan akan Kehidupan Setelah Kematian Percaya Tidak Percaya Jumlah Laki-Laki 375 134 509 Perempuan 435 147 582 Jumlah 810 281 1091 (1) 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. 9

> afterlife afterlife

[,1] [,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) afterlife

Percaya Tidak Laki-laki 375 134 Perempuan 435 147

Selain itu kita juga bisa memberikan nama variabel (atau faktor) dari kolom dan barisnya dengan cara sebagai berikut: > names(dimnames(afterlife)) 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 (n) secara keseluruhan (pij).

> tot tot

[1] 1091 > afterlife/tot

10

Kepercayaan

JK Percaya Tidak Laki-laki 0.3437214 0.1228231 Perempuan 0.3987168 0.1347388

Untuk menghitung total masing-masing kolom (ni.) dan total masing-masing baris (n.j) dapat menggunakan fungsi apply. Penjelasan mengenai fungsi apply adalah sebagai berikut Deskripsi:

Menghasilkan sebuah vektor yang berisi nilai-nilai yang diperoleh dengan menghitung sesuatu berdasarkan fungsi atas bagian dari array atau matrik

Penggunaan:

apply(X, MARGIN, FUN, ...)

Keterangan:

X: sebuah array, termasuk matriks. MARGIN: sebuah vektor yang menunjukkan indeks yang akan di hitung dari fungsinya '1' berarti baris, '2' berarti kolom dan 'c(1,2)' berarti baris dan kolom.

FUN: Fungsi yang akan digunakan seperti '+, %*%', 'sum' dan lain-lain.

Hasil: Apabila pada setiap memanggil 'FUN' menghasilkan sebuah vektor dengan 'n' elemen, maka 'apply' menghasilkan array berdimensi c(n, dim(X)[MARGIN]) apabila n > 1. Jika 'n = 1' fungsi 'apply' akan menghasilkan vektor

jika 'MARGIN' mempunyai panjang 1 dan array berdimensi dim(X)[MARGIN] jika selainnya. Apabila n bernilai '0' maka hasil yang diperoleh akan berdimensi '0' juga. Jika saat memanggil 'FUN' menghasilkan vektor-vektor berdimensi berbeda, fungsi 'apply' akan menghasilkan list dari prod(dim(X)[MARGIN]) dengan dim di set sama dengan MARGIN jika panjangnya lebih besar dari satu.

11

Sedangkan untuk menghitung proporsi sel terhadap ni. (pi.) dan proporsi sel terhadap (p.j) dapat menggunakan fungsi sweep. Berikut penjelasan mengenai fungsi tersebut Deskripsi: Menghasilkan sebuah array yang diperoleh dari input array dengan melakukan 'sweeping' (penyapuan) ringkasan statistik. Penggunaan: sweep(x, MARGIN, STATS, FUN="-", check.margin=TRUE, ...) Keterangan:

x: sebuah array. MARGIN: sebuah vektor yang mengindikasikan tingkatan dari 'x' yang berkaitan dengan STATS. STATS: ringkasan statistik yang akan digunakan. FUN: Sebuah fungsi yang akan digunakan dalam penyapuan. Dalam kasus operator biner seperti / dan lain-lain, nama fungsi harus menggunakan tanda kutip. check.margin: Bernilai TRUE (default), atau 'FALSE' Hasil: Sebuah array dengan bentuk yang sama dengan 'x' tetapi berisi hasil

penyapuan menggunakan ringkasan statistik

Adapun penggunaan kedua fungsi tersebut pada data adalah sebagai berikut > totBaris totKolom totBaris

12

Laki-laki Perempuan

509 582 > totKolom Percaya Tidak

810 281 > (Prop.Baris round(Prop.Baris,3) Kepercayaan

JK Percaya Tidak Laki-laki 0.737 0.263 Perempuan 0.747 0.253

> (Prop.Kolom 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 > JK Kepercayaan Jumlah afterlife 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

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 beliefs

Tidak Ya Wanita 147 435 Pria 134 375 > detach(afterlife) # Kalau data tidak lagi dibutuhkan > names(dimnames(beliefs)) beliefs

Kepercayaan JK Tidak Ya Wanita 147 435 Pria 134 375 > beliefs 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 14

> phs phs [,1] [,2] [1,] 189 10845 [2,] 104 10933 > dimnames(phs) phs MI Group Yes No Placebo 189 10845 Aspirin 104 10933 > 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: 0.004597134 0.010814914 sample estimates: prop 1 prop 2 0.01712887 0.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:

15

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 names(phs.test)

[1] "statistic" "parameter" "p.value" "estimate" [5] "null.value" "conf.int" "alternative" "method" [9] "data.name" > phs.test$estimate prop 1 prop 2 0.01712887 0.00942285 > phs.test$conf.int [1] 0.004597134 0.010814914 attr(,"conf.level") [1] 0.95 > round(phs.test$conf.int,3) [1] 0.005 0.011 attr(,"conf.level") [1] 0.95 > phs.test$estimate[1]/phs.test$estimate[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 0.00942285 > odds odds prop 1 prop 2 0.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 ASE ASE

[1] 0.1228416 > logtheta.CI 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 chisq.test(JK.partai,simulate.p.value=TRUE,B=10000) Pearsons Chi-square test with simulated p-value

(based on 10000 replicates) data: JK.partai X-squared = 7.0095, df = NA, p-value = 0.0294

19

Uji eksak Fisher untuk tabel kontingensi terdapat dalam fungsi fisher.test dari paket ctest (classical tests). Paket ini disertakan dalam bagian dari distribusi dasari dari R dan secara otomatis sudah dapat dipergunakan pada saat fungsinya dipanggil. Uji eksak Fisher juga dapat digunakan untuk tabel yang lebih umum yaitu tabel I x J. > library(ctest) # this is not needed with R versions >= 0.99 > fisher.test(JK.partai) Fishers Exact Test for Count Data data: JK.partai p-value = 0.03115 alternative hypothesis: two.sided

Dalam contoh berikut mengenai kepuasan kerja digunakan penggunaan uji Chi-Kuadrat, pendekatan simulasi dan Uji eksak Fisher. Table 2.3. Kepuasan Kerja Berdasarkan Penghasilan Penghasilan Kepuasan Kerja Total Tidak Puas Kurang Puas Puas Sangat Puas < 5 2 4 13 3 22 5 15 2 6 22 4 34 15 25 0 1 15 8 24 > 25 0 3 13 8 24 Total 4 14 63 23 104 > puas puas dimnames(puas) puas Kepuasan.Kerja

Penghasilan TP KP P SP 25 0 3 13 8 > chisq.test(puas) Pearsons Chi-square test data: puas X-squared = 11.5243, df = 9, p-value = 0.2415 Warning message: Chi-square approximation may be incorrect in: chisq.test(puas)

> chisq.test(puas,simulate.p.value=TRUE,B=10000) Pearsons Chi-square test with simulated p-value (based on 10000 replicates) data: puas X-squared = 11.5243, df = NA, p-value = 0.2408 > fisher.test(puas) Fishers Exact Test for Count Data data: puas p-value = 0.2315 alternative hypothesis: two.sided

Di dalam R dimungkinkan untuk membuat fungsi yang dapat digunakan sewaktu-waktu. Ada banyak cara yang dapat digunakan untuk membuat fungsi sehingga setiap orang dapat mempunyai fungsinya sendiri-sendiri. Selain itu sebuah fungsi dapat dengan mudah di edit dan dimodifikasi oleh siapapun yang menggunakannya. Dalam membuat sebuah fungsi sebaiknya membuat fungsi yang umum dalam arti dapat digunakan untuk semua kondisi data dan dapat menampilkan semua informasi yang diinginkan. Berikut adalah contoh sebuah fungsi yang menampilkan uji chi-kuadrat dan uji rasio kemungkinan (ratio likelihood test) untuk tabel kontingensi. Fungsi ini bernama procfreq karena diadaptasi dari fungsi PROC FREQ dari software SAS. "procfreq" M2 1-pchisq(M2,1) # p-value

[1] 0.01037159 ## Pendekatan normal untuk sampel besar

> (M=sqrt(M2))

[1] 2.563188 > 1-pnorm(M) # p-value [1] 0.005185795 Untuk statistik M2 kita dapat membuat fungsi agar dapat digunakan pada tabel yang lebih umum. Berikut contoh fungsi yang dapat diaplikasikan pada tabel kontingensi I x J yang berskala

ordinal. tren.test crabs$W.fac prop plot.x plot(y=crabs$Sat,x=crabs$W,xlab=expression(paste("Lebar Cangkang, ", italic(x), "(cm)")), ylab=expression(paste("Proporsi Memiliki Satelit,", {pi}, "(x)")), axes=F, type="n") > axis(2, at=seq(0,1,.2)) > axis(1, at=seq(20,34,2)) > lines(y=prop, x=plot.x, pch=16, type="p") > ind lines(x=crabs$W[ind],y=predict(kepiting.logit, type="response")[ind], type="l",lty=3)

> par(pty="s")

65

Hasil plot dapat dilihat dari gambar dibawah ini

Gambar 4.2 Plot Model Regresi Logistik Lebar cangkang terhadap Proporsi Memiliki Satelit 4.2 Interpretasi Odds Ratio Salah satu interpretasi penting dalam regresi logistik adalah odds dan odds ratio. Untuk data horseshoe pada contoh diatas, logit[p(x)] =-12.35+ 0.497x . Jadi penaksir odds dari satelit dikalikan dengan exp()= exp(0.497) = 1.64 untuk setiap penambahan lebar cangkang dalam sentimeter yaitu naik sekitar 64%. Sebagai ilustrasi nilai rata-rata lebar cangkang adalah x = 26.3 memiliki nilai p(x) = 0.674, dan nilai odds = 0.674/0.326 = 2.07. Untuk x = 27.3 = 26.3 + 1.0 yaitu penambahan satu sentimeter, kita dapat menghitung bahwa nilai p(x) = 0.773 dan nilai odds = 0.773/0. 227 = 3.40. Kenaikan sebesar 64% adalah 3.40 = 2.07(1.64). 66

4.3 Regresi Logistik dengan Variabel Prediktor Kategori Seperti pada model regresi biasa, prediktor dalam regresi logistik bisa lebih dari satu (multipel). Variabel prediktor tersebut dapat berbentuk data kategori maupun data kuantitatif. Dalam bagian ini akan dijelaskan bagaimana fit model regresi logistik dengan menyertakan variabel kategori (biasa disebut faktor). Dalam menyertakan variabel kategori kedalam model regresi logistik kita harus membuat konstrain bagi parameternya untuk menangani redundance dalam spesifikasi model. Dalam membuat konstrain perlu adanya sebuah kategori yang dijadikan nol nilainya yaitu kategori pertama atau kategori terakhir. Data yang digunakan dalam hal ini adalah contoh pada Modul 2 sub bagian 2.6 mengenai Data mengenai studi prospektif dari ibu yang peminum alkohol dan cacat bawaan bayi. Dengan menggunakan fungsi options dalam penggunaan fungsi glm. Pertama-tama kita inputkan dahulu datanya dengan cara sebagai berikut > alkohol cacat n options(contrasts=c("contr.treatment", "contr.poly")) > (alkohol.logit alkohol.rev (alkohol.logit2 cbind(logit=predict(alkohol.logit2), fitted.prop= predict(alkohol.logit2, type="response"))

logit fitted.prop 1 -5.873642 0.002804721 2 -5.941832 0.002620328 3 -5.060060 0.006305170

4 -4.836282 0.007874016 5 -3.610918 0.026315789

68

Terlihat bahwa proporsi sampel terlihat meningkat dengan meningkatnya konsumsi alkohol. Untuk melihat independensi antara konsumsi alkohol wanita hamil dengan cacat bawaan pada bayi dapat ditunjukkan melalui model berikut ini > (alkohol.logit3 # Statistik Rasio Likelihood > summary(alkohol.logit3)$deviance

[1] 6.201998 > # Statistik Uji Pearson chi-kuadrat > (a # derajat kebebasan > df #p-value > 1-pchisq(a, df=df) [1] 0.01675140 4.4 Model Regresi Logistik Multipel Dalam Agresti (2007) Contoh 4.3.2 mengenai 338 veteran perang yang terinfeksi virus AIDS dengan dua prediktor yaitu Ras (hitam, putih) dan penggunaan AZT (ya, tidak), dengan variabel tak bebas adalah terjadi simptom AIDS (ya, tidak). Data dapat dilihat pada tabel berikut ini 69

Tabel 4.1 Perkembangan Simptom AIDS berdasarkan Ras dan Penggunaan AZT

Ras Penggunaan AZT Simptom AIDS Ya Tidak Hitam Ya 14 93 Tidak 32 81 Putih Ya 11 52 Tidak 12 43 Model yang digunakan untuk data ini adalah AZT Ras logit [ P(Y =1)]=Ya +Putih Pertama-tama kita inputkan dahulu datana menggunakan perintah berikut > simptom simptom simptom

AZT Ras Ya Tidak

1 Ya Hitam 14 93 2 Tidak Hitam 32 81 3 Ya Putih 11 52 4 Tidak Putih 12 43 Kemudian kita fit model regresi logistiknya menggunakan fungsi glm dengan options melalui

perintah berikut ini > options(contrasts=c("contr.treatment","contr.poly")) > summary(fit|z|)

(Intercept) -1.07357 0.26294 -4.083 4.45e-05 *** AZTYa -0.71946 0.27898 -2.579 0.00991 ** RasHitam 0.05548 0.28861 0.192 0.84755 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 8.3499 on 3 degrees of freedom Residual deviance: 1.3835 on 1 degrees of freedom AIC: 24.86

Number of Fisher Scoring iterations: 4

Kemudian kita dapat menghitung taksiran odds ratio antara penggunaan AZT dan perkembangan AIDS dengan cara > exp(-0.7195)

[1] 0.4869957 Interval kepercayaan menggunakan statistik Wald diperoleh menggunakan approximate standard error. Penaksran interval menggunakan statistik rasio kemungkinan dapat diperoleh menggunakan fungsi confint dalam Paket MASS. > confint(fit)

Waiting for profiling to be done...

2.5% 97.5% (Intercept) -1.6088054 -0.5734959 AZTYa -1.2773237 -0.1798769 RasHitam -0.5022982 0.6334104 71

Model fit diatas variabel Ras tidak signifikan. Kita akan membuat model memodifikasi yaitu dengan tidak menyertakan variabel Ras pada model sebelumnya kemudian kita uji kedua model dengan menggunakan perbedaan devians dengan cara sebagai berikut > fit2 anova(fit2, fit, test="Chisq") Analysis of Deviance Table

Model 1: cbind(Ya, Tidak) ~ AZT Model 2: cbind(Ya, Tidak) ~ AZT + Ras

Resid. Df Resid. Dev Df Deviance P(>|Chi|) 1 2 1.4206 2 1 1.3835 1 0.037084 0.8473

Dari tabel anova diatas terlihat bahwa perbedaan devians tidak signifikan yang artinya model yang terbaik adalah model tanpa variabel Ras. Kemudian kita hitung nilai peluang prediksi dan standard errornya sehingga diperoleh dengan cara sebagai berikut > res pointwise.normal afterlife2 afterlife2 76

ras percaya count

1 Putih Ya 1339 2 Hitam Ya 260 3 Lainnya Ya 88 4 Putih Tidak 300 5 Hitam Tidak 55 6 Lainnya Tidak 22 > options(contrasts=c("contr.treatment","contr.poly")) > (fit.glm (fit.glm2 pengguna library(MASS)

# Model (ARM) (saturated) > fitARM fitAR.AM.RM fitAM.RM fitAR.M fitA.R.M data.frame(alkohol=pengguna$alkohol,rokok=pengguna$rokok,

+ mariyuana=pengguna$mariyuana, A.R.M=c(aperm(fitted(fitA.R.M))), + AR.M=c(aperm(fitted(fitAR.M))), AM.RM=c(aperm(fitted(fitAM.RM))), + AR.AM.RM=c(aperm(fitted(fitAR.AM.RM))), ARM=c(aperm(fitted(fitARM)))) alkohol rokok mariyuana A.R.M AR.M AM.RM AR.AM.RM ARM

1 Ya Ya Ya 539.98258 611.17750 909.2395833 910.383081 911 2 Ya Ya Tidak 740.22612 837.82250 438.8404255 538.616118 538 3 Ya Tidak Ya 282.09123 210.89631 45.7604167 44.616840 44 4 Ya Tidak Tidak 386.70007 289.10369 555.1595745 455.385598 456 5 Tidak Ya Ya 90.59739 19.40246 4.7604167 3.616919 3 6 Tidak Ya Tidak 124.19392 26.59754 142.1595745 42.383882 43 7 Tidak Tidak Ya 47.32880 118.52373 0.2395833 1.383160 2 8 Tidak Tidak Tidak 64.87990 162.47627 179.8404255 279.614402 279 Selanjutnya dari hasil output diatas dapat ditentukan pola asosiasi untuk model-model tersebut dengan menampilkan penaksir odds ratio bersyarat dan marjinal. Untuk menentukan odds ratio bersyarat dapat langsung ditentukan melalui fungsi yang kita buat sendiri dengan cara sebagai berikut ## Menghitung odds ratio # membuat array untuk odds ratio bersyarat

> array.A.R.M array.AR.M array.AM.RM array.AR.AM.RM array.ARM odds.rasio sum.array anova(fitAR.AM.RM, fitAM.RM) LR tests for hierarchical log-linear models

Model 1:

count ~ rokok + alkohol + mariyuana Model 2:

count ~ rokok + alkohol + mariyuana

86

Deviance df Delta(Dev) Delta(df) P(> Delta(Dev) Model 1 497.3692752 2 Model 2 0.3739859 1 496.9952893 1 0.00000 Saturated 0.0000000 0 0.3739859 1 0.54084 LR tests for hierarchical log-linear models

Model 1:

count ~ rokok + alkohol + mariyuana Model 2:

count ~ rokok + alkohol + mariyuana

Deviance df Delta(Dev) Delta(df) P(> Delta(Dev) Model 1 92.0183606 2 Model 2 0.3739859 1 91.6443747 1 0.00000 Saturated 0.0000000 0 0.3739859 1 0.54084 LR tests for hierarchical log-linear models

Model 1:

count ~ rokok + alkohol + mariyuana Model 2:

count ~ rokok + alkohol + mariyuana

Deviance df Delta(Dev) Delta(df) P(> Delta(Dev) Model 1 187.7543029 2 Model 2 0.3739859 1 187.3803170 1 0.00000 Saturated 0.0000000 0 0.3739859 1 0.54084

Dari hasil output ternyata semua asosiasi mempunyai p-value sangat kecil yang berarti signifikan. Hal ini berarti bahwa bukti kuat adanya asosiasi bersyarat untuk AR, AM dan RM sehingga model yang terbaik untuk digunakan adalah model (AR,AM,RM) . 5.4 Model Log Linier untuk Dimensi Lebih Tinggi Dalam model log linier semakin banyak variabel yang terlibat maka model akan semakin kompleks. Pada sub bab sebelumnya dibahas model untuk tabel dua arah yang lebih sederhana 87

dari model untuk tabel tiga arah. Model log linier untuk tabel empat arah tentunya dengan empat variabel W, X, Y dan Z dapat dianalisis menggunakan cara yang sama dengan tabel tiga arah tetapi model yang mungkin untuk tabel empat arah akan semakin banyak diantaranya Mutually Independent Model (W, X, Y, Z) Conditional assosiation model (WXY,WXZ,WYZ), (WXY,WZ,XZ), (WXZ, WY,XY), (WX,WY,WZ,XY, XZ) Homogenous assosiation model (WXY,WXZ,WYZ,XYZ), (WX,WY,WZ,XY, XZ, YZ) Saturated Model (WXYZ) 5.5 Menggunakan Model Logistik untuk Interpretasi Model Log Linier Model loglinear untuk tabel kontingensi membahas mengenai asosisasi antara variabelvariabel respon kategori. Sementara model regresi logistik memperlihatkan bagaimana varibel respon kategori yang bergantung pada set variabel penjelas. Ternyata ada kaitan antara model logistik dengan model loglinier yang didasarkan atas model yang digunakan, sehingga untuk model loglinier kita dapat membentuk logit dari sebuah respon untuk menginterpretasi model. Lebih jauh, model logistik dengan variabel penjelas kategori mempunyai ekivalensi dengan model loglinier. Untuk memahami implikasi dari model loglinier dapat dibentuk logit untuk sebuah variabel. Misalkan kita memiliki model homogeneous association untuk tabel tiga arah sebagai berikut XY +.ik YZ log ijk = . + .iX + .jY + .jZ +.ij XZ +.jk Dalam hal ini kita perlakukan Y sebagai variabel respon, tentunya harus biner, sedangkan X dan Z sebagai variabel penjelas. 88

Contoh Data diambil dari Agresti (2007) sub bab 7.2.6 mengenai Kecelakaan mobil dan penggunaan sabuk pengaman pada mobil di negara bagian Maine dari 68694 penumpang mobil dan truk. Tabel 5.3 memperlihatkan penumpang berdasarkan Gender (G), Lokasi kejadian (L), penggunaan sabuk keselamatan (S), and mengalami celaka (I). Tabel 5.3 Data Kecelakaan berdasarkan Lokasi, Jenis Kelamin dan Sabuk Keselamatan Jenis Kelamin Lokasi Sabuk Kecelakaan Tidak Ya Kota Tidak 7287 996 Perempuan Ya 11587 759 Desa Tidak 3246 973 Ya 6134 757 Kota Tidak 10381 812 Laki-laki Ya 10969 380 Desa Tidak 6123 1084 Ya 6693 513 Data tersebut dapat diinput dengan cara sebagai berikut > kecelakaan kecelakaan sabuk lokasi gender celaka count 1 Tidak Kota Perempuan Tidak 7287 2 Ya Kota Perempuan Tidak 11587

3 Tidak Desa Perempuan Tidak 3246 4 Ya Desa Perempuan Tidak 6134 5 Tidak Kota Laki-laki Tidak 10381 6 Ya Kota Laki-laki Tidak 10969 7 Tidak Desa Laki-laki Tidak 6123 89

8 Ya Desa Laki-laki Tidak 6693 9 Tidak Kota Perempuan Ya 996 10 Ya Kota Perempuan Ya 759 11 Tidak Desa Perempuan Ya 973 12 Ya Desa Perempuan Ya 757 13 Tidak Kota Laki-laki Ya 812 14 Ya Kota Laki-laki Ya 380 15 Tidak Desa Laki-laki Ya 1084 16 Ya Desa Laki-laki Ya 513

Kemudian kita akan analisis data tersebut menggunakan model log linier dengan dimulai dari model independen dengan cara sebagai berikut > library(MASS)

# mutual independence

> fitG.I.L.S fitGI.GL.GS.IL.IS.LS fitGIL.GIS.GLS.ILS anova(fitG.I.L.S, fitGI.GL.GS.IL.IS.LS, fitGIL.GIS.GLS.ILS) LR tests for hierarchical log-linear models Model 1:

count ~ lokasi + sabuk + gender Model 2:

count ~ lokasi + sabuk + gender Model 3:

count ~ lokasi + sabuk + gender

Deviance df Delta(Dev) Delta(df) P(> Delta(Dev)

Model 1 2792.771103 11 Model 2 23.350991 5 2769.420111 6 0.00000 Model 3 1.325317 1 22.025675 4 0.00020 Saturated 0.000000 0 1.325317 1 0.24964 90

Berdasarkan hasil model (G, I, L, S) menyatakan mutual independence dari keempat variabel. Dengan devians 2792,78 model ini sangat tidak fit. Model (GI, GL, GS, IL, IS, LS) lebih baik dari model sebelumnya dengan devians 23,35 tetapi tetap signifikan. Model (GIL, GIS, GLS, ILS) cukup fit dibanding kedua model sebelumnya tetapi cukup sulit untuk diinterpretasikan. Sehingga perlu dibentuk model yang lebih rumit dari (GI, GL, GS, IL, IS, LS) tetapi lebih sederhana dari (GIL, GIS, GLS, ILS). Untuk itu kita modifikasi model (GI, GL, GS, IL, IS, LS) menjadi model (GI, IL, IS, GLS) dengan menambahkan interaksi tiga arah gender, lokasi dan sabuk. Model ini lebih sederhana dari model (GIL, GIS, GLS, ILS) . Untuk membuat model ini kita tinggal update model (GI, GL, GS, IL, IS, LS) dengan menambahkan gender:lokasi:sabuk dengan cara sebagai berikut > (fitGI.IL.IS.GLS X^2) Likelihood Ratio 7.464480 4 0.1132858 Pearson 7.487383 4 0.1122669 > fitted(fitGI.IL.IS.GLS) , , gender = Perempuan, celaka = Tidak

lokasi

sabuk Kota Desa Tidak 7273.214 3254.662 Ya 11632.622 6093.502

, , gender = Laki-laki, celaka = Tidak

lokasi

sabuk Kota Desa Tidak 10358.93 6150.193 Ya 10959.23 6697.643

91

, , gender = Perempuan, celaka = Ya lokasi

sabuk Kota Desa Tidak 1009.7857 964.3376 Ya 713.3783 797.4979

, , gender = Laki-laki, celaka = Ya lokasi

sabuk Kota Desa Tidak 834.0684 1056.8071 Ya 389.7681 508.3566

Model ini sudah fit sehingga kita dapat menginterpretasikan dengan mudah. Kemudian untuk menghitung odds ratio dari setiap variabelnya adalah sebagai berikut > odds.ratio apply(fit.array,c(1,4),odds.ratio) celaka

sabuk Tidak Ya Tidak 1.326766 1.326766 Ya 1.166682 1.166682

> apply(fit.array,c(2,4),odds.ratio) celaka

lokasi Tidak Ya Kota 0.6614758 0.6614758 Desa 0.5816641 0.5816641

> apply(fit.array,c(3,4),odds.ratio) celaka

gender Tidak Ya Perempuan 1.170603 1.170603 Laki-laki 1.029362 1.029362

> apply(fit.array,c(1,2),odds.ratio) lokasi sabuk Kota Desa

92

Tidak 0.579941 0.579941

Ya 0.579941 0.579941

> apply(fit.array,c(1,3),odds.ratio) gender

sabuk Perempuan Laki-laki Tidak 2.134127 2.134127 Ya 2.134127 2.134127

> apply(fit.array,c(2,3),odds.ratio) gender

lokasi Perempuan Laki-laki Kota 0.4417123 0.4417123 Desa 0.4417123 0.4417123

> Fitted.values sum(abs(kecelakaan$count -Fitted.values))/(2 * sum(kecelakaan$count))

[1] 0.002507358 Dari hasil tersebut kita buat model loglinier dan model logistik menggunakan fungsi glm > options(contrasts = c("contr.treatment", "contr.poly")) > fit.loglinear fit.loglinear$coefficients (Intercept) sabukYa 8.8919536 0.4696151 lokasiDesa genderLaki-laki

-0.8041099 0.3536508 celakaYa sabukYa:lokasiDesa -1.9744599 0.1575195 sabukYa:genderLaki-laki sabukYa:celakaYa -0.4132820 -0.8170974 lokasiDesa:genderLaki-laki lokasiDesa:celakaYa 0.2827442 0.7580583 genderLaki-laki:celakaYa sabukYa:lokasiDesa:genderLaki-laki -0.5448292 -0.1285802

93

> fit.logit fit.logit$coefficients

(Intercept) genderLaki-laki lokasiDesa sabukYa

-1.9744599 -0.5448292 0.7580583 -0.8170974

Dalam perhitungan model logit menghasilkan koefisien yang sama dengan koefisien model loglinier untuk setiap variabel yang tidak memiliki indeks i (taraf variabel celaka). Odds ratios menghubungkan parameter dua faktor model loglinear dengan efek utama parameter logistik. Misalnya saja log odds ratio untuk efek S terhadap I adalah 1- 2 = -0.817 nilainya IS IS IS IS sama dengan .11 + .11 -.11 -.11 = -0.817 dalam model loglinear. Nilai fit, statistik goodness-of-fit, derajat kebebasan, residual dan standardized residuals untuk model logistik identik dengan model loglinier (GLS, GI, IL, IS). Soal Latihan Seorang peneliti tertarik untuk melihat hubungan antara jenis kelamin, serangan jantung dan berat badan. Sebanyak 200 orang diambil sebagai sampel yang masing-masing diukur serangan jantung dan berat badannya. Dalam hal ini variable berat badan dikategorikan menjadi 2 (dua) yaitu, kelebihan berat badan (over weight) atau tidak (not over weight). Hasil penelitiannya disajikan dalam table kontingensi berikut ini Tabel 5.4 Data Serangan Jantung Berat Badan Gender Serangan Jantung Total Ya Tidak Normal Laki-laki 15 5 20 Perempuan 40 60 100

Kelebihan Laki-laki 20 10 30 Perempuan 10 40 50 Total 85 115 200 Berdasarkan tabel ini mungkin saja variabel serangan jantung diambil sebagai variabel tak bebas 94

(dependent) dan jenis kelamin dan berat badan sebagai variabel bebas (independent) sehingga analisis regresi logistik dapat dilakukan. Tetapi apabila yang diinginkan adalah melihat hubungan antar variabel jenis kelamin, berat badan dan serangan jantung untuk setiap kategorinya digunakan model log linier. a. Analisis data tersebut menggunakan model loglinier b. Bentuk model logistik yang berkaitan dengan model log liniernya dan interpretasikan hasilnya c. Hitung odds ratio untuk variabel yang berkaitan. 95

DAFTAR PUSTAKA

Agresti, Alan (2007) An Introduction to Categorical Data Analysis. John Wiley & Sons, Inc., New York. ______ (2002) Categorical Data Analysis: Second edition. John Wiley & Sons, Inc., New York.

R Core Development Team (2000) An Introduction to R. Thompson, Laura A., (2008) R (and S-PLUS) Manual to Accompany : Agrestis Categorical Data Analysis (2002) 2nd edition Venables, W. N. and Ripley, B. D. (1997) Modern Applied Statistics With S-Plus: second edition. Springer-Verlag, New York 96