1 votos

Implementar manualmente las predicciones VAR

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.

1voto

masto Puntos 946

Las predicciones VAR se calculan como una expectativa condicional, por ejemplo

$$E[y_{t+h}|y_t, y_{t-1}, \dots] = A(t) + A_1 y_t + \dots + A_p y_{t-p+1}$$

El término de error $\epsilon_t$ no entra en la predicción porque se define de manera que $E[\epsilon_{t+h}|y_t, y_{t-1}, \dots] = 0$ .

Incluso con 5000 muestras, su media muestral $\frac{1}{n} \sum_{i=1}^{5000} e_t$ generalmente no será exactamente igual a cero, por lo que su predicción diferirá ligeramente de la producida por statsmodels.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X