Cách sử dụng DLM với bộ lọc Kalman để dự báo


19

Ai đó có thể hướng dẫn tôi qua một ví dụ về cách sử dụng bộ lọc DLM Kalman trong R trên chuỗi thời gian. Nói rằng tôi có các giá trị này (giá trị hàng quý với tính thời vụ hàng năm); Làm thế nào bạn sẽ sử dụng DLM để dự đoán các giá trị tiếp theo? Và BTW, tôi có đủ dữ liệu lịch sử (mức tối thiểu) không?

89  2009Q1  
82  2009Q2  
89  2009Q3  
131 2009Q4  
97  2010Q1  
94  2010Q2  
101 2010Q3  
151 2010Q4  
100 2011Q1  
?   2011Q2

Tôi đang tìm kiếm một loại câu trả lời từng bước theo kiểu sách nấu ăn mã R. Độ chính xác của dự đoán không phải là mục tiêu chính của tôi, tôi chỉ muốn tìm hiểu chuỗi mã cung cấp cho tôi một số cho 2011Q2, ngay cả khi tôi không có đủ dữ liệu.


3
Điều này có thể nhận được câu trả lời tốt hơn trên stats.stackexchange.com
Joshua Ulrich

Bump ... Tôi vẫn không thể hiểu làm thế nào để làm điều này. Bất kỳ người tham gia trả lời bài gốc?
datayoda

2
Với DLM, nó không phải là kiểu sách nấu ăn như bạn muốn. Tôi sẽ lấy câu trả lời của RockScience (họa tiết DLM) và đi qua nó. DLM giống như thiết kế một chương trình hơn các kỹ thuật khác chỉ cần cắm vào một số dữ liệu và điều chỉnh một số tham số. Cuối cùng, bạn đang thiết kế một tập hợp các mảng thực hiện một cái gì đó giống như Mô hình Markov ẩn và dlmgói làm cho việc này trở nên dễ dàng nhất có thể.
Wayne

Bạn đã có giải pháp cho vấn đề của bạn? Tôi đang tìm kiếm một giải pháp cho loại vấn đề thời gian tương tự nhưng không thể tìm ra giải pháp.

Bạn đã từng làm việc qua bài báo được đề xuất bởi @RockScience chưa? Bạn đã xem dlmgói chưa? Như tôi đã nói trong câu trả lời của mình, các DLM giống như tạo một chương trình hơn là cắm một số biến vào một lệnh gọi hàm. datayoda không bao giờ chấp nhận một câu trả lời, vì vậy tôi không chắc rằng họ đã vượt qua sự quan sát này.
Wayne

Câu trả lời:



16

DLM rất tuyệt, nhưng chúng không đơn giản như ARIMA hoặc các phương pháp khác. Trong các phương pháp khác, bạn cắm dữ liệu của mình và sau đó điều chỉnh một số tham số của thuật toán, có thể tham khảo các chẩn đoán khác nhau để hướng dẫn cài đặt của bạn.

Với DLM, bạn đang tạo một cỗ máy không gian trạng thái, bao gồm một số ma trận về cơ bản thực hiện một cái gì đó giống như Mô hình Markov ẩn. Một số gói ( sspirtôi nghĩ, trong số những gói khác) mong rằng bạn hiểu khái niệm và ma trận làm gì. Tôi thực sự khuyên bạn nên bắt đầu với dlmgói và như @RockScience khuyên bạn, hãy xem qua các họa tiết.

Với dlmbạn sẽ cơ bản mất vài bước sau:

  1. Những loại thành phần mô tả loạt của tôi? Một xu hướng? Tính thời vụ? Biến ngoại sinh? Bạn sẽ sử dụng dlmcác công cụ như dlmModPolyđể thực hiện các thành phần này, sử dụng +toán tử để nối chúng lại với nhau thành một mô hình.

  2. Tạo một chương trình con R có mô hình tuy nhiên cần nhiều tham số, tạo các thành phần với các tham số đó, sau đó thêm chúng lại với nhau và trả về mô hình kết quả.

  3. Sử dụng dlmMLEđể thực hiện tìm kiếm / tối ưu hóa để tìm các tham số thích hợp (sử dụng MLE, về cơ bản là tối ưu hóa, với những cạm bẫy có thể xảy ra trong tối ưu hóa). dlmMLEliên tục gọi chương trình con R của bạn với các tham số ứng cử viên để tạo mô hình, sau đó kiểm tra chúng.

  4. Tạo mô hình cuối cùng của bạn, sử dụng chương trình con R bạn đã tạo cộng với các tham số bạn tìm thấy trong bước 3.

  5. Lọc dữ liệu của bạn với dlmFilter, sau đó có lẽ trơn tru với dlmSmooth.

  6. Nếu bạn sử dụng dlmModReghoặc làm bất cứ điều gì khiến mô hình có các tham số biến đổi theo thời gian, bạn không thể sử dụng dlmForecastđể dự báo chuỗi của mình. Nếu bạn kết thúc với một mô hình biến thể theo thời gian, bạn sẽ muốn điền dữ liệu đầu vào của mình bằng NA và để dlmFilterđiền vào NA cho bạn (dự báo của một người nghèo), vì dlmForecastkhông hoạt động với các thông số thay đổi theo thời gian.

  7. Nếu bạn muốn kiểm tra các thành phần riêng lẻ (giả sử xu hướng, tách biệt với thời vụ), bạn sẽ cần hiểu ma trận và những gì trong mỗi cột, cộng với hiểu một chút về cách dlmđặt chúng lại với nhau (vấn đề đặt hàng!).

Có một gói khác, tên của nó thoát khỏi tôi, cố gắng tạo một giao diện người dùng có thể sử dụng một vài trong số các gói này (bao gồm cả dlmmặt sau). Thật không may, tôi chưa bao giờ làm cho nó hoạt động tốt, nhưng đó có thể chỉ là tôi.

Tôi thực sự khuyên bạn nên lấy một cuốn sách về DLM. Tôi có một vài người trong số họ và chơi rất nhiều dlmđể đến nơi tôi đang ở, và tôi không phải là chuyên gia.


Cảm ơn Wayne, tôi nghĩ rằng trường hợp của tôi khá đơn giản theo cách mà tôi đã không phát hiện ra bất kỳ xu hướng rõ ràng hoặc tính thời vụ nào trong việc kiểm tra trực quan. (Tuy nhiên, nếu bạn biết về bất kỳ thử nghiệm nào trong R, vui lòng cho tôi biết, tôi sẽ cố gắng chạy chúng). Vấn đề của tôi là tôi không biết cách điền vào các đối số như (FF, V, GG, W, m0, C0, dV, v.v.) trong các hàm dlm cho dữ liệu của tôi? Đây là vấn đề chính đối với tôi. Nếu tôi có dữ liệu chuỗi bivariate (y = X1 + X2), vd (price = cầu + cung cấp), thì làm cách nào tôi có thể tính toán các đối số này cho dữ liệu của mình? FF, V, GG, W, m0, C0, dV, v.v ... được yêu cầu trong các chức năng
dlm

1
@nclfinance Vui lòng đọc FAQ và đừng coi nơi này là diễn đàn.

@nclfinance: Làm việc thông qua dlmhọa tiết của gói. Bạn sẽ học những gì bạn cần biết. Đó là lý do tại sao tôi khuyên bạn dlm, vì bạn không tự tạo FF, v.v.
Wayne

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.