Ajuster un modèle ARIMAX avec régularisation ou pénalisation (par exemple avec le lasso, le filet élastique ou la régression de crête)


29

J'utilise la fonction auto.arima () dans le package de prévision pour adapter les modèles ARMAX avec une variété de covariables. Cependant, j'ai souvent un grand nombre de variables à sélectionner et je me retrouve généralement avec un modèle final qui fonctionne avec un sous-ensemble d'entre elles. Je n'aime pas les techniques ad hoc pour la sélection des variables parce que je suis humain et sujet à des biais, mais la validation croisée des séries temporelles est difficile , donc je n'ai pas trouvé un bon moyen d'essayer automatiquement différents sous-ensembles de mes variables disponibles, et suis coincé à régler mes modèles en utilisant mon propre jugement.

Lorsque j'adapte des modèles glm, je peux utiliser le filet élastique ou le lasso pour la régularisation et la sélection de variables, via le package glmnet . Existe-t-il une boîte à outils en R pour utiliser le filet élastique sur les modèles ARMAX, ou vais-je devoir rouler le mien? Est-ce même une bonne idée?

edit: Serait-il judicieux de calculer manuellement les termes AR et MA (disons jusqu'à AR5 et MA5) et d'utiliser glmnet pour s'adapter au modèle?

edit 2: Il semble que le package FitAR m'obtienne une partie, mais pas la totalité, du chemin.


2
Je serais curieux de savoir si vous avez réussi à résoudre ce problème. Je l'avais marqué pour toute mise à jour - il suffit donc de toucher la base ici.
Vishal Belsare

Jamais réussi à résoudre ce problème. J'ai pensé à écrire ma propre implémentation, mais je n'y suis pas allé. Peut-être pourriez-vous calculer manuellement les termes AR et MA, puis appliquer glmnet à ces données?
Zach

1
Salut Zach, je me demandais si tu avais poussé ça plus loin ou s'il était toujours garé. J'ai besoin d'un tel algorithme pour prévoir un grand nombre de séries.
Matt Weller

3
@MattWeller J'ai parlé un peu avec Rob Hyndman, l'auteur de l'excellent forecastpackage pour R. Il a dit que ce serait difficile avec l'ARIMA complet, car il faudrait enrouler le lasso autour de l'optimiseur ARIMA non linéaire. Une solution partielle serait d'adapter un modèle AR en utilisant des glmnetvariables retardées. Pour autant que je sache, personne ne l'a encore fait avec un modèle ARIMA complet.
Zach

Réponses:


7

Ce n'est pas une solution mais quelques réflexions sur les possibilités et les difficultés que je connais.

Chaque fois qu'il est possible de spécifier un modèle de série temporelle comme avec calculable à partir de covariables et d'observations dans le temps , il est également possible de calculer l'estimateur net pénalisé net des moindres carrés de utilisant glmnet dans R. Cela nécessite que vous écriviez du code pour calculer pour former la matrice de modèle qui doit être spécifiée dans glmnet. Cela fonctionne pour les modèles AR, mais pas directement pour les modèles ARMA, par exemple. De plus, les procédures de validation croisée de glmnet ne sont pas sensibles en soi pour les données de séries chronologiques.x t β x t

Ouit+1=Xtβ+ϵt+1
XtβXt

Pour les modèles plus généraux une implémentation d'un algorithme de calcul de l' estimateur net non linéaire net des moindres carrés non linéaires de est nécessaire. À ma connaissance, il n'y a pas une telle implémentation dans R. J'écris actuellement une implémentation pour résoudre le cas où le fait étant qu'il est primordial pour la sélection du modèle que la pénalisation du lasso soit sur et non sur . Si je me souviens bien de la paramétrisation ARIMA, elle prend également cette forme mais je ne peux pas proposer de code pour le moment. Il est (sera) basé sur β Y t + 1 = x t g ( β ) + ϵ t + 1 β g ( β ) -

Ouit+1=F(Xt,β)+ϵt+1
β
Ouit+1=Xtg(β)+ϵt+1
βg(β)-Une méthode de descente en gradient de coordonnées pour une minimisation séparable non lisse .

Un autre problème est la sélection du montant de la pénalisation (les paramètres de réglage). Cela nécessitera généralement une forme de validation croisée pour les séries chronologiques, mais j'espère être en mesure d'élaborer des méthodes moins exigeantes en termes de calcul pour des modèles spécifiques.


Le package caret pour R a une bonne implémentation de la validation croisée des séries chronologiques qui pourrait être utilisée pour sélectionner les paramètres de glmnet. Merci d'avoir répondu.
Zach

2

J'ai été mis au défi par un client de résoudre ce problème de manière automatique, c'est-à-dire clé en main. J'ai mis en œuvre une approche qui, pour chaque paire (c'est-à-dire y et un candidat x), pré-blanchi, calcule les corrélations croisées de la série pré-blanchie, identifie le PDL (OU ADL AUTOREGRESSIVE DISTRIBUTED LAG MODEL, y compris tout TEMPS MORT) tout en incorporant la détection d'intervention à produire des estimations robustes, élaborer une «mesure» pour cette structure. Après avoir effectué ceci pour TOUS les régresseurs candidats, les classer par la "mesure", puis sélectionner les K régresseurs supérieurs en fonction de la "mesure". Ceci est parfois appelé filtrage linéaire. Nous avons réussi à intégrer cette heuristique dans notre package de séries chronologiques disponible dans le commerce. Vous devriez pouvoir "ROULER VOTRE PROPRE"


Je veux spécifiquement intégrer le lasso ou le filet élastique dans un modèle ARIMA.
Zach

3
Je ne recherche pas vraiment un filtre linéaire (bien que cela soit utile). Je veux spécifiquement un moyen d'incorporer le lasso, la régression de crête ou le filet élastique dans un modèle ARIMAX.
Zach

2
Pour le moment, je ne suis pas intéressé par les changements de niveau, les tendances temporelles locales, les changements de coefficient ou la variance d'erreur non constante. Je suis particulièrement intéressé par l'application de la régularisation du lasso, de la crête ou du filet élastique aux modèles ARIMAX.
Zach

2
Si vous pouvez incorporer le lasso, la crête ou la régularisation de filet élastique dans la méthodologie ci-dessus et publier un exemple de code dans un langage de programmation open source, je serais heureux de vous attribuer la prime.
Zach

1
@frank vous essayez de faire une identification par estimation (pas à pas) et cela ne fonctionne pas car il y a trop de combinaisons d'impulsions possibles, de changements de niveau, d'impulsions saisonnières et de tendances temporelles.,. Si ces structures sont nécessaires mais ignorées, l'estimation des paramètres est biaisée et les tests paramétriques de signification sortent par la fenêtre.
IrishStat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.