Sử dụng bộ lọc Kalman để áp đặt các giá trị bị thiếu trong chuỗi thời gian


11

Tôi quan tâm đến cách Bộ lọc Kalman có thể được sử dụng để tính các giá trị bị thiếu trong Dữ liệu chuỗi thời gian. Có phải nó cũng được áp dụng nếu một số điểm thời gian liên tiếp bị mất? Tôi không thể tìm thấy nhiều về chủ đề này. Bất kỳ giải thích, ý kiến ​​và liên kết đều được chào đón và đánh giá cao!


Bạn có thể quan tâm đến bài viết này . Nó đưa ra một ví dụ dựa trên biểu diễn không gian trạng thái của mô hình ARIMA để áp đặt các giá trị bị thiếu bằng bộ lọc Kalman.
javlacalle

@javlacalle cảm ơn, tôi đã biết bài này và nó là một ví dụ tuyệt vời cho việc thực hiện cụ thể. Nhưng tôi khá quan tâm đến nền tảng lý thuyết.
GS9

Câu trả lời:


8

Sơ bộ: Lọc Kalman :

Các bộ lọc Kalman hoạt động trên các mô hình không gian trạng thái của biểu mẫu (có một số cách để viết nó; đây là một cách dễ dàng dựa trên Durbin và Koopman (2012) ; tất cả những điều sau đây đều dựa trên cuốn sách đó, rất tuyệt vời):

yt=Zαt+εtεtN(0,H)αt1=Tαt+ηtηtN(0,Q)α1N(a1,P1)

trong đó là chuỗi được quan sát (có thể có các giá trị bị thiếu) nhưng hoàn toàn không quan sát được. Phương trình đầu tiên (phương trình "đo lường") nói rằng dữ liệu quan sát được liên quan đến các trạng thái không quan sát theo một cách cụ thể. Phương trình thứ hai (phương trình "chuyển tiếp") nói rằng các trạng thái không quan sát được phát triển theo thời gian theo một cách cụ thể.ytαt

Bộ lọc Kalman hoạt động để tìm các ước tính tối ưu của ( được giả sử là Bình thường: , do đó, bộ lọc Kalman thực sự làm gì để tính giá trị trung bình và phương sai của phân phối cho điều kiện quan sát đến thời điểm ).αtαtαtN(at,Pt)αtt

Trong trường hợp điển hình (khi có sẵn các quan sát), bộ lọc Kalman sử dụng ước tính trạng thái hiện tại và quan sát hiện tại để làm tốt nhất có thể để ước tính trạng thái tiếp theo , như sau:ytαt+1

at+1=Tat+Kt(ytZαt)Pt+1=TPt(TKtZ)+Q

Trong đó là "Kalman gain".Kt

Khi không có quan sát, bộ lọc Kalman vẫn muốn tính và theo cách tốt nhất có thể. Vì không có sẵn, nó không thể sử dụng phương trình đo, nhưng nó vẫn có thể sử dụng phương trình chuyển tiếp . Do đó, khi bị thiếu, bộ lọc Kalman thay vào đó sẽ tính toán:at+1Pt+1ytyt

at+1=TatPt+1=TPtT+Q

Về cơ bản, nó nói rằng đã cho , dự đoán tốt nhất của tôi về mà không có dữ liệu chỉ là sự tiến hóa được chỉ định trong phương trình chuyển đổi. Điều này có thể được thực hiện cho bất kỳ số lượng khoảng thời gian với dữ liệu bị thiếu.α t + 1αtαt+1

Nếu có dữ liệu , sau đó tập đầu tiên của phương trình lọc lấy đoán tốt nhất không có dữ liệu, và thêm một "chỉnh" trong, dựa trên dự đoán trước đây là như thế nào tốt.yt


Nhập dữ liệu :

Khi bộ lọc Kalman đã được áp dụng cho toàn bộ phạm vi thời gian, bạn có ước tính tối ưu của các bang cho . Nhập dữ liệu sau đó đơn giản thông qua các phương trình đo. Cụ thể, bạn chỉ cần tính toán: t = 1 , 2 , ... , Tat,Ptt=1,2,,T

y^t=Zat

Về phần tham khảo, Durbin và Koopman (2012) là tuyệt vời; phần 4.10 thảo luận về các quan sát còn thiếu.

  • Durbin, J., & Koopman, SJ (2012). Phân tích chuỗi thời gian bằng phương pháp không gian trạng thái (số 38). Nhà xuất bản Đại học Oxford.

Sử dụng giải pháp mượt mà sẽ có ý nghĩa hơn cho việc đưa ra (vì một dữ liệu đã có tất cả dữ liệu (không bị thiếu), tại sao không sử dụng thông tin trong các giá trị trong tương lai)
Juho Kokkala

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.