Bootstrapping residencies: ฉันทำถูกไหม?


10

ก่อนอื่น: จากสิ่งที่ฉันเข้าใจส่วนที่เหลือในการบูตสแตรปทำงานได้ดังนี้:

  1. ปรับโมเดลให้เหมาะสมกับข้อมูล
  2. คำนวณส่วนที่เหลือ
  3. ลองสุ่มดูส่วนที่เหลือแล้วเพิ่มลงใน 1
  4. ปรับโมเดลให้เหมาะกับชุดข้อมูลใหม่จาก 3
  5. ทำซ้ำnครั้ง แต่เพิ่มส่วนที่เหลือที่ถูก resampled ให้พอดีจาก 1 เสมอ

ถูกต้องจนถึงตอนนี้หรือไม่


สิ่งที่ฉันต้องการจะทำคือสิ่งที่แตกต่างออกไปเล็กน้อย:

ฉันต้องการประมาณค่าพารามิเตอร์และการทำนายความไม่แน่นอนสำหรับอัลกอริทึมที่ประมาณค่าตัวแปรสภาพแวดล้อม

สิ่งที่ผมมีคือปราศจากข้อผิดพลาดอนุกรมเวลา (จากการจำลอง) ของตัวแปรที่x_trueซึ่งฉันจะเพิ่มเสียงบางอย่างในการสั่งซื้อเพื่อสร้างชุดข้อมูลที่สังเคราะห์x_noise xจากนั้นฉันพยายามค้นหาพารามิเตอร์ที่เหมาะสมโดยปรับอัลกอริธึมของฉันด้วยผลรวมของกำลังสองsum((x_estimate - x_true)^2)(! ไม่x_estimate - x!) เป็นฟังก์ชันวัตถุประสงค์ เพื่อที่จะดูว่าอัลกอริทึมของฉันทำงานอย่างไรและเพื่อสร้างตัวอย่างของการแจกแจงพารามิเตอร์ของฉันฉันต้องการที่จะ resample x_noiseเพิ่มให้x_trueพอดีกับแบบจำลองของฉันอีกครั้งล้างและทำซ้ำ นั่นเป็นวิธีที่ถูกต้องในการประเมินความไม่แน่นอนของพารามิเตอร์หรือไม่ ฉันสามารถแปลความพอดีกับชุดข้อมูล bootstrapped ว่าเป็นความไม่แน่นอนในการทำนายหรือฉันต้องทำตามขั้นตอนที่ฉันโพสต์ไว้ด้านบนหรือไม่

/ แก้ไข: ฉันคิดว่าฉันยังไม่ได้ทำให้ชัดเจนว่าแบบจำลองของฉันทำอะไร คิดว่ามันเป็นสิ่งที่ต้องการวิธีลดเสียง มันไม่ใช่รูปแบบการทำนายมันเป็นอัลกอริทึมที่พยายามดึงสัญญาณต้นแบบของข้อมูลด้านสิ่งแวดล้อมที่มีเสียงดัง

/ edit ^ 2: สำหรับผู้ใช้ MATLAB ที่นั่นฉันได้เขียนตัวอย่างการถดถอยเชิงเส้นอย่างรวดเร็วและสกปรกของสิ่งที่ฉันหมายถึง

นี่คือสิ่งที่ฉันเชื่อว่าการบู๊ตแบบธรรมดา "(โปรดแก้ไขฉันหากฉันผิด): http://pastebin.com/C0CJp3d1

นี่คือสิ่งที่ฉันต้องการทำ: http://pastebin.com/mbapsz4c


จะชัดเจนขึ้นถ้าคุณแสดงรหัสที่คุณได้ทำไปแล้ว
วัด

จริงๆแล้วฉันไม่ได้เข้ารหัสอะไรเลยในแง่ของการบูตสแตรป รหัสสำหรับแบบจำลองของฉันค่อนข้างซับซ้อนฉันไม่ขอบคุณที่ช่วยได้ ตัวอย่างเช่นเราสามารถสันนิษฐานได้ว่าตัวแบบเป็นขั้นตอนการปรับให้เรียบเหมือนค่าเฉลี่ยเคลื่อนที่โดยมีหน้าต่างที่เคลื่อนไหวเป็นพารามิเตอร์แบบจำลองเท่านั้น ฉันมีชุดของการวัด (สังเคราะห์) เมื่อเวลาผ่านไปและเพิ่มข้อผิดพลาด (ไม่จำเป็นต้องเป็น homoskedastic และกระจายตามปกติ) ไปยังที่ ฉันต้องการประเมินหน้าต่างการเคลื่อนย้ายซึ่งใกล้เคียงกับ "จริง" พื้นฐานที่ฉันรู้และต้องการประเมินความไม่แน่นอนโดยทำการบูตข้อผิดพลาดสังเคราะห์ของฉัน มันช่วยได้ไหม
Fred S

นี่คือโค้ดหลอกแบบ MATLAB ที่แย่มากบางทีมันอาจช่วยให้เข้าใจว่าฉันต้องการทำอะไร: pastebin.com/yTRahzr5
Fred S

ขออภัย Fred ฉันไม่รู้จัก Matlab กรุณาติดแท็กเป็น Matlab เพื่อรับอินพุตจากผู้ใช้
วัด

2
โอ้คำถามของฉันไม่ได้ จำกัด อยู่ที่ MATLAB (และนั่นไม่ใช่รหัส MATLAB จริงๆมันเป็นเพียงรหัสหลอกที่ใช้ไวยากรณ์ของ MATLAB สำหรับการวนซ้ำและความคิดเห็นที่ไม่สามารถใช้งานได้) แต่ฉันสามารถติดแท็กได้ในกรณี
Fred S

คำตอบ:


8

นี่คืออัลกอริทึมทั่วไป (กึ่งพารามิเตอร์บูตบู๊ท) ในรายละเอียดเพิ่มเติม:

B = จำนวนของ bootstraps

นางแบบ:
y=xβ+ϵ

ปล่อย ϵ^ เป็นคนตกค้าง

  1. เรียกใช้การถดถอยและรับการประมาณค่า β^ และของเหลือ ϵ^.
  2. ลองสุ่มดูส่วนที่เหลือด้วยการเปลี่ยนและหาเวกเตอร์ส่วนที่เหลือที่บูตแล้ว ϵ^B.
  3. รับตัวแปรที่ขึ้นอยู่กับ bootstrapped โดยการคูณตัวประมาณจาก (1) กับ regressors ดั้งเดิมและเพิ่ม bootstrapped ที่เหลือ: yB=xβ^+ϵ^B.
  4. รันการถดถอยด้วยตัวแปรที่ขึ้นอยู่กับ bootstrapped และ regressors ดั้งเดิมซึ่งทำให้ตัวประมาณ bootstrapped เช่น regress yB บน xสิ่งนี้จะช่วยให้ β^B.
  5. ทำซ้ำขั้นตอน B- เวลาโดยกลับไปที่ (2)

1

ฉันไม่แน่ใจว่าความเข้าใจของฉันถูกต้อง แต่นี่คือคำแนะนำของฉันในการแก้ไขโค้ดของคุณ ("bootstrapping ปกติที่เหลือ", บรรทัด 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  

แนวคิดคือทุกครั้งที่คุณใช้ส่วนที่เหลือไม่ได้มาจากการเรียกใช้ครั้งแรก แต่จาก bootstrap พอดีก่อนหน้านี้ สำหรับฉันอื่น ๆ ทั้งหมดดูเหมือนจะถูกต้อง

นี่เป็นรุ่นที่ได้รับการแก้ไขซึ่งได้รับการตรวจสอบใน MATLAB แก้ไขข้อผิดพลาดสองข้อแล้ว


โอ้นั่นเป็นเรื่องใหม่สำหรับฉัน bsxfun ค่อนข้างซับซ้อน นี่คือเวอร์ชันใหม่ที่ใช้ความคิดของคุณและควรชัดเจนขึ้นเล็กน้อย อย่างไรก็ตามผลลัพธ์ที่ออกมาค่อนข้างแปลก นี่คือผลของการสุ่ม resametuals ของพอดีที่ดีที่สุดครั้งแรกและเพิ่มเข้าไปในเดิม (ความคิดเริ่มต้นของฉัน) และนี่คือสิ่งที่จะเกิดขึ้นถ้าฉันสุ่มตัวอย่างที่เหลือของการทำซ้ำแต่ละครั้งและเพิ่มลงในแบบที่เหมาะสมที่สุดแต่ละแบบ ความคิดใด ๆ
เฟร็ด S

อ๊ะเกิดข้อผิดพลาดเล็กน้อยในบรรทัดที่ 25 (ควรเป็น p_est (:, i) แทนที่จะเป็น p_est (:, 1)) แต่ถึงแม้เมื่อฉันแก้ไขว่าการแจกแจงพารามิเตอร์ยังคงดูไร้ค่า: คลิก
Fred S

1
คำตอบได้รับการแก้ไขและตรวจสอบใน MATLAB ตอนนี้มันไปได้ดี
O_Devinyak

1
สิ่งที่เหลืออยู่ใหม่สำหรับทุกความต้องการนั่นเป็นความเข้าใจครั้งแรกของฉันเกี่ยวกับ bootstrap ที่เหลืออยู่ แต่ฉันต้องยอมรับว่าแหล่งต่าง ๆ กำลังใช้ข้อมูลที่เหลืออยู่พอดีกับข้อมูลต้นฉบับเพื่อจุดประสงค์นั้น นี่คือการสอนที่ดีเกี่ยวกับ bootstrap ( econ.pdx.edu/faculty/KPL/readings/mackinnon06.pdf ) ดูเหมือนว่าวิธีการของฉันไม่ถูกต้องในขณะที่การใช้งานของคุณถูกต้อง ฉันควรลบคำตอบที่ได้รับหรือไม่
O_Devinyak

1
ขอบคุณสำหรับการติดตาม IMHO ออกจากคำตอบสำหรับผู้ใช้คนอื่นด้วยคำถามเดียวกัน ฉันพบว่าวรรณกรรม (อย่างน้อยก็มีให้ฉัน) ไม่ค่อยชัดเจนในเรื่องนั้นและอาจทำให้สับสน
Fred S

1

หากต้องการดูวิธีการทำงานของอัลกอริทึมในแง่ของความแม่นยำในการทำนาย / ข้อผิดพลาดกำลังสองคุณอาจต้องใช้ bootstrap "มองในแง่ดี" ของ Efron-Gong สิ่งนี้ถูกนำไปใช้เพื่อให้ง่ายต่อการใช้งานในrmsแพ็คเกจR ดูการทำงานของมันols, ,validate.olscalibrate

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.