He entrenado un modelo VAR mediante statsmodels
en Python, y estoy tratando de implementar la predicción de un paso adelante manualmente sin usar el paquete.
Basado en statsmodels
aquí, definen un proceso VARMAX como: $$y_t = A(t) + A_1 y_{t-1} + \dots + A_p y_{t-p} + B x_t + \epsilon_t + M_1 \epsilon_{t-1} + \dots M_q \epsilon_{t-q}$$
En mi caso no tengo variables exógenas ni los términos MA por lo que el modelo debería simplificarse a un modelo VAR: $$y_t = A(t) + A_1 y_{t-1} + \dots + A_p y_{t-p} + \epsilon_t$$
Mi esquema de implementación en Python para la predicción es el siguiente para un modelo VAR(3) de ejemplo:
values = []
for i in range(5000):
y_t = intercept + np.matmul(A_1, lag_1) + np.matmul(A_2, lag_2) + np.matmul(A_3, lag_3) + np.random.multivariate_normal([0, 0], covariance_matrix).reshape(-1, 1)
values.append(y_t)
donde intercept
et $y_t$ son $k \times 1$ vectores, $A_1, A_2, A_3$ son matrices de parámetros, y $lag_1, lag_2, lag_3$ son vectores de $i$ -a los valores anteriores. Ejecuto la ecuación 5000 veces, ya que muestro de la distribución normal multivariada y tomo la media de $y_t$ para la predicción de un paso adelante. Tomo todos los parámetros del modelo entrenado.
Mis estimaciones aquí se acercan a la predicción de un paso adelante statsmodels
da pero no son iguales, así que algo no estoy haciendo bien. Se agradecen los consejos.