Processing math: 100%

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: yt=A(t)+A1yt1++Apytp+Bxt+ϵt+M1ϵt1+Mqϵtq

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)+A1yt1++Apytp+ϵ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.

1voto

masto Puntos 946

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

E[yt+h|yt,yt1,]=A(t)+A1yt++Apytp+1

El término de error ϵt no entra en la predicción porque se define de manera que E[ϵt+h|yt,yt1,]=0 .

Incluso con 5000 muestras, su media muestral 1n5000i=1et 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