'============================================================ ' Predicciones de un proceso AR(1) a dos periodos utilizando los métodos "plug-in" ' y "directo" '============================================================ create u 1 300 ' 1º.- Generar 300 observaciones del proceso: ar1~AR(1) ' AR(1) smpl @first @first series ar1 = 0 smpl @first+1 @last series ar1 = 0.5*ar1(-1)+ nrnd smpl @first @last stom(ar1,y) ' 2º.- Estimar el modelo usando sólo 200 observaciones smpl 1 200 ' Método plug-in: equation plugin.ls ar1 c ar1(-1) ' Método directo equation direct.ls ar1(2) c ar1 ar1(-1) ' 3º Calcular las predicciones y el error de predicción al cuadrado smpl @first @last vector(100) y_plugin = 0 vector(100) y_direct = 0 vector(100) e2_plugin = 0 vector(100) e2_direct = 0 for !i = 1 to 100 y_plugin(!i) = plugin.c(1)*(1+plugin.c(2)) + plugin.c(2)^2*y(!i+198) e2_plugin(!i) = ( y_plugin(!i) - y(!i+200) )^2 y_direct(!i) = direct.c(1) + direct.c(2)*y(!i+198) + direct.c(3)*y(!i+197) e2_direct(!i) = ( y_direct(!i) - y(!i+200) )^2 next ' 4º Sumar el los errores de predicción al cuadrado para obtener el MSE scalar mse_plugin = 0 scalar mse_direct = 0 for !i=1 to 100 mse_plugin = mse_plugin + e2_plugin(!i)/100 mse_direct = mse_direct + e2_direct(!i)/100 next ' 5º Construir las series con las primeras 200 observaciones igual a la serie original y las observaciones ' desde la 201 a la 300 con las predicciones vector(300) ar1plugin = 0 vector(300) ar1direct = 0 for !i=1 to 200 ar1plugin(!i) = y(!i) ar1direct(!i) = y(!i) next for !i=201 to 300 ar1plugin(!i) = y_plugin(!i-200) ar1direct(!i) = y_direct(!i-200) next mtos(ar1plugin,ar1_plugin) mtos(ar1direct,ar1_direct) group comparar ar1_plugin ar1_direct ar1