2.5 Uji Independensi Chi-Kuadrat Uji Independensi Chi-Kuadrat (statistik Pearson’s chi-squared test) dapat dihitung menggunakan fungsi chisq.test berikut dengan p-valuenya. Tabel berikut adalah data Survei Sosial Umum mengenai klasifikasi silang antara jenis kelamin dengan pemilihan partai politik. Responden adalah penduduk yang dipilih dalam survei dan lebih cenderung memilih partai Demokrat atau Republik atau mungkin tidak memilih. Pada tabel juga disertakan nilai ekspektasi dari setiap sel (berada didalam kurung) Table 2.2. Klasifikasi Silang Pilihan Partai Berdasarkan Jenis Kelamin Demokrat 762 (703.7)
Pilihan Partai Tidak Memilih 327 (319.6)
Pria
484 (542.3)
Total
1246
Jenis Kelamin Wanita
Total
Republik 468 (533.7)
1557
239 (246.4)
477 (411.3)
1200
566
945
2757
Untuk data tersebut aplikasi untuk statistik ini adalah sebagai berikut:
> JK.partai <- matrix(c(279,73,225,165,47,191),byrow=TRUE,nrow=2) > dimnames(JK.partai) <- list(JK=c("Wanita","Pria"), + Partai=c("Demokrat","Tidak Memilih","Republik")) > JK.partai Partai JK
Demokrat Tidak Memilih Republik
Wanita Pria
279 165
73
225
47
191
> chisq.test(JK.partai) Pearson’s Chi-square test data: JK.partai X-squared = 7.0095, df = 2, p-value = 0.03005 Apabila ada kekhawatiran akan pendekatan chi-kuadrat terhadap distribusi sampling dari statistik uji, kita dapat membuat suatu simulasi untuk menentukan pendekatan nilai p-value atau bisa menggunakan uji eksak. Uraian berikut ini menjelaskan bagaimana simulasi dilakukan untuk menentukan nilai pendekatan p-value. Banyaknya pengulangan dalam simulasi ini secara default adalah 2000 tetapi kita dapat mengubahnya dengan nilai yang lain. Tentu saja semakin banyak ulangannya simulasi akan semakin baik. Tetapi semakin banyak ulangan akan
menggunakan waktu dan memori yang lebih besar. Hal penting dalam studi simulasi adalah mendapatkan nilai yang konvergen dalam waktu yang lebih cepat (atau dengan kata lain ulangan yang lebih sedikit). Simulasi dalam contoh ini nilai pendekatan p-value mendekati nilai pendekatan chi-kuadrat. > chisq.test(JK.partai,simulate.p.value=TRUE,B=10000) Pearson’s Chi-square test with simulated p-value (based on 10000 replicates) data: JK.partai X-squared = 7.0095, df = NA, p-value = 0.032 > chisq.test(JK.partai,simulate.p.value=TRUE,B=10000) Pearson’s Chi-square test with simulated p-value (based on 10000 replicates) data: JK.partai X-squared = 7.0095, df = NA, p-value = 0.0294 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) Fisher’s 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 <5 5 – 15 15 – 25 > 25 Total
Tidak Puas 2 2 0 0 4
Kepuasan Kerja Kurang Puas Puas 4 13 6 22 1 15 3 13 14 63
Sangat Puas 3 4 8 8 23
Total 22 34 24 24 104
> puas <- c(2,4,13,3, 2,6,22,4, 0,1,15,8, 0,3,13,8) > puas <- matrix(puas,byrow=TRUE,nrow=4) > dimnames(puas) <- list( + Penghasilan=c("<5","5-15","15-25",">25"), + Kepuasan.Kerja=c("TP","KP","P","SP")) >
puas Kepuasan.Kerja
Penghasilan TP KP
P SP
<5
2
4 13
3
5-15
2
6 22
4
15-25
0
1 15
8
>25
0
3 13
8
> chisq.test(puas) Pearson’s 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) Pearson’s 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) Fisher’s 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" <-function(x, digits=4) { total <- sum(x) rowsum <- apply(x,1,sum) colsum <- apply(x,2,sum) prop <- x/total rowprop <- sweep(x,1,rowsum,"/") colprop <- sweep(x,2,colsum,"/") expected <- (matrix(rowsum) %*% t(matrix(colsum))) / total dimnames(expected) <- dimnames(x) resid <- (x-expected)/sqrt(expected) adj.resid <- resid / sqrt((1-matrix(rowsum)/total) %*% t(1-matrix(colsum)/total)) df <- prod(dim(x)-1) X2 <- sum(residˆ2) attr(X2,"P-value") <- 1-pchisq(X2,df)
## Perhatikan Nilai frekuensi yang nol. tmp <- x*log(x/expected) tmp[x==0] <- 0 G2 <- 2 * sum(tmp) attr(G2,"P-value") <- 1-pchisq(G2,df) list(sample.size=total, row.totals=rowsum, col.totals=colsum, overall.proportions=prop, row.proportions=rowprop, col.proportions=colprop, expected.freqs=expected, residuals=resid, adjusted.residuals=adj.resid, chi.square=X2, likelihood.ratio.stat=G2, df=df) }
Kita dapat menyimpan fungsi ini ke dalam software R sehingga dapat digunakan kembali pada saat dibutuhkan. Berikut adalah contohnya setelah fungsi tersebut disimpan dengan nama “procfreq.R” kemudian dipanggil kembali untuk digunakan dengan cara sebagai berikut dan digunakan dalam data kepuasan kerja: > source("procfreq.R") > puas.freq <- procfreq(puas) > names(puas.freq) [1] "sample.size" "row.totals" [3] "col.totals" "overall.proportions" [5] "row.proportions" "col.proportions" [7] "expected.freqs" "residuals" [9] "adjusted.residuals" "chi.square" [11] "likelihood.ratio.stat" "df"
> puas.freq$expected Kepuasan.Kerja Penghasilan <5
P
SP
0.8461538 2.961538 13.32692 4.865385
5-15 15-25
TP KP
1.3076923 4.576923 20.59615 7.519231 0.9230769 3.230769 14.53846 5.307692
>25
0.9230769 3.230769 14.53846 5.307692
> round(puas.freq$adjusted.residuals,2) Kepuasan.Kerja Penghasilan
TP
KP
<5
0.73
-0.16 -1.08
1.44
5-15 15-25 >25
0.75
0.87
-1.12 -1.52
> puas.freq$chi.square attr(,"P-value") [1] 0.2414764
SP
0.60 -1.77
0.22
-1.12 -0.16
[1] 11.52426
P
1.51
-0.73
1.51
> puas.freq$likelihood.ratio.stat [1] 13.46730 attr(,"P-value") [1] 0.1425759 2.5 Uji Eksak untuk Ukuran Sampel Kecil Contoh berikut diambil dari buku Agresti (2002) Bab III. Pada saat meminum teh, kolega Fisher di Stasiun Eksperimen Rothamsted dekat London mengkalim bahwa dia dapat membedakan apakah susu atau the yang ditambahkan ke dalam cangkir pertama kali. Untuk menguji hal tersebut Fisher merancang suatu percobaan sebagai berikut empat buah cangkir ditambahkan susu pertama kali dan empat buah cangkir lainnya ditambahkan teh pertama kali. Kemudian kedelapan cangkir tersebut diacak dan diberikan kepada koleganya untuk di rasakan dan dia memberikan penilaian terhadap cangkir tersebut. Data mengenai percobaan rasa the disajikan dalam tabel berikut ini. Table 2.4. Percobaan Rasa Teh Cangkir Susu Teh Total
Tamu Susu 3 1 4
Teh 1 3 4
Total 4 4 8
Penggunaan uji Eksak Fisher untuk data Rasa Teh dijelaskan dalam baris-baris berikut ini > library(ctest) > teh <- matrix(c(3,1,1,3),ncol=2) > dimnames(teh) <+ list( cangkir=c("susu","teh"), Tamu=c("susu","teh")) > teh Tamu cangkir susu teh susu
3
1
teh
1
3
> fisher.test(teh) Fisher’s Exact Test for Count Data data: teh p-value = 0.4857 alternative hypothesis: true odds ratio is not equal to 1 95 percent confidence interval:
0.2117329 621.9337505 sample estimates: odds ratio 6.408309 > fisher.test(teh,alternative="greater") Fisher’s Exact Test for Count Data data: teh p-value = 0.2429 alternative hypothesis: true odds ratio is greater than 1 95 percent confidence interval: 0.3135693 Inf sample estimates: odds ratio 6.408309