Creo que lo entendiste bien, pero cuando construyo un modelo VAR, generalmente me aseguro de seguir estos pasos:
1. Seleccione las variables
Esta es la parte más importante de la construcción de su modelo. Si desea pronosticar el precio de un activo, debe incluir variables relacionadas con el mecanismo de formación de precios. La mejor manera de hacerlo es a través de un modelo teórico. Como no mencionó cuál es el activo y cuáles son las otras variables que incluyó en su modelo, realmente no puedo decir mucho sobre este artículo, pero puede encontrar un resumen de los modelos de precios de activos aquí .
2. Verifique los datos y realice los ajustes adecuados
Una vez que seleccione las variables, puede hacer algunos ajustes a los datos que mejorarán la estimación e interpretación del modelo. Es útil usar estadísticas resumidas y ver un diagrama de la serie para detectar valores atípicos, datos faltantes y otros comportamientos extraños. Cuando se trabaja con datos de precios, las personas suelen tomar registros naturales, que es una transformación estabilizadora de la varianza y también tiene una buena interpretación (la diferencia de precios en los registros se convierte en rendimientos compuestos continuos). No estoy seguro de si ha tomado registros antes de estimar el modelo, pero es una buena idea hacerlo si está trabajando con los precios de los activos.
3. Compruebe si los datos contienen componentes no estacionarios
Ahora puede usar pruebas de raíz unitaria para verificar si sus series son estacionarias. Si solo está interesado en pronosticar, como lo señaló @JacobH, puede ejecutar VAR en niveles incluso cuando sus series no son estacionarias, pero entonces no se puede confiar en sus errores estándar, lo que significa que no puede hacer inferencia sobre el valor de Los coeficientes. Ha realizado pruebas estacionarias utilizando la prueba ADF, que se usa muy comúnmente en estas aplicaciones, pero tenga en cuenta que debe especificar si desea ejecutar la prueba con i) sin constante y sin tendencia; ii) una tendencia constante y sin tendencia; y iii) una constante y una tendencia. Por lo general, las series de precios tienen tendencias estocásticas, por lo que una tendencia lineal no será precisa. En este caso, puede elegir la especificación ii. En tu código usaste elndiffs
función del paquete de pronóstico. No estoy seguro de cuál de esas tres alternativas implementa esta función para calcular el número de diferencias (no pude encontrarla en la documentación). Para verificar su resultado, puede utilizar la ur.df
función en el paquete "urca":
adf <- ur.df(x[, "VAR1"], type = "drift", lags = 10, selectlags = "AIC")
Tenga en cuenta que este comando ejecutará la prueba ADF con una constante y los retrasos seleccionados por el comando AIC, con un retraso máximo de 10. Si tiene problemas para interpretar los resultados, solo mire esta pregunta . Si las series son I (1) solo use la diferencia, que será igual a los rendimientos compuestos continuamente. Si la prueba indica que la serie es I (2) y tiene dudas sobre eso, puede usar otras pruebas, por ejemplo, la prueba de Phillips-Perron (PP.test
función en R). Si todas las pruebas confirman que su serie es I (2) (recuerde usar el registro de la serie antes de ejecutar las pruebas), tome la segunda diferencia, pero tenga en cuenta que su interpretación de los resultados cambiará, ya que ahora está trabajando con diferencia de los rendimientos continuamente compuestos. Los precios de los activos suelen ser I (1) ya que están cerca de una caminata aleatoria, que es un ruido blanco al aplicar la primera diferencia.
4. Seleccione el orden del modelo.
Esto se puede hacer con criterios de uso común, como Akaike, Schwarz (BIC) y Hannan-Quinn. Lo ha hecho con la VARselect
función y es correcto, pero recuerde cuál es el criterio que utilizó para tomar su decisión. Por lo general, diferentes criterios indican diferentes órdenes para el VAR.
5. Compruebe si hay relaciones de cointegración
Si todas sus series son I (1) o I (2), antes de ejecutar un modelo VAR, generalmente es una buena idea verificar si no hay relaciones de cointegración entre las series, especialmente si desea realizar un análisis de respuesta al impulso con el derechos residuales de autor. Puede hacerlo utilizando la prueba de Johansenn o el Engle-Granger (solo para modelos bivariados). En R puede ejecutar la prueba de Johansen con la ca.jo
función del paquete "urca". Tenga en cuenta que esta prueba también tiene diferentes especificaciones. Para las series de precios, generalmente utilizo el siguiente código (donde p
es la longitud de retraso del elemento 4, realizada con la serie en niveles):
jo_eigen <- ca.jo(x, type = "eigen", ecdet = "const", K = p)
jo_trace <- ca.jo(x, type = "trace", ecdet = "const", K = p)
6. Estima el modelo
Si sus series no están integradas, puede estimar fácilmente el modelo con el VAR
comando, como se hace en su código. En caso de que las series estén cointegradas, debe considerar la relación a largo plazo estimando un modelo de corrección de errores vectoriales con el siguiente código (donde k
está el orden de cointegración):
vecm <- cajorls(joeigen, r = k)
7. Ejecute pruebas de diagnóstico
Para probar si su modelo está bien especificado, puede ejecutar una prueba de correlación en serie en los residuos. En su código, utilizó una prueba de Portmanteau con la serial.test
función. Nunca he usado esta función pero creo que está bien. También hay una versión multivariada de la prueba Ljung-Box implementada en el paquete MTS que puede ejecutar con la función mq
.
8. Haz predicciones
Una vez que esté seguro de que su modelo está bien especificado, puede usar la predict
función como lo hizo en su código. Incluso puede trazar funciones de respuesta a impulsos para verificar cómo responden las variables a un choque particular usando la irf
función.
9. Evaluar predicciones
Una vez que haya hecho sus predicciones, debe evaluarlas y compararlas con otros modelos. Aquí se pueden encontrar algunos métodos para evaluar la precisión de los pronósticos , pero para hacerlo es crucial que divida su serie en un conjunto de entrenamiento y prueba, como se explica en el enlace.