ठीक है, ऐसा लगता है कि मैंने इसका एक हैश बनाया है। मुझे एक अलग तरीके से फिर से यह समझाने की कोशिश करते हैं और हम देखेंगे कि क्या यह स्पष्ट चीजों को मदद कर सकता है।
McNemar के परीक्षण बनाम ची-स्क्वेर्ड टेस्ट की व्याख्या करने का पारंपरिक तरीका यह पूछना है कि क्या डेटा "युग्मित" हैं और यदि डेटा को "अनपेयर" किया जाता है, तो McNemar के परीक्षण की अनुशंसा करने के लिए और यदि डेटा को जोड़ा गया है तो ची-स्क्वेड टेस्ट। मैंने पाया है कि इससे बहुत भ्रम होता है (यह धागा एक उदाहरण है!)। इसके स्थान पर, मैंने पाया है कि यह ध्यान केंद्रित करने के लिए सबसे अधिक सहायक है उस प्रश्न जो आप पूछने की कोशिश कर रहे हैं , और उस परीक्षण का उपयोग करें जो आपके प्रश्न से मेल खाता है। इसे और अधिक ठोस बनाने के लिए, आइए एक निर्मित परिदृश्य देखें:
आप एक सांख्यिकी सम्मेलन के चारों ओर चलते हैं और आपके द्वारा मिलने वाले प्रत्येक सांख्यिकीविद् के लिए, आप रिकॉर्ड करते हैं कि वे अमेरिका या यूके से हैं। आप यह भी रिकॉर्ड करते हैं कि उन्हें उच्च रक्तचाप या सामान्य रक्तचाप है या नहीं।
यहाँ डेटा हैं:
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
इस बिंदु पर, यह पता लगाना महत्वपूर्ण है कि हम अपने डेटा से कौन सा सवाल पूछना चाहते हैं। तीन अलग-अलग प्रश्न हैं जो हम यहां पूछ सकते हैं:
- हम जानना चाह सकते हैं कि क्या श्रेणीगत चर
BP
और Nationality
संबद्ध या स्वतंत्र हैं;
- अगर हम ब्रिटेन के सांख्यिकीविदों की तुलना में उच्च रक्तचाप अमेरिकी सांख्यिकीविदों के बीच आम हैं तो आश्चर्य हो सकता है;
अंत में, हमें आश्चर्य हो सकता है कि यदि उच्च रक्तचाप वाले सांख्यिकीविदों का अनुपात अमेरिकी सांख्यिकीविदों के अनुपात के बराबर है, जिनसे हमने बात की थी। यह तालिका के सीमांत अनुपात को संदर्भित करता है। ये आर में डिफ़ॉल्ट रूप से मुद्रित नहीं होते हैं, लेकिन हम उन्हें इस प्रकार प्राप्त कर सकते हैं (ध्यान दें कि, इस मामले में, वे बिल्कुल समान हैं):
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
जैसा कि मैंने कहा, पारंपरिक दृष्टिकोण, कई पाठ्यपुस्तकों में चर्चा की गई है, यह निर्धारित करने के लिए कि डेटा "युग्मित" है या नहीं, इसके आधार पर किस परीक्षण का उपयोग करना है। लेकिन यह बहुत भ्रामक है, क्या यह आकस्मिक तालिका "युग्मित" है? यदि हम यूएस और यूके के सांख्यिकीविदों के बीच उच्च रक्तचाप के अनुपात की तुलना करते हैं, तो आप लोगों के विभिन्न सेटों पर मापे गए दो अनुपातों (समान चर के साथ) की तुलना कर रहे हैं। दूसरी ओर, यदि आप उच्च रक्तचाप के अनुपात की तुलना अमेरिका के अनुपात से करना चाहते हैं, तो आप लोगों के एक ही सेट पर मापे गए दो अनुपातों (विभिन्न चरों के साथ) की तुलना कर रहे हैं। ये डेटा दोनों हैंएक ही समय में "युग्मित" और "अप्रभावित" (डेटा के विभिन्न पहलुओं के संबंध में यद्यपि)। इससे भ्रम पैदा होता है। इस भ्रम से बचने की कोशिश करने के लिए, मेरा तर्क है कि आपको यह सोचना चाहिए कि आप किस प्रश्न को पूछ रहे हैं। विशेष रूप से, यदि आप जानना चाहते हैं:
- यदि चर स्वतंत्र हैं: chi-squared परीक्षण का उपयोग करें।
- यदि उच्च रक्तचाप के साथ अनुपात राष्ट्रीयता से भिन्न होता है: अनुपात के अंतर के लिए जेड-परीक्षण का उपयोग करें।
- यदि सीमांत अनुपात समान हैं: McNemar के परीक्षण का उपयोग करें।
कोई मेरे साथ यहाँ असहमत हो सकता है, यह तर्क देते हुए कि क्योंकि आकस्मिक तालिका "युग्मित" नहीं है, McNemar के परीक्षण का उपयोग सीमांत अनुपात की समानता का परीक्षण करने के लिए नहीं किया जा सकता है और इसके बजाय ची-स्क्वेर परीक्षण का उपयोग किया जाना चाहिए। चूंकि यह विवाद का बिंदु है, इसलिए दोनों को देखने की कोशिश करें कि क्या परिणाम समझ में आता है:
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 %
चलिए एक और उदाहरण आजमाते हैं:
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
इस बार, ची-स्क्वेर्ड टेस्ट 1 का पी-मूल्य देता है, जिसका अर्थ है कि सीमांत अनुपात जितना हो सकता है उतना ही है। लेकिन हमने देखा कि सीमांत अनुपात बहुत स्पष्ट रूप से समान नहीं हैं, इसलिए यह परिणाम हमारे डेटा के प्रकाश में कोई मतलब नहीं रखता है। दूसरी ओर, मैकनेमर के परीक्षण से लगभग 0. का एक पी-मूल्य प्राप्त होता है। दूसरे शब्दों में, यह समानता के अनुसार जहाँ तक वे वास्तव में जनसंख्या में समान हैं, सीमांत अनुपात के साथ डेटा प्राप्त करने की संभावना नहीं है। चूँकि हमारे देखे गए सीमान्त अनुपात बराबर हैं, इसलिए यह परिणाम समझ में आता है।
तथ्य यह है कि ची-स्क्वेर्ड टेस्ट का परिणाम है कि हमारे डेटा का कोई मतलब नहीं है कि यहाँ ची-चुकता परीक्षण का उपयोग करने के साथ कुछ गलत है। बेशक, तथ्य यह है कि मैकनेमर के परीक्षण ने समझदार परिणाम प्रदान किए हैं, यह साबित नहीं करता है कि यह वैध है, यह सिर्फ एक संयोग हो सकता है, लेकिन ची-स्क्वॉड परीक्षण स्पष्ट रूप से गलत है।
आइए देखें कि क्या हम इस तर्क के माध्यम से काम कर सकते हैं कि मैकनीमार का परीक्षण सही क्यों हो सकता है। मैं तीसरे डेटासेट का उपयोग करूंगा:
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()
सीमांत अनुपातों का परीक्षण करने के लिए उपयोग करने के लिए, मुझे 'सफलताओं ’की संख्या और मैन्युअल रूप से, परीक्षणों’ की कुल संख्या दर्ज करनी थी, लेकिन आप आउटपुट की अंतिम पंक्ति से देख सकते हैं कि अनुपात सही है।) यह सुझाव देता है कि यदि वे वास्तव में समान हैं, तो यह समानता की तुलना में सीमांत अनुपात प्राप्त करने की संभावना नहीं है, हमारे पास जितना डेटा है।
क्या यह परीक्षण वैध है? यहां दो समस्याएं हैं: परीक्षण का मानना है कि हमारे पास 800 डेटा हैं, जब हमारे पास वास्तव में केवल 400 हैं। यह परीक्षण भी ध्यान में नहीं रखता है कि ये दो अनुपात स्वतंत्र नहीं हैं, इस अर्थ में कि वे एक ही लोगों पर मापा गया था।
% हाई BP: 190 + 15400% US: 190 + 60400
1904001560π= 5नल के नीचे। यही मैकनेमर की अंतर्दृष्टि थी। वास्तव में, McNemar का परीक्षण अनिवार्य रूप से सिर्फ एक द्विपद परीक्षण है कि क्या अवलोकन समान रूप से उन दो कोशिकाओं में गिरने की संभावना है:
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
इस संस्करण में, केवल सूचनात्मक टिप्पणियों का उपयोग किया जाता है और उनकी गणना दो बार नहीं की जाती है। यहां पी-वैल्यू बहुत छोटा है, 0.0000001588, जो अक्सर ऐसा होता है जब डेटा में निर्भरता को ध्यान में रखा जाता है। यही है, यह परीक्षण अनुपात के अंतर के जेड-परीक्षण से अधिक शक्तिशाली है। हम आगे देख सकते हैं कि उपरोक्त संस्करण अनिवार्य रूप से मैकनीमार के परीक्षण के समान है:
mcnemar.test(mat3, correct=FALSE)
# McNemar's Chi-squared test
#
# data: mat3
# McNemar's chi-squared = 27, df = 1, p-value = 2.035e-07
यदि गैर-अस्मिता भ्रमित हो रही है, तो McNemar का परीक्षण आम तौर पर, और R में, परिणाम को चुकता करता है और इसकी तुलना ची-चुकता वितरण से करता है, जो कि ऊपर की द्विपद की तरह सटीक परीक्षण नहीं है:
(15-60)^2/(15+60)
# [1] 27
1-pchisq(27, df=1)
# [1] 2.034555e-07
इस प्रकार, जब आप एक आकस्मिक तालिका के सीमांत अनुपात की जांच करना चाहते हैं, तो बराबर है, McNemar का परीक्षण (या मैन्युअल रूप से गणना की गई सटीक द्विपद परीक्षण) सही है। यह अवैध रूप से दो बार किसी भी डेटा का उपयोग किए बिना केवल प्रासंगिक जानकारी का उपयोग करता है। यह डेटा उत्पन्न करने वाले परिणामों को प्राप्त करने के लिए सिर्फ 'घटित' नहीं होता है।
मुझे विश्वास है कि यह पता लगाने की कोशिश जारी है कि क्या एक आकस्मिक टेबल "जोड़ा" अनहेल्दी है। मैं उस परीक्षण का उपयोग करने का सुझाव देता हूं जो उस प्रश्न से मेल खाता है जो आप डेटा से पूछ रहे हैं।