क्या बूटस्ट्रैप को छोटे नमूने के आकार के लिए "इलाज" के रूप में देखा जा सकता है?


71

यह प्रश्न मैंने इस स्नातक स्तर की सांख्यिकी पाठ्यपुस्तक में पढ़ी गई चीज़ों और भी (स्वतंत्र रूप से) इस प्रस्तुति के दौरान एक सांख्यिकीय संगोष्ठी में सुना है। दोनों ही मामलों में, बयान "की वजह से था, क्योंकि नमूना का आकार बहुत छोटा है, हमने इस पैरामीट्रिक विधि बजाय (या इसके साथ) बूटस्ट्रैप के माध्यम से आकलन करने का फैसला किया ।"X

वे विवरण में नहीं आए, लेकिन शायद तर्क इस प्रकार था: विधि मानती है कि डेटा एक निश्चित पैरामीट्रिक वितरण का पालन करता है । वास्तव में वितरण बिल्कुल नहीं है , लेकिन यह तब तक ठीक है जब तक कि नमूना का आकार पर्याप्त बड़ा न हो। चूंकि इस मामले में नमूना का आकार बहुत छोटा है, इसलिए आइए (गैर-पैरामीट्रिक) बूटस्ट्रैप पर स्विच करें जो किसी भी वितरण की धारणा नहीं बनाता है। समस्या सुलझ गयी!XDD

मेरी राय में, यह बूटस्ट्रैप के लिए नहीं है। यहां बताया गया है कि मैं इसे कैसे देखता हूं: बूटस्ट्रैप किसी को एक बढ़त दे सकता है जब यह अधिक या कम स्पष्ट हो कि पर्याप्त डेटा हैं, लेकिन मानक त्रुटियों, पी-मूल्यों और समान आंकड़ों को प्राप्त करने के लिए कोई बंद फॉर्म समाधान नहीं है। एक क्लासिक उदाहरण एक सहसंबंध गुणांक के लिए एक सीआई प्राप्त कर रहा है जो एक द्विभाजित सामान्य वितरण से एक नमूना दिया गया है: बंद प्रपत्र समाधान मौजूद है, लेकिन यह इतना जटिल है कि बूटस्ट्रैपिंग सरल है। हालाँकि, ऐसा कुछ भी नहीं है कि बूटस्ट्रैप किसी तरह छोटे नमूने के साथ दूर जाने में मदद कर सकता है।

क्या मेरी धारणा सही है?

यदि आपको यह प्रश्न दिलचस्प लगता है, तो मुझसे एक और विशिष्ट बूटस्ट्रैप प्रश्न है:

बूटस्ट्रैप: ओवरफिटिंग का मुद्दा

PS मैं "बूटस्ट्रैप दृष्टिकोण" के एक उदाहरण को साझा करने में मदद नहीं कर सकता। मैं लेखक के नाम का खुलासा नहीं कर रहा हूं, लेकिन वह पुरानी पीढ़ी के "क्वेंट" में से एक हैं, जिन्होंने 2004 में क्वांटिटेटिव फाइनेंस पर एक किताब लिखी थी। उदाहरण वहां से लिया गया है।

निम्नलिखित समस्या पर विचार करें: मान लें कि आपके पास प्रत्येक के लिए 4 संपत्ति और 120 मासिक रिटर्न अवलोकन हैं। लक्ष्य वार्षिक रिटर्न के संयुक्त 4-आयामी cdf का निर्माण करना है। एकल संपत्ति के लिए भी, कार्य केवल 10 वार्षिक टिप्पणियों के साथ ही प्राप्य प्रतीत होता है, अकेले 4-आयामी cdf का अनुमान दें। लेकिन चिंता न करें, "बूटस्ट्रैप" आपको बाहर निकालने में मदद करेगा: सभी उपलब्ध 4-आयामी टिप्पणियों को लें, प्रतिस्थापन के साथ 12 को फिर से भरें और वार्षिक रिटर्न के एक "बूटस्ट्रैप्ड" 4-आयामी वेक्टर का निर्माण करने के लिए उन्हें कंपाउंड करें। दोहराएं कि 1000 बार और, लो और निहारना, आपको अपने आप को 1000 वार्षिक रिटर्न का "बूटस्ट्रैप नमूना" मिला। इसे cdf आकलन के उद्देश्य से आकार 1000 के iid नमूने के रूप में उपयोग करें, या किसी भी अन्य अनुमान के लिए जो एक हजार इतिहास से खींचा जा सकता है।


18
मैं आपके पहले पैराग्राफ में समान भावनाओं को सुनता या पढ़ता हूं, लेकिन मैं असहमत हूं। मैं आमतौर पर बूटस्ट्रैपिंग को छोटे नमूनों में आवश्यक रूप से उपयोगी नहीं देखता। इसका औचित्य स्पर्शोन्मुख / बड़ा नमूना है, और व्यवहार में कई मामलों में इसका छोटा नमूना प्रदर्शन समस्याग्रस्त है; उदाहरण के लिए, अंतराल की कवरेज अक्सर नाममात्र दर से काफी भिन्न होती है। यह एक और उपयोगी उपकरण है, लेकिन कई अन्य लोगों की तरह, जो वर्षों से हेराल्ड हैं, यह रामबाण नहीं है कि कुछ लोग इसकी कल्पना करते हैं। मुझे नहीं लगता कि यह बहुत छोटे नमूनों का समाधान है।
Glen_b

साइमन शिथर की पुस्तक (चित्रा 3.40) में प्रतिगमन के लिए एक प्रवाह चार्ट है जो नमूना आकार बड़ा नहीं है और त्रुटियों को सामान्य रूप से वितरित नहीं किए जाने पर इंट्रस्ट के लिए बूटस्ट्रैप का सुझाव देता है।
टोनी लैडसन

2
चौथे पैराग्राफ में प्रश्न का उत्तर हाँ है (या कम से कम आपको अपने तर्क के लिए एक क्रेडिट मिलेगा यदि आपने यह उत्तर मेरी कक्षा में एक परीक्षण पर दिया था)। क्या आपने इस चर्चा की जाँच की है ? में मेरा उत्तर है, मैं अनुमान है कि बूटस्ट्रैप बनाता है की एक विवरण दिया, और झटका-अपने मन कागज है कि हर bootstrapper विधि की सीमाओं के बारे में पता होना करने के लिए पढ़ना चाहिए के लिए एक संदर्भ दे दी है। उन पुस्तकों / पत्रों / प्रस्तुतियों के संदर्भों को देखना अच्छा होगा जो आपके प्रश्न को ट्रिगर करते हैं
StasK

क्या बूटस्ट्रैप सिर्फ आपको एक अतिरिक्त विस्तार में एक अतिरिक्त अवधि नहीं देता है - एक सुधार अवधि के साथ एक सामान्य सन्निकटन की तरह?
probabilityislogic

जवाबों:


34

मुझे यह याद है कि बूटस्ट्रैपिंग के लिए प्रतिशतक आत्मविश्वास अंतराल का उपयोग करना टी अंतराल के बजाय Z अंतराल का उपयोग करने और भाजक के लिए बजाय का उपयोग करने के बराबर है । दुर्भाग्य से मुझे याद नहीं है कि मैंने यह कहाँ पढ़ा है और मुझे अपनी त्वरित खोजों में संदर्भ नहीं मिला। जब n बड़ा होता है (और बूटस्ट्रैप के फायदे इन छोटी समस्याओं के कारण बड़े होते हैं) तो ये अंतर बहुत ज्यादा मायने नहीं रखते हैं , लेकिन छोटे साथ यह समस्या पैदा कर सकता है। अनुकरण और तुलना करने के लिए यहां कुछ आर कोड है:nn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

एक रन के लिए मेरे परिणाम हैं:

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

इसलिए हम देख सकते हैं कि टी-टेस्ट और जेड-टेस्ट (सच्ची जनसंख्या मानक विचलन के साथ) का उपयोग करके दोनों एक प्रकार I त्रुटि दर देते हैं जो आवश्यक रूप से डिज़ाइन किए गए । अनुचित z परीक्षण (नमूना मानक विचलन द्वारा विभाजित, लेकिन T के बजाय Z महत्वपूर्ण मान का उपयोग करते हुए) शून्य को दो बार से अधिक बार अस्वीकार कर देता है जितना कि इसे करना चाहिए। अब बूटस्ट्रैप के लिए, यह 3 बार जितनी बार चाहिए उतनी बार अस्वीकार कर रहा है (यदि 0, सही मतलब है, अंतराल में है या नहीं) को देख रहा है, इसलिए इस छोटे से नमूने के आकार के लिए साधारण बूटस्ट्रैप ठीक से आकार नहीं है और इसलिए समस्याओं को ठीक न करें (और यह तब है जब डेटा सामान्य रूप से सामान्य है)। बेहतर बूटस्ट्रैप अंतराल (बीसीए आदि) शायद बेहतर करेंगे, लेकिन यह छोटे नमूना आकार के लिए एक रामबाण के रूप में बूटस्ट्रैपिंग का उपयोग करने के बारे में कुछ चिंता पैदा करना चाहिए।α


6
आपके अंतिम वाक्य ने मुझे जिज्ञासु बना दिया, इसलिए मैंने आपके उदाहरण के साथ इसका प्रयास किया। मैंने bootपैकेज का उपयोग किया था और इसमें सभी संभव अंतराल प्रदान किए थे: पहला क्रम सामान्य सन्निकटन अंतराल, मूल बूटस्ट्रैप अंतराल, छात्र बूटस्ट्रैप अंतराल, बूटस्ट्रैप प्रतिशताइल अंतराल (जो आपका कोड पहले से ही प्रदान करता है), और समायोजित बूटस्ट्रैप प्रतिशत (बीसीए) मध्यान्तर। परिणाम अनिवार्य रूप से सभी समान (अस्वीकृति दर .16 -17 के आसपास) थे, छात्र अंतराल को छोड़कर, जिसमें नाममात्र (.05) अस्वीकृति दर थी (जो समझ में आता है, क्योंकि यह मानक टी-टेस्ट की तरह अधिक है)।
वोल्फगैंग

2
@ वोल्फगैंग, अतिरिक्त सिमुलेशन करने के लिए धन्यवाद। मैं थोड़ा आश्चर्यचकित हूं कि दूसरे अंतराल ने कुछ बेहतर नहीं किया, लेकिन आश्चर्य नहीं कि वे 0.05 के स्तर से नहीं मिले।
ग्रेग स्नो

1
हाँ, मैं थोड़ा हैरान था, भी! कभी-कभी हमारा अंतर्ज्ञान विफल हो जाता है। इसलिए कुछ ही मिनटों के भीतर आर में थोड़ी स्क्रिप्ट लिखने में सक्षम होने के लिए इतना अद्भुत है, क्या इसमें 10,000 \times 10,000पुनरावृत्तियां हैं (जिसे पूरा करने में एक और युगल मिनट लगते हैं), और चीजों की जांच करने में सक्षम हो। और आपका उदाहरण अच्छी तरह से दिखाता है कि बूटस्ट्रैप छोटे नमूनों के साथ बहुत खराब प्रदर्शन कर सकता है, भले ही चीजें "अच्छी" हों (यानी, डेटा वास्तव में सामान्य हैं)।
वोल्फगैंग

दरअसल, इस सिमुलेशन में देखी गई समस्या ठीक वैसी ही है जैसा मैंने अभी यहां पूछा था और @whuber : ysts.stackexchange.com/questions/323455/… द्वारा टिप्पणियों में उत्तर दिया । इसलिए, मुझे नहीं लगता कि समस्या नमूना आकार है, लेकिन प्रत्येक नमूने के भीतर पैरामीट्रिक निष्कर्ष के लिए स्वतंत्रता का उल्लंघन है।
आधा

2
प्रतिशततापूर्ण विश्वास अंतराल पर आपकी टिप्पणी बजाय का उपयोग करने के बराबर है, यहाँ से रिकॉर्ड के लिए है। zt
डेयॉन्ग लिम

14

यदि आपको छोटे नमूने के आकार के साथ प्रदान किया जाता है (एक किनारे के रूप में, "छोटा" जो प्रत्येक शोध क्षेत्र में कुछ अंतर्निहित प्रथागत नियम पर निर्भर करता है) लगता है, कोई बूटस्ट्रैप जादू नहीं करेगा। एक डेटाबेस की मानें तो जांच के तहत दो चर में से प्रत्येक के लिए तीन अवलोकन शामिल हैं, कोई भी अनुमान समझ में नहीं आएगा। मेरे अनुभव में, गैर-पैरामीट्रिक बूटस्ट्रैप (1,000 या 10,000 प्रतिकृति) टी-टेस्ट को बदलने में अच्छी तरह से काम करता है जब नमूना वितरण (कम से कम 10-15 अवलोकन प्रत्येक) तिरछा होता है और इसलिए सामान्य टी-टेस्ट के लिए आवश्यक शर्तें संतुष्ट नहीं होती हैं। इसके अलावा, टिप्पणियों की संख्या की परवाह किए बिना, गैर-पैरामीट्रिक बूटस्ट्रैप एक अनिवार्य विकल्प हो सकता है जब डेटा को सकारात्मक रूप से तिरछा किया जाता है, क्योंकि यह हमेशा स्वास्थ्य देखभाल की लागत के लिए होता है।


1
बूटस्ट्रैप एक अनिवार्य विकल्प हो सकता है जब डेटा को सकारात्मक रूप से तिरछा किया जाता है - इसके बजाय लॉगनॉर्मल या समान तिरछा वितरण का उपयोग क्यों नहीं किया जाता है? SAS और R के पास बहुत सारे विकल्प हैं।
जेम्स

1
जेम्स के जवाब पर विचार करने लायक है। हालाँकि, लॉगिंग कॉस्ट डेटा के साथ जो सामान्य समस्या है, मैं निर्णय लेने वालों के लिए परिणाम पेश करने से पहले मूल मीट्रिक का बैक-परिवर्तन है। आप गैर-पैरामीट्रिक बूटस्ट्रैप के साथ इस समस्या से बच सकते हैं।
कार्लो लाजारो

कार्लो, जब से आपको लॉग ट्रांसफ़ॉर्मेशन का अनुभव है, आप मेरे एक और सवाल का जवाब देना चाह सकते हैं (50 अंक का इनाम है): आंकड़े.stackexchange.com/a/111932/54099
James

जेम्स, मैंने कुछ मिनट पहले आपके प्रश्न का एक आकर्षक उत्तर दिया है।
कार्लो लेज़ारो

χ 2 1t -tests को तिरछी आबादी के लिए ठीक किया जा सकता है, jstor.org/stable/2286597 देखें - प्रस्तावित सुधारों में 10 टिप्पणियों के साथ 2_1 जैसी काफी तिरछी आबादी के साथ अच्छी तरह से काम किया गया है । χ12
StasK

13

अन्य उत्तर बूटस्ट्रैप विश्वास अंतराल के प्रदर्शन की आलोचना करते हैं , बूटस्ट्रैप ही नहीं। यह एक अलग समस्या है।

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

यदि आप वास्तव में अपरंपरागत बूटस्ट्रैप का उपयोग करने के मुद्दों को खोजना चाहते हैं, तो यहां दो समस्याएं हैं:

(1) पुनर्स्मरण के साथ मुद्दे।

बूटस्ट्रैप के साथ समस्याओं में से एक, छोटे या बड़े नमूनों के लिए, फिर से शुरू करना कदम है। नमूना की संरचना (निर्भरता, लौकिक, ...) को बनाए रखते हुए इसे फिर से बनाना हमेशा संभव नहीं होता है। इसका एक उदाहरण एक सुपरपोज्ड प्रक्रिया है

मान लीजिए कि समय-समय पर होने वाली घटनाओं में से प्रत्येक में कई स्वतंत्र स्रोत हैं। किसी एक स्रोत पर क्रमिक घटनाओं के बीच के अंतराल को समान वितरण के साथ सभी स्वतंत्र यादृच्छिक चर मान लिया जाता है, ताकि प्रत्येक स्रोत एक परिचित प्रकार की नवीनीकरण प्रक्रिया का गठन करे। स्रोतों के आउटपुट एक पूल किए गए आउटपुट में संयुक्त होते हैं।

निर्भरता अज्ञात संरचना को बनाए रखते हुए आप कैसे फिर से तैयार होंगे ?

(2) संकीर्ण बूटस्ट्रैप नमूने और छोटे नमूनों के लिए बूटस्ट्रैप विश्वास अंतराल

छोटे नमूनों में प्रत्येक सबमप्लिमेंट के लिए न्यूनतम और अधिकतम अनुमानक एक संकीर्ण अंतराल को परिभाषित कर सकते हैं, फिर कुछ मॉडलों में किसी भी आत्मविश्वास अंतराल के दाएं और बाएं छोर बहुत संकीर्ण होंगे (जो प्रतिरूप है जिसे छोटा नमूना दिया गया है!)।

मान लीजिए कि , जहां दर है। प्रोफ़ाइल संभावना का उपयोग करके आप एक अनुमानित आत्मविश्वास अंतराल प्राप्त कर सकते हैं (95% अनुमानित आत्मविश्वास अंतराल 0.147-स्तरीय प्रोफ़ाइल संभावना अंतराल) निम्नानुसार है:λ > 0x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

यह विधि एक निरंतर वक्र पैदा करती है जहां से आप विश्वास अंतराल निकाल सकते हैं। का अधिकतम संभावना अनुमानक है । फिर से शुरू करने से, केवल तीन संभावित मूल्य हैं जो हम इस अनुमानक के लिए प्राप्त कर सकते हैं, जिसकी अधिकतम और न्यूनतम इसी बूटस्ट्रैप आत्मविश्वास अंतराल के लिए सीमा को परिभाषित करते हैं। यह बड़े बूटस्ट्रैप नमूनों के लिए भी अजीब लग सकता है (आप इस संख्या को बढ़ाकर अधिक लाभ नहीं उठाते हैं):λ = 2 / ( एक्स 1 + x 2 )λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

इस मामले में, करीब और हैं, बूटस्ट्रैप वितरण संकरा है, और परिणामस्वरूप आत्मविश्वास अंतराल (जो वास्तविक मूल्य से दूर स्थित हो सकता है) को संकरा करता है। यह उदाहरण, वास्तव में, @GregSnow द्वारा प्रस्तुत उदाहरण से संबंधित है, हालांकि उनका तर्क अधिक अनुभवजन्य था। मेरे द्वारा उल्लिखित सीमा का विस्तार सभी बूटस्ट्रैप विश्वास अंतरालों के खराब प्रदर्शन की व्याख्या करता है, जिसका विश्लेषण @Wolfgang ने किया है।x 2x1x2


6

बूटस्ट्रैप छोटे नमूने के आकार में अच्छी तरह से काम करता है ताकि परीक्षणों की शुद्धता सुनिश्चित हो सके (जैसे कि नाममात्र 0.05 महत्व स्तर परीक्षण के वास्तविक आकार के करीब है), हालांकि बूटस्ट्रैप जादुई रूप से आपको अतिरिक्त शक्ति प्रदान नहीं करता है । यदि आपके पास एक छोटा सा नमूना है, तो आपके पास बहुत कम शक्ति है, कहानी का अंत।

पैरामीट्रिक (रैखिक मॉडल) और सेमीप्रेमेट्रिक (जीईई) के प्रतिगमन में छोटे छोटे नमूने गुण होते हैं ... पूर्व पैरामीट्रिक मान्यताओं पर बड़ी निर्भरता के परिणामस्वरूप, बाद में छोटे नमूनों में मजबूत मानक त्रुटि अनुमानों के बढ़ जाने के कारण। बूटस्ट्रैपिंग (और अन्य पुनः परीक्षण आधारित परीक्षण) उन परिस्थितियों में वास्तव में अच्छा प्रदर्शन करता है।

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

बूटस्ट्रैपिंग कई बार आपको अनजाने में सही अर्थ लगाने की प्रक्रिया / हॉटडॉकिंग (जैसे फजी मिलान में) के परिणामस्वरूप कम शक्ति प्रदान करता है। बूटस्ट्रैपिंग को गलत तरीके से मिलान किए गए विश्लेषणों में अधिक शक्ति देने के लिए निर्दिष्ट किया गया है, जहां व्यक्तियों को पर्याप्त क्लस्टर आकार को पूरा करने के लिए फिर से तैयार किया गया था, बूट किए गए मिलान वाले डेटासेट को विश्लेषण डेटासेट की तुलना में अधिक साथ दिया गया था।n


2
(जैसे कि नाममात्र 0.05 महत्व स्तर परीक्षण के वास्तविक आकार के करीब है), - लेकिन आर कोड में हमने अभी देखा कि बूटस्ट्रैप परीक्षण आकार को संरक्षित नहीं करता है, है ना?
जेम्स

मैं देख रहा हूँ कि आप ग्रेग स्नो द्वारा दिए गए उत्तर का उल्लेख कर रहे हैं। मैं उस परिणाम से हैरान था। मुझे अपने तथ्यों को याद रखना होगा और अपने उत्तर को संपादित करना होगा। धन्यवाद।
आदमियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.