Utilizo la función auto.arima () en el paquete de pronóstico para ajustar los modelos ARMAX con una variedad de covariables. Sin embargo, a menudo tengo una gran cantidad de variables para seleccionar y generalmente termino con un modelo final que funciona con un subconjunto de ellas. No me gustan las técnicas ad-hoc para la selección de variables porque soy humano y sujeto a sesgos, pero la validación cruzada de series de tiempo es difícil , por lo que no he encontrado una buena manera de probar automáticamente diferentes subconjuntos de mis variables disponibles, y Estoy atascado ajustando mis modelos usando mi propio mejor criterio.
Cuando me ajusto a los modelos glm, puedo usar la red elástica o el lazo para la regularización y la selección de variables, a través del paquete glmnet . ¿Existe un kit de herramientas existente en R para usar la red elástica en los modelos ARMAX, o tendré que enrollar el mío? ¿Es esta una buena idea?
editar: ¿Tendría sentido calcular manualmente los términos AR y MA (digamos hasta AR5 y MA5) y usar glmnet para ajustar el modelo?
editar 2: Parece que el paquete FitAR me hace parte, pero no todo, del camino hacia allí.
forecast
paquete para R. Dijo que sería difícil con el ARIMA completo, porque tendrías que envolver el lazo alrededor del optimizador no lineal ARIMA. Una solución parcial sería ajustar un modelo AR utilizandoglmnet
variables rezagadas. Hasta donde yo sé, nadie ha hecho esto con un modelo ARIMA completo todavía.Respuestas:
Esta no es una solución, sino algunas reflexiones sobre las posibilidades y dificultades que conozco.
Siempre que sea posible especificar un modelo de serie temporal como con computable a partir de covariables y observaciones con retraso de tiempo , también es posible calcular el estimador penalizado neto elástico de mínimos cuadrados de usando glmnet en R. Requiere que escriba un código para calcular para formar la matriz modelo que se especificará en glmnet. Esto funciona para los modelos AR pero no directamente para los modelos ARMA, por ejemplo. Además, los procedimientos de validación cruzada de glmnet no son sensibles per se para los datos de series temporales.
Para modelos más generales, una implementación de un algoritmo para calcular el estimador penalizado neto elástico de mínimos cuadrados no lineal de Se necesita . Que yo sepa, no existe tal implementación en R. Actualmente estoy escribiendo una implementación para resolver el caso donde el punto es que es primordial para la selección del modelo que la penalización del lazo esté en y no en . Si recuerdo correctamente la parametrización ARIMA, también toma esta forma pero no puedo ofrecer ningún código por el momento. Está (estará) basado en
Otro problema es la selección de la cantidad de penalización (los parámetros de ajuste). Generalmente requerirá una forma de validación cruzada para series de tiempo, pero espero poder resolver algunos métodos menos exigentes computacionalmente para modelos específicos.
fuente
Un cliente me desafió a resolver este problema de forma automática, es decir, llave en mano. Implementé un enfoque que para cada par (es decir, y un candidato x), preblanquea, calcula las correlaciones cruzadas de la serie preblanqueada, identifica el PDL (O MODELO DE LAG DISTRIBUIDO DISTRIBUIDOR AUTORREGESIVO ADL incluyendo cualquier TIEMPO MUERTO) al incorporar la detección de intervención a producir estimaciones robustas, desarrollar una "medida" para esta estructura. Después de realizar esto para TODOS los regresores candidatos, clasifíquelos según la "medida" y luego seleccione los principales regresores K según la "medida". Esto a veces se conoce como filtrado lineal. Incorporamos con éxito esta heurística en nuestro paquete de series de tiempo disponible comercialmente. Deberías poder "RODAR TU PROPIO"
fuente