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: yt=A(t)+A1yt−1+⋯+Apyt−p+Bxt+ϵt+M1ϵt−1+…Mqϵ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: yt=A(t)+A1yt−1+⋯+Apyt−p+ϵ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 yt son k×1 vectores, A1,A2,A3 son matrices de parámetros, y lag1,lag2,lag3 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 yt 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.