Czy ktoś mógłby poprowadzić mnie przez przykład użycia filtrowania DLM Kalmana w R w szeregach czasowych. Powiedzmy, że mam te wartości (wartości kwartalne z roczną sezonowością); jak użyłbyś DLM do przewidywania kolejnych wartości? A tak przy okazji, czy mam wystarczającą ilość danych historycznych (co jest minimum)?
89 2009Q1
82 2009Q2
89 2009Q3
131 2009Q4
97 2010Q1
94 2010Q2
101 2010Q3
151 2010Q4
100 2011Q1
? 2011Q2
Poszukuję krok po kroku odpowiedzi typu książka kucharska w stylu R-code. Dokładność przewidywania nie jest moim głównym celem, chcę tylko nauczyć się sekwencji kodu, która daje mi liczbę na 2011Q2, nawet jeśli nie mam wystarczającej ilości danych.
r
time-series
forecasting
datayoda
źródło
źródło
dlm
pakiet sprawia, że jest to tak proste, jak to możliwe.dlm
paczkę? Jak powiedziałem w mojej odpowiedzi, DLM bardziej przypominają tworzenie programu niż podłączanie niektórych zmiennych do wywołania funkcji. datayoda nigdy nie przyjęła odpowiedzi, więc nie jestem pewien, czy przeszli przez tę obserwację.Odpowiedzi:
Artykuł na JSS 39-02 porównuje 5 różnych pakietów R filtrujących Kalmana i podaje przykładowy kod.
źródło
DLM są fajne, ale nie są tak proste jak, powiedzmy, ARIMA lub inne metody. W innych metodach podłączasz swoje dane, a następnie poprawiasz niektóre parametry algorytmu, być może odwołując się do różnych metod diagnostycznych, aby poprowadzić twoje ustawienia.
Za pomocą DLM tworzysz maszynę w przestrzeni stanów, która składa się z kilku macierzy, które w zasadzie implementują coś w rodzaju ukrytego modelu Markowa. Niektóre pakiety (
sspir
myślę między innymi) oczekują, że rozumiesz pojęcie i to, co robią macierze. Gorąco polecam zacząć oddlm
pakietu, a jak zaleca @RockScience, przejdź przez winietę.Ze
dlm
masz zamiar po prostu wykonać kilka kroków:Jakie elementy opisują moją serię? Trend? Sezonowość? Zmienne egzogeniczne? Użyjesz
dlm
narzędzi takich jakdlmModPoly
implementacja tych komponentów, używając+
operatora do połączenia ich w jeden model.Utwórz podprogram R, który pobiera jednak wiele parametrów wymaganych przez ten model, tworzy komponenty z tymi parametrami, a następnie dodaje je razem i zwraca model wynikowy.
Służy
dlmMLE
do wyszukiwania / optymalizacji w celu znalezienia odpowiednich parametrów (za pomocą MLE, która jest w zasadzie optymalizacją, z pułapkami, które mogą wystąpić podczas optymalizacji).dlmMLE
wielokrotnie wywołuje podprogram R z parametrami kandydującymi do tworzenia modeli, a następnie je testuje.Utwórz swój ostateczny model, korzystając z utworzonego podprogramu R i parametrów znalezionych w kroku 3.
Filtruj swoje dane za pomocą
dlmFilter
, a następnie może za pomocądlmSmooth
.Jeśli używasz
dlmModReg
lub robisz coś, co powoduje, że model ma parametry zmienne w czasie, nie możesz użyćdlmForecast
do prognozowania swojej serii. Jeśli skończysz na modelu zmiennym w czasie, będziesz chciał wypełnić swoje dane wejściowe NA i pozwolić nadlmFilter
wypełnienie NA dla ciebie (prognoza biedaka), ponieważdlmForecast
nie działa z parametrami zmieniającymi się w czasie.Jeśli chcesz zbadać komponenty indywidualnie (powiedz trend, niezależnie od sezonu), musisz zrozumieć macierze i to, co jest w każdej kolumnie, a także zrozumieć, w jaki sposób
dlm
je łączy (kolejność ma znaczenie!).Jest inny pakiet, którego nazwa ucieka mi, który próbuje stworzyć interfejs, który może korzystać z kilku z tych pakietów (w tym
dlm
jako zaplecza). Niestety, nigdy nie udało mi się, aby działał dobrze, ale to może być tylko ja.Naprawdę polecam kupienie książki o DLM. Mam ich kilka i dużo grałem,
dlm
aby dotrzeć do tego, gdzie jestem, i pod żadnym względem nie jestem ekspertem.źródło
dlm
winietę pakietu. Dowiesz się, co musisz wiedzieć. Dlatego polecamdlm
, ponieważ sam nie tworzysz FF itp.Proponuję przeczytać winietę dlm http://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf, szczególnie rozdział 3.3
źródło