Öyle görünüyor ki, bunun bir karmaşasını yaptım. Bunu farklı bir şekilde tekrar açıklamaya çalışmama izin verin, işlerin çözülmesine yardımcı olup olmayacağını göreceğiz.
McNemar'ın testine karşı ki-kare testini açıklamanın geleneksel yolu, verinin "eşleştirilip eşleştirilmediğini" ve "eşleştirilip eşleştirilmediğini" belirten McNemar testini ve ki-kare testini önermektir. Bunun çok fazla kafa karışıklığına yol açtığını buldum (bu konu bir örnek!). Bunun yerine, sormaya çalıştığınız soruya odaklanmanın ve sorunuza uyan testi kullanmanın en yararlı olduğunu buldum . Bunu daha somut hale getirmek için, tamamlanmış bir senaryoya bakalım:
Bir istatistik konferansında dolaşıyorsunuz ve tanıştığınız her istatistikçi için ABD'den mi yoksa Birleşik Krallık'tan mı olduklarını kaydediyorsunuz. Ayrıca tansiyonlarının yüksek veya normal tansiyonları olup olmadığını da kaydedersiniz.
İşte veriler:
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
Bu noktada verilerimizden hangi soruyu sormak istediğimizi bulmak önemlidir. Burada sorabileceğimiz üç farklı soru var:
- Kategorik değişkenlerin
BP
olup olmadığını bilmek isteyebiliriz veNationality
ilişkili ya da bağımsız olan;
- Yüksek kan basıncının ABD istatistikçilerinde İngiltere istatistikçilerinden daha yaygın olup olmadığını merak edebiliriz;
Son olarak, yüksek tansiyonlu istatistikçilerin oranının, konuştuğumuz ABD istatistikçilerinin oranına eşit olup olmadığını merak edebiliriz. Bu, tablonun marjinal oranlarını ifade eder. Bunlar varsayılan olarak R'de basılmaz, ancak onları bu şekilde alabiliriz (bu durumda, tamamen aynı olduklarına dikkat edin):
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
Dediğim gibi, birçok ders kitabında tartışılan geleneksel yaklaşım, verilerin "eşleştirilip eşleştirilmemesine" dayanarak hangi testin kullanılacağını belirlemektir. Ama bu çok kafa karıştırıcı, bu beklenmedik durum tablosu "eşleştirilmiş" mi? ABD ve İngiltere istatistikçileri arasındaki yüksek tansiyon oranını karşılaştırırsak, farklı insan gruplarında ölçülen iki oranı (aynı değişkenin de olsa) karşılaştırıyorsunuzdur. Öte yandan, yüksek tansiyon oranını ABD oranı ile karşılaştırmak istiyorsanız, aynı kişi grubunda ölçülen iki oranı (farklı değişkenler de olsa) karşılaştırıyorsunuz. Bu veriler hem“eşleştirilmiş” ve “eşleşmemiş” aynı anda (verinin farklı yönleriyle ilgili olsa da). Bu karışıklığa yol açar. Bu karmaşadan kaçınmaya çalışmak için, hangi soruyu sorduğunuzda düşünmeniz gerektiğini düşünüyorum. Özellikle bilmek istiyorsanız:
- Değişkenler bağımsızsa: Ki kare testi kullanın.
- Yüksek tansiyon oranı orantılı olarak farklılık gösteriyorsa: oranların farkı için z-testini kullanın.
- Marjinal oranlar aynı ise: McNemar's testini kullanın.
Acil durum tablosu “eşli” olmadığından, McNemar'ın testinin marjinal oranların eşitliğini test etmek için kullanılamayacağını ve bunun yerine ki-kare testinin kullanılması gerektiğini savunarak birileri benimle aynı fikirde olmayabilir. Bu bir çekişme noktası olduğundan, sonuçların anlamlı olup olmadığını görmek için her ikisini de deneyelim:
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% Ki-kare testinin sonuçları sadece veriler ışığında bir anlam ifade etmiyor. Öte yandan, McNemar'ın testi 1 değerinde p değeri verir. Yani, eğer gerçek marjinal oranlar eşitse, eşitliğe bu kadar yakın veya eşitlikten marjinal oranlar bulma şansınız% 100 olacaktır. Gözlenen marjinal oranlar, olduğundan daha yakın olamadığından, bu sonuç mantıklı geliyor.
Başka bir örnek deneyelim:
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
Bu kez ki-kare testi, 1'lik bir p değeri verir; yani, marjinal oranlar, olabildiğince eşitdir. Ancak, marjinal oranların çok açık bir şekilde eşit olmadığını gördük, bu nedenle verilerimiz ışığında bir anlam ifade etmiyor. Öte yandan, McNemar'ın testi yaklaşık 0 değerinde bir p değeri verir. Diğer bir deyişle, eğer nüfus içinde gerçekten eşitlerse, eşitlikten uzak, marjinal oranlarda veri elde etmek son derece düşük bir ihtimaldir. Bizim gözlemlediğimiz marjinal oranlar eşit olmaktan uzak olduğundan, bu sonuç mantıklı geliyor.
Ki-kare testinin verilere göre hiçbir anlam ifade etmeyen sonuçlar vermesi, ki-kare testinin burada kullanılmasında yanlış bir şey olduğunu göstermektedir. Tabii ki, McNemar'ın testinin mantıklı sonuçlar vermesi, bunun geçerli olduğunu kanıtlamaz, sadece bir tesadüf olabilir, ama ki-kare testi açıkça yanlıştır.
Bakalım McNemar'ın testinin neden doğru sınav olabileceğine dair bir tartışma yapabilir miyiz bakalım. Üçüncü bir veri setini kullanacağım:
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
( prop.test()
Marjinal oranları test etmek için, 'başarı' sayısını ve toplam 'deneme sayısını' manuel olarak girmek zorunda kaldım, ancak çıktının son satırından orantıların doğru olduğunu görebilirsiniz.) Elimizdeki veri miktarı göz önüne alındığında, eğer eşit olsalardı, eşit oranlardan bu kadar marjinal oranlar elde etmek pek mümkün değildir.
Bu test geçerli mi? Burada iki sorun var: Test, aslında sadece 400 olan 800 veriye sahip olduğumuza inanıyor. Bu test aynı zamanda bu iki oranın da aynı insanlar üzerinde ölçüldüğü anlamında bağımsız olmadığını göz önüne almıyor.
% high BP: 190+15400% US: 190+60400
1904001560π=.5boş altında. McNemar'ın içgörüsü buydu. Aslında, McNemar'ın testi aslında sadece gözlemlerin bu iki hücreye eşit düşme ihtimalinin olup olmadığına dair binom bir testtir:
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
Bu versiyonda, sadece bilgilendirici gözlemler kullanılmıştır ve iki defa sayılmazlar. Buradaki p değeri daha küçüktür, 0.0000001588, bu genellikle verideki bağımlılık hesaba katıldığı zaman geçerlidir. Yani, bu test, oran farklılıklarının z testinden daha güçlüdür. Ayrıca yukarıdaki sürümün McNemar'ın testiyle aynı olduğunu görebiliyoruz:
mcnemar.test(mat3, correct=FALSE)
# McNemar's Chi-squared test
#
# data: mat3
# McNemar's chi-squared = 27, df = 1, p-value = 2.035e-07
Eğer özdeş olmayanlık kafa karıştırıcı ise, McNemar'ın testi tipik olarak ve R'de sonucu kareler ve yukarıdaki binom gibi tam bir test olmayan ki-kare dağılımıyla karşılaştırır:
(15-60)^2/(15+60)
# [1] 27
1-pchisq(27, df=1)
# [1] 2.034555e-07
Bu nedenle, beklenmedik durum tablosunun marjinal oranlarını kontrol etmek istediğinizde, McNemar'ın testi (veya manuel olarak hesaplanan tam binom testi) doğrudur. Herhangi bir veriyi iki kez yasadışı kullanmaksızın yalnızca ilgili bilgileri kullanır. Verileri mantıklı kılan sonuçlar üretmek sadece 'gerçekleşmez'.
Acil durum tablosunun "eşleştirilmiş" olup olmadığını anlamaya çalışmanın faydasız olduğuna inanmaya devam ediyorum. Verilerde sorduğunuz soruyla eşleşen testi kullanmanızı öneririm.