Bootstrapping dư: Tôi đang làm đúng không?


10

Trước hết: Từ những gì tôi hiểu, phần dư bootstrapping hoạt động như sau:

  1. Phù hợp với mô hình dữ liệu
  2. Tính số dư
  3. Lấy mẫu lại phần dư và thêm chúng vào 1.
  4. Mô hình phù hợp với tập dữ liệu mới từ 3.
  5. Lặp lại nnhiều lần, nhưng luôn luôn thêm các phần dư được lấy mẫu lại cho phù hợp từ 1.

Điều đó có đúng không?


Những gì tôi muốn làm là một cái gì đó hơi khác nhau:

Tôi muốn ước tính độ không đảm bảo của tham số và dự đoán cho một thuật toán ước tính một số biến môi trường.

Những gì tôi có là một chuỗi thời gian không có lỗi (từ một mô phỏng) của biến đó x_true, mà tôi thêm một số nhiễu, x_noiseđể tạo ra một tập dữ liệu tổng hợp x. Sau đó, tôi cố gắng tìm các tham số tối ưu bằng cách khớp thuật toán của mình với tổng bình phương sum((x_estimate - x_true)^2)(! Không x_estimate - x!) Làm hàm mục tiêu. Để xem thuật toán của tôi hoạt động như thế nào và tạo các mẫu phân phối tham số của tôi, tôi muốn lấy mẫu lại x_noise, thêm nó vào x_true, khớp lại mô hình của tôi, rửa sạch và lặp lại. Đó có phải là một cách tiếp cận hợp lệ để đánh giá độ không đảm bảo của tham số? Tôi có thể diễn giải sự phù hợp với các bộ dữ liệu bootstrapping là sự không chắc chắn dự đoán hay tôi phải làm theo quy trình tôi đã đăng ở trên?

/ chỉnh sửa: Tôi nghĩ rằng tôi đã không thực sự làm rõ những gì mô hình của tôi làm. Hãy nghĩ về nó về cơ bản giống như một phương pháp khử nhiễu. Đây không phải là một mô hình dự đoán, đó là một thuật toán cố gắng trích xuất tín hiệu cơ bản của chuỗi dữ liệu môi trường ồn ào.

/ chỉnh sửa ^ 2: Đối với người dùng MATLAB ngoài kia, tôi đã viết ra một số ví dụ hồi quy tuyến tính nhanh và bẩn về ý tôi muốn nói.

Đây là những gì tôi tin rằng bootstrapping của phần dư là (vui lòng sửa cho tôi nếu tôi sai): http://pastebin.com/C0CJp3d1

Đây là những gì tôi muốn làm: http://pastebin.com/mbapsz4c


Sẽ rõ ràng hơn nếu bạn hiển thị mã mà bạn đã làm cho đến nay.
Số liệu

Tôi thực sự chưa mã hóa bất cứ điều gì cho đến nay về mặt bootstrapping. Mã cho mô hình của tôi khá phức tạp, tôi không cảm ơn điều đó sẽ giúp ích. Ví dụ, chúng ta có thể giả sử rằng mô hình là một quy trình làm mịn giống như trung bình di chuyển, với cửa sổ di chuyển là tham số mô hình duy nhất. Tôi có một loạt các phép đo (tổng hợp) theo thời gian và thêm một lỗi (không nhất thiết là homoskedastic và phân phối bình thường) vào đó. Sau đó, tôi muốn ước tính cửa sổ chuyển động gần nhất với "sự thật" cơ bản mà tôi biết và muốn đánh giá sự không chắc chắn bằng cách khởi động lỗi tổng hợp của tôi. cái đó có giúp ích không?
Fred S

Đây là một số mã giả kiểu MATLAB rất tệ, có thể nó giúp hiểu những gì tôi muốn làm: pastebin.com/yTRahzr5
Fred S

Xin lỗi Fred, tôi không biết Matlab. Vui lòng gắn thẻ là Matlab để nhận đầu vào từ người dùng.
Số liệu

2
Ồ, câu hỏi của tôi thực sự không giới hạn ở MATLAB (và đó không thực sự là mã MATLAB, đó chỉ là một số mã giả dựa trên cú pháp MATLAB cho các vòng lặp và nhận xét dù sao cũng không hoạt động). Nhưng tôi có thể gắn thẻ nó chỉ trong trường hợp.
Fred S

Câu trả lời:


8

Dưới đây là thuật toán chung (bán tham số-bootstrap) chi tiết hơn:

B = số lượng bootstraps

mô hình:
y= =xβ+ε

hãy để là phần dưε^

  1. Chạy hồi quy và lấy (các) công cụ ước tính và phần dư . εβ^ε^
  2. Lấy mẫu lại các phần dư bằng thay thế và thu được vectơ dư bootstrapping .ε^B
  3. Lấy biến phụ thuộc bootstrapping bằng cách nhân (các) công cụ ước tính từ (1) với các biến hồi quy ban đầu và thêm phần dư bootstrapping: .yB= =xβ^+ε^B
  4. Chạy hồi quy với các biến phụ thuộc bootstrapping và các biến hồi quy ban đầu, điều này mang lại cho công cụ ước tính bootstrapping, tức là hồi quy trên , điều này mang lại cho . x β ByBxβ^B
  5. Lặp lại quy trình -times bằng cách quay lại (2).B

1

Tôi không chắc rằng sự hiểu biết của tôi là chính xác. Nhưng đây là gợi ý của tôi để sửa đổi mã của bạn ("bootstrapping thông thường của phần dư", dòng 28-34) thành:

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  

Ý tưởng là mỗi lần bạn sử dụng phần dư không phải từ lần chạy đầu tiên, mà từ lần khởi động trước phù hợp. Đối với tôi, tất cả những thứ khác dường như là hợp lệ.

Đây là phiên bản sửa đổi đã được kiểm tra trong MATLAB. Hai lỗi đã được sửa.


Oh, đó là mới đối với tôi. bsxfun hơi phức tạp; đây là một phiên bản mới sử dụng ý tưởng của bạn và sẽ rõ ràng hơn một chút. Tuy nhiên, điều đó tạo ra một số kết quả kỳ lạ. Đây là kết quả của việc luôn lấy lại phần dư của phần phù hợp đầu tiên và thêm chúng vào cùng (ý tưởng ban đầu của tôi), và đây là điều sẽ xảy ra nếu tôi lấy lại phần dư của mỗi lần lặp và thêm chúng vào mỗi phần phù hợp mới nhất. Có ý kiến ​​gì không?
Fred S

Rất tiếc, lỗi nhỏ trong dòng 25 (nên là p_est (:, i) thay vì p_est (:, 1)), nhưng ngay cả khi tôi sửa lỗi, các phân phối tham số vẫn trông có vẻ khó hiểu: nhấp
Fred S

1
Câu trả lời là cố định và được kiểm tra trong MATLAB. Bây giờ nó đi tốt.
O_Devinyak

1
Dư lượng mới cho mọi sự phù hợp - đó là sự hiểu biết đầu tiên của tôi về bootstrap còn lại. Nhưng tôi phải thừa nhận rằng các nguồn khác nhau đang sử dụng số dư phù hợp với dữ liệu gốc cho mục đích đó. Đây là hướng dẫn tốt đẹp về bootstrap ( econ.pdx.edu/facemony/KPL/readings/mackinnon06.pdf ). Có vẻ như cách tiếp cận của tôi là sai trong khi thực hiện của bạn là đúng. Tôi có nên xóa câu trả lời?
O_Devinyak

1
Cảm ơn đã theo lên. IMHO, để lại câu trả lời cho những người dùng khác có cùng câu hỏi. Tôi thấy rằng tài liệu (ít nhất là những thứ có sẵn cho tôi) không phải lúc nào cũng rõ ràng về chủ đề đó và có thể khá khó hiểu.
Fred S

1

Để xem một thuật toán thực hiện như thế nào về độ chính xác dự đoán / lỗi bình phương trung bình, có lẽ bạn cần bootstrap "lạc quan" Efron-Gong. Điều này được thực hiện để dễ sử dụng trong rmsgói R. Xem chức năng của mình ols, validate.ols, calibrate.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.