हम क्रमपरिवर्तन परीक्षण के पैरामीटर के लिए एक विश्वास अंतराल कैसे बनाते हैं?


9

क्रमपरिवर्तन परीक्षण मूल डेटा से यादृच्छिक पर निकाले गए क्रमपरिवर्तन के अवशेषों पर आधारित महत्व परीक्षण हैं। क्रमपरिवर्तन resamples बूटस्ट्रैप नमूनों के विपरीत, प्रतिस्थापन के बिना तैयार किए जाते हैं, जो प्रतिस्थापन के साथ तैयार किए जाते हैं। यहाँ एक उदाहरण है जो मैंने एक साधारण क्रमपरिवर्तन परीक्षण के आर में किया था । (आपकी टिप्पणियों का स्वागत है)

क्रमचय परीक्षणों के बहुत फायदे हैं। उन्हें विशिष्ट जनसंख्या आकार जैसे सामान्यता की आवश्यकता नहीं होती है। वे विभिन्न प्रकार के आंकड़ों पर लागू होते हैं, न कि केवल उन आंकड़ों के लिए जो शून्य परिकल्पना के तहत एक सरल वितरण है। वे जनसंख्या के आकार और आकार की परवाह किए बिना (यदि पर्याप्त क्रमपरिवर्तन का उपयोग किया जाता है), बहुत सटीक पी-मान दे सकते हैं।

मैंने यह भी पढ़ा है कि एक परीक्षण के साथ-साथ आत्मविश्वास अंतराल देने के लिए अक्सर उपयोगी होता है, जो क्रमपरिवर्तन रेज़म्पलिंग के बजाय बूटस्ट्रैप रेज़म्पलिंग का उपयोग करके बनाया जाता है।

क्या आप समझा सकते हैं (या बस आर कोड देते हैं) कि एक विश्वास अंतराल का निर्माण कैसे किया जाता है (अर्थात उपरोक्त उदाहरण में दो नमूनों के साधनों के बीच अंतर के लिए)?

संपादित करें

कुछ गुगली करने के बाद मुझे यह दिलचस्प पढ़ने को मिला ।

जवाबों:


7

यह क्रमपरिवर्तन resampling का उपयोग करने के लिए ठीक है। यह वास्तव में कई कारकों पर निर्भर करता है। यदि आपके क्रमपरिवर्तन अपेक्षाकृत कम संख्या हैं, तो आपके आत्मविश्वास अंतराल का अनुमान क्रमपरिवर्तन के साथ बहुत अच्छा नहीं है। आपके क्रमपरिवर्तन कुछ हद तक एक ग्रे क्षेत्र में हैं और शायद ठीक हैं।

आपके पूर्व कोड से एकमात्र अंतर यह है कि आप क्रमपरिवर्तन के बजाय अपने नमूने बेतरतीब ढंग से उत्पन्न करेंगे। और, आप उनमें से अधिक उत्पन्न करेंगे, चलो उदाहरण के लिए 1000 कहते हैं। अपने प्रयोग के 1000 प्रतिकृति के लिए अंतर स्कोर प्राप्त करें। मध्य 950 (95%) के लिए कटऑफ लें। यह आपका आत्मविश्वास अंतराल है। यह सीधे बूटस्ट्रैप से गिरता है।

आप पहले से ही अपने उदाहरण में यह कर चुके हैं। dif.treat 462 आइटम लंबा है। इसलिए, आपको निचले 2.5% और ऊपरी 2.5% कट ऑफ (प्रत्येक छोर पर लगभग 11 आइटम) की आवश्यकता होती है।

पहले से अपने कोड का उपयोग कर रहा है ...

y <- sort(dif.treat)
ci.lo <- y[11]
ci.hi <- y[462-11]

ऑफ हैंड मैं कहूंगा कि 462 थोड़ा कम है, लेकिन आप पाएंगे कि 10,000 तक का बूटस्ट्रैप स्कोर के साथ आता है जो थोड़ा अलग होता है (मतलब के करीब)।

सोचा था कि बूट लाइब्रेरी (आपके पूर्व कोड के आधार पर) के लिए कुछ सरल कोड भी जोड़ूंगा।

diff <- function(x,i) mean(x[i[6:11]]) - mean(x[i[1:5]])
b <- boot(total, diff, R = 1000)
boot.ci(b)

धन्यवाद। क्या इसका उपयोग करके नमूने उत्पन्न करना ठीक है sampleऔर replace=TRUE? क्या पैकेज का उपयोग करने का कोई कारण है boot?
जॉर्ज डोंटास

आमतौर पर यह प्रतिस्थापन के साथ किया जाता है इसलिए आप इसे TRUE पर सेट करना चाहते हैं। जैसा कि क्यों ... पैकेज को अनुकूलित किया गया है, इसलिए इसे तेजी से चलना चाहिए .... इसे कभी समय नहीं दिया गया। यदि आप R बड़े सेट करते हैं तो यह एक समस्या हो सकती है। और, जैसा कि आप देख सकते हैं, कोड अच्छा और संक्षिप्त है। इसमें बहुत सारी विशेषताएं हैं जिन्हें आप आसानी से अपना रोल नहीं कर पाएंगे।
जॉन

boot.ci विश्वास अंतराल देता है। क्या कोई (बूट) फ़ंक्शन है जो p.value देता है? (उत्पन्न नमूनों की कुल संख्या से कम से कम मतभेदों की संख्या के अनुपात के रूप में उच्च के रूप में मनाया जाता है)
जॉर्ज डोंटा

ठीक है, मुझे इसे पाने का एक तरीका मिला:sum(b$t>=b$t0)/b$R
जॉर्ज डोंटास

@ gd047: ध्यान रखें कि यह एक तरफा पी-मूल्य है जिसकी आप गणना कर रहे हैं।
जोरिस मे

4

के रूप में एक क्रमचय परीक्षण एक सटीक परीक्षण है, जो आपको एक सटीक पी-मूल्य देता है। एक क्रमपरिवर्तन परीक्षण बूटस्ट्रैपिंग का कोई मतलब नहीं है।

इसके आगे, एक परीक्षण सांख्यिकीय के आसपास एक विश्वास अंतराल का निर्धारण करने का कोई मतलब नहीं है, क्योंकि इसकी गणना आपके नमूने के आधार पर की जाती है और अनुमान नहीं। आप अनुमानों और पसंद जैसे अनुमानों के आसपास विश्वास अंतराल निर्धारित करते हैं, लेकिन परीक्षण आँकड़ों के आसपास नहीं।

क्रमपरिवर्तन परीक्षणों का उपयोग उन डेटासेट पर नहीं किया जाना चाहिए जो इतने बड़े हैं कि आप किसी भी अधिक सभी संभावित अनुमतियों की गणना नहीं कर सकते। यदि ऐसा है, तो आपके द्वारा उपयोग किए जाने वाले टेस्ट स्टेटिस्टिक के लिए कट-ऑफ निर्धारित करने के लिए बूटस्ट्रैप प्रक्रिया का उपयोग करें। लेकिन फिर से, यह 95% विश्वास अंतराल के साथ बहुत कम है।

एक उदाहरण: मैं यहां क्लासिक टी-स्टेटिस्टिक का उपयोग करता हूं, लेकिन अपने स्टैटिस्टिकल वितरण के अनुभवजन्य वितरण की गणना के लिए एक सरल दृष्टिकोण का उपयोग करें। उसके आधार पर, मैं एक अनुभवजन्य p- मान की गणना करता हूं:

x <- c(11.4,25.3,29.9,16.5,21.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)

t.sample <- t.test(x,y)$statistic
t.dist <- apply(
      replicate(1000,sample(c(x,y),11,replace=F)),2,
      function(i){t.test(i[1:5],i[6:11])$statistic})

# two sided testing
center <- mean(t.dist)
t.sample <-abs(t.sample-center)
t.dist <- abs(t.dist - center)
p.value <- sum( t.sample < t.dist ) / length(t.dist)
p.value

ध्यान रखें कि यह 2-पक्षीय परीक्षण केवल सममित वितरण के लिए काम करता है। गैर-सममित वितरण आम तौर पर केवल एक तरफा परीक्षण किए जाते हैं।

संपादित करें:

ठीक है, मैंने प्रश्न को गलत समझा। यदि आप अंतर के अनुमान पर एक विश्वास अंतराल की गणना करना चाहते हैं, तो आप प्रत्येक नमूने के भीतर बूटस्ट्रैपिंग के लिए यहां उल्लिखित कोड का उपयोग कर सकते हैं । माइंड यू, यह एक पक्षपाती अनुमान है: आम तौर पर यह एक सीआई देता है जो बहुत छोटा है। वहाँ दिए गए उदाहरण को भी एक कारण के रूप में देखें कि आपको विश्वास अंतराल और पी-मूल्य के लिए एक अलग दृष्टिकोण का उपयोग क्यों करना है।


1
क्या आप इस बात की व्याख्या दे सकते हैं कि डेटासेट पर क्रमपरिवर्तन परीक्षणों का उपयोग क्यों नहीं किया जाना चाहिए कि आप सभी संभावित क्रमपरिवर्तन की गणना नहीं कर सकते हैं?
एंडी डब्ल्यू

@Andy W: सबसे पहले "क्रमपरिवर्तन परीक्षण" को परिभाषित करें। मेरे लिए, क्रमपरिवर्तन परीक्षण सटीक परीक्षण हैं, हर क्रमपरिवर्तन का उपयोग संभव है। बड़े डेटासेट पर यह असंभव है। "अनुमानित क्रमपरिवर्तन परीक्षण" वास्तव में सिंट मोंटे कार्लो पद्धति के आसपास हैं, और इस तरह से उनका पालन किया जाना चाहिए। इसके आगे, केंद्रीय सीमा प्रमेय अधिकांश मामलों में आश्वासन देता है कि बड़े डेटासेट का उपयोग करते समय परीक्षण के आंकड़ों के वितरण के बारे में धारणाएं पूरी होती हैं। जटिल परीक्षण में, बड़े डेटासेट पर क्रमपरिवर्तन परीक्षणों का उपयोग किसी भी महत्वपूर्ण मूल्य को जोड़े बिना गणना समय को असहनीय रूप से लंबा बनाता है। my2cents
जॉरिस मेय्स

मैं एक क्रमचय परीक्षण बूटस्ट्रैपिंग की तरह कुछ भी नहीं कहा। [SECTION 14.5 | के अंतिम पैराग्राफ को पढ़ने के बाद मैं इस प्रश्न पर आया सारांश], लिंक किए गए पीडीएफ में।
जॉर्ज डोंटास

@ gd047 फिर मैंने आपके सवाल को गलत बताया है। लेकिन आपको वास्तव में आत्मविश्वास अंतराल और p.values ​​को सख्ती से अलग रखना चाहिए। प्रत्येक अंतराल में बूटस्ट्रैपिंग के आधार पर विश्वास अंतराल का अनुमान लगाया जाता है (हालांकि यह परिभाषा द्वारा पक्षपाती है), क्रमबद्धता परीक्षण संपूर्ण डेटासेट पर क्रमपरिवर्तन द्वारा किया जाता है। वे दो पूरी तरह से अलग चीजें हैं।
जोरिस मेय्स

@ केविन: कोड सही था। कोड फिर से पढ़ें: लागू होने के भीतर अनाम फ़ंक्शन x[6:11]के तर्क को संदर्भित करता है x। भ्रामक हो सकता है, लेकिन आपके संपादन ने बहुत गलत परिणाम दिए। कृपया इस बारे में टिप्पणी करें कि आपको क्या लगता है कि यह कोड को संपादित करने से पहले होना चाहिए। मुझे एक रोलबैक बचाता है। आगे भ्रम से बचने के लिए, मैं कुछ बदल xकरने के लिएi
जोरिस Meys

0

उत्तर में जोरिस मेये कोड से लेकिन संशोधन के साथ इसे और अधिक टी में लागू करने की अनुमति देने के लिए एक ही स्थिति में:

मैंने दूसरे को संपादित करने की कोशिश की, लेकिन मेरे पास खत्म करने का समय नहीं था और किसी कारण से मैं टिप्पणी नहीं कर सकता (शायद यह एक पुराना सवाल है)।

x <- c(11.4,25.3,29.9,16.5,21.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)

t.sample <- t.test(x,y)$statistic

t.dist <- apply(
          replicate(1000,sample(c(x,y),length(c(x,y)),replace=F)), 2,
          function(i){t.test(i[1:length(x)],i[length(x)+1:length(c(x,y))])$statistic})

# two sided testing
center <- mean(t.dist)
t.sample <-abs(t.sample-center)
t.dist <- abs(t.dist - center)
p.value <- sum( t.sample < t.dist ) / length(t.dist)
p.value
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.