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.
forecast
package 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 desglmnet
variables retardées. Pour autant que je sache, personne ne l'a encore fait avec un modèle ARIMA complet.Réponses:
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
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 ( β ) -
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.
la source
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"
la source