Yah, sepertinya saya sudah membuat hash ini. Izinkan saya mencoba menjelaskan ini lagi, dengan cara yang berbeda dan kita akan melihat apakah ini dapat membantu menjernihkan semuanya.
Cara tradisional untuk menjelaskan uji McNemar vs uji chi-squared adalah untuk menanyakan apakah data "dipasangkan" dan untuk merekomendasikan tes McNemar jika data dipasangkan dan uji chi-kuadrat jika data "tidak berpasangan". Saya telah menemukan bahwa ini menyebabkan banyak kebingungan (utas ini menjadi contoh!). Sebagai gantinya, saya telah menemukan bahwa paling membantu untuk fokus pada pertanyaan yang Anda coba tanyakan , dan untuk menggunakan tes yang cocok dengan pertanyaan Anda. Untuk membuat ini lebih konkret, mari kita lihat skenario buatan:
Anda berjalan di sekitar konferensi statistik dan untuk setiap ahli statistik yang Anda temui, Anda mencatat apakah mereka berasal dari AS atau Inggris. Anda juga merekam apakah mereka memiliki tekanan darah tinggi atau tekanan darah normal.
Berikut datanya:
mat = as.table(rbind(c(195, 5),
c( 5, 195) ))
colnames(mat) = c("US", "UK")
rownames(mat) = c("Hi", "Normal")
names(dimnames(mat)) = c("BP", "Nationality")
mat
# Nationality
# BP US UK
# Hi 195 5
# Normal 5 195
Pada titik ini, penting untuk mencari tahu pertanyaan apa yang ingin kita tanyakan dari data kita. Ada tiga pertanyaan berbeda yang bisa kami tanyakan di sini:
- Kami mungkin ingin tahu apakah variabel kategori
BP
dan Nationality
terkait atau independen;
- Kita mungkin bertanya-tanya apakah tekanan darah tinggi lebih umum di kalangan ahli statistik AS daripada di antara para ahli statistik Inggris;
Akhirnya, kita mungkin bertanya-tanya apakah proporsi ahli statistik dengan tekanan darah tinggi sama dengan proporsi ahli statistik AS yang kita ajak bicara. Ini mengacu pada proporsi marginal dari tabel. Ini tidak dicetak secara default di R, tetapi kita bisa mendapatkannya (perhatikan bahwa, dalam hal ini, mereka persis sama):
margin.table(mat, 1)/sum(mat)
# BP
# Hi Normal
# 0.5 0.5
margin.table(mat, 2)/sum(mat)
# Nationality
# US UK
# 0.5 0.5
Seperti yang saya katakan, pendekatan tradisional, yang dibahas dalam banyak buku teks, adalah menentukan tes mana yang akan digunakan berdasarkan apakah data "dipasangkan" atau tidak. Tapi ini sangat membingungkan, apakah tabel kontingensi ini "berpasangan"? Jika kami membandingkan proporsi dengan tekanan darah tinggi antara ahli statistik AS dan Inggris, Anda membandingkan dua proporsi (walaupun dari variabel yang sama) diukur pada set orang yang berbeda. Di sisi lain, jika Anda ingin membandingkan proporsi dengan tekanan darah tinggi dengan proporsi AS, Anda membandingkan dua proporsi (walaupun variabel yang berbeda) diukur pada kelompok orang yang sama. Data-data ini baik"berpasangan" dan "tidak berpasangan" pada saat yang sama (meskipun berkenaan dengan berbagai aspek data). Ini menyebabkan kebingungan. Untuk menghindari kebingungan ini, saya berpendapat bahwa Anda harus memikirkan pertanyaan yang Anda tanyakan. Khususnya, jika Anda ingin tahu:
- Jika variabel independen: gunakan uji chi-squared.
- Jika proporsi dengan tekanan darah tinggi berbeda menurut kebangsaan: gunakan z-test untuk perbedaan proporsi.
- Jika proporsi marjinalnya sama: gunakan uji McNemar.
Seseorang mungkin tidak setuju dengan saya di sini, dengan alasan bahwa karena tabel kontingensi tidak "berpasangan", uji McNemar tidak dapat digunakan untuk menguji kesetaraan proporsi marjinal dan bahwa uji chi-kuadrat harus digunakan sebagai gantinya. Karena ini adalah titik pertikaian, mari kita coba keduanya untuk melihat apakah hasilnya masuk akal:
chisq.test(mat)
# Pearson's Chi-squared test with Yates' continuity correction
#
# data: mat
# X-squared = 357.21, df = 1, p-value < 2.2e-16
mcnemar.test(mat)
# McNemar's Chi-squared test
#
# data: mat
# McNemar's chi-squared = 0, df = 1, p-value = 1
50 % = 50 %
Mari kita coba contoh lain:
mat2 = as.table(rbind(c(195, 195),
c( 5, 5) ))
colnames(mat2) = c("US", "UK")
rownames(mat2) = c("Hi", "Normal")
names(dimnames(mat2)) = c("BP", "Nationality")
mat2
# Nationality
# BP US UK
# Hi 195 195
# Normal 5 5
margin.table(mat2, 1)/sum(mat2)
# BP
# Hi Normal
# 0.975 0.025
margin.table(mat2, 2)/sum(mat2)
# Nationality
# US UK
# 0.5 0.5
97,5 % ≫ 50 %
chisq.test(mat2)
# Pearson's Chi-squared test
#
# data: mat2
# X-squared = 0, df = 1, p-value = 1
mcnemar.test(mat2)
# McNemar's Chi-squared test with continuity correction
#
# data: mat2
# McNemar's chi-squared = 178.605, df = 1, p-value < 2.2e-16
Kali ini, uji chi-squared memberikan nilai-p 1, yang berarti bahwa proporsi marjinal sama dengan yang mereka bisa. Tetapi kami melihat bahwa proporsi marginal sangat jelas tidak sama, sehingga hasil ini tidak masuk akal mengingat data kami. Di sisi lain, uji McNemar menghasilkan nilai-p sekitar 0. Dengan kata lain, sangat tidak mungkin untuk mendapatkan data dengan proporsi marjinal sejauh kesetaraan seperti ini, jika mereka benar-benar sama dalam populasi. Karena proporsi marjinal kami yang diamati jauh dari sama, hasil ini masuk akal.
Fakta bahwa uji chi-squared menghasilkan hasil yang tidak masuk akal mengingat data kami menunjukkan ada yang salah dengan menggunakan uji chi-squared di sini. Tentu saja, fakta bahwa tes McNemar memberikan hasil yang masuk akal tidak membuktikan bahwa itu valid, mungkin hanya kebetulan, tetapi tes chi-squared jelas salah.
Mari kita lihat apakah kita bisa membahas argumen mengapa tes McNemar mungkin yang benar. Saya akan menggunakan dataset ketiga:
mat3 = as.table(rbind(c(190, 15),
c( 60, 135) ))
colnames(mat3) = c("US", "UK")
rownames(mat3) = c("Hi", "Normal")
names(dimnames(mat3)) = c("BP", "Nationality")
mat3
# Nationality
# BP US UK
# Hi 190 15
# Normal 60 135
margin.table(mat3, 1)/sum(mat3)
# BP
# Hi Normal
# 0.5125 0.4875
margin.table(mat3, 2)/sum(mat3)
# Nationality
# US UK
# 0.625 0.375
51,25 %62,5 %
prop.test(x=c(205, 250), n=c(400, 400))
# 2-sample test for equality of proportions with continuity correction
#
# data: c(205, 250) out of c(400, 400)
# X-squared = 9.8665, df = 1, p-value = 0.001683
# alternative hypothesis: two.sided
# 95 percent confidence interval:
# -0.18319286 -0.04180714
# sample estimates:
# prop 1 prop 2
# 0.5125 0.6250
(Untuk menggunakan prop.test()
untuk menguji proporsi marjinal, saya harus memasukkan angka 'keberhasilan' dan jumlah total 'percobaan' secara manual, tetapi Anda dapat melihat dari baris terakhir dari output bahwa proporsinya benar.) Ini menunjukkan bahwa tidak mungkin untuk mendapatkan proporsi marjinal sejauh ini dari kesetaraan jika mereka benar-benar sama, mengingat jumlah data yang kami miliki.
Apakah tes ini valid? Ada dua masalah di sini: Tes ini meyakini kita memiliki 800 data, padahal sebenarnya kita hanya memiliki 400 data. Tes ini juga tidak memperhitungkan bahwa dua proporsi ini tidak independen, dalam arti bahwa mereka diukur pada orang yang sama.
% tinggi BP: 190 + 15400% AS: 190 + 60400
1904001560π= .5di bawah nol. Itu adalah wawasan McNemar. Faktanya, tes McNemar pada dasarnya hanya tes binomial apakah pengamatan sama-sama jatuh ke dalam dua sel:
binom.test(x=15, n=(15+60))
# Exact binomial test
#
# data: 15 and (15 + 60)
# number of successes = 15, number of trials = 75, p-value = 1.588e-07
# alternative hypothesis: true probability of success is not equal to 0.5
# 95 percent confidence interval:
# 0.1164821 0.3083261
# sample estimates:
# probability of success
# 0.2
Dalam versi ini, hanya pengamatan informatif yang digunakan dan tidak dihitung dua kali. Nilai p di sini jauh lebih kecil, 0,0000001588, yang sering terjadi ketika ketergantungan pada data diperhitungkan. Artinya, tes ini lebih kuat daripada uji-z perbedaan proporsi. Lebih jauh kita dapat melihat bahwa versi di atas pada dasarnya sama dengan tes McNemar:
mcnemar.test(mat3, correct=FALSE)
# McNemar's Chi-squared test
#
# data: mat3
# McNemar's chi-squared = 27, df = 1, p-value = 2.035e-07
Jika non-identitas adalah membingungkan, tes McNemar biasanya, dan dalam R, kuadratkan hasilnya dan membandingkannya dengan distribusi chi-kuadrat, yang bukan tes yang tepat seperti binomial di atas:
(15-60)^2/(15+60)
# [1] 27
1-pchisq(27, df=1)
# [1] 2.034555e-07
Jadi, ketika Anda ingin memeriksa proporsi marginal dari tabel kontingensi adalah sama, tes McNemar (atau tes binomial yang tepat dihitung secara manual) benar. Hanya menggunakan informasi yang relevan tanpa secara ilegal menggunakan data apa pun dua kali. Itu tidak hanya 'terjadi' untuk menghasilkan hasil yang masuk akal dari data.
Saya terus percaya bahwa mencoba mencari tahu apakah tabel kontingensi "dipasangkan" tidak membantu. Saya sarankan menggunakan tes yang cocok dengan pertanyaan yang Anda tanyakan dari data.