बूटस्ट्रैपिंग अवशिष्ट: क्या मैं इसे सही कर रहा हूं?


10

सबसे पहले: मैंने जो समझा, उसमें से बूटस्ट्रैपिंग अवशिष्ट काम करता है:

  1. फिट मॉडल डेटा के लिए
  2. अवशिष्टों की गणना करें
  3. अवशिष्टों को फिर से भरें और उन्हें 1 में जोड़ें।
  4. 3 से नए डाटासेट के लिए फिट मॉडल।
  5. बार- nबार दोहराएं , लेकिन 1 से फिट किए गए रेजिड्यूलेटेड अवशेषों को हमेशा जोड़ दें।

क्या यह अब तक सही है?


मैं जो करना चाहता हूं वह कुछ अलग है:

मैं एक एल्गोरिथ्म के लिए पैरामीटर और भविष्यवाणी अनिश्चितता का अनुमान लगाना चाहता हूं जो कुछ पर्यावरण चर का अनुमान लगाता है।

मेरे पास उस चर की एक त्रुटि-मुक्त समय-श्रृंखला (एक अनुकार से) है x_true, जिसमें x_noiseएक सिंथेटिक डेटा जनरेट करने के लिए मैं कुछ शोर जोड़ता हूं x। मैं तो वर्गों का योग के साथ अपने एल्गोरिथ्म फिटिंग द्वारा इष्टतम मानकों खोजने की कोशिश sum((x_estimate - x_true)^2)(! नहीं x_estimate - x!) एक उद्देश्य समारोह के रूप में। यह देखने के लिए कि मेरा एल्गोरिथ्म कैसे प्रदर्शन करता है और मेरे मापदंडों के वितरण के नमूने बनाने के लिए, मैं फिर से x_noiseजोड़ना चाहता हूं , इसे जोड़ना x_true, अपने मॉडल को फिर से फिट करना, कुल्ला करना और दोहराना। क्या पैरामीटर अनिश्चितता का आकलन करने के लिए एक वैध दृष्टिकोण है? क्या मैं बूटस्ट्रैप किए गए डेटासेट के लिए पूर्वानुमान अनिश्चितता के रूप में फिट बैठता हूं, या क्या मुझे ऊपर बताई गई प्रक्रिया का पालन करना होगा?

/ संपादित करें: मुझे लगता है कि मैंने वास्तव में स्पष्ट नहीं किया है कि मेरा मॉडल क्या करता है। इसे अनिवार्य रूप से डी-नॉइज़िंग पद्धति की तरह समझें। यह एक पूर्वानुमान मॉडल नहीं है, यह एक एल्गोरिथ्म है जो पर्यावरणीय डेटा के शोर समय-श्रृंखला के अंतर्निहित संकेत को निकालने की कोशिश करता है।

/ संपादित ^ 2: MATLAB- उपयोगकर्ताओं के लिए वहाँ से बाहर, मैंने कुछ त्वरित और गंदे रेखीय प्रतिगमन उदाहरण लिखा है जिसका मेरा मतलब है।

यह मेरा मानना ​​है कि अवशिष्ट के "साधारण" बूटस्ट्रैपिंग है (कृपया मुझे गलत होने पर सही करें): http://pastebin.com/C0CJp3d1

यह वही है जो मैं करना चाहता हूं: http://pastebin.com/mbapsz4c


यह स्पष्ट हो जाएगा यदि आप उस कोड को दिखाते हैं जो आपने अभी तक किया है।
मेट्रिक्स

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

यहाँ कुछ बहुत बुरा MATLAB- शैली छद्म कोड है, शायद यह समझने में मदद करता है कि मैं क्या करना चाहता हूं: pastebin.com/yTRahzr5
Fred S

क्षमा करें, फ्रेड, मुझे मतलबी नहीं पता। कृपया उपयोगकर्ताओं से इनपुट प्राप्त करने के लिए मतलब के रूप में टैग करें।
मेट्रिक्स

2
ओह, मेरा प्रश्न वास्तव में MATLAB तक ही सीमित नहीं है (और यह वास्तव में MATLAB कोड नहीं है, यह सिर्फ कुछ छद्म कोड है, जो किसी भी तरह से काम नहीं करेंगे और टिप्पणियों के लिए MATLABs सिंटैक्स पर आधारित है)। लेकिन मैं इसे केवल मामले में टैग कर सकता हूं।
फ्रेड एस

जवाबों:


8

यहां सामान्य (अर्ध-पैरामीट्रिक-बूटस्ट्रैप) एल्गोरिथ्म अधिक विवरण में है:

बी = बूटस्ट्रैप की संख्या

आदर्श:
y=एक्सβ+ε

चलो ε^ अवशिष्ट हो

  1. प्रतिगमन चलाएँ और अनुमानक प्राप्त करें β^ और अवशिष्ट ε^
  2. प्रतिस्थापन के साथ अवशेषों को फिर से भरें और बूटस्ट्रैप किए गए अवशिष्ट वेक्टर प्राप्त करें ε^बी
  3. मूल रजिस्टरों के साथ (1) से अनुमानक (ओं) को गुणा करके बूटस्ट्रैप किए गए आश्रित चर को प्राप्त करें और बूटस्ट्रैप किए गए अवशिष्ट को जोड़कर: yबी=एक्सβ^+ε^बी
  4. बूटस्ट्रैप्ड आश्रित चर और मूल रजिस्टरों के साथ प्रतिगमन को रन करें, इससे बूटस्ट्रैप्ड अनुमानक, अर्थात बल देता है yबी पर एक्स, यह देता है β^बी
  5. प्रक्रिया को दोहराएं बी(2) पर वापस जा रहे हैं।

1

मुझे यकीन नहीं है कि मेरी समझ सही है। लेकिन यहाँ मेरा सुझाव है कि आप अपने कोड को संशोधित करें ("अवशेषों के साधारण बूटस्ट्रैपिंग", पंक्तियों को 28-34) में:

for i = 2:n_boot  
x_res_boot = x_residuals( randi(n_data,n_data,1) );  
x_boot = x_res_boot+ x_best_fit;  
p_est(:, i) = polyfit( t, x_boot, 1 );  
x_best_fit2 = polyval( p_est(:, i), t );  
x_residuals = x_best_fit2 - x_boot;
x_best_fit=x_best_fit2;
end  

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

यह संशोधित संस्करण है जिसे MATLAB में जांचा गया है। दो त्रुटियां तय की गई हैं।


ओह, यह मेरे लिए अच्छा था। bsxfun कुछ जटिल है; यहां एक नया संस्करण है जो आपके विचार का उपयोग करता है और थोड़ा स्पष्ट होना चाहिए। हालाँकि, यह कुछ अजीब परिणाम पैदा करता है। यह हमेशा पहले सर्वश्रेष्ठ फिट के अवशेषों को फिर से जोड़ने और उन्हें (मेरे प्रारंभिक विचार) में जोड़ने का परिणाम है, और यह तब होता है जब मैं प्रत्येक पुनरावृत्ति के अवशेषों को फिर से जोड़ता हूं और उन्हें प्रत्येक नए सर्वश्रेष्ठ फिट में जोड़ता हूं। कोई विचार?
फ्रेड एस

वूप्स, लाइन 25 में छोटी सी गलती (p_est (:, i) के बजाय p_est (:, 1)) होनी चाहिए, लेकिन तब भी जब मैं यह तय करता हूं कि पैरामीटर वितरण अभी भी दिख रहा है: क्लिक करें
फ्रेड S

1
जवाब तय है और MATLAB में जाँच की है। अब यह ठीक है।
O_Devinyak

1
हर फिट के लिए नए अवशिष्ट - यह अवशिष्ट बूटस्ट्रैप की मेरी पहली समझ थी। लेकिन मुझे यह स्वीकार करना चाहिए कि विभिन्न स्रोत उस उद्देश्य के लिए मूल डेटा के लिए फिट के अवशेषों का उपयोग कर रहे हैं। यहाँ बूटस्ट्रैप ( econ.pdx.edu/facademy/KPL/readings/mackinnon06.pdf ) पर अच्छा ट्यूटोरियल है । लगता है कि मेरा दृष्टिकोण गलत है जबकि आपका कार्यान्वयन सही है। क्या मुझे दिया गया उत्तर हटाना चाहिए?
O_Devinyak

1
अनुवर्ती कार्रवाई के लिए धन्यवाद। IMHO, एक ही प्रश्न के साथ अन्य उपयोगकर्ताओं के लिए उत्तर छोड़ दें। मैंने पाया कि साहित्य (कम से कम जो मुझे उपलब्ध है) उस विषय पर हमेशा स्पष्ट नहीं होता है और यह काफी भ्रामक हो सकता है।
फ्रेड एस

1

यह देखने के लिए कि कोई एल्गोरिदम पूर्वानुमान संबंधी सटीकता / माध्य चुकता त्रुटि के संदर्भ में कैसा प्रदर्शन करता है, आपको संभवतः Efron-Gong "आशावाद" बूटस्ट्रैप की आवश्यकता है। यह आर rmsपैकेज में आसान उपयोग के लिए लागू किया गया है। अपने कार्यों देखें ols, validate.ols, calibrate

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.