Quelqu'un pourrait-il me montrer un exemple sur la façon d'utiliser le filtrage DLM Kalman en R sur une série temporelle. Disons que j'ai ces valeurs (valeurs trimestrielles avec saisonnalité annuelle); comment utiliseriez-vous DLM pour prédire les prochaines valeurs? Et BTW, ai-je suffisamment de données historiques (quel est le minimum)?
89 2009Q1
82 2009Q2
89 2009Q3
131 2009Q4
97 2010Q1
94 2010Q2
101 2010Q3
151 2010Q4
100 2011Q1
? 2011Q2
Je suis à la recherche d'un type de réponse étape par étape de style livre de cuisine de code R. La précision de la prédiction n'est pas mon objectif principal, je veux juste apprendre la séquence de code qui me donne un numéro pour 2011Q2, même si je n'ai pas assez de données.
r
time-series
forecasting
datayoda
la source
la source
dlm
package rend cela aussi simple que possible.dlm
emballage? Comme je l'ai dit dans ma réponse, les DLM ressemblent beaucoup plus à la création d'un programme qu'à la connexion de certaines variables à un appel de fonction. datayoda n'a jamais accepté de réponse, donc je ne suis pas sûr qu'ils aient dépassé cette observation.Réponses:
L'article de JSS 39-02 compare 5 différents packages de filtrage R de Kalman et donne un exemple de code.
la source
Les DLM sont cool, mais ils ne sont pas aussi simples que, disons, ARIMA ou d'autres méthodes. Dans d'autres méthodes, vous branchez vos données, puis ajustez certains paramètres de l'algorithme, en vous référant peut-être à divers diagnostics pour guider vos paramètres.
Avec un DLM, vous créez une machine à espace d'état, qui se compose de plusieurs matrices qui implémentent essentiellement quelque chose comme un modèle de Markov caché. Certains packages (
sspir
je pense, entre autres) s'attendent à ce que vous compreniez le concept et ce que font les matrices. Je vous recommande fortement de commencer par ledlm
package et, comme le recommande @RockScience, de parcourir la vignette.Avec
dlm
vous allez essentiellement prendre plusieurs mesures:Quels types de composants décrivent ma série? Une tendance? Saisonnalité? Variables exogènes? Vous utiliserez des
dlm
outils commedlmModPoly
pour implémenter ces composants, en utilisant l'+
opérateur pour les assembler en un seul modèle.Créez un sous-programme R qui prend le nombre de paramètres requis par ce modèle, crée les composants avec ces paramètres, puis les additionne et renvoie le modèle résultant.
Utilisez
dlmMLE
pour faire une recherche / optimisation pour trouver les paramètres appropriés (en utilisant MLE, qui est fondamentalement l'optimisation, avec les pièges qui peuvent survenir dans l'optimisation).dlmMLE
appelle à plusieurs reprises votre sous-routine R avec des paramètres candidats pour créer des modèles, puis les teste.Créez votre modèle final, en utilisant le sous-programme R que vous avez créé ainsi que les paramètres que vous avez trouvés à l'étape 3.
Filtrez vos données avec
dlmFilter
, puis lissez peut-être avecdlmSmooth
.Si vous utilisez
dlmModReg
ou faites quelque chose qui fait que le modèle a des paramètres variant dans le temps, vous ne pouvez pas utiliserdlmForecast
pour prévoir votre série. Si vous vous retrouvez avec un modèle variant dans le temps, vous voudrez remplir vos données d'entrée avec des NA et laisser ledlmFilter
remplissage des NA pour vous (les prévisions d'un pauvre), cardlmForecast
cela ne fonctionne pas avec des paramètres variant dans le temps.Si vous souhaitez examiner les composants individuellement (par exemple la tendance, séparément de la saisonnalité), vous devrez comprendre les matrices et le contenu de chaque colonne, ainsi que comprendre un peu comment
dlm
les assembler (l'ordre compte!).Il y a un autre package, dont le nom m'échappe, qui essaie de créer un frontal qui peut utiliser plusieurs de ces packages (y compris
dlm
comme back-end). Malheureusement, je ne l'ai jamais réussi à bien fonctionner, mais c'est peut-être juste moi.Je recommanderais vraiment d'avoir un livre sur les DLM. J'en ai eu quelques-uns et j'ai beaucoup joué avec
dlm
pour arriver là où je suis, et je ne suis en aucun cas l'expert.la source
dlm
vignette du package. Vous apprendrez ce que vous devez savoir. C'est pourquoi je recommandedlm
, car vous ne créez pas FF, etc., vous-même.Je vous suggère de lire la vignette dlm http://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf en particulier le chapitre 3.3
la source