Ước tính tham số logLikabilities cho bộ lọc Kalman Gaussian tuyến tính


13

Tôi đã viết một số mã có thể thực hiện lọc Kalman (sử dụng một số bộ lọc loại Kalman khác nhau [Bộ lọc thông tin và cộng sự]) cho Phân tích không gian trạng thái tuyến tính Gaussian cho vectơ trạng thái n chiều. Các bộ lọc hoạt động tuyệt vời và tôi đang nhận được một số đầu ra tốt đẹp. Tuy nhiên, ước tính tham số thông qua ước tính loglikabilities làm tôi bối rối. Tôi không phải là một nhà thống kê mà là một nhà vật lý, vì vậy hãy tử tế.

Chúng ta hãy xem xét mô hình không gian trạng thái Gaussian tuyến tính

yt=Ztαt+ϵt,
αt+1= =Ttαt+Rtηt,

trong đó là vectơ quan sát của chúng ta, vectơ trạng thái của chúng ta tại bước thời gian . Các đại lượng in đậm là các ma trận biến đổi của mô hình không gian trạng thái được đặt theo các đặc tính của hệ thống đang được xem xét. Chúng tôi cũng cóytαtt

η tN I D ( 0 , Q t ) , α 1N I D ( a 1 , P 1 ) .

εt~NTôiD(0,Ht),
ηt~NTôiD(0,Qt),
α1NID(a1,P1).

trong đó . Bây giờ, tôi đã bắt nguồn và triển khai đệ quy cho Bộ lọc Kalman cho mô hình không gian trạng thái chung này bằng cách đoán các tham số ban đầu và ma trận phương sai và Tôi có thể tạo ra các ô giốngH 1 Q 1t=1,,nH1Q1

Bộ lọc Kalman

trong đó các điểm là mực nước sông Nile trong hơn 100 năm qua, dòng là trạng thái Ước tính Kalamn và các đường đứt nét là mức tin cậy 90%.

Bây giờ, đối với dữ liệu 1D này, đặt các ma trận và chỉ là vô hướng và . Vì vậy, bây giờ tôi muốn lấy các tham số chính xác cho các vô hướng này bằng cách sử dụng đầu ra từ Bộ lọc Kalman và hàm loglikabilitiesQ t σ ε σ ηHtQtσϵση

logL(Yn)=np2log(2π)12t=1n(log|Ft|+vtTFt1vt)

Trong đó là lỗi trạng thái và là phương sai lỗi trạng thái. Bây giờ, đây là nơi tôi đang bối rối. Từ bộ lọc Kalman, tôi có tất cả thông tin tôi cần để tìm ra , nhưng điều này dường như giúp tôi không thể tính được khả năng tối đa của và . Câu hỏi của tôi là làm thế nào tôi có thể tính toán khả năng tối đa của bằng cách sử dụng phương pháp loglikabilities và phương trình trên? Một sự cố thuật toán sẽ giống như một cốc bia lạnh đối với tôi ngay bây giờ ...vtFtLσϵσησϵση

Cảm ơn vì đã dành thời gian cho tôi.


Ghi chú. Đối với trường hợp 1D và . Đây là mô hình cấp địa phương đơn biến. H t = σ 2 ηHt=σϵ2Ht=ση2

Câu trả lời:


11

Khi bạn chạy các bộ lọc Kalman như bạn có, với các giá trị nhất định của σ 2 η , bạn nhận được một chuỗi các sáng kiến ν t và hiệp phương sai của họ F t , do đó bạn có thể tính toán giá trị của log L ( Y n ) sử dụng công thức bạn đưa ra.σϵ2ση2νtFtlogL(Yn)

Nói cách khác, bạn có thể xem các bộ lọc Kalman như một cách để tính toán một chức năng tiềm ẩn của σ 2 η . Điều duy nhất mà bạn cần phải làm sau đó là gói tính này thành một chức năng hoặc chương trình con và xử lý các chức năng để tối ưu hóa một thói quen --like trong R. Đó chức năng nên chấp nhận như đầu vào σ 2 εσ 2 η và trở lại log L ( Y n ) .σϵ2ση2optimσϵ2ση2logL(Yn)

Một số gói trong R (ví dụ dlm) làm điều này cho bạn (xem chức năng ví dụ dlmMLE).


Cảm ơn vì đã trả lời. Tôi đánh giá cao mà tôi dường như có tất cả các thành phần cần thiết để tính toán loglikelihood một cách rõ ràng, tuy nhiên tất cả các tài liệu tham khảo tôi có vẻ gợi ý rằng tôi sử dụng σ η là ẩn số trong hàm loglikelihood và tối đa hóa này sử dụng một phương pháp Newton-type? Đây là những gì làm tôi bối rối; "loglikabilities được tối đa hóa bằng số đối với vectơ trạng thái chưa biết" - làm thế nào? σϵση
MoonKnight

Các tính toán về khả năng không phải là rõ ràng, trong đó σ η không xuất hiện một cách rõ ràng trong sự biểu hiện của log L ( Y n ) . Thay vào đó, họ ảnh hưởng đến khả năng thông qua ν tF t . Vì vậy, bạn cần phải chạy lọc Kalman để tính toán log L ( Y n ) cho mỗi cặp giá trị của σ εσ η . Khi bạn mã hóa dưới dạng hàm, bạn xử lý hàm đó đến hàm tối đa hóa kiểu Newton (hoặc bất kỳ mục đích chung) nào và đó là hàm đó.σϵσηlogL(Yn)νtFtlogL(Yn)σϵση
F. Tusell

1
Tôi tình cờ có mã chi tiết (bằng R) chỉ ra cách thực hiện chính xác cho dữ liệu Nile. Tôi sử dụng nó như một minh họa cho các sinh viên của tôi. Thật không may, nó bằng tiếng Tây Ban Nha, nhưng tôi hy vọng mã này khá rõ ràng (và tôi có thể dịch các bình luận nếu không). Bạn có thể lấy ví dụ này từ et.bs.ehu.es/~etptupaf/N4.html .
F. Tusell

Điều này là rất hữu ích. Cảm ơn rất nhiều vì thời gian của bạn. Nhận xét của bạn đã giúp rất nhiều! Đôi khi rất khó để "nhìn thấy gỗ cho cây" và có một cái gì đó đơn giản được giải thích rõ ràng là tất cả những gì cần thiết ... Cảm ơn một lần nữa.
MoonKnight

Tôi cũng muốn hỏi liệu tôi có thể xem trang mà bạn trải qua đệ quy làm mịn trạng thái không. Làm mịn của bạn trông tốt hơn của tôi và tôi không chắc tại sao!? Tôi đã cố gắng tìm nó từ trang web của bạn nhưng tôi không thể tìm thấy trang bắt buộc ...
MoonKnight
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.