TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Notas de Clase Estadı́stica III 3009137 Nelfi González Alvarez ES Profesora Escuela de Estadı́stica Universidad Nacional de Colombia Sede Medell ı́n TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ES 7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Índice general 10 10 10 10 11 11 11 11 11 12 12 12 15 16 17 18 2. El análisis de series de tiempo 2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Clases de pronósticos - pronósticos cuantitativos . . . . . 2.3. Ventajas y desventajas de los métodos cuantitativos . . . 2.4. La precisión de un pronóstico vs. el horizonte de tiempo . 2.5. Las tareas en la realización de un pronóstico . . . . . . . 2.6. La metodologı́a de los datos de series de tiempo . . . . . . 2.7. Estudio descriptivo de las series de tiempo . . . . . . . . 27 27 28 29 30 30 31 34 ES 1. Introducción al lenguaje R 1.1. Cómo descargar e instalar R . . . . . . . . . . . . . . . . . . . . . . 1.2. Cómo usar R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. Inicio de una sesión y edición de programas . . . . . . . . . 1.2.2. Organización y uso de funciones disponibles en R . . . . . 1.3. Resumen de algunas funciones básicas de R . . . . . . . . . . . . 1.3.1. Funciones para entrada y lectura de datos y escritura y exportación de resultados y objetos R . . . . . . . . . . . . . 1.3.2. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3. Funciones relacionadas con distribuciones . . . . . . . . . 1.3.4. Funciones que producen escalares . . . . . . . . . . . . . . 1.3.5. Condicionales y loops . . . . . . . . . . . . . . . . . . . . . . 1.3.6. Algunos objetos R . . . . . . . . . . . . . . . . . . . . . . . . 1.3.7. Algunas operaciones con matrices . . . . . . . . . . . . . . . 1.3.8. Aplicando funciones a objetos R . . . . . . . . . . . . . . . . 1.3.9. Funciones que producen gráficas . . . . . . . . . . . . . . . 1.3.10.Funciones varias . . . . . . . . . . . . . . . . . . . . . . . . . 1.4. Lectura e ingreso de datos de series de tiempo . . . . . . . . . . . 1.4.1. Lectura de series univariadas . . . . . . . . . . . . . . . . . 1.4.2. Exportación de resultados numéricos y gráficos del R . . . 1.5. Graficando una serie de tiempo . . . . . . . . . . . . . . . . . . . . 1.6. Regresión lineal múltiple con R . . . . . . . . . . . . . . . . . . . . 1.6.1. Función lm . . . . . . . . . . . . . . . . . . . . . . . . . . . . III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 4 4 5 10 ÍNDICE GENERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 3. Modelos de regresi ón para tendencia 3.1. Tendencia determinı́stica vs. estocástica 3.2. Estimación de modelos de tendencia . . 3.2.1. Tendencia polinomial . . . . . . . 3.2.2. Modelo general de la tendencia . . 3.3. Pronóstico de la tendencia . . . . . . . . 3.3.1. Pronósticos puntuales . . . . . . . 3.3.2. Intervalos de pronóstico . . . . . . 3.4. Diagnósticos y selección de modelos . . 3.4.1. Criterios de Información . . . . . 3.4.2. ¿Cuál criterio usar? . . . . . . . . 3.5. Ejemplo: Datos RSALES.DAT . . . . . . . 3.6. Ejercicios . . . . . . . . . . . . . . . . . . 3.6.1. Problema 1 . . . . . . . . . . . . . 3.6.2. Problema 2 . . . . . . . . . . . . . 3.7. datos STYLEKP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 IV 45 45 49 49 51 62 62 63 63 63 64 65 72 72 72 75 ES 4. Filtros lineales y suavizamientos 77 4.1. Regresión LOESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.1.1. LOESS en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.1.2. Otras funciones R relacionadas con LOESS: scatter.smooth() y loess.smooth() . . . . . . . . . . . . . . . . . . . . . . . . 80 4.1.3. Ejemplo: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.2. Filtros lineales, medias móviles y suavizadores . . . . . . . . . . . 85 4.2.1. Filtro Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.2.2. Medias móviles . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.2.3. Suavizamiento exponencial simple (EWMA) . . . . . . . . . 91 4.2.4. Suavizamiento Holt . . . . . . . . . . . . . . . . . . . . . . . 92 4.2.5. Suavizamientos exponenciales simples en R . . . . . . . . . 93 4.2.6. Suavizamiento de Holt en R . . . . . . . . . . . . . . . . . . 96 4.2.7. Filtros de Henderson . . . . . . . . . . . . . . . . . . . . . . 101 4.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5. Modelación de la componente estacional 105 5.1. Estacionalidad aditiva y multiplicativa . . . . . . . . . . . . . . . . 105 5.2. Modelado de la estacionalidad por regresión . . . . . . . . . . . . . 106 5.2.1. Modelación de la estacionalidad mediante variables indicadoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.2.2. Modelación de la estacionalidad mediante funciones trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.3. Evaluación de la estabilidad de los modelos de pronóstico . . . . . 120 5.3.1. Ejemplo 1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.3.2. Ejemplo 2: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 ÍNDICE GENERAL V 129 137 139 140 140 142 144 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 5.3.3. Ejemplo: Ajuste de una serie estacional multiplicativa . . . 5.4. Precisión de los modelos de pronóstico . . . . . . . . . . . . . . . . 5.4.1. Comparación con un modelo de referencia . . . . . . . . . . 5.5. Ajuste por suavizamiento Holt-Winters de series estacionales . . . 5.5.1. Holt-Winters aditivo . . . . . . . . . . . . . . . . . . . . . . . 5.5.2. Holt-Winters multiplicativo . . . . . . . . . . . . . . . . . . . 5.5.3. Suavizamiento Holt-Winters en R . . . . . . . . . . . . . . . 5.5.4. Ejemplo: Suavizamiento Holt Winters de la serie del ı́ndice mensual de salario real . . . . . . . . . . . . . . . . . . . . . 5.5.5. Ejemplo: Suavizamiento Holt-Winters de la serie trimestral de producción de cemento portland . . . . . . . . . . . . . . 5.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . esta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Introducción a los modelos ARMA 7.1. El operador Rezago B j y polinomio de rezagos 7.2. El Teorema de representación de Wold . . . . 7.3. Función de autocorrelación Parcial o PACF . 7.3.1. PACF para un proceso de ruido blanco 7.3.2. PACF muestral con R . . . . . . . . . . 7.3.3. Ejemplos . . . . . . . . . . . . . . . . . 7.4. Modelos de medias móviles o MA . . . . . . . . . . . . . . ES 6. Caracterización de los ciclos 6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Procesos estacionarios en covarianza . . . . . . . . . . . . . 6.2.1. Procesos de ruido . . . . . . . . . . . . . . . . . . . . 6.2.2. Procesos de ruido blanco . . . . . . . . . . . . . . . . 6.3. Procesos estacionarios en sentido fuerte o estrictamente cionarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4. Función de autocovarianza y autocorrelación muestral . . 6.5. Uso de la FAC muestral para probar ruido blanco . . . . . 6.5.1. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . 6.6. Test de Box-Pierce y Test Ljung-Box . . . . . . . . . . . . . 6.6.1. Test de Box-Pierce . . . . . . . . . . . . . . . . . . . . 6.6.2. Prueba de Ljung-Box . . . . . . . . . . . . . . . . . . 6.6.3. Pruebas Box-Pierce y Ljung-Box en R . . . . . . . . . 6.7. Procesos Autorregresivos de orden 1, AR(1) . . . . . . . . . 6.8. Test Durbin-Watson de incorrelación de orden 1 . . . . . . 6.8.1. Formulación del test . . . . . . . . . . . . . . . . . . . 6.8.2. El estadı́stico de prueba . . . . . . . . . . . . . . . . . 6.8.3. La ejecución de la prueba . . . . . . . . . . . . . . . . 6.8.4. Test Durbin-Watson en R . . . . . . . . . . . . . . . . 6.9. Ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de orden j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 149 155 157 . 157 . 158 . 161 . 161 . . . . . . . 162 162 163 164 171 171 172 172 178 179 179 180 181 182 184 185 185 186 186 188 189 190 192 ÍNDICE GENERAL VI 192 195 196 198 201 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 7.4.1. El proceso de media móvil de orden 1 o MA(1) . . . . . . . . 7.4.2. Procesos MA(q) . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5. Modelos autorregresivos de orden p o AR(p) . . . . . . . . . . . . . 7.5.1. Función de autocorrelación y autocorrelación parcial de un AR(p) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6. Modelos autorregresivos y de medias móviles o ARMA(p,q) . . . . 7.6.1. Función de autocorrelación y autocorrelación parcial de un ARMA(p,q) . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.2. Casos especiales de procesos ARMA . . . . . . . . . . . . . . 7.7. Identificación y ajuste del modelo para los ciclos . . . . . . . . . . 7.7.1. Métodos de identificación basados en minimización de criterios de información . . . . . . . . . . . . . . . . . . . . . . 7.7.2. Método de identificación basado en la función de autocorrelación extendida . . . . . . . . . . . . . . . . . . . . . . . . 7.7.3. Estimación de modelos ARMA . . . . . . . . . . . . . . . . . 7.8. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.9. Estimación por máxima verosimilitud en modelos ARMA . . . . . 7.10.Pronósticos en modelos ARMA estacionarios e invertibles . . . . . 202 202 205 205 207 208 210 221 221 ES 8. Modelación de una serie con errores ARMA 225 8.1. Modelo inicial: Tendencia, estacionalidad y errores R.B . . . . . . 225 8.1.1. Ajuste y pronóstico . . . . . . . . . . . . . . . . . . . . . . . . 225 8.1.2. Análisis e identificación de ciclos en los errores estructurales Et . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 8.2. Modelos de tendencia, estacionalidad más ciclos ARMA . . . . . . 235 8.2.1. Ciclos AR(6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 8.2.2. Ciclos ARMA(2,2) . . . . . . . . . . . . . . . . . . . . . . . . . 237 8.2.3. Ciclos ARMA(1,5) . . . . . . . . . . . . . . . . . . . . . . . . . 240 8.2.4. Ciclos ARMA(2,4) . . . . . . . . . . . . . . . . . . . . . . . . . 242 8.2.5. Ciclos ARMA(6,7) . . . . . . . . . . . . . . . . . . . . . . . . . 245 8.2.6. Ciclos ARMA(7,10) . . . . . . . . . . . . . . . . . . . . . . . . 248 8.2.7. Ciclos ARMA(1, 2) × (0, 1) [4] . . . . . . . . . . . . . . . . . . 251 8.3. Selección del mejor modelo . . . . . . . . . . . . . . . . . . . . . . . 254 8.4. Código R usado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 8.5. Modelación inicial: Estructura exponencial y errores R.B . . . . . 267 8.5.1. Ajuste y pronóstico . . . . . . . . . . . . . . . . . . . . . . . . 267 8.5.2. Análisis de residuales e identificación ciclos . . . . . . . . . 269 8.5.3. Ajuste de los ciclos . . . . . . . . . . . . . . . . . . . . . . . . 271 8.6. Ajuste y pronóstico aproximado de Y t . . . . . . . . . . . . . . . . . 278 8.7. Codigo R usado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 ÍNDICE GENERAL VII TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 9. Modelos ARIMA 293 9.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 9.2. Procesos homogéneos . . . . . . . . . . . . . . . . . . . . . . . . . . 293 9.3. Raı́z unitaria autorregresiva . . . . . . . . . . . . . . . . . . . . . . 303 9.4. Caminata aleatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 9.4.1. Caminata aleatoria sin tendencia . . . . . . . . . . . . . . . 304 9.4.2. Caminata aleatoria con tendencia o deriva . . . . . . . . . . 305 9.5. Procesos integrados . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 9.5.1. Procesos autorregresivos integrados de medias móviles o ARIMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 9.6. Ajuste y pronóstico de modelos ARIMA . . . . . . . . . . . . . . . . 307 9.7. Pruebas para raı́ces unitarias . . . . . . . . . . . . . . . . . . . . . 310 9.7.1. Prueba de raı́z unitaria de Dickey-Fuller (DF) . . . . . . . . 311 9.7.2. Prueba de raı́z unitaria Dickey-Fuller aumentada (ADF) . . 312 9.7.3. Test DF y ADF en R . . . . . . . . . . . . . . . . . . . . . . . 315 9.8. Ejemplo: Modelación de la serie tasa de cambio Yen/Dólar . . . . 316 9.8.1. Análisis preliminar . . . . . . . . . . . . . . . . . . . . . . . . 317 9.8.2. Identificación de modelos . . . . . . . . . . . . . . . . . . . . 317 9.8.3. Ajuste modelos identificados . . . . . . . . . . . . . . . . . . 319 9.8.4. Pruebas de raı́z unitaria . . . . . . . . . . . . . . . . . . . . . 331 9.8.5. Selección del mejor modelo para el ajuste y pronóstico del logaritmo de la tasa de cambio yen/dólar . . . . . . . . . . 336 9.8.6. Código R usado . . . . . . . . . . . . . . . . . . . . . . . . . . 337 ES 10.Modelos SARIMA 10.1.Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.Modelos ARIMA estacionales . . . . . . . . . . . . . . . . . 10.2.1.Algunos casos especiales de modelos SARIMA . . . 10.2.2.Series con tendencia y estacionalidad estocásticas 10.3.ACF de procesos estacionales . . . . . . . . . . . . . . . . 10.4.PACF y EACF de procesos estacionales . . . . . . . . . . . 10.5.Construcción y pronósticos en modelos estacionales . . . 10.6.Raı́ces unitarias estacionales . . . . . . . . . . . . . . . . . 10.6.1.Test HEGY de raı́z unitaria estacional . . . . . . . . 10.6.2.Test Canova-Hansen (CH) . . . . . . . . . . . . . . . 10.7.Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7.1.Programación R usada en Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 . 345 . 346 . 347 . 355 . 355 . 356 . 357 . 359 . 360 . 364 . 366 . 378 A. Funciones R 385 A.1. Función decompose . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 A.2. Función nls: Mı́nimos cuadrados no lineales . . . . . . . . . . . . 388 A.3. Función stl: Descomposición usando LOESS . . . . . . . . . . . . 389 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ES 7 VIII ÍNDICE GENERAL TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Índice de figuras 1.1. Sitio de descarga del R . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Subdirectorios de descarga R para Windows . . . . . . . . . . . . . . . 1.3. Link última versión del R para Windows . . . . . . . . . . . . . . . . . 1.4. Ventana R Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5. Ventana Editor R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6. Página de búsqueda y descarga de paquetes, según nombre . . . . . . 1.7. Página de descarga paquete nlme . . . . . . . . . . . . . . . . . . . . . 1.8. Instalación paquete R usando archivo .zip . . . . . . . . . . . . . . . . 1.9. Archivo .csv con coma en posición decimal . . . . . . . . . . . . . . . . 1.10.Archivo .CSV con punto en posición decimal . . . . . . . . . . . . . . . 1.11.Archivo .TXT con punto en posición decimal . . . . . . . . . . . . . . . 1.12.Serie ı́ndice mensual salario real sector manufacturero colombiano, sin trilla de café, enero de 1990 a mayo de 2011. . . . . . . . . . . . . . . ES 2.1. Lı́nea de tiempo vs. ajuste y pronóstico de una serie de tiempo (Gaynor y Kirkpatrick [4]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Descomposición serie de tiempo aditiva con función R decompose . . . 2.3. Descomposición serie de tiempo aditiva con función R stl . . . . . . . 2.4. Descomposición serie de tiempo multiplicativa con función R decompose 2.5. Descomposición de los logaritmos de las ventas de licor . . . . . . . . . 2.6. Componente de tendencia serie de salarios, obtenida con decompose . . 2.7. Componente estacional serie de salarios, obtenida con decompose . . . 2.8. Componente de error serie de salarios, obtenida con decompose . . . . 2.9. Componente de tendencia serie de salarios, obtenida con stl . . . . . . 2.10.Componente estacional serie de salarios, obtenida con stl . . . . . . . 2.11.Componente de error serie de salarios, obtenida con stl . . . . . . . . 2.12.Componente de tendencia serie de salarios, obtenida con aggregate . . 2.13.Componente estacional serie de salarios, obtenida con cycle . . . . . . 2 3 3 4 4 7 7 8 13 14 15 16 32 35 37 37 39 40 40 40 41 42 42 43 43 3.1. Componentes claves del PIB real de Estados Unidos, registradas por año de 1960 a 1989, en millones de dólares de 1982. Fuente: Diebold [3], stylekp.dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.2. Tasa de cambio de Hungrı́a, 620 observaciones Fuente: Diebold [3], exchrate.dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 IX ÍNDICE DE FIGURAS X 3.3. Dos realizaciones de una caminata aleatoria . . . . . . . . . . . . . . . 48 3.4. Lado izquierdo: volumen mensual de operaciones de acciones negoci- TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 adas en la bolsa de Nueva York; lado derecho: Logaritmo de la serie. 542 observaciones. Fuente: Diebold [3], nyse vol.dat. . . . . . . . . . . 49 3.5. Volumen mensual de operaciones de acciones negociadas en la bolsa de Nueva York y ajustes usando transformación logarı́tmica y mı́nimos cuadrados no lineales. Fuente: Diebold [3], nyse vol.dat. . . . . . . . . 55 3.6. Residuales del modelo Log- lineal (arriba) en escala logarı́tmica de los datos; residuales del modelo no lineal exponencial (abajo) en escala original de los datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.7. Curva de tendencia tipo logı́stica. . . . . . . . . . . . . . . . . . . . . . 57 3.8. Datos censo decadal de población en Estados Unidos desde el año 1790 a 2000, fuente: Data frame USPob en R. . . . . . . . . . . . . . . . . . 58 3.9. Datos censo decadal de población en Estados Unidos desde el año 1790 a 2000 y proyecciones con modelo cuadrático y logı́stico. . . . . . . . . 61 3.10.Gráficos de residuales modelos cuadrático (modelo0) y modelo logı́stico (modelo1) para datos del Censo Estados Unidos, 1790 a 2000. . . . . . 62 3.11.Serie mensual de ventas al menudeo en Estados Unidos, dólares nominales (ajustada estacionalmente), desde 01-1955 a 01-1996, fuente:Diebold [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.12.Serie mensual de ventas al menudeo en Estados Unidos, dólares nominales (ajustada estacionalmente), y curvas cuadrática y exponencial ajustadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.13. Residuales modelos ajustados a datos de RSALES.DAT . . . . . . . . . 70 3.14. Gráficos de normalidad para residuales, modelos ajustados a datos de RSALES.DAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.15.Serie Índice de productividad mensual en Canada: arriba Datos desde 1959, abajo: datos desde 1955. . . . . . . . . . . . . . . . . . . . . . . 74 ES 4.1. Serie Tasa de cambio en Hungrı́a y tres suavizamientos LOESS, (fecha de inicio desconocida), fuente Diebold [3]. . . . . . . . . . . . . . . . . 4.2. Serie Tasa de cambio en Hungrı́a y tres suavizamientos LOESS, (fecha de inicio desconocida), fuente Diebold [3]. . . . . . . . . . . . . . . . . 4.3. Gráficos de residuales, ajustes LOESS para datos de la tasa de cambio en Hungrı́a), fuente Diebold [3]. . . . . . . . . . . . . . . . . . . . . . . 4.4. Gráficos series precios negociación de acciones de Microsoft (MSFT) . . 4.5. Serie volumen de acciones diarias negociadas de Microsoft (MSFT), con medias móviles unilaterales . . . . . . . . . . . . . . . . . . . . . . . . 4.6. Serie volumen de acciones diarias negociadas de Microsoft (MSFT), medias móviles unilaterales con argumento circular=T. . . . . . . . . . 4.7. Serie volumen de acciones diarias negociadas de Microsoft (MSFT), medias móviles bilaterales. . . . . . . . . . . . . . . . . . . . . . . . . . . 84 84 85 88 90 90 91 ÍNDICE DE FIGURAS XI TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 4.8. Serie volumen de acciones diarias negociadas de Microsoft (MSFT), suavizamientos exponeciales simples. . . . . . . . . . . . . . . . . . . . . . . 95 4.9. Serie volumen de acciones diarias negociadas de Microsoft (MSFT), suavizamientos exponenciales. . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.10.Residuales de los suavizamientos exponenciales para el volumen de acciones diarias negociadas de Microsoft (MSFT). . . . . . . . . . . . . 101 4.11.Filtros de Henderson sobre el volumen de acciones diarias negociadas de Microsoft (MSFT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.1. Gráficos de residuales de los tres modelos ajustados a la serie de salario. 113 5.2. Gráficos de la serie real y ajustada según los tres modelos considerados para la serie de salario. . . . . . . . . . . . . . . . . . . . . . . . . . . 113 5.3. Gráficos de residuales de los tres modelos ajustados a la serie de salario, con funciones trigonométricas. . . . . . . . . . . . . . . . . . . . . . . 118 5.4. Gráficos de la serie real y ajustada según los tres modelos considerados para la serie de salario, con funciones trigonométricas. . . . . . . . . . 119 5.5. Gráfico de 300 observaciones de la serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.6. Gráfico de interceptos estimados recursivamente, para serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). . . . . . . . . . . . . . . . . . . 124 5.7. Gráfico de pendientes estimadas recursivamente, para serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). . . . . . . . . . . . . . . . . . . 125 5.8. Gráfico residuales recursivos y CUSUMt para la serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). . . . . . . . . . . . . . . . . . . . . 125 5.9. Gráfico de 300 observaciones de la serie simulada Yt = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500+200t+Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ).126 5.10.Gráfico de interceptos estimados recursivamente, para serie simulada ES Yt = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500 + 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ). . . . . . . . . . . . . . . . . . . . . . . 5.11.Gráfico de pendientes estimadas recursivamente, para serie simulada Yt = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500 + 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ). . . . . . . . . . . . . . . . . . . . . . . 5.12.Gráfico residuales recursivos y CUSUMt para la serie simulada Yt = 18500+ 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500+ 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.13.Gráfico serie de producción trimestral de cemento portland y de su logaritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.14.Descomposición stl de la serie de logaritmos de la producción trimestral cemento portland. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.15.Residuales ajuste de la serie de logaritmos de la producción trimestral cemento portland. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.16.Estimación recursiva de los parámetros de la tendencia, ajuste de la serie de logaritmos de la producción trimestral cemento portland. . . . 127 127 128 129 130 131 132 ÍNDICE DE FIGURAS XII 133 134 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 5.17.Estimación recursiva de los parámetros de la estacionalidad, ajuste de la serie de logaritmos de la producción trimestral cemento portland. . . 5.18.Residuales recursivos y test CUSUM, ajuste de la serie de logaritmos de la producción trimestral cemento portland. . . . . . . . . . . . . . . 5.19.Componente de tendencia serie trimestral de producción de cemento portland, estimada por descomposición. . . . . . . . . . . . . . . . . . 5.20.Serie trimestral de producción de cemento portland y su ajuste por regresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.21.Suavizamientos Holt-Winters para serie ı́ndice mensual de salario real. 5.22.Suavizamientos Holt-Winters para serie trimestral de producción de cemento portland. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ES 6.1. Realizaciones de un proceso estocástico. Fuente: Martı́nez [8]. . . . . . 6.2. Ejemplo γ(k) de un procesos estacionario . . . . . . . . . . . . . . . . 6.3. Dos procesos estacionarios en covarianza. Fuente: Martı́nez [8] . . . . 6.4. Dos procesos no estacionarios en covarianza. Fuente: Martı́nez [8] . . . 6.5. Función de autocovarianza γ(k) de un procesos de ruido . . . . . . . . 6.6. Serie at y su FAC muestral . . . . . . . . . . . . . . . . . . . . . . . . 6.7. Serie Z1,t y su FAC muestral . . . . . . . . . . . . . . . . . . . . . . . . 6.8. Serie Z2,t y su FAC muestral . . . . . . . . . . . . . . . . . . . . . . . . 6.9. Serie Z3,t y su FAC muestral . . . . . . . . . . . . . . . . . . . . . . . . 6.10.Serie Z4,t y su FAC muestral . . . . . . . . . . . . . . . . . . . . . . . . 6.11.FAC’s Serie ı́ndice de salario y residuales de modelos ajustados . . . . 6.12.FAC’s Serie log producción trimestral cemento portland y residuales de modelo ajustado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13.Serie Yt simulada y su FAC muestral . . . . . . . . . . . . . . . . . . . 6.14.Serie residuales modelo lineal ajustado a serie simulada y su FAC muestral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.15.Primera diferencia de la serie simulada y su FAC muestral . . . . . . . 6.16.Región crı́tica de nivel α para el test Box-Pierce y Ljung-Box . . . . . . 6.17.Ejemplos ρ(k) de procesos AR(1) . . . . . . . . . . . . . . . . . . . . . 137 138 150 154 157 159 160 160 161 165 165 165 166 166 167 168 169 169 170 172 180 PACF de un proceso de ruido blanco . . . . . . . . . . . . . . . . . . . 189 PACF muestral de un ruido blanco . . . . . . . . . . . . . . . . . . . . 190 PACFs series simuladas en Sección 6.5.1. . . . . . . . . . . . . . . . . 191 PACF residuales modelo log cuadrático estacional serie producción trimestral de cemento portland . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.5. Ejemplos ρ(k) y φkk de procesos MA(1) . . . . . . . . . . . . . . . . . . 194 7.6. Ejemplos ρ(k) y φkk de procesos MA(2) . . . . . . . . . . . . . . . . . . 197 7.7. Ejemplos ρ(k) y φkk de procesos AR(1) . . . . . . . . . . . . . . . . . . 199 7.8. Ejemplos ρ(k) y φkk de procesos AR(2) . . . . . . . . . . . . . . . . . . 200 7.9. Ejemplos ρ(k) y φkk de procesos ARMA(1,1) . . . . . . . . . . . . . . . . 203 7.10.Más ejemplos ρ(k) y φkk de procesos ARMA(1,1) . . . . . . . . . . . . . 204 7.1. 7.2. 7.3. 7.4. ÍNDICE DE FIGURAS XIII 209 211 212 213 215 215 218 218 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 7.11.Representación de la EACF teórica de procesos ARMA(1,1) . . . . . . . 7.12.Serie AR1.sim simulada de Zt = 0.67Zt−1 + at , at ∼ RBN (0, 1) y n = 100 . 7.13.Serie residuales después de ajustar AR1.sim y ACF, PACF correspondientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.14.Serie AR1.sim simulada y pronósticos para h = 5 perı́odos futuros . . . 7.15.Series Z1t , Z3t y MA1.sim, simuladas . . . . . . . . . . . . . . . . . . . 7.16.ACF’s y PACF’s muestrales de las Series Z1t , Z3t y MA1.sim, simuladas 7.17.Residuales del modelo ajustado para Z1t , y su ACF y PACF muestrales . 7.18.Residuales del modelo ajustado para Z3t , y su ACF y PACF muestrales . 7.19.Residuales del modelo ajustado para MA1.sim, y su ACF y PACF muestrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.20.Series Z1t , Z3t y MA1.sim y sus pronósticos para h = 5 perı́odos futuros ES 8.1. Izq.: Serie de producción trimestral de cemento portland (miles de toneladas) y Der.: su logaritmo 8.2. Serie real, ajustada y pronósticos para la validación cruzada, modelo Log-cúbico estacional . . . 8.3. Residuales estructurales Êt modelo log-cúbico estacional y ACF y PACF muestrales . . . . . . 8.4. Resultado de la función armasubsets sobre Êt en modelo log-cúbico estacional . . . . . . . 8.5. ACF’s y PACF’s teóricas de modelos ARMA identificados para E t . . . . . . . . . . . . . 8.6. ACF’s y PACF’s teóricas de modelos ARMA identificados para E t . . . . . . . . . . . . . 8.7. ACF’s y PACF’s teóricas de modelos ARMA identificados para E t . . . . . . . . . . . . . 8.8. Serie real, ajustada y pronósticos Modelo 2 . . . . . . . . . . . . . . . . . . . . . . 8.9. Residuales ât Modelo 2 y su ACF y PACF muestrales . . . . . . . . . . . . . . . . . . 8.10.Gráfico Normalidad de ât Modelo 2 . . . . . . . . . . . . . . . . . . . . . . . . . 8.11.Serie real, ajustada y pronósticos Modelo 3 . . . . . . . . . . . . . . . . . . . . . . 8.12.Residuales ât Modelo 3 y su ACF y PACF muestrales . . . . . . . . . . . . . . . . . . 8.13.Gráfico Normalidad de ât Modelo 3 . . . . . . . . . . . . . . . . . . . . . . . . . 8.14.Serie real, ajustada y pronósticos Modelo 4 . . . . . . . . . . . . . . . . . . . . . . 8.15.Residuales ât Modelo 4 y su ACF y PACF muestrales . . . . . . . . . . . . . . . . . . 8.16.Gráfico Normalidad de ât Modelo 4 . . . . . . . . . . . . . . . . . . . . . . . . . 8.17.Serie real, ajustada y pronósticos Modelo 5 . . . . . . . . . . . . . . . . . . . . . . 8.18.Residuales ât Modelo 5 y su ACF y PACF muestrales . . . . . . . . . . . . . . . . . . 8.19.Gráfico Normalidad de ât Modelo 5 . . . . . . . . . . . . . . . . . . . . . . . . . 8.20.Residuales ât del ajuste con errores ARMA(6,7), con φj , j = 1, 3, 4, 5, y θi , i = 1, 2, . . . , 6, fijos en cero, y su ACF y PACF muestrales . . . . . . . . . . . . . . . . . . . . . . . . . 8.21.Serie real, ajustada y pronósticos Modelo 6 . . . . . . . . . . . . . . . . . . . . . . 8.22.Residuales ât Modelo 6 y su ACF y PAF muestrales . . . . . . . . . . . . . . . . . . . 8.23.Gráfico Normalidad de ât Modelo 6 . . . . . . . . . . . . . . . . . . . . . . . . . 8.24.Residuales ât del ajuste con errores ARMA(7,10), con φj , j = 2, 3, 4, 5, 6, y θi , i = 1, 2, . . . , 7, 9, fijos en cero, y su ACF y PACF muestrales . . . . . . . . . . . . . . . . . . . . . . . . 8.25.Serie real, ajustada y pronósticos Modelo 7 . . . . . . . . . . . . . . . . . . . . . . 8.26.Residuales ât Modelo 7 y su ACF y PAF muestrales . . . . . . . . . . . . . . . . . . . 8.27.Gráfico Normalidad de ât Modelo 7 . . . . . . . . . . . . . . . . . . . . . . . . . 8.28.Serie real, ajustada y pronósticos Modelo 8 . . . . . . . . . . . . . . . . . . . . . . 219 220 226 227 228 230 232 233 234 236 236 237 238 239 239 241 241 242 243 244 244 246 247 247 248 249 250 250 251 252 ÍNDICE DE FIGURAS XIV TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 8.29.Residuales ât Modelo 8 y su ACF y PAF muestrales . . . . . . . . . . . . . . . . . . . 253 8.30.Gráfico Normalidad de ât Modelo 8 . . . . . . . . . . . . . . . . . . . . . . . . . 253 8.31.Valores reales y pronosticados con los ocho modelos (Miles de toneladas) . . . . . . . . . . 255 8.32.Serie real, ajustada y pronósticos para la validación cruzada, modelo exponencial cúbico estacional 268 8.33.Residuales en ajuste exponencial cúbico estacional . . . . . . . . . . . . . . . . . . . 269 8.34.ACF y PACF para residuales estructurales . . . . . . . . . . . . . . . . . . . . . . 269 8.35.Resultado de la función armasubsets sobre Êt en modelo exponencial cúbico estacional . . . . 271 8.36.Residuales de ajuste del ARMA(2,2) ajustado a los residuos estructurales del modelo exponencial 272 8.37.Residuales de ajuste del AR(6) ajustado a los residuos estructurales del modelo exponencial . . 273 8.38.Residuales de ajuste del ARMA(1,8) ajustado a los residuos estructurales del modelo exponencial 273 8.39.Residuales de ajuste del ARMA(2,5) ajustado a los residuos estructurales del modelo exponencial 274 8.40.Residuales de ajuste del SARMA(1,2)(0,1)[4] ajustado a los residuos estructurales del modelo exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 8.41.Residuales de ajuste del ARMA(6,7): E t = φ2 Et−2 + φ6 Et−6 + at + θ7 at−7 , ajustado a los residuos estructurales del modelo exponencial . . . . . . . . . . . . . . . . . . . . . . . . 276 8.42.Residuales de ajuste del ARMA(6,7) a ajustado a los residuos estructurales del modelo exponencial 276 8.43.Residuales de ajuste del ARMA(6,7): E t = φ2 Et−2 +φ6 Et−6 +at +θ6 at−6 +θ7 at−7 ,at ∼ R.B N (0, σa2 ), ajustado a los residuos estructurales del modelo exponencial . . . . . . . . . . . . . . . 277 8.44.Residuales de ajuste del ARMA(6,7) b ajustado a los residuos estructurales del modelo exponencial 277 8.45.Comparación de serie real y sus ajustes mediante los modelos que intengran la estimación estructural exponencial más los ciclos ARMA identificados para los residuales estructurales del modelo exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 8.46.Comparación de serie real y sus ajustes mediante los modelos que intengran la estimación estructural exponencial más los ciclos ARMA identificados para los residuales estructurales del modelo exponencial (Cont.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 8.47.Comparación de serie real y sus pronósticos, para el modelo exponencial sin y con los ciclos ARMA identificados para los residuales estructurales del modelo exponencial inicial . . . . . . . . 281 ES 9.1. Serie simulada como Yt = 3500+200t+Et , Et ∼ N (0, (4000)2 ) y su primera diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 9.2. Gráficos para análisis de residuales Êt del ajuste MA(1) sobre la serie ∇Yt 296 9.3. Serie simulada Yt = 10000 + 1.8t + 15t2 + Et , Et ∼ R.BN (0, (5000)2 ) y su ACF muestral. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 9.4. Diferencias de orden 1 y 2 de serie simulada Yt = 10000 + 1.8t + 15t2 + Et , Et ∼ R.BN (0, (5000)2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 9.5. Gráficos para análisis de residuales Êt del ajuste MA(2) sobre la serie ∇2 Yt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 9.6. ACF y PACF de una serie proveniente de un proceso ARIMA(p,1,q) . . . 304 9.7. Serie original tasa mensual de cambio yen/US, su logaritmo y sus respectivas diferencias de orden 1 . . . . . . . . . . . . . . . . . . . . . 316 9.8. Arriba: ACF y PACF log tasa mensual de cambio yen/US; Abajo: ACF y PACF primera diferencia del logaritmo . . . . . . . . . . . . . . . . . . 317 9.9. Serie log tasa yen/Us y pronósticos modelos 1 a 4 . . . . . . . . . . . . 322 ÍNDICE DE FIGURAS XV . . . . . . . . . . . . . . . . . . . . . . . . . 323 324 326 328 330 7 9.10.Gráficas para análisis de residuales, modelos 1 y 2 . . . . . . 9.11.Gráficas para análisis de residuales, modelos 3 y 4 . . . . . . 9.12.Gráficos residuales modelo tendencia lineal y Et ∼ R.BN (0, σ 2 ) 9.13.Serie log tasa yen/Us y pronósticos modelos 5b y 5c . . . . . 9.14.Gráficas para análisis de residuales, modelos 5b y 5c . . . . . TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 10.1.ACF’s y PACF’s modelos AR(1)s . . . . . . . . . . . . . . . . . . . . . . 10.2.ACF’s y PACF’s modelos MA(1)s . . . . . . . . . . . . . . . . . . . . . . 10.3.ACF’s y PACF’s modelos ARMA(1,1)s . . . . . . . . . . . . . . . . . . . 10.4.ACF’s y PACF’s modelos MA(1) × MA(1)12 . . . . . . . . . . . . . . . . . 10.5.ACF’s y PACF’s modelos MA(1) × AR(1)12 . . . . . . . . . . . . . . . . . 10.6.ACF’s y PACF’s modelos AR(1) × MA(1)12 . . . . . . . . . . . . . . . . . 10.7.ACF’s y PACF’s modelos AR(1) × AR(1)4 . . . . . . . . . . . . . . . . . . 10.8.Serie de producción trimestral de cemento portland y su logaritmo . . . 10.9.Diferencias ∇, ∇4 , ∇∇4 y ∇4 ∇ para el logaritmo de la producción trimestral de cemento portland. . . . . . . . . . . . . . . . . . . . . . . . . . 10.10. ACF’s para el logaritmo de la producción de cemento portland y de sus diferencias ∇, ∇4 , ∇∇4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.11. ACF, PACF y resultado de la función armasubsets() para ∇∇4 sobre el logaritmo de la producción de cemento portland. . . . . . . . . . . . 10.12. Ajuste y pronósticos de la producción de cemento portland con Modelo SARIMA 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.13. Ajuste y pronósticos de la producción de cemento portland con Modelo SARIMA 2 a 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.14. Comparación de los pronósticos en escala original, de los modelos SARI- 348 349 350 351 352 353 354 366 367 368 369 372 373 ES MA 1 a 5 ajustados al logaritmo de la producción de cemento portland con Modelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 10.15. Gráficos de residuales de ajuste de los modelos SARIMA 1 a 4 ajustados al logaritmo de la producción de cemento portland con Modelo. . . . . . 375 10.16. ACF’s y PACF’s para residuales de ajuste de los modelos SARIMA 1 a 4 ajustados al logaritmo de la producción de cemento portland con Modelo.376 10.17. Gráficos de residuales de ajuste y su ACF y PACF, modelo SARIMA 5 para el logaritmo de la producción de cemento portland con Modelo. . . 377 A.1. Descomposición de una serie multiplicativa. Fuente:O.D. Anderson (1976) and O’Donovan (1983). Ventas mensuales compañı́a X, ene 65 - may 71. 387 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ES 7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 1 Introducción al lenguaje R R más que un paquete estadı́stico de dominio público, es un lenguaje y ambiente que además de ofrecer una amplia gama de métodos estadı́sticos también puede ser considerado como un lenguage de alto nivel. Entre otras cosas, permite definir funciones que pasan a ser parte del sistema las cuales pueden ser usadas en sesiones posteriores. Entre sus ventajas tenemos su capacidad para operar con objetos, la programación en lenguaje matricial, la disponibilidad de una amplia base de operadores y la versatilidad que ofrece en la realización de gráficas. El software está disponible bajo los términos de licencia GNU en forma de código fuente, para sistemas operativos Windows, Mac OS, UNIX, y similares y puede ser descargado en el website del R, donde se encuentran disponibles referencias importantes para aprender su uso, tales como 1. An Introduction to R: Notes on R: A Programming Environment for Data Analysis and Graphics, Version Version 2.13.1 (2011-07-08), by W. N. Venables, D. M. Smith and the R Development Core Team; 2. R: A Language and Environment for Statistical Computing. Reference Index, Version 2.13.1 (2011-07-08), by The R Development Core Team. ES 1.1. Cómo descargar e instalar R En la dirección http://cran.r-project.org ubicamos la página para descargar el R (ver Figura 1.1): Download and Install R Precompiled binary distributions of the base system and contributed packages, Windows and Mac users most likely want one of these versions of R: Download R for Linux Download R for MacOS X Download R for Windows 1 CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Seleccionamos la opción Download R for Windows. Figura 1.1: Sitio de descarga del R A continuación visualizamos la página R for Windows, donde tenemos las siguientes dos opciones (ver Figura 1.2): Subdirectories: base contrib Seleccionamos base. Llegamos a la página R-2.13.1 for Windows (32/64 bit) (ver Figura 1.3), allı́ seleccionamos la opción Download R 2.13.1 for Windows (39 megabytes, 32/64 bit) ES Aparece luego la ventana de descarga, hacer click en el botón Ejecutar y seguir paso a paso las instrucciones o preguntas del instalador, respondiendo a todo con el botón ”siguiente”. Cuando llegue a la ventana de selección de componentes a instalar, tenga cuidado de seleccionar primero los componentes referentes a manuales antes de proseguir. 1.1. CÓMO DESCARGAR E INSTALAR R TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 3 Subdirectorios de descarga R para Windows ES Figura 1.2: Figura 1.3: Link última versión del R para Windows CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 4 1.2. Cómo usar R 1.2.1. Inicio de una sesi ón y edición de programas TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Al iniciar una sesión en R el programa se abre en la ventana de comandos denominada R-Console, ilustrada en la Figura 1.4, en la cual se pueden escribir lı́neas de comandos que serán ejecutados una vez se presione la tecla enter. Ventana R Console ES Figura 1.4: Figura 1.5: Ventana Editor R 1.2. CÓMO USAR R 5 En la ventana R-Console encontramos en la barra menú los siguientes menús: Archivo 7 Editar TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Visualizar Misc Paquetes Ventanas Ayuda Como alternativa para la edición de programas en lenguaje R, se puede recurrir a la creación de un archivo de edición con el menú Archivo - Nuevo Script, donde podemos editar nuestros programas especı́ficos que deseemos y ejecutarlos en forma completa o parcialmente mediante selección previa de las lı́neas deseadas, usando las opciones disponibles en el menú Editar. En la Figura 1.5 se ilustra la ventana de edición con parte de un programa R escrito por el usuario. Estos archivos de edición pueden ser guardados con extensión .R y ser utilizados en cualquiera otra sesión cargándolos por el menú Archivo - Abrir Script. 1.2.2. Organizaci ón y uso de funciones disponibles en R ES En R las funciones están organizadas en librerı́as o paquetes. Por defecto R inicializa en el paquete denominado base en el cual encontramos las funciones generales para el manejo de datos y gráficas. Existen otros paquetes en los cuales se encuentran herramientas de análisis más especializadas, las cuales pueden ser utilizadas cargando previamente la librerı́a que las contiene. Una librerı́a o paquete puede cargarse mediante la función library() o bien con require() o a través del menú Paquetes - Cargar paquetes... Una lista de las librerı́as disponibles puede obtenerse ejecutando: > library() lo que permite ver en una ventana denominada R packages available un listado como el siguiente, Packages in library ’C:/Program Files/R/R-2.13.1/library’: base boot class cluster codetools compiler The R Base Package Bootstrap Functions (originally by Angelo Canty for S) Functions for Classification Cluster Analysis Extended Rousseeuw et al. Code Analysis Tools for R The R Compiler Package CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 6 datasets foreign The R Datasets Package Read Data Stored by Minitab, S, SAS, SPSS, Stata, Systat, dBase, ... The R Graphics Package The R Graphics Devices and Support for Colours and Fonts The Grid Graphics Package Functions for kernel smoothing for Wand & Jones (1995) Lattice Graphics Support Functions and Datasets for Venables and Ripley’s MASS Sparse and Dense Matrix Classes and Methods Formal Methods and Classes GAMs with GCV/AIC/REML smoothness estimation and GAMMs by PQL Linear and Nonlinear Mixed Effects Models Feed-forward Neural Networks and Multinomial Log-Linear Models Recursive Partitioning Functions for Kriging and Point Pattern Analysis Regression Spline Functions and Classes The R Stats Package Statistical Functions using S4 Classes Survival analysis, including penalised likelihood. Tcl/Tk Interface Tools for Package Development The R Utils Package TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 graphics grDevices grid KernSmooth lattice MASS Matrix methods mgcv nlme nnet rpart spatial splines stats stats4 survival tcltk tools utils Existe una gran cantidad de otros paquetes disponibles en el website del R que el usuario puede descargar simplemente siguiendo los siguientes pasos. 1. Conéctese a internet. 2. Inicialice una sesión R. Vaya al menú Paquetes-Seleccionar Espejo CRAN. 3. En la ventana CRAN mirror seleccione Colombia (Bogota) y presione OK. 4. Vuelva al menú Paquetes y esta vez seleccione Instalar paquete(s)... y en la ventana Packages resultante, seleccione el paquete que se desea descargar, buscando por nombre en orden alfabético y finalmente presione OK. ES Sin embargo, lo anterior a veces puede fallar bien sea por error de configuración del R o problemas con la conexión a Internet usando R. En este caso puede realizarse lo siguiente: 1. Ingrese a la página http://cran.r-project.org ilustrada en la Figura 1.1, y en el menú del lado izquierdo en Software seleccione la opción Packages . 2. En la página Contributed Packages, sección Available Packages encuentra las siguientes dos opciones o links: Table of available packages, sorted by date of publication Table of available packages, sorted by name 3. Seleccione Table of available packages, sorted by name, lo cual lo lleva a la página Available CRAN Packages By Name, ilustrada en la Figura 1.6. Busque por orden alfabético, uno a uno los paquetes que desee descargar. 1.2. CÓMO USAR R 7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 4. Una vez seleccione el paquete en la lista alfabética, aparece la página de descarga, por ejemplo, para la librerı́a nlme, la página aparece titulada como nlme: Linear and Nonlinear Mixed Effects Models, ilustrada en la Figura1.7, donde se visualiza una breve descripción de la librerı́a, su número de versión y dependencia con otras librerı́as o paquetes que deberán descargarse caso que el usuario aún no las tenga disponibles en su máquina. En la sección Downloads se selecciona la opción para Windows binary: nlme-3.1-102.zip (este archivo cambiará de nombre de acuerdo a sus actualizaciones). Guarde el archivo en su máquina. Página de búsqueda y descarga de paquetes, según nombre ES Figura 1.6: Figura 1.7: Página de descarga paquete nlme 5. Para instalar en R la librerı́a descargada mediante archivo .zip, inicie una sesión R, vaya al menú Paquetes - Instalar paquete(s) a partir de archivos CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 8 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 zip locales... Emerge una ventana para que ud. explore en su máquina hasta hallar la ruta donde guardó el archivo .zip del paquete R a instalar. Figura 1.8: Instalación paquete R usando archivo .zip Para consultar la lista de funciones disponibles en una librerı́a particular (ya disponible en su máquina) usamos el comando: library(help="nombre de la libreria") Por ejemplo, si se desea saber cuáles funciones están disponibles en la librerı́a splines, ejecutamos el siguiente comando: library(help="splines") ES Para conocer sobre la sintaxis y uso de alguna función en particular podemos usar el menú Ayuda o el comando ?paquete::función, por ejemplo, ?car::boxCox. Si la función se encuentra en la librerı́a base, usamos simplemente el comando ?función, por ejemplo, ?lm NOTA: R es sensible a mayúsculas y minúsculas por lo que es importante escribir los nombres de funciones y librerı́as conforme han sido definidos. Algunas veces el usuario desconoce el nombre de la función deseada. Si ya 1.2. CÓMO USAR R 9 existe en alguna librerı́a previamente descargada, se puede recurrir a la búsqueda con una palabra clave con TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Por ejemplo, 7 help.search("palabra-clave") ó ??palabra-clave. ??shapiro ó help.search("shapiro"), da como resultado un listado de funciones R y su ubicación (paquete::funcion), como el siguiente, Help files with alias or concept or title matching ’shapiro’ using fuzzy matching: stats::shapiro.test Shapiro-Wilk Normality Test Type ’?PKG::FOO’ to inspect entries ’PKG::FOO’, or ’TYPE?PKG::FOO’ for entries like ’PKG::FOO-TYPE’. R además permite al usuario crear sus propias funciones con el comando function(), éstas son almacenadas en una forma interna especial y pueden ser usadas en expresiones subsiguientes. Esta caracterı́stica proporciona una gran potencialidad y versatilidad al lenguaje permitiendo al usuario mayor productividad en el uso del R. Una función es definida mediante una asignación de la forma nombre=function(arg.1, arg.2, ...){expresiones} ES Las expresiones usadas son expresiones admisibles en R que usan los argumentos arg.i, para calcular un valor o producir un objeto determinado (vector, matriz, lista, arreglo, etc.). Una invocación o llamada de la función toma la forma nombre(expr.1,expr.2,...) donde expr.i es el valor particular para el argumento arg.i de la función. A continuación, un listado de las funciones básicas utilizadas o que pueden ser útiles para el lector. Para detalles consultar directamente la ayuda y manuales del R. CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 10 1.3. Resumen de algunas funciones básicas de R 1.3.1. Funciones para entrada y lectura de datos y escritura y exportaci ón de resultados y objetos R de datos. Especial para datos no estructurados de archivos en formato de tabla de archivos en formato de tabla con ancho fijo de archivos en formato de tabla con datos separados por comas de una tabla de contingencia guardada en archivo ASCII archivo ASCII los resultados de una sesión una matriz en un archivo ASCII una tabla de contingencia en un archivo ASCII una matriz en formato Latex. Requiere la librerı́a xtable presentar decentemente un arreglo multidimensional 7 Función Lectura Lectura Lectura Lectura Lectura Envı́o a Escribe Escribe Escribe Permite TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Comando scan() read.table() read.fwf() read.csv() read.ftable() sink() write() write.ftable() xtable() ftable() 1.3.2. Operadores + * / ˆ %/ % %% sqrt(x) exp(x) Aritméticos Suma Resta Multiplicación División Exponenciación División entera Operador módulo √ x ex De < > <= >= == != comparaci ón menor mayor menor o igual mayor o igual igual diferente & | ! all(...) any(...) && || Lógicos y de control y ó no ¿Todos los valores lógicos son ciertos? ¿Alguno de los valores lógicos es cierto? Si primer operando es cierto evalúa segundo operando Si primer operando es falso evalúa segundo operando. 1.3.3. Funciones relacionadas con distribuciones ES Distribuci ón Uniforme Normal Binomial Lognormal Beta Geométrica Gamma Ji cuadrado Exponencial F Hipergeom. t Poisson Weibull Binom. Neg. Densidad dunif(x,...) dnorm(x,...) dbinom(x,...) dlnorm(x,...) dbeta(x,...) dgeom(x,...) dgamma(x,...) dchisq(x,...) dexp(x,...) df(x,...) dhyper(x,...) dt(x,...) dpois(x,...) dweibull(x,...) dnbinom(x,...) Funci ón Acumulada punif(q,...) pnorm(q,...) pbinom(q,..) plnorm(q,...) pbeta(q,...) pgeom(q,...) pgamma(q,...) pchisq(q,...) pexp(q,...) pf(q,...) phyper(q,...) pt(q,...) ppois(q,...) pweibull(q,...) pnbinom(q, s...) Cuantil p qunif(p,...) qnorm(p,...) qbinom(p,...) qlnorm(p,...) qbeta(p,...) qgeom(p,...) qgamma(p,...) qchisq(p,...) qexp(p,...) qf(p,...) qhyper(p,...) qt(p,...) qpois(p,...) qweibull(p,...) qnbinom(p,...) Números aleatorios runif(n,...) rnorm(n,...) rbinom(n,...) rlnorm(n,...) rbeta(n,...) rgeom(n,...) rgamma(n,...) rchisq(n,...) rexp(n,...) r(n,...) rhyper(n,...) r(n,...) rpois(n,...) rweibull(n,...) rnbinom(n,...) 1.3.4. Funciones que producen escalares Comando max() min() sum() mean() var() median() quantile(...,probs=c(...)) prod() length() ncol() nrow() Función Máximo del argumento Mı́nimo del argumento Suma de todos los elementos del argumento Promedio aritmético de todos los elementos del argumento Varianza de todos los elementos del argumento, cuando éste es un vector, o matriz de covarianzas si el argumento es una matriz Mediana del argumento Cuantiles del argumento con las proporciones indicadas en ’probs’ Producto de todos los elementos del argumento Número de elementos del argumento si este es una lista o vector Número de columnas si el argumento es una matriz Número de filas si el argumento es una matriz 1.3. RESUMEN DE ALGUNAS FUNCIONES B ÁSICAS DE R 11 1.3.5. Condicionales y loops if(condición){expresiones} else expresión TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 ifelse(condición,1,0) for(nombre in expresión){expresiones} while(condición){expresiones} 1.3.6. Algunos objetos R Vectores, matrices y arreglos Comando Función c() Crea vectores append() Combina vectores o adiciona elementos a un vector matrix(), as.matrix(), data.matrix() Crea matrices array(), as.array() Crea arreglos Listas y tramas de datos Comando Función list(), as.list() Crea listas de objetos data.frame(), as.data.frame() Crea colecciones de variables en estructura tabular 1.3.7. Algunas operaciones con matrices Comando %* % t() crossprod(A) svd() qr() chol() solve() cbind() rbind() eigen() diag() Función Producto matricial Transposición de una matriz Producto At A Descomposición en valores singulares de una matriz Descomposición qr Descomposición de Cholesky Inversa de una matriz Combina matrices por columnas Combina matrices por filas Cálculo de valores y vectores propios Crea una matriz diagonal si el argumento es un vector o retorna la matriz diagonal de una matriz ES 1.3.8. Aplicando funciones a objetos R Comando apply() tapply() lapply() sapply() Función Aplica una función a filas o columnas Aplica una función a cada celda de un Aplica una función a cada elemento de Como lapply pero devuelve un vector o de una matriz arreglo una lista y devuelve una lista matriz 1.3.9. Funciones que producen gr áficas Comando hist() boxplot() plot() qqplot() qqnorm() pairs() Función Grafica histogramas Grafica boxplots Función genérica para gráficos de dispersión,de series de tiempo, de residuales, etc. Grafico cuantil-cuantil Gráfico de probabilidad normal Gráfico de matrices de dispersión CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 12 1.3.10. Funciones varias TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 pacf() Función Función para ajuste de un modelo lineal por mı́nimos cuadrados Función genérica para exhibir resumen de resultados de modelos ajustados Crea objetos tipo series de tiempo Estima y grafica la autocorrelaciones o autocovarianzas para un objeto serie de tiempo Estima y grafica las autocorrelaciones parciales para un objeto serie de tiempo Realiza test Box-Pierce o test Ljung-Box sobre un objeto serie de tiempo grafica una serie vs. Versiones rezagadas de ella misma extrae residuales de modelos ajustados con alguna función como lm() extrae valores ajustados de modelos ajustados con alguna función de modelación produce predicciones a partir de los resultados de varias funciones R que ajustan modelos. los métodos que usa dependen de la clase de objeto R producido por una función de modelación especı́fica. Función de la librerı́a car que realiza el test Durbin-Watson 7 Comando lm() summary() ts() acf() Box.test() lag.plot() residuals() fitted() predict() durbin.watson() Nota: Existen muchas otras funciones para el análisis y modelación de series de tiempo que serán vistas posteriormente en el desarrollo del curso. 1.4. Lectura e ingreso de datos de series de tiempo Para la lectura de bases de datos externas de series de tiempo usaremos las funciones R scan(), read.table(), read.csv(), read.delim(). 1.4.1. Lectura de series univariadas En R se usa el punto como delimitador de decimales. Podemos ingresar las observaciones de una serie univariada por teclado, usando la función scan(), como se ilustra a continuación Código R 1.1. ES salario<-scan() 94.08 102.23 103.99 103.21 102.59 100.95 101.67 101.71 99.93 100.11 99.65 89.81 90.71 99.88 100.75 101.67 100.58 98.82 98.21 98.96 99.30 98.40 99.17 91.12 90.85 102.67 104.36 101.71 101.48 100.29 100.33 102.24 101.24 102.02 103.79 95.95 96.52 106.55 108.50 108.04 108.68 108.34 108.14 109.75 108.28 108.76 109.36 101.03 101.01 109.63 111.20 109.67 110.24 110.94 110.38 111.50 111.73 112.94 113.87 107.39 103.38 113.84 114.96 116.00 113.54 113.25 113.35 114.88 113.81 116.03 117.50 109.50 105.87 117.69 119.22 118.80 118.48 116.65 116.54 117.03 116.04 116.87 118.60 108.91 109.53 120.21 122.15 122.48 124.30 121.99 122.20 121.41 120.69 122.72 124.70 115.65 114.15 123.45 124.66 122.08 121.64 119.48 120.02 122.33 121.50 122.45 123.63 115.43 111.66 124.21 126.22 126.88 126.88 127.33 127.27 128.88 128.54 130.28 132.15 124.65 119.19 131.69 130.87 129.95 130.83 131.23 132.64 133.50 132.98 134.38 135.12 130.16 121.78 132.44 132.89 130.83 131.41 130.40 131.79 132.46 131.00 132.46 133.61 salario=ts(salario,frequency=12,start=c(1990,1)) 1.4. LECTURA E INGRESO DE DATOS DE SERIES DE TIEMPO 13 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 con la lı́nea salario=ts(salario,frequency=12,start=c(1990,1)) estamos redefiniendo el objeto salario como una serie de valores recolectados con frecuencia mensual, y que inicia en enero de 1990. Para datos trimestrales se especificarı́a frequency=4 y para una serie anual, frequency=1. Para leer datos univariados editados en Excel en una columna, estos se guardan en formato .CSV (delimitado por comas). Si en este archivo se usa coma para la posición decimal y los datos no están encabezados por algún tı́tulo, debemos leer los datos usando read.csv2(file.choose(),header=F,dec=",") Si el primer registro en el archivo es un tı́tulo o cualquier texto, usamos read.csv2(file.choose(),header=T,dec=",") ES El argumento file.choose() se usa para habilitar la ventana de búsqueda del archivo dentro de las carpetas en Windows. Por ejemplo, para leer el archivo DATOSSALARIOREALENER1990-MAYO2011.CSV en la Figura 1.9 y crear la serie de tiempo correspondiente, usamos el siguiente código: Figura 1.9: Archivo .csv con coma en posición decimal Código R 1.2. datos.salreal=read.csv2(file.choose(),header=F,dec=",") datos.salreal=ts(datos.salreal,frequency=12,start=c(1990,1)) Para leer datos univariados en formato .CSV donde se usó punto para la posición decimal y los datos no están encabezados por algún tı́tulo, debemos CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 14 usar read.csv(file.choose(),header=F,dec=".") TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 read.csv(file.choose(),header=T,dec=".") 7 Si el primer registro en el archivo es un tı́tulo o cualquier texto, usamos Por ejemplo, considere los datos en el archivo DATOSSALARIOREALENER1990MAYO2011b.CSV en la Figura 1.10. Para su lectura usamos el siguiente código: Figura 1.10: Archivo .CSV con punto en posición decimal Código R 1.3. ES datos.salreal2=read.csv(file.choose(),header=T,dec=".") datos.salreal2=ts(datos.salreal2,frequency=12,start=c(1990,1)) Finalmente, si los datos de la serie están guardados en un archivo de texto .DAT ó .TXT, donde la posición decimal es indicada con coma, usamos read.table(file.choose(),header=F,dec=",") read.table(file.choose(),header=T,dec=",") Si la posición decimal es indicada por punto basta usar el argumento dec="." o no especificarlo: read.table(file.choose(),header=F,dec=".") read.table(file.choose(),header=T,dec=".") 1.4. LECTURA E INGRESO DE DATOS DE SERIES DE TIEMPO 15 read.table(file.choose(),header=F) read.table(file.choose(),header=T) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Por ejemplo, considere los datos guardados sobre la serie del ı́ndice de salario real, en el archivo de texto DATOSSALARIOREALENER1990-MAYO2011b.TXT y que se ilustra en la Figura 1.11. Figura 1.11: Archivo .TXT con punto en posición decimal Para la lectura de este archivo usamos el siguiente código: Código R 1.4. ES datos.salreal3=read.table(file.choose(),header=T) datos.salreal3=ts(datos.salreal3,frequency=12,start=c(1990,1)) 1.4.2. Exportación de resultados num éricos y gráficos del R Los resultados numéricos de alguna función o comando pueden ser exportados con las opciones copiar - pegar o enviándolos a archivos externos con las funciones R sink(), write(), dump(), esta última guarda objetos en formato R (matrices, vectores, arreglos, etc.). De igual manera las gráficas producidas pueden ser guardadas en una variedad de formatos (metafile, postscript, png, pdf, bmp, tiff, jpeg), o copiadas y pegadas directamente en un editor de texto como MS-Word. Datos y comandos guardados como objetos R (con función dump()) pueden ser cargados en cualquier sesión con la función source(). Para más detalles sobre estas funciones consultar la ayuda del R usando el comando de consulta ?nombre-función. CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 16 1.5. Graficando una serie de tiempo 7 Una vez leı́do el conjunto de datos de una serie y creado el objeto de tipo serie de tiempo con la función ts(), podemos hacer uso de la función plot(), ası́, TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 plot(objeto-serie) Por ejemplo, para el objeto datos.salreal3 en código R 1.4, usamos Código R 1.5. win.graph(width=4,height=4,pointsize=8) plot(datos.salreal3) con lo cual obtenemos la Figura 1.12. El comando win.graph(width=4,height=4,pointsize=8) Figura 1.12: 120 90 ES 100 110 salarioreal 130 140 150 permite abrir una ventana gráfica del ancho y alto especificado en pulgadas con sus dos primeros argumentos, respectivamente, mientras que pointsize=8 indica el tamaño del texto graficado. 1990 1995 2000 2005 2010 Time Serie ı́ndice mensual salario real sector manufacturero colombiano, sin trilla de café, enero de 1990 a mayo de 2011. 1.6. REGRESIÓN LINEAL MÚLTIPLE CON R 17 1.6. Regresión lineal múltiple con R Recordemos el problema de regresión lineal múltiple: donde TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Y : Respuesta o variable dependiente 7 Y = β0 + β1 X1 + β2 X2 + · · · + βk Xk + Ei X1 , X2 , · · · , Xk : k variables explicatorias o independientes (no estocásticas) β0 , β1 , · · · , βk : k + 1 parámetros (usualmente desconocidos) E: Error aleatorio 1. E (E; ) = 0 2. Var (E; ) = σ 2 3. Adicionalmente, se asume que su distribución es normal, N(0, σ 2 ) Y ∼ N β0 + β1 X1 + · · · + βk Xk , σ 2 E [Y |X1 , X2 , · · · , Xk ] = β0 + β1 X1 + · · · + βk Xk La muestra aleatoria consta de n puntos. El i-ésimo punto se denota como (Xi1 , Xi2 , · · · , Xik , Yi) , para i = 1, 2, · · · , n Condición Cov (Yi, Yj ) = 0 para todo i = j Yi = β0 + β1 Xi1 + β2 Xi2 + · · · + βk Xik + Ei para i = 1, 2, · · · , n (*), ES modelo (*) es aplicado al i-ésimo punto. Para las n observaciones tenemos Y1 = β0 + β1 X11 + β2 X12 + · · · + βk X1k + E1 Y2 = β0 + β1 X21 + β2 X22 + · · · + βk X2k + E2 .. .. .. . . . Yn = β0 + β1 Xn1 + β2 Xn2 + · · · + βk Xnk + En El objetivo es estimar los parámetros β’s a partir de este sistema de ecuaciones. En notación matricial tenemos que el sistema de ecuaciones anterior corresponde a Yn×1 = Xn×(k+1) β (k+1)×1 + En×1 −1 T Si β̂ denota el estimador de β, se puede mostrar que β̂ = XT X X Y. Este es el estimador de mı́nimos cuadrados y corresponde al estimador de máxima verosimilitud bajo el supuesto de normalidad. CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 18 1.6.1. Función lm 7 Esta función es usada para ajustar modelos lineales. Puede usarse para realizar regresiones, análisis de varianza estratificada simple y análisis de covarianza (aunque la función aov() puede dar una interface más conveniente para estos dos últimos modelos). Su sintaxis general es como sigue: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 lm(formula, data, subset, weights, na.action, method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset = NULL, ...) Argumentos: formula: Una descripción simbólica del modelo a ser especificado. data: Marco de datos opcional que contiene las variables en el modelo. por defecto las variables son tomadas de ‘environment(formula)’, tı́picamente el ambiente del cual lm es llamada, es decir, son objetos R (vectores) de la misma dimensión, previamente definidos. subset: Un vector opcional para especificar un subconjunto de observaciones usadas en el proceso de ajuste. weights: Un vecto opcional con pesos a ser usados en el proceso de ajuste. Si es especificado, mı́nimo cuadrados ponderados es usado con n los pesos especificados, es decir, se minimiza wi Ei2 ; de lo contrario se usa mı́nimos cuadrados ordinarios. i=1 na.action: Una función que indica lo que deberı́a hacerse cuando hay datos faltantes o ‘NA’s. El valor por defecto es el ajustado por ‘na.action’. ES method: El método a ser usado para el ajuste. Actualmente sólo es soportado el método ‘qr’; method=“model.frame” devuelve el marco del modelo. model, x, y, qr: Argumentos lógicos. Si son iguales a TRUE los componentes correspondientes del ajuste (el marco del modelo, la matriz del modelo, la respuesta, la descomposición QR) son devueltos con esta opción. singular.ok: Argumento lógico, por defecto es TRUE. FALSE no está implementado. contrasts: Una lista opcional. Ver ‘contrasts.arg’ de ‘model.matrix.default’. 1.6. REGRESIÓN LINEAL MÚLTIPLE CON R 19 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ...: Argumentos adicionales. 7 offset: Puede usarse para especificar un parámetro conocido en forma apriori y que ha de ser incluido en el predictor lineal durante el ajuste. Uno o más términos ‘offset’s pueden ser incluidos en la fórmula y si se especifica más de uno entonces su suma es usada. Detalles: Los modelos para lm se especifican simbólicamente. El modelo usual tiene la forma respuesta∼ t érminos donde respuesta es el vector de respuesta y términos es una serie de predictores lineales. Estos términos se especifican de la forma ‘primero+segundo’ indicando todos los términos en ‘primero’ junto con todos los términos en ‘segundo’, con duplicaciones siendo removidas. Una especificación de la forma ‘primero:segundo’ indica que debe incluirse el conjunto de términos obtenidos al tomar las interacciones de todos los términos en ‘primero’ con todos los términos en ‘segundo’. La especificación ‘primero*segundo’ indica el cruce de ‘primero’ y ‘segundo’. Esto es lo mismo que primero + segundo + primero:segundo’. Una fórmula tiene implı́cito el intercepto. Para removerlo se usa y ∼ x - 1 ó y ∼ 0 + x. Ver formula para más detalles sobre fórmulas permitidas. Las funciones summary y anova son usadas para obtener e imprimir un resumen y una tabla de análisis de varianzas de los resultados. Las funciones genéricas extractoras coefficients, effects, fitted.values y residuals extraen varias caracterı́sticas útiles de los valores retornados por lm. Un objeto de clase ‘’lm” es una lista con los siguientes componentes, entre otros: coefficients: Un vector con los coeficientes ES residuals: Los residuales, es decir la respuesta menos valores ajustados. fitted.values: Los valores ajustados. rank: El grado del modelo lineal ajustado. weights: Pesos si se hizo ajuste ponderado. df.residual: Grados de libertad de los residuales. formula: La fórmula dada. terms: El objeto ‘terms’ usado. contrasts: Sólo donde sea relevante, los contrastes usados. CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 20 xlevels: Sólo donde sea relevante, un registro de los niveles de los factores usados en el ajuste. x: Si es requerido o invocado, la matriz modelo usada. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 model: El marco de modelo usado. 7 y: Si es requerido o invocado, la respuesta usada. Ver también: summary.lm, anova.lm, coefficients, effects, residuals, fitted.values, predict.lm (para predicción e intervalos de predicción), lm.influence (para diagnósticos de regresión) y glm (para modelos lineales generalizados). Formulación de un modelo en R Supongamos que y, x, x 1 , x2 , · · · son variables numéricas, X es una matriz y A, B, C, · · · son factores. La siguiente tabla presenta las fórmulas utilizadas en R para especificar los modelos descritos: Fórmula y ∼ x y ∼ 1 + x y ∼ -1 + x y ∼ x -1 log(y) ∼ x y ∼ x1 + x2 y ∼ poly(x,2) y ∼ x+ I(xˆ2) y ∼ X + poly(x,2) y ∼ A y ∼ A + x y ∼ A + B ∼ ∼ ∼ ∼ ∼ ∼ ∼ ∼ ∼ A*B A + B + A:B B %in %A A/B (A + B + C)ˆ2 A*B*C -A:B:C A * x A/x A/(1+x) - 1 ES y y y y y y y y y y ∼ A*B + Error(C) Ambas fórmulas definen una regresión lineal simple. El segundo tiene explı́cito el intercepto. Regresión simple a través del origen. Regresión simple con la respuesta transformada. Regresión múltiple con dos variables explicativas. Se incluye el intercepto implı́citamente. Regresión polinomial de grado 2. Utiliza polinomios ortogonales para la construcción de la matriz de diseño. Regresión polinomial de grado 2. Utiliza las potencias explı́citas Modelo de regresión múltiple de y con la matriz de diseño X y con un polinomio en x de grado 2. Análisis de varianza con un factor Análisis de covarianza con A como factor y x como covariable. Análisis de varianza con dos factores A y B sin interacción Análisis de varianza con interacción. Modelo encajado del factor B en A. Modelo de tres factores que contiene los efectos principales las interacciones entre pares de factores. Modelos de regresión simples separados dentro de los diferentes niveles de A. Modelos de regresión simples que produce en forma explı́cita diferentes pendientes e interceptos como niveles tenga A Un experimento con dos tratamientos, A y B, y un error de estrato determinado por C. Por ejemplo, un experimento split-plot. Ejemplo 1: Cuatro pruebas (X1, X2, X3, X4) para selección de personal son aplicadas a un grupo de 20 aspirantes y se registran los respectivos puntajes. Después de 1.6. REGRESIÓN LINEAL MÚLTIPLE CON R 21 X1 122 108 120 118 113 112 109 112 115 111 119 112 120 117 109 116 104 110 117 120 X2 121 115 115 117 112 96 129 119 101 95 118 110 89 118 125 122 83 101 120 77 X3 96 98 95 93 109 90 102 106 95 95 107 100 105 99 108 116 100 103 113 80 X4 89 78 90 95 109 88 108 105 88 84 110 87 97 100 95 102 102 103 108 74 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Y 94 71 82 76 111 64 109 104 80 73 127 88 99 80 99 116 100 96 126 58 7 2 años de contratación estos 20 empleados son clasificados de acuerdo a la puntuación de la aptitud (Y ) exhibida para el trabajo. Los datos se presentan el la siguiente tabla: A continuación un programa R para el análisis por regresión de estos datos Código R 1.6. ES ###LECTURA DE LOS DATOS, ORDEN DE COLUMNAS: Y, X1, X2, X3, X4### datos=data.frame(matrix(scan(),ncol=5,byrow=T)) 94 122 121 96 89 71 108 115 98 78 82 120 115 95 90 76 118 117 93 95 111 113 112 109 109 64 112 96 90 88 109 109 129 102 108 104 112 119 106 105 80 115 101 95 88 73 111 95 95 84 127 119 118 107 110 88 112 110 100 87 99 120 89 105 97 80 117 118 99 100 99 109 125 108 95 116 116 122 116 102 100 104 83 100 102 96 110 101 103 103 126 117 120 113 108 CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 22 58 120 77 80 74 #ASIGNANDO NOMBRES A COLUMNAS EN CONJUNTO DE DATOS names(datos)=c("Y","X1","X2","X3","X4") TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #DIBUJANDO UNA MATRIZ DE GRÁFICOS DE DISPERSIÓN pairs(datos) 7 datos #Anclando variables guardadas en datos para disponibilizarlas attach(datos) ###AJUSTE MRLM### #Una manera modelo=lm(Y˜X1+X2+X3+X4) #o bien, la regresión de Y vs. todas las demás variables en dataframe datos modelo=lm(Y˜.,datos) #para ver el listado de objetos guardados en ’modelo’ names(modelo) ##IMPRIMIENDO EN PANTALLA VARIOS RESULTADOS RELATIVOS AL MODELO AJUSTADO### #Ver la tabla de parámetros estimados summary(modelo) #Ver tabla de intervalos de confianza para parámetros estimados confint(modelo) #Ver tabla de pruebas secuenciales o con sumas de cuadrados SS1 anova(modelo) #Ver tabla de pruebas parciales o con sumas de cuadrados SS2 library(car) Anova(modelo) #Desanclando variables guardadas en ’datos’ detach(datos) ##GRAFICOS RESIDUALES ESTUDENTIZADOS Y DE NORMALIDAD## #Formando un data frame con los valores ajustados, los predictores y residuos #estudentizados datos.modelo=data.frame(cbind(Yhat=fitted(modelo),datos[-1],res_estudent=rstudent(modelo))) ES #Creando una ventana gráfica de ancho 17 y alto 13 pulgadas win.graph(width=17,height=13,pointsize=8) #Dividiendo la ventana en una matriz de 2x3 para acomodar las seis gráficas de #residuales incluyendo el gráfico de normalidad nf=layout(rbind(c(1,1,2,2,3,3),c(4,4,5,5,6,6))) attach(datos.modelo) plot(Yhat,res_estudent,ylab="Residuos estudentizados",xlab="Valores ajustados",cex.lab=2,cex=2) abline(h=0,lty=2,lwd=2) abline(h=-2,lty=2,col="red",lwd=2) abline(h=2,lty=2,col="red",lwd=2) plot(X1,res_estudent,ylab="Residuos estudentizados",xlab="X1",cex.lab=2,cex=2) abline(h=0,lty=2,lwd=2) abline(h=-2,lty=2,col="red",lwd=2) abline(h=2,lty=2,col="red",lwd=2) 1.6. REGRESIÓN LINEAL MÚLTIPLE CON R 23 plot(X2,res_estudent,ylab="Residuos estudentizados",xlab="X2",cex.lab=2,cex=2) abline(h=0,lty=2,lwd=2) abline(h=-2,lty=2,col="red",lwd=2) abline(h=2,lty=2,col="red",lwd=2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 plot(X3,res_estudent,ylab="Residuos estudentizados",xlab="X3",cex.lab=2,cex=2) abline(h=0,lty=2,lwd=2) abline(h=-2,lty=2,col="red",lwd=2) abline(h=2,lty=2,col="red",lwd=2) plot(X4,res_estudent,ylab="Residuos estudentizados",xlab="X4",cex.lab=2,cex=2) abline(h=0,lty=2,lwd=2) abline(h=-2,lty=2,col="red",lwd=2) abline(h=2,lty=2,col="red",lwd=2) #Gráfico de probabilidad normal sobre residuales estudentizados qqnorm(res_estudent,ylab="Residuales estudentizados",cex.lab=2,cex=2) qqline(res_estudent,lty=2,lwd=2) detach(datos.modelo) #o bien, creando cada gráfico por separado win.graph() plot(fitted(modelo),rstudent(modelo),ylab="Residuos estudentizados", xlab="Valores ajustados",cex.lab=2,cex=2) abline(h=0,lty=2,lwd=2) abline(h=-2,lty=2,col="red",lwd=2) abline(h=2,lty=2,col="red",lwd=2) win.graph() plot(datos$X1,rstudent(modelo),ylab="Residuos estudentizados",xlab="X1",cex.lab=2,cex=2) abline(h=0,lty=2,lwd=2) abline(h=-2,lty=2,col="red",lwd=2) abline(h=2,lty=2,col="red",lwd=2) win.graph() qqnorm(rstudent(modelo),ylab="Residuales estudentizados",cex.lab=2,cex=2) qqline(rstudent(modelo),lty=2,lwd=2) ##TEST DE NORMALIDAD ## #sobre residuales comunes shapiro.test(residuals(modelo)) #o bien, sobre residuales estudentizados shapiro.test(rstudent(modelo)) ES ##INTERVALOS DE PREDICCION PARA RESPUESTA DENTRO DE LA MUESTRA## predict(modelo,interval="prediction") #INTERVALOS DE CONFIANZA PARA RESPUESTA MEDIA DENTRO DE LA MUESTRA## temp4=predict(modelo,interval="confidence") ##PREDICCIONES Y SUS INTERVALOS EN DOS OBSERVACIONES NUEVAS## nuevo=data.frame(X1=c(100,101),X2=c(121,115),X3=c(97,101),X4=c(75,98)) predict(modelo,newdata=nuevo,interval="prediction") Nota: La librerı́a car debe ser descargada del CRAN. Ejemplo 2: (Regresi ón con variables indicadoras) Un gran almacén realizó un experimento para investigar los efectos de los gastos por publicidad sobre las ventas semanales de sus secciones de ropa para caballeros (A), para niños (B) y para damas (C). Se seleccionaron al azar 5 CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R 24 X1 5.2 5.9 7.7 7.9 9.4 8.2 9.0 9.1 10.5 10.5 10.0 10.3 12.1 12.7 13.6 Y 9 10 12 12 14 13 13 12 13 14 18 19 20 21 22 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 SEC A A A A A B B B B B C C C C C 7 semanas para observación en cada sección, y un presupuesto para publicidad (X1, en cientos de dólares) se asignó a cada una de las secciones. Las ventas semanales (en miles de dólares), los gastos de publicidad en cada uno de las tres secciones en cada una de las cinco semanas del estudio se listan en la siguiente tabla. A continuación un programa R para la regresión, modelo con interacción entre variable X1 y SEC, y modelo sin interacción Código R 1.7. ES datos2=data.frame(scan(what=list("",0,0))) A 5.2 9 A 5.9 10 A 7.7 12 A 7.9 12 A 9.4 14 B 8.2 13 B 9.0 13 B 9.1 12 B 10.5 13 B 10.5 14 C 10.0 18 C 10.3 19 C 12.1 20 C 12.7 21 C 13.6 22 names(datos2)=c("SEC","X1","Y") ###GRAFICANDO Y VS. X1 SEGÚN SECCION### attach(datos2) plot(X1,Y,pch=as.numeric(SEC),col=as.numeric(SEC),xlab="X1",ylab="Y",cex=2,cex.lab=2) legend("topleft",legend=c("A","B","C"),pch=c(1:3),col=c(1:3),cex=2) 1.6. REGRESIÓN LINEAL MÚLTIPLE CON R 25 #o bien: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ###MODELO GENERAL: RECTAS DIFERENTES TANTO EN PENDIENTE COMO EN INTERCEPTO### modelo2=lm(Y˜X1*SEC) summary(modelo2) confint(modelo2) 7 plot(datos2$X1,datos2$Y,pch=as.numeric(datos2$SEC),col=as.numeric(datos2$SEC),xlab="X1", ylab="Y",cex=2,cex.lab=2) legend("topleft",legend=c("A","B","C"),pch=c(1:3),col=c(1:3),cex=2) ###MODELO CON RECTAS DIFERENTES SÓLO EN EL INTERCEPTO### modelo3=lm(Y˜X1+SEC) summary(modelo3) confint(modelo3) ###CAMBIANDO NIVEL DE REFERENCIA DE LA VARIABLE CUALITATIVA### ###MODELO CON RECTAS DIFERENTES SÓLO EN EL INTERCEPTO### SEC=relevel(SEC,ref="C") modelo4=lm(Y˜X1+SEC,datos2) summary(modelo4) confint(modelo4) ES detach(datos2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ES 7 26 CAPÍTULO 1. INTRODUCCI ÓN AL LENGUAJE R TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 2 El análisis de series de tiempo 2.1. Introducción ES “El análisis de series de tiempo consiste en el desarrollo de modelos estadı́sticos para explicar el comportamiento de una variable aleatoria que varı́a en el tiempo, con el fin de estimar pronósticos futuros de dicha variable con fines de planeación y toma de decisiones”. El pronóstico realizado se basa en la estructura o comportamiento pasado de la serie, suponiendo que éste se conserva en el futuro. Los métodos de pronóstico son una rama particular de la estadı́stica aplicada y por lo tanto reúnen sus propios conceptos y métodos especı́ficos. Los pronósticos son además una de las principales herramientas de tipo cuantitativo aplicadas en los negocios en sus procesos de planeación y toma de decisiones, y también han sido utilizados en las ciencias sociales y el área militar. Pronosticar puede definirse como “el esfuerzo de prever eventos futuros examinando el pasado” (Gaynor y Kirkpatrick [4]), con en fin de controlar el riesgo y la incertidumbre. Sin embargo, las técnicas de pronóstico pueden estar basadas también en la experiencia o la opinión de “expertos”, o en modelos matemáticos (simulaciones dinámicas) que describen los patrones pasados. La mayorı́a de los pronósticos se basan en el supuesto de que la variable o evento a pronosticar es afectada o por el tiempo o por un conjunto de variables con las cuales puede tener ya sea una relación de causa efecto o bien, una relación de tendencia. El estudio de las series de tiempo además de permitir formular modelos y pronósticos, también permite evaluar los efectos de acciones o decisiones pasadas, conocidas como intervenciones hechas sobre la serie. Estas intervenciones pueden tener un efecto momentáneo o bien un efecto permanente que modifica la estructura de la serie de tiempo intervenida. Es importante reconocer el papel del pronóstico en la organización al igual que los métodos de pronósticos a aplicar. Una organización establece metas y objetivos, trata de predecir los factores ambientales de su negocio, y selecciona las acciones que espera le lleven a sus metas. Las áreas empresariales en las cuales los pronósticos juegan un papel im27 CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 28 portante son (Makridakis et.al [7]): TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Programación de los recursos existentes (Pron ósticos de corto plazo): Para el uso eficiente de los recursos se requiere programar la producción, el transporte, el efectivo, el personal, etc. Para ello el pronóstico del nivel de la demanda de los productos, materiales, mano de obra, la financiación requerida, etc., son esenciales para la buena programación de los recursos existentes. Adquisición de recursos adicionales (pron ósticos de mediano plazo): El lead time para la adquisición de materia prima, la contratación de personal, la compra de maquinaria y equipo, etc. puede variar desde dı́as a varios años. Se requiere pues el pronóstico para establecer los requerimientos futuros de recursos. Determinación de qué recursos son deseados (pron ósticos de largo plazo): Todas las empresas u organizaciones requieren determinar los recursos que desean o necesitan a largo plazo. Decisiones como éstas dependen de las oportunidades de mercado, de los factores ambientales y de sus recursos internos. Las empresas deben desarrollar múltiples aproximaciones para pronosticar eventos inciertos y construir un sistema para pronosticar. Esto a su vez exige conocimiento y habilidad en al menos las siguientes áreas: Identificación y definición de problemas a pronosticar Aplicación de una variedad de métodos de pronóstico Procedimientos para seleccionar los métodos apropiados para una situación especı́fica ES Un soporte organizacional para aplicar y usar métodos de pronóstico formalizados 2.2. Clases de pronósticos - pronósticos cuantitativos Básicamente, la gran clasificación de los métodos de pronóstico es según si es cualitativo (cuándo prácticamente no se cuentan con datos históricos) - tecnológico o cuantitativo (se disponen de datos históricos). En este curso sólo se abordarán algunos métodos cuantitativos. Los métodos cuantitativos pueden aplicarse cuando se dan las siguientes tres condiciones: 1. Se dispone de información histórica 2. La información disponible puede cuantificarse en forma de datos numéricos 2.3. VENTAJAS Y DESVENTAJAS DE LOS M ÉTODOS CUANTITATIVOS 29 3. Puede asumirse que algunos aspectos de los patrones dados en el pasado continuarán en el futuro (supuesto de continuidad). ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Los métodos cuantitativos varı́an considerablemente, y han sido desarrollados por diversas disciplinas para diferentes propósitos, sus costos y precisiones varı́an y deben ser consideradas al momento de seleccionarlos. El pronóstico formal implica objetividad y emplea un método estadı́stico para obtener pronósticos usando una base regular con fechas especı́ficas de inicio y fin (Campos Santillán [1]). Involucran también la extrapolación pero de una manera sistemática buscando minimizar el error de pronóstico. Los métodos cuantitativos de pronóstico se dividen en los métodos de Series de tiempo (suavizamiento, descomposición, métodos Box - Jenkins) y métodos causales o econométricos (regresión y correlación). Los métodos de series de tiempo están basados en el análisis de una secuencia cronológica de observaciones de la variable de interés y bajo el supuesto de continuidad antes mencionado, realiza la predicción del futuro basado en datos históricos. Por tanto, el objetivo de estos métodos es descubrir el patrón subyacente en la serie de datos históricos y extrapolar ese patrón al futuro. Los datos pueden ser anuales, trimestrales, mensuales, semanales, diarios, horarios, etc., la variable de interés puede ser de naturaleza macroeconómica, tal como una medida de agregación de la economı́a o la industria, o de naturaleza micro económica como aquellas medidas para una empresa. Los modelos causales por su parte asumen que el factor o variable a ser pronosticada (variable dependiente) mantiene una relación de causa -efecto con una o más variables independientes o predictoras, por tanto, el comportamiento de estas últimas permite pronosticar el comportamiento de la variable dependiente. Por ejemplo, las ventas pueden ser explicadas por los gastos en publicidad, el precio de ventas, el ingreso disponible de los consumidores, el nivel de competencia en el mercado, etc. Por tanto, el modelo causal tiene como propósito descubrir la forma (función matemática) de esa relación y usarla para pronosticar los valores futuros de la variable dependiente. Puede verse entonces que la diferencia fundamental entre los métodos de series de tiempo y los causales consiste en que los primeros tratan la información como una caja negra sin intentar descubrir los factores que están afectando la variable que se analiza, el sistema es pues un proceso no identificado. 2.3. Ventajas y desventajas de los métodos cuantitativos de pronóstico En general los métodos cuantitativos exhiben las siguientes ventajas: 1. Los pronósticos están basados en valores predeterminados y pueden ser por tanto objetivos 2. Es posible medir la exactitud de los pronósticos. CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 30 3. Después de construir los modelos, se puede ahorrar tiempo en la generación de los pronósticos y utilizar repetitivamente dichos modelos. 7 4. Se pueden obtener pronósticos puntuales (un valor especı́fico para cada periodo) o por intervalos (rango de valores basados en un intervalo de confianza). TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Pero los métodos cuantitativos exhiben también desventajas, tales como: 1. Sólo son apropiados para pronósticos de corto y mediano plazo con una precisión razonable. 2. No hay un método para contabilizar las influencias externas o los cambios que pudieran afectar los resultados. Un pronóstico cuantitativo puede ser muy bueno si las condiciones que han existido hasta el momento se mantienen; sin embargo, un cambio inducido por fuerzas externas en cierto punto del horizonte de pronóstico puede hacer bastante malo al pronóstico. 2.4. La precisión de un pronóstico vs. el horizonte de tiempo ES Un aspecto fundamental a considerar en los pronósticos es la precisión, la cual es una función inversa del horizonte de tiempo (Campos Santillán [1]): mientras más cercano en el tiempo está el futuro a pronosticar, mayor exactitud del pronóstico. Los pronósticos de largo plazo suelen ser más imprecisos, debido a variaciones inflacionarias y factores macroeconómicos imprevistos que introducen incertidumbre e inexactitud. Los métodos cuantitativos deben ser acompañados de los cualitativos para un mejor pronóstico del futuro lejano. En los pronósticos de mediano plazo los factores macroeconómicos mayores tienden a ser menos influyentes pero su impredecibilidad hace que deban ser tenidos en cuenta. A mediano plazo los factores que más causan inexactitud son las variaciones comerciales especı́ficas del producto (la moda) y la estacionalidad, que obligan a revisar periódicamente los pronósticos dentro del ciclo de mediano plazo. El corto plazo es afectado positivamente por la inercia de muchas de las actividades económicas en las cuales los modelos de series de tiempo pueden generar pronósticos más o menos exactos. 2.5. Las tareas en la realización de un pronóstico De acuerdo a Gaynor y Kirkpatrick [4], se deben establecer las siguientes prioridades en la construcción de un modelo de pronóstico: Tarea 1: Determinar el objetivo primario del proyecto de pronóstico y especificar claramente la variable o variables a ser pronosticadas, la periodicidad del 2.6. LA METODOLOG ÍA DE LOS DATOS DE SERIES DE TIEMPO 31 pronóstico (semanales, mensuales, trimestrales, anuales, etc.), la longitud de los pronósticos (inmediatos, corto, mediano o largo plazo) y si relaciones causales son importantes en el pronóstico. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tarea 2: Determinar la disponibilidad de datos chequeando todas las fuentes primarias apropiadas de datos, tanto públicas como privadas. Tarea 3: Recoger los datos, y asegurarse que la tabulación de estos es comparable y consistente sobre el tiempo. Tarea 4: Establecer la lı́nea de tiempo mediante consideración cuidadosa del tipo de modelo de pronóstico, incluyendo el número de observaciones requeridas para la estimación del modelo y el número de perı́odos de tiempo en el periodo de pronóstico ex ante (periodo futuro del cual no se tienen observaciones) Tarea 5: Graficar los datos y examinar sus patrones, para hacer una determinación final de cuál tipo de modelo es apropiado considerar. Tarea 6: Estimar los modelos seleccionados. Tarea 7: Evaluar el modelo sobre el periodo de estimación y seleccionar el mejor modelo comparando tanto las medidas resumen de pronóstico y los gráficos de los valores actuales versus los pronosticados y los errores. Examinar los gráficos para la habilidad del modelo para capturar los puntos de cambio. Tarea 8: Evaluar el modelo usando el pronóstico ex post (Periodo de tiempo de observaciones conocidas después del fin del periodo muestral usado en el ajuste). Si es posible, usar tanto medidas de resumen de pronóstico y gráficos. ES Tarea 9: Generar el pronóstico ex ante con lı́mites de confianza apropiados y preparar la presentación del pronóstico. Tarea 10: Después de establecer el modelo, hacer seguimiento periódico al modelo actualizándolo y revaluándolo. 2.6. La metodologı́a de los datos de series de tiempo y pronósticos En la construcción de un modelo de pronóstico, por un método cuantitativo, se toma una muestra de observaciones del conjunto de datos disponibles. El método de recolección de los datos y los pronósticos dependen de los factores representados a continuación: CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 32 Yfinal 7 Yinicio TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Datos históricos Yt Y1 −∞ Muestra Yt YN Yn +∞ tiempo Ŷ1 Ŷt−m Ŷ0 Pronósticos dentro de la muestra Ŷn ŶN +1 Ŷn+1 ŶN +k ŶN Pronóstico ex ante Pronóstico ex post Perı́odo de pronóstico ES Perı́odo de backasting Figura 2.1: Lı́nea de tiempo vs. ajuste y pronóstico de una serie de tiempo (Gaynor y Kirkpatrick [4]) Datos históricos: Corresponden desde el valor del periodo de tiempo de inicio Yinicio hasta el valor del periodo de tiempo final Y final . El tiempo de inicio es el periodo en el cual la recolección de datos sobre la variable comienza y el tiempo final, corresponde al tiempo de la observación más reciente de esa variable. Este último periodo debe ser considerado como el “hoy”. Periodo muestral para an álisis: Cubre los valores Y 1 , · · · , Yn , es el periodo sobre el cual será construido y estimado el modelo de pronóstico. Y inicio y Y1 no necesariamente corresponden. En la Figura 2.1 se ilustra un caso en el 2.6. LA METODOLOG ÍA DE LOS DATOS DE SERIES DE TIEMPO 33 ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 cual la muestra es un subconjunto de los datos históricos. La razón por la cual Yinicio y Y1 pueden diferir es que en algún punto del tiempo pueden haber ocurrido cambios estructurales o en las relaciones subyacentes que modifican el patrón de los datos. Los modelos de series son construidos bajo el supuesto de continuidad, en tanto que los modelos causales son generados con base en presunciones sobre relaciones de estructura y comportamiento permanentes sobre un periodo de tiempo, entonces puede ser que el número de periodos de tiempo desde un cambio identificado sobre la estructura o comportamiento, no es suficiente para la estimación de la serie y/o del modelo causal. En ese caso debe tenerse cuidado, y mantenerse en mente los cambios ocurridos. El periodo muestral concluye con la observación Y n , pero este periodo podrı́a extenderse hasta la observación Y final , es decir Yn = Yfinal . Aunque podrı́a procederse de tal manera cuando hay muchas observaciones entre Y n y Yfinal , en la práctica no se procede ası́, primero porque muchas de las variables económicas son entregadas como estimaciones sujetas a una posterior revisión, y estos datos revisados pueden ser muy diferentes de los estimados preliminarmente, por esto no se incluyen las estimaciones en la muestra para el ajuste del modelo de pronóstico. En segundo lugar, el proceso de reestimar y probar continuamente un modelo de pronóstico, consume tiempo y costos. Por tanto la exactitud de los modelos es monitoreada constantemente y sólo después que ciertos estándares de calidad subjetivos dejen de ser satisfechos, entonces el modelo es reestimado y probado. Periodo de estimaci ón: En este perı́odo se generan los valores de pronóstico Ŷ1 , Ŷ2 · · · , Ŷn , los cuales conforman el pronóstico del modelo dentro de la muestra. A partir de los valores actuales y pronosticados para Y t , es posible calcular los errores de ajuste e 1 , · · · , en del modelo, y por tanto la exactitud de éste (dentro del periodo de estimación). Todos los valores más allá de la observación Yn , deben ser pronosticados, lo que en la lı́nea de tiempo se denomina periodo de pronóstico. Todos los pronósticos generados dentro de este periodo se conocen como pronósticos fuera de la muestra. Partes o periodos dentro del periodo de pron óstico: El periodo de pronóstico es dividido en dos sub periodos: Periodo de pronóstico ex post: Periodo que va desde la primera observación después del final del periodo muestral ( Ŷn+1 ) hasta la observación más reciente (ŶN ). Se caracteriza porque el investigador dispone de valores actuales de la variable de la serie de tiempo. Con las observaciones de este periodo es posible determinar la exactitud del modelo fuera de la muestra usando sólo los valores actuales y pronosticados de Y t dentro del periodo de pronósticos ex post. Si la exactitud del modelo fuera de la muestra es cuestionable, se tienen dos caminos: buscar un modelo alternativo con mayor exactitud o reestimar el modelo actual extendiendo el periodo de estimación hasta el periodo ex post. En este último caso se generarı́an los pronósticos muestrales desde CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 34 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Ŷ1 , Ŷ2 , · · · , ŶN y no se tendrı́a un pronóstico ex post. Periodo de pronóstico ex ante: Periodo de tiempo en el cual no se tienen observaciones de la serie de tiempo de la variable de estudio o de cualquier otra variable importante. En ese caso se pronostica dentro del futuro. Los pronósticos de este periodo corresponden a ŶN +1 , ŶN +2 , · · · , ŶN +k , para las cuales no es posible determinar a priori la exactitud de los pronósticos ex ante. Periodo anterior a Y inicio : Caracterizado por la ausencia de datos sobre la variable. Es posible realizar backasting (estimación de valores pasados y desconocidos) de valores de la serie, lo cual es hecho en ocasiones (según el modelo o metodologı́a aplicada) cuando el periodo muestral no contiene suficientes observaciones para el análisis o ajuste. 2.7. Estudio descriptivo de las series de tiempo - componentes en una serie de tiempo ES Para la selección apropiada de los modelos para una serie de tiempo es preciso identificar los patrones básicos o componentes en ésta. Estas componentes son: Componente horizontal, irregular o error (E t ): También es llamado ruido blanco, caracterizado por fluctuaciones erráticas sin un patrón definido alrededor de una media constante. Muy a menudo estas fluctuaciones son debidas a eventos externos que sólo ocurren en un tiempo y de forma impredecible. Se dice de una serie que sólo exhibe tal comportamiento que es estacionaria en su media. Tal serie por ejemplo, aparece o es asumida en las situaciones de control estadı́stico de procesos. Componente de tendencia (T t ): Patrón de largo plazo caracterizado por la persistencia a un crecimiento o a un decrecimiento de los valores de la serie, por tanto refleja el crecimiento o declinación de la serie. Componente estacional (S t ): Patrón de cambio regular que se completa dentro de un año calendario y que se repite sobre una base anual. Este comportamiento es debido a factores tales como los consumos o las estaciones climáticas, es decir factores que ocurren con una periodicidad bien sea semanales, mensuales, trimestrales, o semestrales. Las ventas de productos como bebidas, helados, prendas de vestir, jugueterı́a, etc. están sujetos a este tipo de patrones. Componente cı́clica (C t ): Cambios o movimientos hacia arriba y hacia abajo que ocurren sobre una duración de 2 o más años, debido a la influencia de fluctuaciones económicas de largo plazo como las asociadas con los ciclos de negocios. Por ejemplo las ventas de propiedad raı́z, el ciclo de negocios medido en términos del PIB. Un ciclo es medido desde un pico a otro o desde una depresión a otra, de modo que un periodo de prosperidad es seguido por un periodo de recesión, lo cual hace que cambie la tendencia de los datos hacia arriba (expansión) a una tendencia hacia abajo (contracción); el movimiento hacia abajo alcanza su punto más mı́nimo luego de lo cual comienza el 2.7. ESTUDIO DESCRIPTIVO DE LAS SERIES DE TIEMPO 35 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 movimiento hacia arriba hasta un punto máximo. Los ciclos son las componentes más difı́ciles de pronosticar debido a sus marcos de tiempo más largos. La diferencia entre ciclos y patrones estacionales es que los segundos tienen una longitud constante que se repite sobre una base regular periódica. Mientras que los ciclos varı́an en longitud y magnitud. El propósito de los métodos de series de tiempo es eliminar las irregularidades e influencias estacionales y proyectar la serie de datos más bien con base en sus patrones de tendencia/ciclo (Campos Satillán [1]). Una serie de tiempo puede ajustarse a uno de los cuatro patrones descritos o ser una combinación de todos ellos, bien sea en forma aditiva (serie de componentes aditivas), Yt = Tt + St + Et (2.1) o en forma multiplicativa (serie de componentes multiplicativas), Yt = Tt × St × Et . (2.2) De acuerdo a los modelos generales plantados en las ecuaciones (2.1) y (2.2), los ciclos y la componente de error quedan mezcladas en E t . El análisis gráfico de las series de tiempo es una buena manera de identificar estas componentes. La Figura 2.2 presenta una serie estacional aditiva observed Serie original 130 90 100 110 120 130 Decomposition of additive time series 120 110 0 seasonal −8 −6 −4 −2 4 Componente estacional 0 2 Componente de error (incluye ciclos) −2 random ES 2 100 trend Componente de tendencia 1990 1992 1994 1996 1998 2000 2002 Time Figura 2.2: Descomposición serie de tiempo aditiva con función R decompose (Índice mensual de salario real sector industrial, enero de 1990 - noviembre de 2001) y sus componentes obtenidas por un método de descomposición: CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 36 Tendencia Estacionalidad Error TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En R podemos obtener la descomposición de una serie a través de las funciones decompose y stl: Código R 2.1. salario<-scan() 94.08 102.23 103.99 103.21 102.59 100.95 101.67 101.71 99.93 100.11 99.65 89.81 90.71 99.88 100.75 101.67 100.58 98.82 98.21 98.96 99.30 98.40 99.17 91.12 90.85 102.67 104.36 101.71 101.48 100.29 100.33 102.24 101.24 102.02 103.79 95.95 96.52 106.55 108.50 108.04 108.68 108.34 108.14 109.75 108.28 108.76 109.36 101.03 101.01 109.63 111.20 109.67 110.24 110.94 110.38 111.50 111.73 112.94 113.87 107.39 103.38 113.84 114.96 116.00 113.54 113.25 113.35 114.88 113.81 116.03 117.50 109.50 105.87 117.69 119.22 118.80 118.48 116.65 116.54 117.03 116.04 116.87 118.60 108.91 109.53 120.21 122.15 122.48 124.30 121.99 122.20 121.41 120.69 122.72 124.70 115.65 114.15 123.45 124.66 122.08 121.64 119.48 120.02 122.33 121.50 122.45 123.63 115.43 111.66 124.21 126.22 126.88 126.88 127.33 127.27 128.88 128.54 130.28 132.15 124.65 119.19 131.69 130.87 129.95 130.83 131.23 132.64 133.50 132.98 134.38 135.12 130.16 121.78 132.44 132.89 130.83 131.41 130.40 131.79 132.46 131.00 132.46 133.61 salario<-ts(salario,frequency=12,start=c(1990,1)) #Descomposicion de la serie mediante la funcion decompose descom<-decompose(salario,type="additive") plot(descom) ES #Descomposicion de la serie mediante la funcion stl descom2<-stl(salario,s.window="periodic") plot(descom2) Las funciones decompose (ver Apéndice A.1) y stl (ver Apéndice A.3) estiman los efectos de tendencia y estacionales usando métodos basados en promedios móviles y polinomiales, respectivamente. Podemos valernos de estas funciones como métodos descriptivos útiles en la definición de un modelo estadı́stico. En la Figura 2.3 puede apreciarse la descomposición de la serie de salario real presentada anteriormente en la Figura 2.2, esta vez, usando la función R stl. Una serie de componentes multiplicativas es presentada en la Figura 2.4, esta serie corresponde a ventas de licor en Estados Unidos (miles de dólares nominales), enero de 1967 - diciembre de 1994. 37 2 0 seasonal −8 −6 −4 −2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Serie original 90 data 100 110 120 130 2.7. ESTUDIO DESCRIPTIVO DE LAS SERIES DE TIEMPO Componente de tendencia 4 100 110 trend 120 130 Componente estacional 2 −2 0 remainder Componente de error (incluye ciclos) 1990 1992 1994 1996 1998 2000 2002 time Figura 2.3: Descomposición serie de tiempo aditiva con función R stl 1500 Serie original Componente estacional 1.1 seasonal 1.3 600 1000 1400 Componente de tendencia 1.00 0.95 Componente de error (incluye ciclos) 0.90 random 1.05 0.9 ES trend 1800 500 observed 2500 Decomposition of multiplicative time series 1970 1975 1980 1985 1990 1995 Time Figura 2.4: Descomposición serie de tiempo multiplicativa con función R decompose CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 38 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 licor<-scan() 480 467 514 505 534 546 539 541 551 537 584 854 522 506 558 538 605 583 607 624 570 609 675 861 605 537 575 588 656 623 661 668 603 639 669 915 643 563 616 645 703 684 731 722 678 713 725 989 687 629 687 706 754 774 825 755 751 783 804 1139 711 693 790 754 799 824 854 810 798 807 832 1142 740 713 791 768 846 884 886 878 813 840 884 1245 796 750 834 838 902 895 962 990 882 936 997 1305 866 805 905 873 1024 985 1049 1034 951 1010 1016 1378 915 854 922 965 1014 1040 1137 1026 992 1052 1056 1469 916 934 987 1018 1048 1086 1144 1077 1036 1076 1114 1595 949 930 1045 1015 1091 1142 1182 1161 1145 1119 1189 1662 1048 1019 1129 1092 1176 1297 1322 1330 1263 1250 1341 1927 1271 1238 1283 1283 1413 1371 1425 1453 1311 1387 1454 1993 1328 1250 1308 1350 1455 1442 1530 1505 1421 1485 1465 2163 1361 1284 1392 1442 1504 1488 1606 1488 1442 1495 1509 2135 1369 1320 1448 1495 1522 1575 1666 1617 1567 1551 1624 2367 1377 1294 1401 1362 1466 1559 1569 1575 1456 1487 1549 2178 1423 1312 1465 1488 1577 1591 1669 1697 1659 1597 1728 2326 1529 1395 1567 1536 1682 1675 1758 1708 1561 1643 1635 2240 1485 1376 1459 1526 1659 1623 1731 1662 1589 1683 1672 2361 1480 1385 1505 1576 1649 1684 1748 1642 1571 1567 1637 2397 1483 1390 1562 1573 1718 1752 1809 1759 1698 1643 1718 2399 1551 1497 1697 1672 1805 1903 1928 1963 1807 1843 1950 2736 1798 1700 1901 1820 1982 1957 2076 2107 1799 1854 1968 2364 1662 1681 1725 1796 1938 1871 2001 1934 1825 1930 1867 2553 1624 1533 1676 1706 1781 1772 1922 1743 1669 1713 1733 2369 1491 1445 1643 1683 1751 1774 1893 1776 1743 1728 1769 2431 7 Código R 2.2. licor<-ts(licor,frequency=12,start=c(1967,1)) descom3<-decompose(licor,type="multiplicative") plot(descom3) ES Si comparamos el comportamiento de las series presentadas en las Figuras 2.2 y 2.4, en ambas series existe una tendencia creciente y un patrón estacional, sin embargo en la última podemos apreciar cómo el efecto estacional tiende a aumentar a medida que aumenta la tendencia, por esto, la ecuación (2.2) es más apropiada para describir la serie de ventas de licor. En general el modelo multiplicativo es más apropiado que el aditivo cuando la varianza de la serie original se incrementa (o disminuye) con el tiempo. La transformación logarı́tmica resulta apropiada para transformar un modelo de componentes multiplicativos en (2.2) a uno de componentes aditivas, log(Yt ) = log(Tt ) + log(St ) + log(Et ) Yt∗ = Tt∗ + St∗ + Et∗ (2.3a) (2.3b) en (2.3) aparece la transformación del modelo multiplicativo y observe que redefiniendo los logaritmos en (2.3a) por las correspondientes variables en (2.3b) la trasformación nos lleva a un modelo aditivo sobre los logaritmos de 2.7. ESTUDIO DESCRIPTIVO DE LAS SERIES DE TIEMPO 39 la serie original, como puede observarse en la Figura 2.5, que presenta la descomposición de la serie de los logaritmos de las ventas de licor. Código R 2.3. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 loglicor<-log(licor) descom4<-decompose(loglicor,type="additive") plot(descom4) 7.5 7.0 Log(serie original 7.6 6.5 observed Decomposition of additive time series 7.2 6.8 0.1 0.2 0.3 Componente estacional 0.00 0.05 Componente de error (incluye ciclos) −0.10 random −0.1 seasonal 6.4 trend Componente de tendencia 1970 1975 1980 1985 1990 1995 Time Figura 2.5: Descomposición de los logaritmos de las ventas de licor ES Las funciones R decompose y stl generan los valores de las series de las componentes de tendencia, estacionalidad y error, las cuales pueden ser manipuladas individualmente, en cada caso. Por ejemplo, con el siguiente código R obtenemos por separado cada componente de la serie de salarios, generadas con la función decompose, y podemos graficar cada una en ventanas independientes para mejor visualización (ver Figuras 2.6, 2.7 y 2.8), Código R 2.4. descom<-decompose(salario,type="additive") tendencia=descom$trend estacionalidad=descom$seasonal error=descom$random win.graph(width=4,height=3,pointsize=8) plot(tendencia) win.graph(width=4,height=3,pointsize=8) plot(estacionalidad) win.graph(width=4,height=3,pointsize=8) plot(error) CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 7 120 100 110 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 tendencia 130 40 1990 1992 1994 1996 1998 2000 2002 Time Componente de tendencia serie de salarios, obtenida con decompose −2 −4 −8 −6 estacionalidad 0 2 Figura 2.6: 1990 1992 1994 1996 1998 2000 Time Componente estacional serie de salarios, obtenida con decompose 0 −2 error 2 4 ES Figura 2.7: 1990 1992 1994 1996 1998 2000 Time Figura 2.8: Componente de error serie de salarios, obtenida con decompose 2.7. ESTUDIO DESCRIPTIVO DE LAS SERIES DE TIEMPO 41 Con la función stl, podemos obtener las figuras anteriores usando el siguiente código R (ver Figuras 2.9, 2.10 y 2.11) Código R 2.5. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 descom2<-stl(salario,s.window="periodic") tendencia=descom2[[1]][,2] estacionalidad=descom2[[1]][,1] error=descom2[[1]][,3] win.graph(width=4,height=3,pointsize=8) plot(tendencia) win.graph(width=4,height=3,pointsize=8) plot(estacionalidad) win.graph(width=4,height=3,pointsize=8) plot(error) Podemos además visualizar la tendencia removiendo el efecto estacional de la serie original agregando los datos al nivel anual mediante la función R aggregate, en tanto que un resumen de los valores de cada estación puede obtenerse mediante la función cycle (ver Figuras 2.12 y 2.13) Código R 2.6. win.graph(width=5,height=4,pointsize=8) plot(aggregate(salario)) 120 110 100 tendencia ES 130 win.graph(width=5,height=4,pointsize=8) boxplot(salario˜cycle(salario),names=month.abb) 1990 1992 1994 1996 1998 2000 2002 Time Figura 2.9: Componente de tendencia serie de salarios, obtenida con stl CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO 7 −8 −6 −4 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 −2 estacionalidad 0 2 42 1990 1992 1994 1996 1998 2000 2002 Time Componente estacional serie de salarios, obtenida con stl −2 0 error 2 4 Figura 2.10: 1990 1992 1994 1996 1998 2000 2002 Time ES Figura 2.11: Componente de error serie de salarios, obtenida con stl 2.7. ESTUDIO DESCRIPTIVO DE LAS SERIES DE TIEMPO 7 1400 1200 1300 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 aggregate(salario) 1500 43 1990 1992 1994 1996 1998 2000 Time Componente de tendencia serie de salarios, obtenida con aggregate 90 100 110 120 130 Figura 2.12: ES Jan Figura 2.13: Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Componente estacional serie de salarios, obtenida con cycle CAPÍTULO 2. EL ANÁLISIS DE SERIES DE TIEMPO ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 44 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 3 Modelos de regresión para tendencia 3.1. Tendencia determinı́stica vs. estocástica Como definimos previamente, la tendencia de una serie es un patrón de largo plazo caracterizado por la persistencia a un crecimiento o a un decrecimiento de los valores de la serie, por tanto refleja el crecimiento o declinación debido a la evolución lenta de factores tecnológicos, demográficos, sociales, entre otros. Cuando tal evolución ocurre de forma perfectamente predecible decimos que la tendencia es determinı́stica, es decir, podemos identificar la presencia de efectos permanentes sobre la serie temporal. Observe por ejemplo las series en la Figura 3.1 (los datos son leı́dos del archivo STYLEKP.DAT y están disponibles también al final de este capı́tulo). Código R 3.1. #La siguiente linea permite leer los datos guardados en archivo #de texto en disco local. file.choose() abre ventana de windows para #explorar y ubicar el archivo. header=T para indicar que los datos #están encabezados por nombre de la columna; si no hay encabezado, se toma header=F ES datos.stylekp=read.table(file.choose(),header=T) datos.stylekp=ts(datos.stylekp,frequency=1,start=1960) datos.stylekp Time Series: Start = 1960 End = 1989 Frequency = 1 AGRICULTURE MANUFACTURING RETAIL SERVICES 1960 68.3 338.7 153.8 190.2 1961 67.5 339.4 153.2 197.7 1962 67.1 368.3 163.3 207.7 1963 67.2 397.4 169.0 217.4 1964 65.2 425.4 179.4 230.7 1965 66.7 462.5 190.0 240.4 1966 62.4 497.9 199.2 253.9 1967 65.5 496.6 201.5 265.2 1968 63.6 522.0 211.6 274.7 1969 65.3 536.7 212.7 287.8 1970 68.8 506.8 215.6 295.7 1971 70.6 515.5 224.5 302.4 1972 70.9 561.2 239.8 320.0 1973 70.3 621.3 255.6 340.2 1974 69.7 591.6 245.2 347.5 1975 73.1 547.5 247.5 352.4 45 CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 46 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 1976 71.5 600.6 262.8 367.7 1977 73.3 664.8 270.5 399.6 1978 73.0 694.7 284.8 421.5 1979 77.0 712.2 291.3 436.9 1980 76.4 673.9 281.7 450.9 1981 87.4 678.6 286.4 463.0 1982 89.6 634.6 287.5 463.6 1983 76.7 674.2 307.8 480.4 1984 84.2 752.4 334.0 509.7 1985 95.8 779.2 354.4 538.6 1986 103.6 803.2 377.5 565.8 1987 105.1 852.2 371.6 592.6 1988 97.0 917.4 399.2 623.3 1989 100.5 929.0 412.0 652.3 win.graph(width=4.5,height=7,pointsize=8) plot(datos.stylekp) Tt = β0 + β1t + β2t2 + β3t3 300 200 250 RETAIL 90 80 150 70 AGRICULTURE 350 100 400 Tt = β0 + β1t + β2t2 1965 1970 1975 1980 1985 1990 1960 1965 1970 1975 1980 t t Tt = β0 + β1t + β2t2 + β3t3 Tt = β0 + β1t + β2t2 + β3t3 1985 1990 1985 1990 Figura 3.1: 500 300 400 SERVICES 700 600 500 200 400 ES MANUFACTURING 800 600 900 1960 1960 1965 1970 1975 t 1980 1985 1990 1960 1965 1970 1975 1980 t Componentes claves del PIB real de Estados Unidos, registradas por año de 1960 a 1989, en millones de dólares de 1982. Fuente: Diebold [3], stylekp.dat En estas tres series podemos modelar la tendencia T t como un polinomio en t, es decir, de la forma T t = β0 + β1 t + β2 t2 + · · · + βp tp . En contraste, existen series en las cuales una función determinı́stica para la tendencia no resulta intrı́nseca a todo el proceso de forma que ella pueda asumirse como un patrón que persistirá en el futuro. Por ejemplo, la serie de la Figura 3.2 presenta una tendencia estocástica (datos leı́dos desde archivo EXCHRATE.DAT): 3.1. TENDENCIA DETERMIN ÍSTICA VS. ESTOC ÁSTICA 47 Código R 3.2. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Time Series: Start = 1 End = 620 Frequency = 1 exchrate [1,] 1.0000000 [2,] 1.6268391 [3,] 1.6984192 [4,] 2.0079907 [5,] 1.4345695 [6,] 2.7828483 [7,] 2.8362358 [8,] 4.3383264 . . . [615,] 12.8902860 [616,] 11.9726690 [617,] 13.4475750 [618,] 15.7608530 [619,] 17.2702810 [620,] 15.3228160 7 datos.exchrate=read.table(file.choose(),header=T) datos.exchrate=ts(datos.exchrate,frequency=1) datos.exchrate win.graph(width=4.5,height=4.5,pointsize=8);plot(datos.exchrate) En series de este tipo la tendencia es impulsada por choques estocásticos y no presentan un nivel particular hacia el cual tienda a regresar; la serie se mueve hacia donde la obliguen los choques recibidos. Veremos más adelante que tales series pueden modelarse de acuerdo a lo que se conoce como una caminata aleatoria, en la que el valor de la serie en t es el valor de la serie en t−1 más un movimiento totalmente aleatorio determinado por un ruido blanco at . La Figura 3.3 ilustra dos realizaciones de una caminata aleatoria simulada en R: ES Código R 3.3. #SIMULANDO UNA CAMINATA ALEATORIA #Una forma (se suma 400 para Y0=400) at=rnorm(550,0,5) #at es un RB N(0,25) y se generan 550 observaciones x=filter(at,filter=1,method="recursive") x=ts(x[51:550]+400,frequency=1) #se toman las últimas 500 observaciones #Otra forma (se suma 400 para Y0=400) at2=rnorm(550,0,5) y=cumsum(at2)+400; y=ts(y[51:550],frequency=1) #Graficando las dos series simuladas superpuestas win.graph(width=4.5,height=4.5,pointsize=8) plot(x,ylab="",ylim=c(min(x,y),max(x,y)),main=expression(paste("Caminata aleatoria",sep=" ", Y[t]==Y[t-1]+a[t],sep=", ",Y[0]==400,sep=", ",a[t]==RBN(0,25)))) par(new=T) plot.ts(y,ylab="",ylim=c(min(x,y),max(x,y)),col=2) CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 15 0 5 10 exchrate TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 20 25 48 0 100 200 300 400 500 600 Time Figura 3.2: Tasa de cambio de Hungrı́a, 620 observaciones Fuente: Diebold [3], exchrate.dat ES 300 350 400 Caminata aleatoria Yt = Yt−1 + at, Y0 = 400, at = RBN(0, 25) 0 100 200 300 400 500 Time Figura 3.3: Dos realizaciones de una caminata aleatoria En general, consideramos un modelo determinı́stico para la tendencia cuando ésta sea uniforme o suave. Cuando recurrimos a funciones polinomiales casi siempre se usan polinomios de órdenes bajos para mantener suavidad en el comportamiento, por ejemplo hasta un polinomio de orden 3, pero existen casos dónde la tendencia queda mejor modelada por una función no lineal diferente, por ejemplo una exponencial, es decir, T t = β0 eβ1 t . Observe por ejemplo en la Figura 3.4 la serie del volumen mensual de operaciones de acciones negociadas en la bolsa de Nueva York (Diebold, [3], se desconoce fecha de ini- 3.2. ESTIMACIÓN DE MODELOS DE TENDENCIA 49 7 cio) y la serie de su logaritmo. Es claro que la tranformación logarı́tmica logra linealizar la tendencia (además de estabilizar en parte la varianza), es decir log Tt = log(β0 ) + β1 t, ası́, podemos en este caso ajustar un modelo de regresión lineal simple para la serie transformada. Este último modelo es conocido como modelo de tendencia log lineal. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Código R 3.4. #Leyendo datos de archivo de texto local nyse_vol=read.table(file.choose(),header=T) nyse_vol=ts(nyse_vol,frequency=1) 6 log(FSVOL) 0 3 1000 4 2000 5 3000 FSVOL 4000 7 5000 8 6000 #Graficando la serie y su logaritmo win.graph(width=7,height=4,pointsize=8) nf=layout(cbind(c(1,1),c(2,2))) plot(nyse_vol) plot(log(nyse_vol),ylab="log(FSVOL)") 0 100 200 300 400 Time 0 100 200 300 400 500 Time Lado izquierdo: volumen mensual de operaciones de acciones negociadas en la bolsa de Nueva York; lado derecho: Logaritmo de la serie. 542 observaciones. Fuente: Diebold [3], nyse vol.dat. ES Figura 3.4: 500 3.2. Estimación de modelos de tendencia 3.2.1. Tendencia polinomial Para el caso de modelos polinomiales para la tendencia, T t = β0 + β1 t + β2 t + · · · , +βp tp y sin presencia de componente estacional, definimos el modelo estadı́stico para la serie como 2 Yt = Tt + Et = β0 + β1 t + β2 t2 + · · · , +βp tp + Et , Et ∼ N(0, σ 2 ) iid (3.1) CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 50 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Y1 = β0 + β1 · 1 + β2 · 12 + · · · , βp · 1p + E1 Y2 = β0 + β1 · 2 + β2 · 22 + · · · , βp · 2p + E2 .. . Yn = β0 + β1 · n + β2 · n2 + · · · , βp · np + En 7 que puede ser ajustado por regresión lineal múltiple, usando como variables explicatorias a tj , j = 1, 2, · · · , p. Por ejemplo, para las cuatro series en la Figura 3.1, para una serie de tamaño n, procedemos al ajuste definiendo un sistema de n ecuaciones en p + 1 variables (los parámetros β j , j = 0, 1, · · · , p): (3.2) que matricialmente, tiene la representación y = Xβ + e, donde ⎡ ⎤ ⎡ ⎤ ⎡ ⎡ ⎤ ⎤ β0 Y1 1 1 1 ··· 1 E1 ⎢β1 ⎥ ⎢ Y2 ⎥ ⎢1 2 22 · · · 2p ⎥ ⎢ ⎥ ⎢ E2 ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎥ y = ⎢ .. ⎥ X = ⎢ .. .. .. β = ⎢β2 ⎥ e = ⎢ .. ⎥ . .⎥ ⎢ .. ⎥ ⎣.⎦ ⎣ . . . · · · .. ⎦ ⎣ . ⎦ ⎣.⎦ 2 p Yn n×1 1 n n · · · n n×(p+1) En n×1 βp (p+1)×1 Para la estimación por mı́nimos cuadrados se busca β que minimice la suma de cuadrados del error n S(β) = (y − Xβ) (y − Xβ) = e e = t t Et2 (3.3) t=1 esto es β̂ = argmin S(β) (3.4) β ES donde β̂ es el vector de parámetros estimados. Existiendo (X t X)−1 , la solución de mı́nimos cuadrados es ⎡ ⎤ β̂0 ⎢β̂ ⎥ ⎢ 1⎥ (3.5) β̂ = (Xt X)−1 Xt y = ⎢ . ⎥ ⎣ .. ⎦ β̂p Sea H = X(Xt X)−1 Xt una matrix n × n e I la matriz identidad n × n. El vector de valores estimados o ajustados para la serie corresponde a ⎡ ⎤ Ŷ1 ⎢ Ŷ ⎥ ⎢ 2⎥ ŷ = Xβ̂ = Hy = ⎢ . ⎥ , (3.6) ⎣ .. ⎦ Ŷn 3.2. ESTIMACIÓN DE MODELOS DE TENDENCIA 7 (3.7) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 en cuanto que el vector de los residuales corresponde a ⎡ ⎤ Ê1 ⎢ Ê ⎥ ⎢ 2⎥ ê = y − ŷ = (I − H)y = ⎢ . ⎥ ⎣ .. ⎦ Ên 51 3.2.2. Modelo general de la tendencia Sea Tt = T (t, β) una función del tiempo t que describe la tendencia de una serie, y definida con vector de parámetros β de dimensión k. Esta definición considera el caso de funciones lineales y no lineales en los parámetros como el caso Tt = β0 eβ1 t , donde β = (β0 , β1 )t . Para el ajuste por mı́nimos cuadrados sin recurrir a alguna transformación, el modelo para la serie, sin componente estacional es dado por Yt = T (t, β) + Et . (3.8) Para una serie de tamaño n, se desea resolver el sistema de n ecuaciones (posiblemente no lineales) Y1 = T (1, β) + E1 Y2 = T (2, β) + E2 .. . Yn = T (n, β) + En (3.9) Para la estimación por mı́nimos cuadrados se busca β que minimice la suma de cuadrados del error n S(β) = Et2 = t=1 n (Yt − T (t, β))2 (3.10) t=1 esto es β̂ = argmin S(β). (3.11) β ES es decir, la solución es hallada diferenciando a S(β) con respecto a β e igualando las derivadas parciales a cero, pero en general las ecuaciones resultantes son no lineales por lo que debe emplearse un método numérico para optimización, por ejemplo, utilizando métodos numéricos para mı́nimos cuadrados no lineales. En R se cuenta con la función nls (ver Apéndice A.2). Este método de ajuste requiere especificar valores iniciales para los parámetros desconocidos y el éxito del algoritmo depende fuertemente de la cercanı́a de tales valores de inicio a los valores óptimos. Hay muchos algoritmos para el ajuste de mı́nimos cuadrados no lineales, nls utiliza por defecto una forma de iteracción tipo Gauss-Newton, que usa derivadas aproximadas numéricamente. El riesgo con estos métodos es que si la función S(β) tiene múltiples mı́nimos, el algoritmo puede arrojar un mı́nimo local y no absoluto. CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 52 Tendencia exponencial TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Considere la serie en la Figura 3.4. Como se comentó previamente, la tendencia para esta serie es del tipo T t = β0 eβ1 t . Luego, si aplicamos la transformación logarı́tmica y consideramos el modelo de regresión lineal simple para iid los logaritmos de la serie, log(Y t ) = log(β0 ) + β1 t + Et , Et ∼ N(0, σ 2 ), y ajustamos por mı́nimos cuadrados: Código R 3.5. #Leyendo datos de archivo de texto local nyse_vol=read.table(file.choose(),header=T) nyse_vol=ts(nyse_vol,frequency=1) #ajustando modelo de tendencia log lineal mediante regresión lineal t=1:length(nyse_vol) #Define variable t según longitud de la serie modelo1=lm(log(nyse_vol)˜t) #Extrayendo coeficientes ajustados en modelo log-lineal y transformando al #modelo exponencial estim=coef(modelo1) beta00=exp(estim[[1]]) beta10=estim[[2]] Salida R 3.1. summary(modelo1) Call: lm(formula = log(nyse_vol) ˜ t) Residuals: Min 1Q Median -0.66075 -0.19657 -0.02112 3Q 0.18871 Coefficients: Estimate Std. Error t (Intercept) 2.709e+00 2.490e-02 t 1.033e-02 7.946e-05 --Signif. codes: 0 ’***’ 0.001 ’**’ Max 1.03309 value Pr(>|t|) 108.8 <2e-16 *** 130.0 <2e-16 *** 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 ES Residual standard error: 0.2895 on 540 degrees of freedom Multiple R-squared: 0.969, Adjusted R-squared: 0.969 F-statistic: 1.689e+04 on 1 and 540 DF, p-value: < 2.2e-16 beta00 [1] 15.02031 beta10 [1] 0.01032658 El modelo ajustado de acuerdo a lo exhibido en el cuadro anterior, se tiene que t ) = 2.709 + 0.01032658t log(Y de donde, en términos del modelo sin trasformar, se tendrı́a Ŷt ≈ 15.02031e0.01032658t 3.2. ESTIMACIÓN DE MODELOS DE TENDENCIA 53 Lo anterior es una estimación sesgada de E[Y t ], desde que, bajo el modelo log-lineal, se está asumiendo que Yt = β0 eβ1 t × eEt , Et ∼ N(0, σ 2 ), iid 1 iid 2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1 7 es decir, eEt ∼ lognormal con media E[e Et ] = e 2 σ . Luego, los valores ajustados en el tiempo t basados en el modelo log(Y t ) = log(β0 ) + β1 t + Et deberı́an ser obtenidos usando 2 ˆ Ŷt = elog(β0 )+β1 t × e0.5σ̂ 2 e 2 σ es el factor de corrección de sesgo, que será válido de aplicar mientras la normalidad de Et sea un supuesto razonable. En este caso, se toma σ̂ 2 = MSE, el error cuadrático medio del modelo log-lineal. También se ha sugerido aplicar n un factor de corrección empı́rico, de la forma n1 eÊt , es decir, los valores t=1 ajustados en escala original serı́an de la forma ˆ log(β 0 )+β1 t Ŷt = e 1 × n n eÊt t=1 donde Êt son los residuos del modelo log-lineal. Continuando con el ejemplo, en R obtenemos los valores ajustados en escala original de la siguiente forma Código R 3.6. #extrayendo estimación de sigma en modelo1 sigma=summary(modelo1)$sigma #Calculando factor de correción según distribución lognormal correc.lognorm=exp(0.5*sigmaˆ2) correc.lognorm [1] 1.042782 ES #Calculando factor de corrección empı́rica correc.empir=mean(exp(residuals(modelo1))) correc.empir [1] 1.044208 #Obteniendo valores ajustado en escala original #con factor de correción lognormal pred.mod1a=exp(fitted(modelo1))*correc.lognorm #Obteniendo valores ajustado en escala original #con factor de correción empı́rica pred.mod1b=exp(fitted(modelo1))*correc.empir 1 2 Del anterior cuadro vemos que el factor de corrección lognormal es e 2 σ̂ = n 1.042782, mientras que el factor de corrección empı́rica es n1 eÊt = 1.044208, t=1 prácticamente iguales, desde que el tamaño de la serie n = 542 es grande. Luego, los valores ajustados por ambos métodos son prácticamente los mismos: 2 ˆ Ŷt = elog(β0 )+β1 t × e0.5σ̂ = 1.042782 × 15.02031e0.01032658t CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 54 ˆ log(β 0 )+β1 t Ŷt = e 1 × n n eÊt = 1.044208 × 15.02031e0.01032658t t=1 7 Veamos ahora el uso del modelo de ajuste no lineal usando la función R nls: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Código R 3.7. #ajustando modelo de tendencia exponencial mediante regresión no lineal #se utilizan parámetros estimados del modelo 1 para inicializar rutina de #estimación con modelo no lineal modelo2=nls(nyse_vol˜beta0*exp(beta1*t),start=list(beta0=beta00,beta1=beta10)) Salida R 3.2. summary(modelo2) Formula: nyse_vol ˜ beta0 * exp(beta1 * t) Parameters: Estimate Std. Error t value Pr(>|t|) beta0 1.805e+01 1.886e+00 9.566 <2e-16 *** beta1 1.027e-02 2.107e-04 48.774 <2e-16 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 339.7 on 540 degrees of freedom Number of iterations to convergence: 5 Achieved convergence tolerance: 5.787e-06 La ecuación del modelo ajustado corresponde a Ŷt = 18.05e0.01027t ES En la Figura 3.5 observamos la serie original y las curvas ajustadas con el modelo log-lineal destransformado y el modelo no lineal exponencial. En la Figura 3.6 se presentan los residuales de los dos modelos ajustados a la serie de la Figura 3.4. Observe los problemas de varianza en el ajuste del modelo no lineal. A continuación, el código R usado para las Figuras 3.5 y 3.6: Código R 3.8. #Uniendo en una matriz los valores de la serie, y los ajustados de #los modelos log-lineal y no lineal exponencial datos_ajustes=cbind(nyse_vol,pred.mod1a,fitted(modelo2)) #Graficando las series superpuestas matplot(t,datos_ajustes,type=’l’,col=c(1,2,4),lwd=c(1,2,2),lty=c(1,2,3),ylab="FSVOL") legend(locator(1),legend=c("original", "ajuste modelo log-lineal correcc. lognorm","ajuste modelo no lineal exponencial"), col=c(1,2,4),lty=c(1,2,3),lwd=c(1,2,2)) #Preparando ventana gráfica:dividiendo la ventana gráfica en cuatro subventanas nf=layout(rbind(c(1,1,2,2),c(3,3,4,4))) 3.2. ESTIMACIÓN DE MODELOS DE TENDENCIA 55 #Graficando los residuales del modelo log-lineal plot(t,residuals(modelo1),type=’l’,main="Residuales vs. tiempo\nModelo Log-lineal") abline(h=0,lty=2) plot(fitted(modelo1),residuals(modelo1),main="Residuales vs. Ajustados\nModelo Log-lineal") abline(h=0,lty=2) 6000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 #Graficando los residuales del modelo no lineal plot(t,residuals(modelo2),type=’l’,main="Residuales vs. tiempo\nModelo exponencial") abline(h=0,lty=2) plot(fitted(modelo2),residuals(modelo2),main="Residuales vs. Ajustados\nModelo exponencial") abline(h=0,lty=2) 3000 0 1000 2000 FSVOL 4000 5000 original ajuste modelo log−lineal correcc. lognorm ajuste modelo no lineal exponencial 0 100 200 300 400 500 t Volumen mensual de operaciones de acciones negociadas en la bolsa de Nueva York y ajustes usando transformación logarı́tmica y mı́nimos cuadrados no lineales. Fuente: Diebold [3], nyse vol.dat. ES Figura 3.5: Tendencia Logı́stica Es un modelo común para describir el crecimiento de una población y es conocido también como modelo de crecimiento logı́stico. La ecuación de este modelo de tendencia es como sigue, Tt = β2 , 1 + exp{− (β0 + β1 t)} donde el parámetro β 2 es el valor asintótico o de largo plazo para T t . La curva es simétrica alrededor de t = −β 0 /β1 , para el cual Tt = β2 /2, es decir, en tal tiempo, la curva está a mitad de camino entre su valor en cero y su valor CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 56 7 0.5 0.0 residuals(modelo1) 0.5 0.0 −0.5 −0.5 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(modelo1) 1.0 Residuales vs. Ajustados Modelo Log−lineal 1.0 Residuales vs. tiempo Modelo Log−lineal 100 200 300 400 500 3 6 7 8 Residuales vs. Ajustados Modelo exponencial 2000 1000 residuals(modelo2) 1000 −1000 0 2000 3000 Residuales vs. tiempo Modelo exponencial 0 residuals(modelo2) 5 fitted(modelo1) −1000 0 100 200 300 t Figura 3.6: 4 t 3000 0 400 500 0 1000 2000 3000 4000 fitted(modelo2) Residuales del modelo Log- lineal (arriba) en escala logarı́tmica de los datos; residuales del modelo no lineal exponencial (abajo) en escala original de los datos. ES asintótico β2 . En la Figura 3.7 podemos apreciar la forma en “S” de esta curva, con β2 = 300, β0 = −40, β1 = 0.02. Para una serie de tiempo con sólo tendencia (de tipo logı́stico) y componente de error, podrı́amos aplicar una transformación conocida como transformación logı́stica, que opera de la siguiente forma: β2 , entonces 1 + exp{− (β0 + β1 t)} Yt /β2 Yt∗ = log ≈ β0 + β1 t, 1 − Yt /β2 Yt ≈ Sin embargo, los datos transformados Y t∗ dependerán de un parámetro desconocido, por lo que se recurre a la regresión no lineal. En datos reales de crecimiento de poblaciones no siempre logramos visualizar una logı́stica en forma completa. Considere los datos disponibles en el marco de datos USPop disponible en la librerı́a car, sobre la serie decadal del 3.2. ESTIMACIÓN DE MODELOS DE TENDENCIA 57 150 Tt = β2 2 50 100 Tt TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 200 7 250 300 Tt = 300 ⎡1 + e−(−40+0.02t)⎤ ⎣ ⎦ 0 t = − β0 β1 1700 1800 1900 2000 2100 2200 2300 t Figura 3.7: Curva de tendencia tipo logı́stica. censo poblacional de Estados Unidos desde 1790 a 2000, datos en unidades de millones de habitantes: Código R 3.9. ES library(car) data(USPop) USPop year population 1 1790 3.929214 2 1800 5.308483 3 1810 7.239881 4 1820 9.638453 5 1830 12.860702 6 1840 17.063353 7 1850 23.191876 8 1860 31.443321 9 1870 38.558371 10 1880 50.189209 11 1890 62.979766 12 1900 76.212168 13 1910 92.228496 14 1920 106.021537 15 1930 123.202624 16 1940 132.164569 17 1950 151.325798 18 1960 179.323175 19 1970 203.302031 20 1980 226.542199 21 1990 248.709873 22 2000 281.421906 max(USPop$population) [1] 281.4219 CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 58 with(USPop,plot(year,population,type=’b’)) 150 0 50 100 population 200 250 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En la Figura 3.8 podemos apreciar esta serie. De la gráfica, podrı́amos estar inclinados a considerar como modelo de la tendencia una curva de tendencia cuadrática, con t en unidades de décadas con origen en 1790, esto es, iid t = (año − 1790) /10 y Yt = β0 + β1 t + β2 t2 + Et , Et ∼ N(0.σ 2 ), Veamos el ajuste de este modelo: 1800 1850 1900 1950 2000 year Figura 3.8: Datos censo decadal de población en Estados Unidos desde el año 1790 a 2000, fuente: Data frame USPob en R. Código R 3.10. ES library(car) data(USPop) #Calculando las fechas en décadas con punto #de origen en 1790 t=I((USPop$year-1790)/10) #Ajustando modelo de tendencia cuadrática modelo0=lm(population˜t+I(tˆ2),USPop) 3.2. ESTIMACIÓN DE MODELOS DE TENDENCIA 59 Salida R 3.3. summary(modelo0) Median 0.6051 3Q 1.4230 Max 4.6486 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Residuals: Min 1Q -7.5557 -0.4308 7 Call: lm(formula = population ˜ t + I(tˆ2), data = USPop) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 6.1128 1.7550 3.483 0.00249 ** t -1.1417 0.3872 -2.948 0.00825 ** I(tˆ2) 0.6681 0.0178 37.525 < 2e-16 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 2.997 on 19 degrees of freedom Multiple R-squared: 0.9989, Adjusted R-squared: 0.9988 F-statistic: 8892 on 2 and 19 DF, p-value: < 2.2e-16 #Predicción para el año 2010 predict(modelo0,list(t=(2010-1790)/10)) 1 304.3603 De los resultados vemos que la ecuación del modelo ajustado es Ŷt = 6.1128 − 1.1417t + 0.6681t2 y para el año 2010, la proyección de la población serı́a de 304.36 millones. Veamos ahora el ajuste del modelo logı́stico con regresión no lineal. Primero debemos incializar los valores de los parámetros del modelo logı́stico. Para β 2 el valor de la ası́ntota superior de la curva logı́stica, basta usar un valor mayor al de los datos de la serie, por ejemplo, 300. Para inicializar los otros dos parámetros, podemos realizar la regresión lineal de los datos de la serie con la transformación logı́stica: Yt∗ = log Yt /300 1 − Yt /300 = β0 + β1 t + Wt , Wt ∼ N(0, γ 2 ) iid ES Salida R 3.4. ##Regresión no lineal con modelo logı́stico #Identificando valores iniciales para beta0 y beta1 #Se realiza regresión de datos con transformación logı́stica #con beta2=300 lm(logit(population/300) ˜ t, USPop) Call: lm(formula = logit(population/300) ˜ t, data = USPop) Coefficients: (Intercept) -4.3071 t 0.2918 Luego, para el ajuste del modelo logı́stico mediante regresión no lineal usando la función nls(), tomarı́amos como valores iniciales β 2 = 300, β0 = −4.31, β1 = 0.29, como se ve a continuación: CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 60 Código R 3.11. modelo1=nls(population ˜ beta2/(1 + exp(-(beta0 + beta1*t))), start=list(beta2 = 300, beta0 = -4.31, beta1 = 0.29),data=USPop,trace=FALSE) 7 Salida R 3.5. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 summary(modelo1) Formula: population ˜ beta2/(1 + exp(-(beta0 + beta1 * t))) Parameters: Estimate Std. Error t value beta2 440.83394 35.00031 12.60 beta0 -4.03240 0.06818 -59.14 beta1 0.21606 0.01007 21.45 --Signif. codes: 0 ’***’ 0.001 ’**’ Pr(>|t|) 1.14e-10 *** < 2e-16 *** 8.87e-15 *** 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 4.909 on 19 degrees of freedom Number of iterations to convergence: 7 Achieved convergence tolerance: 6.013e-06 #Predicción para el año 2010 predict(modelo1,list(t=(2010-1790)/10)) [1] 296.595 La ecuación ajustada del modelo logı́stico es (con t representando décadas con origen en 1790) 440.83394 Ŷt = , 1 + exp{−(−4.03240 + 0.21606 × t)} ES con el cual se obtiene una predicción para el año 2010 de 296.595 millones de habitantes. Según informe de la Oficina del Censo de Estados Unidos, http://2010.census.gov/news/releases/en-espaol/cb10-cn93sp.html, la población al 1 de abril de 2010 era de 308,745,538 ¿con cuál modelo fue más acertado el pronóstico? En la Figura 3.9 (ver Código R 3.12 usado en la construcción de esta figura) podemos observar la serie real junto con las curvas ajustadas y el valor real en 2010. Código R 3.12. plot(t,USPop$population,type=’p’,xaxt=’n’,xlab="year",ylab="population",xlim=c(0,28),ylim=c(0,440)) #Creando etiquetas de marcas en eje X, #con años desde 1850 a 2050, cada 50 años, #y colocando estas etiquetas de marcas #en los valores de t=(año-1790)/10 correspondientes posi=(seq(1800,2050,by=50)-1790)/10 axis(1,at=posi,labels=seq(1800,2050,by=50)) #Dibujando la curva ajustada con modelo0, para t de 0 a 28 (años 1790 a 2070) 3.2. ESTIMACIÓN DE MODELOS DE TENDENCIA 61 lines(c(0:28),predict(modelo0,list(t=c(0:28))),lwd=2,xlim=c(0,28),ylim=c(0,440)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Indicando observación para año 2010 points((2010-1790)/10, 308.7, type = "p", pch=20,cex=2,col="blue") text((2010-1790)/10,308.7,labels="Población 2010",pos=2) abline(v=(2010-1790)/10,lty=2) 7 #Dibujando la curva ajustada con modelo1, para t de 0 a 28 (años 1790 a 2070) lines(c(0:28),predict(modelo1,list(t=c(0:28))),lwd=2,col=2,xlim=c(0,28),ylim=c(0,440)) #Colocando leyenda legend("topleft",legend=c("Ajuste Cuadrático","Ajuste logı́stico"),lty=1,col=c("black","red"),lwd=2) 400 Ajuste Cuadrático Ajuste logístico 200 0 100 population 300 Población 2010 1800 1850 1900 1950 2000 2050 year Figura 3.9: Datos censo decadal de población en Estados Unidos desde el año 1790 a 2000 y proyecciones con modelo cuadrático y logı́stico. ES En la Figura 3.10 se presentan los gráficos de residuales para los modelos de tendencia cuadrática y logı́stica, obtenidos con el Código R 3.13 Código R 3.13. #Dividiendo la ventana gráfica en cuatro subventanas nf=layout(rbind(c(1,1,2,2),c(3,3,4,4))) #Graficando los residuales del modelo cuadrático plot(t,residuals(modelo0),type=’l’,main="Residuales vs. tiempo\nModelo cuadrático",ylim=c(-8,8),lwd=2) abline(h=0,lty=2) plot(fitted(modelo0),residuals(modelo0),main="Residuales vs. Ajustados\nModelo cuadrático",ylim=c(-8,8),cex=1.5) abline(h=0,lty=2) CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 62 #Graficando los residuales del modelo logı́stico plot(t,residuals(modelo1),type=’l’,main="Residuales vs. tiempo\nModelo logı́stico",ylim=c(-8,8),lwd=2) abline(h=0,lty=2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 plot(fitted(modelo1),residuals(modelo1),main="Residuales vs. Ajustados\nModelo logı́stico",ylim=c(-8,8),cex=1.5) abline(h=0,lty=2) 5 10 15 20 0 100 150 200 Residuales vs. tiempo Modelo logístico Residuales vs. Ajustados Modelo logístico 250 0 −5 0 residuals(modelo1) 5 fitted(modelo0) −5 0 5 10 15 20 t Figura 3.10: 50 t 5 0 residuals(modelo1) 0 residuals(modelo0) −5 0 −5 residuals(modelo0) 5 Residuales vs. Ajustados Modelo cuadrático 5 Residuales vs. tiempo Modelo cuadrático 0 50 100 150 200 250 fitted(modelo1) Gráficos de residuales modelos cuadrático (modelo0) y modelo logı́stico (modelo1) para datos del Censo Estados Unidos, 1790 a 2000. ES 3.3. Pronóstico de la tendencia 3.3.1. Pronósticos puntuales Suponga que a partir del instante de tiempo t (tomado como el “hoy”) se desea pronosticar para L perı́odos adelante, es decir, para el tiempo t + L, el valor de una serie que sólo presenta componente de tendencia y error, es Yt+L ⎧ β0 + β1 (t + L) + Et+L ⎪ ⎪ ⎪ ⎨β + β (t + L) + β (t + L)2 + E 0 1 2 t+L = 2 ⎪ β0 + β1 (t + L) + β2 (t + L) + β3 (t + L)3 + Et+L ⎪ ⎪ ⎩ etc. si la tendencia es lineal si la tendencia es cuadrática si la tendencia es cúbica (3.12) 3.4. DIAGNÓSTICOS Y SELECCI ÓN DE MODELOS 63 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Entonces, el valor pronosticado para la serie en el tiempo t+L es simplemente, ⎧ β̂0 + β̂1 (t + L) si la tendencia es lineal ⎪ ⎪ ⎪ ⎨β̂ + β̂ (t + L) + β̂ (t + L)2 si la tendencia es cuadrática 0 1 2 Ŷt+L = 2 3 ⎪ β̂0 + β̂1 (t + L) + β̂2 (t + L) + β̂3 (t + L) si la tendencia es cúbica ⎪ ⎪ ⎩ etc. (3.13) Es decir, basta utilizar la ecuación ajustada para producir los pronósticos de los perı́odos futuros. 3.3.2. Intervalos de pron óstico Asuma el modelo de tendencia polinómica. Bajo el modelo de regresión lineal múltiple se tiene que un intervalo de predicción de (1 − α)100 % para una observación futura Y t+L en el vector de predictores x t t+L = (1, (t + L), (t + L)2 , · · · , (t + L)p ) es dado por: (3.14) Ŷt+L ± tα/2,n−p−1 MSE [1 + xt t+L (Xt X)−1 xt+L ] donde X es la matriz de diseño para el sistema de ecuaciones en (3.2). 3.4. Diagnósticos y selección de modelos usando los criterios de información de Akaike y de Schwarz 3.4.1. Criterios de Informaci ón Los criterios de información son medidas de bondad de ajuste de un modelo estadı́stico. Suponga que el modelo estadı́stico considerado es Yt = f (t, β p ) + Et , Et ∼ N(0, σ 2 ) iid (3.15) ES donde f (t, β p ) es una función de t con un conjunto de p parámetros representados por el vector β p . Usar cualquier modelo para aproximar un fenómeno real conlleva cierto grado de error y es en relación a este error sobre el cual se definen los criterios de ajuste. Sea β q el vector de parámetros del verdadero modelo o modelo generador de los datos, el cual es desconocido y suponga que para p > q el modelo con p parámetros está anidado al modelo con q parámetros. Entonces, el modelo considerado (el de p parámetros) es un modelo correcto pero sobre parametrizado. Por el contrario, si p < q, entonces nuestro modelo es un modelo mal especificado. En general, Entre varios modelos candidatos se debe elegir el más parsimonioso (con menos número de parámetros) tal que sea mı́nima la varianza y el sesgo del modelo estimado. Sea n (Yt − f (t, β))2 1 √ Ln (β) = exp − 2σ 2 2πσ t=1 CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 64 la función de verosimilitud de un modelo basado en una muestra de n observaciones y su logaritmo o log-verosimilitud, l n (β) = log(Ln (β)), y L̂n (β), ˆln (β) los máximos de estas funciones. Los criterios de información definidos para seleccionar al modelo más parsimonioso y correcto, toman en general la forma, (3.16) 7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 cn (p) = −2ˆln (β)/n + p · κ(n)/n, donde, 2 κ(n) = log(n) Criterio de Akaike Criterio de Información Bayesiana o de Schwarz (3.17) En R están implementadas en la función AIC() las versiones n · c n (p), es decir: Criterio de Akaike −2ˆln (β) + 2 · p, n·cn (p) = −2ˆln (β) + p · log(n), Criterio de Información Bayesiana o de Schwarz (3.18) AIC(modelo,k=2) AIC(modelo,k=log(n)) Entre varios modelos candidatos, se selecciona aquel con el menor valor de cn (p). Nota: Los modelos a comparar deberı́an ser modelos anidados, es decir, con estructura similar y que consideren los datos de la respuesta bajo la misma escala. 3.4.2. ¿Cuál criterio usar? Para comparar criterios de selección es necesario considerar las siguientes propiedades (Diebold [3]): Consistencia ES Un criterio es consistente si 1. Cuando el modelo verdadero (modelo generador de los datos) se encuentra entre los modelos considerados, la probabilidad de seleccionarlo tiende a 1 a medida que aumenta el tamaño de muestra, y 2. Cuando el modelo verdadero no se encuentra entre los considerados y es imposible seleccionarlo, la probabilidad de seleccionar la mejor aproximación al modelo generador tiende a 1 cuando aumenta el tamaño de la muestra. El criterio de Akaike no es consistente porque tiende a seleccionar modelos sobre parametrizados. El criterio de Schwarz por el contrario sı́ es consistente, penaliza con máxima intensidad los grados de libertad. 3.5. EJEMPLO: DATOS RSALES.DAT 65 Eficiencia asintótica TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Un criterio de selección de modelos es asintóticamente eficiente, si a medida que aumenta el tamaño de muestra tiende a elegir modelos con varianza del error de pronóstico a un paso adelante (Y t+1 − Ŷt (1), con Ŷt (1) el pronóstico para Yt+1 , realizado en o con origen en t) que se aproximan a la varianza del modelo verdadero y con una rapidez por lo menos equivalente a la del cualquier otro criterio de selección de modelos. El criterio de Akaike aunque inconsistente es asintóticamente eficiente, pero el de Schwarz no es asintóticamente eficiente. En la práctica se calculan y evalúan modelos con ambos criterios y cuando no hay concordancia entre tales, a pesar de la eficiencia asintótica del criterio de Akaike, se recomienda tomar el modelo indicado por el criterio de Schwarz por ser más parsimonioso. 3.5. Ejemplo: Datos RSALES.DAT 100000 50000 ES rsales 150000 200000 Considere la serie de los datos mensuales de las ventas al menudeo en Estados Unidos, en dólares nominales, desde enero de 1955 a enero de 1996, ilustrada en la Figura 3.11. 1960 1970 1980 1990 Time Figura 3.11: Serie mensual de ventas al menudeo en Estados Unidos, dólares nominales (ajustada estacionalmente), desde 01-1955 a 01-1996, fuente:Diebold [3]. Realice el ajuste de los siguientes modelos, considerando sólo los datos desde 01-1955 a 01-1995, compare resultados en cuanto ajuste, y compor- CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 66 tamiento de los residuales ¿Cuál modelo pronostica mejor? modelo3 (exponencial): Y t = β0 eβ1 t + Et 7 modelo1 (cuadrático): Y t = β0 + β1 t + β2 t2 + Et modelo2 (cúbico): Y t = β0 + β1 t + β2 t2 + β3 t3 + Et TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 La programación R y resultados de estos ajustes son dados a continuación: Código R 3.14. #Leyendo datos del archivo RSALES.DAT RSALES=read.table(file.choose(),header=T) RSALES=ts(RSALES,freq=12,start=c(1955,1)) #Graficando la serie con todos los datos plot(RSALES,lwd=3) #Definiendo ı́ndice t sin considerar las últimas 12 observaciones de la serie t=1:(length(RSALES)-12) #Considerando serie sólo hasta enero de 1995 inclusive RSALESb=ts(RSALES[t],freq=12,start=c(1955,1)) Código R 3.15. #Ajustando modelo de regresión cuadrática modelo1=lm(RSALESb˜t+I(tˆ2)) Salida R 3.6. summary(modelo1) Call: lm(formula = RSALESb ˜ t + I(tˆ2)) Median 352.6 3Q 2179.2 Max 8010.6 ES Residuals: Min 1Q -7216.4 -2274.5 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.889e+04 3.839e+02 49.19 <2e-16 *** t -1.117e+02 3.678e+00 -30.37 <2e-16 *** I(tˆ2) 9.387e-01 7.390e-03 127.02 <2e-16 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 2795 on 478 degrees of freedom Multiple R-squared: 0.9969, Adjusted R-squared: 0.9969 F-statistic: 7.698e+04 on 2 and 478 DF, p-value: < 2.2e-16 3.5. EJEMPLO: DATOS RSALES.DAT 67 Código R 3.16. #Ajuste del modelo de tendencia cúbica 7 modelo2=lm(RSALESb˜t+I(tˆ2)+I(tˆ3)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Salida R 3.7. summary(modelo2) Call: lm(formula = RSALESb ˜ t + I(tˆ2) + I(tˆ3)) Residuals: Min 1Q -6844.6 -2285.7 Median 166.6 3Q 2280.0 Max 7854.0 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.939e+04 5.132e+02 37.779 <2e-16 *** t -1.241e+02 9.210e+00 -13.477 <2e-16 *** I(tˆ2) 1.003e+00 4.438e-02 22.600 <2e-16 *** I(tˆ3) -8.885e-05 6.053e-05 -1.468 0.143 --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 2792 on 477 degrees of freedom Multiple R-squared: 0.9969, Adjusted R-squared: 0.9969 F-statistic: 5.144e+04 on 3 and 477 DF, p-value: < 2.2e-16 Salida R 3.8. #Parámetros iniciales para modelo exponencial, hallados con modelo log-lineal summary(lm(log(RSALESb)˜t)) Call: lm(formula = log(RSALESb) ˜ t) Residuals: Min 1Q -0.193193 -0.072602 Median 0.002657 3Q 0.070877 Max 0.200578 ES Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 9.338e+00 8.714e-03 1071.7 <2e-16 *** t 5.869e-03 3.133e-05 187.3 <2e-16 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 0.0954 on 479 degrees of freedom Multiple R-squared: 0.9865, Adjusted R-squared: 0.9865 F-statistic: 3.51e+04 on 1 and 479 DF, p-value: < 2.2e-16 Código R 3.17. #Ajuste modelo exponencial usando valores iniciales obtenidos #en salida R anterior modelo3=nls(RSALESb˜beta0*exp(beta1*t),start=list(beta0=9.34,beta1=0.005869)) CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 68 Salida R 3.9. summary(modelo3) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Parameters: Estimate Std. Error t value Pr(>|t|) beta0 1.197e+04 1.714e+02 69.84 <2e-16 *** beta1 5.769e-03 3.536e-05 163.13 <2e-16 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 7 Formula: RSALESb ˜ beta0 * exp(beta1 * t) Residual standard error: 5141 on 479 degrees of freedom Number of iterations to convergence: 15 Achieved convergence tolerance: 2.108e-06 Código R 3.18. #Cálculo de AIC y BIC para los tres modelos AICS=c(AIC(modelo1),AIC(modelo2),AIC(modelo3)) log.n=log(length(RSALESb)) BICS=c(AIC(modelo1,k=log.n),AIC(modelo2,k=log.n),AIC(modelo3,k=log.n)) criterios = rbind(AICS, BICS) colnames(criterios) = c("cuadrático","cúbico","exponencial") rownames(criterios) = c("AIC","BIC") Salida R 3.10. #Tabla de valores AIC y BIC (criterios) cuadrático cúbico exponencial AIC 9004.057 9003.889 9589.319 BIC 9020.761 9024.769 9601.847 Código R 3.19. ES #Calculando testes de normalidad testes=rbind(shapiro.test(residuals(modelo1)),shapiro.test(residuals(modelo2)), shapiro.test(residuals(modelo3))) rownames(testes) = c("Cuadrático","Cúbico","exponencial") Salida R 3.11. #Resultados pruebas de normalidad para los tres modelos testes statistic p.value method data.name Cuadrático 0.9761218 4.418319e-07 "Shapiro-Wilk normality test" "residuals(modelo1)" Cúbico 0.9739848 1.514746e-07 "Shapiro-Wilk normality test" "residuals(modelo2)" exponencial 0.9804841 4.672147e-06 "Shapiro-Wilk normality test" "residuals(modelo3)" 3.5. EJEMPLO: DATOS RSALES.DAT 69 Código R 3.20. plot(RSALES,ylim=c(min(RSALES),max(RSALES)),lwd=3) par(new=T) plot(time(RSALES),predict(modelo1,list(t=1:length(RSALES))),type=’l’,col=2, ylim=c(min(RSALES),max(RSALES)),xlab="",ylab="",lwd=2) 7 #Dibujando curvas ajustadas cuadrática y exponencial junto a serie real TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 par(new=T) plot(time(RSALES),predict(modelo3,list(t=1:length(RSALES))),type=’l’,col=4, ylim=c(min(RSALES),max(RSALES)),xlab="",ylab="",lwd=2) legend("topleft", legend=c("Ajuste Cuadrático","Ajuste exponencial"),lty=1,col=c("red","blue"),lwd=2) abline(v=time(RSALESb)[length(t)],lty=2) #Figura residuales #Dividiendo la ventana gráfica en seis subventanas organizadas en matriz 2x3 nf=layout(rbind(c(1,1,2,2,3,3),c(4,4,5,5,6,6))) #Graficando los residuales de los modelos vs. tiempo plot(t,residuals(modelo1),type=’l’, main="Residuales vs. tiempo\nModelo cuadrático",lwd=2,ylim=c(-14000,12500)) abline(h=0,lty=2) plot(t,residuals(modelo2),type=’l’, main="Residuales vs. tiempo\nModelo cúbico",lwd=2,ylim=c(-14000,12500)) abline(h=0,lty=2) plot(t,residuals(modelo3),type=’l’, main="Residuales vs. tiempo\nModelo exponencial",lwd=2,ylim=c(-14000,12500)) abline(h=0,lty=2) #Graficando los residuales de los modelos vs.valores ajustados plot(fitted(modelo1),residuals(modelo1), main="Residuales vs. Ajustados\nModelo cuadrático",ylim=c(-14000,12500),cex=1.5) abline(h=0,lty=2) plot(fitted(modelo2),residuals(modelo2), main="Residuales vs. Ajustados\nModelo cúbico",ylim=c(-14000,12500),cex=1.5) abline(h=0,lty=2) plot(fitted(modelo3),residuals(modelo3), main="Residuales vs. Ajustados\nModelo exponencial",ylim=c(-14000,12500),cex=1.5) abline(h=0,lty=2) ES #Gráficos de probabilidad normal con residuales comunes nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) qqnorm(residuals(modelo1)) qqline(residuals(modelo1),col=2,lwd=2) qqnorm(residuals(modelo2),main="Normal QQ-Plot\nModelo cúbico") qqline(residuals(modelo2),col=2,lwd=2) qqnorm(residuals(modelo3),main="Normal QQ-Plot\nModelo exponencial") qqline(residuals(modelo3),col=2,lwd=2) CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 200000 70 50000 100000 rsales TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 150000 7 Ajuste Cuadrático Ajuste exponencial 1960 1970 1980 1990 Time Serie mensual de ventas al menudeo en Estados Unidos, dólares nominales (ajustada estacionalmente), y curvas cuadrática y exponencial ajustadas 10000 5000 0 residuals(modelo3) −15000 −5000 5000 0 residuals(modelo2) −15000 100 200 300 400 500 0 100 200 300 400 500 Residuales vs. Ajustados Modelo cúbico Residuales vs. Ajustados Modelo exponencial 150000 fitted(modelo2) 5000 0 residuals(modelo3) 50000 −5000 5000 0 −5000 residuals(modelo2) 150000 −15000 5000 50000 10000 t Residuales vs. Ajustados Modelo cuadrático 10000 t 0 residuals(modelo1) 0 t −5000 −15000 −5000 5000 0 residuals(modelo1) −5000 −15000 100 200 300 400 500 10000 ES 0 fitted(modelo1) Figura 3.13: Residuales vs. tiempo Modelo exponencial 10000 Residuales vs. tiempo Modelo cúbico 10000 Residuales vs. tiempo Modelo cuadrático −15000 Figura 3.12: 50000 150000 fitted(modelo3) Residuales modelos ajustados a datos de RSALES.DAT 3.5. EJEMPLO: DATOS RSALES.DAT 71 Normal QQ−Plot Modelo cúbico TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 −5000 7 0 Sample Quantiles 0 −5000 Sample Quantiles 5000 5000 Normal Q−Q Plot −3 −2 −1 0 1 2 3 −3 −2 Theoretical Quantiles −1 0 1 2 3 Theoretical Quantiles 5000 0 −10000 Sample Quantiles 10000 Normal QQ−Plot Modelo exponencial −3 −2 −1 0 1 2 3 Theoretical Quantiles Figura 3.14: Gráficos de normalidad para residuales, modelos ajustados a datos de RSALES.DAT Código R 3.21. #Predicciones para 02-1995 a 01-1996 t2=(length(RSALESb)+1):(length(RSALESb)+12) predic1=cbind(RSALES[t2],predict(modelo1,newdata=list(t=t2),interval="prediction")) colnames(predic1)[1]="Real" predic2=cbind(RSALES[t2],predict(modelo2,newdata=list(t=t2),interval="prediction")) colnames(predic2)[1]="Real" #Para objetos nls, predict() Hasta el momento, sólo da predicciones sin sus intervalos ES predic3=cbind(RSALES[t2],predict(modelo3,newdata=list(t=t2),se.fit = TRUE,interval="prediction")) colnames(predic3)=c("Real","fit") Salida R 3.12. predic1 Real 1 181958 2 185303 3 183429 4 183395 5 185089 6 185287 7 187973 8 189465 9 191789 10 192611 11 192913 fit 183122.1 183916.2 184712.3 185510.2 186309.9 187111.6 187915.1 188720.5 189527.8 190337.0 191148.0 lwr 177578.5 178371.7 179166.9 179963.9 180762.8 181563.5 182366.2 183170.6 183977.0 184785.2 185595.2 upr 188665.7 189460.8 190257.6 191056.4 191857.1 192659.7 193464.1 194270.5 195078.7 195888.8 196700.8 CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 72 fit 182621.5 183403.2 184186.7 184971.8 185758.8 186547.4 187337.9 188130.0 188923.9 189719.6 190517.0 191316.1 lwr 177044.2 177823.0 178603.4 179385.6 180169.4 180954.8 181741.9 182530.7 183321.1 184113.2 184906.9 185702.3 upr 188198.9 188983.5 189769.9 190558.1 191348.2 192140.1 192933.8 193729.4 194526.8 195326.0 196127.1 196930.0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 predic2 Real 1 181958 2 185303 3 183429 4 183395 5 185089 6 185287 7 187973 8 189465 9 191789 10 192611 11 192913 12 193218 7 12 193218 191961.0 186407.2 197514.8 as.data.frame(predic3) Real fit 1 181958 193072.0 2 185303 194189.0 3 183429 195312.4 4 183395 196442.4 5 185089 197578.8 6 185287 198721.9 7 187973 199871.6 8 189465 201027.9 9 191789 202190.9 10 192611 203360.6 11 192913 204537.1 12 193218 205720.4 3.6. Ejercicios 3.6.1. Problema 1 Considere las series en SKYLEPT.DAT, usando R, para cada una de ellas ajuste un modelo de tendencia conveniente, realice además el análisis de residuales. 3.6.2. Problema 2 ES Los siguientes datos pertenecen al ı́ndice de productividad mensual en Canadá, desde Enero de 1950, hasta Diciembre de 1973. De la Figura 3.15 responda: 1. ¿Qué tipo de tendencia tiene esta serie? 2. Proponga modelos para la serie completa y ajústelos Usando R. Concluya si estos modelos son apropiados a partir de los gráficos de residuales, y sus medidas de ajuste. En cada caso, escriba la ecuación y el modelo ajustado. Evalúe también los gráficos de residuales en términos de la validez del supuesto de independencia. 3. Considere ahora la serie sin sus primeros cinco años, es decir, desde enero de 1955, y repita 2. 3.6. EJERCICIOS feb 77.6 84.4 91.0 89.4 89.6 90.0 90.1 93.3 95.7 97.3 98.5 99.8 100.5 102.2 104.1 106.2 110.0 113.1 118.2 122.6 128.7 130.9 137.3 145.3 mar 78.1 85.8 90.5 88.9 89.4 89.8 90.1 93.3 96.2 97.1 98.2 99.9 100.4 102.2 104.2 106.3 110.2 113.4 118.6 123.2 128.9 131.3 137.4 145.7 abr 78.3 86.5 90.4 88.7 89.5 89.9 90.2 93.6 96.9 97.1 98.7 99.9 100.9 102.4 104.5 106.6 110.8 114.4 119.3 124.6 129.7 132.2 138.2 147.3 may 78.3 86.8 89.7 88.5 89.4 90.1 90.2 93.7 96.8 97.2 98.6 99.8 100.7 102.4 104.5 106.8 111.0 114.6 119.3 124.9 129.6 132.7 138.3 148.4 jun 78.9 88.0 89.8 88.9 89.9 89.7 91.2 94.1 96.8 96.7 98.8 99.8 101.0 102.8 104.7 107.6 111.3 115.2 119.7 125.9 129.9 133.0 138.5 149.7 jul 79.5 88.7 89.9 89.3 89.9 89.8 91.7 94.3 96.5 97.4 98.7 99.8 101.4 103.3 105.4 108.0 111.7 116.3 120.4 126.4 130.5 134.1 140.2 151.0 ago 80.0 89.4 89.8 89.6 90.6 90.1 92.2 94.9 96.9 97.8 99.0 99.9 101.7 103.6 105.3 107.9 112.2 116.8 120.7 126.9 130.5 135.0 141.3 153.0 sep 80.7 90.2 89.9 89.9 90.4 90.4 92.1 95.4 97.2 98.4 99.4 99.9 101.4 103.3 105.0 107.7 112.3 116.6 121.1 126.6 130.2 134.7 141.8 153.9 oct 82.0 90.6 89.8 90.3 90.4 90.5 92.7 95.5 97.5 99.1 100.2 100.0 101.8 103.4 105.0 107.8 112.5 116.5 121.4 126.8 130.3 134.9 142.0 154.3 nov 82.4 91.3 89.9 89.9 90.4 90.5 93.1 95.4 97.8 99.3 100.3 100.4 102.1 103.7 105.2 108.5 112.6 116.9 121.9 127.4 130.3 135.4 142.3 155.5 dic 82.5 91.4 89.6 89.6 90.2 90.5 93.2 95.3 97.7 99.0 100.3 100.5 102.1 103.9 105.9 109.0 112.9 117.5 122.3 127.9 129.8 136.3 143.3 156.4 7 ene 77.5 83.4 91.5 89.6 89.6 90.1 90.4 93.1 95.5 97.6 98.7 100.0 100.4 102.2 103.9 106.0 109.3 113.0 118.1 122.6 128.2 130.3 136.7 144.5 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Año 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 73 4. ¿Qué se concluye de 2) y 3) en términos del ajuste de los modelos y comportamiento de la serie?, ¿las observaciones de los primeros cinco años afectan significativamente la modelación de la serie? ¿por qué? Código R 3.22. ES library(TSA) zt=scan() 77.5 77.6 78.1 83.4 84.4 85.8 91.5 91.0 90.5 89.6 89.4 88.9 89.6 89.6 89.4 90.1 90.0 89.8 90.4 90.1 90.1 93.1 93.3 93.3 95.5 95.7 96.2 97.6 97.3 97.1 98.7 98.5 98.2 100.0 99.8 99.9 100.4 100.5 100.4 102.2 102.2 102.2 103.9 104.1 104.2 106.0 106.2 106.3 109.3 110.0 110.2 113.0 113.1 113.4 118.1 118.2 118.6 122.6 122.6 123.2 128.2 128.7 128.9 130.3 130.9 131.3 136.7 137.3 137.4 144.5 145.3 145.7 78.3 86.5 90.4 88.7 89.5 89.9 90.2 93.6 96.9 97.1 98.7 99.9 100.9 102.4 104.5 106.6 110.8 114.4 119.3 124.6 129.7 132.2 138.2 147.3 78.3 86.8 89.7 88.5 89.4 90.1 90.2 93.7 96.8 97.2 98.6 99.8 100.7 102.4 104.5 106.8 111.0 114.6 119.3 124.9 129.6 132.7 138.3 148.4 78.9 88.0 89.8 88.9 89.9 89.7 91.2 94.1 96.8 96.7 98.8 99.8 101.0 102.8 104.7 107.6 111.3 115.2 119.7 125.9 129.9 133.0 138.5 149.7 79.5 88.7 89.9 89.3 89.9 89.8 91.7 94.3 96.5 97.4 98.7 99.8 101.4 103.3 105.4 108.0 111.7 116.3 120.4 126.4 130.5 134.1 140.2 151.0 80.0 89.4 89.8 89.6 90.6 90.1 92.2 94.9 96.9 97.8 99.0 99.9 101.7 103.6 105.3 107.9 112.2 116.8 120.7 126.9 130.5 135.0 141.3 153.0 80.7 90.2 89.9 89.9 90.4 90.4 92.1 95.4 97.2 98.4 99.4 99.9 101.4 103.3 105.0 107.7 112.3 116.6 121.1 126.6 130.2 134.7 141.8 153.9 82.0 90.6 89.8 90.3 90.4 90.5 92.7 95.5 97.5 99.1 100.2 100.0 101.8 103.4 105.0 107.8 112.5 116.5 121.4 126.8 130.3 134.9 142.0 154.3 82.4 91.3 89.9 89.9 90.4 90.5 93.1 95.4 97.8 99.3 100.3 100.4 102.1 103.7 105.2 108.5 112.6 116.9 121.9 127.4 130.3 135.4 142.3 155.5 zt=ts(zt,frequency=12, start=c(1950,1)) #Redefino los datos de la serie, eliminando los primeros 5 años n2=length(zt) 82.5 91.4 89.6 89.6 90.2 90.5 93.2 95.3 97.7 99.0 100.3 100.5 102.1 103.9 105.9 109.0 112.9 117.5 122.3 127.9 129.8 136.3 143.3 156.4 CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA 74 zt2=ts(zt[61:n2], frequency=12, start=c(1955,1)) zt2=ts(zt2,frequency=12, start=c(1955,1)) nf=layout(rbind(c(0,1,1,0),c(0,2,2,0))) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 plot(zt,main="Indice de productividad mensual en Canada\ndesde enero de 1950",lwd=2) plot(zt2, main="Indice de productividad mensual en Canada\ndesde enero desde 1955",lwd=2) 120 80 100 zt 140 Indice de productividad mensual en Canada desde enero de 1950 1950 1955 1960 1965 1970 Time 120 110 100 90 zt2 ES 130 140 150 Indice de productividad mensual en Canada desde enero desde 1955 1955 1960 1965 1970 Time Figura 3.15: Serie Índice de productividad mensual en Canada: arriba Datos desde 1959, abajo: datos desde 1955. 3.7. DATOS STYLEKP 75 ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AGRICULTURE MANUFACTURING RETAIL SERVICES 68.3000030518 338.700012207 153.800003052 190.199996948 67.5 339.399993896 153.199996948 197.699996948 67.0999984741 368.299987793 163.300003052 207.699996948 67.1999969482 397.399993896 169 217.399993896 65.1999969482 425.399993896 179.399993896 230.699996948 66.6999969482 462.5 190 240.399993896 62.4000015259 497.899993896 199.199996948 253.899993896 65.5 496.600006104 201.5 265.200012207 63.5999984741 522 211.600006104 274.700012207 65.3000030518 536.700012207 212.699996948 287.799987793 68.8000030518 506.799987793 215.600006104 295.700012207 70.5999984741 515.5 224.5 302.399993896 70.9000015259 561.200012207 239.800003052 320 70.3000030518 621.299987793 255.600006104 340.200012207 69.6999969482 591.599975586 245.199996948 347.5 73.0999984741 547.5 247.5 352.399993896 71.5 600.599975586 262.799987793 367.700012207 73.3000030518 664.799987793 270.5 399.600006104 73 694.700012207 284.799987793 421.5 77 712.200012207 291.299987793 436.899993896 76.4000015259 673.900024414 281.700012207 450.899993896 87.4000015259 678.599975586 286.399993896 463 89.5999984741 634.599975586 287.5 463.600006104 76.6999969482 674.200012207 307.799987793 480.399993896 84.1999969482 752.400024414 334 509.700012207 95.8000030518 779.200012207 354.399993896 538.599975586 103.599998474 803.200012207 377.5 565.799987793 105.099998474 852.200012207 371.600006104 592.599975586 97 917.400024414 399.200012207 623.299987793 100.5 929 412 652.299987793 7 3.7. datos STYLEKP CAPÍTULO 3. MODELOS DE REGRESI ÓN PARA TENDENCIA ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 76 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 4 Filtros lineales y suavizamientos En este capı́tulo se introducen algunas técnicas utilizadas en la identificación y estimación de las componentes de una serie de tiempo, con las cuales es posible modelar localmente. Esta estrategia admite cambios en los parámetros que definen las componentes estructurales, tales como la pendiente de una recta de tendencia, a diferencia de los modelos de regresión hasta ahora vistos en los cuales se asume y estima un único modelo con parámetros constantes para toda la serie. 4.1. Regresión LOESS LOESS es un método de ajuste de polinomios locales propuesto por Cleveland (1988) y que permite flexibilizar el método de mı́nimos cuadrados mediante el ajuste de modelos sencillos sobre subconjuntos locales de datos para crear una función que describe la parte determinı́stica de los datos. El procedimiento asume que para i = 1, 2, · · · , n, la i-ésima observación y i de una variable respuesta Y y la correspondiente observación x i de un vector de predictores x están relacionadas según el modelo yi = g(xi) + ei ES donde g es la función de regresión (para la cual no se asume una forma paramétrica) y ei es un error aleatorio. La idea de la regresión local es que cerca de x = xi la función de regresión g(x) puede ser aproximada localmente por un polinomio de un orden dado. Tal aproximación local es obtenida ajustando una superficie de regresión a los datos que están dentro de una vecindad escogida alrededor del punto x i . En el método LOESS, se usa mı́nimos cuadrados ponderados para ajustar funciones lineales o cuadráticas de los predictores en el centro de las vecindades. El radio de cada vecindad se escoge de manera que ésta contenga un porcentaje especificado de las observaciones. esta fracción, llamada parámetro de suavizamiento, controla el grado de suavizamiento de la superficie estimada. las observaciones en una vecindad local dada son ponderadas mediante una función decreciente de su distancia al centro de la vecindad. 77 CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 78 Para el caso de un predictor univariado (una sóla variable explicatoria), la regresión localmente ponderada se puede definir en los siguientes pasos: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 1. Para cada i, i = 1, 2, · · · , n, se calculan las estimaciones β̂j (xi ), j = 0, · · · , d de los parámetros de una regresión polinomial de y k en xk , cuyo ajuste se hace por mı́nimos cuadrados ponderados con ponderación w k (xi ) para la observación (xk , yk ). Entonces, los β̂j (xi ) son los valores βj que minimizan a n 2 wk (xi ) yk − β0 − β1 xk − · · · − βd xdk k=1 la observación suavizada en x i , utilizando el polinomio local de grado d es (xi , ŷi), donde ŷi es el valor ajustado en el punto x i . d ŷi = β̂j (xi )xji j=0 La ponderación w k (xi ) se calcula a partir de la consideración del concepto de vecindad: xk − xi wk (xi ) = W hi donde hi es la r-ésima distancia más pequeña de los vecinos de x i . Esto es, hi es el r-ésimo número más pequeño entre los |x i − xj |, para j = 1, 2, · · · , n, j = i. W es una función de ponderación que tiene las siguientes propiedades: a) W (x) > 0 para |x| < 1; b) W (−x) = W (x); c) W (x) es una función no creciente de x ≥ 0; d) W (x) = 0 para |x| ≥ 1. ES Por ejemplo, la función de ponderación bicuadrada es definida como W (x) = 2 (1 − x2 ) , 0, para |x| < 1 para |x| ≥ 1 Otra función de peso que se puede utilizar es la tricúbica (esta es la usada por la función loess() de R): W (x) = 3 (1 − |x|3 ) , 0, para |x| < 1 para |x| ≥ 1 2. Los ŷi son los valores ajustados por la regresión localmente ponderada, es decir, ŷi = ĝ(xi ). Nota: Las observaciones deben estar en orden creciente de los valores x i . 4.1. REGRESIÓN LOESS 79 loess(formula, data, weights, subset, na.action, model = FALSE, span = 0.75, enp.target, degree = 2, parametric = FALSE, drop.square = FALSE, normalize = TRUE, family = c("gaussian", "symmetric"), method = c("loess", "model.frame"), control = loess.control(...), ...) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Argumentos: 7 4.1.1. LOESS en R formula: Una fórmula que especifica lae respuesta y uno o más predictores numéricos. data: Un marco de datos opcional dentro del cual se busca primero las variables del modelo. weights: argumento opcional especificando los pesos o ponderaciones. subset: Un subconjunto opcional de datos a usar. na.action: La acción a realizar con datos faltantes en la respuesta o en los predictores. La acción por defecto es parar el algoritmo. model: Argumento lógico para indicar si debe retornarse el marco del modelo. span: el parámetro α que controla el grado de suavizamiento. enp.target: una forma alternativa de especificar span, como el número aproximado equivalente al número de parámetros a utilizar. degree: el grado q de los polinomios a utilizar, hasta 2. ES parametric: Para indicar si cualquiera de los términos debe ser ajustado globalmente en lugar de localmente. Los términos pueden ser especificados por nombre, número o como un vector lógico del mismo tamaño que el número de predictores. drop.square: Para ajustes con más de un predictor y degree=2, para indicar si debe excluirse el término cuadrático (y los términos cruzados) para ciertos predictores. Los términos son especificados de igual manera que en parametric. normalize: Para indicar si los predictores deben ser normalizados a una escala común cuando hay más de uno. family: Si se usa “gaussian” el ajuste se hace por mı́nimos cuadrados, y si se usa “symmetric” se usa un estimador robusto. method: Ajusta el modelo o sólo extrae el marco del modelo. CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 80 control: Parámetros de control: ver loess.control.. Observaciones: 7 ...: otros parámetros de control que pueden ser proporcionados directamente. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 El tamaño de la vecindad está controlado por α (establecido por span o enp.target). Para α < 1, la vecindad incluye la proporción α de los puntos, y éstos tiene una ponderación tricúbica. Para α > 1, todos los puntos son usados, con la distancia máxima asumida igual a α 1 /p veces la distancia máxima real para p variables explicativas. 4.1.2. Otras funciones R relacionadas con LOESS: scatter.smooth() y loess.smooth() Estas funciones son unas de las más útiles cuando se realizan análisis iniciales de datos, ya que permiten realizar un gráfico de dispersión y dibuja la curva ajustada por LOESS. scatter.smooth(x, y, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), ylim = range(y, prediction$y), evaluation = 50, ...) loess.smooth(x, y, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), evaluation=50, ...) Argumentos: x: coordenadas x para el gráfico de dispersión. y: coordenadas y para el gráfico de dispersión. span: parámetro de suavización para ‘loess’. ES degree: grado del polinomio local utilizado. family: si se usa la opción “gaussian” el ajuste se realiza por mı́nimos cuadrados, y si family=“symmetric” un estimador robusto es usado. xlab: marquilla para el eje x. ylab: marquilla para el eje y. ylim: establece los lı́mites de y en el gráfico. evaluation: número de puntos en los cuales se evalua la curva suavizada. ...: parámetros gráficos. 4.1. REGRESIÓN LOESS 81 4.1.3. Ejemplo: Considere los datos de la tasa de cambio de Hungrı́a, 620 observaciones Fuente: Diebold [3], (exchrate.dat), TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Lectura datos datos.exchrate=read.table(file.choose(),header=T) datos.exchrate=ts(datos.exchrate,frequency=1) 7 Código R 4.1. #Aplicando LOESS t=time(datos.exchrate) suavizam.loess0.10=loess(datos.exchrate˜t,span=0.10) #alpha=0.1 suavizam.loess0.30=loess(datos.exchrate˜t,span=0.30) #alpha=0.3 suavizam.loess0.75=loess(datos.exchrate˜t,span=0.75) #alpha=0.75 Con la función summary() obtenemos un resumen del algoritmo indicando el modelo considerado para la serie y los valores de ajuste de los argumentos de la función con los cuales fue aplicada, por ejemplo para el caso con α = 0.1: Salida R 4.1. summary(suavizam.loess0.10) Call: loess(formula = datos.exchrate ˜ t, span = 0.1) Number of Observations: 620 Equivalent Number of Parameters: 28.62 Residual Standard Error: 1.286 Trace of smoother matrix: 31.65 Control settings: normalize: TRUE span : 0.1 degree : 2 family : gaussian surface : interpolate cell = 0.2 ES Con Loess también podemos calcular valores ajustados, evaluar los residuales y hacer pronósticos, veamos: Código R 4.2. #Predicción para t=621 a 625 #con alpha=0.1 suavizam.loess0.10b=loess(datos.exchrate˜t,span=0.10,control=loess.control(surface="direct")) predict.loess0.10b=predict(suavizam.loess0.10b,data.frame(t=c(621:625)),se=TRUE) #con alpha=0.3 suavizam.loess0.30b=loess(datos.exchrate˜t,span=0.30,control=loess.control(surface="direct")) predict.loess0.30b=predict(suavizam.loess0.30b,data.frame(t=c(621:625)),se=TRUE) En la siguiente salida R se observan los valores de predicciones, los errores estándar de las predicciones, estimación de la desviación estándar del modelo y su grados de libertad correspondientes, para ajuste Loess con α = 0.1 CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 82 Salida R 4.2. predict.loess0.10b $fit 1 2 3 4 5 11.69602 11.45307 11.21345 10.97754 10.74570 7 $se.fit TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1 2 3 4 5 0.5652833 0.6122641 0.6620730 0.7146670 0.7700123 $residual.scale [1] 1.278659 $df [1] 585.9919 En el Cuadro 4.1, se resumen lo resultados de las predicciones para α = 0.1, 0.3, 0.75. Tabla 4.1: Pronósticos Loess, t=621 a 625, n = 620, datos exchrate.dat t=n+L 621 622 623 624 625 ES t=n+L 621 622 623 624 625 t=n+L 621 622 623 624 625 α = 0.1 Ŷn+L s.e(L) 11.70 0.57 11.45 0.61 11.21 0.66 10.98 0.71 10.75 0.77 α = 0.3 Ŷn+L s.e(L) 14.27 0.44 14.21 0.45 14.16 0.46 14.10 0.48 14.04 0.49 α = 0.75 Ŷn+L s.e(L) 12.77 0.45 12.66 0.45 12.55 0.46 12.44 0.46 12.32 0.46 σˆE 1.28 1.28 1.28 1.28 1.28 df 585.99 585.99 585.99 585.99 585.99 σˆE 1.78 1.78 1.78 1.78 1.78 df 608.43 608.43 608.43 608.43 608.43 σˆE 2.87 2.87 2.87 2.87 2.87 df 615.21 615.21 615.21 615.21 615.21 Nota: Con los resultados anteriores es posible construir intervalos de predicción de nivel (1 − γ)100 %, de la forma Ŷn+L ± tγ/2,[df] × s.e(L) En el siguiente código R se ilustran dos maneras de presentar gráficamente los ajustes LOESS: 4.1. REGRESIÓN LOESS 83 Código R 4.3. #Ajustar argumentos de scatter.smooth y de loess.smooth según información observada con summary() nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) 7 scatter.smooth(time(datos.exchrate),datos.exchrate,type=’l’,family="gaussian",span=0.10,degree=2) legend("topleft",legend=expression(alpha==0.1)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 scatter.smooth(time(datos.exchrate),datos.exchrate,type=’l’,family="gaussian",span=0.30,degree=2) legend("topleft",legend=expression(alpha==0.3)) scatter.smooth(time(datos.exchrate),datos.exchrate,type=’l’,family="gaussian",span=0.75,degree=2) legend("topleft",legend=expression(alpha==0.75)) #También podemos realizar el gráfico de la siguiente manera #y superponer varias curvas Loess plot(datos.exchrate,lwd=2) lines(loess.smooth(t,datos.exchrate,family="gaussian",span=0.10,degree=2),lty=1,lwd=2,col="red") lines(loess.smooth(t,datos.exchrate,family="gaussian",span=0.30,degree=2),lty=1,lwd=2,col="blue") lines(loess.smooth(t,datos.exchrate,family="gaussian",span=0.75,degree=2),lty=1,lwd=2,col="black") legend("topleft",legend=c(expression(alpha==0.1),expression(alpha==0.3),expression(alpha==0.75)), col=c("red","blue","black"),lty=1,lwd=2) Las Figuras 4.1 y 4.2 ilustran el resultado del anterior código. También es posible analizar los residuales de los ajustes LOESS, el siguiente código, ilustra la obtención de las gráficas de residuales: Código R 4.4. #Gráficos de residuales nf=layout(rbind(c(1,1,2,2,3,3),c(4,4,5,5,6,6))) plot(t,residuals(suavizam.loess0.10),type=’l’,lwd=2) abline(h=0,lty=2) plot(t,residuals(suavizam.loess0.30),type=’l’,lwd=2) abline(h=0,lty=2) plot(t,residuals(suavizam.loess0.75),type=’l’,lwd=2) abline(h=0,lty=2) ES plot(fitted(suavizam.loess0.10),residuals(suavizam.loess0.10)) abline(h=0,lty=2) plot(fitted(suavizam.loess0.30),residuals(suavizam.loess0.30)) abline(h=0,lty=2) plot(fitted(suavizam.loess0.75),residuals(suavizam.loess0.75)) abline(h=0,lty=2) La Figura 4.3 muestra el resultado gráfico del anterior código. CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 84 7 15 15 datos.exchrate 20 25 α = 0.3 10 5 0 0 5 10 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 datos.exchrate 20 25 α = 0.1 0 100 200 300 400 500 600 0 100 200 time(datos.exchrate) 300 400 500 600 time(datos.exchrate) 15 10 0 5 datos.exchrate 20 25 α = 0.75 0 100 200 300 400 500 600 time(datos.exchrate) Serie Tasa de cambio en Hungrı́a y tres suavizamientos LOESS, (fecha de inicio desconocida), fuente Diebold [3]. α = 0.1 α = 0.3 α = 0.75 exchrate 15 10 0 5 ES 20 25 Figura 4.1: 0 100 200 300 400 500 600 Time Figura 4.2: Serie Tasa de cambio en Hungrı́a y tres suavizamientos LOESS, (fecha de inicio desconocida), fuente Diebold [3]. 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 5 7 0 residuals(suavizam.loess0.75) 4 2 0 −2 residuals(suavizam.loess0.30) 2 0 −2 −5 −4 −6 −4 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(suavizam.loess0.10) 4 6 85 0 100 300 500 0 100 300 500 0 100 300 t 500 t 5 0 −5 residuals(suavizam.loess0.75) 4 2 0 −2 −6 5 10 15 20 fitted(suavizam.loess0.10) Figura 4.3: −4 residuals(suavizam.loess0.30) 2 0 −2 −4 residuals(suavizam.loess0.10) 4 6 t 5 10 15 20 fitted(suavizam.loess0.30) 5 10 15 20 fitted(suavizam.loess0.75) Gráficos de residuales, ajustes LOESS para datos de la tasa de cambio en Hungrı́a), fuente Diebold [3]. 4.2. Filtros lineales, medias móviles y suavizadores 4.2.1. Filtro Lineal ES En el análisis de series de tiempo mediante descomposición suelen usarse filtros lineales para obtener la componente de tendencia. Un filtro lineal sobre una serie de tiempo es una transformación de la siguiente forma ∞ Ỹt = (4.1) wi Yt−i i=−∞ donde los coeficientes w t son un conjunto de pesos tales que ∞ |wt | < ∞. La t=−∞ ecuación (4.1) también es llamada convolución. Los filtros ayudan a determinar la tendencia reduciendo las fluctuaciones locales y también se pueden usar como estimadores de la tendencia cuando no es posible describirla mediante ecuaciones paramétricas simples, es decir, en tales casos podemos tomar T̂t = Ỹt . CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 86 4.2.2. Medias móviles Un tipo de filtros lineales simples son las medias móviles. En este tipo, los m pesos wi son restringidos de tal forma que wi = 1, y generalmente se toman i=−m TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 simétricos, esto es, w −i = wi . El entero m ≥ 1 es llamado el ancho de ventana de la media móvil o parámetro de suavizamiento, el cual, el usuario debe definir teniendo en cuenta que mientras mayor sea, mayor es el suavizamiento. Las medias móviles pueden clasificarse en los siguientes tipos (Diebold [3]): Media móvil unilateral Una media móvil unilateral utiliza pesos w i = 1 Ỹt = m+1 1 , i = 0, · · · , m, es decir, m+1 m Yt−i (4.2) i=0 Media móvil bilateral En este tipo, los pesos usado son w i = 1 , i = −m, · · · , m, es decir, 2m + 1 m Ỹt = 1 Yt−i 2m + 1 i=−m (4.3) Media móvil unilateral general Esta corresponde a m Ỹt = wi Yt−i (4.4) i=0 ésta es una versión más general de la media movil unilateral. ES Media móvil bilateral general Esta corresponde a m Ỹt = wi Yt−i (4.5) i=−m Es una versión más general de la media movil bilateral, con w −i = wi . En R podemos calcular filtros y medias móviles mediante la función filter(): Función filter() Esta función arroja un objeto R tipo serie de tiempo, que corresponde a la serie filtrada. filter(x, filter, method = c("convolution", "recursive"),sides = 2, circular = FALSE, init) 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 87 Argumentos: x: Una serie de tiempo. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 filter: El vector de pesos w i del filtro en orden iverso del tiempo, es decir, en el orden retrospectivo de la serie rezagada Y t−i , según el método de filtración: filter = c(w0, w1, · · · , wm) si se trata de una convolución, o filter = c(w1, w2, · · · , wm) si se trata de un filtro recursivo (ver method). method: puede ser “convolution” para filtro de convolución Ỹt = (caso unilateral) ó Ỹt = m m wi Yt−i i=0 wi Yt−i , w−i = wi (caso bilateral); “recursive” i=−m para un filtro recursivo, es decir, de la forma Ỹt = Yt + m wj Ỹt−j . Cuando j=1 se usa method=“convolution”, se calculan medias móviles de ancho de ventana m; si se usa method=“recursive”, se usa una autoregresión. sides: Sólo se usa este argumento para el caso de una convolución. sides=1 calcula medias móviles unilaterales; sides=2 calcula medias móviles bilaterales. En este último caso, la longitud del vector de pesos especificado en filter debe ser de 2m + 1. circular: Este argumento sólo se usa cuando el filtro es una convolución. circular=F es el valor por defecto. Si se usa circular=T, para los términos Yt−j con t − j ≤ 0 se utlizan los valores de la serie Y n−j+t , respectivamente, donde n es la longitud de la serie; si circular=F, los términos fuera de la serie se asumen como NA (datos faltantes), y por tanto la serie filtrada Ỹt no tendrá valores para los primeros m y /o últimos m perı́odos (en las medias móviles bilaterales). ES ini: Para el caso recursivo, un vector especificando los valores iniciales de la serie de tiempo antes del primer tiempo, especificados en orden inverso del tiempo. Por defecto es ajustado a un vector de ceros. Ejemplo: Considere la serie MSFT disponible en R en la librerı́a fTrading, sobre 249 registros de precios y volumen negociados diariamente, de acciones de Microsoft entre 2000-09-27 y 2001-09-27. MSFT es una matriz cuyas columnas son Open, High, Low, Close, Volume, que representan, respectivamente, precio de apertura, precio más alto, precio más bajo, precio de cierre, y volumen negociado. la Figura 4.4 ilustra estas series. Considere la serie Volume. CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 88 Código R 4.5. library(fTrading) #Base de datos MSFT de MIcrosift OHLC en librerı́a fTrading: precios acciones #tiene estructura matricial. Las fechas son los nombres de las filas Close 60.6250 61.3125 60.3125 59.1250 56.5625 55.4375 7 observa los primeros seis registros, como se ve a continuación Volume 53077800 26180200 37026800 29281200 42687000 68226700 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 head(MSFT) #al ejecutar esta lı́nea GMT Open High Low 2000-09-27 63.4375 63.5625 59.8125 2000-09-28 60.8125 61.8750 60.6250 2000-09-29 61.0000 61.3125 58.6250 2000-10-02 60.5000 60.8125 58.2500 2000-10-03 59.5625 59.8125 56.5000 2000-10-04 56.3750 56.5625 54.5000 plot(MSFT,col=1) #Volumen diario de acciones negociadas datos=MSFT[,"Volume"] rownames(datos)=rownames(MSFT) t=1:length(datos) 65 60 2001−02−20 2001−07−16 55 60 65 Time 45 50 Low 1.0e+08 Volume 2.0e+07 2000−09−27 40 ES 6.0e+07 60 45 70 50 55 High 65 70 75 40 45 45 50 55 Close 60 55 50 Open 65 70 70 75 x 2000−09−27 2001−02−20 2001−07−16 Time Figura 4.4: Gráficos series precios negociación de acciones de Microsoft (MSFT) Vamos a calcular medias móviles unilaterales con m = 24, 48. Para ello, podemos usar la función filter() con el método de convolución, y pesos w i = 1/(m + 1), o también la función SMA() de la librerı́a fTrading con argumento 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 89 n=m+1. La siguiente programación R produce los mismos resultados con estas dos funciones R: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Medias móviles unilaterales con m=24 #con función SMA de la librerı́a fTrading m=24 medmovil.SMAm24=c(rep(NA,m),SMA(datos,n=(m+1))) 7 Código R 4.6. #Con función filter medmovil.filterm24=filter(datos,rep(1/(m+1),m+1),sides=1,circular=F) #Medias móviles unilaterales con m=48 m=48 medmovil.SMAm48=c(rep(NA,m),SMA(datos,n=(m+1))) medmovil.filterm48=filter(datos,rep(1/(m+1),m+1),sides=1,circular=F) #Graficando la serie original con curvas de medias móviles superpuestas nf=layout(c(1,1,2,2)) plot(t,datos,type=’l’,xaxt=’n’,xlab="Time",main="MA unilateral con función SMA") axis(1,at=seq(1,length(datos),by=50),labels=time(datos)[seq(1,length(datos),by=50)]) lines(t,medmovil.SMAm24,col="red",lwd=2) lines(t,medmovil.SMAm48,col="blue",lwd=2) legend("topright",legend=c(expression(m==24),expression(m==48)),col=c("red","blue"),lty=1,lwd=2) plot(datos,main="MA unilateral con función filter") lines(medmovil.filterm24,col="red",lwd=2) lines(medmovil.filterm48,col="blue",lwd=2) legend("topright",legend=c(expression(m==24),expression(m==48)),col=c("red","blue"),lty=1,lwd=2) Las medias móviles calculadas con el anterior código se ilustran en la Figura 4.5. Observe que las series de las medias móviles no inician en el mismo punto que la serie original, esto debido a que no existen valores para la serie antes del primer perı́odo (es decir, para t < 1). Sin embargo, en la función filter() se puede usar la opción circular=T, que como ya se indicó, reemplaza los términos Yt−j con t − j ≤ 0 con los valores de la serie T n−j+t , respectivamente, donde n es la longitud de la serie: Código R 4.7. ES #media móvil unilateral usando función filter con argumento circular=T m=24 medmovil.filterm24b=filter(datos,rep(1/(m+1),m+1),sides=1,circular=T) m=48 medmovil.filterm48b=filter(datos,rep(1/(m+1),m+1),sides=1,circular=T) win.graph(width=9.5,height=4.5) plot(datos,main="MA unilateral usando función filter con argumento circular=T") lines(medmovil.filterm24b,col="red",lwd=2) lines(medmovil.filterm48b,col="blue",lwd=2) legend("topright",legend=c(expression(m==24),expression(m==48)),col=c("red","blue"), lty=1,lwd=2,cex=0.8) Las medias móviles calculadas con el anterior código se ilustran en la Figura 4.6. Para el cálculo de medias móviles bilaterales, con m = 12, 24, usamos la función filter(): CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 90 MA unilateral con función SMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 2.0e+07 7 6.0e+07 datos 1.0e+08 m = 24 m = 48 2000−09−27 2000−12−07 2001−02−21 2001−05−03 2001−07−16 Time MA unilateral con función filter 2.0e+07 6.0e+07 Volume 1.0e+08 m = 24 m = 48 2000−09−27 2000−12−09 2001−02−20 2001−05−04 2001−07−16 2001−09−27 Time Figura 4.5: Serie volumen de acciones diarias negociadas de Microsoft (MSFT), con medias móviles unilaterales MA unilateral usando función filter con argumento circular=T Volume 2.0e+07 6.0e+07 1.0e+08 m = 24 m = 48 2000−09−27 2000−12−09 2001−02−20 2001−05−04 2001−07−16 2001−09−27 ES Time Figura 4.6: Serie volumen de acciones diarias negociadas de Microsoft (MSFT), medias móviles unilaterales con argumento circular=T. Código R 4.8. #Medias móviles bilaterales con m=12, 24 #Usando la opción circular=F m=12 medmovil.bil.filterm12=filter(datos,rep(1/(2*m+1),2*m+1),sides=2,circular=F) m=24 medmovil.bil.filterm24=filter(datos,rep(1/(2*m+1),2*m+1),sides=2,circular=F) #Usando la opción circular=T m=12 medmovil.bil.filterm12b=filter(datos,rep(1/(2*m+1),2*m+1),sides=2,circular=T) 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 91 m=24 medmovil.bil.filterm24b=filter(datos,rep(1/(2*m+1),2*m+1),sides=2,circular=T) #Graficando la serie y las medias móviles nf=layout(c(1,1,2,2)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 plot(datos,main="MA bilateral con función filter, circular=F") lines(medmovil.bil.filterm12,col="red",lwd=2) lines(medmovil.bil.filterm24,col="blue",lwd=2) legend("topright",legend=c(expression(m==12),expression(m==24)),col=c("red","blue"),lty=1,lwd=2) plot(datos,main="MA bilateral con función filter,circular=T") lines(medmovil.bil.filterm12b,col="red",lwd=2) lines(medmovil.bil.filterm24b,col="blue",lwd=2) legend("topright",legend=c(expression(m==12),expression(m==24)),col=c("red","blue"),lty=1,lwd=2) MA bilateral con función filter, circular=F Volume 2.0e+07 6.0e+07 1.0e+08 m = 12 m = 24 2000−09−27 2000−12−09 2001−02−20 2001−05−04 2001−07−16 2001−09−27 Time MA bilateral con función filter,circular=T Volume 2.0e+07 6.0e+07 1.0e+08 m = 12 m = 24 2000−09−27 2000−12−09 2001−02−20 2001−05−04 2001−07−16 2001−09−27 Time Serie volumen de acciones diarias negociadas de Microsoft (MSFT), medias móviles bilaterales. ES Figura 4.7: 4.2.3. Suavizamiento exponencial simple (EWMA) Este filtro es una media móvil ponderada exponencialmente, es decir, los factores de ponderación decaen exponencialmente, donde se tiene la siguiente ecuación recursiva de suavizamiento: Ỹt = αYt + (1 − α)Ỹt−1 , α ∈ (0, 1). (4.6) Puede mostrarse que t−1 Ỹt = (1 − α) Ỹ0 + t−1 wiYt−i ≈ t i=0 wi Yt−i , con wi = α(1 − α)i i=0 (4.7) CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 92 Este tipo de suavizamiento asume un modelo de tendencia local donde sólo hay evolución lenta del nivel de la serie: Yt = β0,t + ξt , donde β0,t = β0,t−1 + νt (4.8) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 con νt ∼ N(0, σν2 ) y ξt ∼ N(0, σξ2 ) independientes. Para la implementación se siguen los siguientes pasos: 1. Inicializar en t = 1: Cuando la serie es muy larga, Ỹ1 = Y1 y cuando la n 1 serie es corta, Ỹ1 = Ȳ = Yt . n t=1 2. Actualizar Ỹt = αYt + (1 − α)Ỹt−1 , t = 2, · · · , n 3. Hallar valores ajustados, Ŷt+1 = Ỹt , 4. Pronosticar Ŷn+L = Ỹn . Note que los pronósticos para L = 1, 2, · · · todos corresponden a un valor constante dado por el último valor suavizado en t = n, es decir, se asume que la tendencia es de pendiente cero!!. También observe que si α → 0, el filtro reduce la serie a un cosntante (el valor de Ỹ0 ), mientras que si α → 1, entonces Ỹt = Yt , es decir, no hay suavizamiento. Un intervalo de predicción aproximado de (1 − γ)100 % puede ser construido como n 1 2 Ŷn+L ± tγ/2,n−1 × σ̂ 1 + (L − 1)α con σ̂ = (Yt − Ŷt )2 (4.9) n − 1 t=1 4.2.4. Suavizamiento Holt ES Cuando la tendencia de la serie cambia no solo en su nivel local sino también en su pendiente, el método ewma no da buenos resultados. En su lugar, existe otra alternativa, adecuada cuando la tendencia local es lineal, veamos: El modelo de tendencia con un nivel y pendiente locales de evolución lenta es dado por Yt = β0,t + β1,t t + ξt (4.10) donde β0,t = β0,t−1 + νt β1,t = β1,t−1 + ηt con las perturbaciones ξ t ∼ N(0, σξ2 ), νt ∼ N(0, σν2 ), ηt ∼ N(0, ση2 ) independientes para todo t. En este caso, el método de suavizamiento óptimo considera el suavizamiento a través de las dos siguientes ecuaciones de actualización: nivel: β̂0,t = αYt + (1 − α)(β̂0,t−1 + β̂1,t−1 ), α ∈ (0, 1) (4.11) 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES pendiente: β̂1,t = β(β̂0,t − β̂0,t−1 ) + (1 − β)β̂1,t−1 , β ∈ (0, 1) 93 (4.12) El algoritmo de suavizamiento comprende los siguientes pasos: 1. Inicializar en t=2: β̂0,2 = Y2 , β̂1,2 = Y2 − Y1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 2. Actualizar el nivel y la pendiente usando las ecuaciones de suavizamiento correspondientes. 3. Hallar valores ajustados Ŷt+1 = β̂0,t + β̂1,t , (4.13) 4. Pronosticar fuera de la muestra: Ŷn+L = β̂0,n + β̂1,n × L (4.14) Un intervalo de predicción aproximado de (1 − γ)100 % puede ser construido como L−1 n 1 2 2 Ŷn+L ± tγ/2,n−2 × σ̂ 1 + α (1 + iβ) con σ̂ = (Yt − Ŷt )2 (4.15) n − 2 i=1 t=1 4.2.5. Suavizamientos exponenciales simples en R En R disponemos de varias funciones que realizan EWMA, por ejemplo la función ewmaSmooth() en la librerı́a qcc y las funciones emaTA(), EWMA() en la librerı́a fTrading: ewmaSmooth(x, y, lambda = 0.2, start, ...) Argumentos: x: Un vector de valores x conteniendo el ı́ndice de tiempo t. y: Un vector conteniendo los valores de la serie a suavizar. lambda: El parámetro de suavizamiento α. Por defecto es 0.2. ES start: Valor de inicio para el suavizamiento. Por defecto es Y 1 . Esta función devuelve un objeto tipo lista con los siguientes elementos: x los valores del vector x, y los valores suavizados lambda el parámetro de suavizamiento start el valor de inicio Las funciones emaTA() y EWMA() tienen la siguiente sintaxis: emaTA(x, lambda, startup = 0) EWMA(x, lambda, startup = 0) CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 94 Argumentos: x: Un vector numérico con los valores de la serie a suavizar. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 startup: El valor de inicilalización, por defecto es cero. 7 lambda: El parámetro de suavizamiento α. Estas funciones devuelven un vector con los valores suavizados exponenciales. Ejemplo: De nuevo, considere la serie del volumen diario de acciones negociadas de Microsoft, disponible en matriz MSFT de la librerı́a R fTrading, vamos a aplicar un suavizamiento exponencial simple con α = 0.01, 0.1. Código R 4.9. #Suavizamiento exponencial simple library(qcc); library(fTrading) #Volumen diario de acciones negociadas datos=MSFT[,"Volume"] rownames(datos)=rownames(MSFT) t=1:length(datos) #ewma con función ewmaSmooth librerı́a qcc, con alpha=0.01 suaviz.ewmaqcc0.01=ewmaSmooth(t,datos,lambda=0.01) suaviz.ewmaqcc0.01 #ewma con función ewmaSmooth librerı́a qcc, con alpha=0.1 suaviz.ewmaqcc0.1=ewmaSmooth(t,datos,lambda=0.1) suaviz.ewmaqcc0.1 #ewma con función emaTA librerı́a fTrading, con alpha=0.01 suaviz.ewmafTrading0.01=emaTA(datos,lambda=0.01) suaviz.ewmafTrading0.01 #ewma con función emaTA librerı́a fTrading, con alpha=0.1 suaviz.ewmafTrading0.1=emaTA(datos,lambda=0.1) suaviz.ewmafTrading0.1 ES #Resultados en forma gráfica nf=layout(c(1,1,2,2)) #preparando ventana gráfica #Graficando serie junto con lı́neas EWMA obtenidas con función ewmaSmooth de la librerı́a qcc plot(t,datos,type=’l’,xaxt=’n’,xlab="Time",main="EWMA con función ewmaSmooth") axis(1,at=seq(1,length(datos),by=50),labels=time(datos)[seq(1,length(datos),by=50)]) lines(suaviz.ewmaqcc0.1,col="red",lwd=2) lines(suaviz.ewmaqcc0.01,col="blue",lwd=2) legend("topright",legend=c(expression(alpha==0.1),expression(alpha==0.01)),col=c("red","blue"), lty=1,lwd=2) #Graficando serie junto con lı́neas EWMA obtenidas con función emaTA de la librerı́a fTrading plot(datos,main="EWMA con función emaTA") lines(suaviz.ewmafTrading0.1,col="red",lwd=2) lines(suaviz.ewmafTrading0.01,col="blue",lwd=2) legend("topright",legend=c(expression(alpha==0.1),expression(alpha==0.01)),col=c("red","blue"), lty=1,lwd=2) En la Tabla 4.2 se exhiben los seis valores iniciales y finales de los suavizamientos producidos por las funciones R ewmaSmooth() y emaTA(), con α = 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 95 0.01. Existen diferencias entre los resultados, sin embargo, en los últimos perı́dos, las dos funciones se aproximan, desde que el efecto de los valores de inicialización en cada caso, se disipa cuando la serie es larga. Comparación de suavizamientos exponenciales, α = 0.01 Primeros seis perı́odos t ewmaSmooth emaTA 1 53077800.00 45234039.00 2 52808824.00 45043500.61 3 52651003.76 44963333.60 4 52417305.72 44806512.27 5 52320002.67 44785317.15 6 52479069.64 45019730.97 Últimos seis perı́odos t ewmaSmooth emaTA 244 40203989.16 39521844.26 245 40726832.27 40051508.82 246 40747464.95 40078894.73 247 40764693.30 40102808.78 248 40649668.37 39994402.69 249 40649127.68 40000414.67 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 4.2: La Figura 4.8 ilustra los suavizamientos ewmas. EWMA con función ewmaSmooth datos 2.0e+07 6.0e+07 1.0e+08 α = 0.1 α = 0.01 2000−09−27 2000−12−07 2001−02−21 2001−05−03 2001−07−16 ES Time EWMA con función emaTA Volume 2.0e+07 6.0e+07 1.0e+08 α = 0.1 α = 0.01 2000−09−27 2000−12−09 2001−02−20 2001−05−04 2001−07−16 2001−09−27 Time Figura 4.8: Serie volumen de acciones diarias negociadas de Microsoft (MSFT), suavizamientos exponeciales simples. CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 96 4.2.6. Suavizamiento de Holt en R En R se dispone de la función HoltWinters(). HoltWinters(x, alpha = NULL, beta = NULL, gamma = NULL,...) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Para un suavizamiento de Holt la función se usa con el argumento gamma=FALSE y los otros dos argumentos ajustados en los valores de α y β deseados, o bien sin especificarlos. En este caso, la función busca valores óptimos para ambos parámetros, que minimicen el error cuadrático de predicción un paso adelante. Los valores iniciales para los suavizadores de nivel y tendencia son respectivamente, Y 2 y Y2 −Y1 . Con los argumentos beta=FALSE y gamma=FALSE, la función también realiza un EWMA, con valor de inicio del suavizador igual a Y1 . La ventaja de esta función es que permite la obtención de pronósticos y sus intervalos de predicción del 95 %: predict(objeto, n.ahead=1, prediction.interval = TRUE, level = 0.95) donde objeto es un objeto creado con la función HoltWinters, n.ahead=1 indica la realización de una predicción para el primer perı́odo después del último valor en la serie, por tanto, para más predicciones basta ajustar el valor de este argumento en el número de predicciones deseadas. Ejemplo: De nuevo, considere la serie del volumen diario de acciones negociadas de Microsoft. Vamos a realizar dos suavizamientos ewma con α = 0.01 y el otro con el ajuste óptimo de la función HoltWinters. También se le aplicará dos suavizamientos de Holt, el primero con parámetros α = 0.2, β = 0.1 y el segundo con el ajuste automático de la función. Observe en el siguiente código R la forma de especificar cada caso. Código R 4.10. ES ##Suavizamiento exponencial simple con alfa=0.01 ewma0.01=HoltWinters(datos,alpha=0.01,beta=FALSE,gamma=FALSE) ##Suavizamiento exponencial simple con alfa automático ewma.optim=HoltWinters(datos,beta=FALSE,gamma=FALSE) ##Suavizamiento exponencial de Holt, alfa=0.2, beta=0.1 Holt=HoltWinters(datos,alpha=0.2,beta=0.1,gamma=FALSE) ##Suavizamiento exponencial de Holt, alfa y beta automáticos Holt.optim=HoltWinters(datos,gamma=FALSE) #Gráficas de serie original con curvas suavizadas nf=layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot(Holt,lwd=2,col.predicted="red",main=expression(paste("Holt",sep=" ",alpha==0.2,sep=" ",beta==0.1))) legend("topright",legend=c("Original","Suavizada"),col=c("black","red"),lty=1,lwd=2) plot(Holt.optim,lwd=2,col.predicted="red",mai="Holt automático") legend("topright",legend=c("Original","Suavizada"),col=c("black","red"),lty=1,lwd=2) 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 97 plot(ewma0.01,lwd=2,col.predicted="red",main=expression(paste("EWMA con Holt",SEP=" ",alpha==0.01))) legend("topright",legend=c("Original","Suavizada"),col=c("black","red"),lty=1,lwd=2) plot(ewma.optim,lwd=2,col.predicted="red",main="EWMA con Holt automático") legend("topright",legend=c("Original","Suavizada"),col=c("black","red"),lty=1,lwd=2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En la Figura 4.9 observamos los resultados de estos suavizamientos. Holt α = 0.2 β = 0.1 8.0e+07 Observed / Fitted 5e+07 0.0e+00 0e+00 Original Suavizada 4.0e+07 1e+08 Original Suavizada −5e+07 Observed / Fitted 1.2e+08 Holt automático 0 50 100 150 200 250 0 50 100 150 Time EWMA con Holt α = 0.01 EWMA con Holt automático 1.0e+08 6.0e+07 2.0e+07 6.0e+07 2.0e+07 250 Original Suavizada Observed / Fitted 1.0e+08 Original Suavizada Observed / Fitted 200 Time 0 50 100 150 200 250 0 50 100 150 200 250 Time ES Time Figura 4.9: Serie volumen de acciones diarias negociadas de Microsoft (MSFT), suavizamientos exponenciales. También es posible obtener gráficos de residuales, si lo que se quiere evaluar es el ajuste: Código R 4.11. #Gráficas de residuales para suavizamientos con HolWinters win.graph(width=14,height=17) nf=layout(rbind(c(1,1,2,2),c(3,3,4,4),c(5,5,6,6),c(7,7,8,8))) plot(residuals(Holt),lwd=2, main=expression(paste("Holt",sep=" ",alpha==0.2,sep=" ",beta==0.1))) abline(h=0,lty=2) CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 98 plot(fitted(Holt)[,"xhat"],residuals(Holt),lwd=2, main=expression(paste("Holt",sep=" ",alpha==0.2,sep=" ",beta==0.1))) abline(h=0,lty=2) plot(residuals(Holt.optim),lwd=2,mai="Holt automático") abline(h=0,lty=2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 plot(fitted(Holt.optim)[,"xhat"],residuals(Holt.optim),lwd=2,main="Holt automático") abline(h=0,lty=2) plot(residuals(ewma0.01),lwd=2,main=expression(paste("EWMA con Holt",SEP=" ",alpha==0.01))) abline(h=0,lty=2) plot(fitted(ewma0.01)[,"xhat"],residuals(ewma0.01),lwd=2, main=expression(paste("EWMA con Holt",SEP=" ",alpha==0.01))) abline(h=0,lty=2) plot(residuals(ewma.optim),lwd=2,main="EWMA con Holt automático") abline(h=0,lty=2) plot(fitted(ewma.optim)[,"xhat"],residuals(ewma.optim),lwd=2,main="EWMA con Holt automático") abline(h=0,lty=2) La gráfica resultante de este código, corresponde a la Figura 4.10. Los coeficientes ajustados, con los cuales se construyen las ecuaciones de pronóstico en cada caso, se exhiben en la siguiente salida R. ¿En cuanto ajuste, cuál suavizamiento resulta mejor? Salida R 4.3. ewma0.01 Holt-Winters exponential smoothing without trend and without seasonal component. Call: HoltWinters(x = datos, alpha = 0.01, beta = FALSE, gamma = FALSE) Smoothing parameters: alpha: 0.01 beta : FALSE gamma: FALSE ES Coefficients: [,1] a 40649128 ewma.optim Holt-Winters exponential smoothing without trend and without seasonal component. Call: HoltWinters(x = datos, beta = FALSE, gamma = FALSE) Smoothing parameters: alpha: 0.2420161 beta : FALSE gamma: FALSE Coefficients: [,1] a 46023427 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 99 Holt Holt-Winters exponential smoothing with trend and without seasonal component. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Smoothing parameters: alpha: 0.2 beta : 0.1 gamma: FALSE 7 Call: HoltWinters(x = datos, alpha = 0.2, beta = 0.1, gamma = FALSE) Coefficients: [,1] a 53067583.0 b 773934.6 Holt.optim Holt-Winters exponential smoothing with trend and without seasonal component. Call: HoltWinters(x = datos, gamma = FALSE) Smoothing parameters: alpha: 0.6344256 beta : 0.1368952 gamma: FALSE Coefficients: [,1] a 38266887 b -1488188 Los pronósticos para los siguientes cinco perı́odos despúes de t = 249 (el último perı́odo en la serie), pueden ser obtenidos en cada caso, usando la siguiente programación R: Código R 4.12. ES #Cinco predicciones e intervalos de predicción #con ewma de alfa=0.01 predict1=predict(ewma0.01, n.ahead=5, prediction.interval = TRUE, level = 0.95) predict1 #con ewma automático predict2=predict(ewma.optim, n.ahead=5, prediction.interval = TRUE, level = 0.95) predict2 #con Holt, alfa=0.2, beta=0.1 predict3=predict(Holt, n.ahead=5, prediction.interval = TRUE, level = 0.95) predict3 #con Holt automático predict4=predict(Holt.optim, n.ahead=5, prediction.interval = TRUE, level = 0.95) predict4 En las Tablas 4.3 y 4.4, se ilustran lso resultados obtenidos con la anterior programación. Se observa gran diferencia entre los pronósticos de los cuatro suavizamientos. También observe que para los suavizamientos EWMA el pronóstico es un valor constante. CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS Tabla 4.3: Pronósticos para HoltWinters cinco perı́odos adelante, métodos EWMA, TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Pronósticos EWMA con α = 0.01 t fit upr lwr 250 40649127.68 71778309.81 9519945.56 251 40649127.68 71779866.23 9518389.14 252 40649127.68 71781422.57 9516832.80 253 40649127.68 71782978.84 9515276.53 254 40649127.68 71784535.02 9513720.35 Pronósticos EWMA con Holt autom ático t fit upr lwr 250 46023427.30 75798358.33 16248496.27 251 46023427.30 76657936.51 15388918.09 252 46023427.30 77494045.21 14552809.40 253 46023427.30 78308507.88 13738346.73 254 46023427.30 79102923.44 12943931.17 función 7 100 Pronósticos para cinco perı́odos adelante, métodos Holt, función HoltWinters ES Tabla 4.4: t 250 251 252 253 254 t 250 251 252 253 254 Pronósticos Holt con α = 0.2, β = 0.1 fit upr lwr 53841517.67 103089271.35 4593763.99 54615452.31 105040919.67 4189984.94 55389386.95 107181542.86 3597231.03 56163321.58 109514802.19 2811840.98 56937256.22 112041949.63 1832562.81 Pronósticos Holt autom ático fit upr lwr 36778698.07 71039781.28 2517614.85 35290509.61 77533719.06 -6952699.85 33802321.14 84310461.34 -16705819.05 32314132.68 91401189.46 -26772924.09 30825944.22 98817273.92 -37165385.48 4.2. FILTROS LINEALES, MEDIAS M ÓVILES Y SUAVIZADORES 150 200 250 −4e+07 0e+00 2e+07 7 100 1e+08 residuals(Holt) 50 4e+07 Time fitted(Holt)[, "xhat"] Holt automático Holt automático 6e+07 150 250 0e+00 2e+07 4e+07 6e+07 8e+07 EWMA con Holt α = 0.01 EWMA con Holt α = 0.01 50 100 150 200 250 4.0e+07 4.4e+07 4.8e+07 5.2e+07 fitted(ewma0.01)[, "xhat"] EWMA con Holt automático EWMA con Holt automático 150 Time 200 250 −2e+07 4e+07 100 4e+07 Time 50 1e+08 −2e+07 4e+07 fitted(Holt.optim)[, "xhat"] residuals(ewma0.01) Time −2e+07 0 2e+07 3e+07 4e+07 5e+07 6e+07 7e+07 fitted(ewma.optim)[, "xhat"] Residuales de los suavizamientos exponenciales para el volumen de acciones diarias negociadas de Microsoft (MSFT). ES Figura 4.10: 200 4e+07 residuals(Holt.optim) 100 residuals(ewma.optim) 0 residuals(ewma.optim) 50 −2e+07 4e+07 residuals(ewma0.01) 0 −4e+07 4e+07 −4e+07 residuals(Holt.optim) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0 0e+00 1e+08 Holt α = 0.2 β = 0.1 0e+00 residuals(Holt) Holt α = 0.2 β = 0.1 101 4.2.7. Filtros de Henderson Un tipo de filtros bastante usados en la estimación de tendencias de series de tiempo son los llamados filtros de Henderson, en los cuales los pesos son diseñados intentando satisfacer dos caracterı́sticas esperadas en las tendencias: que la tendencia filtrada sea capaz de reproducir una variedad de curvaturas diferentes y que a la vez sean lo más suave posible. la primera condición es satisfecha diseñando el filtro de forma que la tendencia resultante siga un polinomio local cúbico sin distorsión. la segunda condición se logra a través de la suavidez del patrón de pesos usados. Estas dos condi- CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS 102 Vectores de pesos, Filtros simétricos de Henderson w5 w7 w9 w13 w23 -0.07 -0.06 -0.04 -0.02 -0.00 0.29 0.06 -0.01 -0.03 -0.01 0.56 0.29 0.12 0.00 -0.02 0.29 0.41 0.27 0.07 -0.01 -0.07 0.29 0.33 0.15 -0.00 0.06 0.27 0.21 0.01 -0.06 0.12 0.24 0.04 -0.01 0.21 0.07 -0.04 0.15 0.10 0.07 0.12 0.00 0.14 -0.03 0.15 -0.02 0.14 0.12 0.10 0.07 0.04 0.01 -0.00 -0.01 -0.02 -0.01 -0.00 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Tabla 4.5: 7 ciones especifican un patrón de ponderación único y por tanto, una única media móvil para cada longitud posible de filtro considerado. En la Tabla 4.5 se observan los pesos de filtros Henderson simétricos para 2m+1 = 5, 7, 9, 13, 23. ES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 En el siguiente código R, se aplican los filtros de Henderson a la serie del volumen diario de acciones negociadas de Microsoft, usando los vectores de pesos ilustrados en la Tabla 4.5: Código R 4.13. library(fTrading) datos=MSFT[,"Volume"] rownames(datos)=rownames(MSFT) t=1:length(datos) #Definiendo los vectores de pesos w5=c(-0.073,0.294,0.558,0.294,-0.073) w7=c(-0.059,0.059,0.294,0.412,0.294,0.059,-0.059) 4.3. EJERCICIOS 103 w9=c(-0.041,-0.010,0.119,0.267,0.330,0.267,0.119,-0.010,-0.041) w13=c(-0.019,-0.028,0.0,0.066,0.147,0.214,0.240,0.214,0.147,0.066,0.0,-0.028,-0.019) w23=c(-0.004,-0.011,-0.016,-0.015,-0.005,0.013,0.039,0.068,0.097,0.122,0.138,0.148, 0.138,0.122,0.097,0.068,0.039,0.013,-0.005,-0.015,-0.016,-0.011,-0.004) #Aplicando filtros y graficando resultados TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 nf=layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot(t,datos,type=’l’,xaxt=’n’,xlab="Time",main="Henderson 5 términos") axis(1,at=seq(1,length(datos),by=50),labels=time(datos)[seq(1,length(datos),by=50)]) lines(t,filter(datos,w5,"convolution",2,F,NULL),col="red",lwd=2) plot(t,datos,type=’l’,xaxt=’n’,xlab="Time",main="Henderson 9 términos") axis(1,at=seq(1,length(datos),by=50),labels=time(datos)[seq(1,length(datos),by=50)]) lines(t,filter(datos,w9,"convolution",2,F,NULL),col="darkgreen",lwd=2) plot(t,datos,type=’l’,xaxt=’n’,xlab="Time",main="Henderson 13 términos") axis(1,at=seq(1,length(datos),by=50),labels=time(datos)[seq(1,length(datos),by=50)]) lines(t,filter(datos,w13,"convolution",2,F,NULL),col="blue",lwd=2) plot(t,datos,type=’l’,xaxt=’n’,xlab="Time",main="Henderson 23 términos") axis(1,at=seq(1,length(datos),by=50),labels=time(datos)[seq(1,length(datos),by=50)]) lines(t,filter(datos,w23,"convolution",2,F,NULL),col="brown",lwd=2) 4.3. Ejercicios Problema 1: Usando la función HoltWinters() ajuste la tendencia para la serie EXCHRATE.DAT y realice pronósticos para t = 621 a 625. Compare resultados obtenidos con la regresion LOESS en este capı́tulo. Problema 2: Considere de nuevo la serie EXCHRATE.DAT. Utilice filtros de Henderson para identificar la tendencia y posibles cambios estructurales. Problema 3: ES Para la serie del volumen diario de acciones negociadas de Microsoft, en objeto MSFT de la librerı́a R fTrading, ajuste la tendencia usando LOESS y realice los pronósticos para t = 250 a 254. Compare con los resultados de los suavizamientos exponenciales realizados en este capı́tulo usando la función HoltWinters. CAPÍTULO 4. FILTROS LINEALES Y SUAVIZAMIENTOS TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 104 2001−07−16 2000−09−27 2001−07−16 Henderson 13 términos Henderson 23 términos datos 2.0e+07 6.0e+07 1.0e+08 Time 6.0e+07 datos Figura 4.11: 2001−02−21 Time 2.0e+07 ES 2000−09−27 6.0e+07 datos 2001−02−21 1.0e+08 2000−09−27 2.0e+07 6.0e+07 2.0e+07 datos 1.0e+08 Henderson 9 términos 1.0e+08 Henderson 5 términos 2001−02−21 Time 2001−07−16 2000−09−27 2001−02−21 2001−07−16 Time Filtros de Henderson sobre el volumen de acciones diarias negociadas de Microsoft (MSFT). TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 5 Modelación de la componente estacional En el Capı́tulo 2 definimos la componente estacional S t de una serie de tiempo como aquel patrón de cambio regular que se completa dentro de un año calendario y que se repite sobre una base anual. Diebold [3] establece que la estacionalidad surge cuando las tecnologı́as, preferencias e instituciones se ligan al calendario. Este patrón es motivado a factores de consumo, climáticos o cualquier otro que ocurra con una periodicidad regular. Para observar este patrón es necesario una frecuencia de observación inferior al año, pues como vemos, es un patrón de mediano plazo. Al igual que con la tendencia, es posible clasificar la estacionalidad en determinı́stica y estoc ástica. En este capı́tulo consideraremos el primer caso. 5.1. Estacionalidad aditiva y multiplicativa ES En la Sección 2.7, vimos que una serie de componentes aditivas es de la forma dada en la ecuación (2.1), donde las componentes de tendencia, estacionalidad y error se agregan aditivamente para conformar la serie. Por el contrario, una serie de componentes multiplicativas es de la forma dada en la ecuación (2.2), lo cual implica que la variabilidad de la serie cambia (aumenta o disminuye) con el tiempo. Las funciones R decompose() y stl() permiten realizar la descomposición de series aditivas y multiplicativas. Estas dos funciones se diferencian en que la primera usa medias móviles bilaterales para filtrar la tendencia, mientras que la segunda recurre a LOESS. Ver Apéndice para más detalles sobre decompose() y stl() y la Sección 2.7 del Capı́tulo 2 para aplicación y otras funciones para el análisis de la tendencia y estacionalidad. Ambas descomposiciones son útiles para una identificación más clara del tipo de modelo que puede ajustarse a la tendencia, al tiempo que se evalúa la presencia de patrones perı́odicos. Nota: Es común aplicar métodos de eliminación o atenuación de la componente estacional de una serie con el fin de modelar las fluctuaciones no estacionales. Este procedimiento se denomina ajuste por estacionalidad de una serie de tiempo y a la serie resultante se le llama serie ajustada estacionalmente. Sin embargo, en el enfoque que se trabajará, el interés está en modelar 105 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 106 la serie con todas sus componentes. 5.2. Modelado de la estacionalidad por regresión TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Para el ajuste por regresión lineal múltiple, es necesario que el modelo sea lineal en sus parámetros, por tanto, sólo se puede considerar un modelo de series de tiempo de componentes aditivas, Y t = Tt + St + Et , ası́, para ajustar series multiplicativas mediante regresión lineal, debemos trabajar sobre la serie transformada en aditiva usando la transformación logarı́tmica, es decir, consideraremos el ajuste por regresión de log(Y t ) = Tt∗ + St∗ + Et∗ , y luego, mediante la transformación inversa se hallan los ajustes y pronósticos para la serie en la escala original, como ya fue visto en el caso de series de tendencia exponencial. 5.2.1. Modelación de la estacionalidad mediante variables indicadoras Recuerde que una variable indicadora es una variable que toma valor de 1 ó 0 según si cierto evento o caracterı́stica se cumple en una observación muestral dada. Sea una componente estacional S t de perı́odo s, es decir, cada s perı́odos se repite el patrón estacional. Consideramos los siguientes casos s = 6 Serie estacional bimestral; s = 4 Serie estacional trimestral; s = 12 Serie estacional mensual. Sean las variables Ii,t , i = 1, 2, · · · , s, tales que 1 si en t la serie está en la estación i Ii,t = 0 si en t la serie no está en la estación i. (5.1) ES Es decir, Ii,t es la variable indicadora de la estación i. Por ejemplo, si n = 13 y s = 4, entonces I1,t I2,t I3,t I4,t = {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1} = {0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0} = {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0} = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0} Para determinar la estación que corresponde a un tiempo t basta calcular la función módulo de t en s, es decir MOD(t, s) que corresponde al residuo de la división de t entre s. Por ejemplo MOD(33, 12) = 9. En R esta operación se realiza mediante el operador % %: 33 % %12. Entonces, podemos redefinir las variables indicadoras de la siguiente forma: 1 si MOD(t, s) = i Ii,t = para i = 1, 2, · · · , s − 1 (5.2) 0 si MOD(t, s) = i, 5.2. MODELADO DE LA ESTACIONALIDAD POR REGRESI ÓN Ii,t = 1 si MOD(t, s) = 0 0 si MOD(t, s) = 0, 107 para i = s (5.3) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Observe que St = St+ms , ∀ t ≥ 1, m ≥ 1, por la periodicidad del patrón estacional, por lo tanto, sólo se requiere definir s funciones del tiempo para representar el patrón estacional. También observe que para un tiempo t dado, sólo una s de las s variables indicadoras puede tomar el valor de 1, de modo que Ii,t = i=1 1, ∀ t ≥ 1. Sea δi , i = 1, 2, · · · , s el efecto de la estación i, entonces podemos escribir s St = δ1 I1,t + δ2 I2,t + · · · + δs Is,t = δi Ii,t . (5.4) i=1 Para una serie con sólo estacionalidad y componente aleatoria (componentes aditivas), el modelo a ajustar será: s Yt = St + Et = δi Ii,t + Et , (5.5) i=1 ES donde las variables explicatorias son dadas por las s variables indicadoras. Entonces, para una serie de longitud n = 20, y s = 4, tendrı́amos, matricialmente, el siguiente sistema de ecuaciones a resolver por mı́nimos cuadrados (los parámetros a estimar corresponden a los δ i ): ⎤ ⎡ ⎤ ⎡ ⎡ ⎤ 1 0 0 0 Y1 E1 ⎢ Y2 ⎥ ⎢0 1 0 0⎥ ⎢ E2 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎢ Y3 ⎥ ⎢0 0 1 0⎥ ⎢ E3 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎢ Y4 ⎥ ⎢0 0 0 1⎥ ⎢ ⎥ ⎥ ⎡ ⎤ ⎢ E4 ⎥ ⎢ ⎥ ⎢ ⎢ Y5 ⎥ ⎢1 0 0 0⎥ ⎢ E5 ⎥ ⎥ δ1 ⎢ ⎥ ⎢ ⎢ ⎥ ⎢ .. ⎥ ⎢ .. .. .. .. ⎥ ⎢ ⎥ ⎢ .. ⎥ δ ⎢ . ⎥ ⎢ . . . . ⎥ ⎢ 2⎥ ⎢ . ⎥ (5.6) + ⎢ ⎥ = Yt = Xt β + E t , ⎥ ⎢ ⎥=⎢ ⎢Y15 ⎥ ⎢0 0 1 0⎥ ⎣δ3 ⎦ ⎢E15 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎢Y16 ⎥ ⎢0 0 0 1⎥ δ4 ⎢E16 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎢Y17 ⎥ ⎢1 0 0 0⎥ ⎢E17 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎢Y18 ⎥ ⎢0 1 0 0⎥ ⎢E18 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎣Y19 ⎦ ⎣0 0 1 0⎦ ⎣E19 ⎦ 0 0 0 1 Y20 E20 donde el vector de parámetros desconocidos es ⎡ ⎤ δ1 ⎢δ2 ⎥ ⎥ β=⎢ ⎣δ3 ⎦ , δ4 108 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL y la solución por mı́nimos cuadrados serı́a β̂ = (XT X)−1 XT Yt . Ahora, suponga que además de la estacionalidad la serie presenta un patrón de tendencia (componentes aditivas). Por ejemplo, una tendencia lineal s (Tt = β0 + β1 t) y estacionalidad trimestral (S t = δi Ii,t ). En principio supodrii=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 amos que el modelo completo para la serie serı́a: s Yt = Tt + St + Et = β0 + β1 t + δi Ii,t + Et , (5.7) i=1 entonces para una serie de longitud n = 20 tendrı́amos como sistema de ecuaciones, en forma matricial: ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ 1 1 1 0 0 0 E1 Y1 ⎢ E2 ⎥ ⎢ Y2 ⎥ ⎢1 2 0 1 0 0⎥ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎢ ⎥ ⎢ Y3 ⎥ ⎢1 3 0 0 1 0⎥ ⎥ ⎡ ⎤ ⎢ E3 ⎥ ⎢ ⎥ ⎢ ⎢ E4 ⎥ ⎢ Y4 ⎥ ⎢1 4 0 0 0 1⎥ ⎥ β0 ⎢ ⎥ ⎢ ⎥ ⎢ ⎢ Y5 ⎥ ⎢1 5 1 0 0 0⎥ ⎢ ⎥ ⎢ E5 ⎥ ⎥ ⎢β1 ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎢ .. ⎥ ⎢ .. .. .. .. .. .. ⎥ ⎢ ⎥ ⎢ .. ⎥ ⎢ . ⎥ ⎢ . . . . . . ⎥ ⎢ δ1 ⎥ ⎢ . ⎥ + ⎢ ⎥ = Yt = Xt β + E t , (5.8) ⎥ ⎢ ⎥=⎢ δ2 ⎥ ⎢Y15 ⎥ ⎢1 15 0 0 1 0⎥ ⎢ E15 ⎥ ⎥ ⎢ ⎥⎢ ⎢ ⎥ ⎢ ⎥ ⎢ ⎢Y16 ⎥ ⎢1 16 0 0 0 1⎥ ⎣ δ3 ⎦ ⎢E16 ⎥ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎢E17 ⎥ ⎢Y17 ⎥ ⎢1 17 1 0 0 0⎥ δ4 ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎢E18 ⎥ ⎢Y18 ⎥ ⎢1 18 0 1 0 0⎥ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎣E19 ⎦ ⎣Y19 ⎦ ⎣1 19 0 0 1 0⎦ 1 20 0 0 0 1 Y20 E20 ES donde el vector de parámetros desconocidos es ⎡ ⎤ β0 ⎢β1 ⎥ ⎢ ⎥ ⎢ δ1 ⎥ ⎥ β=⎢ ⎢ δ2 ⎥ . ⎢ ⎥ ⎣ δ3 ⎦ δ4 Pero, en el sistema de ecuaciones tendriamos una dependencia lineal perfecta entre la primera columna de la matriz X y las columnas 3 a 6, lo cual harı́a que (XT X)−1 no exista y por tanto, no podriamos estimar el vector de coeficientes. Para solucionar este inconveniente, se tienen tres posibles alternativas: 1. Eliminar el intercepto β 0 de la ecuación del modelo: s Yt = β1 t + δi Ii,t + Et i=1 (5.9) 5.2. MODELADO DE LA ESTACIONALIDAD POR REGRESI ÓN 109 7 En este caso, los δi representan el intercepto para la estación i, respectivamente, obtenidos bajo el supuesto que la ecuación en t de la tendencia es la misma en todas las estaciones, ası́ la ecuación de la serie representa s curvas paralelas con diferentes interceptos. Para el ejemplo, tendrı́amos que para la estación i, Y t = δi + β1 t + Et , i = 1, 2, · · · , s. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 2. Eliminar una de las variables indicadoras, por ejemplo, la de la última estación. en este caso el coeficiente δ i i = s, representa el efecto o diferencia promedio de la serie en la estación i con relación a la estación s. Entonces, siguiendo el ejemplo, tendrı́amos como modelo para la serie: s−1 Yt = β0 + β1 t + δi Ii,t + Et (5.10) i=1 3. Introducir la restriccion s δi = 0. Aqui, cada coeficiente δ i representa el i=1 efecto de la estación i con respecto a la tendencia promedio de la serie: s s Yt = β0 + β1 t + δi Ii,t + Et con i=1 δi = 0. (5.11) i=1 De estas tres alternativas usaremos la segunda. Ejemplo: Considere la serie del ı́ndice mensual de salario sector real industrial (sin trilla de café), de enero de 1990 a noviembre de 2001, previamente ilustrada en la Figura 2.2 del Capı́tulo 2. Claramente la serie presenta un patrón estacional mensual y es de componentes aditivas. Para la tendencia vamos a suponer tres posibilidades: lineal, cuadrática, cúbica: ES Modelo 1: Yt = β0 + β1 t + 11 δi Ii,t + Et i=1 Modelo 2: Yt = β0 + β1 t + β2 t2 + 11 δi Ii,t + Et i=1 Modelo 3: Yt = β0 + β1 t + β2 t2 + β3 t3 + 11 δi Ii,t + Et i=1 En todos los casos, suponemos que los errores son normales de media cero y varianza constante. 110 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 salario<-scan() 94.08 102.23 103.99 103.21 102.59 100.95 101.67 101.71 99.93 100.11 99.65 89.81 90.71 99.88 100.75 101.67 100.58 98.82 98.21 98.96 99.30 98.40 99.17 91.12 90.85 102.67 104.36 101.71 101.48 100.29 100.33 102.24 101.24 102.02 103.79 95.95 96.52 106.55 108.50 108.04 108.68 108.34 108.14 109.75 108.28 108.76 109.36 101.03 101.01 109.63 111.20 109.67 110.24 110.94 110.38 111.50 111.73 112.94 113.87 107.39 103.38 113.84 114.96 116.00 113.54 113.25 113.35 114.88 113.81 116.03 117.50 109.50 105.87 117.69 119.22 118.80 118.48 116.65 116.54 117.03 116.04 116.87 118.60 108.91 109.53 120.21 122.15 122.48 124.30 121.99 122.20 121.41 120.69 122.72 124.70 115.65 114.15 123.45 124.66 122.08 121.64 119.48 120.02 122.33 121.50 122.45 123.63 115.43 111.66 124.21 126.22 126.88 126.88 127.33 127.27 128.88 128.54 130.28 132.15 124.65 119.19 131.69 130.87 129.95 130.83 131.23 132.64 133.50 132.98 134.38 135.12 130.16 121.78 132.44 132.89 130.83 131.41 130.40 131.79 132.46 131.00 132.46 133.61 7 Código R 5.1. salario<-ts(salario,frequency=12,start=c(1990,1)) plot(salario) t=1:length(salario) #Definimos una variable categórica identificando los meses de enero a diciembre #al introducir esta variable en la función lm(), el programa internamente definirá #las variables indicadoras de los meses library(TSA) mes=season(salario) #Designamos el mes de diciembre como el mes de referencia #esto eliminará la indicadora de diciembre en el ajuste mes=relevel(mes,ref="December") ES #Ajustamos los modelos modelo1=lm(salario˜t+mes) modelo2=lm(salario˜t+I(tˆ2)+mes) modelo3=lm(salario˜t+I(tˆ2)+I(tˆ3)+mes) Los resultados de los modelos ajustados son dados a continuación Salida R 5.1. summary(modelo1) Call: lm(formula = salario ˜ t + mes) Residuals: Min 1Q Median -4.4751 -1.6531 -0.1166 3Q 1.2784 Max 6.8502 5.2. MODELADO DE LA ESTACIONALIDAD POR REGRESI ÓN 111 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Estimate Std. Error t value Pr(>|t|) (Intercept) 88.875205 0.766239 115.989 < 2e-16 *** t 0.267642 0.004645 57.624 < 2e-16 *** mesJanuary -1.913076 0.954731 -2.004 0.0472 * mesFebruary 8.299282 0.954629 8.694 1.31e-14 *** mesMarch 9.304973 0.954550 9.748 < 2e-16 *** mesApril 8.333163 0.954494 8.730 1.07e-14 *** mesMay 8.009688 0.954460 8.392 7.00e-14 *** mesJune 6.827045 0.954448 7.153 5.53e-11 *** mesJuly 6.798570 0.954460 7.123 6.46e-11 *** mesAugust 7.540094 0.954494 7.900 1.03e-12 *** mesSeptember 6.471618 0.954550 6.780 3.81e-10 *** mesOctober 7.235643 0.954629 7.580 5.79e-12 *** mesNovember 8.112167 0.954731 8.497 3.92e-14 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 7 Coefficients: Residual standard error: 2.287 on 130 degrees of freedom Multiple R-squared: 0.9659, Adjusted R-squared: 0.9627 F-statistic: 306.7 on 12 and 130 DF, p-value: < 2.2e-16 summary(modelo2) Call: lm(formula = salario ˜ t + I(tˆ2) + mes) Residuals: Min 1Q -4.4024 -1.8045 Median 0.0749 3Q 1.4833 Max 6.2052 Coefficients: ES Estimate Std. Error t value Pr(>|t|) (Intercept) 89.6070580 0.8941117 100.219 < 2e-16 *** t 0.2394942 0.0185735 12.894 < 2e-16 *** I(tˆ2) 0.0001955 0.0001249 1.565 0.1201 mesJanuary -1.9719136 0.9502016 -2.075 0.0399 * mesFebruary 8.2422033 0.9500567 8.675 1.52e-14 *** mesMarch 9.2492626 0.9499449 9.737 < 2e-16 *** mesApril 8.2784309 0.9498655 8.715 1.22e-14 *** mesMay 7.9555416 0.9498181 8.376 7.97e-14 *** mesJune 6.7730948 0.9498023 7.131 6.35e-11 *** mesJuly 6.7444236 0.9498181 7.101 7.44e-11 *** mesAugust 7.4853615 0.9498655 7.880 1.19e-12 *** mesSeptember 6.4159084 0.9499449 6.754 4.44e-10 *** mesOctober 7.1785644 0.9500567 7.556 6.77e-12 *** mesNovember 8.0533295 0.9502016 8.475 4.61e-14 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 2.274 on 129 degrees of freedom Multiple R-squared: 0.9665, Adjusted R-squared: 0.9631 F-statistic: 286.4 on 13 and 129 DF, p-value: < 2.2e-16 summary(modelo3) Call: lm(formula = salario ˜ t + I(tˆ2) + I(tˆ3) + mes) Residuals: Min 1Q -5.2024 -1.4414 Median 0.1069 3Q 1.4619 Max 6.0381 112 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Estimate Std. Error t value Pr(>|t|) (Intercept) 9.197e+01 9.603e-01 95.775 < 2e-16 *** t 4.655e-02 4.351e-02 1.070 0.2867 I(tˆ2) 3.530e-03 7.008e-04 5.038 1.57e-06 *** I(tˆ3) -1.544e-05 3.200e-06 -4.825 3.92e-06 *** mesJanuary -2.135e+00 8.781e-01 -2.432 0.0164 * mesFebruary 8.112e+00 8.777e-01 9.242 6.80e-16 *** mesMarch 9.152e+00 8.774e-01 10.430 < 2e-16 *** mesApril 8.214e+00 8.772e-01 9.363 3.45e-16 *** mesMay 7.923e+00 8.771e-01 9.033 2.19e-15 *** mesJune 6.773e+00 8.771e-01 7.722 2.88e-12 *** mesJuly 6.777e+00 8.771e-01 7.726 2.82e-12 *** mesAugust 7.550e+00 8.772e-01 8.607 2.34e-14 *** mesSeptember 6.513e+00 8.774e-01 7.423 1.41e-11 *** mesOctober 7.309e+00 8.777e-01 8.327 1.09e-13 *** mesNovember 8.217e+00 8.781e-01 9.357 3.56e-16 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 7 Coefficients: Residual standard error: 2.1 on 128 degrees of freedom Multiple R-squared: 0.9717, Adjusted R-squared: 0.9686 F-statistic: 313.5 on 14 and 128 DF, p-value: < 2.2e-16 Los gráficos de residuales de los tres modelos son obtenidos mediante el siguiente código R y en la Figura 5.1 se ilustra el resultado. Código R 5.2. nf=layout(rbind(c(1,1,2,2),c(3,3,4,4),c(5,5,6,6))) plot.ts(residuals(modelo1),lwd=2) abline(h=0,lty=2) plot(fitted(modelo1),residuals(modelo1)) abline(h=0,lty=2) plot.ts(residuals(modelo2),lwd=2) abline(h=0,lty=2) plot(fitted(modelo2),residuals(modelo2)) abline(h=0,lty=2) plot.ts(residuals(modelo3),lwd=2) abline(h=0,lty=2) plot(fitted(modelo3),residuals(modelo3)) abline(h=0,lty=2) ES La serie original y las series ajustadas son presentadas en la Figura 5.2, obtenida con el código R siguiente: Código R 5.3. nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) plot(t,salario,type=’l’,lwd=1.5) lines(t,fitted(modelo1),lwd=2,col="red") legend("topleft",legend=c("Original","modelo1"),col=c(1,2),lwd=2) plot(t,salario,type=’l’,lwd=1.5) lines(t,fitted(modelo2),lwd=2,col="red") legend("topleft",legend=c("Original","modelo2"),col=c(1,2),lwd=2) plot(t,salario,type=’l’,lwd=1.5) lines(t,fitted(modelo3),lwd=2,col="red") legend("topleft",legend=c("Original","modelo3"),col=c(1,2),lwd=2) 40 60 80 100 120 6 4 2 140 90 100 110 120 130 fitted(modelo1) 20 40 60 80 100 120 6 4 2 0 residuals(modelo2) 0 −4 6 4 2 0 −4 residuals(modelo2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Time 7 20 0 residuals(modelo1) 0 113 −4 6 4 2 0 −4 residuals(modelo1) 5.2. MODELADO DE LA ESTACIONALIDAD POR REGRESI ÓN 140 90 100 120 130 40 60 80 100 120 0 2 4 6 20 −4 residuals(modelo3) 4 2 0 −4 residuals(modelo3) 0 140 90 100 Time 110 120 130 fitted(modelo3) Gráficos de residuales de los tres modelos ajustados a la serie de salario. 120 salario 90 100 110 120 110 90 100 salario Original modelo2 130 Original modelo1 130 Figura 5.1: 110 fitted(modelo2) 6 Time 0 20 40 60 80 100 120 140 0 20 40 60 80 100 120 140 t Original modelo3 salario 90 100 110 120 130 ES t 0 20 40 60 80 100 120 140 t Figura 5.2: Gráficos de la serie real y ajustada según los tres modelos considerados para la serie de salario. 114 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL Compare el ajuste de los tres modelos mediante el AIC y BIC: Código R 5.4. #Cálculo de AIC y BIC para los tres modelos TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 AICS=c(AIC(modelo1),AIC(modelo2),AIC(modelo3)) log.n=log(length(salario)) BICS=c(AIC(modelo1,k=log.n),AIC(modelo2,k=log.n),AIC(modelo3,k=log.n)) criterios = rbind(AICS, BICS) colnames(criterios) = c("lineal","cuadrático","cúbico") rownames(criterios) = c("AIC","BIC") Salida R 5.2. (criterios) lineal cuadrático cúbico AIC 656.7182 656.0298 634.1352 BIC 698.1981 700.4725 681.5407 Parece que el mejor ajuste es logrado por el modelo de tendencia cúbica. 5.2.2. Modelación de la estacionalidad mediante funciones trigonom étricas Con las variables indicadoras, un parámetros es usado para representar cada estación año tras año. Sin embargo, los efectos estacionales pueden variar levemente de año a año, de modo que resulta más conveniente usar una fución suave en lugar de ı́ndices separados para cada estación. Las funciones seno y coseno son útiles para representar las variaciones suaves en un modelo estacional. Recordemos que una onda armónica sinusoidal de frecuencia F (o perı́odo T = 1/F ), amplitud A y fase φ, describe un ciclo repetitivo de la forma A sin(2πF t + φ) = α sin(2πF t) + γ cos(2πF t) (5.12) ES con α = A cos φ y γ = A sin φ. La expresión del lado derecho de la ecuación anterior es la que se utiliza en un modelo de regresión para representar la estacionalidad mediante funciones trigonométricas, con t variando en los enteros. En general, las funciones seno y coseno sirven para generar series estacionales puras. Sea Yt una serie con componente de tendencia T t (incluyendo el término constante β0 ) y componente estacional aditiva S t de perı́odo s. Entonces existen k = [s/2] ciclos posibles, donde [s/2] representa la parte entera de s/2. Un modelo estacional para Y t es k Yt = Tt + j=1 αj sin 2πjt s + γj cos 2πjt s + Et (5.13) 5.2. MODELADO DE LA ESTACIONALIDAD POR REGRESI ÓN 115 πt 2 + γ1 cos πt 2 + γ2 cos (πt) + Et , TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Yt = β0 + β1 t + α1 sin 7 Para s par, en el valor j = s/2 la función seno será igual a cero para todo t ∈ Z, luego, podemo eliminar tal término del modelo. Por ejemplo, considere una serie de tendencia lineal y estacionalidad trimestral (s = 4) aditiva, entonces, k = s/2 = 2 y tenemos de la ecuación (5.13): (5.14) desde que sin (πt) = 0 ∀ t ∈ Z. Si la estacionalidad es mensual, tendriamos que: Yt = β0 + β1 t + α1 sin + α3 sin + α5 sin πt πt πt πt + γ1 cos + α2 sin + γ2 cos 6 6 3 3 πt πt 2πt 2πt + γ3 cos + α4 sin + γ4 cos 2 2 3 3 5πt 5πt + γ5 cos + γ6 cos(πt) + Et . 6 6 (5.15) Observe que al igual al modelo con variables indicadoras, se usan aquı́ s − 1 funciones para representar la componente estacional, cada una definiendo una variable explicatoria en el modelo de regresión. Ejemplo: Considere de nuevo la serie del ı́ndice de salario real. Vamos a ajustar los tres modelos (con tendencia lineal, cuadrática y cúbica) antes considerados pero usando para la estacionalidad, funciones trigonométricas. El modelo de tendencia lineal corresponde a la ecuación en (5.15), los demás adicionan el término cuadrático y cúbico. Para las 11 funciones trigonométricas en (5.15), definimos respectivamente en R, las variables sen1, cos1, sen2, cos2, sen3, cos3, sen4, cos4, sen5, cos5, cos6: Código R 5.5. ES #Definiendo variables trigonométricas sen1=sin(pi*t/6) cos1=cos(pi*t/6) sen2=sin(pi*t/3) cos2=cos(pi*t/3) sen3=sin(pi*t/2) cos3=cos(pi*t/2) sen4=sin(2*pi*t/3) cos4=cos(2*pi*t/3) sen5=sin(5*pi*t/6) cos5=cos(5*pi*t/6) cos6=cos(pi*t) #Ajuste con variables trigonométricas modelo1b=lm(salario˜t+sen1+cos1+sen2+cos2+sen3+cos3+sen4+cos4+sen5+cos5+cos6) modelo2b=lm(salario˜t+I(tˆ2)+sen1+cos1+sen2+cos2+sen3+cos3+sen4+cos4+sen5+cos5+cos6) modelo3b=lm(salario˜t+I(tˆ2)+I(tˆ3)+sen1+cos1+sen2+cos2+sen3+cos3+sen4+cos4+sen5+cos5+cos6) summary(modelo1b) 116 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Gráficos de residuales nf=layout(rbind(c(1,1,2,2),c(3,3,4,4),c(5,5,6,6))) plot.ts(residuals(modelo1b),lwd=2) abline(h=0,lty=2) plot(fitted(modelo1b),residuals(modelo1b)) abline(h=0,lty=2) 7 summary(modelo2b) summary(modelo3b) plot.ts(residuals(modelo2b),lwd=2) abline(h=0,lty=2) plot(fitted(modelo2b),residuals(modelo2b)) abline(h=0,lty=2) plot.ts(residuals(modelo3b),lwd=2) abline(h=0,lty=2) plot(fitted(modelo3b),residuals(modelo3b)) abline(h=0,lty=2) #Gráficos series ajustadas nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) plot(t,salario,type=’l’,lwd=1.5) lines(t,fitted(modelo1b),lwd=2,col="red") legend("topleft",legend=c("Original","modelo1b"),col=c(1,2),lwd=2) plot(t,salario,type=’l’,lwd=1.5) lines(t,fitted(modelo2b),lwd=2,col="red") legend("topleft",legend=c("Original","modelo2b"),col=c(1,2),lwd=2) plot(t,salario,type=’l’,lwd=1.5) lines(t,fitted(modelo3b),lwd=2,col="red") legend("topleft",legend=c("Original","modelo3b"),col=c(1,2),lwd=2) #Cálculo de AIC y BIC para los tres modelos con variables trigonométricas AICSb=c(AIC(modelo1b),AIC(modelo2b),AIC(modelo3b)) log.n=log(length(salario)) BICSb=c(AIC(modelo1b,k=log.n),AIC(modelo2b,k=log.n),AIC(modelo3b,k=log.n)) criteriosb = rbind(AICSb, BICSb) colnames(criteriosb) = c("lineal","cuadrático","cúbico") rownames(criteriosb) = c("AIC","BIC") #Tabla de valores AIC y BIC (criteriosb) ES Los resultados numéricos y gráficos se presentan a continuación. Compare con los obtenidos usando indicadoras para la estacionalidad. Básicamente ambas metodologı́as dan los mismos resultados con cada modelo, excepto que los coeficientes del intercepto y los asociados a la estacionalidad no tienen el mismo significado, pero al detallar la ecuación de la serie en cada estación, se llega al mismo resultado, en los modelos de tendencia lineal, cuadrática y cúbica, respectivamente. 5.2. MODELADO DE LA ESTACIONALIDAD POR REGRESI ÓN 7 Pr(>|t|) 0.0000 0.0000 0.9832 0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0287 0.0512 0.7783 0.5283 ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 modelo1b: Tendencia lineal Estimate Std. Error t value (Intercept) 95.1268 0.3852 246.92 t 0.2676 0.0046 57.62 sen1 0.0057 0.2700 0.02 cos1 -2.4087 0.2715 -8.87 sen2 -1.5828 0.2696 -5.87 cos2 -2.3583 0.2715 -8.69 sen3 -1.9412 0.2695 -7.20 cos3 -1.0815 0.2715 -3.98 sen4 -1.6609 0.2695 -6.16 cos4 -0.6007 0.2715 -2.21 sen5 -0.5303 0.2695 -1.97 cos5 0.0766 0.2715 0.28 cos6 0.1209 0.1913 0.63 modelo2b: Tendencia cuadrática Estimate Std. Error t value (Intercept) 95.8074 0.5797 165.28 t 0.2395 0.0186 12.89 I(tˆ2) 0.0002 0.0001 1.56 sen1 0.0057 0.2685 0.02 cos1 -2.4014 0.2700 -8.89 sen2 -1.5828 0.2681 -5.90 cos2 -2.3489 0.2701 -8.70 sen3 -1.9412 0.2680 -7.24 cos3 -1.0717 0.2701 -3.97 sen4 -1.6609 0.2680 -6.20 cos4 -0.5908 0.2701 -2.19 sen5 -0.5303 0.2680 -1.98 cos5 0.0865 0.2701 0.32 cos6 0.1259 0.1902 0.66 modelo3b: Tendencia cúbica Estimate Std. Error t value (Intercept) 98.1735 0.7259 135.23 t 0.0466 0.0435 1.07 I(tˆ2) 0.0035 0.0007 5.04 I(tˆ3) -0.0000 0.0000 -4.82 sen1 -0.1156 0.2492 -0.46 cos1 -2.4014 0.2494 -9.63 sen2 -1.6395 0.2479 -6.61 cos2 -2.3489 0.2494 -9.42 sen3 -1.9741 0.2476 -7.97 cos3 -1.0717 0.2494 -4.30 sen4 -1.6798 0.2475 -6.79 cos4 -0.5908 0.2494 -2.37 sen5 -0.5391 0.2475 -2.18 cos5 0.0865 0.2494 0.35 cos6 0.1259 0.1757 0.72 117 Pr(>|t|) 0.0000 0.0000 0.1201 0.9831 0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0305 0.0500 0.7491 0.5092 Pr(>|t|) 0.0000 0.2867 0.0000 0.0000 0.6435 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0193 0.0312 0.7291 0.4748 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 118 20 40 60 80 100 120 6 4 2 0 residuals(modelo1b) 0 −4 6 4 2 0 −4 residuals(modelo1b) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 AIC´s y BIC’s modelos con funciones trigonométricas lineal cuadrático cúbico AIC 656.72 656.03 634.14 BIC 698.20 700.47 681.54 140 90 100 40 60 80 100 120 6 4 2 140 90 100 40 60 80 Time 130 100 120 140 6 4 2 0 90 100 110 120 130 fitted(modelo3b) Gráficos de residuales de los tres modelos ajustados a la serie de salario, con funciones trigonométricas. ES Figura 5.3: 120 −4 residuals(modelo3b) 6 4 2 0 20 110 fitted(modelo2b) −4 residuals(modelo3b) Time 0 130 0 residuals(modelo2b) 20 120 −4 6 4 2 0 0 110 fitted(modelo1b) −4 residuals(modelo2b) Time 5.2. MODELADO DE LA ESTACIONALIDAD POR REGRESI ÓN TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 119 salario 110 120 130 Original modelo2b 90 100 110 90 100 salario 120 130 Original modelo1b 0 20 40 60 80 100 120 140 0 20 40 t 60 80 100 120 140 t salario 90 100 110 120 130 Original modelo3b 0 20 40 60 80 100 120 140 ES t Figura 5.4: Gráficos de la serie real y ajustada según los tres modelos considerados para la serie de salario, con funciones trigonométricas. 120 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 5.3. Evaluación de la estabilidad de los modelos de pronóstico TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Cuando utilizamos un modelo de regresión para el ajuste de una serie de tiempo, asumimos que las relaciones establecidas por tal modelo son estables a lo largo del tiempo, esto es, que los parámetros del modelo no cambian. Sin embargo, como lo establece Diebold [3], las relaciones comerciales, industriales y económicas pueden variar por lo que es necesario evaluar e identificar los parámetros del modelo que son variables en el tiempo, en particular, cuando éste contiene una componente estacional, ya que ésta puede no ser constante debido a que evoluciona con el paso del tiempo. Para evaluar la estabilidad de un modelo, existe la metodologı́a denominada estimación recursiva y la evaluación de residuales recursivos. Considere el siguiente modelo de regresión Yt = xtt β t + Et , t = 1, · · · , n, (5.16) donde, para el tiempo t, Y t es la observación de la variable dependiente, x t es el vector de observaciones en p + 1 regresores no aleatorios (p variables explicatorias y la columna de unos de la matriz de diseño), con x 1t = 1 ∀ t (asociado al término constante o intercepto del modelo), y el vector de parámetros β t = {β0,t , β1,t , · · · , βp,t} escrito con el subı́ndice t para indicar que puede variar con el tiempo. Asumimos que los términos de error E t son independientes, distribuı́dos normales con media cero y varianza constante. Queremos probar que H0 : β t = β, t = 1, · · · , n, (5.17) ES esto es, que el vector de parámetros no cambia con t (por lo menos dentro de la muestra de tamaño n). Para probar esta hipótesis se procede a estimar en forma recursiva el modelo de regresión estándar: Y t = xtt β + Et , t = 1, · · · , m, con k ≤ m ≤ n, y k > p + 1, es decir, en lugar de usar toda la muestra, se utiliza un subconjunto menor de las observaciones, respetando la secuencia temporal de los datos. Entonces, 1. iniciamos haciendo la regresión con las m = k primeras observaciones, k > p + 1, de lo cual obtenemos el vector de parámetros estimados β̂ k . 2. A continuación repetimos la estimación con las m = k + 1 primeras observaciones, obteniendo el vector de parámetros estimados β̂ k+1 . 3. Continuamos con la estimación con los demás valores de m = k + 2, · · · , n. 4. Con los anterior obtenemos para cada uno de los parámetros del modelo una sucesión de valores estimados, { β̂i,k , β̂i,k+1, · · · , β̂i,n }, i = 0, · · · , p que constituyen los estimadores recursivos de los parámetros. 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO121 En cada m = k, k + 1, · · · , n − 1 podemos calcular un error de pronóstico a un paso adelante, es decir, con los parámetros ajustados con los m primeros datos, construimos el pronóstico para Y m+1 , Ŷm+1 = xtm+1 β̂ m , de donde el error de pronóstico es (5.18) 7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 êm+1,m = Ym+1 − Ŷm+1 = Ym+1 − xtm+1 β̂ m , estos son denominados los residuales recursivos. Se prefiere trabajar con la versión estandarizada de estos residuales: Sea β̂ m = (Xm t Xm )−1 Xtm Ym el estimador de mı́nimos cuadrados del vector de parámetros basado en las t primeras m observaciones, con Y m = [Y1 , · · · , Ym ] (el vector respuesta con las t m primeras observaciones), X m = [x1 , · · · , xm ] (la matrix de diseño con las m primeras observaciones); asumimos que (X m t Xm )−1 existe y que la varianza del modelo es constante. Entonces, la varianza de ê m+1,m es VAR(êm+1,m ) = σ 2 [1 + xtm+1 (Xm t Xm )−1 xm+1 ] (5.19) Entonces, los residuales recursivo estandarizados corresponden a wm+1,m = êm+1,m . VAR(êm+1,m ) (5.20) Se ha mostrado que bajo H 0 , y el supuesto de normalidad, w m+1,m son variables aleatorias normales independientes e idénticamente distribuidos, con media cero y varianza unitaria. ES Nota: Desde que σ 2 es desconocido, se estima como la varianza del modelo de regresión ajustado con todos los datos, entonces consideramos a ŵm+1,m = êm+1,m m+1,m ) VAR(ê . (5.21) La suma acumulada de los residuales recursivos estandarizados tiene utilidad especial para evaluar la estabilidad de los parámetros del modelo de regresión usando el siguiente estadı́stico: t CUSUMt = ŵm+1,m , para t = k, · · · , n − 1 (5.22) m=k para este estadı́stico se tiene que bajo los supuestos de normalidad, independencia y estabilidad del vector de parámetros a lo largo del tiempo, E[CUSUM t ] = 0, VAR(CUSUMt ) = t − p − 1. CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 122 Los valores crı́ticos para el estadı́stico CUSUM t son t−p−1 n − p − 1 + 2√ ±a n−p−1 (5.23) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 donde a = 1.143 para un nivel de significancia α = 0.01; a = 0.948 para α = 0.05 y a = 0.850 para α = 0.1. En la práctica, se grafica la serie del estadı́stico CUSUM t versus t, junto con las rectas definidas por los dos lı́mites crı́ticos en (5.23). Si β t es constante hasta un tiempo t = t 0 , entonces los estadı́sticos CUSUM t tendrán media cero hasta ese tiempo y en general tendrán medias no nula subsecuentemente, luego la hipótesis de estabilidad es rechazada cuando se observe un corte de los lı́mites crı́ticos para la serie de CUSUM t . Nota: Con el test CUSUM se prueba la hipótesis nula H 0 : β t = β, t = 1, · · · , n, probando que E[CUSUMt ] = 0, t = 1, · · · , n,. 5.3.1. Ejemplo 1: Considere la serie mensual representada en la Figura 5.5, la cual fue simulada bajo el modelo Y t = 3500 + 200t + Et , Et ∼ N(0, (4000)2 ), con n = 300 observaciones. 30000 20000 10000 0 ES yt 40000 50000 60000 70000 Serie simulada Yt = 3500 + 200t + Et 1980 1985 1990 1995 2000 2005 Time Figura 5.5: Gráfico de 300 observaciones de la serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). Es claro que el mejor modelo para esta serie es el de tendencia lineal sin estacionalidad, La siguiente tabla resume los resultados del ajuste: 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO123 7 Parámetros estimados (con todos los datos) Estimate Std. Error t value Pr(>|t|) (Intercept) 3029.4512 460.5818 6.58 0.0000 t 201.6341 2.6525 76.02 0.0000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Para el análisis de la estabilidad de los parámetros (intercepto y pendiente en este caso), aplicamos el siguiente código R: Código R 5.6. yt=scan(file.choose()) #leer archivo datossimuleje1recursivos.txt yt=ts(yt,freq=12,start=c(1980,1)) t=1:length(yt) regresion=lm(yt˜t) #Función para realizar las regresiones recursivas #esta función debe ser personalizada según el modelo de la serie estim=function(n){ modelo=lm(yt[1:n]˜t[1:n]) resul=cbind(coef(modelo),confint(modelo)) resul } #Definiendo los tamaños de muestras para las regresiones recursivas #desde n=p+1=3, hasta la longitud de la serie n=matrix(3:length(yt),ncol=1) #Realizando las regresiones recursivas; #el primer número en el argumento dim=c(2,3,nrow(n)) corresponde a p+1=2 b=array(apply(n,1,estim),dim=c(2,3,nrow(n))) #Extrayendo información de los interceptos: fila1: estimación, fila2:LI, fila3:LS betas0=b[1,,] ES #Extrayendo información de la pendiente: fila1: estimación, fila2:LI, fila3:LS betas1=b[2,,] #Graficando los beta0 y sus I.C del 95% matplot(n,t(betas0),type=’l’,lty=c(1,2,2),col=1,lwd=1.5,ylab=expression(hat(beta)[0])) abline(h=3500,lty=1,col=2,lwd=2) legend("topright",legend=expression(beta[0]==3500),lwd=2,col=2) #Graficando los beta1 y sus I.C del 95% matplot(n,t(betas1),ylim=c(-500,500),type=’l’,lty=c(1,2,2),col=1,lwd=1.5, ylab=expression(hat(beta)[1])) abline(h=200,lty=1,col=2,lwd=2) legend("topright",legend=expression(beta[1]==200),lwd=2,col=2) #Obtención de residuales recursivos y gráficos CUSUMt library(strucchange) rr=recresid(regresion) nf=layout(rbind(c(1,1),c(2,2))) plot(rr, type = "l",ylab="Residuales recursivos",xlab="t") abline(h=0,col=2,lwd=2) CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 124 plot(efp(yt˜t, type = "Rec-CUSUM"),lwd=2) #Test CUSUM recursivo para cambio estructural sctest(yt˜t) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 La última lı́nea del código anterior produce un test para probar la estabilidad del modelo, sus resultados son: Test CUSUM recursivo Estadı́stico ValorP Método S 0.35 0.92 Recursive CUSUM test 20000 Esta prueba nos dice que no hay cambios estructurales en el modelo, lo cual también es visto a través de las siguientes gráficas, obtenidas con el código R dado: ES −10000 0 ^ β0 10000 β0 = 3500 Figura 5.6: 0 50 100 150 200 250 300 n Gráfico de interceptos estimados recursivamente, para serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO125 0 −400 −200 ^ β1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 200 7 400 β1 = 200 0 50 100 150 200 250 300 n −10000 0 5000 Gráfico de pendientes estimadas recursivamente, para serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). Residuales recursivos Figura 5.7: 0 50 100 150 200 250 300 −3 −2 −1 0 1 2 3 Recursive CUSUM test Empirical fluctuation process ES t 1980 1985 1990 1995 2000 2005 Time Figura 5.8: Gráfico residuales recursivos y CUSUMt para la serie simulada Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ). CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 126 5.3.2. Ejemplo 2: 7 Considere ahora la serie mensual representada en la Figura 5.9, la cual fue simulada bajo el modelo Y t = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500 + 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N(0, (4000)2 ). 20000 40000 yt2 60000 80000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Serie simulada Yt = 18500 + 50t + Et t ≤ 150, Yt = 18500 + 200t + Et t > 150 1980 1985 1990 1995 2000 2005 Time Figura 5.9: Gráfico de 300 observaciones de la serie simulada Yt = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500 + 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ). ES Es claro que en este caso existe un punto de ruptura o cambio del modelo, en t = 150. Esta situación se ve reflejada claramente tanto en el test CUSUM recursivo para estabilidad, como en las gráficas del procedimiento de estimación recursiva (la programación R usada es muy similar a la dada en el Código R 5.6). Parámetros estimados (con todos los datos) Estimate Std. Error t value Pr(>|t|) (Intercept) 6754.3006 889.6451 7.59 0.0000 t 238.8314 5.1236 46.61 0.0000 Test CUSUM recursivo Estadı́stico ValorP Método S 2.95 0.00 Recursive CUSUM test 20000 β0 = 18500 −20000 0 ^ β0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 40000 7 60000 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO127 0 50 100 150 200 250 300 n Gráfico de interceptos estimados recursivamente, para serie simulada Yt = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500 + 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ). 200 Figura 5.10: −200 −400 ES ^ β1 0 β1 = 50 0 50 100 150 200 250 300 n Figura 5.11: Gráfico de pendientes estimadas recursivamente, para serie simulada Yt = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500 + 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ). CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 10000 20000 0 −10000 Residuales recursivos TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 128 0 50 100 150 200 250 300 t 8 6 4 2 0 −2 Empirical fluctuation process Recursive CUSUM test 1980 1985 1990 1995 2000 2005 Time Gráfico residuales recursivos y CUSUMt para la serie simulada Yt = 18500 + 50t + Et , para 1 ≤ t ≤ 150, Yt = 18500 + 200t + Et , para 151 ≤ t ≤ 300, Et ∼ N (0, (4000)2 ). ES Figura 5.12: 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO129 5.3.3. Ejemplo: Ajuste de una serie estacional multiplicativa TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Considere la serie de la produccion trimestral de cemento portland, en miles de toneladas, periodo: Q1:56-Q3:94 (los datos aparecen en la progrmación R) que se ilustra en la Figura 5.13. Claramente, la serie es estacional (la frecuencia es s = 4) de componentes multiplicativas ya que su variabilidad incrementa con la tendencia creciente. Para la serie del logaritmo observamos una mejora en cuanto a la varianza, sin embargo parece que aún hay problemas. 500 1000 yt 1500 2000 Producción trimestral cemento portland Miles de ton. Q11956−Q31994 1960 1970 1980 1990 Time ES 6.5 lnyt 7.0 7.5 Log de producción trimestral cemento portland Q11956−Q31994 Figura 5.13: 1960 1970 1980 1990 Time Gráfico serie de producción trimestral de cemento portland y de su logaritmo Modelaremos la serie de los logartimos. Para una mejor identificación de su tendencia procedemos con la descomposición stl, presentada en la Figura 5.14. Aparentemente, la tendencia puede ser modelada por un polinomio de grado 2 en t. Ajustamos entonces un modelo de tendencia cuadrática y estacionalidad trimestral usando variables indicadoras: log(Y t ) = β0 + β1 t + β2 t2 + 3 δi Ii,t + Et , Et ∼ N(0, σ 2 ). Los resultados de este ajuste se presentan a contini=1 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 130 uación: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Parámetros estimados (con todos los datos) Estimate Std. Error t value Pr(>|t|) (Intercept) 6.3180 0.0209 302.32 0.0000 t 0.0150 0.0005 28.14 0.0000 I(tˆ2) -0.0001 0.0000 -15.91 0.0000 trimestre1Q -0.1343 0.0168 -8.01 0.0000 trimestre2Q -0.0191 0.0168 -1.14 0.2554 trimestre3Q 0.0168 0.0168 1.00 0.3168 7.0 7.0 −0.06 −0.02 0.02 remainder ES 6.2 6.6 trend 7.4 −0.10 −0.05 0.00 seasonal 0.05 6.5 data 7.5 Log de Producción trimestral cemento portland Q11956−Q31994 1960 1970 1980 1990 time Figura 5.14: Descomposición stl de la serie de logaritmos de la producción trimestral cemento portland. 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO131 0.1 0.0 −0.2 −0.1 residuals(modelo1) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 0.2 Los gráficos de los residuales del modelo ajustado son presentados en la Figura 5.15 ¿Qué podemos concluir de las dos gráficas de residuales? 0 50 100 150 0.1 0.0 −0.2 −0.1 residuals(modelo1) 0.2 t 6.2 6.4 6.6 6.8 7.0 7.2 7.4 fitted(modelo1) Figura 5.15: Residuales ajuste de la serie de logaritmos de la producción trimestral cemento portland. ES Para el análisis de la estabilidad del modelo, considere las Figuras 5.16, 5.17, y 5.18 y los resultados del test CUSUM recursivo: Test CUSUM recursivo Estadı́stico ValorP Método S 0.86 0.09 Recursive CUSUM test ¿Qué conclusiones extraemos de estos resultados? 6.35 0.04 0.06 ^ β1 6.20 6.10 0.02 6.15 ^ β0 6.25 0.08 6.30 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0.10 ^ con todos los datos β0 = 6.318034 7 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 132 6.05 ^ con todos los datos, β1 = 0.01495135 50 100 150 50 n ^ con todos los datos, β2 = − 5.248589e−05 −5e−04 −1e−03 ES ^ β2 0e+00 5e−04 n 100 50 100 150 n Figura 5.16: Estimación recursiva de los parámetros de la tendencia, ajuste de la serie de logaritmos de la producción trimestral cemento portland. 150 0.04 ^ δ2 0.00 −0.10 ^ δ1 −0.05 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0.08 7 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO133 ^ con todos los datos, δ2 = − 0.01913897 −0.04 −0.15 ^ con todos los datos, δ1 = − 0.134269 50 100 150 50 0.00 0.02 0.04 0.06 0.08 0.10 n ^ con todos los datos, δ3 = 0.01683978 −0.04 ES ^ δ3 n 100 50 100 150 n Figura 5.17: Estimación recursiva de los parámetros de la estacionalidad, ajuste de la serie de logaritmos de la producción trimestral cemento portland. 150 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 0.1 7 0.0 −0.1 −0.2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Residuales recursivos 0.2 134 0 50 100 150 t 2 1 0 −1 −2 −3 Empirical fluctuation process 3 Recursive CUSUM test 1960 1970 1980 1990 Time Figura 5.18: Residuales recursivos y test CUSUM, ajuste de la serie de logaritmos de la producción trimestral cemento portland. A continuación el código R usado para este ejemplo: Código R 5.7. ES #LECTURA Y GRAFICACIÓN DE LA SERIE yt=scan() 465 532 561 570 529 604 603 582 554 620 646 637 573 673 690 681 621 698 753 728 688 737 782 692 637 757 783 757 674 734 835 838 797 904 949 975 902 974 969 967 849 961 966 922 836 998 1025 971 892 973 1047 1017 948 1032 1190 1136 1049 1134 1229 1188 1058 1209 1199 1253 1070 1282 1303 1281 1148 1305 1342 1452 1184 1352 1316 1353 1121 1297 1318 1281 1109 1299 1341 1290 1101 1284 1321 1317 1122 1261 1312 1298 1202 1302 1377 1359 1232 1386 1440 1439 1282 1573 1533 1651 1347 1575 1475 1357 1086 1158 1279 1313 1166 1373 1456 1496 1251 1456 1631 1554 1347 1516 1546 1564 1333 1458 1499 1613 1416 1625 1770 1791 1622 1719 1972 1893 1575 1644 1658 1668 1343 1441 1444 1497 1267 1501 1538 1569 1450 1569 1648 1777 1468 1732 1962 yt=ts(yt,frequency=4,start=c(1956,1)) #TRANSFORMACIÓN LOGARÍTMICA Y DESCOMPOSICIÓN DE LA SERIE TRANSFORMADA lnyt=log(yt) 5.3. EVALUACIÓN DE LA ESTABILIDAD DE LOS MODELOS DE PRON ÓSTICO135 nf=layout(rbind(c(0,1,1,0),c(0,2,2,0))) plot(yt, lwd=2,main="Producción trimestral cemento portland\n Miles de ton. Q11956-Q31994") plot(lnyt,lwd=2,main="Log de producción trimestral cemento portland\nQ11956-Q31994") TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #DEFINIENDO VARIABLE ASOCIADA A LA ESTACIONALIDAD Y #TOMANDO EL CUARTO TRIMESTRE COMO ESTACIÓN DE REFERENCIA 7 #DESCOMPOSICIÓN DE LA SERIE DE LOGARITMOS componlnyt=stl(lnyt,s.window="periodic") plot(componlnyt,lwd=2,main="Log de Producción trimestral cemento portland\nQ11956-Q31994") library(TSA) trimestre=season(lnyt) trimestre=relevel(trimestre,ref="4Q") #DEFINIENDO ÍNDICE DE TIEMPO t=1:length(lnyt) #AJUSTANDO MODELO AL LOG(Yt) CON TENDENCIA CUADRÁTICA Y ESTACIONALIDAD TRIMESTRAL modelo1=lm(lnyt˜t+I(tˆ2)+trimestre) summary(modelo1) nf=layout(rbind(c(1,1),c(2,2))) plot(t,residuals(modelo1),type="o",lwd=2); abline(h=0,lty=2) plot(fitted(modelo1),residuals(modelo1),type="p",lwd=2); abline(h=0,lty=2) #ESTIMACIÓN RECURSIVA PARA ANÁLISIS DE ESTABILIDAD DEL MODELO estim=function(n){ modelo=lm(lnyt[1:n]˜t[1:n]+I(tˆ2)[1:n]+trimestre[1:n]) resul=cbind(coef(modelo),confint(modelo)) resul } #tomar mı́nimo n=max(2*s,p+1), s=No. perı́odos estacionales y p=No. de regresoras n=matrix(8:length(lnyt),ncol=1) #En argumento dim=c(6,3,nrow(n)), laprimera cifra (6) es el número de parámetros del modelo b=array(apply(n,1,estim),dim=c(6,3,nrow(n))) #información de los interceptos: fila1: estimación, fila2:LI, fila3:LS betas0=b[1,,] #información de beta1: fila1: estimación, fila2:LI, fila3:LS betas1=b[2,,] ES #información de beta2: fila1: estimación, fila2:LI, fila3:LS betas2=b[3,,] #información de delta1: fila1: estimación, fila2:LI, fila3:LS deltas1=b[4,,] #información de delta2: fila1: estimación, fila2:LI, fila3:LS deltas2=b[5,,] #información de delta3: fila1: estimación, fila2:LI, fila3:LS deltas3=b[6,,] nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) #Graficando los beta0 y sus I.C del 95% matplot(n,t(betas0),type=’l’,lty=c(1,2,2),col=1,lwd=1.5,ylab=expression(hat(beta)[0])) abline(h=coef(modelo1)[[1]],lty=1,col=2,lwd=2) text(80,coef(modelo1)[[1]],expression(paste("con todos los datos",sep=" ",hat(beta)[0]==6.318034)),pos=3) #Graficando los beta1 y sus I.C del 95% matplot(n,t(betas1),type=’l’,lty=c(1,2,2),col=1,lwd=1.5,ylab=expression(hat(beta)[1])) 136 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL abline(h=coef(modelo1)[[2]],lty=1,col=2,lwd=2) text(80,0.0005,expression(paste("con todos los datos,",sep=" ",hat(beta)[1]==0.01495135)),pos=3) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) 7 #Graficando los beta2 y sus I.C del 95% matplot(n,t(betas2),type=’l’,lty=c(1,2,2),ylim=c(-0.001,max(betas2)),col=1,lwd=1.5, ylab=expression(hat(beta)[2])) abline(h=coef(modelo1)[[3]],lty=1,col=2,lwd=2) text(100,0.0000002,expression(paste("con todos los datos,",sep=" ",hat(beta)[2]==-5.248589e-05)),pos=3) #Graficando los delta1 y sus I.C del 95% matplot(n,t(deltas1),type=’l’,lty=c(1,2,2),col=1,lwd=1.5,ylab=expression(hat(delta)[1])) abline(h=coef(modelo1)[[4]],lty=1,col=2,lwd=2) text(70,-0.13,expression(paste("con todos los datos,",sep=" ",hat(delta)[1]== -0.1342690)),pos=3) #Graficando los delta2 y sus I.C del 95% matplot(n,t(deltas2),type=’l’,lty=c(1,2,2),col=1,lwd=1.5,ylab=expression(hat(delta)[2])) abline(h=coef(modelo1)[[5]],lty=1,col=2,lwd=2) text(70,-0.02,expression(paste("con todos los datos,",sep=" ",hat(delta)[2]==-0.01913897)),pos=3) #Graficando los delta3 y sus I.C del 95% matplot(n,t(deltas3),type=’l’,lty=c(1,2,2),col=1,lwd=1.5,ylab=expression(hat(delta)[3])) abline(h=coef(modelo1)[[6]],lty=1,col=2,lwd=2) text(70,0.001,expression(paste("con todos los datos,",sep=" ",hat(delta)[3]==0.01683978)),pos=3) #Obtención de residuales recursivos y gráficos CUSUMt library(strucchange) rr=recresid(modelo1) nf=layout(rbind(c(1,1),c(2,2))) plot(rr, type = "l",ylab="Residuales recursivos",xlab="t") abline(h=0,col=2,lwd=2) plot(efp(lnyt˜t+I(tˆ2)+trimestre, type = "Rec-CUSUM"),lwd=2) ES #Test CUSUM recursivo para cambio estructural test=sctest(lnyt˜1+t+I(tˆ2)+trimestre) test 5.4. PRECISIÓN DE LOS MODELOS DE PRON ÓSTICO 137 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Observe más en detalle la componente de tendencia de la serie de producción trimestral de cemento, obtenida con la función R decompose() y exhibida en la Figura 5.19, y la serie original y ajustada (valores ajustados destransformados con exponenciación, ver en código R siguiente) en la Figura 5.20. ¿Es clara la existencia de ciclos? ¿Cree ud. que hay un buen ajuste con el modelo log-lineal? ¿es apropiado un modelo global para esta serie? Código R 5.8. #GRÁFICA DE LA COMPONENTE DE TENDENCIA plot(decompose(yt,type="multiplicative")$trend, main="Componente Tendencia serie trimestral de cemento portland",ylab=expression(hat(T)[t]),lwd=2) #GRÁFICA SERIE ORIGINAL Y AJUSTADA POR REGRESIÓN CON TODAS LAS OBSERVACIONES plot(yt) lines(time(yt)[1:length(yt)],exp(fitted(modelo1)),col=2,lwd=2) legend("topleft",legend=c("Original","ajustado"),lty=c(1,1),lwd=c(1,2),col=c(1,2)) 1200 600 800 1000 ^ Tt 1400 1600 1800 Componente Tendencia serie trimestral de cemento portland ES 1960 Figura 5.19: 1970 1980 1990 Time Componente de tendencia serie trimestral de producción de cemento portland, estimada por descomposición. 5.4. Precisión de los modelos de pronóstico Cuando pronosticamos incurrimos en un error de pronóstico. La exactitud de un modelo depende de cuán cercano están los pronósticos a los verdaderos valores. Si pronosticamos un periodo adelante de t = n+j, el error de pronóstico correspondiente será: en+j (1) = Yn+j+1 − Ŷn+j (1), j = 0, 1, · · · (5.24) CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 7 Original ajustado 500 1000 yt TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1500 2000 138 1960 1970 1980 1990 Time Figura 5.20: Serie trimestral de producción de cemento portland y su ajuste por regresión donde Ŷn+j (1) es el pronóstico para Y n+j+1 con origen de pronóstico en t = n + j. Suponga que una serie de longitud N es ajustada con las primeras n observaciones (n < N) y que se pronostican las últimas m = N − n observaciones con el modelo ajustado en la primera muestra. Definimos el error relativo de pronóstico para la observación Y n+j+1, con origen de pronóstico en t = n + j, j = 0, 1, 2, · · · , m − 1, como en+j (1) ERj = (5.25) Yn+j+1 ES A continuación, se definen algunas medidas globales de la precisión de los pronósticos para las últimas m observaciones de la serie, con origen de pronóstico en t = n Se prefieren MAE, RMSE, y MAPE porque los errores positivos y negativos no se compensan. Como criterios para seleccionar entre dos o más modelos, se elige el de menor valor en la medida considerada. No son permitidas comparaciones entre métodos de pronóstico alternativos que usen diferentes transformaciones de los datos. Tampoco es apropiado hacer comparaciones para variables expresadas en diferentes escalas. Sin embargo las medidas de precisión en términos relativos son libres de unidades y pueden usarse para tales comparaciones. En R podemos calcular las medidas de precisión de los pronósticos mediante la función accuracy() de la librerı́a forecast: 5.4. PRECISIÓN DE LOS MODELOS DE PRON ÓSTICO 139 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Precisión en los pronósticos de m = perı́odos despu és de t = n. Descripción Fórmula 1 m−1 Error promedio de pronóstico ME = en+j (1) m j=0 1 m−1 MAE = |en+j (1)| Error promedio absoluto de pronóstico mj=0 2 1 m−1 e (1) Raı́z del error cuadrático medio (error estándar) RMSE = m j=0 n+j de pronóstico 1 m−1 Porcentaje medio de error MPE = 100 % ERj m j=0 1 m−1 Porcentaje medio absoluto de error MAPE = 100 % |ERj | m j=0 accuracy(f, x, test=1:length(x)) Donde f: Es el vector con los valores pronosticados x: Es el vector con los valores reales correspondientes a los perı́odos pronosticados. 5.4.1. Comparaci ón con un modelo de referencia ES La comparación con un pronóstico de referencia es hecha con el fin de evaluar el incremento en la precisión de los pronósticos obtenidos con un modelo dado. Por ejemplo, podemos considerar como referencia el pronóstico simple, en el cual cada valor es pronosticado con el valor anterior en la serie, es decir, Pronóstico simple: Ŷn+j (1) = Yn+j , j = 0, 1, · · · , m − 1 (5.26) Luego, el error de pronóstico es Error pronóstico simple: e n+j (1) = Yn+j+1 − Yn+j , j = 0, 1, · · · , m − 1 Para este método el MAPE se denotará MSIMP. m−1 Yn+j+1 − Yn+j 1 MSIMP = 100 % m j=0 Yn+j+1 (5.27) (5.28) Observe que para calcular MSIMP no se requiere ningún modelo para la serie. Para calcular esta medida algunos recomiendan considerar la serie sin la componente estacional, por ejemplo, si la serie es de la forma Y t = Tt + St + Et , usar CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 140 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 en lugar de Yn+j+1 y Yn+j a las correspondientes versiones desestacionalizadas, (Yn+j+1 − Ŝn+j+1) y (Yn+j − Ŝn+j ). NOTA: Si el MAPE de un modelo ajustado para una serie con n observaciones muestrales es menor que el MSIMP (MAPE < MSIMP) se justifica el modelo ajustado; si no, no mejora la precisión del método simple y no se justifica el modelo que se ajustó. Tenga en cuenta además para selección entre dos o más modelos según estadı́sticos de capacidad de pronóstico lo siguiente: 1. Los modelos a considerar deben cumplir con sus respectivos supuestos (modelos válidos). 2. Entre los modelos válidos, considerar los que son útiles para pronosticar. Un modelo es útil para pronóstico si su MAPE < MSIMP. 3. Entre dos o más modelos válidos y útiles, se selecciona el de mayor precisión en el ajuste (mejores estadı́sticos de bondad de ajuste) y que a su vez tenga mayor precisión de pronóstico (mejores estadı́sticos de precisión de pronósticos). 5.5. Ajuste por suavizamiento Holt-Winters de series estacionales El suavizamiento Holt-Winters aplica a series con componente estacional, con tendencia lineal o cuadrática, aunque en R sólo está implementado con tendencia lineal. Se distinguen dos casos: Holt-Winters para series estacionales de componentes aditivas; Holt-Winters para series estacionales de componentes multiplicativas. 5.5.1. Holt-Winters aditivo ES Sea L ≥ 1. Considere el valor de la serie en t + L, Yt+L = β0 + β1 (t + L) + St+L + Et+L = (β0 + β1 t) + β1 L + St+L + Et+L = β0,t + β1 L + St+L + Et+L donde β0,t = (β0 +β1 t) es llamado el nivel de la serie en t. Adicionalmente asuma que hay una evolución lenta en los parámetros del modelo (es decir, pueden variar con t), entonces escribimos: Yt+L = β0,t + β1,t L + St+L + Et+L tenemos, (5.29) 5.5. AJUSTE POR SUAVIZAMIENTO HOLT-WINTERS DE SERIES ESTACIONALES141 β0,t , nivel de la serie en t β1,t , pendiente o tasa de crecimiento en t 7 St+L , valor de la estacionalidad en t + L. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Suavizamiento El método de suavizamiento actúa sobre estas tres componentes suavizando exponencialmente, con parámetro de suavizamiento α, β, γ, respectivamente. Estos tres parámetros son escogidos en el intervalo (0, 1), de forma tal que sea mı́nimo el MSE del ajuste en la muestra de datos de la serie. Las ecuaciones de suavizamiento son: nivel en t : β̂0,t = α(Yt − Ŝt−s ) + (1 − α)(β̂0,t−1 + β̂1,t−1 ) (5.30) pendiente en t : β̂0,t = β(β̂0,t − β̂0,t−1 ) + (1 − β)β̂1,t−1 (5.31) Estas dos componentes son actualizadas dentro de cada perı́odo estacional completo k, es decir, en t ∈ [(k − 1)s + 1, k s], k = 1, 2, · · · , [n/s]. Para suavizar la componente estacional S t , dentro de cada perı́odo estacional completo, calculamos Ŝt = γ(Yt − β̂0,t ) + (1 − γ)Ŝt−s (5.32) De modo que en cada t ∈ [(k − 1)s + 1, k s], k = 1, 2, · · · , [n/s] sólo se actualiza una de las s estaciones, aquella que corresponda a dicho tiempo. Concluı́do un perı́odo estacional completo, antes de continuar suavizando, es necesario estandarizar los últimos s valores calculados con la ecuación anterior, esto es, reemplazar los resultados dados por (5.32), por ES 1 Ŝt ← Ŝt − S̄k , donde S̄k = s ks Ŝj (5.33) j=(k−1)s+1 esto garantiza que en cada perı́odo estacional completo ks Ŝj = 0. Los j=(k−1)s+1 valores estandarizados de la estacionalidad son los que se deben usar en las ecuaciones de suavizamiento del nivel, la pendiente y de la misma estacionalidad. Nota: En t = 1 es necesario determinar los valores iniciales β̂0,0 , β̂1,0 y los s valores S0 , S−1 , · · · , S1−s+1 , S1−s , que corresponden, respectivamente, al valor de inicio de la estacionalidad, en la estación, s, (s − 1), · · · , 2, 1. Para ello, con los 2s primeros datos de la serie (los dos primeros perı́odos estacionales completos, desde que t = 1 corresponda a la estación 1), podemos: CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 142 Realizar una regresión lineal con variables indicadoras, para el ajuste del modelo: s−1 Yt = β0,0 + β1,0 t + δi (Ii,t − Is,t ) + Et s−1 δ̂i . O bien, TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 y obtenemos β̂0,0 , β̂1,0 , y Ŝi−s = δ̂i , i = 1, 2, · · · , s − 1, y Ŝ0 = − 7 i=1 i=1 Realizar una descomposición usando por ejemplo la función decompose(). Adicionalmente, para la componente de tendencia obtenida se aplica regresión lineal simple para estimar los valores iniciales del nivel y de la pendiente: T̂t = β0,0 + β1,0 t + at , at ∼ N(0, σa2 ). Cálculos de valores ajustados Ŷt Para t = 0, 1, · · · , n − 1 se calcula Ŷt (1) = Ŷt+1 = β̂0,t + β̂1,t × 1 + Ŝt+1−s (5.34) Pronósticos L perı́odos adelante de t = n Los pronósticos fuera de la muestra se construyen como Ŷn (L) = Ŷn+L = β̂0,n + β̂1,n × L + Ŝn+L−s , (5.35) es decir, usamos los últimos valores suavizados del nivel, la pendiente y la estacionalidad para pronosticar después de t = n. Un intervalo de pronóstico de (1 − δ)100 % puede construirse como ES L−1 Ŷn (L) ± tδ/2,n−3 × σ̂ 1 + α2 (1 + jβ)2 , con σ̂ 2 = j=1 1 n−3 n (Yt − Ŷt )2 . (5.36) t=1 5.5.2. Holt-Winters multiplicativo En este caso el modelo global de pronóstico que se considera es: Yt+L = [β0 + β1 (t + L)] × St+L + Et+L = [β0,t + β1 × L] × St+L + Et+L (5.37) Con β0,t = β0 + β1 t. Pero, asumiendo que en general hay una evolución lenta de los parámetros, tenemos Yt+L = [β0,t + β1,t × L] × St+L + Et+L (5.38) 5.5. AJUSTE POR SUAVIZAMIENTO HOLT-WINTERS DE SERIES ESTACIONALES143 Suavizamiento TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Igual al caso aditivo, se suaviza el nivel, la pendiente y la estacionalidad en cada tiempo t = 1, · · · , n, con párámetros de suavizamiento α, β, γ, respectivamente, escogidos en el intervalo (0, 1), de forma tal que sea mı́nimo el MSE del ajuste en la muestra de datos de la serie. Las ecuaciones de suavizamiento son: nivel en t : β̂0,t = α(Yt /Ŝt−s ) + (1 − α)(β̂0,t−1 + β̂1,t−1 ) (5.39) pendiente en t : β̂0,t = β(β̂0,t − β̂0,t−1 ) + (1 − β)β̂1,t−1 (5.40) Estas dos componentes son actualizadas dentro de cada perı́odo estacional completo k, es decir, en t ∈ [(k − 1)s + 1, k s], k = 1, 2, · · · , [n/s]. Para suavizar la componente estacional S t , dentro de cada perı́odo estacional completo, calculamos Ŝt = γ(Yt /β̂0,t ) + (1 − γ)Ŝt−s (5.41) De modo que en cada t ∈ [(k −1)s+1, k s], k = 1, 2, · · · , [n/s] sólo se actualiza una de las s estaciones (la que corresponda a dicho tiempo). Concluı́do un perı́odo estacional completo, antes de continuar suavizando, es necesario normalizar los últimos s valores calculados con la ecuación anterior, esto es, reemplazar los resultados dados por (5.41), con Ŝt ← Ŝt × s ks (5.42) Ŝj j=(k−1)s+1 esto garantiza que en cada perı́odo estacional completo se cumpla la siguiente ks Ŝj = s. Los valores normalizados de la estacionalidad son los igualdad: j=(k−1)s+1 ES que se deben usar en las ecuaciones de suavizamiento del nivel, la pendiente y de la misma estacionalidad. También se requiere inicialización de β̂0,0 , β̂1,0 y los s valores de la componente estacional, para ello se puede recurrir a la descomposición clásica usando los 2s primeros valores de la serie mediante medias móviles (usando la función R decompose() con tipo multiplicativo). Cálculo de valores ajustados Ŷt Dentro de la muesta tenemos que Para t = 0, 1, · · · , n se calcula Ŷt (1) = Ŷt+1 = (β̂0,t + β̂1,t × 1)Ŝt+1−s (5.43) Pronósticos L perı́odos adelante de t = n Los pronósticos fuera de la muestra se construyen como Ŷn (L) = Ŷn+L = (β̂0,n + β̂1,n × L)Ŝn+L−s , (5.44) CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 144 Yt − Ŷt 2 L−1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 n 1 con σ̂ 2 = n − 3 t=1 7 es decir, usamos los últimos valores suavizados del nivel, la pendiente y la estacionalidad para pronosticar después de t = n. Un intervalo de pronóstico de (1 − δ)100 % puede construirse como 2 Ŷn (L) ± tδ/2,n−3 × σ̂ CL Ŝn+L−s , (5.45) Ŷt y CL = (β̂0,n + β̂1,n L)2 + α2 [1+(L−j)β]2 (β̂0,n +j β̂1,n )2 . j=1 5.5.3. Suavizamiento Holt-Winters en R Para el caso aditivo: HoltWinters(serie,alpha,beta,gamma,seasonal=“additive”) Para el caso multiplicativo: HoltWinters(serie,alpha,beta,gamma,seasonal=“multiplicative”) serie debe ser un objeto R tipo serie de tiempo, es decir, definido mediante la función ts(), con la frecuencia correspondiente a la longitud de la estacionalidad. Si no se especifican los valores de los parámetros de suavizamiento, la función realiza internamente un proceso de optimización para obtener los valores de estos parámetros que minimicen el MSE de ajuste. Cuando se crea un objeto R con esta función, en éste queda guardada la siguiente información (con los nombres que el paquete da a cada elemento) fitted: Una matriz (cada columna es una serie) con columnas para la serie filtrada, las componentes de nivel, tendencia y estacionalidad, estimadas contemporáneamente, es decir en el tiempo t y no al final de la serie ES x: La serie original alpha: El valor de α usado para filtrar el nivel beta: El valor de β usado para filtrar la pendiente gamma: El valor de γ usado para filtrar la estacionalidad coefficients: Un vector con componentes denominadas a (nivel), b (pendiente), s1, s2,..., ss (valores de las componentes estacionales para el pronóstico de L = 1, 2, · · · , s perı́odos siguientes a t = n, respectivamente). seasonal: Tipo de modelo estacional especificado (aditivo o multiplicativo) 5.5. AJUSTE POR SUAVIZAMIENTO HOLT-WINTERS DE SERIES ESTACIONALES145 SSE: Suma de cuadrados del error alcanzada en la optimización usada. Para la obtención de pronósticos y sus intervalos de predicción del 95 %: predict(objeto, n.ahead=1, prediction.interval = TRUE, level = 0.95) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 donde objeto es un objeto creado con la función HoltWinters, n.ahead=1 indica la realización de una predicción para el primer perı́odo después del último valor considerado en la serie, por tanto, para más predicciones basta ajustar el valor de este argumento en el número de predicciones deseadas. 5.5.4. Ejemplo: Suavizamiento Holt Winters de la serie del ı́ndice mensual de salario real A continuación se realizan dos suavizamientos Holt-Winters, sólo con los primeros n − 6 = 114 observaciones de la serie (de enero de 1990 a junio de 1999) . Se pronostican las seis últimas observaciones (de julio de 1999 a diciembre de 1999). El primer suavizamiento es realizado con parámetros α = 0.5, β = 0.06 y γ = 0.6. El segundo suavizamiento se deja que el R suavice con valores óptimos de estos parámetros. Código R 5.9. #LECTURA DE LOS DATOS yt=scan() 94.15 102.28 104.01 103.22 102.58 100.97 101.65 101.67 99.89 100.08 99.63 89.82 90.76 99.86 100.71 101.66 100.57 98.80 98.18 98.94 99.26 98.40 99.15 91.19 90.90 102.71 104.33 101.68 101.48 100.30 100.32 102.23 101.24 102.01 103.78 96.00 96.58 106.56 108.47 108.01 108.65 108.30 108.07 109.72 108.24 108.74 109.33 101.13 101.00 109.65 111.21 109.67 110.23 110.92 110.33 111.46 111.70 112.90 113.84 107.40 103.41 113.85 114.97 116.01 113.56 113.22 113.28 114.86 113.78 116.01 117.49 109.63 105.95 117.68 119.21 118.77 118.48 116.62 116.56 117.05 116.07 116.91 118.65 109.12 109.66 120.26 122.14 122.52 124.35 122.03 122.23 121.37 120.63 122.69 124.67 115.74 114.33 123.51 124.66 122.10 121.70 119.52 120.05 122.31 121.47 122.46 123.64 115.47 111.71 124.20 126.19 126.87 126.89 127.34 127.28 128.87 128.51 130.24 132.14 124.66 ES #USAREMOS SÓLO LAS PRIMERAS n-6 OBSERVACIONES DE LA SERIE: Enero de 1990 a junio de 1999 yt2=ts(yt[1:114],frequency=12,start=c(1990,1)) #INICIO EN ENERO DE 1990, DATOS MENSUALES #REALIZANDO SUAVIZAMIENTO WINTERS ADITIVO CON alpha=0.5, beta=0.06 y gamma=0.6 suaviza1=HoltWinters(yt2,alpha=0.5,beta=0.06,gamma=0.6,seasonal="additive") #CALCULANDO PREDICCIONES PARA JULIO A DICIEMBRE DE 1999 predicciones1=predict(suaviza1,n.ahead=6,prediction.interval=TRUE) #SUAVIZAMIENTO CON VALORES ÓPTIMOS DE LAS PARÁMETROS suaviza2=HoltWinters(yt2,seasonal="additive") #CALCULANDO PREDICCIONES PARA JULIO A DICIEMBRE DE 1999 predicciones2=predict(suaviza2,n.ahead=6,prediction.interval=TRUE) #GRAFICAS DE LA SERIE ORIGINAL JUNTO CON LAS SUAVIZADAS, #LAS PREDICCIONES DE LOS SEIS PERÍODOS SGTES Y SUS INTERVALOS nf=layout(rbind(c(0,1,1,0),c(0,2,2,0))) CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 146 7 plot(suaviza1,xlim=c(1990.0,2000.1),ylim=c(min(yt),max(yt)+10), main=expression(paste("Holt-Winters",sep=" ",alpha==0.5,sep=", ",beta==0.06,sep=", ",gamma==0.6)),lwd=2) lines(predicciones1[,1],lty=2) lines(predicciones1[,2],lty=2) lines(predicciones1[,3],lty=2) abline(v=(1999+6/12)) #lı́nea de referencia al final de junio de 1999 legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=c(1,1,2),lwd=c(1,2,1),col=c(1,2,1)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 plot(suaviza2,xlim=c(1990.0,2000.1),ylim=c(min(yt),max(yt)+10), main="Holt-Winters parámetros óptimos",lwd=2) lines(predicciones2[,1],lty=2) lines(predicciones2[,2],lty=2) lines(predicciones2[,3],lty=2) abline(v=(1999+6/12)) #lı́nea de referencia al final de junio de 1999 legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=c(1,1,2),lwd=c(1,2,1),col=c(1,2,1)) Salida R 5.3. #RESULTADOS FINALES DEL PRIMER SUAVIZAMIENTO suaviza1 Holt-Winters exponential smoothing with trend and additive seasonal component. Call: HoltWinters(x = yt2, alpha = 0.5, beta = 0.06, gamma = 0.6, seasonal = "additive") Smoothing parameters: alpha: 0.5 beta : 0.06 gamma: 0.6 ES Coefficients: [,1] a 125.8778975 b 0.3583725 s1 0.6832618 s2 1.6890767 s3 0.7883875 s4 1.9602604 s5 3.0464856 s6 -5.9301495 s7 -8.4949985 s8 2.2765857 s9 3.4087116 s10 2.6079811 s11 2.2751274 s12 1.0116456 #VALORES SUAVIZADOS PRIMER SUAVIZAMIENTO fitted(suaviza1) Jan Feb Mar . . . Jan Feb Mar Apr May xhat 1991 91.89147 1991 100.47626 1991 100.93183 1999 1999 1999 1999 1999 113.35984 122.35710 124.65750 124.60207 126.12039 level trend season 99.90377 -0.173865093 -7.8384375 99.16417 -0.207809084 1.5198958 98.64823 -0.226296806 2.5098958 121.21198 120.53497 121.55483 122.47479 123.80843 0.147910908 -8.0000453 0.098415585 1.7237151 0.153702644 2.9489609 0.199677721 1.9276012 0.267715719 2.0442454 5.5. AJUSTE POR SUAVIZAMIENTO HOLT-WINTERS DE SERIES ESTACIONALES147 Jun 1999 125.08772 124.46095 0.290803919 0.3359603 #VALORES AJUSTADOS PRIMER SUAVIZAMIENTO predicciones1 fit 126.9195 128.2837 127.7414 129.2716 130.7162 122.0980 upr 129.5006 131.2049 131.0007 132.8691 134.6536 126.3779 lwr 124.3384 125.3625 124.4821 125.6742 126.7789 117.8181 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Jul Aug Sep Oct Nov Dec 1999 1999 1999 1999 1999 1999 #RESULTADOS FINALES SEGUNDO SUAVIZAMIENTO suaviza2 Holt-Winters exponential smoothing with trend and additive seasonal component. Call: HoltWinters(x = yt2, seasonal = "additive") Smoothing parameters: alpha: 0.7256559 beta : 0.03969379 gamma: 1 Coefficients: [,1] a 126.2661284 b 0.3213943 s1 1.0537426 s2 2.0313071 s3 1.1074885 s4 2.2173567 s5 3.0537184 s6 -6.2580633 s7 -8.9715922 s8 1.8813412 s9 3.0087498 s10 2.3359601 s11 2.1832192 s12 1.0738716 ES #VALORES SUAVIZADOS SEGUNDO SUAVIZAMIENTO fitted(suaviza2) Jan Feb Mar . . . Jan Feb Mar Apr May Jun 7 #SSE DEL PRIMER SUAVIZAMIENTO suaviza1$SSE [1] 178.2478 xhat 1991 91.89147 1991 100.22229 1991 100.73250 1999 1999 1999 1999 1999 1999 113.41872 122.14281 125.28175 125.32227 127.02989 125.56351 level trend season 99.90377 -0.17386509 -7.8384375 98.90885 -0.20645589 1.5198958 98.43950 -0.21689126 2.5098958 121.72806 120.68159 122.31866 123.18125 124.53404 124.70678 0.19347414 -8.5028139 0.14425601 1.3169637 0.20351133 2.7595756 0.22967271 1.9113503 0.27425349 2.2215974 0.27022407 0.5865007 #SSE DEL SEGUNDO SUAVIZAMIENTO CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 148 suaviza2$SSE [1] 163.4065 #PREDICCIONES SEGUNDO SUAVIZAMIENTO predicciones2 fit 127.6413 128.9402 128.3378 129.7691 130.9268 121.9364 upr 130.1121 132.0353 131.9881 133.9345 135.5816 127.0633 lwr 125.1705 125.8451 124.6875 125.6036 126.2720 116.8096 7 1999 1999 1999 1999 1999 1999 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Jul Aug Sep Oct Nov Dec De los resultados anteriores se tiene que las ecuaciones de pronósticos HoltWinters aditivo pronostican para t = 114 + L, L ≥ 1, con base en las ecuaciones (tenga en cuenta que en t = 115 el mes es julio), respectivamente: suaviza1: 125.8778975 + 0.3583525L + Ŝ114+L , suaviza2: 126.2661284+0.3213943L+Ŝ114+L, con α = 0.5, β = 0.06 y γ = 0.6, con α = 0.7256559, β = 0.03969379 y γ = 1, donde (ver valores s1,..., s12 de cada suavizamiento): Ŝ114+L = s1 , si MOD(114 + L, 12) = 7; Ŝ114+L = s2 , si MOD(114 + L, 12) = 8; Ŝ114+L = s3 , si MOD(114 + L, 12) = 9; Ŝ114+L = s4 , si MOD(114 + L, 12) = 10; Ŝ114+L = s5 , si MOD(114 + L, 12) = 11; Ŝ114+L = s6 , si MOD(114 + L, 12) = 0; Ŝ114+L = s7 , si MOD(114 + L, 12) = 1; ES Ŝ114+L = s8 , si MOD(114 + L, 12) = 2; Ŝ114+L = s9 , si MOD(114 + L, 12) = 3; Ŝ114+L = s10 , si MOD(114 + L, 12) = 4; Ŝ114+L = s11 , si MOD(114 + L, 12) = 5; Ŝ114+L = s12 , si MOD(114 + L, 12) = 6. El segundo suavizamiento (suaviza2) es el que utilizó valores óptimos de los parámetros del suavizamiento. Los pronósticos correspondientes y sus intervalos de predicción del 95 % han sido guardados en los objetos R predicciones1 y predicciones2. Los SSE de ajuste obtenidos son, respectivamente, 5.5. AJUSTE POR SUAVIZAMIENTO HOLT-WINTERS DE SERIES ESTACIONALES149 suaviza1: SSE = 178.2478 suaviza2: SSE = 163.4065 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En la Figura 5.21, puede observarse la serie original, la serie suavizada y los pronósticos con sus intervalos de predicción, con los dos suavizamientos realizados, respectivamente. Para comparar la precisión de los pronósticos se calculan las medidas correspondientes: Código R 5.10. library(forecast) accuracy(predicciones1[,1],yt[(length(yt2)+1):length(yt)]) accuracy(predicciones2[,1],yt[(length(yt2)+1):length(yt)]) con lo cual se obtiene Precisión en los pronósticos con m = 6 Holts-Winters serie ı́ndice de salario ME RMSE MAE MPE MAPE suaviza1 1.11 1.33 1.11 0.87 0.87 suaviza2 0.69 1.24 0.84 0.54 0.66 ¿Con cuál suavizamiento se ajustó mejor la serie? ¿con cuál se predice mejor los últimos 6 meses de la serie? 5.5.5. Ejemplo: Suavizamiento Holt-Winters de la serie trimestral de producción de cemento portland ES Esta serie, como vimos previamente es de componentes multiplicativas, con estacioalidad de longitud s = 4. También tomaremos sólo una parte de la serie para el suavizamiento, los n − 4 = 151 primeros perı́odos para luego pronosticar los últimos cuatro. No necesitamos trabajar sobre la serie de los logaritmos sino aplicar a la serie original el modelo de suavizamiento estacional multiplicativo. Como en el ejemplo anterior, se harán dos suavizamientos, el primero es realizado con parámetros α = 0.5, β = 0.06 y γ = 0.6. El segundo suavizamiento se deja que el R suavice con valores óptimos de estos parámetros. La programación es presentada en el Código R 5.11. 150 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 140 7 Holt−Winters α = 0.5, β = 0.06, γ = 0.6 120 110 90 100 Observed / Fitted 130 Original ajustado pronosticado 1990 1992 1994 1996 1998 2000 Time 140 Holt−Winters parámetros óptimos 120 110 90 100 Observed / Fitted ES 130 Original ajustado pronosticado 1990 1992 1994 1996 1998 2000 Time Figura 5.21: Suavizamientos Holt-Winters para serie ı́ndice mensual de salario real. 5.5. AJUSTE POR SUAVIZAMIENTO HOLT-WINTERS DE SERIES ESTACIONALES151 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #LECTURA Y GRAFICACIÓN DE LA SERIE yt=scan() 465 532 561 570 529 604 603 582 554 620 646 637 573 673 690 681 621 698 753 728 688 737 782 692 637 757 783 757 674 734 835 838 797 904 949 975 902 974 969 967 849 961 966 922 836 998 1025 971 892 973 1047 1017 948 1032 1190 1136 1049 1134 1229 1188 1058 1209 1199 1253 1070 1282 1303 1281 1148 1305 1342 1452 1184 1352 1316 1353 1121 1297 1318 1281 1109 1299 1341 1290 1101 1284 1321 1317 1122 1261 1312 1298 1202 1302 1377 1359 1232 1386 1440 1439 1282 1573 1533 1651 1347 1575 1475 1357 1086 1158 1279 1313 1166 1373 1456 1496 1251 1456 1631 1554 1347 1516 1546 1564 1333 1458 1499 1613 1416 1625 1770 1791 1622 1719 1972 1893 1575 1644 1658 1668 1343 1441 1444 1497 1267 1501 1538 1569 1450 1569 1648 1777 1468 1732 1962 7 Código R 5.11. #USAREMOS SÓLO LOS n-4=151 PRIMERAS OBSERVACIONES DE LA SERIE yt2=ts(yt[1:151],frequency=4,start=c(1956,1)) #REALIZANDO SUAVIZAMIENTO WINTERS ADITIVOS CON alpha=0.5, beta=0.06 y gamma=0.6 suaviza1=HoltWinters(yt2,alpha=0.5,beta=0.06,gamma=0.6,seasonal="multiplicative") #CALCULANDO PREDICCIONES PARA TRIMESTRES 4 DE 1993 A TRIMESTRE 3 DE 1994 predicciones1=predict(suaviza1,n.ahead=4,prediction.interval=TRUE) #SUAVIZAMIENTO CON VALORES ÓPTIMOS DE LAS PARÁMETROS suaviza2=HoltWinters(yt2,seasonal="multiplicative") #CALCULANDO PREDICCIONES PARA JULIO A DICIEMBRE DE 1999 predicciones2=predict(suaviza2,n.ahead=4,prediction.interval=TRUE) ES #GRAFICAS DE LA SERIE ORIGINAL JUNTO CON LAS SUAVIZADAS, LAS PREDICCIONES DE #LOS CUATRO PERÍODOS SGTES Y SUS INTERVALOS nf=layout(rbind(c(0,1,1,0),c(0,2,2,0))) plot(suaviza1,xlim=c(1956.0,1994.75),ylim=c(min(yt),max(yt)+10), main=expression(paste("Holt-Winters",sep=" ",alpha==0.5,sep=", ",beta==0.06,sep=", ",gamma==0.6)),lwd=2) lines(predicciones1[,1],lty=2) lines(predicciones1[,2],lty=2) lines(predicciones1[,3],lty=2) abline(v=(1993+3/4)) #lı́nea de referencia al final de trimestre 3 de 1993 legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=c(1,1,2),lwd=c(1,2,1),col=c(1,2,1)) plot(suaviza2,xlim=c(1956.0,1994.75),ylim=c(min(yt),max(yt)+10), main="Holt-Winters parámetros óptimos",lwd=2) lines(predicciones2[,1],lty=2) lines(predicciones2[,2],lty=2) lines(predicciones2[,3],lty=2) abline(v=(1993+3/4)) #lı́nea de referencia al final de trimestre 3 de 1993 legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=c(1,1,2),lwd=c(1,2,1),col=c(1,2,1)) Los resultados del R corresponden a los siguientes: CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 152 Salida R 5.4. suaviza1 Holt-Winters exponential smoothing with trend and multiplicative seasonal component. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Smoothing parameters: alpha: 0.5 beta : 0.06 gamma: 0.6 7 Call: HoltWinters(x = yt2, alpha = 0.5, beta = 0.06, gamma = 0.6, seasonal = "multiplicative") Coefficients: [,1] a 1628.4889365 b 3.9387709 s1 1.0260078 s2 0.8910341 s3 0.9730372 s4 1.0080182 #VALORES SUAVIZADOS CON PRIMER SUAVIZAMIENTO fitted(suaviza1) 1957 1957 1957 . . . 1993 1993 1993 Q1 Q2 Q3 xhat 498.0740 593.8356 609.9831 level trend season 529.5000 12.8250000 0.9184051 559.1618 13.8352067 1.0363678 577.9008 14.1294372 1.0303242 Q1 1324.8371 1528.9093 -1.8158606 0.8675547 Q2 1554.1072 1599.2288 2.5122653 0.9702612 Q3 1615.7323 1609.4157 2.9727439 1.0020738 #SSE DEL PRIMER SUAVIZAMIENTO suaviza1$SSE [1] 572028.7 ES #PREDICCIONES DEL PRIMER SUAVIZAMIENTO predicciones1 fit upr lwr 1993 Q4 1674.884 1772.955 1576.812 1994 Q1 1458.058 1571.203 1344.913 1994 Q2 1596.078 1733.523 1458.634 1994 Q3 1657.428 1784.870 1529.986 #RESULTADOS DEL SEGUNDO SUAVIZAMIENTO suaviza2 Holt-Winters exponential smoothing with trend and multiplicative seasonal component. Call: HoltWinters(x = yt2, seasonal = "multiplicative") Smoothing parameters: alpha: 0.7734918 beta : 0.006597877 gamma: 0.5651145 Coefficients: [,1] a 1612.7974463 b 8.9203870 5.5. AJUSTE POR SUAVIZAMIENTO HOLT-WINTERS DE SERIES ESTACIONALES153 s1 s2 s3 s4 1.0334102 0.8811954 0.9736879 1.0227150 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 #VALORES SUAVIZADOS CON SEGUNDO SUAVIZAMIENTO fitted(suaviza2) xhat level trend season 1957 Q1 498.0740 529.5000 12.825000 0.9184051 1957 Q2 602.5112 568.3712 12.996850 1.0363678 1957 Q3 613.5410 582.4793 13.004181 1.0303242 . . . 1993 Q1 1330.7154 1517.8594 8.469702 0.8718404 1993 Q2 1602.4971 1632.1577 9.167946 0.9763432 1993 Q3 1662.5389 1614.7881 8.992855 1.0238689 #SSE DEL SEGUNDO SUAVIZAMIENTO suaviza2$SSE [1] 473949.2 #PREDICCIONES CON SEGUNDO predicciones2 fit upr 1993 Q4 1675.900 1776.161 1994 Q1 1436.911 1561.427 1994 Q2 1596.418 1757.513 1994 Q3 1685.924 1847.711 SUAVIZAMIENTO lwr 1575.639 1312.395 1435.324 1524.137 De los resultados anteriores se tiene que las ecuaciones de pronósticos Holt-Winters multiplicativo pronostican para t = 151 + L, L ≥ 1, con base en las ecuaciones (tenga en cuenta que en t = 152 el trimestres es el cuatro), respectivamente: suaviza1: (1628.4889365 + 3.9387709L)Ŝ151+L , con α = 0.5, β = 0.06 y γ = 0.6, suaviza2: (1612.7974463 + 8.9203870L)Ŝ151+L, con α = 0.7734918, β = 0.006597877 y γ = 0.5651145, donde (ver valores s1, s2, s3, s4 de cada suavizamiento): ES Ŝ151+L = s1 , si MOD(151 + L, 4) = 0; Ŝ151+L = s2 , si MOD(151 + L, 4) = 1; Ŝ151+L = s3 , si MOD(151 + L, 4) = 2; Ŝ151+L = s4 , si MOD(151 + L, 4) = 3; El segundo suavizamiento (suaviza2) es el que utilizó valores óptimos de los parámetros del suavizamiento. Los pronósticos correspondientes y sus intervalos de predicción del 95 % han sido guardados en los objetos R predicciones1 y predicciones2. Los SSE de ajuste obtenidos son, respectivamente, suaviza1: SSE = 572028.7 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL 154 suaviza2: SSE = 473949.2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En la Figura 5.22, puede observarse la serie, original, la serie suavizada y los pronósticos con sus intervalos de predicción, con los dos suavizamientos realizados, respectivamente. Para comparar la precisión de los pronósticos se calculan las medidas correspondientes, usando un código similar al Código R 5.10. 1000 1500 Original ajustado pronosticado 500 Observed / Fitted 2000 Holt−Winters α = 0.5, β = 0.06, γ = 0.6 1960 1970 1980 1990 Time 1000 1500 Original ajustado pronosticado 500 Observed / Fitted ES 2000 Holt−Winters parámetros óptimos 1960 1970 1980 1990 Time Figura 5.22: Suavizamientos Holt-Winters para serie trimestral de producción de cemento portland. 5.6. EJERCICIOS 155 ¿Con cuál suavizamiento se ajustó mejor la serie? ¿con cuál se predice mejor los últimos 4 trimestres de la serie? TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Precisión en los pronósticos con m = 4 Holts-Winters serie producci ón de cemento ME RMSE MAE MPE MAPE suaviza1 138.14 174.47 138.14 7.45 7.45 suaviza2 135.96 162.63 135.96 7.43 7.43 5.6. Ejercicios 1. Para la serie de producción trimestral de cemento, realice ajuste por regresión lineal usando variables indicadoras pero esta vez con las primeras 151 observaciones y pronostique las últimas m = 4. Calcule los respectivos intervalos de pronóstico usando la función predict(). Para ello ajuste primero la serie de los logaritmos, obtenga sus pronósticos e intervalos de predicción y luego destransforme exponenciado tales resultados para obtener predicciones en la escala original, luego calcule las medidas de precisión de pronósticos con la función accuracy(). 2. Calcule usando R el MSIMP para los pronósticos de los últimos cuatro trimestres de la serie. Para ello genere la serie de pronósticos simples y considere los últimos cuatro valores. 3. Determine para los modelos ajustados a la serie de cemento con regresión múltiple (regresión y suavizamientos) cuáles son útiles y cuál pronostica mejor (la muestra final de m = 4 observaciones). Código R sugerido ES #LECTURA Y GRAFICACIÓN DE LA SERIE yt=scan() 465 532 561 570 529 604 603 582 554 620 646 637 573 673 690 681 621 698 753 728 688 737 782 692 637 757 783 757 674 734 835 838 797 904 949 975 902 974 969 967 849 961 966 922 836 998 1025 971 892 973 1047 1017 948 1032 1190 1136 1049 1134 1229 1188 1058 1209 1199 1253 1070 1282 1303 1281 1148 1305 1342 1452 1184 1352 1316 1353 1121 1297 1318 1281 1109 1299 1341 1290 1101 1284 1321 1317 1122 1261 1312 1298 1202 1302 1377 1359 1232 1386 1440 1439 1282 1573 1533 1651 1347 1575 1475 1357 1086 1158 1279 1313 1166 1373 1456 1496 1251 1456 1631 1554 1347 1516 1546 1564 1333 1458 1499 1613 1416 1625 1770 1791 1622 1719 1972 1893 1575 1644 1658 1668 1343 1441 1444 1497 1267 1501 1538 1569 1450 1569 1648 1777 1468 1732 1962 yt=ts(yt,frequency=4,start=c(1956,1)) 156 CAPÍTULO 5. MODELACI ÓN DE LA COMPONENTE ESTACIONAL TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 lnyt2=log(yt2) 7 #SE DEFINEN LOS PRIMEROS n=151 VALORES DE LA SERIE A USAR m=4 n=length(yt)-m n #AJUSTE DE LA SERIE DE LOS LOGARITMOS CON LAS PRIMERAS n=151 OBSERVACIONES yt2=ts(yt[1:n],frequency=4,start=c(1956,1)) library(TSA) trimestre=season(lnyt2) trimestre=relevel(trimestre,ref="4Q") #DEFINIENDO ÍNDICE DE TIEMPO PARA LAS PRIMERAS n=151 OBSERVACIONES t=1:length(lnyt2) #AJUSTANDO MODELO AL LOG(Yt2) CON TENDENCIA CUADRÁTICA Y ESTACIONALIDAD TRIMESTRAL modelo1=lm(lnyt2˜t+I(tˆ2)+trimestre) #DEFINIENDO VALORES DE LAS VARIABLES t y trimestre PARA LOS PERÍODOS A SER PRONOSTICADOS t.nuevo=(length(yt2)+1):length(yt) trimestre.nuevo=season(yt)[(length(yt2)+1):length(yt)] #PRONOSTICANDO PERÍODOS t=152 a 155 EN ESCALA ORIGINAL #OBSERVE QUE SE EXPONENCIA LAS PREDICCIONES DEL MODELO EN #ESCALA LOGARITMICA predicciones1=exp(predict(modelo1,data.frame(t=t.nuevo,trimestre=trimestre.nuevo),interval="prediction")) predicciones1 #OBTENIENDO LAS MEDIDAS DE PRECISIÓN DE PRONÓSTICO #CON LOS PERÍODOS DE t=152 a 155 library(forecast) accuracy(predicciones1,yt[t.nuevo]) #CÁLCULO DEL MSIMP (MAPE PRONÓSTICOS SIMPLE) #PRONÓSTICO SIMPLE PARA t=152 a 155 pred.simple=yt[n:(length(yt)-1)] #VALORES REALES DE LA SERIE PARA t=152 a 155 reales=yt[(n+1):length(yt)] MSIMP=accuracy(pred.simple,reales)[5] ES #GRAFICANDO LA SERIE VALORES AJUSTADOS Y PRONOSTICADOS win.graph(height=12,width=15,pointsize=12) plot(yt) lines(time(yt)[1:n],exp(fitted(modelo1)),col=2,lwd=2) lines(time(yt)[(n+1):length(yt)],predicciones1[,1],lty=2,col="blue",lwd=2) lines(time(yt)[(n+1):length(yt)],predicciones1[,2],lty=2,col="blue",lwd=2) lines(time(yt)[(n+1):length(yt)],predicciones1[,3],lty=2,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=c(1,1,2),lwd=c(1,2,2),col=c(1,2,4)) abline(v=(1993+3/4)) #lı́nea de referencia al final de trimestre 3 de 1993 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 6 Caracterización de los ciclos 6.1. Introducción ES El modelo probabilı́stico para una serie temporal es el concepto de proceso estocástico el cual corresponde a una sucesión de variables aleatorias {Z t }t∈Z+ , es decir, un conjunto de variables aleatorias indexadas por un ı́ndice t ∈ Z + (para el caso de las series de tiempo). Ası́, el proceso estocástico asociado a una serie de tiempo es una sucesión de variables aleatorias que evolucionan en función del tiempo. Cada una de las variables aleatorias del proceso tiene su propia función de distribución de probabilidad y puede existir entre ellas correlación. Supondremos que el valor observado de la serie en el instante t es una extracción de una variable aleatoria definida en dicho instante. Una serie de tiempo es una sucesión generada al tomar sólo una observación de cada una de las variables aleatorias Z t que definen el proceso estocástico indexado en el tiempo, por tanto, una serie de tiempo (una trayectoria) es una realización de un proceso estocástico. Figura 6.1: Realizaciones de un proceso estocástico. Fuente: Martı́nez [8]. En la Figura 6.1 se ilustran cuatro realizaciones de un proceso estocástico, siendo que el conjunto de todas las trayectorias posibles es el proceso 157 CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 158 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 estocástico, en tanto que la serie de tiempo de la cual se dispone (la sucesión o conjunto de datos históricos), es sólo una de todas estas trayectorias aleatorias posibles. Para realizar la modelación estadı́stica (hacer estimaciones y pronósticos) de una serie de tiempo es necesario conocer la estructura probabilı́stica del proceso estocástico al que corresponde la serie. Esto es, es necesario conocer la distribución conjunta de las n variables de la serie {Z t }1≤t≤n y por tanto la distribución de cada una de tales variables. Para poder estimar la distribución conjunta se necesitarı́a un gran número de realizaciones del proceso estocástico, pero esto es imposible porque sólo se cuenta con una única realización del proceso, es decir sólo se tiene la serie histórica de valores!!!. Como solución a este problema se hacen los siguientes supuestos: 1. La distribución conjunta de las n variables es normal multivariada. En ese sentido, basta entonces conocer las medias, varianzas y covarianzas para determinar tal distribución. En este punto se definen las siguientes funciones: a) Función de medias del proceso: μ t = E[Zt ], t = 1, 2, . . . b) Función de varianzas del proceso: σ t2 = Var[Zt ], t = 1, 2, . . . c) Función de autocovarianzas del proceso: medida de la dependencia lineal entre variables aleatorias del mismo proceso estocástico, o covarianza en dos instantes de tiempo, Cov[Z t , Zt+k ], t = 1, 2, . . . d) Función de autocorrelación: Correlación entre variables aleatorias Cov[Z ,Z ] del mismo proceso estocástico, Corr[Z t , Zt+k ] = √ 2t 2t+k , t = 1, 2, . . . σt σt+k 2. Las caracterı́sticas o propiedades transversales del proceso (medias, varianzas y la función de distribución) son estables en el tiempo, es decir el proceso estocástico es estacionario. ES 6.2. Procesos estacionarios en sentido débil, o estacionariedad de segundo orden o estacionariedad en covarianza Un proceso es estacionario en covarianza cuando cumple todas y cada una de las siguientes tres condiciones: 1. El proceso es estacionario en media (la media es constante): μ t = μ, 2. El proceso es estacionario en varianza (la varianza es constante): σ t2 = σ 2 , 3. La autocovarianza sólo depende de la distancia en el tiempo de las variables del proceso: γ(k) = Cov[Z t , Zt+k ] = Cov[Zt−k , Zt ] = γ(−k), de donde para k ∈ Z, γ(k) es una función simétrica alrededor de cero con γ(0) = Var[Zt ]. 6.2. PROCESOS ESTACIONARIOS EN COVARIANZA 159 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 γ(k) −4 −3 −2 −1 0 1 2 3 4 k Figura 6.2: Ejemplo γ(k) de un procesos estacionario En consecuencia, ρ(k) = Corr[Z t , Zt+k ] = Corr[Zt−k , Zt ] = ρ(−k) también es una función simétrica alredededor de cero con ρ(0) = 1. La gráfica de ρ(k) es llamada correlograma o Función de autocorrelación. La Figura 6.3 ilustra dos procesos estacionarios en covarianza y sus respectivos correlogramas para k ∈ Z + . En la Figura 6.4 se ilustran dos procesos no estacionarios en covarianza. En el caso (a) el proceso es estacionario en media pues la serie tiende a variar alrededor de una constante pero no es estacionaria en varianza ya que la dispersión alrededor de la media está aumentando con el tiempo, mientras que en (b) el proceso es estacionario en varianza pero no en media pues la serie oscila con variabilidad constante alrededor de una tendencia no lineal. 4. Los procesos estacionarios en covarianza deben cumplir además con propiedades ergódicas, es decir, que a partir de una única realización del proceso se puedan estimar las caracterı́sticas de éste y que tales estimaciones sean “mejores” a medida que se aumente el tamaño muestral o longitud de tal realización o serie. En este sentido, “nuevos datos deben aportar información adicional”. Para que el proceso estacionario en covarianza sea ergódico basta con que se cumpla que lı́m ρ(k) = 0 con una ES k→∞ velocidad de convergencia “rápida”. La ergodicidad implica que con la serie que se tiene a mano se pueden obtener estimadores consistentes de los parámetros del proceso, es decir la ergodicidad permite equivalencias entre valores esperados y estimaciones muestrales obtenidas de una realización suficientemente larga del proceso: Sean μ̂, σ̂ 2 y γ̂(k) los estimadores basados en una serie de tamaño n, para μ, σ 2 y γ(k), respectivamente. Entonces, si el proceso es ergódico tenemos que, a) lı́m μ̂ = μ, donde μ̂ = n→∞ 1 n n b) lı́m σ̂ 2 = σ 2 , donde σ̂ 2 = n→∞ Zt . t=1 1 n n (Zt − μ̂)2 t=1 CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 160 Figura 6.3: Figura 6.4: Dos procesos estacionarios en covarianza. Fuente: Martı́nez [8] Dos procesos no estacionarios en covarianza. Fuente: Martı́nez [8] c) lı́m γ̂Z (k) = γZ (k), donde γ̂(k) = n→∞ ES 1 n n−k t=1 1 n n (Zt−k − μ̂)(Zt − μ̂), o bien, γ̂(k) = t=k+1 (Zt − μ̂)(Zt+k − μ̂), es decir, los estimadores son consistentes. Note que lı́m ρ(k) = 0 implica k→∞ que a medida que aumenta la distancia en el tiempo entre las observaciones de la serie, disminuye la autocorrelación. En general, supondremos que todo proceso estacionario en covarianza es ergódico. Note que: según la definición de procesos estacionarios en covarianza una serie de tiempo que presente tendencia no constante y/o componente estacional no es estacionaria en covarianza, puesto que la media es función del tiempo a través de las componentes de tendencia y estacionalidad. Tampoco puede ser estacionaria en covarianza cualquier serie heterocedástica (de vari- 6.2. PROCESOS ESTACIONARIOS EN COVARIANZA 161 anza no constante). 6.2.1. Procesos de ruido TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1. La media es constante e igual a cero: μ t = 0, ∀ t; 7 Un proceso de ruido es un proceso estacionario en covarianza con las siguientes caracterı́sticas: 2. La varianza es constante: σ t2 = σ 2 , ∀ t; 3. La autocovarianza es cero y por tanto también la autocorrelación: γ(k) = 0, k = 0. Observe que la tercera condición no implica independencia entre las variables del proceso de ruido, sólo implica que no hay asociación de tipo lineal. En los procesos de ruido los datos pasados no proporcionan información sobre el futuro, es decir el proceso es sin memoria!!! y por tanto el mejor pronóstico es la media del proceso. En la Figura 6.5 se ilustra la función de autocovarianza de un proceso de ruido. γ(k) −4 −3 −2 −1 0 1 2 3 4 k ES Figura 6.5: Función de autocovarianza γ(k) de un procesos de ruido 6.2.2. Procesos de ruido blanco Cuando las variables de un proceso de ruido son independientes este es denominado ruido blanco, un caso particular es cuando el proceso de ruido es normal multivariado, entonces en ese caso γ(k) = 0 para k = 0, implica independencia. Nota: Cuando comenzamos ajustando un modelo de regresión lineal o no lineal a una serie de tiempo, con errores aditivos, suponemos en principio que los errores de ese modelo son un ruido blanco normal, es decir iid Et ∼ R.B N(0, σ 2 ). En general, esperamos que E t sea al menos estacionario en covarianza. CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 162 6.3. Procesos estacionarios en sentido fuerte o estrictamente estacionarios TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 La estacionariedad débil o en covarianza no garantiza la estabilidad completa del proceso, es necesario además de la estacionariedad débil o en covarianza, que la función de distribución conjunta de cualquier subconjunto (Zt1 , Zt2 , · · · , Ztm ) de las variables aleatorias del proceso estocástico no cambie ante desplazamientos en el tiempo, es decir, si F Z (·) representa la función de distribución conjunta del proceso {Z t }t∈Z+ , entonces FZ (Zt1 , Zt2 , · · · , Ztm ) = FZ (Zt1 +τ , Zt2 +τ , · · · , Ztm +τ ), ∀ m, τ, t1 , t2 , · · · , tm . Ası́, si los primeros momentos de F Z existen, se sigue que E[Z t ] = E[Zt+τ ] = μ, de donde E[(Zt − μ)2 ] = E[(Zt+τ − μ)2 ] = σ 2 y si suponemos que la distribución conjunta es normal multivariada y el proceso es estacionario en covarianza, entonces el proceso es también estacionario en sentido fuerte!!!. 6.4. Función de autocovarianza y autocorrelación muestral Previamente en la Sección 6.1 se definieron las funciones de autocovarianza y de autocorrelación poblacionales. Suponga que se tiene una realización de longitud n de un proceso estacionario en covarianza, {Z t }1≤t≤n , es decir, tenemos la serie Z1 , Z2 , · · · , Zn . De la Sección 6.2 tenemos que la función de autocovarianza muestral es (considere sólo k > 0). n 1 1 γ̂(k) = (Zt−k − Z̄)(Zt − Z̄), o bien, γ̂(k) = n t=k+1 n n−k (Zt − Z̄)(Zt+k − Z̄) (6.1) t=1 de donde también resulta que la función de autocorrelación muestral es n ES γ̂(k) ρ̂(k) = = γ̂(0) n−k (Zt−k − Z̄)(Zt − Z̄) t=k+1 n t=1 = (Zt − Z̄)2 t=1 (Zt − Z̄)(Zt+k − Z̄) n t=1 (Zt − (6.2) Z̄)2 Nota: Para las estimaciones de las funciones de autocovarianza y autocorrelación para la serie de errores de un modelo estadı́stico de una serie de tiempo Yt , con errores aditivos E 1 , E2 , · · · , En los cuales son variables no observables, usamos en su lugar los residuales respectivos Ê1 , Ê2 , · · · , Ên , para n ¯ los cuales siempre se cumple que Ê = n1 Êt = 0. t=1 De las dos ecuaciones anteriores deberı́a notarse que no es posible obtener las estimaciones para cualquier valor de rezago o retardo k, desde que es necesario que k + 1 ≤ n, o equivalentemente, k ≤ n − 1. También, note que los cálculos de estas estimaciones sólo involucran n − k de las observaciones, por tanto, a medida que aumenta k disminuye n − k y por tanto se hacen menos 6.5. USO DE LA FAC MUESTRAL PARA PROBAR RUIDO BLANCO 163 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 precisas las estimaciones en los rezagos de mayor valor al involucrar menos términos de la serie. En general se aconseja sólo estimar los valores de estas funciones para k = 1, 2, · · · , m, con m = [n/4] donde [ ] denota la parte entera. Por ejemplo, para una serie de longitud n = 42 estimarı́amos la autocovarianza y la autocorrelación para k = 1, 2, · · · , 10. Lo usual es presentar las estimaciones gráficamente, es decir, graficar la función de autocovarianza muestral y la función de autocorrelación muestral vs. el valor de k. A la segunda gráfica se le llama la ACF o FAC muestral. En R contamos con la función acf(). acf(x, lag.max = NULL, type = c("correlation", "covariance", "partial"), plot = TRUE, na.action = na.fail, demean = TRUE, ...) donde x es un objeto serie de tiempo, o un vector numérico, type=“correlation” construye la ACF, y con type=“covariance” se obtiene la gráfica de la función de autocovarianza muestral. Para especificar el número máximo de rezagos usamos el argumento lag.max=m con m correspondiendo al valor en números de [n/4]. 6.5. Uso de la FAC muestral para probar que los errores de un modelo de serie de tiempo son R.B Bartlett (1946), estableció lo siguiente: Suponga que E 1 , E2 , · · · , En es una serie de tiempo proveniente de un proceso estacionario en covarianza de media cero, con función de autocorrelación ρ(k) y su estimador ρ̂(k). Si ρ(k) = 0 para k > q, entonces q 1 VAR[ρ̂(k)] ≈ 1+2 (6.3) [ρ(j)]2 . n j=1 ES En particular, si la serie fuese una realización suficientemente larga de un proceso de ruido blanco entonces q = 0 y por tanto VAR[ρ̂(k)] ≈ 1 n ∼N aprox. y además, ρ̂(k) 0, 1 n . (6.4) Con base en este resultado, hacemos uso de la FAC muestral para probar que la serie de errores E t del modelo considerado para una serie dada es un proceso de ruido blanco, realizando m = [n/4] pruebas del tipo H0 : ρ(k) = 0 versus H1 : ρ(k) = 0 (6.5) k = 1, 2, · · · , m. En cada caso, si la prueba correspondiente es realizada a un nivel de significancia de aproximadamente 5 %, se rechaza H 0 en favor de H1 si √ |ρ̂(k)| > 2/ n. La FAC muestral permite chequear rápidamente estas m prue√ bas trazando en la gráfica los lı́mites ±2/ n. Se rechaza que los errores son CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 164 √ un ruido blanco si para algún k se observa que |ρ̂(k)| > 2/ n, es decir, cuando en al menos una de las m pruebas descritas por (6.5) se rechaza la correspondiente hipótesis nula. 6.5.1. Ejemplos TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Considere las siguientes series a t , Z1,t , Z2,t , Z3,t y Z4,t , t = 1, 2, · · · , 100 ES t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 at -0.47 -0.88 -1.22 1.75 -0.35 0.30 -1.91 -0.43 0.11 -0.80 1.68 0.15 -1.55 -0.19 0.61 1.10 -1.34 -0.74 0.08 -0.49 0.25 -0.16 -0.49 0.22 0.31 1.98 -1.52 0.31 0.16 0.43 -0.69 0.97 1.72 -0.04 -0.75 0.56 1.88 -0.41 -1.73 -1.41 -0.02 0.61 -0.30 -1.15 0.28 0.28 -1.42 0.51 -0.18 -1.04 Z1,t -1.76 -1.14 -0.45 1.71 1.10 -0.40 0.02 1.75 1.24 0.95 1.55 2.77 1.79 1.47 1.42 1.15 2.05 0.78 -0.46 -0.76 -1.95 -1.50 -2.60 -1.33 -1.48 -1.31 -1.52 -2.22 0.36 0.13 -0.36 -1.89 -2.43 -2.06 -0.17 -1.09 -2.67 -1.15 0.05 -0.30 0.39 1.65 1.32 1.17 0.74 1.90 0.54 0.96 1.11 -0.71 Z2,t 0.00 2.35 1.51 4.27 3.52 3.91 4.11 5.62 3.84 6.06 4.34 5.68 4.80 6.36 5.96 6.64 5.74 7.12 6.07 6.72 5.91 4.31 3.98 3.70 4.35 4.19 2.83 4.62 5.90 6.57 5.66 5.12 5.13 5.07 2.56 3.12 3.97 2.59 3.14 3.57 3.27 3.11 3.80 3.33 2.88 3.40 1.41 1.07 1.20 2.61 Z3,t 0.10 -0.43 1.42 -0.58 -0.80 0.51 -0.00 0.36 -1.15 1.56 -1.65 2.40 -2.22 0.12 2.53 -3.15 0.89 -0.84 2.34 -0.27 -0.06 -1.76 -0.38 1.53 -0.13 1.24 -2.30 1.70 -1.31 0.05 1.86 -2.46 -1.97 2.98 -1.97 0.65 -2.24 3.15 -2.42 1.32 -0.59 -1.21 2.56 -0.30 -0.50 -0.61 0.55 0.36 0.04 -0.62 Z4,t -0.53 -0.70 0.03 0.51 -0.06 1.76 -0.64 0.40 -0.81 -1.08 -0.08 0.68 0.14 -1.15 -0.30 0.35 0.42 0.25 0.86 -0.73 0.30 0.85 0.44 -0.24 -0.65 -0.09 0.21 -0.89 1.13 -2.01 1.82 -0.00 -0.74 -0.18 1.19 -0.07 0.69 -1.71 1.85 0.22 -2.37 0.70 1.48 -0.79 -0.15 -0.45 -0.57 1.16 -0.61 -1.09 t 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 at -1.81 0.19 -0.21 -0.31 0.42 0.16 -0.25 2.41 0.73 0.08 -0.02 0.40 -0.89 1.06 1.12 -0.24 0.01 -2.13 0.10 0.75 1.06 -1.38 0.95 0.48 1.33 -0.30 1.44 -1.10 -0.38 -1.28 0.20 -0.50 0.51 0.74 1.53 -2.44 -1.00 -0.14 -0.31 1.35 1.04 -0.65 -0.77 1.93 -0.35 0.34 1.20 0.35 -1.22 0.87 Z1,t -0.36 -1.12 -0.61 0.37 -0.85 -0.56 0.39 -2.19 -0.75 -2.64 -1.85 -1.58 1.72 2.70 2.87 1.82 0.78 -0.74 -1.50 -2.54 -0.60 -0.61 -1.20 -0.01 1.01 1.27 3.62 3.53 3.10 1.88 1.10 2.21 0.87 0.17 2.29 2.77 1.61 1.16 0.04 0.12 -0.22 0.33 0.27 0.88 1.63 3.43 2.60 0.59 -0.30 -1.01 Z2,t 1.10 2.16 -0.58 0.79 -1.05 -0.86 -1.14 0.86 -1.47 -0.04 -0.72 0.01 0.45 -1.97 -0.68 -3.55 -2.25 -1.91 -2.37 -1.38 -2.91 -1.48 -2.01 -2.50 -3.06 -3.38 -4.59 -5.05 -3.81 -3.44 -3.12 -3.40 -0.92 -1.77 -2.03 -0.71 -1.32 -2.23 -1.97 -1.25 -0.62 -2.53 -0.33 -2.10 1.13 -1.24 -0.89 -1.29 -0.72 1.83 Z3,t 0.56 -1.37 3.77 -1.38 0.50 0.03 1.26 -3.55 3.04 -0.83 0.09 0.05 0.01 -0.66 0.75 -1.17 0.74 -1.59 1.21 -0.76 0.62 -0.19 -1.23 0.47 -1.59 2.60 0.20 -0.86 -0.86 1.59 -2.16 -0.23 -0.53 1.71 -1.00 -0.90 2.00 -2.91 1.61 -1.02 0.10 0.34 -0.45 0.00 -1.17 1.63 -0.95 2.36 -1.69 0.42 Z4,t -1.09 0.86 -1.33 0.83 -0.07 -3.30 2.01 -1.25 1.55 -0.32 1.15 -0.74 -0.92 0.18 0.71 0.38 -0.17 -1.60 1.31 -0.14 -0.06 0.64 -0.81 -1.34 -0.20 0.31 -1.03 0.57 -1.38 -1.55 0.87 -1.00 0.09 -0.79 -0.57 -0.59 -0.97 -1.01 0.83 -1.00 -1.16 -0.28 -0.30 -0.96 1.22 -1.65 1.24 -0.28 1.03 -1.31 A continuación se presentan las gráficas de estas series y sus respectivas 6.5. USO DE LA FAC MUESTRAL PARA PROBAR RUIDO BLANCO 165 ACF’s (ver Código R 6.1). 7 0.6 0.4 ACF −0.2 −2 0.0 −1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0.2 0 at 1 0.8 2 1.0 ACF de la serie at 0 20 40 60 80 100 0 5 10 Time 15 20 25 20 25 20 25 Lag Figura 6.6: Serie at y su FAC muestral −2 0.4 −0.2 0.0 −1 0.2 0 Z1t ACF 1 0.6 2 0.8 3 1.0 ACF de la serie Z1t 0 20 40 60 80 100 0 5 10 Time 15 Lag Figura 6.7: Serie Z1,t y su FAC muestral ACF Z2t −4 −0.5 −2 0 0.0 2 4 0.5 6 1.0 ACF de la serie Z2t ES 0 20 40 60 80 100 0 5 10 Time 15 Lag Figura 6.8: Serie Z2,t y su FAC muestral CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 166 ACF TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 −0.5 7 −2 0.0 0 Z3t 0.5 2 1.0 4 ACF de la serie Z3t 0 20 40 60 80 100 0 5 10 Time 15 20 25 20 25 Lag Serie Z3,t y su FAC muestral Figura 6.9: 0.4 −0.4 −3 −0.2 −2 0.0 0.2 −1 Z4t ACF 0 0.6 1 0.8 2 1.0 ACF de la serie Z4t 0 20 40 60 80 100 0 5 10 Time 15 Lag Figura 6.10: Serie Z4,t y su FAC muestral Para cada una de las anteriores series determine si es una realización de un proceso que es: Estacionario en covarianza ¿por qué? ¿Hay patrones en la FAC respectiva? Ruido blanco ¿por qué? Código R 6.1. ES #LECTURA DE ARCHIVO DE DATOS datosejemFACS.txt #EL ARCHIVO TIENE EL NOMBRE DE LAS SERIES EN LA PRIMERA FILA #LAS COLUMNAS SON EN SU ORDEN at, z1t, z2t, z3t y z4t datos=read.table(file.choose(),header=T) #TODAS LAS CINCO SERIES TIENEN MISMO INDICE t=1 a 100 #PODEMOS CREAR MATRIZ DE SERIES datos datos=ts(datos,freq=1) #GRAFICANDO CADA SERIE Y SU ACF MUESTRAL win.graph(height=4,width=7,pointsize=8) plot(datos[,1],lwd=2,ylab=expression(a[t])) abline(h=0,lty=2) win.graph(height=4,width=7,pointsize=8) acf(datos[,1],lag.max=25,ci.type="ma",ci.col="red", main=expression(paste("ACF de la serie ",sep=" ",a[t])),lwd=2) win.graph(height=4,width=7,pointsize=8) plot(datos[,2],lwd=2,ylab=expression(Z[1*t])) abline(h=0,lty=2) 6.5. USO DE LA FAC MUESTRAL PARA PROBAR RUIDO BLANCO 167 win.graph(height=4,width=7,pointsize=8) acf(datos[,2],lag.max=25,ci.type="ma",ci.col="red", main=expression(paste("ACF de la serie ",sep=" ",Z[1*t])),lwd=2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 win.graph(height=4,width=7,pointsize=8) plot(datos[,3],lwd=2,ylab=expression(Z[2*t])) abline(h=0,lty=2) win.graph(height=4,width=7,pointsize=8) acf(datos[,3],lag.max=25,ci.type="ma",ci.col="red", main=expression(paste("ACF de la serie ",sep=" ",Z[2*t])),lwd=2) win.graph(height=4,width=7,pointsize=8) plot(datos[,4],lwd=2,ylab=expression(Z[3*t])) abline(h=0,lty=2) win.graph(height=4,width=7,pointsize=8) acf(datos[,4],lag.max=25,ci.type="ma",ci.col="red", main=expression(paste("ACF de la serie ",sep=" ",Z[3*t])),lwd=2) win.graph(height=4,width=7,pointsize=8) plot(datos[,5],lwd=2,ylab=expression(Z[4*t])) abline(h=0,lty=2) win.graph(height=4,width=7,pointsize=8) acf(datos[,5],lag.max=25,ci.type="ma",ci.col="red", main=expression(paste("ACF de la serie ",sep=" ",Z[4*t])),lwd=2) Considere ahora las ACF’s de la serie del ı́ndice mensual de salario real y de los residuales de sus tres modelos ajustados en el ejemplo presentado en la Sección 5.2.1, página 109: ACF 0.5 ACF 0.0 −0.4 −0.5 0.0 0.2 0.4 0.6 0.8 ACF residuales modelo 1 para serie del índice mensual salario real ACF serie índice salario real, ener.1990 − nov. 20 10 15 20 25 30 35 5 10 15 20 25 30 35 ACF residuales modelo 2 para serie del índice mensual salario real ACF residuales modelo 3 para serie del índice mensual salario real ACF −0.4 0.0 0.2 0.4 0.6 0.8 Lag 0 5 10 15 20 Lag Figura 6.11: 0 Lag 0.0 0.2 0.4 0.6 0.8 ACF 5 −0.4 ES 0 25 30 35 0 5 10 15 20 25 30 35 Lag FAC’s Serie ı́ndice de salario y residuales de modelos ajustados Basados en las ACF’s ¿qué podemos decir sobre la estacionariedad de la serie y de los errores de los modelos ajustados? ¿Para cada modelo podemos CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 168 decir que sus errores son ruido blanco? ¿por qué?, ¿Qué patrón particular se destaca en la ACF de la serie de datos del ı́ndice de salario? El código R utilizado en la obtención de la gráfica anterior es el siguiente: 7 Continuación Código R 5.1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #ACF SOBRE LA SERIE DE DATOS Y RESIDUALES MODELOS AJUSTADOS m=length(salario)/4 nf=layout(rbind(c(1,2),c(3,4))) acf(as.numeric(salario),lag.max=m,ci.type="ma",ci.col="red", main="ACF serie ı́ndice salario real, ener.1990 - nov. 2001") acf(residuals(modelo1),lag.max=m,ci.type="ma",ci.col="red", main="ACF residuales modelo 1\npara serie del ı́ndice mensual salario real") acf(residuals(modelo2),lag.max=m,ci.type="ma",ci.col="red", main="ACF residuales modelo 2\npara serie del ı́ndice mensual salario real") acf(residuals(modelo3),lag.max=m,ci.type="ma",ci.col="red", main="ACF residuales modelo 3\npara serie del ı́ndice mensual salario real") A continuación, la ACF para la serie del logaritmo natura de la serie de producción trimestral de cemento y de los residuales del modelo ajustado en la Sección 5.3.3: 0.0 −0.5 ACF 0.5 ACF serie log producción cemento, Q1.1990 − Q3.1994 0 10 20 30 Lag Figura 6.12: 0.2 −0.2 ES ACF 0.6 ACF residuales modelo 1 para serie log producción de cemento 0 10 20 30 Lag FAC’s Serie log producción trimestral cemento portland y residuales de modelo ajustado ¿Qué podemos decir sobre la estacionariedad de la serie y de los errores del modelo ajustado en la Sección 5.3.3? ¿podemos decir que sus errores son ruido blanco? ¿por qué?, ¿Hay algún patrón particular en la ACF de la serie de datos del log de producción de cemento? La anterior figura fue obtenida con el siguiente código R: 6.5. USO DE LA FAC MUESTRAL PARA PROBAR RUIDO BLANCO 169 Continuación Código R 5.7 m=length(lnyt)/4 nf=layout(c(1,2)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 acf(as.numeric(lnyt),lag.max=m,ci.type="ma",ci.col="red", main="ACF serie log producción cemento, Q1.1990 - Q3.1994") acf(residuals(modelo1),lag.max=m,ci.type="ma",ci.col="red", main="ACF residuales modelo 1\npara serie log producción de cemento") Finalmente, considere la serie simulada presentada en la Sección 5.3.1. Para esta serie se ajusta un modelo de tendencia lineal sin estacionalidad. Las gráficas de la serie de datos y su ACF y de la serie de residuales y su ACF se presentan a continuación. Concluya sobre la estacionariedad de la serie y de los errores del modelo ajustado ¿son estos últimos un ruido blanco? ACF Serie simulada 0.5 ACF 0.0 −0.5 30000 0 10000 yt 50000 1.0 70000 serie simulada 1980 1985 1990 1995 2000 2005 0 20 Time 40 60 Lag Figura 6.13: Serie Yt simulada y su FAC muestral ACF Residuales modelo ajustado a serie simulada ACF 0.0 0.2 0.4 0.6 5000 0 −5000 −10000 residuals(regresion) 0.8 10000 1.0 Serie residuales modelo ajustado a serie simulada 0 50 100 150 200 250 300 0 20 40 60 Lag ES Time Figura 6.14: Serie residuales modelo lineal ajustado a serie simulada y su FAC muestral Si la serie Yt es filtrada a través de su primera diferencia, es decir, Ỹt = 1 wi Yt−i , con w0 = 1 y w1 = −1), la Yt − Yt−1 (estamos utilizando un filtro lineal i=0 serie resultante en este caso es de tendencia constante. En la siguiente figura se ilustra la serie de la primera diferencia y su ACF ¿Qué se concluye acerca de la estacionariedad de la primera diferencia? CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 170 ACF Primera diferencia para serie simulada ACF 0 7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 −0.5 −15000 0.0 −5000 difer 5000 0.5 10000 15000 1.0 Serie primera diferencia para serie simulada 1980 1985 1990 1995 2000 2005 0 20 Time Figura 6.15: 40 60 Lag Primera diferencia de la serie simulada y su FAC muestral El código R usado en este último ejemplo fue el siguiente Código R 6.2. yt=scan(file.choose()) #leer archivo datossimuleje1recursivos.txt yt=ts(yt,freq=12,start=c(1980,1)) t=1:length(yt) regresion=lm(yt˜t) #MODELO DE TENDENCIA LINEAL #ACF SERIE DE DATOS SIMULADA Y PARA LOS RESIDUALES MODELO AJUSTADO m=length(yt)/4 win.graph(height=4,width=7,pointsize=8) plot(yt,main="serie simulada") win.graph(height=4,width=7,pointsize=8) acf(as.numeric(yt),lag.max=m,ci.type="ma",ci.col="red",main="ACF Serie simulada") win.graph(height=4,width=7,pointsize=8) plot.ts(residuals(regresion),main="Serie residuales modelo ajustado a serie simulada") abline(h=0,lty=2) win.graph(height=4,width=7,pointsize=8) acf(residuals(regresion),lag.max=m,ci.type="ma",ci.col="red", main="ACF Residuales modelo ajustado a serie simulada") #CREANDO SERIE DE LA PRIMERA DIFERENCIA DE LA SERIE SIMULADA Y(t)-Y(t-1) difer=diff(yt) ES #GRAFICA SERIE DE LA PRIMERA DIFERENCIA Y SU ACF m=length(difer)/4 win.graph(height=4,width=7,pointsize=8) plot(difer,main="Serie primera diferencia para serie simulada") abline(h=0,lty=2) win.graph(height=4,width=7,pointsize=8) acf(as.numeric(difer),lag.max=m,ci.type="ma",ci.col="red", main="ACF Primera diferencia para serie simulada") 6.6. TEST DE BOX-PIERCE Y TEST LJUNG-BOX 171 6.6. Test de Box-Pierce y Test Ljung-Box versus H1 : ρ(k) = 0, TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 H0 : ρ(k) = 0 7 En la sección previa vimos que la función de autocorrelación muestral (ACF o FAC) puede ser usada para probar que un proceso estocástico estacionario en covarianza de media cero, es un proceso de ruido blanco, mediante m = [n/4] pruebas de hipótesis separadas, del tipo para k = 1, · · · , m cada una de estas pruebas realizadas a un nivel de significancia de aproximadamente el 5 %. Sin embargo con esta metodologı́a la probabilidad de cometer un error tipo I en al menos una de las m pruebas es (suponiendo que las m pruebas son independientes) aproximadamente 1 − (1 − 0.05)m , es decir, mucho más grande que 0.05. Una prueba alternativa a la FAC es aquella que supone en la hipótesis nula que todas las autocorrelaciones para k = 1, · · · , m son nulas conjuntamente, es decir: H0 : ρ(1) = ρ(2) = · · · = ρ(m) = 0 vs. H1 : ρ(k) = 0 para algún k, k = 1, 2, · · · , m. (6.6) La hipótesis nula implica que el proceso es un ruido blanco mientras que la hipótesis alternativa rechaza el ruido blanco. Con esta prueba podemos garantizar que el nivel de significancia es del 5 % u otro que se quiera usar. Hay dos métodos para hacer esta prueba, veamos: 6.6.1. Test de Box-Pierce Sea {Et }t≥1 un proceso de ruido blanco. Entonces para una realización suaprox. 1 para toN 0, ficientemente grande (E 1 , E2 , · · · , En con n grande), ρ̂(k) n do k y ρ̂(1), · · · , ρ̂(m) son aproximadamente independientes. Por consiguiente, aprox. aprox. √ nρ̂(k) N (0, 1) ⇒ nρ̂2 (k) χ21 , y por tanto, ∼ ES ∼ ∼ m QBP = n k=1 ρ̂2 (k) ∼χ aprox. 2 m (6.7) donde la distribución asintótica chi cuadrado es válida bajo H 0 . De la Figura 6.16, se tiene que a un nivel de significancia α se rechaza H 0 si QBP ≥ χ2α,m , o bien, si para el valor P de la prueba se cumple que VP = P (χ 2m ≥ QBP ) ≤ α (menor que el nivel de significancia usado). Note que cuando H 0 es cierta, todos los ρ̂(k) deberı́an ser próximos a cero y por tanto el valor del estadı́stico QBP deberı́a ser también muy pequeño (estadı́sticamente hablando), pero si H0 es falsa, entonces algún (o algunos) ρ̂(k) es estadı́sticamente significativo o distinto de cero, por tanto el estadı́stico de prueba Q BP resultarı́a grande en términos estadı́sticos, luego, para evaluar si Q BP es grande, la región crı́tica CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 172 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Región crítica de nivel α en la distribución χ2m χ2α,m Figura 6.16: Región crı́tica de nivel α para el test Box-Pierce y Ljung-Box bajo la distribución chi cuadrado es de cola derecha, y comparamos el valor observado contra aquella cantidad que en la distribución chi cuadrado correspondiente constituye el lı́mite que separa las cantidades significativamente grandes de las que no lo son. 6.6.2. Prueba de Ljung-Box ES Con el fin de mejorar la aproximación de la distribución del estadı́stico de prueba Box-Pierce en muestras pequeñas, Ljung y Box hicieron una modificación del estadı́stico Q BP , en la cual en vez de sumar directamente los ρ̂(k) con peso igual a 1, ponderaron cada uno con un peso igual a (n + 2)/(n − k), respectivamente, es decir, el estadı́stico de prueba es m QLB = n(n + 2) k=1 ∼ ρ̂2 (k) aprox. 2 χm n−k (6.8) donde la distribución asintótica chi cuadrado es válida bajo H 0 . De nuevo, la región crı́tica o de rechazo a un nivel de significancia α es como la indicada en la Figura 6.16 y rechazamos H 0 si QLB ≥ χ2α,m , o bien, si para el valor P de la prueba se cumple que VP = P (χ 2m ≥ QLB ) ≤ α. 6.6.3. Pruebas Box-Pierce y Ljung-Box en R En R es posible realizar los testes Box-Pierce y Ljung-Box mediante la función 6.6. TEST DE BOX-PIERCE Y TEST LJUNG-BOX 173 Box.test(x, lag = 1, type = c("Box-Pierce", "Ljung-Box"), fitdf = 0) donde TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 lag: el número máximo de rezagos m a ser considerados. 7 x: Un vector numérico o una serie univariada. type: para especificar el test deseado. type=“Box-Pierce” para el test de Box-Pierce y type=“Ljung-Box” para el test Ljung-Box. Por ejemplo, considere las series a t , Z1,t , Z2,t , Z3,t y Z4,t , t = 1, 2, · · · , 100 presentadas en la Sesión 6.5.1. Para estas series tenemos: Código R 6.3. #LECTURA DE ARCHIVO DE DATOS datosejemFACS.txt #EL ARCHIVO TIENE EL NOMBRE DE LAS SERIES EN LA PRIMERA FILA datos=read.table(file.choose(),header=T) #TODAS LAS CINCO SERIES TIENEN MISMO INDICE t=1 a 100 #PODEMOS CREAR MATRIZ DE SERIES datos datos=ts(datos,freq=1) #Separando las series at=datos[,1] Z1t=datos[,2] Z2t=datos[,3] Z3t=datos[,4] Z4t=datos[,5] #Calculando m=[n/4]. Todas las series aquı́ tienen longitud #igual al número de filas de la matriz de datos m=floor(nrow(datos)/4) ES #La siguiente función BP.LB.test es creada para calcular #El teste Box-Pierce y Ljung-Box con rezagos máximos de 6, 12,...,[m/6]*6 BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } #Calculando test Box-Pierce para cada serie Box.at=BP.LB.test(at,maxlag=m,type="Box") Box.Z1t=BP.LB.test(Z1t,maxlag=m,type="Box") Box.Z2t=BP.LB.test(Z2t,maxlag=m,type="Box") Box.Z3t=BP.LB.test(Z3t,maxlag=m,type="Box") Box.Z4t=BP.LB.test(Z4t,maxlag=m,type="Box") CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 174 #Calculando Test de Ljung-Box a cada serie Ljung.at=BP.LB.test(at,maxlag=m,type="Ljung") Ljung.Z1t=BP.LB.test(Z1t,maxlag=m,type="Ljung") Ljung.Z2t=BP.LB.test(Z2t,maxlag=m,type="Ljung") Ljung.Z3t=BP.LB.test(Z3t,maxlag=m,type="Ljung") Ljung.Z4t=BP.LB.test(Z4t,maxlag=m,type="Ljung") TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En la siguiente Salida R ilustramos los resultados de los testes Box-Pierce y Lung-Box para la serie a t : Salida R 6.1. > Box.at X.squared 6 8.492486 12 12.086374 18 16.641272 24 18.986230 df 6 12 18 24 p.value 0.2041956 0.4387680 0.5478847 0.7527236 > Ljung.at X.squared 6 8.975562 12 13.034928 18 18.515194 24 21.589075 df 6 12 18 24 p.value 0.1749571 0.3665071 0.4222296 0.6037787 Los resultados obtenidos con el Código R 6.3 son organizados en la Tabla 6.1. Como puede verse, en todos los casos se ha realizado el test en la ecuación (6.6), con m = 6, 12, 18, 24. Según Box-Pierce, ¿cuáles de las series son un ruido blanco y cuáles no? ¿y según Ljung-Box? Para la serie de los residuales de los tres modelos ajustados por regresión a la serie del ı́ndice mensual de salario real sector manufacturero (sin trilla de café), se tiene lo siguiente: Continuación Código R 5.1 #BOX-PIERCE Y LJUNG-BOX SOBRE LA SERIE DE RESIDUALES MODELOS AJUSTADOS m=length(salario)/4 ES BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } Box.resmodelo1=BP.LB.test(residuals(modelo1),maxlag=m,type="Box") Box.resmodelo2=BP.LB.test(residuals(modelo2),maxlag=m,type="Box") Box.resmodelo3=BP.LB.test(residuals(modelo3),maxlag=m,type="Box") Ljung.resmodelo1=BP.LB.test(residuals(modelo1),maxlag=m,type="Ljung") Ljung.resmodelo2=BP.LB.test(residuals(modelo2),maxlag=m,type="Ljung") Ljung.resmodelo3=BP.LB.test(residuals(modelo3),maxlag=m,type="Ljung") 6.6. TEST DE BOX-PIERCE Y TEST LJUNG-BOX 175 La Tabla 6.2 presenta los resultados obtenidos con el anterior código R. ¿Qué podemos concluir acerca de los errores de cada modelo, según los testes de BoxPierce y Ljung-Box? 7 Resultados Testes Box-Pierce y Ljung-Box para series simuladas, at , Z1,t , Z2,t , Z3,t y Z4,t , t = 1, 2, · · · , 100 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Tabla 6.1: m 6 12 18 24 m 6 12 18 24 m 6 12 18 24 m 6 12 18 24 ES m 6 12 18 24 Resultados para serie a t Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 8.49 6.00 0.20 8.98 6.00 0.17 12.09 12.00 0.44 13.03 12.00 0.37 16.64 18.00 0.55 18.52 18.00 0.42 18.99 24.00 0.75 21.59 24.00 0.60 Resultados para serie Z 1,t Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 88.31 6.00 0.00 91.52 6.00 0.00 88.70 12.00 0.00 91.96 12.00 0.00 90.49 18.00 0.00 94.14 18.00 0.00 94.25 24.00 0.00 99.12 24.00 0.00 Resultados para serie Z 2,t Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 456.90 6.00 0.00 482.31 6.00 0.00 789.35 12.00 0.00 856.54 12.00 0.00 977.56 18.00 0.00 1082.78 18.00 0.00 1050.84 24.00 0.00 1177.32 24.00 0.00 Resultados para serie Z 3,t Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 50.95 6.00 0.00 52.63 6.00 0.00 55.78 12.00 0.00 58.00 12.00 0.00 58.84 18.00 0.00 61.80 18.00 0.00 69.98 24.00 0.00 76.06 24.00 0.00 Resultados para serie Z 4,t Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 16.83 6.00 0.01 17.44 6.00 0.01 20.73 12.00 0.05 21.91 12.00 0.04 23.33 18.00 0.18 25.06 18.00 0.12 25.78 24.00 0.36 28.24 24.00 0.25 CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 176 Resultados Testes Box-Pierce y Ljung-Box para residuales de los tres modelos ajustados a serie de ı́ndice mensual de salario real TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 m 6 12 18 24 30 Resultados para serie de residuales modelo 1 Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 264.71 6.00 0.00 272.96 6.00 0.00 270.27 12.00 0.00 278.96 12.00 0.00 302.86 18.00 0.00 316.25 18.00 0.00 368.68 24.00 0.00 394.76 24.00 0.00 394.45 30.00 0.00 426.91 30.00 0.00 Resultados para serie de residuales modelo 2 Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 266.68 6.00 0.00 275.01 6.00 0.00 272.30 12.00 0.00 281.06 12.00 0.00 299.64 18.00 0.00 312.34 18.00 0.00 358.13 24.00 0.00 382.12 24.00 0.00 378.81 30.00 0.00 407.91 30.00 0.00 Resultados para serie de residuales modelo 3 Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 266.85 6.00 0.00 275.27 6.00 0.00 274.91 12.00 0.00 283.90 12.00 0.00 292.14 18.00 0.00 303.68 18.00 0.00 345.31 24.00 0.00 367.20 24.00 0.00 382.26 30.00 0.00 413.44 30.00 0.00 7 Tabla 6.2: m 6 12 18 24 30 m 6 12 18 24 30 Para los residuales del modelo ajustado al logaritmo de la serie de producción trimestral de cemento, en Código R 5.7, tenemos que: Continuación Código R 5.7 ES m=length(lnyt)/4 BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } Box.resmodelo1=BP.LB.test(residuals(modelo1),maxlag=m,type="Box") Ljung.resmodelo1=BP.LB.test(residuals(modelo1),maxlag=m,type="Ljung") 6.6. TEST DE BOX-PIERCE Y TEST LJUNG-BOX Resultados Testes Box-Pierce y Ljung-Box para residuales del modelo ajustado a serie de logaritmo de producción trimestral de cemento portland TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 m 6 12 18 24 30 36 Resultados para serie de residuales modelo log cuadr ático estacional Test Box-Pierce Test Ljung-Box QBP df VP QLB df VP 243.65 6.00 0.00 250.18 6.00 0.00 259.03 12.00 0.00 266.82 12.00 0.00 265.53 18.00 0.00 274.18 18.00 0.00 270.39 24.00 0.00 279.93 24.00 0.00 276.54 30.00 0.00 287.48 30.00 0.00 288.28 36.00 0.00 302.51 36.00 0.00 7 Tabla 6.3: 177 A partir de estos resultados ¿Qué se concluye para los errores del modelo ajustado en el código R 5.7? Finalmente, considere los residuales del modelo de tendencia lineal ajustado a la serie ilustrada en la Figura 6.13 usando el código R 6.2: Continuación Código R 6.2 m=length(yt)/4 BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } ES Box.resregresion=BP.LB.test(residuals(regresion),maxlag=m,type="Box") Ljung.resregresion=BP.LB.test(residuals(regresion),maxlag=m,type="Ljung") Los resultados se presentan a continuación. Compare con lo que se concluye a partir de la ACF o FAC muestral ilustrada en la Figura 6.14: CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 178 Test Box-Pierce y Ljung-Box para los residuales del modelo ajustado a la serie en la Figura 6.13 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Resultados para serie de residuales modelo lineal Test Box-Pierce Test Ljung-Box m QBP df VP QLB df VP 6 3.70 6.00 0.72 3.78 6.00 0.71 12 6.61 12.00 0.88 6.81 12.00 0.87 18 13.28 18.00 0.77 13.86 18.00 0.74 24 15.35 24.00 0.91 16.12 24.00 0.88 30 17.89 30.00 0.96 18.93 30.00 0.94 36 26.18 36.00 0.89 28.26 36.00 0.82 42 28.58 42.00 0.94 31.06 42.00 0.89 48 34.35 48.00 0.93 37.89 48.00 0.85 54 41.61 54.00 0.89 46.76 54.00 0.75 60 42.91 60.00 0.95 48.37 60.00 0.86 66 48.91 66.00 0.94 56.01 66.00 0.80 72 53.32 72.00 0.95 61.81 72.00 0.80 7 Tabla 6.4: ¿Podemos concluir que los errores del modelo lineal para la serie son un ruido blanco? 6.7. Procesos Autorregresivos de orden 1, AR(1) Un proceso {Zt }t≥1 es un proceso AR(1) si satisface Zt = μ + φ1 (Zt−1 − μ) + at , con at ∼ R.B (6.9) donde at es independiente de Z t−1 , Zt−2 , · · · . Note que la ecuación (6.9) implica un modelo de regresión lineal entre la serie Z t y sus valores rezagados un lugar en el tiempo, de ahı́ el nombre autorregresivo de orden 1. Para que Z t sea estacionario en covarianza, es necesario que satisfaga las tres condiciones enunciadas en la Sección 6.2. Si Z t es estacionario en covarianza con E[Z t ] = θ, entonces de la ecuación (6.9) obtenemos θ = μ + φ1 (θ − μ) ⇒ θ(1 − φ1 ) = μ(1 − φ1 ) ES la última igualdad se satisface si θ = μ o bien si φ 1 = 1, sin embargo, en este último caso la serie no será estacionaria en covarianza. Sólo si |φ 1 | < 1 la serie será estacionaria en covarianza. Si llamamos Z̃t = Zt − μ, podemos escribir Z̃t = φ1 Z̃t−1 + at (6.10) También de (6.9) y si el proceso es estacionario en covarianza, VAR[Z t ] = γ(0) entonces γ(0) = φ21 γ(0) + σa2 ⇒ γ(0) = σa2 , con |φ1 | < 1 1 − φ21 Bajo el supuesto de estacionariedad en covarianza, si en la ecuación (6.10) multiplicamos ambos lados por Z̃t−k y tomamos valor esperado, obtenemos 6.8. TEST DURBIN-WATSON DE INCORRELACI ÓN DE ORDEN 1 179 la función de autocovarianza γ(k) del proceso Z t (tenga en cuenta que a t es independiente de Z̃t−k ), TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 y haciendo iterativamente, k = 1, 2, · · · vemos que 7 γ(k) = φ1 γ(k − 1) + E[at Z̃t−k ] = φ1 γ(k − 1) γ(k) = φk1 × σa2 1 − φ21 , con |φ1 | < 1 de donde la FAC o ACF teórica corresponde a ρ(k) = γ(k) = φk1 con |φ1 | < 1. γ(0) (6.11) Más adelante veremos que para la estacionariedad en covarianza del proceso AR(1), es necesario que éste pueda escribirse como un filtro lineal de la serie de ruido blanco at (Teorema de representación de Wold), especı́ficamente, se ∞ ∞ debe cumplir que Z̃t = φj1 at−j con φ2j 1 < ∞, lo cual es válido sólo si |φ 1 | < 1. j=0 j=0 En la Figura 6.17 se muestran las funciones de autocorrelación teóricas para varios procesos AR(1). Los procesos representados en la Figura 6.3, también son procesos AR(1) estacionarios en covarianza. Note que la ACF o FAC de un proceso AR(1) tiene un comportamiento de decaimiento exponencial o amortiguado sobre valores positivos si 0 < φ 1 < 1 o alternando entre valores positivos y negativos si −1 < φ 1 < 0. También note de la ecuación en (6.11), que para que se cumpla la ergodicidad, es decir, lı́m ρ(k) = 0, k→∞ esto sólo es posible si |φ 1 | < 1. 6.8. Test Durbin-Watson de incorrelación de orden 1 ES A continuación vamos a enunciar este teste en relación a los errores de un modelo de regresión para una serie Y t : Yt = f (t, β) + Et (6.12) donde f (t, β) es una función determinı́stica del tiempo con vector de parámetros β y Et es la componente aleatoria de media cero. 6.8.1. Formulaci ón del test Sea Et un proceso estacionario en covarianza de media cero representando los errores del modelo en (6.12). El teste Durbin Watson supone inicialmente que Et constituye un proceso AR(1) gaussiano estacionario en covarianza, es decir Et = φ1 Et−1 + at con at ∼ R.B N(0, σa2 ) y |φ1 | < 1. (6.13) CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 180 φ1 = 0.9 φ1 = 0.4 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 7 1 ρ(k) 1 0 2 4 6 8 10 12 0 2 4 6 k 10 12 8 10 12 k φ1 = − 0.8 φ1 = − 0.5 ρ(k) 1 ρ(k) 1 8 −1 −1 0 2 4 6 8 10 12 k Figura 6.17: 0 2 4 6 k Ejemplos ρ(k) de procesos AR(1) De (6.11) se tiene que φ 1 = ρ(1). Luego, el teste plantea lo siguiente: (6.14) ES H0 : φ1 = 0, o en forma equivalente H 0 : ρ(1) = 0 ⎧ ⎪ ⎨a) H1 : φ1 > 0 o en forma equivalente H 1 : ρ(1) > 0 versus b) H1 : φ1 < 0 o en forma equivalente H 1 : ρ(1) < 0 ⎪ ⎩ c) H1 : φ1 = 0 o en forma equivalente H 1 : ρ(1) = 0 La elección de la hipótesis alternativa generalmente se da entre las dos primeras opciones: a) que prueba autocorrelación positiva de orden 1, y b) que prueba autocorrelación negativa de orden 1. Esta elección se hace con base en el valor del estadı́stico de prueba. 6.8.2. El estadı́stico de prueba A partir de la hipótesis nula vemos que es necesario calcular el estimador del coeficiente φ1 o equivalentemente, la autocorrelación de orden 1 ρ(1). Sean Ê1 , Ê2 , · · · , Ên los valores estimados (los residuales del modelo de regresión) 6.8. TEST DURBIN-WATSON DE INCORRELACI ÓN DE ORDEN 1 181 ¯ para la serie de E1 , E2 , · · · , En . De la ecuación (6.2), con Êt = 0, para k = 1 tenemos φ̂1 = ρ̂(1) donde t=2 n Êt Êt+1 t=1 o bien, ρ̂(1) = n Êt2 (6.15) Êt2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ̂(1) = n−1 Êt−1 Êt 7 n t=1 t=1 Ahora bien, el estadı́stico de la prueba Durbin-Watson es n d1 = t=2 (Êt − Êt−1 )2 n t=1 (6.16) Êt2 Para n grande se tienen las siguientes aproximaciones n t=2 n Êt2 n ≈ 2 Êt−1 n ≈ t=2 2 Êt2 de donde t=1n (Êt − Êt−1 ) ≈ 2 t=2 Êt2 n − t=1 Êt−1 Êt t=2 Luego, de (6.15) y (6.16) obtenemos d1 ≈ 2 (1 − ρ̂(1)) . (6.17) 6.8.3. La ejecución de la prueba Desde que −1 < ρ̂(1) < 1 entonces 0 < d 1 < 4. Note que ES 1. Si la verdadera autocorrelación de orden 1, ρ(1), es igual a cero entonces se espera que ρ̂(1) ≈ 0 y ası́ d 1 ≈ 2 y la hipótesis H0 no es rechazada. 2. Si ρ(1) > 0 entonces ρ̂(1) > 0 y por tanto 0 < d 1 < 2 y si este estadı́stico es muy pequeño (bastante inferior a 2) entonces la hipótesis H 0 debe ser rechazada. 3. Si ρ(1) < 0 entonces ρ̂(1) < 0 y por tanto 2 < d 1 < 4 y si este estadı́stico es muy grande (bastante superior a 2) entonces la hipótesis H 0 también debe ser rechazada. Con base en lo anterior se tiene que los pasos a seguir para la realización del teste Durbin-Watson son: calcular primero el estadı́stico d 1 y luego elegir entre las hipótesis alternativas a) y b) en (6.14) con base en la siguiente regla: CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 182 1. si d1 < 2 probamos que 7 H0 : φ1 = 0 vs. H1 : φ1 > 0 (Hay autocorrelación positiva de orden 1 en E t ) (6.18) o equivalentemente TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 H0 : ρ(1) = 0 vs. H1 : ρ(1) > 0 (Hay autocorrelación positiva de orden 1 en E t ) (6.19) Para la decisión consideramos el valor P del test. Sea DW 1 la variable aleatoria que corresponde al estadı́stico del test Durbin-Watson de orden 1 y α el nivel de significancia de la prueba. Para probar autocorrelación de orden 1 positiva, el valor P es VP = P (DW1 < d1 ) (6.20) Rechazamos H0 en favor de la hipótesis de autocorrelación positiva de orden 1 si VP ≤ α. 2. si d1 > 2 probamos que H0 : φ1 = 0 vs. H1 : φ1 < 0 (Hay autocorrelación negativa de orden 1 en E t ) (6.21) o equivalentemente H0 : ρ(1) = 0 vs. H1 : ρ(1) < 0 (Hay autocorrelación negativa de orden 1 en E t ) (6.22) De nuevo, usamos el valor P para la decisión. En este caso, para probar autocorrelación negativa de orden 1, el valor P es dado por VP = P (DW1 > d1 ) (6.23) y Rechazamos H0 en favor de la hipótesis de autocorrelación negativa de orden 1 si VP ≤ α. ES CUIDADO: En ningún caso, no rechazar la hipótesis nula del test DurbinWatson conduce a concluir que la serie E t sea incorrelacionada y menos aún un ruido blanco. H 0 : ρ(1) = 0 no implica que la función de autocorrelación ρ(k) = 0 para todo k ≥ 1, solamente dice que para k = 1 es cero y esto no garantiza que lo mismo sea válido para los demás valores de k. 6.8.4. Test Durbin-Watson en R En la librerı́a car versión 2.0-10 de R se dispone de la función durbinWatsonTest() (en versiones anteriores a la versión 2.0-0 de la librerı́a car la función es durbin.watson()). Su sintaxis es como sigue: durbinWatsonTest(model, max.lag=1, simulate=TRUE, reps=1000, method=c("resample","normal"), alternative=c("two.sided", "positive", "negative"), ...) 6.8. TEST DURBIN-WATSON DE INCORRELACI ÓN DE ORDEN 1 183 donde model es un objeto de regresión tipo lm o un vector de residuales de un modelo lineal TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 max.lag especifica el orden autorregresivo a probar. Por defecto considera k = 1. simulate por defecto establece el cálculo de los valores P mediante el método de simulación bootstrap method especifica el método bootstrap a aplicar. “resample” remuestrea de la muestra de residuales observados del modelo; “normal” muestrea de la distribución N(0, σ̂ 2 ), donde σ̂ 2 es la varianza estimada en el modelo ajustado. alternative para max.lag=1 permite especificar el signo de la autocorrelación en la hipótesis alternativa como “two.sided” para probar ρ(1) = 0, “positive” para probar ρ(1) > 0 y “negative” para probar ρ(1) < 0. Si se especifica max.lag=k con k > 1, entonces la función sólo considera la hipótesis alternativa “two.sided”. Veamos la aplicación de este test a los residuales de algunos de los modelos ajustados a las series consideradas en este capı́tulo, para ello usamos la siguiente función de usuario pruebaDW1(), con la cual se puede obtener los valores P para las pruebas con autocorrelación positiva y negativa, en cada caso: Código R 6.4. ES ###TEST DURBIN WATSON DE ORDEN 1###### library(car) pruebaDW1=function(modelo){ dwneg=durbinWatsonTest(modelo,max.lag=1,method="normal",alternative="negative") dwpos=durbinWatsonTest(modelo,max.lag=1,method="normal",alternative="positive") res=data.frame(1,dwneg$r,dwneg$dw,dwpos$p,dwneg$p) names(res)=c("lag","rho estimado","Estadı́stico D-W","VP rho>0","VP rho<0") res } Tenga en cuenta que para usar la función usuario anterior debe correr el código completo antes de invocarla. Continuación Código R 5.1 pruebaDW1(modelo1) pruebaDW1(modelo2) pruebaDW1(modelo3) Con lo anterior obtenemos, CAPÍTULO 6. CARACTERIZACI ÓN DE LOS CICLOS 184 Salida R 6.2. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 > pruebaDW1(modelo1) lag rho estimado Estadı́stico D-W VP rho>0 VP rho<0 1 1 0.8005603 0.3258302 0 1 > pruebaDW1(modelo2) lag rho estimado Estadı́stico D-W VP rho>0 VP rho<0 1 1 0.8017732 0.3308284 0 1 > pruebaDW1(modelo3) lag rho estimado Estadı́stico D-W VP rho>0 VP rho<0 1 1 0.7929206 0.3828777 0 1 de donde, Tabla 6.5: Resultados Test Durbin-Watson de orden 1 para residuales de los tres modelos ajustados a la serie de ı́ndice mensual de salario real Modelo modelo1 modelo2 modelo3 k ρ̂(1) Estadı́stico d 1 1 0.8005603 0.3258302 1 0.8017732 0.3308284 1 0.7929206 0.3828777 H1 : ρ(1) > 0 P (DW1 < d1 ) 0 0 0 H1 : ρ(1) < 0 P (DW1 > d1 ) 1 1 1 ¿Qué test debe realizarse y que se concluye en cada caso? Aplicando de manera similar la función usuario pruebaDW1() al modelo ajustado en el código R 6.2, obtenemos: H1 : ρ(1) > 0 P (DW1 < d1 ) 0.1750000 H1 : ρ(1) < 0 P (DW1 > d1 ) 0.8150000 ES Modelo k ρ̂(1) Estadı́stico d 1 regresion 1 0.0474274 1.9041074 ¿Cuál test debe realizarse y qué se concluye? 6.9. Ejercicio Considere la serie asignada en el trabajo 1 y los modelos ajustados. Aplique con cada modelo los testes de ruido blanco con la FAC muestral, Box-Pierce y Ljung-Box. Ası́ mismo realice el teste de incorrelación Durbin-Watson. Analice el comportamiento de la FAC muestral de los residuales ¿Hay ergodicidad? ¿Hay estacionariedad? ¿Son ruido blanco los errores del modelo? TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 7 Introducción a los modelos ARMA En el capı́tulo anterior fue vista la definición general de procesos estacionarios en covarianza ası́ como el tipo particular de procesos de ruidos blanco (R.B) y fueron introducidos brevemente los procesos autorregresivos de orden 1, AR(1). A continuación se define al operador rezago B j y el Teorema de Wold, con el cual caracterizamos de forma más especı́fica a los procesos estacionarios en covarianza. Luego se verán los tipos de procesos estacionarios en covarianza: de medias móviles de orden q o MA(q), los autorregresivos de orden p o AR(p) y los procesos lineales autorregresivos de medias móviles de orden p, q o ARMA(p,q). Los tres modelos mencionados son aproximaciones de la representación de Wold y en ocasiones dos o más de estos modelos pueden producir aproximaciones igualmente buenas a la representación de Wold (Diebold [3]), ası́, la idea es buscar la aproximación más parsimoniosa que capture lo mejor posible el patrón de autocorrelación presente. 7.1. El operador Rezago B j y polinomio de rezagos de orden j El operador rezago B j es tal que aplicado a la serie {Z t } produce la serie de términos rezagados o retardados j lugares en el tiempo, es decir ES B j Zt = Zt−j (7.1) Ahora bien, un polinomio de rezagos de orden j es el que corresponde a la siguiente expresión Ψj (B) = 1 + ψ1 B + ψ2 B 2 + ψ3 B 3 + · · · + ψj B j (7.2) Observe que la ecuación anterior define un polinomio de orden j en B. De (7.1) y (7.2) se tiene que al aplicar Ψ j (B) sobre la serie {Zt } obtenemos, Ψj (B)Zt = Zt + ψ1 Zt−1 + ψ2 Zt−2 + ψ3 Zt−3 + · · · + ψj Zt−j (7.3) Cuando j = ∞ tenemos un polinomio de rezagos infinitos el cual simplemente denotamos como ∞ Ψ(B) = ψi B i , con ψ0 = 1 i=0 185 (7.4) CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 186 Este polinomio se conoce como filtro lineal (ver Sección 4.2.1). 7.2. El Teorema de representación de Wold TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Sea {Zt } cualquier proceso estacionario en covarianza de media cero (se está requiriendo que el proceso no contenga componentes deterministas), entonces este proceso se puede representar como un filtro lineal de un proceso de ruido blanco, es decir: ∞ Zt = Ψ(B)at = ψi at−i , con at ∼ R.B(0, σa2 ), ∞ ψ0 = 1 y i=0 ψi2 < ∞ (7.5) i=1 Los at se denominan innovaciones y a la ecuación (7.5) proceso lineal general. NOTA: Supondremos que el ruido blanco es gaussiano, es decir que los términos que lo conforman son variables aleatorias normales de media cero, varianza constante e incorrelacionados (independientes bajo la normalidad). El Teorema de representación de Wold nos dice que cuando se formulan modelos de pronóstico para series estacionarias en covarianza de media cero, sólo se necesitan considerar modelos de un proceso lineal general o de filtro lineal de un ruido blanco. Puede demostrarse que bajo las condiciones del Teorema de Wold se cumple que: E[Zt ] = 0, la media del proceso VAR = σa2 ∞ ψi2 < ∞, la varianza del proceso y es finita i=0 (7.6) (7.7) ∞ E[Zt |at−1 , at−2 , · · · ] = ψi at−i , la media dado las innovaciones pasadas (7.8) i=1 VAR[Zt |at−1 , at−2 , · · · ] = σa2 , la varianza dado las innovaciones pasadas ES γ(k) = σa2 (7.9) ∞ ψi ψi+k , la autocovarianza del proceso (7.10) i=0 Mientras que la media incondicional es constante en el tiempo, la media condicional se mueve en el tiempo en respuesta al conjunto de información que evoluciona, capturando la dinámica del proceso, lo cual es importante para la realización de pronósticos. 7.3. Función de autocorrelación Parcial o PACF Considere un proceso estacionario en covarianza {Z t }t≥1 de media cero. La función de autocorrelación parcial o PACF (Partial Autocorrelation Function) corresponde a la autocorrelación entre Z t y Zt+k después de remover las dependencias lineales mutuas con las variables Z t+1 , Zt+2 , · · · , Zt+k−1. Es decir, la 7.3. FUNCIÓN DE AUTOCORRELACI ÓN PARCIAL O PACF 187 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 PACF es la correlación condicional Corr(Z t , Zt+k |Zt+1 , Zt+2 , · · · , Zt+k−1), la cual denotaremos por φ kk . Teóricamente, Para hallar la PACF es necesario realizar la regresión lineal poblacional (es decir, con base en una muestra infinita de datos) de Z t+k (la variable respuesta) versus Z t+k−1 , Zt+k−2, Zt+k−3 , · · · , Zt (las variables explicatorias) donde el coeficiente en tal regresión que corresponde a Z t es φkk , siendo el modelo de regresión Zt+k = φk1 Zt+k−1 + φk2Zt+k−2 + φk3Zt+k−3 + · · · + φkk Zt + ut+k (7.11) donde ut+k ∼ R.B tal que COV(ut+k , Zt+k−j ) = 0 ∀ j ≥ 1. Si multiplicamos a ambos lados de (7.11) por Z t+k−j , tomamos valor esperado y luego dividimos por γ(0) (la varianza de Z t ), obtenemos la ACF en j, esto es ρ(j) = φk1 ρ(j−1)+φk2 ρ(j−2)+φk3 ρ(j−3)+· · ·+φkk ρ(j−k), para j = 1, 2, · · · , k (7.12) Para hallar el valor del coeficiente φ kk se conforma el siguiente sistema de ecuaciones de orden k × k donde usamos la ecuación en (7.12) con j = 1, 2, 3, · · · , k: ρ(1) = φk1 ρ(0) + φk2ρ(1) + φk3 ρ(2) + · · · + φkk ρ(k − 1), ρ(2) = φk1 ρ(1) + φk2ρ(0) + φk3 ρ(1) + · · · + φkk ρ(k − 2), .. .. .=. ρ(k) = φk1 ρ(k − 1) + φk2ρ(k − 2) + φk3 ρ(k − 3) + · · · + φkk ρ(0), ES con ρ(0) = 1 y ρ(j − k) = ρ(k − j) (porque la autocorrelación es una función simétrica alrededor de cero). En este sistema de ecuaciones, las incógnitas son los coeficientes φ kj , pero en particular nos interesa hallar a φ kk . El anterior sistema de ecuaciones es conocido como el sistema de ecuaciones Yule Walker. Matricialmente, tenemos ρ = Rφ, entonces φ = R −1 ρ, donde ⎡ ⎤ ⎡ ρ(1) 1 ρ(1) ρ(2) ⎢ρ(2)⎥ ⎢ ρ(1) 1 ρ(1) ⎥ ⎢ ⎢ ρ = ⎢ .. ⎥ R=⎢ .. .. .. ⎣ . ⎦ ⎣ . . . ρ(k) k×1 ρ(k − 1) ρ(k − 2) ρ(k − 3) ··· ··· ··· ··· ⎡ ⎤ ⎤ φk1 ρ(k − 1) ⎢φk2 ⎥ ⎢ ⎥ ρ(k − 2)⎥ ⎥ ⎢ ⎥ φ = ⎢φk3 ⎥ ⎥ .. ⎢ .. ⎥ ⎦ . ⎣ . ⎦ 1 k×k φkk k×1 La solución de este sistema de ecuaciones puede ser hallada por la Regla de CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 188 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Cramer, que para k = 1, 2, . . ., establece que 1 ρ(1) ρ(2) · · · ρ(k − 2) ρ(1) ρ(1) 1 ρ(1) · · · ρ(k − 3) ρ(2) .. .. .. .. .. . . . ··· . . ρ(k − 1) ρ(k − 2) ρ(k − 3) · · · ρ(1) ρ(k) φkk = 1 ρ(1) ρ(2) · · · ρ(k − 2) ρ(k − 1) ρ(1) 1 ρ(1) · · · ρ(k − 3) ρ(k − 2) .. .. .. .. .. . . . ··· . . ρ(k − 1) ρ(k − 2) ρ(k − 3) · · · ρ(1) 1 (7.13) LA PACF muestral, es decir, φ̂kk puede ser calculada mediante el sistema de ecuaciones de Yule Walker, pero usando en éste sistema los valores estimados ρ̂(j) de la función de autocorrelación. Otra posibilidad es utilizar un método recursivo de estimación, que consiste de los pasos siguientes: 1. Inicializar con φ̂11 = ρ̂(1) 2. Para k > 1 calcular k ρ̂(k + 1) − φ̂kj ρ̂(k + 1 − j) j=1 φ̂k+1,k+1 = 1− k y , φ̂kj ρ̂(j) j=1 φ̂k+1,j = φ̂kj − φ̂k+1,k+1φ̂k,k+1−j , j = 1, · · · , k. Por ejemplo, para hallar φ̂22 hacemos k + 1 = 2, es decir, k = 1, por tanto el ı́ndice en las sumatorias sólo llega hasta 1: ρ̂(2) − φ̂1j ρ̂(2 − j) j=1 φ̂22 = ES 1 1− 1 = φ̂1j ρ̂(j) ρ̂(2) − φ̂11 ρ̂(1) 1 − φ̂11 ρ̂(1) , φ̂21 = φ̂11 − φ̂22 φ̂11 . y j=1 NOTA: La PACF también es una función simétrica alrededor de cero, luego, basta considerar valores de k no negativos para su estudio. 7.3.1. PACF para un proceso de ruido blanco Sea {Et }t≥1 un proceso de ruido blanco, entonces para una serie E 1 , E2 , · · · , En con n “grande”, se cumple que E[φ̂kk ] = 0, VAR[φ̂kk ] ≈ ∼ aprox. 1 y φ̂kk N n 0, 1 n (7.14) 7.3. FUNCIÓN DE AUTOCORRELACI ÓN PARCIAL O PACF 189 y desde que para un ruido blanco ρ(0) = 1 y ρ(k) = 0 para todo k = 0, entonces también φ00 = 1 y φkk = 0 para k = 0: φkk TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 1 −4 −3 −2 −1 0 1 2 3 4 k Figura 7.1: PACF de un proceso de ruido blanco Sin embargo en una muestra de tamaño n, para establecer si un proceso es un ruido blanco a través de su PACF muestral, es necesario probar que para todo k > 0 la PACF es cero, y de la misma manera que cuando consideramos la ACF, tenemos que establecer esto realizando para cada k = 1, 2, · · · , m, m = [n/4] la siguiente prueba de hipótesis: H0 : φkk = 0 versus H1 : φkk = 0 (7.15) Si en ninguna de las m pruebas se rechaza H 0 , entonces el proceso puede considerarse un ruido blanco, pero si para algún k se rechaza H 0 , entonces el proceso no es ruido blanco. La región de √ rechazo, con una significancia aproximada del 5 % está dada por | φ̂kk | > 2/ n. Al igual que en la ACF o FAC, las pruebas para la PACF se realizan gráficamente, trazando sobre la PACF muestral las bandas de los lı́mites de aceptaciónrechazo. Una gráfica tı́pica de la PACF muestral de un ruido blanco es como la de la Figura 7.3.1. Observe que excepto para k = 0, en los demás rezagos la función toma valores dentro de la región de aceptación. 7.3.2. PACF muestral con R ES En R se obtiene la función de autocorrelación muestral mediante la función pacf(): pacf(x, lag.max, plot, na.action, ...) donde x es un objeto serie de tiempo o un vector numéricos lag.max el número máximo de rezagos para los cuales se desea calcular la función plot argumento lógico para indicar si se desea graficar o no la PACF. na.action Función a ser llamada para manejar datos faltantes. CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 190 n φ^kk TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 2 −2 0 n 0 5 10 15 20 25 k Figura 7.2: PACF muestral de un ruido blanco 7.3.3. Ejemplos Considere las series a t , Z1,t , Z2,t , Z3,t y Z4,t , t = 1, 2, · · · , 100 presentadas en la Sección 6.5.1. Las PACF muestrales correspondientes son presentadas en la Figura 7.3. Determine en cada caso, usando la prueba de la PACF, cuáles de las series son ruido blanco y cuáles no lo son. Las PACFs fueron obtenidas con el Código R 7.1. Código R 7.1. ES #LECTURA DE ARCHIVO DE DATOS datosejemFACS.txt #EL ARCHIVO TIENE EL NOMBRE DE LAS SERIES EN LA PRIMERA FILA datos=read.table(file.choose(),header=T) #TODAS LAS CINCO SERIES TIENEN MISMO INDICE t=1 a 100 #PODEMOS CREAR MATRIZ DE SERIES datos datos=ts(datos,freq=1) #Separando las series at=datos[,1];Z1t=datos[,2];Z2t=datos[,3];Z3t=datos[,4];Z4t=datos[,5] #Calculando m=[n/4]. Todas las series aquı́ tienen longitud #igual al número de filas de la matriz de datos m=floor(nrow(datos)/4) #Graficando las PACF muestrales nf=layout(rbind(c(1,2),c(3,4),c(5,6))) pacf(at,lag.max=m,ci.col=2);pacf(Z1t,lag.max=m,ci.col=2);pacf(Z2t,lag.max=m,ci.col=2) pacf(Z3t,lag.max=m,ci.col=2);pacf(Z4t,lag.max=m,ci.col=2) 7.3. FUNCIÓN DE AUTOCORRELACI ÓN PARCIAL O PACF 7 0.2 −0.2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Partial ACF 0.6 0.0 0.1 0.2 Series Z1t −0.2 Partial ACF Series at 191 10 15 20 25 5 10 15 Lag Lag Series Z2t Series Z3t 20 25 20 25 −0.6 −0.2 Partial ACF 0.6 0.2 −0.2 Partial ACF 0.2 5 5 10 15 20 25 5 Lag 10 15 Lag 0.0 −0.2 ES −0.4 Partial ACF 0.2 Series Z4t 5 10 15 20 25 Lag Figura 7.3: PACFs series simuladas en Sección 6.5.1. Considere además la PACF de los residuales del modelo log cuadrático estacional ajustado a la serie de producción de cemento en la Sección 5.3.3 y realice el test de ruido blanco usando la PACF ¿qué se concluye? CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 192 0.4 0.2 −0.2 0.0 Partial ACF TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 0.6 0.8 PACF residuales modelo log cuadrático estacional Serie producción trimestral de cemento portland 0 10 20 30 Lag Figura 7.4: PACF residuales modelo log cuadrático estacional serie producción trimestral de cemento portland Continuación Código R 5.7 m=length(lnyt)/4 win.graph(width=4.875,height=3.5,pointsize=8) pacf(residuals(modelo1),lag.max=m,ci.col=2, main="PACF residuales modelo log cuadrático estacional\nSerie producción trimestral de cemento portland") 7.4. Modelos de medias móviles o MA 7.4.1. El proceso de media m óvil de orden 1 o MA(1) ES Llamaremos a un proceso {Z t }t≥1 de media móvil de orden 1 al proceso estacionario en covarianza de media cero tal que Zt = (1 + θ1 B)at = at + θ1 at−1 , donde at ∼ R.B(0, σa2 ) (7.16) Es decir, un MA(1) es un filtro lineal de un ruido blanco con ψ 1 = θ1 , mientras que ψj = 0, j ≥ 2. Por tanto, un proceso MA(1) es estacionario en covarianza, de acuerdo al Teorema de representación de Wold. Claramente, La media del proceso es cero: E[Z t ] = 0 y su varianza es VAR[Z t ] = σa2 (1 + θ12 ). Función de autocorrelaci ón y autocorrelaci ón parcial Por la definición de covarianza y sus propiedades, tenemos que la función de autocovarianza es, 7.4. MODELOS DE MEDIAS M ÓVILES O MA 193 γ(1) = COV(Zt , Zt−1 ) = COV(at + θ1 at−1 , at−1 + θ1 at−2 ) = COV(θ1 at−1 , at−1 ) = θ1 σa2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 mientras que para todo k ≥ 2 (7.17) γ(k) = COV(Zt , Zt−k ) = COV(at + θ1 at−1 , at−k + θ1 at−k−1 ) = 0 (7.18) De donde, la función de autocorrelación del proceso es ⎧ 1 ⎪ ⎪ ⎨ θ 1 ρ(k) = ⎪ 1 + θ12 ⎪ ⎩ 0 si k = 0; si k = 1; (7.19) si k ≥ 2 Teniendo en cuenta la anterior ecuación y aplicando iterativamente el sistema de ecuaciones de Yule-Walker antes definido, es posible mostrar que la función de autocorrelación parcial para un MA(1) es φkk = (−1)k+1 θ1k (1 − θ12 ) 2(k+1) 1 − θ1 , para k ≥ 1 (7.20) ES De la Figura 7.5 observe que al contrario de la ACF, la PACF de un MA(1) tiene un comportamiento de cola decreciente exponencialmente en una de dos formas, dependiendo del signo de θ 1 . También puede mostrarse que |φ kk | < 1/2. CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 194 0.5 φkk θ1 = − 0.5 0 7 0 θ1 = − 0.5 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 −1 −0.5 0 2 4 6 8 10 12 2 4 6 k φkk ρ(k) 0.5 θ1 = 0.5 0 −1 θ1 = 0.5 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 0.5 θ1 = − 0.9 φkk ρ(k) 12 −0.5 0 0 −1 θ1 = − 0.9 0 −0.5 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 0.5 θ1 = 0.9 φkk ρ(k) 10 k 1 ES 8 0 −1 θ1 = 0.9 0 −0.5 0 2 4 6 k Figura 7.5: 8 10 12 2 4 6 8 10 k Ejemplos ρ(k) y φkk de procesos MA(1) 12 7.4. MODELOS DE MEDIAS M ÓVILES O MA 195 7.4.2. Procesos MA(q) Un proceso estacionario en covarianza de media cero tal que Zt = Θq (B)at , con Θq (B) = 1 + θ1 B + θ2 B 2 + · · · + θq B q y at ∼ R.B(0, σa2 ) (7.21) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 es un proceso de medias móviles de orden q. Este proceso es una generalización de un MA(1). Observe que todo proceso MA es estacionario en covarianza (Teorema de representación de Wold). De acuerdo a Guerrero [5] un proceso MA puede interpretarse de la siguiente manera: dado un proceso en equilibrio, las fluctuaciones alrededor del punto de equilibrio, {Z t }t≥1 , son causadas por choques asociados a eventos inesperados. Tales choques no necesariamente se asimilan de manera instantánea, sino que pueden seguir causando efectos aún después de transcurrido cierto número de perı́odos y además la intensidad del choque se refleja en el valor de su ponderación θi . Para el proceso MA(q) tenemos que E[Z t ] = 0, VAR[Zt ] = (1 + θ12 + θ22 + · · ·+ θq2 )σa2 y su autocovarianza de orden k es dada por (θk + θ1 θk+1 + · · · + θq−k θq )σa2 si k = 1, 2, · · · , q (7.22) γ(k) = 0 si k > q, de donde, la función de autocorrelación de orden k satisface ⎧ ⎪ 1 si k = 0 ⎪ ⎪ ⎨θ + θ θ + · · · + θ θ k 1 k+1 q−k q si k = 1, 2, · · · , q ρ(k) = 2 2 1 + θ + θ + · · · + θq2 ⎪ 1 2 ⎪ ⎪ ⎩0 si k > q (7.23) ES lo cual implica que el proceso MA(q) tiene una memoria limitada a q periodos. La PACF puede ser calculada usando el sistema de ecuaciones de YuleWalker. En esta función, un proceso MA(q) tendrá todas sus autocorrelaciones parciales distintas de cero aunque mostrando convergencia a cero, con decaimiento amortiguado exponencial y/o sinusoidal. Por ejemplo, para un MA(2) tenemos que ⎧ 2 ⎪ ⎨θ1 (1 + θ2 )σa si k = 1 γ(k) = θ2 σa2 (7.24) si k = 2 ⎪ ⎩ 0 si k > 2, luego, la función de autocorrelación de orden k satisface ⎧ 1 si k = 0 ⎪ ⎪ ⎪ ⎪ θ1 (1 + θ2 ) ⎪ ⎪ ⎨ si k = 1 2 2 ρ(k) = 1 + θθ1 + θ2 2 ⎪ ⎪ si k = 2 ⎪ 2 ⎪ 1 + θ1 + θ22 ⎪ ⎪ ⎩ 0 si k > 2 (7.25) CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 196 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 φ11 = ρ(1) ρ(2) − ρ2 (1) φ22 = 1 − ρ2 (1) ρ3 (1) − ρ(1)ρ(2) [2 − ρ(2)] φ33 = 1 − ρ2 (2) − 2ρ2 (1) [1 − ρ(2)] .. . 7 Su PACF corresponde a (7.26) La PACF decae en forma exponencial o sinusoidal dependiendo del signo y magnitud de las raı́ces del polinomio Θ 2 (B) = 1 + θ1 B + θ2 B 2 = 0. La PAFC oscilará sinusoidalmente si las raı́ces son complejas. En la Figura 7.6 se representan las ACF’s y PACF’s de algunos procesos MA(2). Note que mientras la ACF se hace cero abruptamente, la PACF decae amortiguada. 7.5. Modelos autorregresivos de orden p o AR(p) Los procesos autorregresivos son un tipo de proceso estocástico en el cual el valor actual de una serie está linealmente relacionado con sus valores pasados más una perturbación o choque aleatorio aditivo. En el Capı́tulo 6, Sección 6.7 fue introducido el proceso autorregresivo de orden 1 o AR(1), ası́ que a continuación trataremos el caso más general, es decir, los procesos AR(p). Un proceso estocástico de media cero tal que Zt = φ1 Zt−1 + φ2 Zt−2 + . . . + φp Zt−p + at y at ∼ R.B(0, σa2 ) (7.27) con at independiente de Z t−k para todo k > 0, es un proceso autorregresivo de orden p. En términos del operador de rezagos, B j , podemos también representar el proceso por Φp (B)Zt = at , con Φp (B) = 1 − φ1 B − φ2 B 2 − . . . − φp B p (7.28) ES Un proceso AR(p) es estacionario en covarianza si y sólo sı́ todas las raı́ces del polinomio Φp (B) (es decir, las soluciones de la ecuación Φ p (B) = 0) tienen módulo mayor a uno (yacen por fuera del cı́rculo unitario) y de acuerdo al Teorema de representación de Wold (Sección 7.2), el proceso podrá escribirse ∞ como un filtro lineal del ruido blanco a t , es decir, Zt = j=0 ψj at−j = Ψ(B)at con ∞ ψi2 < ∞. ψ0 = 1 y i=1 Recuerde que si una raı́z r j de un polinomio es compleja, r j = aj + ibj , i = √ −1, su módulo es |rj | = a2j + b2j y que a lo sumo, un polinomio de grado p tiene p raı́ces distintas, es decir, Φp (B) = p (1 − rj−1 B) j=1 (7.29) 7.5. MODELOS AUTORREGRESIVOS DE ORDEN P O AR(P) 0.5 φkk θ1 = 0.5 θ2 = 0.7 0 7 0 θ1 = 0.5 θ2 = 0.7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 197 −1 −0.5 0 2 4 6 8 10 12 2 4 6 k φkk ρ(k) 0.5 θ1 = − 0.5 θ2 = − 0.7 0 −1 θ1 = − 0.5 θ2 = − 0.7 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 0.5 θ1 = 0.5 θ2 = − 0.7 φkk ρ(k) 12 −0.5 0 0 −1 θ1 = 0.5 θ2 = − 0.7 0 −0.5 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 0.5 θ1 = − 0.5 θ2 = 0.7 φkk ρ(k) 10 k 1 ES 8 0 −1 θ1 = − 0.5 θ2 = 0.7 0 −0.5 0 2 4 6 k Figura 7.6: 8 10 12 2 4 6 8 10 k Ejemplos ρ(k) y φkk de procesos MA(2) 12 198 CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA Para el proceso AR(p) como ha sido definido en es cero, p(7.27), la media 2 mientras que su varianza es dada por VAR[Z t ] = k=1 φk γ(k) + σa , con γ(k) = E[Zt Zt−k ]. Recuerde que γ(0) = VAR[Z t ]. 7.5.1. Función de autocorrelaci ón y autocorrelaci ón parcial de un AR(p) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Para hallar la función de autocorrelación ρ(k), multiplicamos ambos lados de (7.27) por Zt−k , tomamos valor esperado y dividimos por γ(0) = VAR(Z t ) (teniendo en cuenta además que E(a t Zt−k = 0, k > 0), obteniendo la siguiente ecuación recursiva ρ(k) = φ1 ρ(k − 1) + φ2 ρ(k − 2) + · · · + φp ρ(k − p) k > 0, (7.30) y hacemos uso de esta ecuación para hallar la función de autocorrelación en cada k, recursivamente. Por ejemplo, Para un AR(2), tenemos φ1 1 − φ2 φ2 + φ2 (1 − φ2 ) ρ(2) = φ1 ρ(1) + φ2 , de donde ρ(2) = 1 1 − φ2 etc. ρ(1) = φ1 + φ2 ρ(1) de donde ρ(1) = Cuando el proceso es estacionario en covarianza, es posible mostrar a partir de (7.30) que la ACF presenta un amortiguamiento gradual. El patrón de amortiguamiento puede ser uno de tipo monótono como en el caso de un AR(1) con coeficiente φ1 > 0, o siguiendo patrones de oscilación cı́clica que pueden ser una mezcla de decaimientos exponenciales y sinusoidales, cuando algunas raı́ces del polinomio Φ p (B) son complejas. ES Para obtener la función de autocorrelación parcial φ kk , simplemente se hace uso del sistema de ecuaciones Yule-Walker con solución dada en la ecuación (7.13), en donde para k > p, la última columna de la matriz en el numerador puede escribirse como una combinación lineal de las columnas previas, según la ecuación (7.30), y por tanto, φ kk = 0 para k > p. También puede usarse para el cálculo de la PACF el método recursivo explicado en la página 188. No confunda aquı́ los coeficientes φ j de la ecuación del modelo AR(p) con los φkj , j = 1, 2, . . . , k en la ecuación (7.11) usada para definir la PACF. La Figura 7.7 presenta la ACF y PACF de algunos procesos AR(1). La Figura 7.8 presenta la ACF y PACF para algunos procesos AR(2). Observe los patrones de decaimiento amortiguado (cola decreciente) en las ACF’s mientras que en las PACF’s se observa que para todo k > p la PACF es cero (patrón de corte). 7.5. MODELOS AUTORREGRESIVOS DE ORDEN P O AR(P) 1 φkk φ1 = 0.9 0 7 0 φ1 = 0.9 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 199 −1 −1 0 2 4 6 8 10 12 2 4 6 k φkk ρ(k) 1 φ1 = 0.4 0 −1 φ1 = 0.4 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 1 φ1 = − 0.9 φkk ρ(k) 12 −1 0 0 −1 φ1 = − 0.9 0 −1 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 1 φ1 = − 0.4 φkk ρ(k) 10 k 1 ES 8 0 −1 φ1 = − 0.4 0 −1 0 2 4 6 k Figura 7.7: 8 10 12 2 4 6 8 10 k Ejemplos ρ(k) y φkk de procesos AR(1) 12 CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 200 1 φkk φ1 = 0.5 φ2 = − 0.7 0 7 0 φ1 = 0.5 φ2 = − 0.7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 −1 −1 0 2 4 6 8 10 12 2 4 6 k φkk ρ(k) 1 φ1 = − 0.5 φ2 = 0.3 0 −1 φ1 = − 0.5 φ2 = 0.3 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 1 φ1 = 0.3 φ2 = 0.3 φkk ρ(k) 12 −1 0 0 −1 φ1 = 0.3 φ2 = 0.3 0 −1 0 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 1 φ1 = 0.8 φ2 = − 0.6 φkk ρ(k) 10 k 1 ES 8 0 −1 φ1 = 0.8 φ2 = − 0.6 0 −1 0 2 4 6 k Figura 7.8: 8 10 12 2 4 6 8 10 k Ejemplos ρ(k) y φkk de procesos AR(2) 12 7.6. MODELOS AUTORREGRESIVOS Y DE MEDIAS M ÓVILES O ARMA(P,Q)201 NOTAS: 7 En general, cuando un proceso puede expresarse apropiadamente mediante un modelo AR, se dice que es invertible. Todo proceso AR(p) es por tanto invertible. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Cuando un proceso puede expresarse como un MA es estacionario, por tanto todo MA(q) es estacionario. Cuando un proceso AR(p) es estacionario entonces éste es equivalente a un MA(∞), lo cual implica que las raı́ces del polinomio Φ p (B) tienen módulo mayor a uno. Cuando un proceso MA(q) es invertible éste es equivalente a un AR(∞), lo cual implica que las raı́ces del polinomio Θ q (B) tienen módulo mayor a uno. 7.6. Modelos autorregresivos y de medias móviles o ARMA(p,q) Los procesos ARMA son una generalización de los procesos AR y MA, y consisten en una combinación de ambos modelos. Por definición, un proceso {Zt }t≥1 de media cero es un proceso ARMA(p,q) si Φp (B)Zt = Θq (B)at , at ∼ R.B(0, σa2 ) (7.31) con Φp (B) = 1 − φ1 B − φ2 B 2 − · · · − φp B p y Θq (B) = 1 + θ1 B + θ2 B 2 + · · · + θq B q . NOTA: En muchos textos de series de tiempo se define el polinomio Θ q (B) = 1 − θ1 B − θ2 B 2 − · · · − θq B q . En R, funciones como arima() y auto.arima() trabajan con el modelo ARMA (y los modelos MA) usando Θ q (B) = 1 + θ1 B + θ2 B 2 + · · · + θq B q . ES Cuando las raı́ces del polinomio Φ p (B) yacen fuera del cı́rculo unitario (es decir, tienen módulo mayor a uno), el proceso ARMA(p,q) es estacionario en covarianza y admite la siguiente representación Zt = Θq (B) at = Ψ(B)at Φp (B) (7.32) Si las raı́ces del polinomio Θ q (B) yacen fuera del cı́rculo unitario, el proceso ARMA(p,q) es invertible y puede escribirse como Φp (B) Zt = Π(B)Zt = at Θq (B) (7.33) CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 202 7.6.1. Función de autocorrelaci ón y autocorrelaci ón parcial de un ARMA(p,q) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 γ(k) = φ1 γ(k − 1) + φ2 γ(k − 2) + · · · + φp γ(k − p), para k > q 7 Desde que para k > i se cumple que E[Z t−k at−i ] = 0, puede mostrarse que la función de autocovarianza γ(k) satisface (7.34) y por tanto la función de autocorrelación satisface, ρ(k) = φ1 ρ(k − 1) + φ2 ρ(k − 2) + · · · + φp ρ(k − p), para k > q, (7.35) pero las primeras q autocorrelaciones dependen tanto de los parámetros autorregresivos como de los de medias móviles del modelo. De (7.34) puede establecerse que la ACF decae o amortigua después del q-ésimo rezago como lo hace un proceso AR, esto es, hay patrón de cola en esta función. Respecto a la función de autocorrelación parcial, debido a que el proceso ARMA(p,q) contiene al proceso MA como un caso especial, su PACF también presentará decaimientos de tipo exponencial y/o sinusoidal, dependiendo de las raı́ces de los polinomios Φ p (B) y Θq (B). La forma general de la PACF es complicada y no necesaria, sólo es suficiente notar que tendrá patrón de cola. NOTA: Note que lo procesos AR y MA son caso particulares del modelo ARMA, ası́ un AR(p) es un ARMA(p,0), mientras que un MA(q) es un ARMA(0,q). 7.6.2. Casos especiales de procesos ARMA Guerrero [5] establece que algunos casos de procesos ARMA surgen cuando se consideran ES 1. Series obtenidas por agregación de componentes, por ejemplo, la serie de producto interno bruto obtenida al agregar las series correspondientes a los diversos sectores de la economı́a, y 2. Series en donde los datos contienen errores de observación lo cual es un caso muy común en las series económicas. Según lo anterior podrı́a demostrarse que si Z t satisface la relación Zt = Z1t + Z2t (7.36) donde Z1t y Z2t son dos procesos estacionarios, independientes y de media cero, entonces el proceso Z t estará determinado como se indica en la Tabla 7.1. La Tabla 7.2 resume la caracterización de la ACF y la PACF de procesos ARMA. En las Figuras 7.9 y 7.10 se representan las ACF’s y PACF’s de algunos procesos ARMA(1,1). 7.6. MODELOS AUTORREGRESIVOS Y DE MEDIAS M ÓVILES O ARMA(P,Q)203 Modelos resultantes de agregar procesos Z1t y Z2t estacionarios e independientes Procesos combinados Zt ARMA(p,p) ARMA(p1 + p2 , máx(p1 , p2 )) ARMA(p,p+q) ARMA(0,q) ARMA(0,máx(q1 , q2 )) ARMA(p,máx(p, q)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Procesos individuales Z1t Z2t AR(p) Ruido blanco AR(p1 ) AR(p2 ) AR(p) MA(q) MA(q) Ruido blanco MA(q1 ) MA(q2 ) ARMA(p,q) Ruido blanco 7 Tabla 7.1: Tabla 7.2: Comportamiento de la ACF y PACF para procesos ARMA Proceso AR(p) ACF Muchos valores no nulos que decrecen a cero con k como mezcla de patrones exponenciales y sinusoidales. PACF Solamente las primeras p autocorrelaciones parciales son distintas de cero. MA(q) Sólo las primeras k autocorrelaciones son distintas de cero. Muchos valores no nulos que decrecen a cero con k como mezcla de patrones exponenciales y sinusoidales. ARMA(p,q) Comportamiento irregular de las primeras q autocorrelaciones y después convergencia a cero para k > q. Sucesión infinita que converge a cero. 1 φ1 = 0.9 θ1 = − 0.5 φkk ρ(k) 1 0 −1 φ1 = 0.9 θ1 = − 0.5 0 −1 2 4 6 8 10 12 2 4 6 ES k 1 1 φ1 = 0.9 θ1 = 0.5 φkk ρ(k) 8 10 12 k 0 −1 φ1 = 0.9 θ1 = 0.5 0 −1 2 4 6 8 k Figura 7.9: 10 12 2 4 6 8 10 12 k Ejemplos ρ(k) y φkk de procesos ARMA(1,1) CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 204 1 φkk φ1 = − 0.9 θ1 = − 0.5 0 7 0 φ1 = − 0.9 θ1 = − 0.5 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 −1 −1 2 4 6 8 10 12 2 4 6 k 1 φ1 = − 0.9 θ1 = 0.5 φkk ρ(k) 10 12 k 1 0 −1 φ1 = − 0.9 θ1 = 0.5 0 −1 2 4 6 8 10 12 2 4 6 k 8 10 12 k 1 1 φ1 = 0.6 θ1 = 0.4 φ1 = 0.6 θ1 = 0.4 φkk ρ(k) 8 0 0 −1 −0.5 2 4 6 8 10 12 2 4 6 ES k 10 12 k 0.25 0.25 φ1 = 0.5 θ1 = − 0.8 φkk ρ(k) 8 0 −0.25 φ1 = 0.5 θ1 = − 0.8 0 −0.25 2 4 6 8 k Figura 7.10: 10 12 2 4 6 8 10 12 k Más ejemplos ρ(k) y φkk de procesos ARMA(1,1) 7.7. IDENTIFICACI ÓN Y AJUSTE DEL MODELO PARA LOS CICLOS 205 7.7. Identificación y ajuste del modelo para los ciclos TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 El análisis de las funciones de autocorrelación y autocorrelación parcial muestrales nos ayuda a identificar el tipo de proceso estocástico relativo a los ciclos. Al comparar las gráficas de estas funciones con los patrones establecidos en la Tabla 7.2, es posible identificar si el proceso es un AR, un MA o un ARMA. Recuerde que el orden p de un proceso AR(p) es determinado en la PACF, mientras que el orden q de un MA(q) es determinado en la ACF. Sin embargo, en el caso de un proceso ARMA(p,q) más general no es posible identificar los valores p y q por inspección directa de las gráficas de la ACF y PACF muestrales, debido a que el patrón esperado en ambas gráficas es de colas decrecientes. En la primera etapa del proceso de identificación basado en el análisis de la ACF y PACF muestrales, no se pretende identificar a la primera el modelo correcto, más bien el objetivo es restringir el conjunto de todos los posibles modelos ARMA a un subconjunto de modelos que en principio pueden representar los rasgos principales de la serie. Por tanto es conveniente tener en cuenta lo siguiente: Cuando el proceso sigue un modelo AR(p), la ACF muestral presenta patrón de cola decreciente, con decaimiento exponencial y/o sinusoidal, mientras que la PACF muestral no presenta ningún patrón particular de decaimiento pero sı́ de corte: último valor significativo cortando alguna de las bandas de rechazo, indica el orden autorregresivo p. Cuando el proceso sigue un modelo MA(q), la PACF muestral presenta patrón de cola decreciente con decaimiento exponencial y/o sinusoidal, mientras que la ACF muestral no presenta ningún patrón particular de decaimiento pero sı́ de corte: último valor significativo cortando alguna de las bandas de rechazo, indica el orden de media móvil q. ES Se deben postular modelos simples que expliquen los rasgos obvios del proceso en su ACF y PACF. Evitar la identificación inicial de modelos mixtos ARMA y comenzar con modelos AR o MA preferiblemente de orden bajo. En relación a la identificación de modelos ARMA existen diferentes herramientas computacionales basadas en algoritmos de selección de variables con base en la evaluación de algún criterio de información (AIC, BIC, AICC) o mediante la función de autocorrelación extendida (EACF). 7.7.1. Métodos de identificaci ón basados en minimizaci ón de criterios de información Lo métodos para identificación de modelos ARMA(p,q) basados en criterios de información, básicamente intentan determinar el verdadero modelo CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 206 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 minimizando el criterio de información correspondiente. Cuando el verdadero modelo es un ARMA de orden finito, Los órdenes p y q hallados usando el criterio BIC son consistentes, es decir, a medida que aumenta el tamaño de la serie estos se aproximan a los verdaderos, pero si el verdadero modelo no es un ARMA de orden finitos, entonces el AIC será el criterio que conducirá a un modelo que es más próximo al verdadero proceso dentro de todos los modelos bajo estudio. En R se cuenta con la función auto.arima() de la librerı́a forecast. Esta función identifica automáticamente y ajusta el modelo ARMA (o ARIMA incluso, para el caso de series no estacionarias) utilizando por defecto el criterio de información de Akaike (AIC), pero también es posible usar el criterio de información Bayesiana (BIC) y el criterio de información de Akaike corregido por sesgo (AICC). Su sintaxis es como sigue auto.arima(x, d = NA, D = NA, max.p = 5, max.q = 5, max.P = 2, max.Q = 2, max.order = 5, start.p=2, start.q=2, start.P=1, start.Q=1, stationary = FALSE, ic = c("aic","aicc", "bic"), stepwise=TRUE, trace=FALSE, approximation=length(x)>100 | frequency(x)>12, xreg=NULL, test=c("kpss","adf","pp"), allowdrift=TRUE) donde: x es la serie de tiempo univariada d es el orden de primera diferencia sobre la serie, para el caso de series no estacionarias que veremos luego. Si se omite, la función eligirá este valor mediante el test KPSS (test de raı́z unitaria; veremos esto en series no estacionarias). ES D es el orden de diferenciación estacional, si se omite también será elegido según un test CH (el test Canova-Hansen). max.p es el valor máximo a considerar para p, el orden AR max.q es el valor máximo a considerar para q, el orden MA max.P, max.Q es el valor máximo para los órdenes P y Q en modelos no estacionarios con estacionalidad max.order es el valor máximo para la suma p + q + P + Q si la selección del modelo no va a ser stepwise (paso a paso) start.p, start.q, start.P , start.Q valores iniciales para p, q, P , y Q respectivamente, en el procedimiento stepwise. 7.7. IDENTIFICACI ÓN Y AJUSTE DEL MODELO PARA LOS CICLOS 207 stationary argumento que se especifica como igual a TRUE o FALSE, para restringir o no la búsqueda a modelos estacionarios. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 ic argumento en el cual se especifica el criterio de información en la selección de modelos: “aic”, “aicc” o “bic”. Por defecto se ajusta a “aic”, es decir usa AIC. stepwise para indicar si se usa (TRUE) o no se usa (FALSE) el procedimiento stepwise, en este último caso hace una búsqueda sobre todos los modelos lo cual puede hacer lento el algoritmo. trace si es TRUE se reportará la lista de los modelos ARIMA considerados. approximation si es TRUE, la estimación es realizada mediante sumas de cuadrados condicionales y los criterios de información usados en la selección serán aproximados. El modelo final es estimado mediante estimación de máxima verosimilitud. Esta opción deberá usarse para series de tiempo muy largas o con perı́odo estacional (estocástico) alto para reducir tiempo de cómputo. xreg es un argumento opcional para especificar un vector o matriz de variables regresoras o explicatorias, que deben tener el mismo número de filas que x. test para especificar el tipo de test de raı́z unitaria a usar, esto es para series no estacionarias, como luego veremos. Por defecto usa el test de raı́z unitaria kpss. allowdrift si se especifica como TRUE, considera modelos con derivas (términos constantes). ES 7.7.2. Método de identificaci ón basado en la funci ón de autocorrelaci ón extendida La función de autocorrelación extendida o EACF para la identificación de modelos ARMA, es un método con buen desempeño en muestras moderadamente grandes. Esta función usa el hecho de que si la parte AR de un ARMA fuese conocida, entonces al filtrar de la serie esta componente mediante regresión, se obtendrı́a un proceso MA puro con la propiedad de patrón de corte en su ACF. Los coeficientes AR son estimados mediante una sucesión finita de regresiones. Para un valor p dado, se inicia realizando una regresión de Z t vs. sus primeros p rezagos, Z t−1 , . . . , Zt−p . Si los residuales de esta regresión no son un ruido blanco, se ajusta un segundo modelo de regresión de Z t vs. sus primeros p rezagos, y vs. el rezago de orden uno de los residuales del modelo en el paso 1. Si de nuevo los residuales de este segundo modelo no son un ruido blanco, se ajusta un tercer modelo de regresión de Z t vs. sus primeros p CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 208 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 rezagos, y vs. el rezago uno de los residuales del segundo modelo y los rezagos de orden dos de los residuales del primer modelo. Este procedimiento continúa hasta que no se halle más información en los residuales de los modelos en la regresión. Si el modelo ARMA es de orden (p,q), entonces serán necesarias q regresiones. Sean Wt,j,k = Zt − φ̃1 Zt−1 − · · · − φ̃k Zt−k los residuales autorregresivos definidos con los coeficientes AR φ̃l , l = 1, . . . , k, estimados iterativamente, asumiendo un orden AR igual a k y un orden MA igual a j. La ACF muestral de estos residuales es lo que se denomina la autocorrelación muestral extendida, es decir, EACF = ρ̂ W (l). Se tiene que cuando el modelo verdadero es un ARMA(p,q), para k = p y j ≥ q, {W t,j,k } es aproximadamente un MA(q), y por tanto su autocorrelación teórica en rezagos superiores a q es cero. Con k > p hay un problema de sobre ajuste del modelo y esto a su vez incrementa el orden MA del proceso de residuales W . Como solución fue propuesto un método resumiendo la información en la EACF, mediante una tabla donde el elemento en la fila k y columna j toma el valor del sı́mbolo × si la autocorrelación muestral de W de orden j +1, ρ̂ W (j +1), es significativamente distinta de cero, y toma el valor de 0 en el caso contrario. Ası́, en esta tabla un ARMA(p,q) tendrá un patrón teórico de un triángulo de ceros, con vértice superior izquierdo indicando los correspondientes órdenes del proceso ARMA. En la Figura 7.11 el triángulo de ceros es resaltado con las lı́neas rojas y su vértice superior izquierdo está marcado con el sı́mbolo 0 ∗ , indicando que p = 1 y q = 1, luego el proceso es un ARMA(1,1). En la librerı́a R TSA se dispone de la función eacf(). En una EACF muestral la primera fila superior está asociada a la ACF muestral de la serie a la cual se aplica. La sintaxis de la función R es como sigue: eacf(z, ar.max = 7, ma.max = 13) ES donde, z es la serie ar.max el máximo valor del orden autorregresivo p ma.max el máximo valor del orden Ma, q. 7.7.3. Estimación de modelos ARMA Para modelos AR(p) puros la estimación puede realizarse mediante el método conocido como estimación de Yule-Walker, basado en el sistema de ecuaciones Yule-Walker previamente introducido en la Sección 7.3, pero en lugar de los coeficientes φ ik se tendrı́an los coeficientes φ i , i = 1, . . . , p, sin embargo este método está sujeto a errores substanciales de redondeo. También se 7.7. IDENTIFICACI ÓN Y AJUSTE DEL MODELO PARA LOS CICLOS 209 EACF teórica de un ARMA(1,1) Orden MA 1 2 3 4 5 6 7 8 9 10 11 12 7 0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0 1 Orden AR 2 3 4 5 6 7 ES Figura 7.11: 0* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Representación de la EACF teórica de procesos ARMA(1,1) dispone de métodos de mı́nimos cuadrados condicionales donde se definen o fijan valores iniciales para Z 0 , Z−1, . . . , Z−p y el de mı́nimos cuadrados incondicionales, donde Z 0 , Z−1 , . . . , Z−p no son fijados. Otro método posible de aplicar bajo el supuesto de normalidad para el ruido blanco, es el método de máxima verosimilitud. Pero en general, para estimar un modelo ARMA(p,q) no es posible utilizar métodos de estimación de regresión lineal múltiple ordinarios, debido a que las ecuaciones de minimización resultantes no son lineales en los parámetros desconocidos. Los métodos basados en máxima verosimilitud son más adecuados que los de mı́nimos cuadrados, puesto que utilizan toda la información en los datos en vez de algunos momentos muestrales como lo hacen los primeros, además, para los estimadores de máxima verosimilitud se tienen resultados 210 CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA asintóticos (aproximaciones en distribución cuando el tamaño de la serie es grande) conocidos. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En R, existen diferentes librerı́as que facilitan funciones para estimar modelos AR, y modelos ARMA en general. En la librerı́a stats se cuenta con las funciones ar(), ar.ols() para el ajuste de modelos AR; la función arima() permite estimar cualquier modelo ARMA, incluyendo AR y MA, y modelos ARIMA; en la librerı́a FitAR hay una serie de herramientas para modelos AR; la librerı́a FitARMA también suministra funciones para el ajuste por máxima verosimilitud de modelos ARIMA, y en la librerı́a forecast se tiene la función Arima(). 7.8. Ejemplos En el código R siguiente se simula una serie con modelo AR(1), para Z t = 0.67Zt−1 + at , at ∼ RBN(0, 1) y n = 100. También se obtienen las gráficas de la serie, su ACF, PACF y EACF y se identifica y ajusta el mejor modelo ARMA con la función auto.arima(). Código R 7.2. library(forecast) library(TSA) #Simulando un AR(1) estacionario, identificación y ajuste automático AR1.sim=arima.sim(list(order=c(1,0,0),ar=0.67),n=100) #Graficando la serie y sus funciones ACF y PACF muestrales nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) plot(AR1.sim) acf(AR1.sim,ci.type="ma",lag.max=25) pacf(AR1.sim,lag.max=25) #Obteniendo la EACF muestral para identificación del proceso eacf(AR1.sim) ES #Identificación y ajuste automático, usando criterio AIC para la identificación del mejor modelo ajuste1=auto.arima(AR1.sim,ic="aic") summary(ajuste1) #Obteniendo gráfica de la serie y proósticos para h=5 periodos futuros plot(forecast(ajuste1,h=5)) #Gráficos de residuales y su ACF y PACF, nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) plot(residuals(ajuste1)) abline(h=0,col=2) acf(residuals(ajuste1),ci.type="ma",lag.max=25) pacf(residuals(ajuste1),lag.max=25) En la Figura 7.12 se muestran la serie simulada y su ACF y PACF muestrales. De estas últimas podemos concluir que la serie sigue un proceso AR estacionario en covarianza de orden 1 ¿por qué? 7.8. EJEMPLOS 211 0.4 ACF −3 −0.4 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 −2 7 0.0 0.2 1 0 −1 AR1.sim 2 0.6 3 0.8 4 1.0 Series AR1.sim 0 20 40 60 80 100 0 5 10 Time 15 20 25 Lag 0.2 −0.2 0.0 Partial ACF 0.4 0.6 Series AR1.sim 5 10 15 20 25 Lag Figura 7.12: Serie AR1.sim simulada de Zt = 0.67Zt−1 + at , at ∼ RBN (0, 1) y n = 100 La siguiente salida R presenta el mejor modelo ajustado por auto.arima() y la EACF: Salida R 7.1. summary(ajuste1) Series: AR1.sim ARIMA(1,0,0) with zero mean ES Coefficients: ar1 0.6685 s.e. 0.0741 sigmaˆ2 estimated as 1.234: log likelihood = -152.7 AIC = 309.4 AICc = 309.52 BIC = 314.61 In-sample error measures: ME RMSE MAE MPE MAPE 0.04513091 1.11079700 0.84457644 33.32919295 84.68595900 eacf(AR1.sim) AR/MA 0 1 2 3 4 5 0 x x x o o o 1 o o o o o o 2 x o o o o o 3 x o o o o o 4 x o x o o o 5 x x o o o o 6 x o x o x o 7 x x x o x o 6 o o o o o o o o 7 o o o o o o o o 8 o o o o o o o o 9 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 x o o o o o o o MASE 0.89193308 13 x o o o o o o o En la Tabla siguiente presentamos también la EACF: CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA EACF muestral, AR(1) simulado (AR1.sim) 1 x o o o o x o x 2 x o o o x o x x 3 o o o o o o o o 4 o o o o o o x x 5 o o o o o o o o 6 o o o o o o o o 7 o o o o o o o o 8 o o o o o o o o 9 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 x o o o o o o o 13 x o o o o o o o TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Tabla 7.3: AR/MA 0 0 x 1 o 2 x 3 x 4 x 5 x 6 x 7 x 7 212 De acuerdo a la Tabla 7.3 el proceso para la serie simulada es un AR(1). Observe que el vértice superior derecho del triángulo de ceros señala p = 1 y q = 0. De la salida R podemos ver que el mejor modelo ajustado es Ẑt = 0.6685Ẑt−1 . El coeficiente φ1 ha sido estimado con un error estándar de 0.071; el AIC de este modelo ajustado es de 309.4 y el BIC es de 314.61. Las medidas de pronóstico ME, RMSE, etc. son calculados dentro de la muestra, luego no son útiles para evaluar capacidad de pronóstico fuera de la muestra. La Figura 7.13 muestra los residuales del modelo AR(1) ajustado y sus funciones de autocorrelación y autocorrelación muestrales. Podemos ver que los residuales evidencian un ruido blanco (teste de ruido blanco en ACF y PACF) y que la serie varı́a de forma aproximadamente homogénea alrededor de la lı́nea cero. 0.6 0.2 0.4 ACF 1 0 0.0 −1 −3 −0.2 −2 residuals(ajuste1) 2 0.8 3 1.0 Series residuals(ajuste1) 0 20 40 60 80 100 0 5 10 15 20 25 Lag 0.0 Partial ACF 0.1 0.2 Series residuals(ajuste1) −0.2 −0.1 ES Time 5 10 15 20 25 Lag Figura 7.13: Serie residuales después de ajustar AR1.sim y ACF, PACF correspondientes La Figura 7.14 muestra la serie AR1.sim y sus pronósticos con base en el 7.8. EJEMPLOS 213 modelo AR(1) ajustado, para h = 5 perı́odos futuros. Luego veremos cómo son construidos estos pronósticos. −3 −2 −1 0 1 2 3 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 4 Forecasts from ARIMA(1,0,0) with zero mean 0 Figura 7.14: 20 40 60 80 100 Serie AR1.sim simulada y pronósticos para h = 5 perı́odos futuros Considere ahora, las series Z 1t , Z3t presentadas en la Sección 6.5.1 y la serie MA1.sim simulada con el modelo Z t = at + 0.67at−1 , at ∼ RBN(0, 1) en el siguiente código Código R 7.3. ES library(forecast) library(TSA) #LECTURA DE ARCHIVO DE DATOS datosejemFACS.txt #EL ARCHIVO TIENE EL NOMBRE DE LAS SERIES EN LA PRIMERA FILA datos=read.table(file.choose(),header=T) #CREAR MATRIZ DE SERIES datos datos=ts(datos,freq=1) #Extrayendo series Z1t y Z3t Z1t=datos[,2] #es un AR(1) Z3t=datos[,4] #es un ARMA(1,1) #Simulando un MA(1) MA1.sim=arima.sim(list(order=c(0,0,1),ma=0.67),n=100) #Graficando las tres series nf=layout(rbind(c(1,1,2,2),c(0,3,3,0))) plot(Z1t);plot(Z3t);plot(MA1.sim) #Graficando las ACF y PACF de las tres series nf=layout(rbind(c(1,2),c(3,4),c(5,6))) 214 CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Obtención de EACF’s muestrales eacf(Z1t) eacf(Z3t) eacf(MA1.sim) 7 acf(Z1t,ci.type="ma",lag.max=25) pacf(Z1t,lag.max=25) acf(Z3t,ci.type="ma",lag.max=25) pacf(Z3t,lag.max=25) acf(MA1.sim,ci.type="ma",lag.max=25) pacf(MA1.sim,lag.max=25) #Identificación y ajuste automático para serie Z1t ajusteZ1t=auto.arima(Z1t,ic="bic") summary(ajusteZ1t) #Gráfico de residuales y ACF, PACF modelo ajustado a serie Z1t nf=layout(rbind(c(0,1,1,0),c(2,2,3,3))) plot(residuals(ajusteZ1t)) abline(h=0,col=2) acf(residuals(ajusteZ1t),ci.type="ma",lag.max=25) pacf(residuals(ajusteZ1t),lag.max=25) #Identificación y ajuste automático para serie Z3t ajusteZ3t=auto.arima(Z3t,ic="bic") summary(ajusteZ3t) #Gráfico de residuales y ACF, PACF modelo ajustado a serie Z3t nf=layout(rbind(c(0,1,1,0),c(2,2,3,3))) plot(residuals(ajusteZ3t)) abline(h=0,col=2) acf(residuals(ajusteZ3t),ci.type="ma",lag.max=25) pacf(residuals(ajusteZ3t),lag.max=25) #Identificación y ajuste automático para serie MA1.sim ajusteMA1.sim=auto.arima(MA1.sim,ic="bic") summary(ajusteMA1.sim) #Gráfico de residuales y ACF, PACF modelo ajustado a serie MA1.sim nf=layout(rbind(c(0,1,1,0),c(2,2,3,3))) plot(residuals(ajusteMA1.sim)) abline(h=0,col=2) acf(residuals(ajusteMA1.sim),ci.type="ma",lag.max=25) pacf(residuals(ajusteMA1.sim),lag.max=25) ES #Graficando las tres series y sus pronósticos nf=layout(rbind(c(0,1,1,0),c(2,2,3,3))) plot(forecast(ajusteZ1t,h=5)) plot(forecast(ajusteZ3t,h=5)) plot(forecast(ajusteMA1.sim,h=5)) Las Figuras 7.15 y 7.16 ilustran las series Z 1t , Z3t y MA1.sim y sus funciones de autocorrelación y autocorrelación parcial muestrales ¿Qué tipo de proceso podemos especificar para cada una? 7.8. EJEMPLOS 7 0 Z3t −2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 −2 −1 0 Z1t 1 2 2 3 4 215 0 20 40 60 80 100 0 20 40 60 80 100 Time 0 −2 −1 MA1.sim 1 2 3 Time 0 20 40 60 80 100 Time Figura 7.15: Series Z1t , Z3t y MA1.sim, simuladas Series Z1t 0.6 −0.2 10 15 20 25 5 Series Z3t Series Z3t 20 25 20 25 20 25 −0.6 −0.2 Partial ACF 0.2 −0.2 10 15 20 25 5 10 15 Lag Series MA1.sim Series MA1.sim 0.4 Lag Partial ACF 0.2 −0.2 −0.2 0.0 0.2 ACF −0.6 5 ACF 15 Lag 0.4 ES 10 Lag 0.2 5 5 10 15 Lag Figura 7.16: 0.2 Partial ACF 0.2 −0.2 ACF 0.6 Series Z1t 20 25 5 10 15 Lag ACF’s y PACF’s muestrales de las Series Z1t , Z3t y MA1.sim, simuladas CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 216 0 x o x x x x o x Tabla 7.4: EACF muestral, Serie Z1t 1 2 3 4 5 6 7 8 9 10 x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o o o o o o o o o o o o o o o o x o o o o o o o o o x o o o o o o o o o x o o x o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o AR/MA 0 1 2 3 4 5 6 7 0 x x x x x x x o Tabla 7.5: EACF muestral, Serie Z3t 1 2 3 4 5 6 7 8 9 10 x o o o o o o o o o x o o o o o o o o o x o o o o o o o o o o x o o o o o o o o x o o o o o o o o o o o o o x o o o o o x x x o x o o o o o o x o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AR/MA 0 1 2 3 4 5 6 7 7 Considere ahora las EACF muestrales. De acuerdo a éstas, ¿qué tipo de proceso se identifica para cada serie? ¿coinciden con los modelos identificados en la ACF y PACF? AR/MA 0 1 2 3 4 5 6 7 Tabla 7.6: EACF muestral, 0 1 2 3 4 5 6 7 x o o o o o o o x o o o o o o o x x x o o o o o x x o o o o o o o x o o o o o o o x o o o o o o x x o o o o o o x x o o o o o o Serie MA1.sim 8 o o o o o o o o 9 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o A continuación se exhiben los resultados R de los ajustes automáticos para las series Z1t , Z3t y MA1.sim. Las Figuras 7.17, 7.18 y 7.19 muestran los residuales respectivos y sus ACF y PACF muestrales. La Figura 7.20 presenta las series más sus pronósticos. ¿Qué modelos son identificados y ajustados por el método automático y cómo resultan los ajustes (evaluación de residuales)? 7.8. EJEMPLOS 217 Salida R 7.2. summary(ajusteZ1t) Series: Z1t ARIMA(1,0,0) with zero mean TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Coefficients: ar1 0.7420 s.e. 0.0663 sigmaˆ2 estimated as 1.098: log likelihood = -146.98 AIC = 297.95 AICc = 298.08 BIC = 303.16 In-sample error measures: ME RMSE 0.06086727 1.04793888 MAE MPE MAPE 0.82549189 -36.84375141 219.34814508 MASE 0.89982692 summary(ajusteZ3t) Series: Z3t ARIMA(1,0,1) with zero mean Coefficients: ar1 -0.3537 s.e. 0.1130 ma1 -0.5875 0.0905 sigmaˆ2 estimated as 1.109: log likelihood = -147.52 AIC = 301.04 AICc = 301.29 BIC = 308.85 In-sample error measures: ME RMSE MAE MPE MAPE -0.1050398 1.0529324 0.8312345 -55.6478947 308.2121756 MASE 0.3713694 summary(ajusteMA1.sim) Series: MA1.sim ARIMA(0,0,1) with zero mean Coefficients: ma1 0.7474 s.e. 0.0831 ES sigmaˆ2 estimated as 1.116: log likelihood = -147.78 AIC = 299.56 AICc = 299.69 BIC = 304.77 In-sample error measures: ME RMSE 0.06831956 1.05631518 MAE 0.85781607 MPE MAPE 85.68407876 146.18878431 MASE 0.82785503 CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 7 1 0 −1 −2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(ajusteZ1t) 2 3 218 0 20 40 60 80 100 Time Series residuals(ajusteZ1t) −0.2 −0.2 −0.1 0.0 Partial ACF 0.0 −0.1 ACF 0.1 0.1 0.2 0.2 Series residuals(ajusteZ1t) 5 10 15 20 25 5 10 Lag 20 25 Residuales del modelo ajustado para Z1t , y su ACF y PACF muestrales 1 0 −1 −3 −2 residuals(ajusteZ3t) 2 Figura 7.17: 15 Lag 0 20 40 60 80 100 ES Time Series residuals(ajusteZ3t) −0.1 −0.2 −0.2 5 10 15 Lag Figura 7.18: 0.0 Partial ACF 0.0 −0.1 ACF 0.1 0.1 0.2 0.2 Series residuals(ajusteZ3t) 20 25 5 10 15 20 25 Lag Residuales del modelo ajustado para Z3t , y su ACF y PACF muestrales 7.8. EJEMPLOS 1 0 −1 −2 residuals(ajusteMA1.sim) 2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 219 0 20 40 60 80 100 Time Series residuals(ajusteMA1.sim) −0.1 −0.2 −0.2 5 10 15 Lag 20 25 5 10 15 20 25 Lag Residuales del modelo ajustado para MA1.sim, y su ACF y PACF muestrales ES Figura 7.19: 0.0 Partial ACF 0.0 −0.1 ACF 0.1 0.1 0.2 0.2 Series residuals(ajusteMA1.sim) CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 220 −3 −2 −1 0 1 2 3 Forecasts from ARIMA(1,0,0) with zero mean 0 20 40 80 100 Forecasts from ARIMA(0,0,1) with zero mean ES −2 −2 −1 0 0 1 2 2 3 4 Forecasts from ARIMA(1,0,1) with zero mean 60 Figura 7.20: 0 20 40 60 80 100 0 20 40 60 80 100 Series Z1t , Z3t y MA1.sim y sus pronósticos para h = 5 perı́odos futuros 7.9. ESTIMACIÓN POR MÁXIMA VEROSIMILITUD EN MODELOS ARMA 221 7.9. Estimación por máxima verosimilitud en modelos ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Ya fue mencionado previamente que la estimación en modelos ARMA requiere de métodos de estimación no lineal, en particular, bajo el supuesto at ∼ RBN(0, σa2 ), podemos recurrir a la estimación por máxima verosimilitud: Sean μ = E[Zt ], σa2 , Φ = (φ1 , . . . , φp ) y Θ = (θ1 , . . . , θq ), el conjunto de parámetros desconocidos del modelo. Bajo el supuesto de normalidad para a t , tenemos que la función de densidad conjunta de a 1 , a2 , . . . , an es " ! n 1 1 (7.37) exp − 2 a2t f (a1 , . . . , an ) = n/2 n (2π) σa 2σa t=1 donde at = Z̃t − φ1 Z̃t−1 − · · · − φp Z̃t−p − θ1 at−1 − · · · − θq at−q , y Z̃t = Zt − μ. La verosimilitud de los parámetros dado las observaciones es L = L(μ, σa2 , Φ, Θ) f (a1 , . . . , an ) 1 1 2 2 L(μ, σa , Φ, Θ) = n exp − 2 S(μ, σa , Φ, Θ) σa 2σa donde S(μ, σa2 , Φ, Θ) = n t=1 (7.38) a2t . Los estimadores de máxima verosimilitud son tales que L es máxima o bien, l(μ, σ a2 , Φ, Θ) = log(L) es máxima, lo cual resulta cuando S(μ, σa2 , Φ, Θ) es mı́nimo. Al substituir t = 1, . . . , n en la expresión de S(μ, σa2 , Φ, Θ), usando at = Zt − φ1 Zt−1 − · · · − φp Zt−p − θ1 at−1 − · · · − θq at−q , tendremos la necesidad de conocer los valores a 0 , a−1 , . . . , a1−q y Z0 , Z−1 , . . . , Z1−p , es decir, valores antes del primer tiempo. Tenemos tres alternativas 1. Inicializar aj = 0 para j ≤ 0 y Zj = Z̄ = 1 n n Zt , para j ≤ 0 t=1 ES 2. Definir S(μ, σa2, Φ, Θ) sólo para t dónde todos los valores a t y Zt son conocidos. 3. Utilizar toda la información desde t = −M a t = n, donde a j y Zj , j = −M, . . . , 0 son obtenidos mediante backasting (pronóstico hacia atrás), con M tal que |E [Z−M |Z1 , . . . , Zn ] − E [Z−M −1 |Z1 , . . . , Zn ] | < . Las dos primeras alternativas conducen a estimadores de máxima verosimilitud o de mı́nimos cuadrados condicionales, mientras que la tercera conduce a estimadores de máxima verosimilitud o mı́nimos cuadrados incondicionales. 7.10. Pronósticos en modelos ARMA estacionarios e invertibles Considere un proceso ARMA(p,q) estacionario e invertible, y de media cero (si la media no es cero, considere en lugar de Z t a Z̃t = Zt − μ). Entonces CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 222 podemos escribir Zt = Θq (B) at = Ψ(B)at = Φp (B) ∞ ∞ ψj at−j con ψ0 = 1, j=0 ψj2 < ∞ (7.39) j=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Suponga que se conoce los valores de la serie para t = 1, . . . , n, luego, Z j , j = n + 1, n + 2, . . . , n + l, . . . son valores futuros desconocidos. Queremos conocer el pronóstico para t = n + l, es decir, queremos pronosticar la variable aleatoria Zn+l , ∞ Zn+l = ψj an+l−j (7.40) j=0 Sea Ẑn (l) = Ẑn+l el pronóstico para t = n + l con origen en t = n, tal que ∞ ∗ ∗ ∗ ψl+j an−j = ψl∗ an + ψl+1 an−1 + ψl+2 an−2 + · · · Ẑn (l) = (7.41) j=0 ∗ tales que el error cuadrático medio de pronóstico El objetivo es hallar los ψ l+j sea mı́nimo, es decir, que minimicen a # $ ECMP = E e2n (l) , donde en (l) = Zn+l − Ẑn (l) (7.42) en (l) es el error de pronóstico l perı́odos adelante de t = n. Con algo de aritmética, podemos escribir ∞ en (l) = ∞ ψj an+l−j − j=0 ∗ ψl+j an−j ∞ l−1 = j=0 ψj an+l−j + j=0 ∗ (ψl+j − ψl+j )an−j (7.43) j=0 ∗ = y de la última igualdad puede mostrarse que ECMP es mı́nimo cuando ψ l+j ψl+j , por tanto, el pronóstico óptimo es ∞ Ẑn (l) = ψl+j an−j = ψl an + ψl+1 an−1 + ψl+2 an−2 + · · · (7.44) ES j=0 Por otra parte, podemos mostrar que ∞ E [Zn+l |Zn , Zn−1 , . . .] = ψl+j an−j = Ẑn (l) (7.45) j=0 es decir, el pronóstico óptimo es igual al valor esperado condicional del valor futuro Zn+l dada la historia de la serie. NOTA: Tener en cuenta que 0 ân (l−j) = E [an+l−j |Zn , Zn−1, . . .] = an+l−j si l ≥ j + 1 (aquı́ n + l − j > n) (7.46) si l ≤ j (aquı́ n + l − j ≤ n) 7.10. PRONÓSTICOS EN MODELOS ARMA ESTACIONARIOS E INVERTIBLES223 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 donde ân (l − j) es el pronóstico óptimo para a n+l−j con origen en t = n, y Ẑn (l − j) si l ≥ j + 1 (aquı́ n + l − j > n) Ẑn (l − j) = E [Zn+l−j |Zn , Zn−1, . . .] = Zn+l−j si l ≤ j (aquı́ n + l − j ≤ n) (7.47) Observe que para periodos posteriores a n el pronóstico óptimo para a t es cero. El valor esperado del error de pronóstico es cero: " ! l−1 % & E [en (l)] = E Zn+l − Ẑn (l) = E ψj an+l−j = 0 (7.48) j=0 por tanto, Ẑn (l) = ∞ ψl+j an−j es un estimador insesgado del valor futuro Z n+l , j=0 lo cual es una caracterı́stica deseable. Respecto a la varianza del error de pronóstico, se tiene que " ! l−1 l−1 ψj an+l−j = σa2 VAR [en (l)] = VAR j=0 ψj2 (7.49) j=0 Por tanto bajo el supuesto de normalidad se tiene que un intervalo de predicción del (1 − α)100 % para el valor futuro Z n+l es l−1 ψj2 (7.50) Ẑn (l) ± zα/2 σa j=0 ES donde zα/2 es el cuantil (1 − α/2) de la distribución normal estándar. Sin embargo, los parámetros del modelo son desconocidos, incluyendo a σ a y como los ψj son función de los vectores de parámetros Φ y Θ, entonces también son desconocidos y deben ser estimados a través de las estimaciones de estos dos vectores de parámetros, luego, en la práctica, para n grande se tiene que un intervalo de predicción aproximado es l−1 Ẑn (l) ± zα/2 σ̂a ψ̂j2 (7.51) j=0 Cómo pronosticar en la pr áctica: Considere Zn+l = φ1 Zn+l−1 + φ2 Zn+l−2 + · · · + φp Zn+l−p + an+l + θ1 an+l−1 + θ2 an+l−2 + · · · + θq an+l−q (7.52) usando esta expresión y definiendo los pronósticos óptimos como Ẑn (l) = E [Zn+l |Z1 , . . . , Zn ], ân (l) = E [an+l |Z1, . . . , Zn ] y utilizando los valores estimados para los parámetros, tenemos que Ẑn (l) = φ̂1 Ẑn (l − 1) + φ̂2 Ẑn (l − 2) + · · · + φ̂p Ẑn (l − p) CAPÍTULO 7. INTRODUCCI ÓN A LOS MODELOS ARMA 224 + ân (l) + θ̂1 ân (l − 1) + θ̂2 ân (l − 2) + · · · + θ̂q ân (l − q) (7.53) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Zt = φ1 Zt−1 + at + θ1 at−1 7 donde debemos tener en cuenta lo establecido en las ecuaciones (7.46) y (7.47) para ân (l − j), j = 1, . . . , q y Ẑn (l − k), k = 1, . . . , p, respectivamente. Por ejemplo, sea Zt un ARMA(1,1), es decir y suponga que se tiene una serie de tamaño n = 200 de este proceso con la cual se obtiene las siguiente estimaciones, φ̂1 = 0.777 y θ̂1 = 0.377, entonces para pronosticar el valor futuro dos perı́odos adelante de t = 200, tenemos que calcular Ẑ200 (2) = 0.777Ẑ200 (1) + â200 (2) + 0.377â200 (1) = 0.777Ẑ200 (1) pues â200 (1) = â200 (2) = 0, de acuerdo a la ecuación (7.46), y Ẑ200 (1) = 0.777Ẑ200 (0) + â200 (1) + 0.377â200 (0) = 0.777Z200 + 0.3777a200 la última igualdad se deriva de las ecuaciones (7.46) y (7.47). Pero como a t realmente es una variable no observable, en su lugar usamos los residuales â t . Suponga que Z200 = −2.586 y â200 = −1.666 entonces, reemplazando en la última ecuación, se obtiene Ẑ200 (1) = −2.637404 y finalmente, reemplazamos este valor en la ecuación para Ẑ200 (2) obtenemos Ẑ200 (2) = 0.777 × (−2.637404) = −2.049263. NOTAS: ES 1. En general para un ARMA(p,q), a partir de l > q los pronósticos Ẑn (l) sólo dependen de los últimos p pronósticos Ẑn (j), y en particular, cuando el proceso es un MA(q) éste no es pronosticable más de q pasos adelante de t = n, pues toda la dinámica del proceso que se aprovecha para pronosticar se desvanece cuando se llega al horizonte de longitud q, lo cual es un reflejo del comportamiento de la ACF del MA(q): ésta se hace cero para k > q. 2. En modelos AR(p) y ARMA(p,q), para l > p los nuevos pronósticos usan pronósticos previos de Z t , esto implica que se cometerá más error en pronósticos con horizonte más allá de p. 3. Lo anterior implica que no es recomendable en general, pronósticos de largo plazo en los modelos ARMA. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 8 Modelación de una serie con errores ARMA En este Capı́tulo veremos, mediante dos ejemplos, cómo se integra en la modelación por regresión lineal y no lineal, las componentes de tendencia, estacionalidad determinı́sticas y los ciclos ARMA identificados para los errores estructurales del modelo. Para el modelo lineal la estructura general en este caso es como se indica a seguir, Yt = Tt + St + Et , con Φp (B)Et = Θq (B)at , at ∼ RB N(0, σa2 ), (8.1) donde Φp (B) = 1 − φ1 B − φ2 B 2 − · · · − φp B p y Θq (B) = 1 + θ1 B + θ2 B 2 + · · · + θq B q son los polinomios autorregresivos y de medias móviles, respectivamente, tales que sus raı́ces son de módulo mayor a 1, es decir, el proceso ARMA(p,q) para Et es un proceso estacionario, invertible y de media cero, además tales polinomios se asumen sin factores en común. Respecto a modelos no lineales, consideraremos especı́ficamente el caso con estructura exponencial, es decir Yt = exp(Tt + St ) + Et , con Φp (B)Et = Θq (B)at , at ∼ RB N(0, σa2 ), (8.2) ES Este es un modelo parcialmente multiplicativo. Si se considera que en su lugar deberı́a ajustarse un modelo completamente multiplicativo, entonces la ecuación (8.1) serı́a aplicada a log(Y t ) en vez de Yt . Considere la serie de producción trimestral de cemento portland una serie estacional multiplicativa que va desde trimestre 1 de 1956 a trimestre 3 de 1994, presentada en la Figura 8.1. 8.1. Modelo inicial: Tendencia, estacionalidad y errores R.B 8.1.1. Ajuste y pron óstico Inicialmente vamos a considerar un modelo de regresión global con tendencia cúbica y estacionalidad trimestral determinı́stica con indicadoras, para el logaritmo de la serie para ser ajustado con los primeros n = 151 observaciones 225 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 226 Log de producción trimestral cemento portland Miles de ton. Q11956−Q31994 500 6.5 1000 yt TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 log(yt) 7.0 7 1500 7.5 2000 Producción trimestral cemento portland Miles de ton. Q11956−Q31994 1960 1970 1980 1990 1960 Time 1970 1980 1990 Time Figura 8.1: Izq.: Serie de producción trimestral de cemento portland (miles de toneladas) y Der.: su logaritmo (en total son N = 155 observaciones), Modelo 1: Modelo Log-cúbico estacional: 3 2 3 δi Ii,t + Et , Et ∼ N(0, σ 2 ) iid Modelo 1: log(Yt ) = β0 + β1 t + β2 t + β3 t + (8.3) i=1 El ajuste con R produce la siguiente tabla de parámetros ajustados: ES Tabla 8.1: Parámetros ajustados en modelo Log-cúbico estacional Parámetro Estimación Error Estándar T0 P (|t144 | > |T0 |) β0 6.2508 0.0249 251.3447 0.0000 β1 0.0199 0.0013 15.3924 0.0000 β2 -1.2897×10−4 0.0000 -6.5427 0.0000 β3 3.1684×10−7 0.0000 3.7161 0.0003 δ1 -0.1317 0.0157 -8.3657 0.0000 δ2 -0.0185 0.0157 -1.1772 0.2410 0.0145 0.0157 0.9188 0.3597 √ δ3 M SE = 0.06813, *Crit. de inf.: AIC = −373.9363, BIC = −349.7981 *Medidas de AIC y BIC en escala logarı́tmica Con estos resultados se pronostican los siguientes m = 4 periodos (t =152 a 155) # Ŷ151 (L) ≈ exp 6.2508 + 0.0199(151 + L) − 1.2897 × 10−4 (151 + L)2 + 3.1684 × 10−7 (151 + L)3 (0.06813)2 −0.1317I1,151+L − 0.0185I2,151+L + 0.0145I3,151+L] × exp 2 8.1. MODELO INICIAL: TENDENCIA, ESTACIONALIDAD Y ERRORES R.B227 Miles de ton. Lim. Sup 1903.976 1674.671 1881.594 1951.411 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Tabla 8.2: Pronósticos Modelo Log-cúbico estacional Perı́odo L real pronóstico Lim. Inf 1993 Q4 1 1777 1649.702 1429.387 1994 Q1 2 1468 1450.015 1255.496 1994 Q2 3 1732 1628.089 1408.739 1994 Q3 4 1962 1687.280 1458.900 7 L = 1, · · · , m. Los pronósticos que se obtienen y sus intervalos de predicción del 95 % son presentados en la Tabla 8.2 y la precisión de los pronósticos en la Tabla 8.3. En la Figura 8.3 se aprecia la serie real, ajustada y pronosticada según el modelo Log-cúbico estacional. Tabla 8.3: Precisión pronósticos Modelo Log-cúbico estacional ME RMSE MAE MPE MAPE 130.98 160.31 130.98 7.10 7.10 Original Ajustada Pronósticos 500 1000 yt 1500 2000 Serie real, ajustes y pronósticos Modelo Log cúbico estacional 1960 1970 1980 1990 Time Figura 8.2: Serie real, ajustada y pronósticos para la validación cruzada, modelo Log-cúbico estacional ES En la Figura 8.3 se aprecian los gráficos de residuales obtenidos del ajuste t ), donde en escala logarı́tmica, es decir Êt vs. t y Êt vs. log(Y # Êt = log(Yt ) − 6.2508 + 0.0199t − 1.2897 × 10−4 t2 + 3.1684 × 10−7 t3 −0.1317I1,t − 0.0185I2,t + 0.0145I3,t] Es clara la presencia de ciclos ası́ como problemas de varianza hacia el final de la serie de residuales (o posiblemente presencia de observaciones extremas en ese intervalo causen la apariencia de varianza no constante). 8.1.2. Análisis e identificaci ón de ciclos en los errores estructurales E t El análisis de los residuales del modelo ajustado nos llevan a concluir que los errores no son ruido blanco (¿por qué?), sin embargo, son estacionarios en covarianza (¿por qué?). Los posibles modelos que se identifican son 228 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA Del análisis de ACF - PACF: Un AR(6) ¿por qué?; Del análisis de la EACF: ARMA(1,5), ARMA (2,4) ¿por qué?; TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Con la función auto.arima() de la librerı́a forecast aplicada sobre el vector de valores de los residuales (sin convertirlos en objeto ts()) se identifica un ARMA(2,2) y sobre la serie de tiempo de los residuales (residuales convertidos en objeto ts()) se obtiene un arma estacional estacionario ARMA(1,2)×(0, 1) [4]; 0.1 0.2 100 150 6.2 6.4 6.6 6.8 7.0 t fitted(modelo1) ACF modelo1 PACF modelo1 0.8 7.2 7.4 30 35 −0.4 −0.2 −0.2 0.0 0.2 Partial ACF 0.4 0.6 0.6 0.4 0.2 0.0 ACF 0.0 residuals(modelo1) −0.2 50 0.8 0 ES −0.1 0.1 0.0 −0.1 −0.2 residuals(modelo1) 0.2 Con la función armasubsets() de la librerı́a TSA se identifica un ARMA(6,7) (con parámetros φ j , j = 1, 3, 4, 5, y θi , i = 1, 2, . . . , 6, fijos en cero), ARMA(7,10) (con parámetros φ j , j = 2, 3, 4, 5, 6, y θi , i = 1, 2, . . . , 7, 9, fijos en cero). Sin embargo, en las secciones siguientes se trabajará sobre versiones modificadas de estos dos modelos, modificaciones que fueron establecidas luego de ajustar la serie de logaritmo con las componentes estructurales y los ciclos arma respectivos y verificar que no se obtenı́an errores de ajuste at satisfaciendo el supuesto de ruido blanco. 0 5 10 15 20 Lag 25 30 35 0 5 10 15 20 25 Lag Figura 8.3: Residuales estructurales Êt modelo log-cúbico estacional y ACF y PACF muestrales 8.1. MODELO INICIAL: TENDENCIA, ESTACIONALIDAD Y ERRORES R.B229 1 x x x x x x x o x o x x x o o o o o o 2 x o o o x x o o o o o x x x o o o o x 3 x x x x x x o o o o o o x x o o o o o 4 o x o o o o o o o o o x o o o o o o o Tabla 8.4: EACF para Êt , 5 6 7 8 9 10 o o x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o x o o o o o modelo 1 11 12 x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o 13 o o o o o o o o o o o o o o o o o o o 14 o o o o o o o o o o o o o o o o o o o 15 o o o o o o o o o o o o o o o o o o o 16 o o o o o o o o o o o o o o o o o o o 17 o o o o o o o o o o o o o o o o o o o 18 o o o o o o o o o o o o o o o o o o o 7 0 x x x o o x x x x x x x x o x x x x o TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AR/MA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Tabla 8.5: Test Ljung-Box para Et , modelo 1 m QLB gl P (χ2m > QLB ) 6 231.11 6.00 0.00 12 282.84 12.00 0.00 18 292.75 18.00 0.00 24 330.85 24.00 0.00 30 349.64 30.00 0.00 36 393.11 36.00 0.00 ES Tabla 8.6: Test Durbin-Watson de orden 1 para Et , modelo 1 H1 : ρ(1) > 0 H1 : ρ(1) < 0 k ρ̂(1) Estadı́stico d1 P (DW1 < d1 ) P (DW1 > d1 ) 1 0.7892629 0.4212927 0.00 1 Tabla 8.7: Identificación con auto.arima() sobre Êt en el modelo 1 ARMA(2,2) φ1 φ2 θ1 θ2 Estimación 0.1043 0.5094 0.6338 0.2569 s.e 0.1316 0.1228 0.1399 0.1109 AIC = −544.72, BIC − 529.63 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 230 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.8: Identificación con auto.arima() sobre Êt en el modelo 1, convertido a serie de tiempo ARMA(1,2)×(0, 1)[4] φ1 θ1 θ2 Θ1 Estimación 0.5935 0.1047 0.3875 0.3713 s.e 0.1163 0.1259 0.1074 0.0841 AIC = −552.75, BIC = −537.66 El modelo en la Tabla anterior es un modelo ARMA estacional en el cual las observaciones sucesivas tienen una estructura ARMA(1,2), mientras que las observaciones separadas 4 perı́odos en el tiempo, tienen una estructura ARMA(0, 1)[4] y cuya representación teórica es (1 − φ1 B)Et = (1 + θ1 B + θ2 B 2 )(1 + Θ1 B 4 )at , at ∼ R.BN(0, σa2 ). Este tipo de modelos será visto al final del curso. Observe que la anterior ecuación es equivalente a (1 − φ1 B)Et = (1 + θ1 B + θ2 B 2 + Θ1 B 4 + θ1 Θ1 B 5 + θ2 Θ1 B 6 )at (Intercept) AR−lag1 AR−lag2 AR−lag3 AR−lag4 AR−lag5 AR−lag6 AR−lag7 AR−lag8 AR−lag9 AR−lag10 AR−lag11 AR−lag12 error−lag7 error−lag8 error−lag9 error−lag10 error−lag11 error−lag12 error−lag1 error−lag2 error−lag3 error−lag4 error−lag5 error−lag6 es decir, a un ARMA(1,6): (1−φ 1 B)Et = (1+ θ̃1 B+ θ̃2 B 2 + θ̃3 B 3 + θ̃4 B 4 + θ̃5 B 5 + θ̃6 B 6 )at , con θ̃1 = θ1 , θ̃2 = θ2 , θ̃3 = 0, θ̃4 = Θ1 , θ̃5 = θ1 Θ1 y θ̃6 = θ2 Θ1 . −140 −140 −140 BIC −130 −130 ES −130 −120 −120 −120 Figura 8.4: Resultado de la función armasubsets sobre Êt en modelo log-cúbico estacional A continuación se presentan las gráficas de las ACF’s y PACF’s esperadas para Et obtenidas con la función R ARMAacf(), bajo cada uno de los modelos anteriores (excepto para el SARMA en Tabla 8.8), usando en su construcción los valores estimados de los parámetros φ j y θi , cuando estos modelos son ajustados usando sólo la serie de los Êt resultantes del ajuste del modelo 1. 8.1. MODELO INICIAL: TENDENCIA, ESTACIONALIDAD Y ERRORES R.B231 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Los valores de tales parámetros estimados se observan en las tablas 8.7, 8.9 a 8.13. Para los modelos ARMA(6,7) y ARMA(7,10), las gráficas en la Figura 7 no corresponden a los modelos inicialmente identificados en el armasubsets, sino a la versión modificada de estos, buscando el cumplimiento de ruido blanco en los modelos sobre log(Y t ), como se especifican, respectivamente, en las tablas 8.12 y 8.13 ¿Cuál caso es más próximo al comportamiento observado en la ACF y PACF muestrales exhibidas en la Figura 8.3? Estimación s.e Tabla 8.9: Ajuste AR(6) sobre Êt en el modelo 1 φ1 φ2 φ3 φ4 φ5 0.6555 0.3246 -0.2722 0.2468 -0.0573 0.0785 0.0947 0.0975 0.0967 0.0953 Tabla 8.10: Ajuste ARMA(1,5) sobre Êt en el modelo 1 φ1 θ1 θ2 θ3 θ4 Estimación 0.5522 0.1215 0.4349 0.0860 0.3881 s.e 0.1503 0.1556 0.1094 0.1250 0.0825 Tabla 8.11: Ajuste ARMA(2,4) sobre Êt en el modelo 1 φ1 φ2 θ1 θ2 θ3 Estimación 1.0111 -0.3287 -0.3303 0.4541 -0.0760 s.e 0.2087 0.1758 0.1938 0.1047 0.1013 φ6 -0.2301 0.0788 θ5 0.1622 0.1066 θ4 0.4087 0.0817 ES Tabla 8.12: Ajuste ARMA(6,7) sobre Êt en el modelo 1. Este es la modificación del ARMA(6,7) identificado con armasubsets() φ1 φ2 φ3 φ6 θ7 Estimación 0.6131 0.4073 -0.1655 -0.1573 -0.1101 s.e 0.0790 0.0893 0.0836 0.0554 0.0900 Tabla 8.13: Ajuste ARMA(7,10) sobre Êt en el modelo 1. Este es la modificación del ARMA(7,10) identificado con armasubsets() φ1 φ7 θ1 θ2 θ4 θ8 θ10 Estimación 0.3716 -0.1414 0.7969 0.8755 0.9065 -0.2450 -0.1328 s.e 0.0901 0.0922 0.1476 0.1690 0.1272 0.1145 0.1523 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 232 1 ARMA(2,2)−teórico ARMA(2,2)−teórico φkk ρ(k) 1 0 0 0 5 10 15 20 25 30 35 0 5 10 15 k 25 30 35 k 1 AR(6)−teórico φkk AR(6)−teórico ES ρ(k) 1 20 0 0 0 5 10 15 20 25 30 35 0 5 10 15 k Figura 8.5: ACF’s y PACF’s teóricas de modelos ARMA identificados para E t 20 k 25 30 35 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 8.1. MODELO INICIAL: TENDENCIA, ESTACIONALIDAD Y ERRORES R.B233 1 ARMA(2,4)−teórico ARMA(2,4)−teórico φkk ρ(k) 1 0 0 0 5 10 15 20 25 30 35 0 5 10 15 k 25 30 35 k 1 ARMA(1,5)−teórico φkk ARMA(1,5)−teórico ES ρ(k) 1 20 0 0 0 5 10 15 20 25 30 35 0 5 10 15 k Figura 8.6: ACF’s y PACF’s teóricas de modelos ARMA identificados para E t 20 k 25 30 35 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 234 1 ARMA(6,7)−teórico ARMA(6,7)−teórico φkk ρ(k) 1 0 0 0 5 10 15 20 25 30 35 0 5 10 15 k 25 30 35 k 1 ARMA(7,10)−teórico φkk ARMA(7,10)−teórico ES ρ(k) 1 20 0 0 0 5 10 15 20 25 30 35 0 5 10 15 k Figura 8.7: ACF’s y PACF’s teóricas de modelos ARMA identificados para E t 20 k 25 30 35 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 235 8.2. Modelos de tendencia, estacionalidad más ciclos ARMA 8.2.1. Ciclos AR(6) 3 Modelo 2: log(Yt ) = β0 + β1 t + β2 t + β3 t + δi Ii,t + Et , TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 i=1 7 3 2 6 φj Et−j + at , at ∼ RBN(0, σa2 ) (8.4) Et = j=1 Ajuste y pronósticos Tabla 8.14: Tabla parámetros estimados Modelo 2 Parámetros Estimación s.e Valor T 0 * P (|t138 | > |T0 |)** φ1 0.6546 0.0784 8.3540 0.0000 φ2 0.3243 0.0938 3.4584 0.0007 φ3 -0.2713 0.0950 -2.8550 0.0050 φ4 0.2492 0.0908 2.7431 0.0069 φ5 -0.0580 0.0935 -0.6200 0.5363 φ6 -0.2338 0.0635 -3.6808 0.0003 β0 6.2367 0.0376 166.0218 0.0000 β1 0.0207 0.0021 9.7253 0.0000 β2 -1.4136×10−4 0.0001 -1.5743 0.1177 β3 3.7062×10−7 0.0000 0.7249 0.4698 δ1 -0.1307 0.0078 -16.8537 0.0000 δ2 -0.0180 0.0069 -2.6036 0.0102 δ3 0.0146 0.0077 1.9102 0.0582 AIC = −541.94, BIC = −499.7, σ̂a2 = 0.001327, df = 138 *Calculado manualmente, T0 = Estimacion/s.e **Calculado manualmente, P (|t138 | > |T0 |) = P (t138 > |T0 |) + P (t138 < −|T0 |) La ecuación de los pronósticos en escala original es ES # Ŷ151 (L) ≈ exp 6.2367 + 0.0207(151 + L) − 1.4136 × 10−4 (151 + L)2 + 3.7062 × 10−7 (151 + L)3 & −0.1307I1,151+L − 0.0180I2,151+L + 0.0146I3,151+L + Ê151 (L) × exp (0.001327/2) donde Ê151 (L) = 0.6546Ê151 (L − 1) + 0.3243Ê151 (L − 2) − 0.2713Ê151 (L − 3) + 0.2492Ê151 (L − 4) − 0.0580Ê151 (L − 5) − 0.2338Ê151 (L − 6) Tabla 8.15: Predicciones Modelo 2, Perı́odo Predicción Lim.Inf 1993 Q4 1637.388 1524.544 1994 Q1 1485.637 1364.104 1994 Q2 1665.394 1505.609 1994 Q3 1729.147 1555.993 IP 95 % Lim.Sup 1758.584 1617.997 1842.136 1921.569 236 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 2000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.16: Precisión pronósticos Modelo 2 ME RMSE MAE MPE MAPE 105.36 140.05 114.18 5.59 6.19 500 1000 yt 1500 Original ajustado pronosticado 1960 1970 1980 1990 Time Figura 8.8: Serie real, ajustada y pronósticos Modelo 2 6.6 6.8 7.0 7.2 7.4 1960 1970 1980 fitted(modelo2) Time ACF modelo2 PACF modelo2 1990 0.05 Partial ACF −0.15 −0.05 0.15 0.05 −0.05 −0.15 ACF 0.05 −0.10 6.4 0.15 6.2 ES 0.00 resid.ajust2 0.05 0.00 −0.10 resid.ajust2 0.10 Residuales vs. tiempo modelo2 0.10 Residuales vs. ajustados modelo2 0 5 10 15 20 Lag 25 30 35 0 5 10 15 20 25 30 Lag Figura 8.9: Residuales ât Modelo 2 y su ACF y PACF muestrales 35 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 237 7 −0.10 −0.05 0.00 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Sample Quantiles 0.05 0.10 Gráfico Normal Residuales Modelo 2 −2 −1 0 1 2 Theoretical Quantiles Figura 8.10: Gráfico Normalidad de ât Modelo 2 Tabla 8.17: Test de Estadı́stico W Valor P Test normalidad para at en Modelo 2 0.9862 0.1378 Shapiro-Wilk normality test 8.2.2. Ciclos ARMA(2,2) 3 2 3 Modelo 3: log(Yt ) = β0 + β1 t + β2 t + β3 t + δi Ii,t + Et , i=1 2 Et = 2 θk at−k , at ∼ RBN(0, σa2 ) (8.5) φj Et−j + at + j=1 k=1 ES Ajuste y pronósticos Tabla 8.18: Tabla parámetros estimados Modelo 3 Parámetros Estimación s.e Valor T 0 * P (|t140 | > |T0 |)** φ1 0.1045 0.1312 0.7962 0.4273 φ2 0.5093 0.1226 4.1533 0.0001 θ1 0.6336 0.1397 4.5346 0.0000 θ2 0.2572 0.1108 2.3204 0.0218 β0 6.2526 0.0479 130.4447 0.0000 β1 0.0197 0.0017 11.3715 0.0000 β2 -1.2489×10−4 0.0001 -1.4794 0.1413 β3 2.9638×10−7 0.0000 0.4999 0.6180 δ1 -0.1312 0.0077 -17.0662 0.0000 δ2 -0.0181 0.0057 -3.1631 0.0019 δ3 0.0152 0.0077 1.9811 0.0495 AIC = −530.75, BIC = −494.54, σ̂a2 = 0.001473, df = 140 *Calculado manualmente, T0 = Estimacion/s.e **Calculado manualmente, P (|t140 | > |T0 |) = P (t140 > |T0 |) + P (t140 < −|T0 |) 238 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA La ecuación de los pronósticos en escala original es 7 # Ŷ151 (L) ≈ exp 6.2526 + 0.0197(151 + L) − 1.2489 × 10−4 (151 + L)2 + 2.9638 × 10−7 (151 + L)3 & −0.1312I1,151+L − 0.0181I2,151+L + 0.0152I3,151+L + Ê151 (L) × exp (0.001473/2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 donde Ê151 (L) = 0.1045Ê151 (L − 1) + 0.5093Ê151 (L − 2) + 0.6336â151 (L − 1) + 0.2572â151 (L − 2) Tabla 8.19: Predicciones Modelo 3, Perı́odo Predicción Lim.Inf 1993 Q4 1601.677 1485.618 1994 Q1 1430.268 1302.612 1994 Q2 1594.970 1424.557 1994 Q3 1664.929 1479.227 IP 95 % Lim.Sup 1726.803 1570.435 1785.767 1873.944 Original ajustado pronosticado ES 500 1000 yt 1500 2000 Tabla 8.20: Precisión pronósticos Modelo 3 ME RMSE MAE MPE MAPE 161.79 186.54 161.79 8.87 8.87 1960 1970 1980 1990 Time Figura 8.11: Serie real, ajustada y pronósticos Modelo 3 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 239 0.05 7 0.00 resid.ajust3 0.05 0.00 −0.10 −0.10 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 resid.ajust3 0.10 Residuales vs. tiempo modelo3 0.10 Residuales vs. ajustados modelo3 6.4 6.6 6.8 7.0 7.2 7.4 1960 1980 Time ACF modelo3 PACF modelo3 Partial ACF 0.05 0.15 1990 −0.2 −0.15 −0.05 0.1 0.0 −0.1 ACF 1970 fitted(modelo3) 0.2 6.2 0 5 10 15 20 25 30 35 0 5 10 Lag 15 20 25 30 Lag Figura 8.12: Residuales ât Modelo 3 y su ACF y PACF muestrales 0.00 −0.05 −0.10 ES Sample Quantiles 0.05 0.10 Gráfico Normal Residuales Modelo 3 −2 −1 0 1 2 Theoretical Quantiles Figura 8.13: Gráfico Normalidad de ât Modelo 3 35 240 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA normalidad para at en Modelo 3 0.9907 0.4258 Shapiro-Wilk normality test 7 Tabla 8.21: Test de Estadı́stico W Valor P Test TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 8.2.3. Ciclos ARMA(1,5) 3 2 3 Modelo 4: log(Yt ) = β0 + β1 t + β2 t + β3 t + δi Ii,t + Et , i=1 5 θk at−k , at ∼ RBN(0, σa2 ) (8.6) Et = φ1 Et−1 + at + k=1 Ajuste y pronósticos Tabla 8.22: Tabla parámetros estimados Modelo 4 Parámetros Estimación s.e Valor T 0 * P (|t138 | > |T0 |)** φ1 0.5509 0.1502 3.6666 0.0003 θ1 0.1228 0.1557 0.7888 0.4316 θ2 0.4361 0.1086 4.0143 0.0001 θ3 0.0869 0.1250 0.6950 0.4882 θ4 0.3890 0.0818 4.7556 0.0000 θ5 0.1633 0.1065 1.5333 0.1275 β0 6.2444 0.0471 132.6452 0.0000 β1 0.0201 0.0017 11.4934 0.0000 β2 -1.2997×10−4 0.0001 -1.5477 0.1240 β3 3.1521×10−7 0.0000 0.5334 0.5946 δ1 -0.1307 0.0076 -17.1882 0.0000 δ2 -0.0178 0.0072 -2.4684 0.0148 δ3 0.0150 0.0076 1.9780 0.0499 AIC = −538.65, BIC = −496.41, σ̂a2 = 0.001357, df = 138 *Calculado manualmente, T0 = Estimacion/s.e **Calculado manualmente, P (|t138 | > |T0 |) = P (t138 > |T0 |) + P (t138 < −|T0 |) ES La ecuación de los pronósticos en escala original es # Ŷ151 (L) ≈ exp 6.2444 + 0.0201(151 + L) − 1.2997 × 10−4 (151 + L)2 + 3.1521 × 10−7 (151 + L)3 & −0.1307I1,151+L − 0.0178I2,151+L + 0.0150I3,151+L + Ê151 (L) × exp (0.001357/2) donde Ê151 (L) = 0.5509Ê151 (L − 1) + 0.1228â151 (L − 1) + 0.4361â151 (L − 2) + 0.0869â151 (L − 3) + 0.3890â151 (L − 4) + 0.1633â151 (L − 5) 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 241 Tabla 8.23: Predicciones Modelo 4, Perı́odo Predicción Lim.Inf 1993 Q4 1604.400 1492.640 1994 Q1 1434.798 1315.165 1994 Q2 1599.942 1440.794 1994 Q3 1645.541 1471.802 IP 95 % Lim.Sup 1724.529 1565.315 1776.668 1839.789 2000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.24: Precisión pronósticos Modelo 4 ME RMSE MAE MPE MAPE 163.58 192.66 163.58 8.93 8.93 500 1000 yt 1500 Original ajustado pronosticado 1960 1970 1980 1990 Time Figura 8.14: Serie real, ajustada y pronósticos Modelo 4 0.05 −0.10 6.4 6.6 6.8 7.0 7.2 7.4 1960 1970 1980 fitted(modelo4) Time ACF modelo4 PACF modelo4 1990 0.05 Partial ACF −0.05 −0.15 −0.15 −0.05 0.05 0.15 0.15 ES 6.2 ACF 0.00 resid.ajust4 0.05 0.00 −0.10 resid.ajust4 0.10 Residuales vs. tiempo modelo4 0.10 Residuales vs. ajustados modelo4 0 5 10 15 20 Lag 25 30 35 0 5 10 15 20 25 30 Lag Figura 8.15: Residuales ât Modelo 4 y su ACF y PACF muestrales 35 242 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 7 0.00 −0.10 −0.05 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Sample Quantiles 0.05 0.10 Gráfico Normal Residuales Modelo 4 −2 −1 0 1 2 Theoretical Quantiles Figura 8.16: Gráfico Normalidad de ât Modelo 4 Tabla 8.25: Test de Estadı́stico W Valor P Test normalidad para at en Modelo 4 0.9842 0.08086 Shapiro-Wilk normality test 8.2.4. Ciclos ARMA(2,4) 3 2 3 modelo 5: log(Yt ) = β0 + β1 t + β2 t + β3 t + δi Ii,t + Et , i=1 2 Et = 4 θk at−k , at ∼ RBN(0, σa2 ) (8.7) φj Et−j + at + j=1 k=1 ES Ajuste y pronósticos Tabla 8.26: Tabla parámetros estimados Modelo 5 Parámetros Estimación s.e Valor T 0 * P (|t138 | > |T0 |)** φ1 1.0112 0.2084 4.8526 0.0000 φ2 -0.3289 0.1754 -1.8751 0.0629 θ1 -0.3304 0.1934 -1.7086 0.0898 θ2 0.4546 0.1037 4.3820 0.0000 θ3 -0.0764 0.1008 -0.7575 0.4501 θ4 0.4094 0.0808 5.0643 0.0000 β0 6.2447 0.0449 139.1408 0.0000 β1 0.0201 0.0017 11.7441 0.0000 β2 -1.2995×10−4 0.0001 -1.5474 0.1241 β3 3.1540×10−7 0.0000 0.5384 0.5912 δ1 -0.1308 0.0076 -17.2161 0.0000 δ2 -0.0179 0.0069 -2.6013 0.0103 δ3 0.0150 0.0075 1.9853 0.0491 AIC = −539.19, BIC = −496.95, σ̂a2 = 0.001353, df = 138 *Calculado manualmente, T0 = Estimacion/s.e **Calculado manualmente, P (|t138 | > |T0 |) = P (t138 > |T0 |) + P (t138 < −|T0 |) 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 243 La ecuación de los pronósticos en escala original es 7 # Ŷ151 (L) ≈ exp 6.2447 + 0.0201(151 + L) − 1.2995 × 10−4 (151 + L)2 + 3.1540 × 10−7 (151 + L)3 & −0.1308I1,151+L − 0.0179I2,151+L + 0.0150I3,151+L + Ê151 (L) × exp (0.001353/2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 donde Ê151 (L) = 1.0112Ê151 (L − 1) − 0.3289Ê151 (L − 2) − 0.3304â151 (L − 1) + 0.4546â151 (L − 2) − 0.0764â151 (L − 3) + 0.4094â151 (L − 4) Tabla 8.27: Predicciones Modelo 5, Perı́odo Predicción Lim.Inf 1993 Q4 1604.766 1493.163 1994 Q1 1436.462 1316.513 1994 Q2 1598.198 1438.752 1994 Q3 1647.789 1473.705 IP 95 % Lim.Sup 1724.710 1567.340 1775.314 1842.437 Original ajustado pronosticado 500 1000 yt 1500 ES 2000 Tabla 8.28: Precisión pronósticos Modelo 5 ME RMSE MAE MPE MAPE 162.95 191.89 162.95 8.90 8.90 1960 1970 1980 1990 Time Figura 8.17: Serie real, ajustada y pronósticos Modelo 5 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 0.05 0.00 resid.ajust5 0.05 0.00 −0.10 −0.10 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 resid.ajust5 0.10 Residuales vs. tiempo modelo5 0.10 Residuales vs. ajustados modelo5 7 244 6.4 6.6 6.8 7.0 7.2 7.4 1960 1980 fitted(modelo5) Time ACF modelo5 PACF modelo5 1990 0.05 Partial ACF −0.15 −0.05 0.15 0.05 −0.05 −0.15 ACF 1970 0.15 6.2 0 5 10 15 20 25 30 35 0 5 10 Lag 15 20 25 30 Lag Figura 8.18: Residuales ât Modelo 5 y su ACF y PACF muestrales 0.00 −0.10 ES −0.05 Sample Quantiles 0.05 0.10 Gráfico Normal Residuales Modelo 5 −2 −1 0 1 2 Theoretical Quantiles Figura 8.19: Gráfico Normalidad de ât Modelo 5 Tabla 8.29: Test de Estadı́stico W Valor P Test normalidad para at en Modelo 5 0.984 0.0774 Shapiro-Wilk normality test 35 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 245 8.2.5. Ciclos ARMA(6,7) Modelo 6i: Primero se ajustó con los ciclos indicados en el primer modelo 3 identificado en la Figura 8.4, es decir, log(Y t ) = β0 + β1 t + β2 t2 + β3 t3 + δi Ii,t + Et , i=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Et = φ2 Et−2 + φ6Et−6 + at + θ7 at−7 , at ∼ RBN(0, σa2 ). Los residuales ât , ACF y PACF muestrales de estos residuales se muestran en la Figura 8.20, donde es claro que el supuesto de ruido blanco para a t no es válido. Ası́ que se procedió a modificar los ciclos en este modelo como se especifica a continuación. 3 Modelo 6: log(Yt ) = β0 + β1 t + β2 t2 + β3 t3 + δi Ii,t + Et , i=1 Et = φ1 Et−1 + φ2 Et−2 + φ3 Et−3 + φ6 Et−6 + at + θ7 at−7 , at ∼ RBN(0, σa2 ). (8.8) Ajuste y pronósticos ES Tabla 8.30: Tabla parámetros estimados Modelo 6 Parámetros Estimación s.e Valor T 0 * P (|t139 | > |T0 |)** φ1 0.6118 0.0789 7.7550 0.0000 φ2 0.4077 0.0892 4.5701 0.0000 φ3 -0.1635 0.0802 -2.0376 0.0435 φ6 -0.1606 0.0347 -4.6225 0.0000 θ7 -0.1137 0.0839 -1.3564 0.1772 β0 6.2373 0.0377 165.5413 0.0000 β1 0.0207 0.0021 9.7483 0.0000 β2 -1.4116×10−4 0.0001 -1.5702 0.1186 β3 3.6964×10−7 0.0000 0.7164 0.4750 δ1 -0.1312 0.0070 -18.8185 0.0000 δ2 -0.0183 0.0059 -3.1196 0.0022 δ3 0.0144 0.0069 2.0894 0.0385 AIC = −538.96, BIC = −475.6, σ̂a2 = 0.001373, df = 139 *Calculado manualmente, T0 = Estimacion/s.e **Calculado manualmente, P (|t139 | > |T0 |) = P (t139 > |T0 |) + P (t139 < −|T0 |) CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 0.05 resid.ajust6i −0.05 −0.05 0.05 Residuales vs. tiempo modelo6i −0.15 −0.15 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 resid.ajust6i Residuales vs. ajustados modelo6i 7 246 6.4 6.6 6.8 7.0 7.2 7.4 1960 1980 fitted(modelo6i) Time ACF modelo6i PACF modelo6i 1990 −0.2 0.2 −0.2 0.0 Partial ACF 0.4 0.2 0.0 ACF 1970 0.4 6.2 0 5 10 15 20 25 30 35 0 5 Lag 10 15 20 25 30 35 Lag Figura 8.20: Residuales ât del ajuste con errores ARMA(6,7), con φj , j = 1, 3, 4, 5, y θi , i = 1, 2, . . . , 6, fijos en cero, y su ACF y PACF muestrales La ecuación de los pronósticos del modelo 6 en escala original es # Ŷ151 (L) ≈ exp 6.2373 + 0.0207(151 + L) − 1.4116 × 10−4 (151 + L)2 + 3.6964 × 10−7 (151 + L)3 & −0.1312I1,151+L − 0.0183I2,151+L + 0.0144I3,151+L + Ê151 (L) × exp (0.001373/2) donde ES Ê151 (L) = 0.6118Ê151 (L − 1) + 0.4077Ê151 (L − 2) − 0.1635Ê151 (L − 3) − 0.1606Ê151 (L − 6) − 0.1137â151 (L − 7) Tabla 8.31: Predicciones Modelo 6, Perı́odo Predicción Lim.Inf 1993 Q4 1644.559 1529.368 1994 Q1 1464.141 1344.657 1994 Q2 1655.941 1494.869 1994 Q3 1717.747 1538.461 IP 95 % Lim.Sup 1768.426 1594.241 1834.368 1917.925 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 247 2000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.32: Precisión pronósticos Modelo 6 ME RMSE MAE MPE MAPE 114.15 144.05 114.15 6.14 6.14 500 1000 yt 1500 Original ajustado pronosticado 1960 1970 1980 1990 Time Figura 8.21: Serie real, ajustada y pronósticos Modelo 6 0.05 −0.10 6.4 6.6 6.8 7.0 7.2 7.4 1960 1970 1980 fitted(modelo6) Time ACF modelo6 PACF modelo6 1990 0.05 Partial ACF −0.05 −0.15 −0.15 −0.05 0.05 0.15 0.15 ES 6.2 ACF 0.00 resid.ajust6 0.05 0.00 −0.10 resid.ajust6 0.10 Residuales vs. tiempo modelo6 0.10 Residuales vs. ajustados modelo6 0 5 10 15 20 Lag 25 30 35 0 5 10 15 20 25 30 Lag Figura 8.22: Residuales ât Modelo 6 y su ACF y PAF muestrales 35 248 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 7 −0.10 −0.05 0.00 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Sample Quantiles 0.05 0.10 Gráfico Normal Residuales Modelo 6 −2 −1 0 1 2 Theoretical Quantiles Figura 8.23: Gráfico Normalidad de ât Modelo 6 Tabla 8.33: Test de Estadı́stico W Valor P Test normalidad para at en Modelo 6 0.9903 0.3862 Shapiro-Wilk normality test 8.2.6. Ciclos ARMA(7,10) Modelo 7i: Primero se ajustó con los ciclos indicados en el segundo modelo 3 δi Ii,t + Et , Et = de la Figura 8.4, es decir, log(Y t ) = β0 + β1 t + β2 t2 + β3 t3 + i=1 φ1 Et−1 + φ7 Et−7 + at + θ8 at−8 + θ10 at−10 , at ∼ RBN(0, σa2 ). Los residuales ât , ACF y PACF muestrales de estos residuales se muestran en la Figura 8.24, donde es claro que el supuesto de ruido blanco para a t no es válido. Ası́ que se procedió a modificar los ciclos de este modelo como se especifica a continuación. 3 2 3 ES Modelo 7: log(Yt ) = β0 + β1 t + β2 t + β3 t + δi Ii,t + Et , i=1 Et = φ1 Et−1 +φ7 Et−7 +at +θ1 at−1 +θ2 at−2 +θ4 at−4 +θ8 at−8 +θ10 at−10 , at ∼ RBN(0, σa2 ). (8.9) Ajuste y pronósticos La ecuación de los pronósticos del modelo 7 en escala original es # Ŷ151 (L) ≈ exp 6.2444 + 0.0202(151 + L) − 1.32999 × 10−4 (151 + L)2 + 3.3228 × 10−7 (151 + L)3 & −0.1309I1,151+L − 0.0182I2,151+L + 0.0149I3,151+L + Ê151 (L) × exp (0.0006892/2) 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 249 7 0.00 resid.ajust7i 0.00 −0.10 −0.10 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 resid.ajust7i 0.10 Residuales vs. tiempo modelo7i 0.10 Residuales vs. ajustados modelo7i 6.2 6.4 6.6 6.8 7.0 7.2 7.4 1960 1980 Time ACF modelo7i PACF modelo7i 1990 0.1 −0.2 −0.2 −0.1 0.0 0.1 Partial ACF 0.2 0.2 fitted(modelo7i) 0.0 ACF 1970 0 5 10 15 20 Lag 25 30 35 0 5 10 15 20 25 30 35 Lag ES Figura 8.24: Residuales ât del ajuste con errores ARMA(7,10), con φj , j = 2, 3, 4, 5, 6, y θi , i = 1, 2, . . . , 7, 9, fijos en cero, y su ACF y PACF muestrales Tabla 8.34: Tabla parámetros estimados Modelo 7 Parámetros Estimación s.e Valor T 0 * P (|t137 | > |T0 |)** φ1 0.3712 0.0876 4.2400 0.0000 φ7 -0.1427 0.0647 -2.2062 0.0290 θ1 0.7968 0.1398 5.7012 0.0000 θ2 0.8750 0.1686 5.1888 0.0000 θ4 0.9068 0.1273 7.1249 0.0000 θ8 -0.2446 0.1140 -2.1456 0.0337 θ10 -0.1352 0.1209 -1.1180 0.2655 β0 6.2444 0.0368 169.7221 0.0000 β1 0.0202 0.0021 9.6756 0.0000 β2 -1.32999×10−4 0.0001 -1.4904 0.1384 β3 3.3228×10−7 0.0000 0.6385 0.5242 δ1 -0.1309 0.0073 -17.9633 0.0000 δ2 -0.0182 0.0066 -2.7795 0.0062 δ3 0.0149 0.0072 2.0671 0.0406 AIC = −534.05, BIC = −458.62, σ̂a2 = 0.0006892, df = 137 *Calculado manualmente, T0 = Estimacion/s.e **Calculado manualmente, P (|t137 | > |T0 |) = P (t137 > |T0 |) + P (t137 < −|T0 |) donde Ê151 (L) = 0.3712Ê151 (L − 1) − 0.1427Ê151 (L − 7) + 0.7968â151 (L − 1) + 0.8750â151 (L − 2) + 0.9068â151 (L − 4) − 0.2446â151 (L − 8) − 0.1352â151 (L − 10) 250 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA Tabla 8.35: Predicciones Modelo 7, Perı́odo Predicción Lim.Inf 1993 Q4 1612.564 1499.348 1994 Q1 1452.297 1328.975 1994 Q2 1606.601 1444.398 1994 Q3 1676.599 1497.718 IP 95 % Lim.Sup 1734.329 1587.062 1787.019 1876.845 2000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.36: Precisión pronósticos Modelo 7 ME RMSE MAE MPE MAPE 147.73 176.40 147.73 8.03 8.03 500 1000 yt 1500 Original ajustado pronosticado 1960 1970 1980 1990 Time Figura 8.25: Serie real, ajustada y pronósticos Modelo 7 6.4 6.6 6.8 7.0 7.2 7.4 1960 1980 fitted(modelo7) Time ACF modelo7 PACF modelo7 1990 0.05 Partial ACF −0.15 −0.05 0.15 0.05 −0.05 −0.15 ACF 1970 0.15 6.2 ES 0.00 resid.ajust7 −0.05 0.00 −0.05 resid.ajust7 0.05 Residuales vs. tiempo modelo7 0.05 Residuales vs. ajustados modelo7 0 5 10 15 20 Lag 25 30 35 0 5 10 15 20 25 30 35 Lag Figura 8.26: Residuales ât Modelo 7 y su ACF y PAF muestrales 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 251 7 −0.05 0.00 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Sample Quantiles 0.05 Gráfico Normal Residuales Modelo 7 −2 −1 0 1 2 Theoretical Quantiles Figura 8.27: Gráfico Normalidad de ât Modelo 7 Tabla 8.37: Test de Estadı́stico W Valor P Test normalidad para at en Modelo 7 0.9851 0.1050 Shapiro-Wilk normality test 8.2.7. Ciclos ARMA(1, 2) × (0, 1) [4] 2 3 3 Modelo 8: log(Yt ) = β0 + β1 t + β2 t + β3 t + δi Ii,t + Et , i=1 (1 − φ1 B)Et = (1 + θ1 B + θ2 B 2 )(1 + Θ1 B 4 )at , at ∼ RBN(0, σa2 ). (8.10) ES Ajuste y pronósticos Tabla 8.38: Tabla parámetros estimados Modelo 8 Parámetros Estimación s.e Valor T 0 * P (|t140 | > |T0 |)** φ1 0.5933 0.1163 5.1014 0.0000 θ1 0.1050 0.1260 0.8334 0.4060 θ2 0.3879 0.1065 3.6410 0.0004 Θ1 0.3716 0.0838 4.4346 0.0000 β0 6.2484 0.0485 128.8175 0.0000 β1 0.0199 0.0017 11.3867 0.0000 β2 -1.2828×10−4 0.0001 -1.5338 0.1273 β3 3.1041×10−7 0.0000 0.5227 0.6020 δ1 -0.1309 0.0081 -16.2576 0.0000 δ2 -0.0183 0.0063 -2.8894 0.0045 δ3 0.0151 0.0080 1.8867 0.0613 AIC = −538.77, BIC = −502.56, σ̂a2 = 0.001394, df = 140 *Calculado manualmente, T0 = Estimacion/s.e **Calculado manualmente, P (|t140 | > |T0 |) = P (t140 > |T0 |) + P (t140 < −|T0 |) La ecuación de los pronósticos del modelo 8 en escala original es 252 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA # Ŷ151 (L) ≈ exp 6.2484 + 0.0199(151 + L) − 1.2828 × 10−4 (151 + L)2 + 3.1041 × 10−7 (151 + L)3 & −0.1309I1,151+L − 0.0183I2,151+L + 0.0151I3,151+L + Ê151 (L) × exp (0.001394/2) 7 donde TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Ê151 (L) = 0.5933Ê151 (L − 1) + 0.1050â151 (L − 1) +0.3879â151 (L−2)+0.3716â151 (L−4)+(0.1050 × 0.3716) â151 (L−5)+(0.3879 × 0.3716) â151 (L−6) Tabla 8.39: Predicciones Modelo 8, Perı́odo Predicción Lim.Inf 1993 Q4 1607.602 1494.156 1994 Q1 1449.555 1325.774 1994 Q2 1597.950 1436.036 1994 Q3 1670.786 1493.204 IP 95 % Lim.Sup 1729.662 1584.892 1778.121 1869.488 Original ajustado pronosticado 500 ES 1000 yt 1500 2000 Tabla 8.40: Precisión pronósticos Modelo 8 ME RMSE MAE MPE MAPE 153.28 181.53 153.28 8.34 8.34 1960 1970 1980 1990 Time Figura 8.28: Serie real, ajustada y pronósticos Modelo 8 8.2. MODELOS DE TENDENCIA, ESTACIONALIDAD M ÁS CICLOS ARMA 253 0.05 7 0.00 resid.ajust8 0.05 0.00 −0.10 −0.10 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 resid.ajust8 0.10 Residuales vs. tiempo modelo8 0.10 Residuales vs. ajustados modelo8 6.4 6.6 6.8 7.0 7.2 7.4 1960 1970 1980 fitted(modelo8) Time ACF modelo8 PACF modelo8 1990 0.05 Partial ACF −0.15 −0.05 0.0 −0.1 ACF 0.1 0.15 6.2 0 5 10 15 20 25 30 35 0 5 10 Lag 15 20 25 30 Lag Figura 8.29: Residuales ât Modelo 8 y su ACF y PAF muestrales 0.00 −0.10 ES −0.05 Sample Quantiles 0.05 0.10 Gráfico Normal Residuales Modelo 8 −2 −1 0 1 2 Theoretical Quantiles Figura 8.30: Gráfico Normalidad de ât Modelo 8 Tabla 8.41: Test de Estadı́stico W Valor P Test normalidad para at en Modelo 8 0.9902 0.378 Shapiro-Wilk normality test 35 254 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 8.3. Selección del mejor modelo TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 La escogencia del mejor modelo debe realizarse entre modelos válidos, es decir, donde se verifican los supuestos sobre los cuales se construye el modelo, y considerando la calidad del ajuste y de los pronósticos en la validación cruzada. Es necesario también que los modelos sean útiles, es decir, que su pronósticos sean mejores que los del pronóstico simple: MAPE modelo < MSIMP. Para el caso, los pronósticos con el método simple de pronóstico son Ŷ151 (L) = Y151+L , L = 1, · · · , 4, o bien, Ŷ151+j (1) = Y151+j+1 , j = 0, 1, · · · , 3 Tabla 8.42: Pronósticos método simple Perı́odo L j valor real pronóstico simple 1993 Q4 1 0 1777.00 1648.00 1994 Q1 2 1 1468.00 1777.00 1994 Q2 3 2 1732.00 1468.00 1994 Q3 4 3 1962.00 1732.00 para lo cual se obtiene el MSIMP = 13.81842 (este es el MAPE de método simple de pronóstico). Los pronósticos para L perı́odos adelante de t = n en los modelos de componentes aditivas y con ciclos ARMA se calculan como (Pronóstico)n+L = (Pronóstico estructura) n+L + (Pronóstico errores ARMA) n+L donde el pronóstico de la estructura es (Pronóstico estructura) n+L = T̂n+L + Ŝn+L ES es decir, tendencia más estacionalidad estimadas para t = n + L. Los pronósticos para los errores ARMA(p,q) son de acuerdo a lo visto en la Sección 7.10 de las notas de clase: Ên (L) = φ̂1 Ên (L − 1) + φ̂2 Ên (L − 2) + · · · + φ̂p Ên (L − p) + θ̂1 ân (L − 1) + θ̂2 ân (L − 2) + · · · + θ̂q ân (L − q) NOTA: Si la serie es de componentes multiplicativas y se ajustada el logaritmo de la serie por regresión con errores ARMA, producimos primero los valores ajustados y los pronósticos en la escala logarı́tmica y luego llevamos a la escala original exponenciando estos valores y multiplicando por factor de corrección calculado como exp(σ̂a2 /2). Respecto al ajuste, los residuales de ajuste â t son calculados y examinados en la escala logarı́tmica, pues es en esa escala en la cual se ajustan los modelos. 8.4. CÓDIGO R USADO 7 Tabla 8.43: Comparación de los 8 modelos DF AIC BIC MAPE VÁLIDO 144 -373.94 -349.80 7.10 No 138 -541.94 -499.70 6.19 Sı́ 140 -530.75 -494.54 8.87 No 138 -538.65 -496.41 8.93 No (no normalidad) 138 -539.19 -496.95 8.90 No (no normalidad) 139 -538.96 -475.6 6.14 Sı́ 137 -534.05 -458.62 8.03 Sı́ 140 -538.77 -502.56 8.34 Sı́ 1700 Serie Original Pronóstico Modelo 1 Pronóstico Modelo 2 Pronóstico Modelo 3 Pronóstico Modelo 4 Pronóstico Modelo 5 Pronóstico Modelo 6 Pronóstico Modelo 7 Pronóstico Modelo 8 1500 1600 Producción 1800 1900 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 MODELO 1 2 3 4 5 6 7 8 255 1993.Q4 1994.Q1 1994.Q2 1994.Q3 Time Figura 8.31: Valores reales y pronosticados con los ocho modelos (Miles de toneladas) ¿Cuál modelo seleccionar para ajuste y pronóstico? ¿Por qué?. 8.4. Código R usado ES A continuación se da el código R usado para obtener los resultados presentados. Tenga en cuenta que los valores de grados de libertad usados en cada caso corresponde al número de datos usados en los ajustes menos el total de parámetros estimados incluyendo intercepto y parámetros del modelo ARMA ajustado a los errores. Código R 8.1. Cargando librerı́as y definiendo funciones de usuario library(forecast) library(TSA) library(car) #Definiendo función para evaluar test Ljung-Box BP.LB.test=function(serie,maxlag,type="Ljung"){ aux=floor(maxlag/6); CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } 7 256 #Definiendo función para evaluar test Durbin-Watson pruebaDW1=function(modelo){ dwneg=durbinWatsonTest(modelo,max.lag=1,method="normal",alternative="negative") dwpos=durbinWatsonTest(modelo,max.lag=1,method="normal",alternative="positive") res=data.frame(1,dwneg$r,dwneg$dw,dwpos$p,dwneg$p) names(res)=c("lag","rho estimado","Estadı́stico D-W","VP rho>0","VP rho<0") res } Código R 8.2. Lectura de los datos, gráficas descriptivas, definición de variables para ajuste y pronósticos ES #LECTURA DE LOS DATOS yt=scan() 465 532 561 570 529 604 603 582 554 620 646 637 573 673 690 681 621 698 753 728 688 737 782 692 637 757 783 757 674 734 835 838 797 904 949 975 902 974 969 967 849 961 966 922 836 998 1025 971 892 973 1047 1017 948 1032 1190 1136 1049 1134 1229 1188 1058 1209 1199 1253 1070 1282 1303 1281 1148 1305 1342 1452 1184 1352 1316 1353 1121 1297 1318 1281 1109 1299 1341 1290 1101 1284 1321 1317 1122 1261 1312 1298 1202 1302 1377 1359 1232 1386 1440 1439 1282 1573 1533 1651 1347 1575 1475 1357 1086 1158 1279 1313 1166 1373 1456 1496 1251 1456 1631 1554 1347 1516 1546 1564 1333 1458 1499 1613 1416 1625 1770 1791 1622 1719 1972 1893 1575 1644 1658 1668 1343 1441 1444 1497 1267 1501 1538 1569 1450 1569 1648 1777 1468 1732 1962 yt=ts(yt,frequency=4,start=c(1956,1)) lnyt=log(yt) #GRAFICANDO SERIE ORIGINAL Y SU LOGARITMO NATURAL plot(yt,main="Producción trimestral cemento portland\nMiles de ton. Q11956-Q31994") plot(lnyt,main="Log de producción trimestral cemento portland\nMiles de ton. Q11956-Q31994") #Valores de la serie y predictores para los ajustes m=4 #No. Obs para validación cruzada n=length(yt)-m yt2=ts(yt[1:n],frequency=4,start=c(1956,1)) lnyt2=log(yt2) #DEFINIENDO INDICE DE TIEMPO t=1:length(lnyt2) t2=tˆ2 Y SU CUADRADO, E INDICADORAS, PARA LAS PRIMERAS n=151 OBSERVACIONES 8.4. CÓDIGO R USADO 257 t3=tˆ3 trimestre=seasonaldummy(lnyt2) Q1=trimestre[,1];Q2=trimestre[,2];Q3=trimestre[,3] X=cbind(t,t2,t3,trimestre) #Esta matriz de los predictores será usada con función Arima() o arima() TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 #Estos son los valores de los predictores para las predicciones tnuevo=152:155 t2nuevo=tnuevoˆ2 t3nuevo=tnuevoˆ3 trimestrenuevo=seasonaldummyf(lnyt2,h=4) Xnuevo=cbind(t=tnuevo,t2=t2nuevo,t3=t3nuevo,trimestre=trimestrenuevo) #se usa en función forecast ytf=ts(yt[tnuevo],frequency=4,start=c(1993,4)) #Tomando de la serie completa los últimos m valores #que son pronosticados Código R 8.3. Ajuste del modelo 1, pronósticos y evaluación de supuesto de R.B sobre el error estructural E t #AJUSTANDO MODELO AL log(yt2) CON TENDENCIA CÚBICA Y ESTACIONALIDAD TRIMESTRAL modelo1=lm(lnyt2˜t+t2+t3+Q1+Q2+Q3) summary(modelo1) #Despliega resultados del modelo ajustado. Note que se ha #eliminado la indicadora de la estación 4 AIC(modelo1) BIC(modelo1) #Las predicciones se exponencian para obtener valores en escala original predic.modelo1=exp(predict(modelo1,newdata=data.frame(t=tnuevo,t2=t2nuevo,t3=t3nuevo, Q1=trimestrenuevo[,1],Q2=trimestrenuevo[,2],Q3=trimestrenuevo[,3]), level=0.95,interval="prediction"))*exp(summary(modelo1)$sigmaˆ2/2) predic.modelo1=ts(predic.modelo1,freq=4,start=c(1993,4)) #coviertiendo a serie de tiempo predicciones #y sus I.P predic.modelo1 ytpron1=predic.modelo1[,1] #Calidad de los pronósticos accuracy(ytpron1,ytf) #Graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original. #Serie de tiempo de valores ajustados en escala original. Se usa factor de corrección ythat1=ts(exp(fitted(modelo1))*exp(summary(modelo1)$sigmaˆ2/2),frequency=4,start=c(1956,1)) ES plot(yt,main="Serie real, ajustes y pronósticos\nModelo Log cúbico estacional") lines(ythat1,col=2) lines(ytpron1,col=4) legend("topleft",legend=c("Original","Ajustada","Pronósticos"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) #Evaluando testes Ljung-Box y Durbin Watson en residuales modelo 1 BP.LB.test(residuals(modelo1),maxlag=n/4,type="Ljung") pruebaDW1(modelo1) #Gráficas de residuales modelo 1, ACF, PACF y EACF nf=layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot(t,residuals(modelo1),type="o"); abline(h=0,lty=2) plot(fitted(modelo1),residuals(modelo1),type="p"); abline(h=0,lty=2) acf(residuals(modelo1),ci.type="ma",main="ACF modelo1",lag.max=36) pacf(residuals(modelo1),main="PACF modelo1",lag.max=36) eacf(residuals(modelo1),ar.max = 18, ma.max = 18) #EACF residuales estructurales 258 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA Código R 8.4. Identificación automática de modelos ARMA con funciones auto.arima( ) y armasubsets( ). Ajuste sobre los residuales estructurales del modelo 1, de los ciclos identificados, incluyendo los resultantes del análisis de la ACF y PACF, y de la EACF de los residuales estructurales. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Para los ciclos considerados en los modelos 6 y 7 tenga en cuenta el uso del argumento fixed en la función Arima(), donde para cada uno de los parámetros AR y MA, en ese orden, se indica en un vector c(), cuáles deben estimarse colocando un NA, y cuáles deben fijarse en 0, colocando tal número en la posición correspondiente dentro del vector especificado. Este vector debe tener p + q entradas en total. #GENERANDO GRÁFICO del armasubsets() plot(armasubsets(residuals(modelo1),nar=12,nma=12,y.name=’AR’,ar.method=’ml’)) #IDENTIFICACIÓN AUTOMÁTICA Y AJUSTE DE LOS CICLOS IDENTIFICADOS pruebaresAutom=auto.arima(residuals(modelo1)) pruebaresAutom #Lo siguiente puede arrojar un modelo ARMA estacional serie.et=ts(residuals(modelo1),freq=4,start=c(1956,1)) pruebaresAutom2=auto.arima(serie.et,ic="aic") pruebaresAutom2 pruebaresAR6=Arima(residuals(modelo1),order=c(6,0,0),include.mean=FALSE,method="ML") pruebaresAR6 pruebaresARMA15=Arima(residuals(modelo1),order=c(1,0,5),include.mean=FALSE,method="ML") pruebaresARMA15 pruebaresARMA24=Arima(residuals(modelo1),order=c(2,0,4),include.mean=FALSE,method="ML") pruebaresARMA24 #Ajustando sobre residuales estructurales, modificación del primer modelo arrojado por armasubsets() pruebaresARMA67=Arima(residuals(modelo1),order=c(6,0,7),fixed=c(NA,NA,NA,0,0,NA,rep(0,6),NA), include.mean=FALSE,method="ML") pruebaresARMA67 ES #Ajustando sobre residuales estructurales, modificación del segundo modelo arrojado por armasubsets() pruebaresARMA710=Arima(residuals(modelo1),order=c(7,0,10), fixed=c(c(NA,rep(0,5),NA),c(NA,NA,0,NA,rep(0,3),NA,0,NA)),include.mean=FALSE,method="ML") pruebaresARMA710 Código R 8.5. Construcción de las gráficas de las ACF y PACF esperadas para los errores estructurales del modelo 1, con base en las estimaciones de los ciclos hechas en el código anterior. #ACF’S Y PACF’S TEÓRICAS MODELOS CICLOS IDENTIFICADOS, EXCEPTO EL SARMA #PARÁMETROS AJUSTADOS parma2.2=coef(pruebaresAutom) par6=coef(pruebaresAR6) parma1.5=coef(pruebaresARMA15) parma2.4=coef(pruebaresARMA24) parma6.7=coef(pruebaresARMA67) parma7.10=coef(pruebaresARMA710) 8.4. CÓDIGO R USADO 259 #ARMA(2,2) AJUSTADO A RESIDUALES MODELO1 FAC=ARMAacf(ar = parma2.2[1:2], ma=parma2.2[3:4],lag.max = 36, pacf =FALSE) FACP=ARMAacf(ar = parma2.2[1:2], ma=parma2.2[3:4],lag.max = 36, pacf = TRUE) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 nf=layout(rbind(c(1,2),c(3,4))) plot(1:36,FAC[-1],type=’h’,col=2,yaxt="n",bty="l",ylab=expression(rho(k)),xlab="k",lwd=2,ylim=c(-0.2,1)) points(1:36,FAC[-1],cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(2,2)-teórico"),bty="n") plot(1:36,FACP,type=’h’,col=2,yaxt="n",bty="l",ylab=expression(phi[kk]),xlab="k",lwd=2,ylim=c(-0.3,1)) points(1:36,FACP,cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(2,2)-teórico"),bty="n") #AR(6) AJUSTADOS A RESIDUALES MODELO1 FAC=ARMAacf(ar=par6, lag.max = 36, pacf =FALSE) FACP=ARMAacf(ar =par6,lag.max = 36, pacf = TRUE) plot(1:36,FAC[-1],type=’h’,col=2,yaxt="n",bty="l",ylab=expression(rho(k)),xlab="k",lwd=2,ylim=c(-0.3,1)) points(1:36,FAC[-1],cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("AR(6)-teórico"),bty="n") plot(1:36,FACP,type=’h’,col=2,yaxt="n",bty="l",ylab=expression(phi[kk]),xlab="k",lwd=2,ylim=c(-0.3,1)) points(1:36,FACP,cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("AR(6)-teórico"),bty="n") nf=layout(rbind(c(1,2),c(3,4))) #ARMA(2,4) AJUSTADO A RESIDUALES MODELO1 FAC=ARMAacf(ar = parma2.4[1:2],ma=parma2.4[3:6], lag.max = 36, pacf =FALSE) FACP=ARMAacf(ar = parma2.4[1:2],ma=parma2.4[3:6],lag.max = 36, pacf = TRUE) plot(1:36,FAC[-1],type=’h’,col=2,yaxt="n",bty="l",ylab=expression(rho(k)),xlab="k",lwd=2,ylim=c(-0.2,1)) points(1:36,FAC[-1],cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(2,4)-teórico"),bty="n") ES plot(1:36,FACP,type=’h’,col=2,yaxt="n",bty="l",ylab=expression(phi[kk]),xlab="k",lwd=2,ylim=c(-0.3,1)) points(1:36,FACP,cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(2,4)-teórico"),bty="n") #ARMA(1,5) AJUSTADO A RESIDUALES MODELO1 FAC=ARMAacf(ar = parma1.5[1],ma=parma1.5[2:6], lag.max = 36, pacf =FALSE) FACP=ARMAacf(ar = parma1.5[1],ma=parma1.5[2:6],lag.max = 36, pacf = TRUE) plot(1:36,FAC[-1],type=’h’,col=2,yaxt="n",bty="l",ylab=expression(rho(k)),xlab="k",lwd=2,ylim=c(-0.2,1)) points(1:36,FAC[-1],cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(1,5)-teórico"),bty="n") plot(1:36,FACP,type=’h’,col=2,yaxt="n",bty="l",ylab=expression(phi[kk]),xlab="k",lwd=2,ylim=c(-0.3,1)) points(1:36,FACP,cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(1,5)-teórico"),bty="n") 260 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA nf=layout(rbind(c(1,2),c(3,4))) #ARMA(6,7) MODIFICADO SEGÚN MODELO 6, AJUSTADO A RESIDUALES MODELO1 FAC=ARMAacf(ar = parma6.7[1:6],ma=parma6.7[7:13], lag.max = 36, pacf =FALSE) FACP=ARMAacf(ar = parma6.7[1:6],ma=parma6.7[7:13],lag.max = 36, pacf = TRUE) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 plot(1:36,FAC[-1],type=’h’,col=2,yaxt="n",bty="l",ylab=expression(rho(k)),xlab="k",lwd=2,ylim=c(-0.3,1)) points(1:36,FAC[-1],cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(6,7)-teórico"),bty="n") plot(1:36,FACP,type=’h’,col=2,yaxt="n",bty="l",ylab=expression(phi[kk]),xlab="k",lwd=2,ylim=c(-0.35,1)) points(1:36,FACP,cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(6,7)-teórico"),bty="n") #ARMA(7,10) MODIFICADO SEGÚN MODELO 7 AJUSTADO A RESIDUALES MODELO1 FAC=ARMAacf(ar = parma7.10[1:7],ma=parma7.10[8:17], lag.max = 36, pacf =FALSE) FACP=ARMAacf(ar = parma7.10[1:7],ma=parma7.10[8:17],lag.max = 36, pacf = TRUE) plot(1:36,FAC[-1],type=’h’,col=2,yaxt="n",bty="l",ylab=expression(rho(k)),xlab="k",lwd=2,ylim=c(-0.3,1)) points(1:36,FAC[-1],cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(7,10)-teórico"),bty="n") plot(1:36,FACP,type=’h’,col=2,yaxt="n",bty="l",ylab=expression(phi[kk]),xlab="k",lwd=2,ylim=c(-0.35,1)) points(1:36,FACP,cex=1.2,pch=19,col=2) axis(2,c(-1,0,1),label=c(-1,0,1),las=2) abline(h=0) legend("topright",legend=c("ARMA(7,10)-teórico"),bty="n") ES En los siguientes códigos se presenta el ajuste y pronósticos de los modelos 2 a 8. Para la obtención del AIC y BIC no es necesario invocar las funciones R correspondientes, ya que estas medidas pueden leerse en la salida producida con la función summary() aplicada sobre los objetos que guardan los modelos ajustados. Observe que con summary() no se obtienen estadı́sticos ni valores P para las pruebas de la significancia individual de los parámetros, y por esta razón es necesario realizar los cálculos correspondientes para completar la información sobre las estimaciones del modelo. Vea en cada caso la construcción del objeto denominado tabla. Los grados de libertad df se calculan como la diferencia n − k, siendo n el tamaño de la muestra usada en los ajustes y k el total de parámetros de los modelos, que incluye tanto los parámetros estructurales de tendencia y estacionalidad como los de los ciclos ARMA considerados para los errores estructurales E t . Código R 8.6. Ajuste y pronósticos del modelo 2, con df=138 grados de libertad #Ajuste con errores AR(6) modelo2=Arima(lnyt2,order=c(6,0,0),xreg=X,method="ML") summary(modelo2) resid.ajust2=residuals(modelo2) #Completando información sobre valores T0 y valores P est=cbind(Estimación=modelo2$coef,s.e=sqrt(diag(modelo2$var.coef))) t0=est[,1]/est[,2] 8.4. CÓDIGO R USADO 261 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Gráficos para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo2),resid.ajust2,main="Residuales vs. ajustados modelo2") abline(h=0,lty=2) plot(resid.ajust2,main="Residuales vs. tiempo modelo2") abline(h=0,lty=2) acf(as.numeric(resid.ajust2),ci.type="ma",main="ACF modelo2",lag.max=36) pacf(as.numeric(resid.ajust2),main="PACF modelo2",lag.max=36) 7 vp=pt(abs(t0),df=138,lower.tail=FALSE)+pt(-abs(t0),df=138) tabla=cbind(est,t0,vp) #tabla completa de parámetros ajustados tabla #Examen normalidad residuales shapiro.test(resid.ajust2) qqnorm(resid.ajust2,main="Gráfico Normal Residuales Modelo 2") qqline(resid.ajust2,col=2,lwd=2) #Para las predicciones se exponencia para llevar a escala original #predicciones en escala log predmod2=forecast(modelo2,xreg =Xnuevo,level=95) #Predicción en escala original predic.modelo2=exp(cbind(Predic=predmod2$mean,LIP95=predmod2$lower, LSP95=predmod2$upper))*exp(modelo2$sigma2/2) predic.modelo2 ytpron2=predic.modelo2[,1] #Calidad de pronósticos accuracy(ytpron2,ytf) #graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original #se aplica factor de corrección ythat2=exp(fitted(modelo2))*exp(modelo2$sigma2/2) plot(yt) lines(ythat2,col=2,lwd=2) lines(ytpron2,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) Código R 8.7. Ajuste y pronósticos del modelo 3, df=140 grados de libertad ES ###Modelo con errores ARMA(2,2) modelo3=Arima(lnyt2,order=c(2,0,2),xreg=X,method="ML") summary(modelo3) resid.ajust3=residuals(modelo3) #Completando información sobre valores T0 y valores P est=cbind(Estimación=modelo3$coef,s.e=sqrt(diag(modelo3$var.coef))) t0=est[,1]/est[,2] vp=pt(abs(t0),df=140,lower.tail=FALSE)+pt(-abs(t0),df=140) tabla=cbind(est,t0,vp) #tabla completa de parámetros ajustados tabla #Gráficos para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo3),resid.ajust3,main="Residuales vs. ajustados modelo3") abline(h=0,lty=2) plot(resid.ajust3,main="Residuales vs. tiempo modelo3") abline(h=0,lty=2) acf(as.numeric(resid.ajust3),ci.type="ma",main="ACF modelo3",lag.max=36) pacf(as.numeric(resid.ajust3),main="PACF modelo3",lag.max=36) 262 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA #Examen normalidad residuales shapiro.test(resid.ajust3) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #predicciones en escala log predmod3=forecast(modelo3,xreg =Xnuevo,level=95) 7 qqnorm(resid.ajust3,main="Gráfico Normal Residuales Modelo 3") qqline(resid.ajust3,col=2,lwd=2) #Para las predicciones se exponencia para llevar a escala original #Predicción en escala original predic.modelo3=exp(cbind(Predic=predmod3$mean,LIP95=predmod3$lower, LSP95=predmod3$upper))*exp(modelo3$sigma2/2) predic.modelo3 ytpron3=predic.modelo3[,1] #Calidad de pronósticos accuracy(ytpron3,ytf) #graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original #se usa factor de corrección ythat3=exp(fitted(modelo3))*exp(modelo3$sigma2/2) plot(yt) lines(ythat3,col=2,lwd=2) lines(ytpron3,lty=1,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) Código R 8.8. Ajuste y pronósticos del modelo 4, df=138 grados de libertad ###Modelo con errores ARMA(1,5) modelo4=Arima(lnyt2,order=c(1,0,5),xreg=X,method="ML") summary(modelo4) resid.ajust4=residuals(modelo4) #Completando información sobre valores T0 y valores P est=cbind(Estimación=modelo4$coef,s.e=sqrt(diag(modelo4$var.coef))) t0=est[,1]/est[,2] vp=pt(abs(t0),df=138,lower.tail=FALSE)+pt(-abs(t0),df=138) tabla=cbind(est,t0,vp) #tabla completa de parámetros ajustados tabla ES #Gráficas para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo4),resid.ajust4,main="Residuales vs. ajustados modelo4") abline(h=0,lty=2) plot(resid.ajust4,main="Residuales vs. tiempo modelo4") abline(h=0,lty=2) acf(as.numeric(resid.ajust4),ci.type="ma",main="ACF modelo4",lag.max=36) pacf(as.numeric(resid.ajust4),main="PACF modelo4",lag.max=36) #Normalidad residuales shapiro.test(resid.ajust4) qqnorm(resid.ajust4,main="Gráfico Normal Residuales Modelo 4") qqline(resid.ajust4,col=2,lwd=2) #predicciones en escala log predmod4=forecast(modelo4,xreg =Xnuevo,level=95) #Predicción en escala original predic.modelo4=exp(cbind(Predic=predmod4$mean,LIP95=predmod4$lower, LSP95=predmod4$upper))*exp(modelo4$sigma2/2) predic.modelo4 8.4. CÓDIGO R USADO 263 ytpron4=predic.modelo4[,1] #Calidad de pronósticos accuracy(ytpron4,ytf) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 #graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original ythat4=exp(fitted(modelo4))*exp(modelo4$sigma2/2) plot(yt) lines(ythat4,col=2,lwd=2) lines(ytpron4,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) Código R 8.9. Ajuste y pronósticos del modelo 5, df=138 grados de libertad. ###Modelo con errores ARMA(2,4) modelo5=Arima(lnyt2,order=c(2,0,4),xreg=X,method="ML") summary(modelo5) resid.ajust5=residuals(modelo5) #Completando información sobre valores T0 y valores P est=cbind(Estimación=modelo5$coef,s.e=sqrt(diag(modelo5$var.coef))) t0=est[,1]/est[,2] vp=pt(abs(t0),df=138,lower.tail=FALSE)+pt(-abs(t0),df=138) tabla=cbind(est,t0,vp) #tabla completa de parámetros ajustados tabla #Gráficas para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo5),resid.ajust5,main="Residuales vs. ajustados modelo5") abline(h=0,lty=2) plot(resid.ajust5,main="Residuales vs. tiempo modelo5") abline(h=0,lty=2) acf(as.numeric(resid.ajust5),ci.type="ma",main="ACF modelo5",lag.max=36) pacf(as.numeric(resid.ajust5),main="PACF modelo5",lag.max=36) #Normalidad residuales shapiro.test(resid.ajust5) qqnorm(resid.ajust5,main="Gráfico Normal Residuales Modelo 5") qqline(resid.ajust5,col=2,lwd=2) ES #predicciones en escala log predmod5=forecast(modelo5,xreg =Xnuevo,level=95) #Predicción en escala original predic.modelo5=exp(cbind(Predic=predmod5$mean,LIP95=predmod5$lower, LSP95=predmod5$upper))*exp(modelo5$sigma2/2) predic.modelo5 ytpron5=predic.modelo5[,1] #Calidad de pronósticos accuracy(ytpron5,ytf) #graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original ythat5=exp(fitted(modelo5))*exp(modelo5$sigma2/2) plot(yt) lines(ythat5,col=2,lwd=2) lines(ytpron5,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) 264 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Para los modelos 6i, 6, 7i y 7 tenga en cuenta el uso del argumento fixed en la función Arima(), donde para cada uno de los parámetros AR, MA, los parámetros betas y deltas, en ese orden, se indica en un vector c(), cuáles deben estimarse colocando un NA, y cuáles de ellos deben fijarse en 0, colocando tal número en la posición correspondiente dentro del vector especificado. Este vector debe tener p + q + r entradas en total, con r el número de parámetros en la parte estructural determinı́stica de tendencia y estacionalidad; para estos últimos, la entrada correspondiente en el vector debe ser un NA. Mire también con cuidado cómo se construye en estos casos el objeto est donde hay una variante en la programación en relación a la forma en que se definió en los modelos 2 a 5. Código R 8.10. Ajuste del modelo 6i. Ajuste y pronósticos del modelo 6, df=139 grados de libertad para este último modelo. ##Modelo 6i (sus errores de ajuste no cumplen R.B) ####Modelo con errores ARMA(6,7) con phij=0 para j=1,3,4,5 y thetai=0 para i=1,2,...,6 modelo6i=Arima(lnyt2,order=c(6,0,7),fixed=c(c(0,NA,rep(0,3),NA),c(rep(0,6),NA),rep(NA,7)), xreg=X,method="ML") resid.ajust6i=residuals(modelo6i) #Gráficas para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo6i),resid.ajust6i,main="Residuales vs. ajustados modelo6i") abline(h=0,lty=2) plot(resid.ajust6i,main="Residuales vs. tiempo modelo6i") abline(h=0,lty=2) acf(as.numeric(resid.ajust6i),ci.type="ma",main="ACF modelo6i",lag.max=36) pacf(as.numeric(resid.ajust6i),main="PACF modelo6i",lag.max=36) ##Modelo6 finalmente usado modelo6=Arima(lnyt2,order=c(6,0,7),fixed=c(c(NA,NA,NA,0,0,NA),c(rep(0,6),NA),rep(NA,7)), xreg=X,method="ML") summary(modelo6) resid.ajust6=residuals(modelo6) ES #Cálculo estadı́stico T0 y valores P del ajuste anterior est=cbind(Estimación=modelo6$coef[modelo6$coef!=0],s.e=sqrt(diag(modelo6$var.coef))) t0=est[,1]/est[,2] vp=pt(abs(t0),df=139,lower.tail=FALSE)+pt(-abs(t0),df=139) tabla=cbind(est,t0,vp) #tabla completa de parámetros ajustados tabla #Gráficas para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo6),resid.ajust6,main="Residuales vs. ajustados modelo6") abline(h=0,lty=2) plot(resid.ajust6,main="Residuales vs. tiempo modelo6") abline(h=0,lty=2) acf(as.numeric(resid.ajust6),ci.type="ma",main="ACF modelo6",lag.max=36) pacf(as.numeric(resid.ajust6),main="PACF modelo6",lag.max=36) #Normalidad residuales shapiro.test(resid.ajust6) qqnorm(resid.ajust6,main="Gráfico Normal Residuales Modelo 6") qqline(resid.ajust6,col=2,lwd=2) 8.4. CÓDIGO R USADO 265 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Predicción en escala original predic.modelo6=exp(cbind(Predic=predmod6$mean,LIP95=predmod6$lower, LSP95=predmod6$upper))*exp(modelo6$sigma2/2) predic.modelo6 ytpron6=predic.modelo6[,1] 7 #predicciones en escala log predmod6=forecast(modelo6,xreg =Xnuevo,level=95) #Calidad de pronósticos accuracy(ytpron6,ytf) #graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original ythat6=exp(fitted(modelo6))*exp(modelo6$sigma2/2) plot(yt) lines(ythat6,col=2,lwd=2) lines(ytpron6,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) Código R 8.11. Ajuste modelo 7i. Ajuste y pronósticos modelo 7, df=137 grados de libertad para este último. ##Modelo 7i (sus errores de ajuste no cumplen R.B) ####Modelo con errores ARMA(7,10) con phij=0 para j=2,3,4,5,6 y thetai=0 para i=1,2,...,7,9 modelo7i=Arima(lnyt2,order=c(7,0,10),fixed=c(c(NA,rep(0,5),NA),c(rep(0,7),NA,0,NA),rep(NA,7)), xreg=X,method="ML") resid.ajust7i=residuals(modelo7i) #Gráficas para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo7i),resid.ajust7i,main="Residuales vs. ajustados modelo7i") abline(h=0,lty=2) plot(resid.ajust7i,main="Residuales vs. tiempo modelo7i") abline(h=0,lty=2) acf(as.numeric(resid.ajust7i),ci.type="ma",main="ACF modelo7i",lag.max=36) pacf(as.numeric(resid.ajust7i),main="PACF modelo7i",lag.max=36) ES modelo7=Arima(lnyt2,order=c(7,0,10),fixed=c(c(NA,rep(0,5),NA),c(NA,NA,0,NA,rep(0,3),NA,0,NA),rep(NA,7)), xreg=X,method="ML") summary(modelo7) resid.ajust7=residuals(modelo7) #Cálculo estadı́stico T0 y valores P del ajuste anterior est=cbind(Estimación=modelo7$coef[modelo7$coef!=0],s.e=sqrt(diag(modelo7$var.coef))) t0=est[,1]/est[,2] vp=pt(abs(t0),df=137,lower.tail=FALSE)+pt(-abs(t0),df=137) tabla=cbind(est,t0,vp) #tabla completa de parámetros ajustados tabla #Gráficas para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo7),resid.ajust7,main="Residuales vs. ajustados modelo7") abline(h=0,lty=2) plot(resid.ajust7,main="Residuales vs. tiempo modelo7") abline(h=0,lty=2) acf(as.numeric(resid.ajust7),ci.type="ma",main="ACF modelo7",lag.max=36) pacf(as.numeric(resid.ajust7),main="PACF modelo7",lag.max=36) 266 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA #Normalidad residuales shapiro.test(resid.ajust7) #predicciones en escala log predmod7=forecast(modelo7,xreg =Xnuevo,level=95) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Predicción en escala original predic.modelo7=exp(cbind(Predic=predmod7$mean,LIP95=predmod7$lower, LSP95=predmod7$upper))*exp(modelo7$sigma2/2) predic.modelo7 ytpron7=predic.modelo7[,1] 7 qqnorm(resid.ajust7,main="Gráfico Normal Residuales Modelo 7") qqline(resid.ajust7,col=2,lwd=2) #Calidad de pronósticos accuracy(ytpron7,ytf) #graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original ythat7=exp(fitted(modelo7))*exp(modelo7$sigma2/2) plot(yt) lines(ythat7,col=2,lwd=2) lines(ytpron7,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) Código R 8.12. Ajuste y pronóstico con modelo 8, df=140 grados de libertad. Note el uso del argumento seasonal para especificar en la función Arima() la estructura ARMA en la parte estacional. ###Modelo con errores ARMA(1,2)x(0,1)[4] modelo8=Arima(lnyt2,order=c(1,0,2),seasonal=list(order=c(0,0,1)),xreg=X,method="ML") summary(modelo8) resid.ajust8=residuals(modelo8) #Completando información sobre valores T0 y valores P est=cbind(Estimación=modelo8$coef,s.e=sqrt(diag(modelo8$var.coef))) t0=est[,1]/est[,2] vp=pt(abs(t0),df=140,lower.tail=FALSE)+pt(-abs(t0),df=140) tabla=cbind(est,t0,vp) #tabla completa de parámetros ajustados tabla ES #Gráficas para residuales nf=layout(rbind(c(1,2),c(3,4))) plot(fitted(modelo8),resid.ajust8,main="Residuales vs. ajustados modelo8") abline(h=0,lty=2) plot(resid.ajust8,main="Residuales vs. tiempo modelo8") abline(h=0,lty=2) acf(as.numeric(resid.ajust8),ci.type="ma",main="ACF modelo8",lag.max=36) pacf(as.numeric(resid.ajust8),main="PACF modelo8",lag.max=36) #Normalidad residuales shapiro.test(resid.ajust8) qqnorm(resid.ajust8,main="Gráfico Normal Residuales Modelo 8") qqline(resid.ajust8,col=2,lwd=2) #predicciones en escala log predmod8=forecast(modelo8,xreg =Xnuevo,level=95) #Predicción en la escala original predic.modelo8=exp(cbind(Predic=predmod8$mean,LIP95=predmod8$lower, 8.5. MODELACIÓN INICIAL: ESTRUCTURA EXPONENCIAL Y ERRORES R.B267 LSP95=predmod8$upper))*exp(modelo8$sigma2/2) predic.modelo8 ytpron8=predic.modelo8[,1] #Calidad de pronósticos accuracy(ytpron8,ytf) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 #graficando la serie original, ajustada y sus pronósticos, en escala original #la exponenciación de los valores ajustados es necesaria para pasar de escala log a la original ythat8=exp(fitted(modelo8))*exp(modelo8$sigma2/2) plot(yt) lines(ythat8,col=2,lwd=2) lines(ytpron8,col="blue",lwd=2) legend("topleft",legend=c("Original","ajustado","pronosticado"),lty=1,lwd=c(1,2,2),col=c(1,2,4)) Código R 8.13. Comparación gráfica de los 8 pronósticos. Tenga en cuenta que se grafican en total 9 series incluyendo a los valores reales en los perı́odos pronosticados, por esto los argumentos pch (para el sı́mbolo de los puntos a graficar) y col (para el color de la lı́neas) usados en las funciones plot() y legend() se especifican iguales a un vector con 9 entradas, una para cada una de las columnas de la matriz guardada en el objeto de nombre p, respectivamente. #Comparando todos los pronósticos con valores reales #Juntando en una matriz los valores reales y pronosticados #(colocados en columnas) obteniendo un objeto de serie de tiempo multivariado p=cbind(ytf,ytpron1,ytpron2,ytpron3,ytpron4,ytpron5,ytpron6,ytpron7,ytpron8) p plot(p,plot.type="single",type="b",pch=c(19,1:8),col=c(1:9),lty=1,lwd=2,ylab="Producción",xaxt="n") axis(1,at=time(p),labels=c("1993.Q4","1994.Q1","1994.Q2","1994.Q3")) legend("topleft",legend=c("Serie Original","Pronóstico Modelo 1","Pronóstico Modelo 2", "Pronóstico Modelo 3","Pronóstico Modelo 4","Pronóstico Modelo 5","Pronóstico Modelo 6", "Pronóstico Modelo 7","Pronóstico Modelo 8"),pch=c(19,1:8),lty=1,col=c(1:9),lwd=2,bty="n") ES A continuación se presenta la modelación de la misma serie de producción trimestral de cemento portland utilizando una estructura exponencial más errores ARMA 8.5. Modelación inicial: Estructura exponencial y errores R.B 8.5.1. Ajuste y pron óstico El modelo exponencial con los primeros n = 151 datos de la serie (en total son N = 155 observaciones), asumiendo que los errores son ruido blanco, corresponde a: 3 2 3 δi Ii,t ) + Et , Et ∼ RBN(0, σ 2 ) Yt = exp(β0 + β1 t + β2 t + β3 t + i=1 La Tabla 8.44 exhibe los parámetros estimados. (8.11) 268 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.44: Parámetros ajustados en modelo exponencial cúbico estacional Parámetro Estimación Error Estándar T0 P (|t144 | > |T0 |) β0 6.2547 0.0475 131.6348 0.0000 β1 0.0201 0.0021 9.6295 0.0000 β2 -1.3229×10−4 0.0000 -4.7567 0.0000 β3 3.3012×10−7 0.0000 2.9983 0.0032 δ1 -0.1431 0.0183 -7.8079 0.0000 δ2 -0.0296 0.0172 -1.7195 0.0877 δ3 0.0051 0.0169 0.3039 0.7616 ∗ (p): AIC = 9.100153, BIC = 9.240027, df = 144 Crit. de inf. con Cn Los pronósticos para los siguientes m = 4 perı́odos (t = 152 a 155) se obtienen según la siguiente ecuación: # Ŷ151 (L) = exp 6.2547 + 0.0201(151 + L) − 1.3229 × 10−4(151 + L)2 + 3.3012 × 10−7 (151 + L)3 −0.1431I1,151+L − 0.0296I2,151+L + 0.0051I3,151+L] Original Ajustada Pronósticos ES 500 1000 yt 1500 2000 Serie real, ajustes y pronósticos Modelo exponencial cúbico estacional 1960 1970 1980 1990 Time Figura 8.32: Serie real, ajustada y pronósticos para la validación cruzada, modelo exponencial cúbico estacional La Tabla 8.45 muestra los pronósticos puntuales y en la Tabla 8.46 se presentan las medidas de precisión de pronósticos (actualmente, la función predict() no proporciona lı́mites de predicción para un objeto nls). 8.5. MODELACIÓN INICIAL: ESTRUCTURA EXPONENCIAL Y ERRORES R.B269 Tabla 8.45: Pronósticos con Modelo exponencial cúbico estacional Perı́odo Año Q1 Q2 Q3 Q4 1993 1668.857 1994 1450.493 1629.504 1691.936 - TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En la Figura 8.32 se presenta los ajustes y pronósticos con el modelo exponencial; en la Figura 8.33 se presentan los residuales estructurales y en la Figura 8.34 su ACF y PACF y la EACF es presentada en la Tabla 8.47. Tabla 8.46: Precisión pronósticos Modelo exponencial cúbico estacional Medida Resultado ME 124.55 RMSE 154.47 MAE 124.55 MPE 6.74 MAPE 6.74 8.5.2. Análisis de residuales e identificaci ón ciclos 200 100 −300 −200 −100 0 residuals(modelo2b) 100 0 −300 −200 −100 residuals(modelo2b) 200 300 Residuos vs. ajustados Modelo exponencial cúbico estacional 300 Residuos vs. t Modelo exponencial cúbico estacional 0 50 100 150 600 800 Time 1000 1200 1400 1600 fitted(modelo2b) ES Figura 8.33: Residuales en ajuste exponencial cúbico estacional PACF residuales estructurales 0.4 0.2 Partial ACF 0.2 0.0 0.0 −0.2 −0.2 −0.4 ACF 0.4 0.6 0.6 0.8 0.8 ACF residuales estructurales 0 5 10 15 20 Lag 25 30 35 0 5 10 15 20 Lag Figura 8.34: ACF y PACF para residuales estructurales 25 30 35 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 0 x x x o x x x x x o o x x x x x x x o 1 x x x x x x x o x x x o o x x o o x o 2 x o o o o x x o o o x x x x x x o x x 3 x x x x x x o o o x o x x o o o o o o Tabla 4 x x o o o o o o o o o x o o o o o o o 8.47: EACF con residuales estructurales, Êt 5 6 7 8 9 10 11 12 13 o o x x x x x x o o o x o o o o o o o o o o o o o o o x o o o o o o o o x o o o o o o o o x o x o o o o o o o o x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o o o o o x o o o o o o o o x x o o o o o o o x o o x o x o o o o x x 14 o o o o o o o o o o o o o o o o o o o 15 o o o o o o o o o o o o o o o o o o o 16 o o o o o o o o o o o o o o o o o o o 17 o o o o o o o o o o o o o o o o o o o 18 o o o o o o o o o o o o o o o o o o o TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AR/MA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 7 270 Del análisis de residuales es claro que los errores estructurales E t no son un ruido blanco ¿por qué? pero según ACF pudieran considerarse estacionarios. Los modelos ARMA identificados son los siguientes: 1. De la ACF y PACF se identifica que los errores del modelo exponencial pueden ser un AR(6) o un AR(18); sin embargo, consideraremos primero al AR(6). 2. De la EACF se identifican los siguientes modelos: ARMA(1,8) y ARMA(2,5). 3. Con la función auto.arima() sobre el vector de residuales estructurales sin convertirlos en serie de tiempo, y el criterio del AIC, se identifica un ARMA(2,2) como muestra la Tabla 8.48. ES 4. Con la función auto.arima() sobre el vector de residuales estructurales convertidos en serie de tiempo, y el criterio del AIC, se identifica un SARMA(1,2)(0,1)[4] como muestra la Tabla 8.52. 5. Con la función armasubsets(), (ver Figura 8.35) se identifican inicialmente en la primera fila superior un ARMA(6,7) con φ j = 0 para j = 2, 6 y θi = 0, para i = 7 y en la segunda fila superior también un ARMA(6,7) pero con φj = 0 para j = 2, 6 y θi = 0, para i = 6, 7. Estos dos modelos son modificados como se indica en las Tablas 8.53 y 8.54 de forma tal que fuese satisfecho el supuesto de ruido blanco sobre los errores de ajuste at . (Intercept) AR−lag1 AR−lag2 AR−lag3 AR−lag4 AR−lag5 AR−lag6 AR−lag7 AR−lag8 AR−lag9 AR−lag10 AR−lag11 AR−lag12 error−lag7 error−lag8 error−lag9 error−lag10 error−lag11 error−lag12 error−lag1 error−lag2 error−lag3 error−lag4 error−lag5 error−lag6 8.5. MODELACIÓN INICIAL: ESTRUCTURA EXPONENCIAL Y ERRORES R.B271 −160 7 −150 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 −150 BIC −150 −140 −140 −140 −140 −140 Figura 8.35: Resultado de la función armasubsets sobre Êt en modelo exponencial cúbico estacional 8.5.3. Ajuste de los ciclos A diferencia de los modelos de estructuras lineales donde es posible ajustar simultáneamente la estructura y los ciclos ARMA con la función Arima() de la librerı́a forecast, en el caso exponencial procederemos ajustando separadamente los ciclos que luego serán sumados a la estructura exponencial estimada1 . De igual manera se procederá para obtener los pronósticos de la serie. En la Tabla 8.48 observamos el modelo ajustado ARMA(2,2) sobre los residuales estructurales Êt = Yt − exp [6.2547 + 0.0201t − 1.3229 × 10−4 t2 + 3.3012 × 10−7 t3 −0.1431I1,t − 0.0296I2,t + 0.0051I3,t ]. En la Figura 8.36, se muestran los gráficos de los residuales del ajuste resultante â t y su gráfico de probabilidad normal. ES Tabla 8.48: Resultados de auto.arima() sobre Ê sin convertirlos en serie de tiempo 1 Parámetro Estimación s.e Z0 * P (|Z| > |Z0 |)** φ1 0.1885 0.1444 1.3052 0.1918 φ2 0.4789 0.1269 3.7742 0.0002 θ1 0.5615 0.1538 3.6505 0.0003 θ2 0.2594 0.1007 2.5763 0.0100 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) Si bien en R se dispone de la función gnls() de la librerı́a nlme, con la cual se pueden ajustar modelos de regresión no lineal con errores ARMA, esta función es numéricamente inestable, es decir, presenta comúnmente problemas de convergencia. CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 272 200 200 100 150 −200 −100 0 100 200 Series residuals(mciclos1) Series residuals(mciclos1) 300 −100 0.0 Partial ACF −0.1 0.0 −0.2 −0.2 −0.1 ACF 0.1 0.1 0.2 0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 as.numeric(hatciclos1) 7 100 Time Sample Quantiles 50 Valor P 1e−04 100 −100 0 Estadístico W 0.9567 0 residuals(mciclos1) 100 0 −100 residuals(mciclos1) 200 Normal Q−Q Plot 0 5 10 15 20 Lag 25 30 35 −2 0 5 10 15 20 Lag 25 30 −1 0 1 2 35 Theoretical Quantiles Figura 8.36: Residuales de ajuste del ARMA(2,2) ajustado a los residuos estructurales del modelo exponencial En la Tabla 8.49 se presentan los parámetros ajustados del modelo AR(6) ajustado a los residuos estructurales del modelo exponencial estacional. En la Figura 8.37 pueden observarse los gráficos de residuales y de normalidad, para los residuos de ajuste resultantes. Tabla 8.49: Resultados AR(6) Parámetro Estimación s.e Z0 * P (|Z| > |Z0 |)** φ1 0.6494 0.0784 8.2876 0.0000 φ2 0.3558 0.0944 3.7675 0.0002 φ3 -0.2366 0.0998 -2.3711 0.0177 φ4 0.1802 0.0989 1.8217 0.0685 φ5 -0.0365 0.0957 -0.3815 0.7028 φ6 -0.2401 0.0791 -3.0355 0.0024 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) ES En la Tabla 8.50 se exhiben los parámetros estimados del modelo ARMA(1,8) ajustado a los residuos estructurales. En la Figura 8.38 los respectivos residuales de ajuste. Tabla 8.50: Resultados ARMA(1,8) Parámetro Estimación s.e Z0 * P (|Z| > |Z0 |)** φ1 0.4453 0.9173 0.4854 0.6274 θ1 0.2410 0.9198 0.2620 0.7933 θ2 0.5511 0.6297 0.8752 0.3815 θ3 0.2236 0.7810 0.2863 0.7746 θ4 0.5007 0.5503 0.9099 0.3629 θ5 0.2526 0.6890 0.3667 0.7139 θ6 0.0679 0.5328 0.1274 0.8987 θ7 0.0272 0.2922 0.0931 0.9258 θ8 -0.0428 0.1709 -0.2504 0.8023 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) 8.5. MODELACIÓN INICIAL: ESTRUCTURA EXPONENCIAL Y ERRORES R.B273 200 200 150 Valor P 2e−04 0 150 50 Estadístico W 0.9583 100 150 −200 −100 0 100 200 fitted(mciclos2) Series residuals(mciclos2) Series residuals(mciclos2) −50 −100 0.05 Partial ACF ACF −0.15 −0.15 −150 −0.05 −0.05 0.05 0.10 0.15 0.15 0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Time 7 50 50 0 Sample Quantiles −150 −150 100 −50 residuals(mciclos2) 100 200 150 100 50 0 −50 residuals(mciclos2) Normal Q−Q Plot 0 5 10 15 20 25 30 35 −2 0 5 10 15 Lag 20 25 30 −1 0 1 2 35 Theoretical Quantiles Lag 200 200 150 100 −200 −100 0 100 200 Series residuals(mciclos3) Series residuals(mciclos3) 300 0.10 −100 0.05 Partial ACF −0.05 0.1 0.0 −0.15 −150 −0.1 ACF −50 0.15 fitted(mciclos3) 50 150 0 100 Time Sample Quantiles 50 Valor P 0 150 50 −150 0 Estadístico W 0.9515 0 −50 residuals(mciclos3) Normal Q−Q Plot 100 200 150 100 50 0 −50 −150 residuals(mciclos3) Figura 8.37: Residuales de ajuste del AR(6) ajustado a los residuos estructurales del modelo exponencial 0 5 10 15 20 Lag 25 30 35 −2 0 5 10 15 20 Lag 25 30 −1 0 1 2 35 Theoretical Quantiles ES Figura 8.38: Residuales de ajuste del ARMA(1,8) ajustado a los residuos estructurales del modelo exponencial En la Tabla 8.51 se exhiben los parámetros estimados del modelo ARMA(2,5) ajustado a los residuales estructurales del modelo exponencial. La Figura 8.39 presenta los correspondientes residuales de ajuste. CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 274 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.51: Resultados ARMA(2,5) Parámetro Estimación s.e Z0 * P (|Z| > |Z0 |) ∗ ∗ φ1 1.7150 0.0738 23.2498 0.0000 φ2 -0.7579 0.0724 -10.4639 0.0000 θ1 -1.1234 0.0907 -12.3921 0.0000 θ2 0.4845 0.1174 4.1281 0.0000 θ3 -0.3981 0.1262 -3.1557 0.0016 θ4 0.4417 0.1183 3.7326 0.0002 θ5 -0.4046 0.0864 -4.6822 0.0000 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) 150 150 100 50 100 150 −200 −100 0 100 200 Series residuals(mciclos4) Series residuals(mciclos4) −50 −100 0.05 −0.15 −150 Partial ACF ACF −0.05 −0.15 −0.05 0.05 0.10 0.15 0.15 fitted(mciclos4) 0 5 10 15 20 Lag 25 30 35 50 100 Time 0 50 Sample Quantiles −150 0 Valor P 0.00016 0 residuals(mciclos4) Estadístico W 0.9583 −50 100 50 0 −50 −150 residuals(mciclos4) 150 Normal Q−Q Plot −2 0 5 10 15 20 Lag 25 30 −1 0 1 2 35 Theoretical Quantiles Figura 8.39: Residuales de ajuste del ARMA(2,5) ajustado a los residuos estructurales del modelo exponencial ES En la Tabla 8.52 se exhiben los parámetros estimados del modelo SARMA(1,2)(0,1)[4] , ajustado a los residuales estructurales del modelo exponencial. La Figura 8.40 presenta los correspondientes residuales de ajuste. Tabla 8.52: Resultados SARMA(1,2)(0,1)[4], identificado con auto.arima() sobre los residuos estructurales convertidos en serie de tiempo Parámetro Estimación s.e Z0 * P (|Z| > |Z0 |) ∗ ∗ φ1 0.6588 0.0977 6.7446 0.0000 θ1 0.0361 0.1135 0.3182 0.7503 θ2 0.3819 0.0946 4.0359 0.0001 Θ1 0.3715 0.0841 4.4153 0.0000 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) Normal Q−Q Plot 100 1980 Valor P 2e−04 100 1990 −200 −100 0 100 200 300 as.numeric(hatciclos5) Series as.numeric(residuals(mciclos5)) Series as.numeric(residuals(mciclos5)) 0 −100 0.00 Partial ACF −0.10 0.0 −0.2 −0.20 −0.1 ACF 0.1 0.10 0.2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Time 7 1970 Sample Quantiles −100 1960 Estadístico W 0.9584 0 residuals(mciclos5) 100 0 −100 residuals(mciclos5) 200 200 200 8.5. MODELACIÓN INICIAL: ESTRUCTURA EXPONENCIAL Y ERRORES R.B275 0 5 10 15 20 Lag 25 30 35 −2 0 5 10 15 20 Lag 25 30 −1 0 1 2 35 Theoretical Quantiles Figura 8.40: Residuales de ajuste del SARMA(1,2)(0,1)[4] ajustado a los residuos estructurales del modelo exponencial En la Figura 8.41 se muestran los residuales del modelo ARMA(6,7) inicialmente identificado en la primera fila de la Figura 8.35, es decir, E t = φ2 Et−2 + φ6 Et−6 + at + θ7 at−7 ,at ∼ R.B N(0, σa2 ), como puede verse, no se cumple el supuesto de ruido blanco sobre a t , por lo que se modificó este modelo de la siguiente manera, Et = φ2 Et−2 + φ6 Et−6 + at + θ1 at−1 + θ7 at−7 , at ∼ R.B N(0, σa2 ). ES En la Tabla 8.53 se exhiben los parámetros estimados del modelo ARMA(6,7) a que corresponde a la versión modificada del primer modelo identificado en la Figura 8.35, ajustado a los residuales estructurales del modelo exponencial. La Figura 8.42 presenta los correspondientes residuales de ajuste. Tabla 8.53: Resultados ARMA(6,7)a Parámetro Estimación s.e Z0 * P (|Z| > |Z0 |) ∗ ∗ φ2 0.8222 0.0640 12.8393 0.0000 φ6 -0.3131 0.0603 -5.1919 0.0000 θ1 0.6797 0.0713 9.5310 0.0000 θ7 -0.0897 0.0675 -1.3289 0.1839 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) 100 0 residuals(mciclos6i) 0 50 100 150 −300 −200 −100 0 100 7 −200 −100 200 100 0 −100 −200 residuals(mciclos6i) 200 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 276 200 as.numeric(fitted(mciclos6i)) Series residuals(mciclos6i) Series residuals(mciclos6i) 0.2 0.1 Partial ACF −0.2 0.0 0.1 −0.2 −0.1 0.0 ACF 0.2 0.3 0.3 0.4 0.4 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Time 0 5 10 15 20 25 30 35 0 5 Lag 10 15 20 25 30 35 Lag Figura 8.41: Residuales de ajuste del ARMA(6,7): E t = φ2 Et−2 + φ6 Et−6 + at + θ7 at−7 , ajustado a los residuos estructurales del modelo exponencial 200 200 150 Valor P 1e−04 0 150 50 Estadístico W 0.9578 100 150 −200 −100 0 100 200 as.numeric(hatciclos6) Series residuals(mciclos6) Series residuals(mciclos6) −50 −100 0.05 −0.15 −150 Partial ACF ACF −0.05 −0.15 −0.05 0.05 0.10 0.15 0.15 Time 50 50 0 0 Sample Quantiles −150 −150 100 −50 residuals(mciclos6) 100 200 150 100 50 0 −50 residuals(mciclos6) Normal Q−Q Plot 0 5 10 15 20 Lag 25 30 35 −2 0 5 10 15 20 Lag 25 30 −1 0 1 2 35 Theoretical Quantiles ES Figura 8.42: Residuales de ajuste del ARMA(6,7) a ajustado a los residuos estructurales del modelo exponencial En la Figura 8.43 se presentan los residuos de ajuste del segundo modelo ARMA(6,7) identificado en la fila 2 de la Figura 8.35, es decir, el modelo E t = φ2 Et−2 + φ6 Et−6 + at + θ6 at−6 + θ7 at−7 , at ∼ R.B N(0, σa2 ). Como puede observarse, para este modelo no es válido el supuesto de ruido blanco sobre sus errores de ajuste at . Por esta razón, se modificó tal modelo de la siguiente manera: Et = φ2 Et−2 +φ6Et−6 +at +θ1 at−1 +θ6 at−6 +θ7 at−7 , at ∼ R.B N(0, σa2 ). En la Tabla 8.54 se presentan los parámetros estimados de este último modelo ARMA(6,7) b. La Figura 8.44 presenta los residuales de ajuste correspondientes. 8.5. MODELACIÓN INICIAL: ESTRUCTURA EXPONENCIAL Y ERRORES R.B277 200 100 0 residuals(mciclos7i) −200 0 50 100 150 −300 −200 −100 0 100 200 as.numeric(fitted(mciclos7i)) Series residuals(mciclos7i) Series residuals(mciclos7i) 0.2 0.1 Partial ACF 0.1 −0.2 −0.2 −0.1 0.0 0.2 0.3 0.3 0.4 0.4 Time 0.0 ACF −100 100 0 −100 −200 residuals(mciclos7i) 200 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Tabla 8.54: Resultados ARMA(6,7)b Parámetro Estimación s.e Z0 * P (|Z| > |Z0 |) ∗ ∗ φ2 0.8401 0.0693 12.1283 0.0000 φ6 -0.2775 0.0797 -3.4817 0.0005 θ1 0.6836 0.0706 9.6764 0.0000 θ6 -0.0933 0.1318 -0.7077 0.4791 θ7 -0.1399 0.0979 -1.4296 0.1528 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) 0 5 10 15 20 25 30 35 0 5 Lag 10 15 20 25 30 35 Lag Figura 8.43: Residuales de ajuste del ARMA(6,7): E t = φ2 Et−2 + φ6 Et−6 + at + θ6 at−6 + θ7 at−7 ,at ∼ R.B N (0, σa2 ), ajustado a los residuos estructurales del modelo exponencial Valor P 1e−04 0 150 50 Estadístico W 0.9567 150 −200 −100 0 100 200 Series residuals(mciclos7) Series residuals(mciclos7) −50 −100 0.05 −0.15 −150 Partial ACF ACF −0.05 −0.15 −0.05 0.05 0.10 0.15 0.15 as.numeric(hatciclos7) 50 100 Time 0 50 Sample Quantiles −150 100 −50 residuals(mciclos7) 200 200 150 0 100 200 150 100 50 0 −50 −150 ES residuals(mciclos7) Normal Q−Q Plot 0 5 10 15 20 Lag 25 30 35 −2 0 5 10 15 20 Lag 25 30 −1 0 1 2 35 Theoretical Quantiles Figura 8.44: Residuales de ajuste del ARMA(6,7) b ajustado a los residuos estructurales del modelo exponencial 278 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 8.6. Ajuste y pronóstico aproximado de Yt Los ajustes para la serie, se hallan como donde el ajuste de la estructura es 7 Ŷt = (Ajuste estructura) t + (Ajuste ciclos ARMA) t TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 # (Ajuste estructura) t = exp 6.2547 + 0.0201t − 1.3229 × 10−4t2 + 3.3012 × 10−7 t3 −0.1431I1,t − 0.0296I2,t + 0.0051I3,t] es decir, el ajuste del modelo exponencial. Los ajustes para los ciclos ARMA(p,q) son de acuerdo al modelo ARMA(p,q) ajustado sobre el residuo estructural Êt : ' Êt = φ̂1 Êt−1 + φ̂2 Êt−2 + · · · + φ̂p Êt−p + θ̂1 ât−1 + θ̂2 ât−2 + · · · + θ̂q ât−q ' de modo que se cumple que los residuos de ajuste son â t = Yt − Ŷt = Êt − Êt . En las Figuras 8.45 y 8.46 se presentan la serie real y sus ajustes de los modelos con parte estructural exponencial más los ciclos ARMA correspondientes a los casos ajustados a los residuales estructurales. Para estos ajustes no tenemos cómo medir globalmente los errores estándar de los estimadores ya que no se realiza una estimación conjunta de la estructura y los ciclos. Pero podemos calcular de manera aproximada el AIC y el BIC, usando las ecuaciones n 1 AIC ≈ log â2 + 2k/n n t=1 t n 1 â2 + k log(n)/n BIC ≈ log n t=1 t ES donde k es el número total de parámetros estimados entre estructura y ciclos y ât son los residuales del ajuste en cada modelo de los ciclos ARMA ajustados sobre los residuales estructurales Êt del modelo exponencial inicial. Estas mismas fórmulas pueden utilizarse también usando los residuales estructurales del modelo exponencial estacional inicial (es decir, usando Êt en lugar de ât ), para obtener para éste último el AIC y BIC aproximados, siendo k igual número de parámetros del modelo exponencial. La Tabla 8.55 presenta los resultados de estas medidas. 8.6. AJUSTE Y PRON ÓSTICO APROXIMADO DE Y T Serie real, ajustes Modelo exponencial cúbico estacional 2000 2000 Serie real, ajustes Modelo exponencial cúbico estacional 279 1000 yt 7 1500 Original Estructura + ciclos AR(6) Pronosticado 500 500 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1000 yt 1500 Original Estructura + ciclos ARMA(2,2) pronosticado 1960 1970 1980 1990 1960 1970 1980 1990 Serie real, ajustes Modelo exponencial cúbico estacional Serie real, ajustes Modelo exponencial cúbico estacional 2000 Time Original Estructura + ciclos ARMA(2,5) Pronosticado yt 1000 500 500 1000 yt 1500 Original AEstructura + ciclos ARMA(1,8) Pronosticado 1500 2000 Time 1960 1970 1980 1990 1960 Time 1970 1980 1990 Time Figura 8.45: Comparación de serie real y sus ajustes mediante los modelos que intengran la estimación estructural exponencial más los ciclos ARMA identificados para los residuales estructurales del modelo exponencial Estructura AIC BIC 9.10 9.24 ∗ (k) Tabla 8.55: Criterios de información calculados, aproximados por Cn Estructura +ARMA(2,2) 7.95 8.17 Estructura +AR(6) 7.86 8.12 Estructura +ARMA(1,8) 7.90 8.22 Estructura +ARMA(2,5) 7.81 8.09 Estructura +SARMA(1,2)(0,1)[4] 7.89 8.11 Estructura +ARMA(6,7)a 7.83 8.05 Estructura +ARMA(6,7)b 7.84 8.08 ES Criterio Los pronósticos L perı́odos adelante de n = 151 se calculan como Ŷ151 (L) = (Pronóstico estructura) 151 (L) + (Pronóstico ciclos ARMA) 151 (L) donde el pronóstico de la estructura es # (Pronóstico estructura) 151 (L) = exp 6.2547 + 0.0201(151 + L) − 1.3229 × 10−4 (151 + L)2 $ +3.3012 × 10−7 (151 + L)3 − 0.1431I1,151+L − 0.0296I2,151+L + 0.0051I3,151+L es decir, los pronósticos del modelo exponencial. CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 2000 Serie real, ajustes Modelo exponencial cúbico estacional Original Estructura + ciclos ARMA(6,7)a Pronosticado yt 1000 500 500 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1000 yt 1500 Original Estructura + ciclos SARMA(1,2)(0,1)[4] Pronosticado 1500 2000 Serie real, ajustes Modelo exponencial cúbico estacional 7 280 1960 1970 1980 1990 1960 Time 1970 1980 1990 Time Original Estructura + ciclos ARMA(6,7)b Pronosticado 500 1000 yt 1500 2000 Serie real, ajustes Modelo exponencial cúbico estacional 1960 1970 1980 1990 Time Figura 8.46: Comparación de serie real y sus ajustes mediante los modelos que intengran la estimación estructural exponencial más los ciclos ARMA identificados para los residuales estructurales del modelo exponencial (Cont.) Los pronóstico para los ciclos ARMA(p,q) se realizan con los modelos ajustados a los residuos estructurales: ES Ê151 (L) = φ̂1 Ê151 (L − 1) + φ̂2 Ê151 (L − 2) + · · · + φ̂p Ê151 (L − p) + θ̂1 â151 (L − 1) + θ̂2 â151 (L − 2) + · · · + θ̂q â151 (L − q) Los pronósticos para los trimestre 1993-Q4 a 1994Q3, se presentan en la Tabla 8.56 y las medidas de precisión de los pronósticos en la Tabla 8.57. Note que los pronósticos estructura más ciclos AR(6) son los más próximos a los valores reales seguidos de los pronósticos estructura más ciclos ARMA(6,7)a, aunque todos los pronósticos subestiman los valores reales. En la Figura 8.47 puede observarse con más claridad lo que ocurre en cuanto a los pronósticos puntuales. 8.6. AJUSTE Y PRON ÓSTICO APROXIMADO DE Y T 7 1994.Q3 1962 1691.936 1674.486 1712.287 1654.960 1667.228 1679.003 1700.717 1692.970 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Tabla 8.56: Predicciones en miles de toneladas 1993.Q4 1994.Q1 1994.Q2 Real 1777 1468 1732 Estructura 1668.857 1450.493 1629.504 Estructura+ARMA(2,2) 1619.683 1425.202 1601.187 Estructura+AR(6) 1645.965 1470.623 1651.707 Estructura+ARMA(1,8) 1621.304 1435.367 1602.182 Estructura+ARMA(2,5) 1623.773 1444.994 1606.944 Estructura+SARMA(1,2)(0,1)[4] 1626.864 1446.181 1601.858 Estructura+ARMA(6,7)a 1637.283 1463.777 1631.607 Estructura+ARMA(6,7)b 1632.509 1459.207 1628.023 281 pronósticos estructurales+ciclos ARMA ME RMSE MAE MPE MAPE 124.55 154.47 124.55 6.74 6.74 154.61 177.73 154.61 8.49 8.49 114.60 146.61 115.92 6.14 6.23 156.30 184.68 156.30 8.53 8.53 149.02 177.86 149.02 8.11 8.11 146.27 173.23 146.27 7.97 7.97 126.40 156.43 126.40 6.82 6.82 131.57 161.36 131.57 7.11 7.11 1700 Serie Original Pron. sin ciclos Estructura+ARMA(2,2) Estructura+AR(6) Estructura+ARMA(1,8) Estructura+ARMA(2,5) Estructura+SARMA(1,2)(0,1)[4] Estructura+ARMA(6,7)a Estructura+ARMA(6,7)b 1500 1400 ES 1600 Producción 1800 1900 2000 Tabla 8.57: Precisión de los Modelo Estructura Estructura+ARMA(2,2) Estructura+AR(8) Estructura+ARMA(1,8) Estructura+ARMA(2,5) Estructura+SARMA(1,2)(0,1)[4] Estructura+ARMA(6,7)a Estructura+ARMA(6,7)b 1993.Q4 1994.Q1 1994.Q2 1994.Q3 Time Figura 8.47: Comparación de serie real y sus pronósticos, para el modelo exponencial sin y con los ciclos ARMA identificados para los residuales estructurales del modelo exponencial inicial ¿Cuál modelo con estructura exponencial se elige para el ajuste y pronóstico de la serie? ¿Por qué? 282 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA 8.7. Codigo R usado TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 A continuación se presenta la programación R empleada. Tenga en cuenta que con la función Arima() no es posible estimar conjuntamente la estructura exponencial y los ciclos, por ello, se recurre a la estimación separada de la estructura con la función nls() y de los ciclos con función Arima() aplicada sobre los residuales estructurales del modelo exponencial, que en la programación han sido guardados bajo el nombre et1 (sin formato de serie de tiempo) y como Et1 (con formato de serie de tiempo). Los ajuste de los ciclos deben sumarse a los de la estructura y de igual forma, los pronósticos de los ciclos (obtenidos con la función forecast()) se suman a los pronósticos de la estructura (obtenidos con la función predict()). Nota 1: Además de las funciones R usadas en este ejemplo para identificar los modelos ARMA también puede usarse cualquier otra función de identificación automática disponible en diferentes librerı́as. NOTA 2: También se pueden construir las ACF y PACF esperadas bajo los distintos modelos de ciclos identificados sobre los residuos estructurales, usando en la función ARMAacf() de la librerı́a TSA los valores estimados de los parámetros de los respectivos modelos ARMA identificados. Vea Taller “Modelación de una serie multiplicativa con errores ARMA: Serie Producción trimestral Cemento Portland”. Código R 8.14. Cargando librerı́as y definiendo funciones de usuario. library(TSA) library(forecast) ES #Función para el cálculo de AIC y BIC aproximados para modelo exponencial sin ciclos crit.inf=function(modelo,AIC="TRUE"){ n.par=length(coef(modelo)) residuales=residuals(modelo) if(AIC=="TRUE"){ #Calcula AIC CI=log(mean(residualesˆ2))+2*n.par/length(residuales) } if(AIC=="FALSE"){ #Calcula BIC CI=log(mean(residualesˆ2))+n.par*log(length(residuales))/length(residuales) } CI } #Función para el cálculo de AIC y BIC aproximados para modelos combinados AIC.aprox=function(modeloarma,n1=n,npar.estruct=pestruct){ k=length(coef(modeloarma))+npar.estruct aic=log(mean(residuals(modeloarma)ˆ2))+2*k/n1 aic } BIC.aprox=function(modeloarma,n1=n,npar.estruct=pestruct){ k=length(coef(modeloarma))+npar.estruct 8.7. CODIGO R USADO 283 bic=log(mean(residuals(modeloarma)ˆ2))+k*log(n1)/n1 bic } TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Código R 8.15. Lectura de los datos, gráficas descriptivas y definición de variables para el ajuste y los pronósticos yt=scan() 465 532 561 570 529 604 603 582 554 620 646 637 573 673 690 681 621 698 753 728 688 737 782 692 637 757 783 757 674 734 835 838 797 904 949 975 902 974 969 967 849 961 966 922 836 998 1025 971 892 973 1047 1017 948 1032 1190 1136 1049 1134 1229 1188 1058 1209 1199 1253 1070 1282 1303 1281 1148 1305 1342 1452 1184 1352 1316 1353 1121 1297 1318 1281 1109 1299 1341 1290 1101 1284 1321 1317 1122 1261 1312 1298 1202 1302 1377 1359 1232 1386 1440 1439 1282 1573 1533 1651 1347 1575 1475 1357 1086 1158 1279 1313 1166 1373 1456 1496 1251 1456 1631 1554 1347 1516 1546 1564 1333 1458 1499 1613 1416 1625 1770 1791 1622 1719 1972 1893 1575 1644 1658 1668 1343 1441 1444 1497 1267 1501 1538 1569 1450 1569 1648 1777 1468 1732 1962 yt=ts(yt,frequency=4,start=c(1956,1)) #serie con todas las observaciones s=4 #longitud estacionalidad m=4 #Número de perı́odos a pronosticar dentro de la muestra n=length(yt)-m #tamaño de la muestra para el ajuste yt2=ts(yt[1:n],frequency=4,start=c(1956,1)) #serie con las primeras n observaciones lnyt2=log(yt2) t=1:n #ı́ndice de tiempo t2=tˆ2 t3=tˆ3 ES #DEFINIENDO INDICADORAS PARA ESTACIONALIDAD trimestre=seasonaldummy(yt2) #observe que se usa función seasonaldummy() Q1=trimestre[,1] Q2=trimestre[,2] Q3=trimestre[,3] #valores variables para los pronósticos tnuevo=c((n+1):(n+m)) #definiendo valor de t para las m observaciones a pronosticas t2nuevo=tnuevoˆ2 t3nuevo=tnuevoˆ3 ytf=ts(yt[tnuevo],frequency=4,start=c(1993,4)) #Tomando de la serie completa los últimos m valores #que son pronosticados trimestrenuevo=seasonaldummyf(yt2,h=m) Q1nuevo=trimestrenuevo[,1] Q2nuevo=trimestrenuevo[,2] Q3nuevo=trimestrenuevo[,3] Código R 8.16. Ajuste y pronósticos del modelo 1: Modelo exponencial suponiendo errores estructurales R.B. 284 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA #AJUSTANDO MODELO LOG CÚBICO ESTACIONAL CON LOS n PRIMEROS DATOS modelo.aux=lm(lnyt2˜t+t2+t3+Q1+Q2+Q3) #AJUSTANDO MODELO EXPONENCIAL USANDO COMO VALORES INICIALES #PARÁMETROS AJUSTADOS DEL MODELO ANTERIOR, SON SIETE EN TOTAL CON beta0 coef0=coef(modelo.aux) #extrae coeficientes ajustados del modelo auxiliar TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 modelo1=nls(yt2˜exp(beta0+beta1*t+beta2*t2+beta3*t3+delta1*Q1+delta2*Q2+delta3*Q3), start=list(beta0=coef0[[1]],beta1=coef0[[2]],beta2=coef0[[3]],beta3=coef0[[4]],delta1=coef0[[5]], delta2=coef0[[6]],delta3=coef0[[7]])) summary(modelo1) #Valores ajustados estructura ythat.estruct=ts(fitted(modelo1),frequency=4,start=c(1956,1)) #Residuos estructurales et1=residuals(modelo1) #Residuales estructurales convertidos en serie de tiempo Et1=ts(et1,frequency=4,start=c(1956,1)) #GRÁFICOS DE RESIDUALES plot.ts(et1,main="Residuos vs. t\nModelo exponencial cúbico estacional") abline(h=0,col=2) plot(ythat.estruct,et1,main="Residuos vs. ajustados\nModelo exponencial cúbico estacional") abline(h=0,col=2) #PRONÓSTICOS #Pronóstico estructura sola pred.estruct=predict(modelo1,newdata=data.frame(t=tnuevo,t2=t2nuevo,t3=t3nuevo,Q1=Q1nuevo, Q2=Q2nuevo,Q3=Q3nuevo),interval="prediction") pred.estruct=ts(pred.estruct,frequency=4,start=c(1993,4)) #Precisión de pronóstico con sólo la estructura accuracy(pred.estruct,ytf) plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat.estruct,col=2) lines(pred.estruct,col=4) legend("topleft",legend=c("Original","Ajustada","Pronósticos"),col=c(1,2,4),lty=1) ES Código R 8.17. Análisis de supuesto de R.B e identificación de posibles modelos para los ciclos, mediante funciones ACF, PACF y EACF muestrales aplicadas a los residuales estructurales Êt y uso de la función R armasubsets(). acf(et1,ci.type="ma",lag.max=36,main="ACF residuales estructurales") pacf(et1,lag.max=36,main="PACF residuales estructurales") eacf(et1,ar.max=18,ma.max=18) #identifica ARMA(1,8), ARMA(2,5) plot(armasubsets(et1,nar=12,nma=12,y.name=’AR’,ar.method=’ml’)) #Identifica dos ARMA(6,7) con algunos #coeficientes fijos en cero A continuación se presentan los modelos ajustados para los ciclos que quedan en los residuales estructurales del modelo exponencial. Observe que para la validación de supuestos se consideran ahora a los errores de ajuste a t y por tanto se analizan los residuales â t resultantes en los ajustes de los ciclos ARMA. 8.7. CODIGO R USADO 285 Código R 8.18. Identificación automática con función auto.arima() usando criterio del AIC sobre los residuos estructurales sin convertirlos en serie de tiempo. Ajustes para los ciclos con el modelo resultante guardado en mciclos1. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 summary(mciclos1) 7 #Identificación y ajuste automático con auto.arima mciclos1=auto.arima(et1,ic="aic") #identifica un ARMA(2,2) #Completación tabla parámetros estimados para mciclos1 est=cbind(Estimación=mciclos1$coef,s.e=sqrt(diag(mciclos1$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) tabla=cbind(est,z0,vp) tabla hatciclos1=ts(fitted(mciclos1),freq=4,start=c(1956,1)) layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos1)) abline(h=0,col=2) plot(as.numeric(hatciclos1),residuals(mciclos1)) abline(h=0,col=2) acf(residuals(mciclos1),ci.type="ma",lag.max=36) pacf(residuals(mciclos1),lag.max=36) test=shapiro.test(residuals(mciclos1)) #Test de normalidad sobre residuales de ajuste #Gráfico de normalidad con información del test Shapiro qqnorm(residuals(mciclos1),cex=1.5) qqline(residuals(mciclos1),lty=2,lwd=2,col=2) legend("topleft",legend=c("Estadı́stico W",round(test$statistic,digits=4),"Valor P", round(test$p.value,digits=4)),cex=0.8,ncol=2) Código R 8.19. Ajuste de ciclos AR(6) sobre residuos estructurales Êt . Objeto R que guarda el modelo ajustado es mciclos2. #Ajuste ciclos AR(6) mciclos2=Arima(et1,order=c(6,0,0),include.mean=F) summary(mciclos2) ES #Completación tabla parámetros estimados est=cbind(Estimación=mciclos2$coef,s.e=sqrt(diag(mciclos2$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) tabla=cbind(est,z0,vp) tabla hatciclos2=ts(fitted(mciclos2),freq=4,start=c(1956,1)) layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos2)) abline(h=0,col=2) plot(fitted(mciclos2),residuals(mciclos2)) abline(h=0,col=2) acf(residuals(mciclos2),ci.type="ma",lag.max=36) pacf(residuals(mciclos2),lag.max=36) test=shapiro.test(residuals(mciclos2)) #Test de normalidad sobre residuales de ajuste #Gráfico de normalidad con información del test Shapiro qqnorm(residuals(mciclos2),cex=1.5) qqline(residuals(mciclos2),lty=2,lwd=2,col=2) legend("topleft",legend=c("Estadı́stico W",round(test$statistic,digits=4),"Valor P", round(test$p.value,digits=4)),cex=0.8,ncol=2) 286 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA Código R 8.20. Ajuste de ciclos ARMA(1,8) sobre residuos estructurales Êt . Objeto R que guarda el modelo ajustado es mciclos3. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Completación tabla parámetros estimados est=cbind(Estimación=mciclos3$coef,s.e=sqrt(diag(mciclos3$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) tabla=cbind(est,z0,vp) tabla 7 #Ajuste ciclos ARMA(1,8) mciclos3=Arima(et1,order=c(1,0,8),include.mean=F) summary(mciclos3) hatciclos3=ts(fitted(mciclos3),freq=4,start=c(1956,1)) layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos3)) abline(h=0,col=2) plot(fitted(mciclos3),residuals(mciclos3)) abline(h=0,col=2) acf(residuals(mciclos3),ci.type="ma",lag.max=36) pacf(residuals(mciclos3),lag.max=36) test=shapiro.test(residuals(mciclos3)) #Test de normalidad sobre residuales de ajuste #Gráfico de normalidad con información del test Shapiro qqnorm(residuals(mciclos3),cex=1.5) qqline(residuals(mciclos3),lty=2,lwd=2,col=2) legend("topleft",legend=c("Estadı́stico W",round(test$statistic,digits=4),"Valor P", round(test$p.value,digits=4)),cex=0.8,ncol=2) Código R 8.21. Ajuste de ciclos ARMA(2,5) sobre residuos estructurales Êt . Objeto R que guarda el modelo ajustado es mciclos4. #Ajuste ciclos ARMA(2,5) mciclos4=Arima(et1,order=c(2,0,5),include.mean=F) summary(mciclos4) ES #Completación tabla parámetros estimados est=cbind(Estimación=mciclos4$coef,s.e=sqrt(diag(mciclos4$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) tabla=cbind(est,z0,vp);tabla hatciclos4=ts(fitted(mciclos4),freq=4,start=c(1956,1)) layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos4)) abline(h=0,col=2) plot(fitted(mciclos4),residuals(mciclos4)) abline(h=0,col=2) acf(residuals(mciclos4),ci.type="ma",lag.max=36) pacf(residuals(mciclos4),lag.max=36) test=shapiro.test(residuals(mciclos4)) #Test de normalidad sobre residuales de ajuste #Gráfico de normalidad con información del test Shapiro qqnorm(residuals(mciclos4),cex=1.5) qqline(residuals(mciclos4),lty=2,lwd=2,col=2) legend("topleft",legend=c("Estadı́stico W",round(test$statistic,digits=4),"Valor P", round(test$p.value,digits=5)),cex=0.8,ncol=2) 8.7. CODIGO R USADO 287 Código R 8.22. Ajuste de ciclos SARMA(1,2)(0,1)[4] sobre residuos estructurales Êt . Objeto R que guarda el modelo ajustado es mciclos5. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Completación tabla parámetros estimados est=cbind(Estimación=mciclos5$coef,s.e=sqrt(diag(mciclos5$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) tabla=cbind(est,z0,vp) tabla 7 mciclos5=auto.arima(Et1,ic="aic") summary(mciclos5) hatciclos5=ts(fitted(mciclos5),freq=4,start=c(1956,1)) layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos5)) abline(h=0,col=2) plot(as.numeric(hatciclos5),residuals(mciclos5)) abline(h=0,col=2) acf(as.numeric(residuals(mciclos5)),ci.type="ma",lag.max=36) pacf(as.numeric(residuals(mciclos5)),lag.max=36) test=shapiro.test(residuals(mciclos5)) #Test de normalidad sobre residuales de ajuste #Gráfico de normalidad con información del test Shapiro qqnorm(residuals(mciclos5),cex=1.5) qqline(residuals(mciclos5),lty=2,lwd=2,col=2) legend("topleft",legend=c("Estadı́stico W",round(test$statistic,digits=4),"Valor P", round(test$p.value,digits=4)),cex=0.8,ncol=2) Código R 8.23. Ajuste de ciclos ARMA(6,7)a sobre residuos estructurales Êt . Objeto R que guarda el modelo ajustado es mciclos6. #Ajuste primer modelo identificado con armasubsets. Este modelos es modificado en mciclos6 mciclos6i=Arima(et1,order=c(6,0,7),fixed=c(c(0,NA,rep(0,3),NA),c(rep(0,6),NA)), include.mean=F,method="ML") ES layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos6i)) abline(h=0,col=2) plot(as.numeric(fitted(mciclos6i)),residuals(mciclos6i)) abline(h=0,col=2) acf(residuals(mciclos6i),ci.type="ma",lag.max=36) pacf(residuals(mciclos6i),lag.max=36) #Ajuste modelo ARMA(6,7)a mciclos6=Arima(et1,order=c(6,0,7),fixed=c(c(0,NA,rep(0,3),NA),c(NA,rep(0,5),NA)), include.mean=F,method="ML") summary(mciclos6) #Completación tabla parámetros estimados est=cbind(Estimación=mciclos6$coef[mciclos6$coef!=0],s.e=sqrt(diag(mciclos6$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) tabla=cbind(est,z0,vp) tabla hatciclos6=ts(fitted(mciclos6),freq=4,start=c(1956,1)) layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos6)) 288 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA abline(h=0,col=2) plot(as.numeric(hatciclos6),residuals(mciclos6)) abline(h=0,col=2) acf(residuals(mciclos6),ci.type="ma",lag.max=36) pacf(residuals(mciclos6),lag.max=36) eacf(residuals(mciclos6)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 test=shapiro.test(residuals(mciclos6)) #Test de normalidad sobre residuales de ajuste #Gráfico de normalidad con información del test Shapiro qqnorm(residuals(mciclos6),cex=1.5) qqline(residuals(mciclos6),lty=2,lwd=2,col=2) legend("topleft",legend=c("Estadı́stico W",round(test$statistic,digits=4),"Valor P", round(test$p.value,digits=4)),cex=0.8,ncol=2) Código R 8.24. Ajuste de ciclos ARMA(6,7)b sobre residuos estructurales Êt . Objeto R que guarda el modelo ajustado es mciclos7. #Ajuste segundo modelo identificado con armasubsets. Este modelos es modificado en mciclos7 mciclos7i=Arima(et1,order=c(6,0,7),fixed=c(c(0,NA,rep(0,3),NA),c(rep(0,5),NA,NA)), include.mean=F,method="ML") layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos7i)) abline(h=0,col=2) plot(as.numeric(fitted(mciclos7i)),residuals(mciclos7i)) abline(h=0,col=2) acf(residuals(mciclos7i),ci.type="ma",lag.max=36) pacf(residuals(mciclos7i),lag.max=36) #Ajuste modelo ARMA(6,7)b mciclos7=Arima(et1,order=c(6,0,7),fixed=c(c(0,NA,rep(0,3),NA),c(NA,rep(0,4),NA,NA)), include.mean=F,method="ML") summary(mciclos7) est=cbind(Estimación=mciclos7$coef[mciclos7$coef!=0],s.e=sqrt(diag(mciclos7$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) tabla=cbind(est,z0,vp) tabla hatciclos7=ts(fitted(mciclos7),freq=4,start=c(1956,1)) ES layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot.ts(residuals(mciclos7)) abline(h=0,col=2) plot(as.numeric(hatciclos7),residuals(mciclos7)) abline(h=0,col=2) acf(residuals(mciclos7),ci.type="ma",lag.max=36) pacf(residuals(mciclos7),lag.max=36) test=shapiro.test(residuals(mciclos7)) #Test de normalidad sobre residuales de ajuste #Gráfico de normalidad con información del test Shapiro qqnorm(residuals(mciclos7),cex=1.5) qqline(residuals(mciclos7),lty=2,lwd=2,col=2) legend("topleft",legend=c("Estadı́stico W",round(test$statistic,digits=4),"Valor P", round(test$p.value,digits=4)),cex=0.8,ncol=2) Código R 8.25. Aproximación del ajuste total de la serie como la suma del ajuste del modelo exponencial más el ajuste de los ciclos ARMA. Cálculo del AIC y BIC aproximados de cada ajuste total. 8.7. CODIGO R USADO 289 7 ythat1=ythat.estruct+hatciclos1 ythat2=ythat.estruct+hatciclos2 ythat3=ythat.estruct+hatciclos3 ythat4=ythat.estruct+hatciclos4 ythat5=ythat.estruct+hatciclos5 ythat6=ythat.estruct+hatciclos6 ythat7=ythat.estruct+hatciclos7 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Cálculo de AICs y BICs de todos los ajustes incluyendo los del modelo exponencial pestruct=length(coef(modelo1)) #Número de parámetros en modelo inicial AICstodos=cbind(crit.inf(modelo1),AIC.aprox(mciclos1),AIC.aprox(mciclos2),AIC.aprox(mciclos3), AIC.aprox(mciclos4),AIC.aprox(mciclos5),AIC.aprox(mciclos6),AIC.aprox(mciclos7)) AICstodos BICstodos=cbind(crit.inf(modelo1,AIC="FALSE"),BIC.aprox(mciclos1),BIC.aprox(mciclos2),BIC.aprox(mciclos3), BIC.aprox(mciclos4),BIC.aprox(mciclos5),BIC.aprox(mciclos6),BIC.aprox(mciclos7)) BICstodos medidas=rbind(AICstodos,BICstodos) dimnames(medidas)=list(c("AIC","BIC"),c("Estructura","Estructura+ARMA(2,2)","Estructura+AR(6)", "Estructura+ARMA(1,8)","Estructura+ARMA(2,5)","Estructura+SARMA(1,2)(0,1)[4]", "Estructura+ARMA(6,7)a","Estructura+ARMA(6,7)b")) medidas Código R 8.26. Aproximación del pronóstico total de la serie como la suma del pronóstico del modelo exponencial más el pronóstico de los ciclos ARMA. Cálculo de precisión de los pronósticos totales. pred.ciclos1=ts(forecast(mciclos1,h=m)$mean,freq=4,start=c(1993,4)) ytpron1=pred.estruct+pred.ciclos1 accuracy(ytpron1,ytf) pred.ciclos2=ts(forecast(mciclos2,h=m)$mean,freq=4,start=c(1993,4)) ytpron2=pred.estruct+pred.ciclos2 accuracy(ytpron2,ytf) ES pred.ciclos3=ts(forecast(mciclos3,h=m)$mean,freq=4,start=c(1993,4)) ytpron3=pred.estruct+pred.ciclos3 accuracy(ytpron3,ytf) pred.ciclos4=ts(forecast(mciclos4,h=m)$mean,freq=4,start=c(1993,4)) ytpron4=pred.estruct+pred.ciclos4 accuracy(ytpron4,ytf) pred.ciclos5=ts(forecast(mciclos5,h=m)$mean,freq=4,start=c(1993,4)) ytpron5=pred.estruct+pred.ciclos5 accuracy(ytpron5,ytf) pred.ciclos6=ts(forecast(mciclos6,h=m)$mean,freq=4,start=c(1993,4)) ytpron6=pred.estruct+pred.ciclos6 accuracy(ytpron6,ytf) pred.ciclos7=ts(forecast(mciclos7,h=m)$mean,freq=4,start=c(1993,4)) ytpron7=pred.estruct+pred.ciclos7 accuracy(ytpron7,ytf) 290 CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA Código R 8.27. Gráficas de la serie real y ajustada mediante la suma de la estimación de la estructura exponencial más los ciclos ARMA. También se grafican los respectivos pronósticos en cada caso. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 layout(rbind(c(1,1,2,2),c(3,3,4,4))) plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat1,col=2) lines(ytpron1,col=4) legend("topleft",legend=c("Original","Estructura + ciclos ARMA(2,2)","pronosticado"), col=c(1,2,4),lty=1) plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat2,col=2) lines(ytpron2,col=4) legend("topleft",legend=c("Original","Estructura + ciclos AR(6)","Pronosticado"), col=c(1,2,4),lty=1) plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat3,col=2) lines(ytpron3,col=4) legend("topleft",legend=c("Original","AEstructura + ciclos ARMA(1,8)","Pronosticado"), col=c(1,2,4),lty=1) plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat4,col=2) lines(ytpron4,col=4) legend("topleft",legend=c("Original","Estructura + ciclos ARMA(2,5)","Pronosticado"), col=c(1,2,4),lty=1) layout(rbind(c(1,1,2,2),c(0,3,3,0))) plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat5,col=2) lines(ytpron5,col=4) legend("topleft",legend=c("Original","Estructura + ciclos SARMA(1,2)(0,1)[4]","Pronosticado"), col=c(1,2,4),lty=1) plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat6,col=2) lines(ytpron6,col=4) legend("topleft",legend=c("Original","Estructura + ciclos ARMA(6,7)a","Pronosticado"), col=c(1,2,4),lty=1) ES plot(yt,main="Serie real, ajustes\nModelo exponencial cúbico estacional") lines(ythat7,col=2) lines(ytpron7,col=4) legend("topleft",legend=c("Original","Estructura + ciclos ARMA(6,7)b","Pronosticado"), col=c(1,2,4),lty=1) Código R 8.28. Comparación gráfica de los pronósticos. Tenga en cuenta que se grafican en total 9 series incluyendo a los valores reales en los perı́odos pronosticados, por esto los argumentos pch (para el sı́mbolo de los puntos a graficar) y col (para el color de la lı́neas) usados en las funciones plot() y legend() se especifican iguales a un vector con 9 entradas, una para cada una de las columnas de la matriz guardada en el objeto de nombre p, respectivamente. #Comparando todos los pronósticos con valores reales win.graph(height=16,width=16) #Juntando en una matriz los valores reales y pronosticados (colocados en columnas) #obteniendo un objeto de serie de tiempo multivariado 8.7. CODIGO R USADO 291 p=cbind(ytf,pred.estruct,ytpron1,ytpron2,ytpron3,ytpron4,ytpron5,ytpron6,ytpron7) colnames(p)=c("Real","Estructura","Estructura+ARMA(2,2)","Estructura+AR(6)","Estructura+ARMA(1,8)", "Estructura+ARMA(2,5)","Estructura+SARMA(1,2)(0,1)[4]","Estructura+ARMA(6,7)a","Estructura+ARMA(6,7)b") p TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 axis(1,at=time(p),labels=c("1993.Q4","1994.Q1","1994.Q2","1994.Q3")) 7 plot(p,plot.type="single",type="b",pch=c(19,1:8),col=c(1:9),lty=1,lwd=2,ylim=c(1400,2000), ylab="Producción",xaxt="n") ES legend("topleft",legend=c("Serie Original","Pron. sin ciclos","Estructura+ARMA(2,2)","Estructura+AR(6)", "Estructura+ARMA(1,8)","Estructura+ARMA(2,5)","Estructura+SARMA(1,2)(0,1)[4]","Estructura+ARMA(6,7)a", "Estructura+ARMA(6,7)b"),pch=c(19,1:8),lty=1,col=c(1:9),lwd=2,bty="n") CAPÍTULO 8. MODELACI ÓN DE UNA SERIE CON ERRORES ARMA ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 292 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 9 Modelos ARIMA 9.1. Introducción Todas las series que hemos tratado de modelar a través de la identificación y ajuste de una estructura de tendencia y estacionalidad, no son estacionarias, puesto que la media de tales series es función del tiempo (no es constante) y en el caso de series con componentes multiplicativas, tenemos además varianza no constante. Los ciclos no identificados y que permanecen en la componente de error en esta estrategia de modelación, han sido ajustados mediante modelos ARMA estacionarios. En este capı́tulo abordaremos otra estrategia de modelación para series no estacionarias con tendencia y sin estacionalidad, es decir, series de la forma Yt = Tt + Et , modelo conocido como ARIMA. En el Capı́tulo siguiente se considerará el caso de series con tendencia y estacionalidad, Y t = Tt + St + Et , y el modelo en este caso es denominado SARIMA. Los modelos ARIMA-SARIMA también son conocidos como modelos de Box-Jenkins. 9.2. Procesos homogéneos ES La gran mayorı́a de los procesos económicos, ambientales, etc., no son estacionarios y su nivel medio varı́a con el tiempo (Martı́nez [8]). Considere la serie mensual presentada en la Sección 5.3.1, la cual fue simulada bajo el modelo Yt = 3500 + 200t + Et , Et ∼ R.BN(0, (4000)2), con n = 300 observaciones, ilustrada en la Figura 9.1, junto con su primera diferencia, ∇Y t = Yt − Yt−1 . De la gráfica de la serie Y t y de su ACF muestral, es claro que la serie no es estacionaria en covarianza; sin embargo, la serie ∇Y t de la primera diferencia (la cual es un filtro lineal de la serie original) sı́ es estacionaria en covarianza, pues es estable en media y varianza y la ACF presenta un comportamiento ergódico. Observe además que según el patrón en la ACF y PACF de la serie diferencia, ésta puede ser modelada como un MA(1) (ignorando el corte que se observa en k = 31 en la ACF, el orden MA puede tomarse igual a 1). 293 CAPÍTULO 9. MODELOS ARIMA 294 Serie Yt 0.5 7 −0.5 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1985 1990 1995 2000 2005 0 10 15 20 Lag Serie ∇Yt = Yt − Yt−1 ACF ∇Yt 30 35 25 30 35 0.0 25 −0.4 −0.2 ACF 0 −15000 5 Time 10000 1980 difer 0.0 ACF 0 20000 yt 50000 1.0 ACF Yt 1980 1985 1990 1995 2000 2005 Time 0 5 10 15 20 Lag 0.0 −0.2 −0.4 Partial ACF PACF ∇Yt 0 5 10 15 20 25 30 35 Lag Serie simulada como Yt = 3500 + 200t + Et , Et ∼ N (0, (4000)2 ) y su primera diferencia ES Figura 9.1: En este ejemplo vemos que al diferenciar la serie, es decir, al obtener a ∇Y t , se obtiene un proceso estacionario. Llamamos a ∇Yt proceso diferencia de orden 1 de Y t . Observe que ∇Yt = (1 − B)Yt . Llamaremos proceso diferencia de orden 2 de una serie Y t al proceso ∇2 Yt = ∇Yt −∇Yt−1 = Yt −2Yt−1 +Yt−2 = (1−B)2 Yt , y en general, llamamos proceso diferencia de orden d al proceso ∇ d Yt = (1 − B)d Yt . Cuando al diferenciar un proceso d veces, d ∈ Z + , se obtiene un proceso estacionario, entonces decimos que el proceso original es homog éneo de orden d. Por ejemplo, el proceso Y t = β0 + β1 t + Et , donde Et es estacionario, es 9.2. PROCESOS HOMOG ÉNEOS 295 un proceso homogéneo de orden 1. En efecto al diferenciarlo una vez tenemos (9.1) 7 ∇Yt = Yt − Yt−1 = β0 + β1 t + Et − [β0 + β1 (t − 1) + Et−1 ] = β1 + Et − Et−1 = β1 + Ut TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 donde Ut = Et − Et−1 , es estacionario. Observe que si E t es un ruido blanco entonces ∇Yt es un MA(1) de media β 1 , con parámetro θ1 = −1. En general, procesos generados como una tendencia polinómica de orden d más un proceso estacionario cualquiera E t , será homogéneo de orden d: Yt = β0 + β1 t + β2 t2 + · · · + βd td + Et , Et estacionario. (9.2) Luego, la serie simulada como Y t = 3500 + 200t+ Et, Et ∼ N(0, (4000)2) es definida por un proceso homogéneo de orden d = 1 y por tanto ∇Y t = 200 + Et − Et−1 es un proceso MA(1) estacionario con media 200. Esto último es verificado, de la ACF y PACF muestrales para ∇Y t , y también de la correspondiente EACF muestral que se muestra a continuación: esta EACF nos indica claramente que AR/MA 0 1 2 3 4 5 6 7 0 x x x x x x x x 1 o x x o x x o o 2 o o o o x x x x 3 o o o x x o x o EACF muestral para ∇Y t 4 5 6 7 8 9 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o o x o x o o o o o x x o o 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o ES el modelo ARMA apropiado es p = 0 y q = 1, es decir un MA(1). Ajustamos este modelo a la serie ∇Y t usando la función R Arima() de la librerı́a forecast, y obtenemos lo siguiente: Tabla par ámetros estimados Modelo MA(1) para ∇Y t Parámetro Estimación s.e Z0 P (|Z| > |Z0 |) θ1 -1.0000 0.0090 -110.9714 0.0000 Intercepto (β1 ) 201.6340 2.6545 75.9605 0.0000 AIC = 5815.89, BIC = 5826.99, σ̂2 = 15777871 Observe que el intercepto en los resultados del ajuste corresponde a la pendiente β1 y no a β0 , de acuerdo a la ecuación (9.1), luego, β̂1 = 201.6340. t ) = 15777871 (el verdadero valor También tenemos que θ̂1 = −1 y σ̂ 2 = VAR(E era 16000000). En la Figura 9.2 se presenta los gráficos de los residuales Êt y su ACF y PACF muestrales. Obviando el corte en k = 31 en la ACF y PACF, y teniendo en cuenta los resultados de la EACF, del test de Ljung-Box, y el test de normalidad, podemos concluir que los errores E t provienen de un ruido blanco normal. CAPÍTULO 9. MODELOS ARIMA 296 7 5000 5000 residuals(ajustediferencia) Residuos ajuste MA(1) para ∇Yt 1980 1985 1990 1995 2000 0 2005 −10000 0 10000 ACF residuos ajuste MA(1) para ∇Yt PACF residuos ajuste MA(1) para ∇Yt −0.05 −0.15 −0.05 Partial ACF 0.05 0.05 fitted(ajustediferencia) 0 5 10 15 20 25 30 35 0 5 10 Lag 15 20 25 30 35 Lag Gráficos para análisis de residuales Êt del ajuste MA(1) sobre la serie ∇Yt ES Figura 9.2: 5000 Time −0.15 ACF −10000 −10000 0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(ajustediferencia) Residuos ajuste MA(1) para ∇Yt Test Ljung-Box para Êt Modelo MA(1) ajustado a ∇Y t m QLB g.l P (χ2m > QLB ) 6 3.82 6.00 0.70 12 6.82 12.00 0.87 18 13.76 18.00 0.74 24 16.00 24.00 0.89 30 18.76 30.00 0.94 36 27.97 36.00 0.83 Test Shapiro Wilk para residuos Êt Modelo MA(1) ajustado a ∇Y t Estadı́stico W 0.997042818926275 Valor P 0.862417555947899 9.2. PROCESOS HOMOG ÉNEOS 1 o o x x o x x o 2 o o o o o o x x 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o 7 0 o x x x x o x x TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AR/MA 0 1 2 3 4 5 6 7 EACF muestral para residuos Êt Modelo MA(1) ajustado a ∇Y t 3 4 5 6 7 8 9 10 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x o o o o o o o x o o o o o o x x o x o o o o 297 El código R usado para el cálculo de la diferencia de la serie y su ajuste fue el siguiente: Código R 9.1. library(TSA) library(forecast) yt=scan(file.choose()) #leer archivo datossimuleje1recursivos.txt yt=ts(yt,freq=12,start=c(1980,1)) #Creando serie primera diferencia Y(t)-Y(t-1) difer=diff(yt) #Graficando la serie Yt, su ACF, y la serie primera diferencia con sus ACF y PACF nf=layout(rbind(c(1,2),c(3,4),c(5,6))) plot(yt,main=expression(paste("Serie",sep=" ",Y[t]))) acf(as.numeric(yt),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF",sep=" ",Y[t]))) plot(difer,main=expression(paste("Serie",sep=" ",nabla,sep="",Y[t]==Y[t]-Y[t-1]))) abline(h=0,lty=2) acf(as.numeric(difer),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF",sep=" ",nabla,sep="",Y[t]))) pacf(as.numeric(difer),lag.max=36,ci.col="red",main=expression(paste("PACF",sep=" ",nabla,sep="",Y[t]))) ES #Calculando la EACF muestral para la serie primera diferencia eacf(difer) #Ajustando modelo MA(1) identificado según EACF para la primera diferencia, ajustediferencia=Arima(difer,order=c(0,0,1)) summary(ajustediferencia) #para completar información de tabla de parámetros ajustados est=cbind(Estimación=ajustediferencia$coef,s.e=sqrt(diag(ajustediferencia$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) #Chequeo sobre residuales ajuste MA(1) para primera diferencia de la serie simulada nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(ajustediferencia), main=expression(paste("Residuos ajuste MA(1) para ",sep=" ",nabla,sep="",Y[t]))) abline(h=0,lty=2) plot(fitted(ajustediferencia),residuals(ajustediferencia), main=expression(paste("Residuos ajuste MA(1) para ",sep=" ",nabla,sep="",Y[t]))) abline(h=0,lty=2) CAPÍTULO 9. MODELOS ARIMA 298 acf(as.numeric(residuals(ajustediferencia)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos ajuste MA(1) para",sep=" ",nabla,sep="",Y[t]))) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Creando función para resultados Ljung-Box BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } 7 pacf(as.numeric(residuals(ajustediferencia)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos ajuste MA(1) para",sep=" ",nabla,sep="",Y[t]))) BP.LB.test(residuals(ajustediferencia),maxlag=36,type="Ljung") xtable::xtable(BP.LB.test(residuals(ajustediferencia),maxlag=36,type="Ljung")) #Calculando EACF para residuos del ajuste MA(1) de la primera diferencia eacf(residuals(ajustediferencia)) #Teste de normalidad para residuos del ajuste MA(1) de la primera diferencia shapiro.test(residuals(ajustediferencia)) Para un proceso de la forma Y t = β0 + β1 t + β2 t2 + Et , con Et estacionario y de media cero, se tiene que ∇Yt = (β1 − β2 ) + 2β2 t + Ut , con Ut = Et − Et−1 ∇2 Yt = 2β2 + Wt , con Wt = Et − 2Et−1 + Et−2 (9.3) (9.4) ES Claramente, ∇Yt no es estacionario y su media es E[∇Y t ] = (β1 − β2 ) + 2β2 t, mientras que ∇2 Yt es estacionario y su media es E[∇ 2 Yt ] = 2β2 , y si Et es un ruido blanco, entonces ∇ 2 Yt es una proceso MA(2) de media dada y parámetros θ1 = −2, θ2 = 1. Por ejemplo, sea el proceso definido por Y t = 10000 + 1.8t + 15t2 + Et , con Et ∼ R.BN(0, (5000)2). Una realización de n = 300 observaciones de este proceso fue obtenido por simulación y la serie junto con su ACF es presentada en la Figura 9.3. Es evidente que la serie presenta tendencia cuadrática y que no es estacionaria en covarianza. Al calcular la diferencias de orden 1 y 2 obtenemos las series ∇Y t y ∇2 Yt que se muestran en la Figura 9.4, junto con sus respectivas ACF; en la misma figura también se observa la PACF de la diferencia de orden 2. Puede observarse que la serie de la diferencia de orden 1 es una serie con tendencia lineal y por tanto no es estacionaria, pero la serie ∇2 Yt oscila alrededor de una tendencia constante y es estacionaria según su ACF; más aún, de acuerdo a los patrones en su ACF y PACF, esta diferencia 9.2. PROCESOS HOMOG ÉNEOS 299 7 600000 0 200000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 yt 1000000 1400000 Serie simulada Yt = 10000 + 1.8t + 15t2 + Et 1980 1985 1990 1995 2000 2005 Time ACF −0.5 0.0 0.5 1.0 ACF Yt 0 5 10 15 20 25 30 35 Lag Figura 9.3: Serie simulada Yt = 10000 + 1.8t + 15t2 + Et , Et ∼ R.BN (0, (5000)2 ) y su ACF muestral. ES sigue un proceso MA(2) (obviando los cortes después de k = 15, en la ACF), lo cual también es evidenciado a partir de la EACF muestral que se ilustra a continuación: AR/MA 0 1 2 3 4 5 6 7 0 x x x x x x x x 1 x o o o x x x x EACF para ∇ 2 Yt 2 3 4 5 o o o o o o o o o o o o o x o o x o o x x x x x x o o x x o o o = (1 − B)2 Yt 6 7 8 o o o o o o o o o o o o o o o x o o x x o x o o 9 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o CAPÍTULO 9. MODELOS ARIMA 300 Serie ∇Yt 0.1 7 −0.3 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1985 1990 1995 2000 2005 0 5 10 15 20 Time Lag Serie ∇2Yt ACF ∇2Yt 25 30 35 25 30 35 −0.2 −0.6 −30000 ACF 0 20000 0.2 1980 difer2 −0.1 ACF 0 −20000 difer1 20000 ACF ∇Yt 1980 1985 1990 1995 2000 2005 Time 0 5 10 15 20 Lag −0.2 −0.6 Partial ACF PACF ∇2Yt 0 5 10 15 20 25 30 35 Lag Diferencias de orden 1 y 2 de serie simulada Yt = 10000 + 1.8t + 15t2 + Et , Et ∼ R.BN (0, (5000)2 ). ES Figura 9.4: Al realizar el ajuste del modelo MA(2) a la serie ∇ 2 Yt , se obtuvieron los siguientes resultados Tabla par ámetros estimados Modelo MA(2) para ∇ 2 Yt Parámetro Estimación s.e Z0 P (|Z| > |Z0 |) θ1 -1.9634 0.0242 -81.1580 0.0000 θ2 0.9636 0.0237 40.7018 0.0000 Intercepto (2β2 ) 29.9791 0.4325 69.3094 0.0000 AIC = 5937.71, BIC = 5952.49, σ̂2 = 24492346 Observamos que θ̂1 = −1.9634, θ̂2 = 0.9636, βˆ2 = 29.9791/2 = 14.98955, todos 9.2. PROCESOS HOMOG ÉNEOS 301 7 muy próximos de los verdaderos valores, -2, 1, 15, respectivamente. Ası́ mismo, la varianza estimada es próxima de la verdadera, 25000000. El análisis de los residuales del ajuste Êt , basados en los siguientes resultados, indican que Et es aproximadamente un ruido blanco normal. Residuos ajuste MA(2) para ∇2Yt 1990 1995 2000 2005 −5000 0 10000 30000 ACF residuos ajuste MA(2) para ∇2Yt PACF residuos ajuste MA(2) para ∇2Yt Partial ACF 0.00 −0.10 0.00 0.10 fitted(ajustedifer2) −0.10 ACF ES −20000 Time 0 Figura 9.5: 5000 15000 1985 −15000 residuals(ajustedifer2) 5000 −5000 1980 0.10 −15000 residuals(ajustedifer2) 15000 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Residuos ajuste MA(2) para ∇2Yt 5 10 15 20 Lag 25 30 35 0 5 10 15 20 25 30 35 Lag Gráficos para análisis de residuales Êt del ajuste MA(2) sobre la serie ∇2 Yt 0 o x x x x x x x 1 o o o x x o x x 2 o o o x o o x x 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AR/MA 0 1 2 3 4 5 6 7 EACF muestral para residuos Êt Modelo MA(2) ajustado a ∇ 2 Yt 3 4 5 6 7 8 9 10 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o o o o x x o o o o o o x o x o o o o o x o o x o o o o 7 CAPÍTULO 9. MODELOS ARIMA 302 Test Ljung-Box para Êt Modelo MA(2) ajustado a ∇ 2 Yt m QLB g.l P (χ2m > QLB ) 6 1.27 6.00 0.97 12 5.03 12.00 0.96 18 10.48 18.00 0.92 24 25.85 24.00 0.36 30 29.92 30.00 0.47 36 37.94 36.00 0.38 Test Shapiro Wilk para residuos Êt Modelo MA(2) ajustado a ∇ 2 Yt Estadı́stico W 0.996274024248123 Valor P 0.710811636435501 A continuación se exhibe el código R usado en este segundo ejemplo. Código R 9.2. library(TSA) library(forecast) ES #Creando Función usuario para Test Ljung-Box BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } yt=scan(file.choose()) #leer archivo datossimulejem2ARIMA.txt yt=ts(yt,freq=12,start=c(1980,1)) #Calcular los procesos diferencia de primer y segundo orden difer1=diff(yt) difer2=diff(yt,1,2) 9.3. RAÍZ UNITARIA AUTORREGRESIVA 303 #Obtención EACF del proceso diferencia de orden 2 eacf(difer2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Gráficas de las series diferencias de orden 1 y 2 y sus ACF, #además se grafica la PACF de la serie diferencia de orden 2 7 #Gráfica de la serie Yt y de su ACF muestral nf=layout(rbind(c(0,1,1,0),c(2,2,2,2))) plot(yt, main=expression(paste("Serie simulada",sep=" ",Y[t]==10000+1.8*t+15*tˆ2+E[t]))) acf(as.numeric(yt),lag.max=36,ci.type="ma",ci.col="red",main=expression(paste("ACF",sep=" ",Y[t]))) nf=layout(rbind(c(1,2),c(3,4),c(5,6))) plot(difer1,main=expression(paste("Serie ",sep=" ",nabla,sep="",Y[t]))) acf(as.numeric(difer1),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF",sep=" ",nabla,sep="",Y[t]))) plot(difer2,main=expression(paste("Serie ",sep=" ",nablaˆ2,sep="",Y[t]))) acf(as.numeric(difer2),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF",sep=" ",nablaˆ2,sep="",Y[t]))) pacf(as.numeric(difer2),lag.max=36,ci.col="red", main=expression(paste("PACF",sep=" ",nablaˆ2,sep="",Y[t]))) #Ajustando modelo MA(2) a serie diferencia de orden 2 ajustedifer2=Arima(difer2,order=c(0,0,2)) summary(ajustedifer2) #Completando información de tabla de parámetros estimados del modlo ajustado est=cbind(Estimación=ajustedifer2$coef,s.e=sqrt(diag(ajustedifer2$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) #Chequeo sobre residuales del ajuste MA(2) para segunda diferencia de la serie simulada nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(ajustedifer2), main=expression(paste("Residuos ajuste MA(2) para ",sep=" ",nablaˆ2,sep="",Y[t]))) abline(h=0,lty=2) plot(fitted(ajustedifer2),residuals(ajustedifer2), main=expression(paste("Residuos ajuste MA(2) para ",sep=" ",nablaˆ2,sep="",Y[t]))) abline(h=0,lty=2) ES acf(as.numeric(residuals(ajustedifer2)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos ajuste MA(2) para",sep=" ",nablaˆ2,sep="",Y[t]))) pacf(as.numeric(residuals(ajustedifer2)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos ajuste MA(2) para",sep=" ",nablaˆ2,sep="",Y[t]))) eacf(residuals(ajustedifer2)) BP.LB.test(residuals(ajustedifer2),maxlag=36,type="Ljung") shapiro.test(residuals(ajustedifer2)) 9.3. Raı́z unitaria autorregresiva Considere un modelo ARMA(p,q) Φp (B)Yt = Θq (B)Et , Et ∼ R.BN(0, σ 2 ) tal que una de las p raı́ces del polinomio autorregresivo Φ p (B) es igual a 1. Decimos que Yt tiene una raı́z unitaria autorregresiva o simplemente una raı́z CAPÍTULO 9. MODELOS ARIMA 304 unitaria y ası́, tenemos que Φ p (B) = (1 − B)Φp−1 (B), donde Φp−1 (B) tiene raı́ces con módulo fuera del cı́rculo unitario. En este caso, (1 − B)Φp−1 (B)Yt = Θq (B)Et =⇒ Φp−1 (B)∇Yt = Θq (B)Et (9.5) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 es decir, ∇Yt es un ARMA(p−1,q). Para una serie de tiempo proveniente de un proceso con raı́z unitaria, su ACF y PACF presentan el patrón de cola decreciente - corte, respectivamente, tı́pico de un AR, pero la ACF decrece lentamente mientras que la PACF presenta un corte con valor muy próximo de 1 en k = 1 y para el resto de rezagos los valores son casi cero. Ver ejemplo la Figura 9.6. −0.5 0.0 ACF 0.5 1.0 ACF Yt 0 5 10 15 20 25 30 35 25 30 35 Lag 0.6 0.4 0.2 0.0 Partial ACF 0.8 1.0 PACF Yt 0 5 10 15 20 Lag Figura 9.6: ACF y PACF de una serie proveniente de un proceso ARIMA(p,1,q) ES También puede presentarse el caso de más de una raı́z unitaria. Cuando existen d raı́ces unitarias, se requiere diferenciar d veces para obtener una serie estacionaria, es decir, Φ p−d (B)(1 − B)d Yt = Θq (B)Et , entonces ∇d Yt ∼ ARMA(p − d, q) (en esta notación asumimos p ≥ d). En la práctica son comunes los valores d = 1, 2. 9.4. Caminata aleatoria 9.4.1. Caminata aleatoria sin tendencia Sea un proceso AR(1), esto es, Y t = φ1 Yt−1 + Et , donde Et ∼ R.BN(0, σ 2 ). Si φ1 = 1, tenemos un proceso no estacionario conocido como caminata aleatoria sin tendencia: Yt = Yt−1 + Et , Et ∼ R.BN(0, σ 2 ) (9.6) 9.4. CAMINATA ALEATORIA 305 Asumiendo que el proceso inicia en t = 0, con un valor y 0 , puede mostrarse que t Yt = y0 + (9.7) Ei 7 i=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 E[Yt ] = y0 VAR[Yt ] = tσ 2 ! t t+k COV[Yt , Yt+k ] = COV Ei , i=1 " Ei = tσ 2 (9.8) (9.9) (9.10) i=1 t Corr[Yt , Yt+k ] = t(t + k) (9.11) Observe que lı́mt→∞ VAR[Yt ] = ∞, es decir, la varianza crece y no converge a un valor finito, mientras que para t grande la ACF tomará valores próximos a 1 y decrecerá muy lentamente con k. 9.4.2. Caminata aleatoria con tendencia o deriva Considere ahora un proceso de la forma Yt = δ + Yt−1 + Et , Et ∼ R.BN(0, σ 2 ) (9.12) este proceso es conocido como caminata aleatoria con tendencia o deriva. Suponiendo que el proceso inicia en t = 0 con un valor y 0 , se tiene que t Yt = y0 + δt + Ei (9.13) i=1 E[Yt ] = y0 + δt VAR[Yt ] = tσ 2 ! t COV[Yt , Yt+k ] = COV Ei , i=1 ES t+k t Corr[Yt , Yt+k ] = t(t + k) " Ei = tσ 2 (9.14) (9.15) (9.16) i=1 (9.17) de nuevo, lı́mt→∞ VAR[Yt ] = ∞ y la ACF no es ergódica. La caminata aleatoria con tendencia también es conocida como modelo de tendencia estocástica. Nota: 1. Observe que al reescribir las ecuaciones (9.6) y (9.12) en términos de ∇Yt = Yt − Yt−1 , obtenemos que el proceso diferencia de orden 1 es estacionario y por tanto, una caminata aleatoria es un proceso homogéneo de orden d = 1. CAPÍTULO 9. MODELOS ARIMA 306 2. Una caminata aleatoria no presenta reversi ón a la media, es decir, va hacia arriba y abajo en forma aleatoria sin una tendencia a regresar a determinado nivel. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 3. A pesar del comportamiento incierto de la caminata aleatoria, su primera diferencia es una serie bien comportada: se comporta como un ruido blanco (aunque su media puede ser distinta de cero, dependiendo de δ). 9.5. Procesos integrados Se dice que una serie no estacionaria es integrada si su no estacionariedad puede deshacerse diferenciándola (Diebold [3]). Por tanto, los procesos homogéneos son procesos integrados. Cuando sólo se requiere una diferencia, la serie es denominada integrada de orden 1 y se denota por I(1). En general, si se requieren d (d ∈ Z+ ) diferencias para obtener la estacionariedad, el proceso es integrado de orden d y es denotado por I(d). Ası́, un ruido blanco es un proceso I(0), mientras que una caminata aleatoria es un proceso I(1), estos son los proceso integrados más simples. Note que el orden de integración d es igual a la cantidad de raı́ces unitarias autorregresivas. 9.5.1. Procesos autorregresivos integrados de medias m óviles o ARIMA Se dice que una serie de tiempo Y t sigue un proceso autorregresivo integrado de media móvil si su d-ésima diferencia, ∇ d Yt , es un proceso ARMA estacionario, es decir, Φp (B)∇d Yt = Θq (B)Et , Et ∼ R.BN(0, σ 2 ) (9.18) Φp (B)(1 − B)d Yt = Θq (B)Et , Et ∼ R.BN(0, σ 2 ) (9.19) o equivalentemente, ES donde las raı́ces del polinomio autorregresivo Φ p (B) tienen módulo mayor a 1, y denotamos el proceso por ARIMA(p,d,q). De acuerdo a lo anterior, podemos decir que I(1)=ARIMA(0,1,0) (o sea, una caminata aleatoria), y I(0)=ARIMA(0,0,0) (o sea, un ruido blanco). También, cuando p = 0, el proceso es denotado por IMA(d,q), y si q = 0, el proceso es simplemente denotado por ARI(p,d). ( p+d (B) = Φp (B)(1 − B)d , podemos también escribir el modelo Si denotamos Φ ARIMA de la siguiente forma ( p+d (B)Yt = Θq (B)Et , Et ∼ R.BN(0, σ 2 ) Φ (9.20) ( p+d (B) tiene d raı́ces unitarias, de ahı́ que el donde el polinomio autorregresivo Φ proceso seguido por Y t no es estacionario. Φp (B) y Θq (B) son, respectivamente los polinomios autorregresivos y de medias móviles del proceso estacionario ∇d Y t . 9.6. AJUSTE Y PRON ÓSTICO DE MODELOS ARIMA 307 9.6. Ajuste y pronóstico de modelos ARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Una vez determinado el orden apropiado de diferenciación, d, de la serie, se identifican los órdenes p y q para la serie diferenciada ∇ d Yt de la misma forma que en el caso estacionario; luego, se ajusta el proceso completo ARIMA(p,d,q) lo cual podemos hacer usando la función R Arima() de la librerı́a forecast, indicando en el argumento order=c(p,d,q) los órdenes p, d, q del modelo ARIMA. En cuanto a los pronósticos, de acuerdo a lo visto en la Sección 7.10, el pronóstico óptimo para l perı́odos adelante de t = n, que minimiza el error cuadrático medio de pronóstico, es dado por Ŷn (l), que corresponde a la esperanza condicional del valor de la serie en t = n + l, l ≥ 1, dada la información o historia conocida de la serie, es decir, Ŷn (l) = E[Yn+l |Yn , Yn−1, . . .], (9.21) en (l) = Yn+l − Ŷn (l) (9.22) y el error de pronóstico es Para obtener fácilmente los pronósticos expresamos el modelo ARIMA en su ( p+d (B). Sea forma de ecuación en diferencia, para ello usamos el polinomio Φ ( p+d (B) = Φp (B)(1 − B)d = 1 − φ̃1 B − · · · − φ̃p+dB p+d Φ (9.23) entonces el modelo ARIMA(p,d,q) general en (9.20) puede escribirse como la siguiente ecuación en diferencia (es decir, como un ARMA(p+d,q)), (1 − φ̃1 B − · · · − φ̃p+d B p+d )Yt = (1 + θ1 B + · · · + θq B q )Et (9.24) ası́, para t = n + l, tenemos Yn+l = φ̃1 Yn+l−1 + φ̃2Yn+l−2 +· · ·+ φ̃p+dYn+l−p−d +En+l +θ1 En+l−1 +· · ·+θq En+l−q (9.25) ES y tomando la esperanza condicional con origen de tiempo en t = n, obtenemos que la ecuación de pronóstico es dada por CAPÍTULO 9. MODELOS ARIMA 308 Ŷn (l) =φ̃1 Ŷn (l − 1) + φ̃2 Ŷn (l − 2) + · · · + φ̃p+d Ŷn (l − p − d) E[Yn+j |Yn , Yn−1 , . . .] si j ≥ 1 Ŷn (j) = Yn+j si j ≤ 0, 0 si j ≥ 1 Ên (j) = En+j si j ≤ 0, TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 donde (9.26) 7 + Ên (l) + θ1 Ên (l − 1) + · · · + θq Ên (l − q) (9.27) (9.28) y desde que los errores E t no son observables, entonces tomamos en su lugar a los residuales Êt . Para estudiar las propiedades del error de pronóstico e n (l), l perı́odos adelante de t = n, para una serie modelada según un ARIMA(p,d,q), consideramos una nueva representación para el proceso ARIMA, en la cual el modelo es escrito en la forma de un proceso lineal truncado (Cryer y Chan [2], Wei [9]), Yn+l = Cn (l) + In (l) (9.29) donde, In (l) = En+l + ψ1 En+l−1 + ψ2 En+l−2 + · · · + ψl−1 En+1 para l ≥ 1 (9.30) y si el proceso es invertible, C n (l) es una cierta función de la historia finita definida por Y1 , . . . , Yn . Para ello, escribimos el proceso en su forma autorregresiva, ∞ Φp (B)(1 − B)d (9.31) Π(B)Yt = Et , con Π(B) = 1 − πj B j = Θ (B) q j=1 ES o equivalentemente, ∞ Yt = πj Yt−j + Et (9.32) j=1 y ası́, para t = n + l tenemos Y n+l = polinomio Ψl−1 (B), ∞ πj Yn+l−j + En+l . Se define además el j=1 Ψl−1 (B) = 1 + ψ1 B + · · · + ψl−1 B l−1 (9.33) tal que m πm−i ψi = 0, para m = 1, 2, . . . , l − 1, con π0 = −1, ψ0 = 1. i=0 (9.34) 9.6. AJUSTE Y PRON ÓSTICO DE MODELOS ARIMA 309 Ası́, aplicando el operador Ψ l−1 (B) a la ecuación (9.32), con t = n+l, obtenemos ∞ Yn+l = l−1 + ψi En+l−i = Cn (l) + In (l), con (l) πj l−1 = i=0 πl−1+j−i ψi (9.35) i=0 7 j=1 (l) πj Yn−j+1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Luego, para el pronóstico óptimo l perı́odos adelante de t = n, es decir Ŷn (l) = E[Yn+l |Yn , Yn−1 , . . .], tenemos que ∞ Ŷn (l) = E[Cn (l)|Yn , Yn−1, . . .] + E[In (l)|Yn , Yn−1, . . .] = Cn (l) = (l) πj Yn−j+1, l ≥ 1, j=1 (9.36) Por tanto, para el error de pronóstico e t (l) = Yt+l − Ŷt (l) tenemos que en (l) = Cn (l) + In (l) − Cn (l) = En+l + ψ1 En+l−1 + ψ2 En+l−2 + · · · + ψl−1 En+1 (9.37) De lo anterior, se obtiene que para un proceso ARIMA general invertible, se cumple que E[en (l)] = 0 VAR[en (l)] = σ 2 l−1 ψj2 para l ≥ 1, (9.38) (9.39) j=0 por tanto, para una realización suficientemente grande (n grande), un intervalo de pronóstico de (1 − α)100 % puede calcularse como l−1 ψ̂j2 Ŷn (l) ± Zα/2 σ̂ 1 + (9.40) j=1 ES donde σ̂ y ψ̂j son estimados. Nota: 1. Observe que los pronósticos óptimos Ŷn (l) pueden ser obtenidos tanto con (9.26) como por (9.36), aunque la primera es la más práctica ya que en la (l) segunda expresión es necesario hallar los pesos π j , j = 1, 2, . . .. 2. De (9.26) es claro que los pronósticos con un horizonte mayor a p + d estarán basados en pronósticos, por tanto, sólo es recomendable realizar pronósticos de corto plazo. 3. Para series no estacionarias, los pesos ψ j no decaen a cero a medida que aumenta j (como sı́ ocurre en el caso estacionario). Por ejemplo, para una caminata aleatoria se puede mostrar que ψ j = 1 para todo j, de CAPÍTULO 9. MODELOS ARIMA 310 donde VAR[et (l)] = σ 2 l; para un modelo IMA(1,1), ψ j = 1 + θ1 , ∀j ≥ 1, luego VAR[et (l)] = σ 2 [1 + (l − 1)(1 + θ1 )2 ]; para un ARI(1,1) ψj = ! " ) j+1 *2 l−1 1−φ 1 . tanto, VAR[et (l)] = σ 2 1 + 1−φ1 1−φj+1 1 , 1−φ1 j ≥ 1 y por 7 j=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 9.7. Pruebas para raı́ces unitarias En la Sección 9.3 vinos que una raı́z unitaria aparece cuando el polinomio autorregresivo de un ARMA presenta una raı́z sobre el cı́rculo unitario, lo cual implica que es necesario diferenciar la serie para poder obtener estacionariedad. Los testes de raı́ces unitarias son una herramienta adicional a los análisis gráficos de la serie y su ACF para definir el grado de diferencia necesario a fin de obtener una serie estacionaria. De acuerdo a Guerrero [5], diferenciar de más conduce a un modelo más complejo de lo necesario y causa pérdida de eficiencia en la estimación de parámetros, además de la sobreestimación de la varianza del error de pronóstico, aunque no se afectará el insesgamiento ni la consistencia de los estimadores; pero subdiferenciar tiene consecuencias más graves pues conduce a la invalidez de los supuestos teóricos para los modelos estacionarios asumidos para la serie subdiferenciada, ya que no se logra la estacionariedad, y por tanto se invalida la interpretación de los resultados de los ajustes y pronósticos, además, se subestima la varianza del error de pronóstico y el modelo que se ajusta carece de capacidad adaptativa a efectos no estacionarios sobre el nivel de la serie. Para poder introducir los testes de raı́z unitaria, considere inicialmente el proceso AR(1) de media cero,Y t = φ1 Yt−1 +Et Et , ∼ R.BN(0, σ 2 ). Queremos probar H0 : φ1 = 1 versus H1 : φ1 < 1 (9.41) ES Suponga que |φ1 | < 1 y que estimamos φ 1 mediante la regresión de Y t en Yt−1 . Sea φ̂1,M C el estimador por mı́nimos cuadrados. Tenemos que el estimador de mı́nimos cuadrados es asintóticamente equivalentes al estimador de máxima verosimilitud, y n Yt Yt−1 t=1 φ̂1,M C = (9.42) n 2 Yt−1 t=1 n φ̂1,M C − φ1 = Et Yt−1 t=1 n t=1 entonces (φ̂1,M C − φ1 ) s.e(φ̂1,M C ) a (9.43) 2 Yt−1 ∼ N(0, 1) (9.44) 9.7. PRUEBAS PARA RA ÍCES UNITARIAS 311 donde S s.e(φ̂1,M C ) = + n 2 Yt−1 n (Yt − φ̂1,M C Yt−1 )2 (9.45) t=2 7 t=1 1 , con S = n−2 2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Sin embargo, si φ1 = 1 la aproximación normal ya no es aplicable. Para probar (9.41) es necesario estudiar el comportamiento del estadı́stico φ̂1,M C − 1. 9.7.1. Prueba de raı́z unitaria de Dickey-Fuller (DF) Caso 1: Yt ∼ AR(1) con media cero, es decir, Y t = φ1 Yt−1 + Et , modelo que podemos reescribir de la forma ∇Yt = φ∗1 Yt−1 + Et , con φ∗1 = φ1 − 1, Et ∼ R.BN(0, σ 2 ) (9.46) Luego, probar (9.41) es equivalente a probar H0 : φ∗1 = 0 versus H1 : φ∗1 < 0 (9.47) φ∗1 puede ser estimado mediante mı́nimos cuadrados en la regresión de ∇Y t en Yt−1 . Sea φ̂∗1,M C tal estimador. Definimos como estadı́stico de la prueba a φ̂∗1,M C 1 φ̂1,M C − 1 τ̂ = + n = +n , con S 2 = 2 2 n−2 S/ Yt−1 S/ Yt−1 t=1 n (∇Yt − φ̂∗1,M C Yt−1 )2 (9.48) t=2 t=1 ES Suponga que Y0 = 0; entonces puede mostrarse que bajo el supuesto E t ∼ R.BN(0, σ 2 ) ([W (1)]2 − 1) a 1 τ̂ ∼ × (9.49) 2 ,1 [W (s)]2 ds 0 donde W (s) es un proceso estocástico conocido como movimiento Browniano estándar y [W (1)]2 ∼ χ21 . Los valores crı́ticos para el estadı́stico τ̂ , con niveles de significancia 0.01, 0.05,, son, respectivamente, -2.60, -1.95, para n = 100. Rechazamos H0 si τ̂ < τ̂crı́tico . Caso 2: Yt sigue un proceso AR(1) con media distinta de cero. En este caso el modelo es Yt = β0 + φ1 Yt−1 + Et , el cual reescribimos como ∇Yt = β0 + φ∗1 Yt−1 + Et , con φ∗1 = φ1 − 1, Et ∼ R.BN(0, σ 2 ) (9.50) CAPÍTULO 9. MODELOS ARIMA 312 Aquı́ el parámetro β 0 = μ(1 − φ1 ), con μ = E[Yt ]. De nuevo, se usa mı́nimos cuadrados para estimar φ ∗1 en la regresión de ∇Y t en Yt−1 , pero esta vez el modelo tiene intercepto. El estadı́stico de la prueba es τ̂μ = S/ φ̂∗1,M C φ̂1,M C − 1 1 = +n , con S 2 = n n−3 (Yt−1 − Ȳ )2 S/ (Yt−1 − Ȳ )2 t=2 t=1 (∇Yt −β̂0,M C −φ̂∗1,M C Yt−1 )2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 t=1 n 7 + 2 (9.51) Suponiendo Y0 = 0 y bajo el supuesto Et ∼ R.BN(0, σ ), tenemos que a 1 ([W (1)]2 2 τ̂μ ∼ ,1 0 ,1 − 1) − W (1) W (s)ds 0 [W (s)]2 ds − ,1 2 (9.52) W (s)ds 0 La distribución de τ̂μ es aún más distante de la normal que en el caso de media cero. Los valores crı́ticos con muestras grandes, para niveles de significancia de 0.01 y 0.05, son respectivamente, -3.42, -2.86 y rechazamos H 0 si τ̂μ < τ̂μ,crı́tico . Caso 3: Yt ∼ AR(1) con tendencia lineal, es decir, Y t = β0 + β1 t + φ1 Yt−1 + Et , modelo que reescribimos como ∇Yt = β0 + β1 t + φ∗1 Yt−1 + Et , con φ∗1 = φ1 − 1, Et ∼ R.BN(0, σ 2 ) τ̂τ = φ̂∗1,M C s.e(φ̂∗1,M C ) (9.53) (9.54) ES donde s.e(φ̂∗1,M C ) es el error estándar del estimador φ̂∗1,M C en la estimación por mı́nimos cuadrados de la regresión de ∇Y t versus (t, Yt−1 ). La distribución lı́mite de τ̂τ también es bastante alejada de la normal y es función de los procesos W (1) y W (t) y de t. El criterio de rechazo sigue siendo si τ̂ τ < τ̂τ,crı́tico . 9.7.2. Prueba de raı́z unitaria Dickey-Fuller aumentada (ADF) En el test DF se supone un proceso AR(1) para la serie Y t . A continuación consideraremos el caso en que Y t ∼ AR(p), siendo el modelo general dado por (Yt − μ) = φ1 (Yt−1 − μ) + · · · + φp (Yt−p − μ) + Et , Et ∼ R.BN(0, σ 2 ) (9.55) donde μ = E[Yt ], o equivalentemente, p φj Yt−j + Et , Et ∼ R.BN(0, σ 2 ) Yt = β0 + j=1 con β0 = μ(1 − p j=1 φj ). (9.56) 9.7. PRUEBAS PARA RA ÍCES UNITARIAS 313 Caso 1: Yt ∼ AR(p) con media cero. En este caso el modelo en (9.55) se reduce a Yt = φj Yt−j + Et = φ1 Yt−1 + φj Yt−j + Et . Este modelo puede ser reescrito de j=1 j=2 7 la siguiente forma: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ∇Yt = φ∗1 Yt−1 + φ∗2 ∇Yt−1 + · · · + φ∗p ∇Yt−p+1 + Et , Et ∼ R.BN(0, σ 2 ) con φ∗1 = p i=1 φi − 1, y φ∗j = − p (9.57) φi , j = 2, . . . , p. Deseamos probar si el polinomio i=j autorregresivo Φp (B) tiene una raı́z unitaria, es decir que Φ p (1) = 0, lo cual p implica φi = 1, luego, φ∗1 = 0, esto es, probamos que i=1 p H0 : φ∗1 = 0 versus H1 : φ∗1 < 0, con φ∗1 = φi − 1. (9.58) i=1 Observe que bajo H0 , se tiene que ∇Yt ∼ AR(p-1). Para la prueba, φ∗1 puede ser estimado como el coeficiente de Y t−1 , ajustando por mı́nimos cuadrados la regresión de ∇Y t versus (Yt−1 , ∇Yt−1 , . . . , ∇Yt−p+1 ), según el modelo sin intercepto dado en (9.57). Para n grande, bajo la hipótesis nula, el estadı́stico de prueba τ̂ tiene la misma distribución asintótica que en el caso 1 del test DF. Caso 2: Yt ∼ AR(p) con media diferente de cero. En este caso el modelo de la serie es dado por (9.56), y podemos reescribirlo como, ∇Yt = β0 + φ∗1 Yt−1 + φ∗2 ∇Yt−1 + · · · + φ∗p ∇Yt−p+1 + Et , Et ∼ R.BN(0, σ 2 ) (9.59) ES con los φ∗j definidos de la misma forma que en el caso 1. La hipótesis nula y alternativa es igual a (9.58), y bajo H 0 , el término β0 = 0 ya que se cumple que p φi = 1. i=1 De nuevo, estimamos φ ∗1 mediante el método de mı́nimos cuadrados en la regresión de ∇Yt versus (Yt−1 , ∇Yt−1 , . . . , ∇Yt−p+1 ), según el modelo con intercepto dado en (9.59) y para n grande, bajo la hipótesis nula, el estadı́stico de prueba τ̂μ tiene la misma distribución asintótica que en el caso 2 del test DF. Caso 3: Yt ∼ AR(p) con tendencia lineal. En este caso, el modelo es p φj [Yt−j − a − b(t − j)] + Et , Et ∼ R.BN(0, σ 2 ) (Yt − a − bt) = j=1 (9.60) CAPÍTULO 9. MODELOS ARIMA 314 o equivalentemente, p φj Yt−j + Et , Et ∼ R.BN(0, σ 2 ) Yt = β0 + β1 t + (9.61) con β0 = a(1 − p p jφj y β1 = b(1 − j=1 p φj ). Este modelo a su vez puede j=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 j=1 φj ) + b 7 j=1 ser reescrito de la siguiente forma, ∇Yt = β0 + β1 t + φ∗1 Yt−1 + φ∗2 ∇Yt−1 + · · · + φ∗p ∇Yt−p+1 + Et , Et ∼ R.BN(0, σ 2 ) (9.62) con los φ∗j definidos de la misma forma que en el caso 1. El test a realizar igual p p jφj y β1 = 0, desde que φi = 1 y el estadı́stico a (9.58) y bajo H0 , β0 = b j=1 i=1 de prueba τ̂τ tiene la misma distribución asintótica que la correspondiente al caso 3 del test DF. ES Nota: Observe que rechazar H 0 en cualquiera de los pruebas DF y ADF dice que no hay raı́z unitaria; sin embargo no rechazar tal hipótesis no implica que se deba asumir que existe una raı́z unitaria, pues éstas pruebas adolecen de problemas tales como baja potencia para distinguir procesos estacionarios persistentes (con |φ 1 | cercano a 1) de aquellos no estacionarios, además la potencia disminuye con la introducción de términos determinı́sticos al modelo AR(1) básico sin constante. Diebold [3] establece que los problemas de potencia surgen porque en general las hipótesis alternativas relevantes son muy cercanas a la hipótesis nula, y también estas pruebas presentan problemas relacionadas al tamaño de la muestra ya que en el test deberı́a incluirse infinitos rezagos lo cual es imposible en la práctica. En conclusión, según Diebold [3]: “aunque a veces son útiles las pruebas de raı́z unitaria, no son definitivas y por tanto son el final de la historia respecto a la decisión de si especificar o no modelos en niveles o en diferencias; ... necesitamos usar introspección y teorı́a, además de pruebas formales, para guiar la difı́cil decisión de imponer raı́ces unitarias y comparar la eficiencia del pronóstico con distintos modelos con y sin raı́ces unitarias”. Guerrero [5] también establece que “en ocasiones las series de tiempo son afectadas por la ocurrencia de fenómenos que tienen efectos de carácter permanente y que vuelven ineficaces las pruebas de raı́ces unitarias, a menos que se haga explı́cita su presencia en el modelo que representa a dicha serie. Perron (1989) estudió el problema de las raı́ces unitarias en presencia de cambios en la estructura de comportamiento de la serie. En particular, encontró que si una serie de tiempo estacionaria se ve afectada por un cambio de nivel, entonces, al aplicar las pruebas Dickey-Fuller, la conclusión a la que seguramente se llegará es que la serie es integrada de orden 1. Por otro lado, una serie no 9.7. PRUEBAS PARA RA ÍCES UNITARIAS 315 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 estacionaria también puede verse afectada por cambios en nivel, en pendiente, o en ambos”. Este tema en particular no será explorado en este curso, para información ver Guerrero [5], Sección 4.4.2 pp. 165-170. La aplicación de la prueba ADF requiere determinar cuál de los tres casos se aproxima mejor a la serie original Y t , donde es influyente el orden p del polinomio autorregresivo que se considere. La sobreespecificación puede generar pérdida de potencia y la sub-especificación puede sesgar los resultados hacia el no rechazo de la hipótesis nula. De acuerdo a Diebold [3] es mejor estimar modelos que incluyan intercepto o intercepto y tendencia, porque ası́ se obtiene una mejor aproximación a la dinámica de los datos, con o sin raı́z unitaria. Por otra parte, se debe diferenciar sólo cuando exista raı́z unitaria; si la diferenciación no es adecuada esto puede ser peligroso incluso asintóticamente. Se puede recurrir a la selección de modelos basados en algún criterio de información para distinguir cuál de los tres casos del test ADF con modelos AR(p) es el más apropiado. En cuanto al orden autorregresivo, algunos autores sugieren comenzar con p = [n 1/4 ] + 1, con [·] la función parte entera de su argumento, por ejemplo, si n = 100 entonces considerar p = 4. En general, elegir un valor p mayor al que se supone a priori que deberı́a ser (Guerrero [5]). 9.7.3. Test DF y ADF en R En R, en la librerı́a urca se dispone de la función ur.df() que permite realizar tanto el test Dickey-Fuller como el Dickey-Fuller aumentado, ur.df(y, type = c("none", "drift", "trend"), lags = 1, selectlags = c("Fixed", "AIC", "BIC")) donde, ES y: Vector de datos o serie a ser probada para raı́z unitaria; type: El tipo de caso “none” para el caso 1, “drift” para el caso 2 y “trend” para el caso 3. lags: el número de rezagos de variables endógenas a incluir. Para el test DF se especifica lags=0 y para el test ADF se especifica lags=p, donde p es el orden autorregresivo; selectlags: Una selección del orden autorregresivo puede ser hecha de acuerdo al criterio de información de Akaike “AIC” o el de Bayes “BIC”. El número máximo de rezagos a considerar es el definido en el argumento lags. Por defecto (selectlags =“Fixed”) se usa el polinomio autorregresivo del orden fijado en lags. CAPÍTULO 9. MODELOS ARIMA 316 9.8. Ejemplo: Modelación de la serie tasa de cambio Yen/Dólar 0 −10 ∇Yt 200 100 −20 150 Yt 250 10 300 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Esta serie es presentada en Diebold [3] y consta de N = 283 observaciones que corresponden a la tasa de cambio (promedio mes) yen/dólar desde enero de 1973 a julio de 1996. Para fines de validación cruzada, se usarán las primeras n = 264 observaciones (de 1973.01 a 1994.12) y se pronosticarán las últimas m = 19 observaciones. La serie original y su logaritmo, junto con sus primeras diferencias, son ilustradas en la Figura 9.7. 1975 1980 1985 1990 1995 1975 1980 Figura 9.7: 1990 1995 0.00 −0.05 ∇log(Yt) 4.6 4.8 5.0 5.2 5.4 5.6 0.05 Time −0.10 ES log(Yt) Time 1985 1975 1980 1985 Time 1990 1995 1975 1980 1985 1990 1995 Time Serie original tasa mensual de cambio yen/US, su logaritmo y sus respectivas diferencias de orden 1 De la figura anterior es claro que para la serie original la diferenciación estabiliza el nivel de la serie pero hay problemas con la varianza, por eso se decide considerar la transformación logaritmo. Para esta última, la diferenciación estabiliza el nivel, y la varianza mejora sustancialmente en cuanto a estabilidad. Por lo anterior, se decide trabajar de aquı́ en adelante con la serie en escala logarı́tmica. 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR317 9.8.1. Análisis preliminar PACF de log(Yt) 5 10 15 20 25 30 35 0 10 15 20 25 Lag ACF de ∇log(Yt) PACF de ∇log(Yt) 35 30 35 0.1 0.2 0.3 30 −0.2 −0.1 0.0 Partial ACF 0.2 0.1 0.0 ACF 0 5 10 15 20 25 30 35 Lag 0 5 10 15 20 25 Lag Arriba: ACF y PACF log tasa mensual de cambio yen/US; Abajo: ACF y PACF primera diferencia del logaritmo ES Figura 9.8: 5 Lag 0.3 0 0.0 0.2 0.4 0.6 0.8 1.0 Partial ACF 0.0 −0.5 ACF 0.5 1.0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ACF de log(Yt) 7 La serie del logaritmo no presenta patrones estacionales y parece de tendencia estocástica; aún más, su ACF y PACF exhibidas en la Figura 9.8, nos indica presencia de raı́z unitaria. Por otro lado, el análisis de la ACF y PACF para la primera diferencia del logaritmo de la serie nos revela un proceso estacionario en covarianza, aunque a primera vista no es claro si es un AR o un MA, ası́ que asumiremos un ARMA(p,q) y usaremos la EACF y la identificación automática para definir los posibles órdenes p y q. 9.8.2. Identificaci ón de modelos Considere la EACF de ∇ log(Y t ) que se muestra a continuación. Siendo estrictos con la regla del triángulo de ceros, el modelo que se identifica es un ARMA(3,2); sin embargo, si se obvia la x en la casilla (2,12), puede considerarse también un MA(1) o incluso un ARMA(1,1), luego, esto implicarı́a que CAPÍTULO 9. MODELOS ARIMA 318 0 x x x x x x x x 1 o o x x x x x x 2 o o o o x x x o 3 o o o o o x o o EACF 4 5 o o o o o o o o o o o o o o o o ∇ log(Yt ) 6 7 o o o o o o o o o o o o o o o o 8 o o o o o o o o 9 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 o o x o o o o o 13 o o o o o o o o TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AR/MA 0 1 2 3 4 5 6 7 7 los modelos posibles para la serie log(Y t ) serı́an ARIMA(3,1,2), ARIMA(0,1,1) y ARIMA(1,1,1) (pero este último no es presentado). Por otra parte, también se realizó la identificación automática usando las funciones R autoarmafit() de la librerı́a timsac sobre la serie ∇ log(Y t ) y auto.arima() de la librerı́a forecast sobre la serie log(Y t ), en el primer caso, según el AIC y en el segundo caso, según el BIC. En la Salida R 9.1, vemos parte de los resultados con la función autoarmafit(), en la que se exhiben los dos mejores modelos; nos interesa sólo los órdenes p y q. Luego, los dos mejores modelos identificados para ∇ log(Y t ) son ARMA (3,2) y ARMA(2,3); esto implica que para la serie log(Y t ) los modelos serı́an ARIMA(3,1,2) y ARIMA(2,1,3). Salida R 9.1. Best ARMA model AR coefficient (order =3) MA coefficient (order =2) 0.025498 -0.336749 -0.858122 -0.905025 0.278330 1.593054e-08 1.191777e-08 -1.788662e-08 8.198043e-08 -3.253739e-09 2.652625e-09 Case No. 1 I AR(I) STANDARD DEVIATION 1 0.025498 0.085561 2 -0.858122 0.044802 3 0.278330 0.067767 I 1 2 MA(I) STANDARD DEVIATION -0.336749 0.061650 -0.905025 0.055826 ES AIC -1920.565606 Innovation variance 0.000649 Final gradient 2.720034e-09 1.026303e-08 Case No. 2 I AR(I) STANDARD DEVIATION 1 -0.323346 0.047000 2 -0.934306 0.044688 I 1 2 3 MA(I) STANDARD DEVIATION -0.692615 0.077615 -1.059193 0.059946 -0.281288 0.067470 AIC -1920.455432 Innovation variance 0.000649 Final gradient -5.622938e-08 -5.308665e-08 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR319 Nota: La función autoarmafit() estima modelos ARMA de la forma p Zt = q θk at−k , at ∼ R.BN(0, σa2 ) φj Zt−j + at − j=1 k=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 En la Salida R 9.2 se observan los resultados de la función auto.arima(); vemos que el mejor modelo para log(Y t ) según el BIC, es un ARIMA(1,1,0). Salida R 9.2. Series: lny ARIMA(1,1,0) Coefficients: ar1 0.3463 s.e. 0.0589 sigmaˆ2 estimated as 0.0006871: log likelihood = 584.48 AIC = -1164.97 AICc = -1164.92 BIC = -1157.82 In-sample error measures: ME RMSE -0.002660729 0.026164337 MAE MPE 0.019707790 -0.052387889 MAPE 0.378215878 MASE 0.941893880 9.8.3. Ajuste modelos identificados Se ajustan los siguientes modelos a log(Y t ); Modelo 1: ARIMA(1,1,0) (1 − φ1 B)(1 − B) log(Yt ) = Et , Et ∼ R.BN(0, σ 2 ) Modelo 2: ARIMA(0,1,1) (1 − B) log(Yt ) = Et + θ1 Et−1 , Et ∼ R.BN(0, σ 2 ) Modelo 3: ARIMA(2,1,3) ES (1 − φ1 B − φ2 B 2 )(1 − B) log(Yt ) = Et + θ1 Et−1 + θ2 Et−2 + θ3 Et−3 , Et ∼ R.BN(0, σ 2 ) Modelo 4: ARIMA(3,1,2) (1 − φ1 B − φ2 B 2 − φ3 B 3 )(1 − B) log(Yt ) = Et + θ1 Et−1 + θ2 Et−2 , Et ∼ R.BN(0, σ 2 ) Modelos con tendencia determinı́stica lineal y errores ARMA(p,q) log(Yt ) = β0 + β1 t + Et , Φp (B)Et = θq (B)at , at ∼ R.BN(0, σa2 ) Este último tipo de modelos se considera desde que un proceso homogéneo de orden 1 también conduce a que la primera diferencia sea estacionaria. A continuación se presentan los resultados de los modelos 1 a 4. Los modelos con tendencia determinı́stica serán tratados posteriormente. CAPÍTULO 9. MODELOS ARIMA 320 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Estimaciones para modelos 1 a 4 con funci ón Arima() Ajuste Modelo 1 Parámetros Estimación s.e Valor Z 0∗ P (|Z| > |Z0 |)∗∗ φ1 0.3463 0.0589 5.8812 0.0000 Ajuste Modelo 2 Parámetros Estimación s.e Valor Z 0∗ P (|Z| > |Z0 |)∗∗ θ1 0.3806 0.0567 6.7150 0.0000 Ajuste Modelo 3 Parámetros Estimación s.e Valor Z 0∗ P (|Z| > |Z0 |)∗∗ φ1 -0.0092 φ2 0.7379 θ1 0.3978 θ2 -0.6897 0.1429 -4.8269 0.0000 θ3 -0.2394 Ajuste Modelo 4 Parámetros Estimación s.e Valor Z 0∗ P (|Z| > |Z0 |)∗∗ φ1 0.1699 0.0592 2.8693 0.0041 φ2 -0.9307 0.0110 -84.2780 0.0000 φ3 0.3611 0.0588 6.1400 0.0000 θ1 0.1973 0.0139 14.1525 0.0000 θ2 0.9983 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) 7 En la siguiente tabla se presentan los resultados del ajuste para los modelos 1 a 4. valores omitidos en la tabla se deben a que la función Arima()produjo valores faltantes en el cálculo del error estándar y por tanto no es posible obtener el estadı́stico Z 0 y el correspondiente valor P para la prueba de significancia individual de los parámetros. ES Usando la función R forecast() de la librerı́a forecast, se obtienen los pronósticos y los intervalos de predicción del 95 % para log(Y t ), para los meses comprendidos entre 1995.01 a 1996.07; con la función accuracy() se obtuvieron las medidas de precisión de pronósticos. En las dos tablas siguientes se exhiben los resultados para los pronósticos de los modelos 1 a 4. Precisi ón pronósticos modelos 1 a 4, Modelo 1 ME RMSE MAE MPE MAPE -0.03 0.09 0.07 -0.65 1.53 Modelo 2 ME RMSE MAE MPE MAPE -0.03 0.09 0.07 -0.60 1.54 Modelo 3 ME RMSE MAE MPE MAPE -0.02 0.09 0.07 -0.58 1.54 Modelo 4 ME RMSE MAE MPE MAPE -0.03 0.09 0.07 -0.70 1.55 con funci ón accuracy() MASE 3.32 ACF1 0.65 Theil’s U 2.47 MASE 3.33 ACF1 0.65 Theil’s U 2.45 MASE 3.33 ACF1 0.65 Theil’s U 2.45 MASE 3.35 ACF1 0.65 Theil’s U 2.49 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR321 Hi 95 4.6669 4.7029 4.7278 4.7482 4.7658 4.7815 4.7959 4.8092 4.8216 4.8334 4.8445 4.8551 4.8653 4.8750 4.8844 4.8935 4.9023 4.9109 4.9192 7 a 4, con funci ón forecast() Modelo 2 Hi 95 Point Forecast Lo 95 4.6658 4.6159 4.5648 4.7032 4.6159 4.5289 4.7324 4.6159 4.5039 4.7564 4.6159 4.4836 4.7771 4.6159 4.4660 4.7955 4.6159 4.4502 4.8122 4.6159 4.4359 4.8275 4.6159 4.4226 4.8418 4.6159 4.4101 4.8552 4.6159 4.3984 4.8679 4.6159 4.3873 4.8800 4.6159 4.3767 4.8915 4.6159 4.3665 4.9026 4.6159 4.3567 4.9133 4.6159 4.3473 4.9236 4.6159 4.3382 4.9335 4.6159 4.3294 4.9432 4.6159 4.3209 4.9526 4.6159 4.3126 Modelo 4 Hi 95 Point Forecast Lo 95 4.6659 4.6224 4.5729 4.7020 4.6211 4.5371 4.7286 4.6142 4.5024 4.7512 4.6199 4.4847 4.7715 4.6268 4.4711 4.7901 4.6201 4.4462 4.8076 4.6147 4.4244 4.8239 4.6224 4.4170 4.8395 4.6264 4.4067 4.8543 4.6179 4.3849 4.8686 4.6156 4.3701 4.8822 4.6245 4.3671 4.8954 4.6251 4.3562 4.9080 4.6161 4.3362 4.9203 4.6172 4.3268 4.9322 4.6260 4.3255 4.9437 4.6232 4.3128 4.9549 4.6150 4.2950 4.9658 4.6193 4.2901 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Mes Jan 1995 Feb 1995 Mar 1995 Apr 1995 May 1995 Jun 1995 Jul 1995 Aug 1995 Sep 1995 Oct 1995 Nov 1995 Dec 1995 Jan 1996 Feb 1996 Mar 1996 Apr 1996 May 1996 Jun 1996 Jul 1996 Pronósticos modelos 1 Modelo 1 Point Forecast Lo 95 4.6144 4.5631 4.6170 4.5309 4.6179 4.5035 4.6182 4.4800 4.6184 4.4596 4.6184 4.4413 4.6184 4.4247 4.6184 4.4093 4.6184 4.3950 4.6184 4.3816 4.6184 4.3689 4.6184 4.3568 4.6184 4.3453 4.6184 4.3342 4.6184 4.3235 4.6184 4.3132 4.6184 4.3033 4.6184 4.2936 4.6184 4.2843 Modelo 3 Point Forecast Lo 95 4.6150 4.5641 4.6148 4.5277 4.6150 4.5013 4.6148 4.4785 4.6149 4.4583 4.6148 4.4395 4.6149 4.4222 4.6148 4.4057 4.6149 4.3902 4.6148 4.3753 4.6149 4.3612 4.6148 4.3475 4.6149 4.3344 4.6148 4.3216 4.6149 4.3094 4.6148 4.2975 4.6149 4.2860 4.6148 4.2748 4.6149 4.2639 Mes Jan 1995 Feb 1995 Mar 1995 Apr 1995 May 1995 Jun 1995 Jul 1995 Aug 1995 Sep 1995 Oct 1995 Nov 1995 Dec 1995 Jan 1996 Feb 1996 Mar 1996 Apr 1996 May 1996 Jun 1996 Jul 1996 Hi 95 4.6720 4.7050 4.7261 4.7551 4.7824 4.7941 4.8051 4.8279 4.8460 4.8509 4.8611 4.8819 4.8940 4.8960 4.9076 4.9265 4.9337 4.9350 4.9485 ES En la Figura 9.9 se muestra la serie de log(Y t ) y sus pronósticos junto con los lı́mites de predicción representados por la zona coloreada, para los modelos 1 a 4. Considerando los resultados gráficos y los numéricos, podemos decir que los primeros cuatro modelos alcanzan la misma calidad de pronóstico, en la escala logarı́tmica. CAPÍTULO 9. MODELOS ARIMA 322 Log tasa yen/$US Pronósticos modelo 1 Log tasa yen/$US Pronósticos modelo 2 5.6 Realización pronosticado zona amarilla 7 4.4 4.4 4.6 4.6 4.8 4.8 5.0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 5.0 5.2 5.2 5.4 5.4 5.6 Realización pronosticado zona amarilla 1975 1980 1985 1990 1995 1975 Log tasa yen/$US Pronósticos modelo 3 1980 1985 1990 1995 Log tasa yen/$US Pronósticos modelo 4 5.6 Realización pronosticado zona amarilla 4.4 4.5 4.6 4.8 5.0 5.0 5.2 5.4 5.5 Realización pronosticado zona amarilla 1975 1980 Figura 9.9: 1985 1990 1995 1975 1980 1985 1990 1995 Serie log tasa yen/Us y pronósticos modelos 1 a 4 ES Para el análisis de los residuales de los modelos 1 a 4 considere los siguientes resultados. En cada caso ¿podemos decir que los errores satisfacen el supuesto de ruido blanco normal? ¿por qué? 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR323 7 0.00 residuals(mod1) −0.05 0.00 −0.05 −0.10 −0.10 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(mod1) 0.05 Residuos ARIMA(1,1,0) para log(Yt) 0.05 Residuos ARIMA(1,1,0) para log(Yt) 1975 1980 1985 1990 1995 4.6 5.2 5.4 5.6 ACF residuos ARIMA(1,1,0) para log(Yt) PACF residuos ARIMA(1,1,0) para log(Yt) 0.00 −0.10 −0.05 Partial ACF 0.05 0.10 0.15 fitted(mod1) −0.15 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35 Residuos ARIMA(0,1,1) para log(Yt) Residuos ARIMA(0,1,1) para log(Yt) 0.00 −0.10 −0.10 −0.05 0.00 residuals(mod2) 0.05 Lag 0.05 Lag −0.05 ACF residuals(mod2) 5.0 Time 0 1975 1980 1985 1990 1995 4.6 4.8 5.0 5.2 5.4 5.6 Time fitted(mod2) ACF residuos ARIMA(0,1,1) para log(Yt) PACF residuos ARIMA(0,1,1) para log(Yt) 0.00 Partial ACF −0.10 −0.05 −0.15 ACF 0.05 0.10 ES 4.8 0 5 10 15 20 Lag Figura 9.10: 25 30 35 0 5 10 15 20 25 30 35 Lag Gráficas para análisis de residuales, modelos 1 y 2 CAPÍTULO 9. MODELOS ARIMA 324 7 0.00 residuals(mod3) −0.05 0.00 −0.05 −0.10 −0.10 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(mod3) 0.05 Residuos ARIMA(2,1,3) para log(Yt) 0.05 Residuos ARIMA(2,1,3) para log(Yt) 1975 1980 1985 1990 1995 4.6 4.8 5.0 5.2 5.4 5.6 fitted(mod3) ACF residuos ARIMA(2,1,3) para log(Yt) PACF residuos ARIMA(2,1,3) para log(Yt) 0 5 10 15 20 25 30 35 0 10 15 20 25 30 35 Residuos ARIMA(3,1,2) para log(Yt) 1980 1985 1990 0.00 −0.05 0.00 residuals(mod4) 0.05 Residuos ARIMA(3,1,2) para log(Yt) 0.05 Lag −0.05 1995 4.6 4.8 5.0 5.2 5.4 5.6 fitted(mod4) ACF residuos ARIMA(3,1,2) para log(Yt) PACF residuos ARIMA(3,1,2) para log(Yt) −0.10 −0.10 0.00 Partial ACF 0.10 0.10 Time 0.00 residuals(mod4) ACF 5 Lag 1975 ES 0.00 Partial ACF −0.10 −0.05 −0.15 ACF 0.05 0.10 Time 0 5 10 15 20 Lag Figura 9.11: 25 30 35 0 5 10 15 20 25 30 35 Lag Gráficas para análisis de residuales, modelos 3 y 4 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR325 1 x o x x x x x x 2 o o o x x x x x AR/MA 0 1 2 3 4 5 6 7 0 o x o x x x x x 1 o o x x x x x x 2 o o o x x x x x AR/MA 0 1 2 3 4 5 6 7 0 o x x o o o x x 1 o o x x x x x x 2 o o o x x o o o AR/MA 0 1 2 3 4 5 6 7 0 o o x x x x x o 1 o o x o x x x x 2 o o o x x x x x 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o 7 0 o o x x x x o x a4 ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 AR/MA 0 1 2 3 4 5 6 7 EACF’s residuales modelos 1 Modelo 1 3 4 5 6 7 8 9 o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o o o o x o o o o o x o o o o o o o o o o o o o Modelo 2 3 4 5 6 7 8 9 o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o o o o o o o o o o o o o o o o o o o o x o o o Modelo 3 3 4 5 6 7 8 9 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x o o o o o x x o o o o o o x x o o o o Modelo 4 3 4 5 6 7 8 9 o o o o o o o o o o o o o o o o o o o o o o o o o o o o x o o o o o o o x o o o o o o o o o o o o o o o o o o o m 6 12 18 24 30 36 QLB 10.14 16.55 29.96 38.91 43.80 50.40 m 6 12 18 24 30 36 QLB 4.32 9.43 21.95 29.41 33.05 38.58 Test Ljung-Box, modelos 1 Modelo 1 g.l P (χ2m > QLB ) QLB 6.00 0.12 4.04 12.00 0.17 9.09 18.00 0.04 21.07 24.00 0.03 27.97 30.00 0.05 31.11 36.00 0.06 36.14 Modelo 3 g.l P (χ2m > QLB ) QLB 6.00 0.63 2.71 12.00 0.67 6.50 18.00 0.23 12.54 24.00 0.21 15.06 30.00 0.32 17.53 36.00 0.35 19.67 a4 Modelo 2 g.l P (χ2m > QLB ) 6.00 0.67 12.00 0.69 18.00 0.28 24.00 0.26 30.00 0.41 36.00 0.46 Modelo 4 g.l P (χ2m > QLB ) 6.00 0.84 12.00 0.89 18.00 0.82 24.00 0.92 30.00 0.97 36.00 0.99 CAPÍTULO 9. MODELOS ARIMA 326 Estadı́stico W 0 Valor P Test Shapiro Wilk, modelos 1 a 4 Modelo 1 Modelo 2 Modelo 3 0.980998 0.979536 0.980136 0.001357445 0.000758748 0.000961386 Modelo 4 0.980302 0.001027001 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 A continuación, se presentarán los resultados relativos a la identificación, ajuste y pronósticos para modelos con tendencia determinı́stica lineal y errores ARMA. Primero es necesario ajustar el modelo Modelo 5a: log(Yt ) = β0 + β1 t + Et , Et ∼ R.BN(0, σ 2 ), y a partir del análisis de los residuales de este modelo, se identificará el modelo ARMA para los errores estructurales E t . Veamos. Ajuste modelo tendencia lineal y E t ∼ R.BN (0, σ2 ) Parámetros Estimación s.e T0 P (|t262 | > |T0 |) β0 5.8011 0.0170 342.09 0.0000 β1 -0.0041 0.0001 -37.01 0.0000 0.1 −0.3 −0.1 residuals(mod5a) 0.1 −0.1 −0.3 residuals(mod5a) 0.3 Residuos modelo 5a para log(Yt) 0.3 Residuos modelo 5a para log(Yt) 0 50 100 150 200 250 4.8 5.0 5.2 5.4 5.6 5.8 fitted(mod5a) ACF residuos modelo 5a para log(Yt) PACF residuos modelo 5a para log(Yt) 0.8 0.4 −0.4 0 5 10 15 20 Lag Figura 9.12: 0.0 Partial ACF 0.5 −0.5 0.0 ACF ES 1.0 t 25 30 35 0 5 10 15 20 25 30 35 Lag Gráficos residuales modelo tendencia lineal y Et ∼ R.BN (0, σ 2 ) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 EACF residuales Ajuste Modelo tendencia lineal y E t ∼ R.BN (0, σ2 ) AR/MA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 x x x x x x x x x x x x x x 1 x o o x o o o o o o x x o o 2 x x o o o o o o o o o x o o 3 x x o o o o o o o o o o x o 4 x x o o o o o o o o o o o o 5 o x o x o o o o o o o o o o 6 o x o x o o o o o o o o o o 7 x x x x x o o o o o o o o o 7 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR327 De la ACF y PACF en la Figura 9.12 se identifica un AR(2) para los errores estructurales del modelo de tendencia lineal. Por otro lado, de la EACF, si ignoramos la x en la casilla (3,12), parece que el modelo apropiado para E t es una ARMA(3,2), aunque aplicando en forma estricta la regla del triángulo, el modelo serı́a un ARMA(4,3) pero este último no será considerado. Observe además que el decaimiento en la ACF no es rápido, ¿será que estos residuos no provienen de un proceso estacionario?. De todas formas, se definen los siguientes dos modelos Modelo 5b: Tendencia lineal y errores AR(2), log(Yt ) = β0 + β1 t + Et , con Et = φ1 Et−1 + φ2 Et−2 + at , at ∼ R.BN(0, σa2 ) Modelo 5c: Tendencia lineal y errores ARMA(3,2), ES log(Yt ) = β0 + β1 t + Et , con Et = φ1 Et−1 + φ2 Et−2 + φ3 Et−3 + at + θ1 at−1 + θ2 at−2 , at ∼ R.BN(0, σa2 ) Estimaciones para modelos 5b y 5c con funci ón Arima() Ajuste Modelo 5b Parámetro Estimación s.e Z 0∗ P (|Z| > |Z0 |)∗∗ φ1 1.3172 0.0586 22.4760 0.0000 φ2 -0.3462 0.0589 -5.8831 0.0000 β0 5.8026 0.0913 63.5832 0.0000 β1 -0.0042 0.0006 -7.2713 0.0000 Ajuste Modelo 5c Parámetro Estimación s.e Z 0∗ P (|Z| > |Z0 |)∗∗ φ1 0.2777 1.2965 0.2142 0.8304 φ2 0.7285 1.1913 0.6115 0.5409 φ3 -0.0673 0.1741 -0.3863 0.6993 θ1 1.0766 1.2970 0.8301 0.4065 θ2 0.2245 0.5629 0.3987 0.6901 β0 5.7961 0.0961 60.3095 0.0000 β1 -0.0042 0.0006 -6.9445 0.0000 *Calculado manualmente, Z0 = Estimacion/s.e **Calculado manualmente, P (|Z| > |Z0 |) = P (Z > |Z0 |) + P (Z < −|Z0 |) Para el modelo 5b, las raı́ces del polinomio autorregresivo ajustado, 1−1.3172B+ 0.3462B 2 , son 1.047674 y 2.757063, es decir, casi tiene una raı́z unitaria!!!. Para el modelo 5c las raı́ces del polinomio autorregresivo ajustado, 1−0.2777B− CAPÍTULO 9. MODELOS ARIMA 328 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 0.7285B 2 + 0.0673B 3, son 1.039333, -1.290755 y 11.076088, en este caso también vemos una raı́z casi unitaria; observe también que aparentemente ninguno de los coeficientes del modelo ARMA(3,2) son significativos. Lo anterior implica que modelos asumiendo oscilaciones estacionarias alrededor de una tendencia lineal posiblemente no sean adecuados y que serı́a mejor tener en cuenta modelos que consideren la existencia de raı́z unitaria en la serie log(Y t ). Los pronósticos de los modelos 5b y 5c son presentados en la Figura 9.13 y en la tabla siguiente. Log tasa yen/$US Pronósticos modelo 5b Log tasa yen/$US Pronósticos modelo 5c 5.4 5.4 5.2 5.2 5.0 5.0 4.8 4.8 4.6 4.6 4.4 4.4 1975 1980 Figura 9.13: ES Realización pronosticado zona amarilla 5.6 5.6 Realización pronosticado zona amarilla Mes Jan 1995 Feb 1995 Mar 1995 Apr 1995 May 1995 Jun 1995 Jul 1995 Aug 1995 Sep 1995 Oct 1995 Nov 1995 Dec 1995 Jan 1996 Feb 1996 Mar 1996 Apr 1996 May 1996 Jun 1996 Jul 1996 1985 1990 1995 1975 1980 1985 1990 Serie log tasa yen/Us y pronósticos modelos 5b y 5c Pronósticos modelos 5b Modelo 5b Point Forecast Lo 95 4.6143 4.5639 4.6164 4.5330 4.6165 4.5075 4.6158 4.4866 4.6147 4.4692 4.6134 4.4543 4.6119 4.4413 4.6103 4.4299 4.6086 4.4196 4.6067 4.4104 4.6048 4.4019 4.6027 4.3940 4.6006 4.3867 4.5983 4.3799 4.5960 4.3735 4.5936 4.3674 4.5911 4.3616 4.5885 4.3561 4.5858 4.3508 y 5c, con funci ón forecast() Modelo 5c Hi 95 Point Forecast Lo 95 4.6648 4.6154 4.5652 4.6999 4.6145 4.5300 4.7256 4.6134 4.5058 4.7450 4.6117 4.4861 4.7603 4.6102 4.4702 4.7725 4.6084 4.4561 4.7825 4.6067 4.4439 4.7907 4.6047 4.4328 4.7975 4.6027 4.4228 4.8031 4.6006 4.4136 4.8077 4.5985 4.4051 4.8114 4.5963 4.3971 4.8144 4.5940 4.3897 4.8167 4.5916 4.3826 4.8184 4.5892 4.3760 4.8197 4.5866 4.3696 4.8205 4.5841 4.3636 4.8208 4.5814 4.3578 4.8208 4.5788 4.3522 Hi 95 4.6655 4.6990 4.7211 4.7372 4.7502 4.7606 4.7694 4.7766 4.7827 4.7877 4.7919 4.7954 4.7983 4.8005 4.8023 4.8037 4.8046 4.8051 4.8054 1995 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR329 7 Precisi ón pronósticos modelos 5b y 5c, con funci ón accuracy() Modelo 5b ME RMSE MAE MPE MAPE MASE ACF1 Theil’s U -0.01 0.10 0.08 -0.36 1.73 3.76 0.68 2.59 Modelo 5c ME RMSE MAE MPE MAPE MASE ACF1 Theil’s U -0.01 0.10 0.08 -0.25 1.78 3.87 0.68 2.60 ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Para el análisis de los residuales de los modelos 5b y 5c tenga en cuenta los siguientes resultados gráficos y numéricos ¿Qué puede decirse sobre los errores de ajuste at de estos dos modelos? ¿cumplen supuestos? AR/MA 0 1 2 3 4 5 6 7 0 o x x x x x x x 1 o o x x x x x x AR/MA 0 1 2 3 4 5 6 7 0 o o o x x x o o 1 o o o x x x x x m 6 12 18 24 30 36 QLB 9.49 17.08 28.42 37.03 41.39 47.88 EACF’s residuales modelos Modelo 5b 2 3 4 5 6 7 8 o o o o o o o o o o o o o o o o o o o o o x o o o o o o x x o o o o o o x x o o o o x x o o o o o o x o x o o o Modelo 5c 2 3 4 5 6 7 8 o o o o o o o o o o o o o o o o o o o o o x o o o o o o x x o o o o o o x x o o o o o x o o o o o o x o o x o o Test Ljung-Box, modelos 5b Modelo 5b g.l P (χ2m > QLB ) QLB 6.00 0.15 4.65 12.00 0.15 10.78 18.00 0.06 21.11 24.00 0.04 27.96 30.00 0.08 30.92 36.00 0.09 36.13 5b y 5c 9 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o 9 o o o o o o o o 10 o o o o o o o o 11 o o o o o o o o 12 o o o o o o o o 13 o o o o o o o o y 5c Modelo 5c g.l P (χ2m > QLB ) 6.00 0.59 12.00 0.55 18.00 0.27 24.00 0.26 30.00 0.42 36.00 0.46 Test Shapiro Wilk, modelos 5b y 5c Modelo 5b Modelo 5c Estadı́stico W 0 0.981524 0.979888 Valor P 0.001679138 0.000871606 CAPÍTULO 9. MODELOS ARIMA 330 0.05 7 0.00 residuals(mod5b) 0.00 −0.05 −0.05 0.05 Residuos modelo 5b para log(Yt) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(mod5b) Residuos modelo 5b para log(Yt) 1975 1980 1985 1990 1995 4.6 5.2 5.4 5.6 ACF residuos modelo 5b para log(Yt) PACF residuos modelo 5b para log(Yt) 0.00 −0.10 −0.05 Partial ACF 0.05 0.10 0.15 fitted(mod5b) −0.15 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35 Residuos modelo 5c para log(Yt) Residuos modelo 5c para log(Yt) 1980 1985 1990 0.00 residuals(mod5c) 0.00 −0.05 1975 0.05 Lag 0.05 Lag −0.05 ACF residuals(mod5c) 5.0 Time 0 1995 4.6 4.8 5.0 5.2 5.4 5.6 Time fitted(mod5c) ACF residuos modelo 5c para log(Yt) PACF residuos modelo 5c para log(Yt) −0.15 0.00 −0.10 −0.05 ACF Partial ACF 0.05 0.10 ES 4.8 0 5 10 15 20 Lag Figura 9.14: 25 30 35 0 5 10 15 20 25 30 35 Lag Gráficas para análisis de residuales, modelos 5b y 5c 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR331 9.8.4. Pruebas de raı́z unitaria A continuación se exhibe parte de los resultados de los testes DF para la serie log(Yt ). TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 summary(df.mediacero) 7 Salida R 9.3 (DF casos 1, 2 y 3). ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression none Call: lm(formula = z.diff ˜ z.lag.1 - 1) Value of test-statistic is: -2.4525 Critical values for test statistics: 1pct 5pct 10pct tau1 -2.58 -1.95 -1.62 summary(df.drift) ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression drift Call: lm(formula = z.diff ˜ z.lag.1 + 1) Value of test-statistic is: 0.0616 3.0207 Critical values for test statistics: 1pct 5pct 10pct tau2 -3.44 -2.87 -2.57 phi1 6.47 4.61 3.79 summary(df.tend) ES ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression trend Call: lm(formula = z.diff ˜ z.lag.1 + 1 + tt) Value of test-statistic is: -1.5916 3.07 1.5618 Critical values for test statistics: 1pct 5pct 10pct tau3 -3.98 -3.42 -3.13 phi2 6.15 4.71 4.05 phi3 8.34 6.30 5.36 En la Salida R 9.3 se muestran parte de los resultados R obtenidos con la función ur.df() de la librerı́a urca, para los tres testes Dickey-Fuller, que también resumimos a continuación, para α = 0.05. CAPÍTULO 9. MODELOS ARIMA 332 Resultados Testes DF para log(Y t ) Caso 1 Caso 2 Caso 3 τ̂ τ̂0.05 τ̂μ τ̂μ,0.05 τ̂τ τ̂τ,0.05 -2.4525 -1.95 0.0616 -2.87 -1.5916 -3.42 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 De acuerdo a lo anterior, a un nivel de significancia del 5 %, en el test DF casos 2 y 3 no se rechaza la hipótesis nula de raı́z unitaria; en el caso 1 hay rechazo al 5 %, aunque al 1 % no hay rechazo. Estos resultados apoyan la necesidad de diferenciar la serie del logaritmo de la tasa de cambio yen/US. Pero ¿cuál de estas tres pruebas es la más apropiada? Para resolver esta cuestión se puede recurrir al ajuste de los modelos implicados por las ecuaciones de regresión asociadas a estas pruebas, es decir, dadas por las ecuaciones (9.46), (9.50) y (9.53) y su comparación mediante el AIC. Para el ajuste se puede usar la función R dynlm() de la librerı́a dynlm. Dentro de esta función ∇Zt se representa por d(Zt), Z t−k por L(Zt,k) y ∇Zt−j por L(d(Zt),j) o bien por L(difZt,j) donde difZt ha sido definido previamente como la diferencia de orden 1 de Zt. Si además se necesita incluir una tendencia lineal es decir, a β0 + β1 t, ésta se especifica como trend(Zt,scale=F), donde Zt es un objeto R definido como la serie de tiempo de interés. Por ejemplo, para correr el modelo en (9.53) para log(Y t ), escribimos dynlm(d(lny)˜L(lny,1)+trend(lny,scale=F)) donde lny es definido previamente en la programación como el logaritmo de la serie. Si se quiere correr un modelo sin intercepto, como en el caso de la ecuación (9.46), escribimos dynlm(d(lny)˜L(lny,1)-1) ES donde el -1 indica que no se incluye el intercepto en la regresión. Los modelos como los anteriores, donde las variables explicatorias son variables endógenas, son conocidos como modelos dinámicos. Los AIC de los tres modelos correspondientes a los casos 1 a 3 de la prueba DF se muestran en la siguiente tabla. Observe que no hay mucha diferencia entre los tres casos, sin embargo el de menor AIC es para el caso 1, esto indicarı́a que serı́a mejor usar el test DF sin deriva. AIC’s modelos DF sobre log(Y t ) Caso 1 caso 2 Caso 3 -1138.50 -1136.55 -1137.69 Considere el test ADF. Recuerde que en este test se asume un modelo AR(p) donde p debe ser determinado, ası́ como el caso ADF más apropiado. Para esto, la función ur.df() cuenta con los argumentos lags y selectlags con los cuales es posible especificar, respectivamente, un valor máximo para p y 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR333 7 un criterio de selección, en cada uno de los casos del test ADF. Se ha definido el valor máximo de p igual a [n 0.25 ] + 1 = [2640.25 ] + 1 = 5. Recuerde que en el ejemplo se ajusta con las primeras 264 observaciones de la serie. Utilizando en cada caso del test ADF los criterios de selección de modelos AIC y BIC, se obtuvieron los siguientes resultados: TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Salida R 9.4 (ADF caso 1). summary(ADF.drift0AIC) ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression none Call: lm(formula = z.diff ˜ z.lag.1 - 1 + z.diff.lag) Residuals: Min 1Q -0.091680 -0.014278 Median 0.001978 3Q 0.016301 Max 0.070659 Coefficients: Estimate Std. Error t value Pr(>|t|) z.lag.1 -0.0004754 0.0003093 -1.537 0.1256 z.diff.lag1 0.3603906 0.0624916 5.767 2.34e-08 *** z.diff.lag2 -0.1292056 0.0659723 -1.958 0.0513 . z.diff.lag3 0.1024456 0.0624253 1.641 0.1020 --Value of test-statistic is: -1.5369 Critical values for test statistics: 1pct 5pct 10pct tau1 -2.58 -1.95 -1.62 summary(ADF.drift0BIC) ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression none Call: lm(formula = z.diff ˜ z.lag.1 - 1 + z.diff.lag) ES Residuals: Min 1Q -0.093027 -0.014829 Median 0.002271 3Q 0.015562 Max 0.070540 Coefficients: Estimate Std. Error t value Pr(>|t|) z.lag.1 -0.0004830 0.0003082 -1.567 0.118 z.diff.lag 0.3209434 0.0592524 5.417 1.4e-07 *** --Value of test-statistic is: -1.5669 Critical values for test statistics: 1pct 5pct 10pct tau1 -2.58 -1.95 -1.62 Según estos resultados, los mejores modelos para el test ADF caso 1 son p = 4 (según AIC) y p = 2 (según BIC). CAPÍTULO 9. MODELOS ARIMA 334 Salida R 9.5 (ADF caso 2). TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Call: lm(formula = z.diff ˜ z.lag.1 + 1 + z.diff.lag) 7 summary(ADF.driftAIC) ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression drift Residuals: Min 1Q -0.091549 -0.014369 Median 0.001935 3Q 0.016303 Max 0.070747 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.002829 0.025372 0.111 0.9113 z.lag.1 -0.001010 0.004808 -0.210 0.8337 z.diff.lag1 0.361020 0.062868 5.743 2.67e-08 *** z.diff.lag2 -0.128689 0.066263 -1.942 0.0532 . z.diff.lag3 0.103275 0.062988 1.640 0.1023 --Value of test-statistic is: -0.2101 1.1827 Critical values for test statistics: 1pct 5pct 10pct tau2 -3.44 -2.87 -2.57 phi1 6.47 4.61 3.79 summary(ADF.driftBIC) ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression drift Call: lm(formula = z.diff ˜ z.lag.1 + 1 + z.diff.lag) Residuals: Min 1Q -0.092946 -0.014875 Median 0.002287 3Q 0.015635 Max 0.070638 Coefficients: ES Estimate Std. Error t value Pr(>|t|) (Intercept) 0.0022346 0.0251709 0.089 0.929 z.lag.1 -0.0009062 0.0047770 -0.190 0.850 z.diff.lag 0.3215859 0.0598071 5.377 1.71e-07 *** --Value of test-statistic is: -0.1897 1.2268 Critical values for test statistics: 1pct 5pct 10pct tau2 -3.44 -2.87 -2.57 phi1 6.47 4.61 3.79 De acuerdo a estos resultados los mejores modelos para el test ADF caso 2 son p = 4 (según AIC) y p = 2 (según BIC). 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR335 Salida R 9.6 (ADF caso 3). TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Call: lm(formula = z.diff ˜ z.lag.1 + 1 + tt + z.diff.lag) 7 summary(ADF.tendAIC) ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression trend Residuals: Min 1Q -0.090184 -0.013679 Median 0.001223 3Q 0.016159 Max 0.073434 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.723e-01 6.916e-02 2.491 0.01338 * z.lag.1 -2.964e-02 1.188e-02 -2.495 0.01324 * tt -1.409e-04 5.359e-05 -2.629 0.00908 ** z.diff.lag1 3.643e-01 6.216e-02 5.861 1.44e-08 *** z.diff.lag2 -1.174e-01 6.564e-02 -1.789 0.07485 . z.diff.lag3 1.155e-01 6.244e-02 1.850 0.06545 . --Value of test-statistic is: -2.4948 3.1113 3.4792 Critical values for test statistics: 1pct 5pct 10pct tau3 -3.98 -3.42 -3.13 phi2 6.15 4.71 4.05 phi3 8.34 6.30 5.36 summary(ADF.tendBIC) ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression trend Call: lm(formula = z.diff ˜ z.lag.1 + 1 + tt + z.diff.lag) Residuals: Min 1Q -0.088827 -0.012777 Median 0.001856 3Q 0.017450 Max 0.073870 ES Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.692e-01 6.855e-02 2.468 0.0143 * z.lag.1 -2.910e-02 1.178e-02 -2.471 0.0141 * tt -1.399e-04 5.352e-05 -2.613 0.0095 ** z.diff.lag 3.283e-01 5.919e-02 5.547 7.3e-08 *** --Value of test-statistic is: -2.471 3.1132 3.4334 Critical values for test statistics: 1pct 5pct 10pct tau3 -3.98 -3.42 -3.13 phi2 6.15 4.71 4.05 phi3 8.34 6.30 5.36 Estos resultados indican que los mejores modelos para el test ADF caso 3 son p = 4 (según AIC) y p = 2 (según BIC). CAPÍTULO 9. MODELOS ARIMA 336 3 τ̂τ,0.05 -3.42 -3.42 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Criterio AIC BIC Resultados Testes ADF para log(Y t ) Caso 1 Caso 2 Caso τ̂ τ̂0.05 τ̂μ τ̂μ,0.05 τ̂τ -1.5369 -1.95 -0.2101 -2.87 -2.4948 -1.5669 -1.95 -0.1897 -2.87 -2.4710 7 Un resumen de los resultados de los seis testes ADF se exhibe en la siguiente tabla, De acuerdo a estos resultados, en todos los casos no se rechaza la hipótesis de raı́z unitaria para el logaritmo de la tasa de cambio yen/US. Ajustamos todos los seis modelos ADF anteriores usando la función dynlm() y luego calculamos los AIC, que se muestran a continuación AIC AIC mejores modelos teste ADF para log(Y t ) Caso 1 Caso 2 Caso 3 Según AIC Según BIC Según AIC Según BIC Según AIC Según BIC -1162.26 -1169.31 -1160.27 -1167.32 -1165.31 -1172.06 De esta tabla vemos que el mejor modelo para la prueba ADF es el obtenido como mejor modelo según BIC en el caso 3, es decir, ∇ log(Yt ) = β0 + β1 t + φ∗1 log(Yt−1 ) + φ∗2 ∇ log(Yt−1 ) + Et , Et ∼ R.BN(0, σ 2 ) donde φ∗1 = φ1 + φ2 − 1, y φ∗2 = −φ2 , es decir que log(Yt ) ∼ AR(2) con tendencia lineal. Ahora bien, comparando los modelos asociados a los test DF y ADF, según AIC, de nuevo el mejor modelo es log(Y t ) ∼ AR(2) con tendencia lineal, esto indica que debemos usar éste modelo para probar la existencia de raı́z unitaria en la serie de logaritmo de la tasa de cambio yen/US. ES 9.8.5. Selección del mejor modelo para el ajuste y pron óstico del logaritmo de la tasa de cambio yen/d ólar Considere todos los resultados numéricos y gráficos relativos al ajuste como a los pronósticos presentados previamente para el logaritmo de la serie, además de la siguiente tabla que muestra los AIC de los modelos 1 a 4 y 5b, 5c (en escala logarı́tmica), y determine ¿cuál modelo ajusta mejor al conjunto de datos 1973.01 a 1994.12? ¿Cuál modelo pronostica mejor los datos 1995.01 a 1996.07? ¿Cuál modelo recomendarı́a? Escriba sus ecuaciones ajustada y de pronóstico. 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR337 AIC’s de los seis modelos ajustados Modelo 2 Modelo 3 Modelo 4 Modelo 5b -1168.34 -1161.63 -1172.77 -1169.45 Modelo 5c -1166.50 9.8.6. Código R usado 7 Modelo 1 -1164.97 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 A continuación se exhibe el código R usado en la obtención de resultados gráficos y numéricos presentados en este ejemplo. Tenga en cuenta que los modelos dinámicos ajustados con la función dynlm() fueron aquellos que la función ur.df() arrojó en los testes DF y ADF, por ello, se debe primero correr los testes de raı́z unitaria con esta última función y ver con un summary() los respectivos modelos asociados antes de ajustarlos con la función dynlm(), esto con el fin de obtener luego los AIC’s respectivos para determinar cuál test de raı́z unitaria deberı́a aplicarse a la serie. Código R 9.3. library(urca) library(forecast) library(TSA) library(timsac) library(dynlm) #Función usuario para obtener resultados Ljung-Box #como se presentan en estas notas de clase ES BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } ################################################################################ ###Lectura de los datos y análisis preliminar ################################################################################ datos=read.table(file.choose(),header=F) #Leer EXCHYENDOLAR.txt datos=ts(datos,freq=12,start=c(1973,1)) #definición del tamaño de la muestra a usar para ajuste #variable de tiempo en el ajuste y en pronóstico con modelos lineales n=length(datos)-19 t=1:n tnuevo=(n+1):length(datos) pmax=floor(nˆ0.25)+1 #define número máximo de p en testes ADF #definiendo el log de los datos a ajustar y su primera diferencia lny=ts(log(datos[1:n]),freq=12,start=c(1973,1)) 338 CAPÍTULO 9. MODELOS ARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Gráficas de la serie, su diferencia y de log y su diferencia nf=layout(rbind(c(1,2),c(3,4))) plot(datos,ylab=expression(Y[t])) plot(diff(datos),ylab=expression(paste(nabla,sep="",Y[t]))) abline(h=0) plot(lny,ylab=expression(log(Y[t]))) plot(dif1lny,ylab=expression(paste(nabla,sep="",log(Y[t])))) abline(h=0) 7 dif1lny=diff(lny) #Gráficas de ACF’s y PAC’s del log y de su diferencia nf=layout(rbind(c(1,2),c(3,4))) acf(as.numeric(lny),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF",sep=" ","de",sep=" ",log(Y[t])))) pacf(as.numeric(lny),lag.max=36,ci.col="red", main=expression(paste("PACF",sep=" ","de",sep=" ",log(Y[t])))) acf(as.numeric(dif1lny),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF",sep=" ","de",sep=" ",nabla,sep="",log(Y[t])))) pacf(as.numeric(dif1lny),lag.max=36,ci.col="red", main=expression(paste("PACF",sep=" ","de",sep=" ",nabla,sep="",log(Y[t])))) ############################################################################### ###Identificación de modelos ############################################################################### #Identificación modelos ARMA para la primera diferencia del log de la serie eacf(dif1lny) identif1=autoarmafit(dif1lny) identif1 #Identificación modelo ARIMA para log de la serie usando criterio BIC identif2=auto.arima(lny,ic="bic") summary(identif2) ############################################################################### ###Realizando pruebas de raı́z unitaria para log de la serie ############################################################################### #Test de raı́z unitaria DF con media cero df.mediacero=ur.df(lny,lags=0,type=’none’) summary(df.mediacero) #Ajuste modelo DF con media cero reg.DFdrift0=dynlm(d(lny)˜L(lny,1)-1) ES #Test raı́z unitaria DF con drift df.drift=ur.df(lny,lags=0,type=’drift’) summary(df.drift) #Ajuste modelo DF con drift reg.DFdrift=dynlm(d(lny)˜L(lny,1)) #Test raı́z unitaria DF con tendencia df.tend=ur.df(lny,lags=0,type=’trend’) summary(df.tend) #Ajuste modelo DF con tendencia reg.DFtend=dynlm(d(lny)˜L(lny,1)+trend(lny,scale=F)) #AIC’s mejores modelos DF cbind(AICDrift0=AIC(reg.DFdrift0),AICDrift=AIC(reg.DFdrift),AICtend=AIC(reg.DFtend)) #Test raı́z unitaria ADF media cero, con selección de p según AIC ADF.drift0AIC=ur.df(lny,lags=pmax,type=’none’,selectlags =’AIC’) summary(ADF.drift0AIC) 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR339 #El modelo que se ajusta es el arrojado por ADF.drift0AIC reg.ADFdrift0aic=dynlm(d(lny)˜L(lny,1)+L(dif1lny,1)+L(dif1lny,2)+L(dif1lny,3)-1) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #El modelo que se ajusta es el arrojado por ADF.drift0BIC reg.ADFdrift0bic=dynlm(d(lny)˜L(lny,1)+L(dif1lny,1)-1) 7 #Test raı́z unitaria ADF media cero, con selección de p según BIC ADF.drift0BIC=ur.df(lny,lags=pmax,type=’none’,selectlags =’BIC’) summary(ADF.drift0BIC) #Test raı́z unitaria ADF con drift, con selección de p según AIC ADF.driftAIC=ur.df(lny,lags=pmax,type=’drift’,selectlags =’AIC’) summary(ADF.driftAIC) #El modelo que se ajusta es el arrojado por ADF.driftAIC reg.ADFdriftaic=dynlm(d(lny)˜L(lny,1)+L(dif1lny,1)+L(dif1lny,2)+L(dif1lny,3)) #Test raı́z unitaria ADF con drift, con selección de p según BIC ADF.driftBIC=ur.df(lny,lags=pmax,type=’drift’,selectlags =’BIC’) summary(ADF.driftBIC) #El modelo que se ajusta es el arrojado por ADF.driftBIC reg.ADFdriftbic=dynlm(d(lny)˜L(lny,1)+L(dif1lny,1)) #Test raı́z unitaria ADF con tendencia, con selección de p según AIC ADF.tendAIC=ur.df(lny,lags=pmax,type=’trend’,selectlags =’AIC’) summary(ADF.tendAIC) #El modelo que se ajusta es el arrojado por ADF.tendAIC reg.ADFtendaic=dynlm(d(lny)˜L(lny,1)+trend(lny,scale=F)+L(dif1lny,1)+L(dif1lny,2)+L(dif1lny,3)) #Test raı́z unitaria ADF con tendencia, con selección de p según BIC ADF.tendBIC=ur.df(lny,lags=pmax,type=’trend’,selectlags =’BIC’) summary(ADF.tendBIC) #El modelo que se ajusta es el arrojado por ADF.tendBIC reg.ADFtendbic=dynlm(d(lny)˜L(lny,1)+trend(lny,scale=F)+L(dif1lny,1)) #AIC’s mejores modelos ADF cbind(AICDrift0a=AIC(reg.ADFdrift0aic),AICDrift0b=AIC(reg.ADFdrift0bic), AICDrifta=AIC(reg.ADFdriftaic),AICDriftb=AIC(reg.ADFdriftbic), AICtenda=AIC(reg.ADFtendaic),AICtendb=AIC(reg.ADFtendbic)) ES ############################################################################### ###Ajustes modelos ARIMA identificados para log de la serie ############################################################################### #Modelo 1: ARIMA(1,1,0) mod1=Arima(lny,order=c(1,1,0)) summary(mod1) #Calculando valores de estadı́sticos Z0 y sus valores P en modelo 1 est=cbind(Estimación=mod1$coef,s.e=sqrt(diag(mod1$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) #predicciones en escala log modelo 1 predmod1=forecast(mod1,h=(length(datos)-n),level=95) predmod1 #Graficando la serie de logaritmos y predicciones modelo 1 plot(predmod1,main="Log tasa yen/$US\nPronósticos modelo 1") lines(time(datos)[(n+1):length(datos)],log(datos)[(n+1):length(datos)],type=’l’,col=2,lwd=2) legend("topright",legend=c("Realización","pronosticado zona amarilla"),lwd=c(2,2),col=c(2,1)) 340 CAPÍTULO 9. MODELOS ARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Análisis residuales del modelo 1 nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(mod1), main=expression(paste("Residuos ARIMA(1,1,0) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) plot(fitted(mod1),residuals(mod1), main=expression(paste("Residuos ARIMA(1,1,0) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) acf(as.numeric(residuals(mod1)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos ARIMA(1,1,0) para",sep=" ",log(Y[t])))) pacf(as.numeric(residuals(mod1)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos ARIMA(1,1,0) para",sep=" ",log(Y[t])))) 7 #Calculando precisión de pronósticos en escala log modelo 1 accuracy(predmod1,log(datos)[(n+1):length(datos)]) eacf(residuals(mod1)) BP.LB.test(residuals(mod1),maxlag=36,type="Ljung") shapiro.test(residuals(mod1)) ############################################################################### #Modelo 2: ARIMA(0,1,1) mod2=Arima(lny,order=c(0,1,1)) summary(mod2) #Calculando estadı́sticos Z0 y sus valores P en modelo 2 est=cbind(Estimación=mod2$coef,s.e=sqrt(diag(mod2$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) #Pronósticos en escala log modelo 2 predmod2=forecast(mod2,h=(length(datos)-n),level=95) predmod2 #Graficando la serie de logaritmos y predicciones modelo 2 plot(predmod2,main="Log tasa yen/$US\nPronósticos modelo 2") lines(time(datos)[(n+1):length(datos)],log(datos)[(n+1):length(datos)],type=’l’,col=2,lwd=2) legend("topright",legend=c("Realización","pronosticado zona amarilla"),lwd=c(2,2),col=c(2,1)) #Calculando precisión de los pronósticos en escala log modelo 2 accuracy(predmod2,log(datos)[(n+1):length(datos)]) ES #Análisis de residuales modelo 2 nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(mod2),main=expression(paste("Residuos ARIMA(0,1,1) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) plot(fitted(mod2),residuals(mod2), main=expression(paste("Residuos ARIMA(0,1,1) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) acf(as.numeric(residuals(mod2)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos ARIMA(0,1,1) para",sep=" ",log(Y[t])))) pacf(as.numeric(residuals(mod2)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos ARIMA(0,1,1) para",sep=" ",log(Y[t])))) eacf(residuals(mod2)) BP.LB.test(residuals(mod2),maxlag=36,type="Ljung") shapiro.test(residuals(mod2)) ################################################################################ #Modelo 3: ARIMA(2,1,3) mod3=Arima(lny,order=c(2,1,3)) summary(mod3) #Calculando estadı́sticos Z0 y sus valores P en modelo 3 est=cbind(Estimación=mod3$coef,s.e=sqrt(diag(mod3$var.coef))) z0=est[,1]/est[,2] 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR341 vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) #predicciones en escala log modelo 3 predmod3=forecast(mod3,h=(length(datos)-n),level=95) predmod3 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 #graficando la serie de logaritmos y predicciones modelo 3 plot(predmod3,main="Log tasa yen/$US\nPronósticos modelo 3") lines(time(datos)[(n+1):length(datos)],log(datos)[(n+1):length(datos)],type=’l’,col=2,lwd=2) legend("topright",legend=c("Realización","pronosticado zona amarilla"),lwd=c(2,2),col=c(2,1)) #Calculando precisión de los pronósticos en escala log modelo 3 accuracy(predmod3,log(datos)[(n+1):length(datos)]) #Análisis de residuales modelo 3 nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(mod3),main=expression(paste("Residuos ARIMA(2,1,3) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) plot(fitted(mod3),residuals(mod3), main=expression(paste("Residuos ARIMA(2,1,3) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) acf(as.numeric(residuals(mod3)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos ARIMA(2,1,3) para",sep=" ",log(Y[t])))) pacf(as.numeric(residuals(mod3)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos ARIMA(2,1,3) para",sep=" ",log(Y[t])))) eacf(residuals(mod3)) BP.LB.test(residuals(mod3),maxlag=36,type="Ljung") shapiro.test(residuals(mod3)) ################################################################################ #Modelo 4: ARIMA(3,1,2) mod4=Arima(lny,order=c(3,1,2)) summary(mod4) #Calculando estadı́sticos Z0 y sus valores P en modelo 4 est=cbind(Estimación=mod4$coef,s.e=sqrt(diag(mod4$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) #predicciones en escala log modelo 4 predmod4=forecast(mod4,h=(length(datos)-n),level=95) predmod4 ES #Graficando la serie de logaritmos y predicciones modelo 4 plot(predmod4,main="Log tasa yen/$US\nPronósticos modelo 4") lines(time(datos)[(n+1):length(datos)],log(datos)[(n+1):length(datos)],type=’l’,col=2,lwd=2) legend("topright",legend=c("Realización","pronosticado zona amarilla"),lwd=c(2,2),col=c(2,1)) #Calculando precisión de los pronósticos en escala log modelo 4 accuracy(predmod4,log(datos)[(n+1):length(datos)]) #Análisis de residuales modelo 4 nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(mod4),main=expression(paste("Residuos ARIMA(3,1,2) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) plot(fitted(mod4),residuals(mod4), main=expression(paste("Residuos ARIMA(3,1,2) para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) acf(as.numeric(residuals(mod4)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos ARIMA(3,1,2) para",sep=" ",log(Y[t])))) pacf(as.numeric(residuals(mod4)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos ARIMA(3,1,2) para",sep=" ",log(Y[t])))) eacf(residuals(mod4)) BP.LB.test(residuals(mod4),maxlag=36,type="Ljung") 342 CAPÍTULO 9. MODELOS ARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Análisis de residuales modelo 5a nf=layout(rbind(c(1,2),c(3,4))) plot(t,residuals(mod5a),type=’l’, main=expression(paste("Residuos modelo 5a para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) plot(fitted(mod5a),residuals(mod5a), main=expression(paste("Residuos modelo 5a para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) acf(as.numeric(residuals(mod5a)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos modelo 5a para",sep=" ",log(Y[t])))) pacf(as.numeric(residuals(mod5a)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos modelo 5a para",sep=" ",log(Y[t])))) 7 shapiro.test(residuals(mod4)) ################################################################################ ###Ajuste modelos de tendencia determinı́stica ################################################################################ #Modelo 5a: tendencia determinı́stica y errores R.B mod5a=lm(lny˜t) summary(mod5a) eacf(residuals(mod5a)) ################################################################################ #Tendencia deterministica y errores AR(2) mod5b=Arima(lny,order=c(2,0,0),xreg=t,method=’ML’) summary(mod5b) #Calculando estadı́sticos Z0 y sus valores P en modelo 5b est=cbind(Estimación=mod5b$coef,s.e=sqrt(diag(mod5b$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) #predicciones en escala log modelo 5b predmod5b=forecast(mod5b,xreg =tnuevo,level=95) predmod5b #Graficando la serie de logaritmos y predicciones modelo 5b plot(predmod5b,main="Log tasa yen/$US\nPronósticos modelo 5b") lines(time(datos)[(n+1):length(datos)],log(datos)[(n+1):length(datos)],type=’l’,col=2,lwd=2) legend("topright",legend=c("Realización","pronosticado zona amarilla"),lwd=c(2,2),col=c(2,1)) #Calculando precisión de los pronósticos en escala log modelo 5b accuracy(predmod5b,log(datos)[(n+1):length(datos)]) ES #Análisis de residuales modelo 5b nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(mod5b),main=expression(paste("Residuos modelo 5b para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) plot(fitted(mod5b),residuals(mod5b), main=expression(paste("Residuos modelo 5b para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) acf(as.numeric(residuals(mod5b)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos modelo 5b para",sep=" ",log(Y[t])))) pacf(as.numeric(residuals(mod5b)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos modelo 5b para",sep=" ",log(Y[t])))) eacf(residuals(mod5b)) BP.LB.test(residuals(mod5b),maxlag=36,type="Ljung") shapiro.test(residuals(mod5b)) ################################################################################ #Tendencia determinı́stica y errores ARMA(3,2) mod5c=Arima(lny,order=c(3,0,2),xreg=t,method=’ML’) summary(mod5c) #Calculando estadı́sticos Z0 y sus valores P en modelo 5c 9.8. EJEMPLO: MODELACI ÓN DE LA SERIE TASA DE CAMBIO YEN/D ÓLAR343 est=cbind(Estimación=mod5c$coef,s.e=sqrt(diag(mod5c$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) 7 #predicciones en escala log modelo 5c predmod5c=forecast(mod5c,xreg =tnuevo,level=95) predmod5c TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Graficando la serie de logaritmos y pronósticos modelo 5c plot(predmod5c,main="Log tasa yen/$US\nPronósticos modelo 5c") lines(time(datos)[(n+1):length(datos)],log(datos)[(n+1):length(datos)],type=’l’,col=2,lwd=2) legend("topright",legend=c("Realización","pronosticado zona amarilla"),lwd=c(2,2),col=c(2,1)) #Calculando precisión de los pronósticos en escala log modelo 5c accuracy(predmod5c,log(datos)[(n+1):length(datos)]) #Análisis de residuales modelo 5c nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(mod5c),main=expression(paste("Residuos modelo 5c para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) plot(fitted(mod5c),residuals(mod5c), main=expression(paste("Residuos modelo 5c para ",sep=" ",log(Y[t])))) abline(h=0,lty=2) acf(as.numeric(residuals(mod5c)),lag.max=36,ci.type="ma",ci.col="red", main=expression(paste("ACF residuos modelo 5c para",sep=" ",log(Y[t])))) pacf(as.numeric(residuals(mod5c)),lag.max=36,ci.col="red", main=expression(paste("PACF residuos modelo 5c para",sep=" ",log(Y[t])))) eacf(residuals(mod5c)) BP.LB.test(residuals(mod5c),maxlag=36,type="Ljung") shapiro.test(residuals(mod5c)) ################################################################################ #Cálculo AIC’s modelos ajustados a log de la serie ################################################################################ ES cbind(AICmod1=AIC(mod1),AICmod2=AIC(mod2),AICmod3=AIC(mod3),AICmod4=AIC(mod4),AICmod5b=AIC(mod5b), AICmod5c=AIC(mod5c)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ES 7 344 CAPÍTULO 9. MODELOS ARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Capı́tulo 10 Modelos SARIMA 10.1. Introducción La estacionalidad es un tipo particular de no estacionariedad que se presenta en muchas series de tiempo, en particular, series afectadas por fenómenos de consumo, ambientales, entre otros. La estacionalidad ha sido definida como fluctuaciones que se repiten anualmente, posiblemente con cambios graduales a lo largo de los años; sin embargo, aunque en general se considere como un fenómeno repetitivo anual esto no implica que no pueda existir modelos de comportamiento periódicos con duración menor al año. De acuerdo a Martı́nez [8], si la estacionalidad fuese exactamente periódica, entonces podrı́a ser filtrada de la serie mediante una componente determinı́stica, pero en general, la estacionalidad es sólo aproximadamente constante. Sea s la longitud del perı́odo estacional. Casi siempre la estacionalidad puede ser eliminada de una serie tomando diferencias entre las observaciones separadas s lugares en el tiempo y esto es denominado como diferencia estacional y denotado por ∇s Yt = Yt − Yt−s , con ∇s = 1 − B s . ES Note que ∇s = ∇s , donde ∇s = (1 − B)s . En general, el operador de diferencias s D estacionales de perı́odo s se define como ∇ D s = (1 − B ) , de modo que aplicado a la serie Yt obtenemos, D s D ∇D s Yt = (1 − B ) Yt = j=0 D! (−1)j Yt−js , j!(D − j)! (10.1) comúnmente con D = 1, 2. Por ejemplo, si D = 2 y s = 12, tenemos que ∇212 Yt = (1 − B 12 )2 Yt = Yt − 2Yt−12 + Yt−24 Note que al aplicar el operador ∇ D s se pierden las primeras s×D observaciones. Considere ahora el caso D = 1 y suponga una serie con la siguiente estructura, Yt = St + Et 345 CAPÍTULO 10. MODELOS SARIMA 346 donde St es una componente estacional determinı́stica de perı́odo s satisfaciendo St = St−ks para k = ±1, ±2, . . . , TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ∇s Yt = Yt − Yt−s = (St − St−s ) + (Et − Et−s ) = ∇s Et 7 y Et un proceso estacionario. Entonces es decir, la serie Wt = ∇s Yt es un proceso estacionario. Ahora suponga que la estacionalidad es tal que (una estacionalidad estocástica) St = St−s + Ut donde {Et } y {Ut } son procesos estacionarios independientes. Entonces, ∇s Yt = Yt − Yt−s = (St − St−s ) + (Et − Et−s ) = Ut + ∇s Et entonces, en este caso también obtenemos que la serie W t = ∇s Yt es un proceso estacionario. Con los dos casos anteriores se quiere mostrar que el operador ∇ s puede convertir un proceso estacional en un proceso estacionario. Nota: 1. Si el proceso {Ut } es un ruido blanco entonces S t = St−s + Ut define una caminata aleatoria estacional. ES 2. Si VAR[Ut ] VAR[Et ], entonces {St } modeları́a una componente estacional que cambia lentamente. 3. Bajo la condición de que {E t } y {Ut } son ruidos blancos independientes, la ACF de ∇s Yt = Ut + ∇s Et tendrá un patrón similar al correspondiente a la ACF de un modelo MA(1) s , que se verá más adelante. 10.2. Modelos ARIMA estacionales En muchos casos, es posible que la estacionalidad de una serie en lugar de ser una componente determinı́stica e independiente de otras componentes de la serie, sea una componente estocástica y correlacionada con componentes no estacionales. De acuerdo a Wei [9], un proceso {Y t } puede contener relaciones intra periodos y entre perı́odos estacionales. Las relaciones intra 10.2. MODELOS ARIMA ESTACIONALES 347 perı́odos representan la correlación entre . . . , Y t−2 , Yt−1 , Yt , Yt+1 , Yt+2 , . . ., mientras que las relaciones entre perı́odos estacionales representan la correlación entre . . . , Yt−2s , Yt−s , Yt , Yt+s , Yt+2s , . . . Las relaciones intra perı́odos pueden modelarse por un modelo ARIMA(p,d,q), es decir, de la forma (10.2) 7 φp (B)∇d Yt = θq (B)bt TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 donde bt es un ruido blanco, φ p (B) = 1 − φ1 B − φ2 B 2 − · · · − φp B p y θq (B) = 1 + θ1 B +θ2 B 2 +· · ·+θq B q , ambos polinomios sin raı́ces comunes y de módulo mayor a 1. Sin embargo, si bt contiene correlaciones no explicadas entre perı́odos estacionales, es decir, si sigue un proceso ARIMA(P,D,Q) s , dado por s ΦP (B s )∇D s bt = ΘQ (B )Et , con Et ∼ R.B (10.3) donde ΦP (B s ) = 1 − Φ1 B s − Φ2 B 2s − · · · − ΦP B P s y ΘQ (B s ) = 1 + Θ1B s + Θ2 B 2s + · · · + ΘQ B Qs , ambos polinomios de B s sin raı́ces comunes y con módulo mayor a 1, entonces, combinando (10.2) y (10.3), obtenemos el modelo Arima estacional multiplicativo o SARIMA, dado por s 2 φp (B)ΦP (B s )∇d ∇D s Yt = θq (B)ΘQ (B )Et , Et ∼ R.BN(0, σ ) (10.4) donde φp (B) y θq (B) son llamados los polinomios autorregresivo y de medias móviles, regulares, respectivamente, en tanto que Φ P (B s ) y ΘQ (B s ) son llamados los polinomios autorregresivo y de medias móviles, estacionales, respectivamente. El modelo en (10.4) es denotado por ARIMA(p,d,q) × (P,D,Q) s donde s se refiere al perı́odo estacional. Nota: 1. Si d = D = 0, el modelo es conocido como Arma estacional o estacionario estacional y denotado por ARMA(p,q) × (P,Q) s , es decir, φp (B)ΦP (B s )Yt = θq (B)ΘQ (B s )Et , Et ∼ R.BN(0, σ 2 ) (10.5) ES con φp (B) y ΦP (B s ) sin raı́ces unitarias en B y B s , respectivamente. 2. Decimos que un proceso {Y t } sigue un modelo Arima estacional multiplicativo de perı́odo s, con parte regular con órdenes p, d, q y parte estacional con órdenes P, D, Q, si la serie diferenciada W t = ∇d ∇D s Yt satisface un modelo Arma estacional, ARMA(p,q) × (P,Q) s . 10.2.1. Algunos casos especiales de modelos SARIMA Modelos ARIMA puramente estacionales Estos corresponden a los casos ARIMA(0,0,0) × (P,D,Q) s y también denotados por ARIMA(P,D,Q)s , con ecuación, s 2 ΦP (B s )∇D s Yt = ΘQ (B )Et , Et ∼ R.BN(0, σ ) (10.6) CAPÍTULO 10. MODELOS SARIMA 348 7 Si D = 0, Q = 0 y P = 1 tenemos el modelo AR(1) s , donde Yt = Φ1 Yt−s + Et . Para este proceso se tiene que ⎧ 2 j ⎨ σ Φ1 para k = js, j = 0, 1, 2, . . . γk = 1 − Φ21 ⎩ 0 ∀ k = js TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Luego, la ACF y PACF son dadas por Φj1 γk ρk = = γ0 0 para k = js, j = 0, 1, 2, . . . , ∀ k = js φkk ⎧ ⎪ ⎨1 = Φ1 ⎪ ⎩ 0 para k = 0; para k = s; ∀ k = 0, s Observe por ejemplo, la siguiente figura. 1 Φ1 > 0 φkk ρ(k) 1 0 0 s 2s 3s 4s 5s Φ1 > 0 0 6s s −1 −1 k k 0 0 ES 1 Φ1 < 0 φkk ρ(k) 1 s 2s 3s −1 4s 5s Φ1 < 0 0 6s s −1 k Figura 10.1: k ACF’s y PACF’s modelos AR(1)s Si P = 0, D = 0 y Q = 1, el proceso sigue un modelo MA(1) s , dado por Yt = Et + Θ1 Et−s , para el cual ⎧ 2 2 ⎪ ⎨σ (1 + Θ1 ) si k = 0 γ(k) = Θ1 σ 2 si k = s ; ⎪ ⎩ 0 si k = 0, s 10.2. MODELOS ARIMA ESTACIONALES son dadas por si k = s ; φkk si k = 0, s ⎧ ⎪ ⎨1 = (−1)k+1 Θk1 (1 − Θ21 ) ⎪ ⎩ 2(k+1) 1 − Θ1 si k = 0, si k = js, j = 1, 2, . . . ; 7 si k = 0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 y la ACF y PACF ⎧ 1 ⎪ ⎪ ⎨ Θ 1 ρ(k) = ⎪ 1 + Θ21 ⎪ ⎩ 0 349 Observe las ACF’s y PACF’s que se ilustran a continuación. 0.5 Θ1 > 0 φkk ρ(k) 1 0 0 s 2s 3s 4s 5s Θ1 > 0 0 6s s −1 2s 5s 6s k 1 0.5 Θ1 < 0 φkk ρ(k) 4s −0.5 k 0 0 s 2s 3s −1 4s 5s Θ1 < 0 0 6s s 2s 3s 4s 5s 6s −0.5 k ES 3s Figura 10.2: k ACF’s y PACF’s modelos MA(1)s En el caso de un ARMA(P,Q)s , es decir, ΦP (B s )Yt = ΘQ (B s )Et , Et ∼ R.B, observaremos que la ACF y PACF se comportan como en el caso de un ARMA(p,q), es decir, patrón de cola en ambas gráficas, sólo que tomando valores no nulos en k = js, j = 1, 2, . . .. Por ejemplo, vea las ACF y PACF ilustradas en la Figura 10.3. Modelos ARMA(p,q) × (P,Q) s En estos casos, d = D = 0. Estos modelos son como un ARMA(p+Ps,q+Qs) pero sólo p + P + q + Q + pP + qQ coeficientes son diferentes de cero. Por ejemplo, MA(1) × MA(1)s , MA(1) × AR(1)s , AR(1) × MA(1)s , AR(1) × AR(1)s . En las Figuras 10.4, 10.5, 10.6 y 10.7 se ilustran la ACF y PACF de algunos de estos casos. CAPÍTULO 10. MODELOS SARIMA 1 Φ1 > 0, Θ1 > 0 φkk ρ(k) 1 0 s 2s 3s 4s 5s 0 6s s 2s 3s 4s 5s 6s TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0 Φ1 > 0, Θ1 > 0 7 350 −1 −1 k k 1 Φ1 < 0, Θ1 < 0 φkk ρ(k) 1 0 0 s 2s 3s 4s 5s Φ1 < 0, Θ1 < 0 0 6s s −1 2s 1 5s 6s k 0.5 Φ1 > 0, Θ1 < 0, Φ1 > Θ1 φkk ρ(k) 4s −1 k 0 0 s 2s 3s 4s 5s Φ1 > 0, Θ1 < 0, Φ1 > Θ1 0 6s s −1 2s 3s 4s 5s 6s −0.5 ES k 1 k 0.5 Φ1 > 0, Θ1 < 0, Φ1 < Θ1 φkk ρ(k) 3s 0 0 s 2s 3s 4s −1 5s Φ1 > 0, Θ1 < 0, Φ1 < Θ1 0 6s s 2s 3s −0.5 k Figura 10.3: k ACF’s y PACF’s modelos ARMA(1,1)s 4s 5s 6s 10.2. MODELOS ARIMA ESTACIONALES 1 θ1 = 0.5, Θ1 = 0.8 7 θ1 = 0.5, Θ1 = 0.8 φkk TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 351 0 0 12 24 0 36 12 −1 k 1 1 θ1 = − 0.5, Θ1 = 0.8 φkk ρ(k) 36 −1 k 0 0 12 24 θ1 = − 0.5, Θ1 = 0.8 0 36 12 −1 24 36 −1 k k 1 1 φkk θ1 = − 0.5, Θ1 = − 0.8 ES ρ(k) 24 0 0 12 24 −1 0 36 12 24 −1 k Figura 10.4: θ1 = − 0.5, Θ1 = − 0.8 k ACF’s y PACF’s modelos MA(1) × MA(1)12 36 CAPÍTULO 10. MODELOS SARIMA 1 Φ1 = 0.75, θ1 = 0.4 Φ1 = 0.75, θ1 = 0.4 φkk TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 7 352 0 0 12 24 0 36 12 −1 k 1 1 Φ1 = 0.75, θ1 = − 0.4 φkk ρ(k) 36 −1 k 0 0 12 24 Φ1 = 0.75, θ1 = − 0.4 0 36 12 −1 24 36 −1 k 1 k 1 φkk Φ1 = − 0.75, θ1 = − 0.4 ES ρ(k) 24 0 0 12 24 −1 0 36 12 24 −1 k Figura 10.5: Φ1 = − 0.75, θ1 = − 0.4 k ACF’s y PACF’s modelos MA(1) × AR(1)12 36 10.2. MODELOS ARIMA ESTACIONALES 0.71 Θ1 = 0.8, φ1 = 0.7 7 Θ1 = 0.8, φ1 = 0.7 φkk TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ρ(k) 1 353 0 0 12 24 0 36 12 −1 k 1 0.5 Θ1 = 0.8, φ1 = − 0.7 φkk ρ(k) 36 −0.5 k 0 0 12 24 Θ1 = 0.8, φ1 = − 0.7 0 12 24 36 36 −1 −0.71 k k 1 1 φkk Θ1 = − 0.8, φ1 = − 0.7 ES ρ(k) 24 0 0 12 24 −1 0 36 12 24 −1 k Figura 10.6: Θ1 = − 0.8, φ1 = − 0.7 k ACF’s y PACF’s modelos AR(1) × MA(1)12 36 CAPÍTULO 10. MODELOS SARIMA 1 φ1 = 0.5, Φ1 = 0.8 φkk ρ ( k) 1 0 4 8 12 16 20 0 24 4 8 12 16 20 24 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0 φ1 = 0.5, Φ1 = 0.8 7 354 −1 −1 k 1 φ1 = 0.5, Φ1 = − 0.8 φkk ρ(k) 1 k 0 0 4 8 12 16 20 φ1 = 0.5, Φ1 = − 0.8 0 24 4 −1 8 1 20 24 k 1 φ1 = − 0.5, Φ1 = 0.8 φkk ρ(k) 16 −1 k 0 0 4 8 12 16 20 φ1 = − 0.5, Φ1 = 0.8 0 24 4 −1 8 12 16 20 24 −1 ES k 1 k 1 φ1 = − 0.5, Φ1 = − 0.8 φkk ρ(k) 12 0 0 4 8 12 −1 16 20 φ1 = − 0.5, Φ1 = − 0.8 0 24 4 8 12 −1 k Figura 10.7: k ACF’s y PACF’s modelos AR(1) × AR(1)4 16 20 24 10.3. ACF DE PROCESOS ESTACIONALES 355 Modelos “Air Passengers” Corresponde al modelo ARIMA(0, 1, 1) × (0, 1, 1) s, es decir (1 − B)(1 − B s )Yt = (1 + θ1 B)(1 + Θ1 B s )Et , Et ∼ R.BN(0, σ 2 ) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Este modelo ha sido muy útil para representar series de tiempo estacionales tales como datos de aerolı́neas, de ahı́ su nombre. Observe que considerando el proceso definido por W t = ∇∇s Yt , éste sigue un MA(1) × MA(1) s , para el cual se tiene que su ACF es dada por ⎧ ⎪ 1 si k = 0 ⎪ ⎪ ⎪ θ ⎪ 1 ⎪ ⎪ si k = 1 ⎪ 2 ⎪ 1 + θ ⎪ 1 ⎨ θ1 Θ1 si k = s − 1, s + 1 . ρ(k) = ⎪ (1 + θ12 )(1 + Θ21 ) ⎪ ⎪ ⎪ Θ1 ⎪ ⎪ si k = s ⎪ ⎪ 1 + Θ21 ⎪ ⎪ ⎩ 0 en otro caso 10.2.2. Series con tendencia y estacionalidad estoc ásticas Considere un proceso {Y t }, tal que Yt = Tt + St + Et donde Tt = Tt−1 + Ut , St = St−s + Vt ES con {Et }, {Ut } y {Vt } son ruidos blancos mutuamente independientes y la componente estacional es de perı́odo s. Bajo estas condiciones observe que {T t } describe una caminata aleatoria y {S t } una caminata aleatoria estacional. En este caso es necesario tomar tanto una diferencia regular como una diferencia estacional para obtener un proceso estacionario, ∇∇s Yt = (Et + Ut + Vt ) − (Et−1 + Vt−1 ) − (Et−s + Ut−s ) + Et−s−1 este proceso tiene una ACF distinta de cero en k = 0, 1, s − 1, s, s + 1 como en el caso de un proceso MA(1) × MA(1) s Ası́, el proceso {Yt } se comporta de manera similar a un proceso ARIMA(0,1,1) × (0,1,1) s , aunque a diferencia de este último, involucra tres tipos de innovaciones definidas por los ruidos blancos. 10.3. ACF de procesos estacionales d s D Sea Wt = ∇d ∇D s Yt = (1 − B) (1 − B ) Yt el proceso estacionario resultante de diferenciar d veces de forma regular y D veces de forma estacional a Y t . Entonces Wt ∼ ARMA(p + P s, q + Qs), tal que φp (B)ΦP (B s )Wt = θq (B)ΘQ (B s )Et , Et ∼ R.BN(0, σ 2 ) CAPÍTULO 10. MODELOS SARIMA 356 La ACF de Wt es una mezcla de sus componentes regulares y estacionales. De acuerdo a Martinez [8], puede mostrarse que si r j son las autocorrelaciones del proceso ARMA(p,q) “regular” 7 φp (B)xt = θq (B)ut TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 y si Rjs son las autocorrelaciones en los rezagos s, 2s, 3s, . . . del proceso ARMA(P,Q) s “estacional” ΦP (B s )zt = ΘQ (B s )vt entonces la ACF ρ(k) del proceso W t satisface rk + ρ(k) = ∞ Rjs (rjs+k + rjs−k ) j=1 1+2 ∞ (10.7) rjs Rjs j=1 Si suponemos que r k ≈ 0 en rezagos k altos, entonces 1. En rezagos k bajos (k < s) se observará únicamente la ACF de la parte regular, es decir, ρ(k) ≈ r k . 2. En valores de rezagos estacionales (k = js, j = 1, 2, . . .), se observará básicamente la ACF de la parte estacional y suponiendo que r js ≈ 0 para j = 1, 2, . . ., entonces ρ(js) ≈ Rjs , j = 1, 2, . . .. 3. Alrededor de los rezagos estacionales, k = js, j = 1, 2, . . ., donde ρ(k) no sea nulo, se observará la interacción entre la parte regular y la estacional, que se manifestará como la repetición de la ACF de la parte regular a ambos lados de cada rezago estacional. ES Guerrero [5], Sección 5.2.1 (pp. 185 - 205) presenta las ACF’s teóricas de algunos modelos SARIMA. 10.4. PACF y EACF de procesos estacionales Según Wei [9], las componentes autorregresivas regular y estacional del proceso producen patrones de corte en la PACF, en los rezagos no estacionales y estacionales, respectivamente; por otro lado, las componentes de medias móviles estacionales y no estacionales producen patrones de decaimiento exponenciales y/o sinusoidales amortiguados, en los respectivos rezagos estacionales y no estacionales. Martı́nez [8] también enuncia lo siguiente: 1. En los primeros rezagos aparece la PACF de la parte regular y en los rezagos estacionales aparece la PACF de la parte estacional. 10.5. CONSTRUCCI ÓN Y PRONÓSTICOS EN MODELOS ESTACIONALES 357 2. A la derecha de cada coeficiente de autocorrelación parcial estacional no nulo, es decir, en los rezagos k = js + 1, js + 2, . . . aparece la PACF de la parte regular, en forma invertida si φ js,js es positivo y con su signo si φ js,js es negativo. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 3. A la izquierda de φ js,js, es decir, en los rezagos k = js − 1, js − 2, . . . se observará la ACF de la parte regular. 4. En modelos estacionales la PACF en k = js, j = 1, 2, . . . suele ser de magnitud mucho menor que en el caso de una estructura estacional pura. De acuerdo a Wei [9], en modelos estacionales la construcción de la EACF es bastante dispendiosa y en general muy complicada y su uso en la identificación de series estacionales es muy limitada. 10.5. Construcción y pronósticos en modelos estacionales Desde que los modelos Arima estacionales son un caso especial de los modelos Arima, la identificación del modelo, la estimación de los parámetros, el chequeo de supuestos y diagnósticos y la obtención de pronósticos para estos modelos estacionales utilizan los mismos métodos generales vistos para los modelos Arima, aunque la identificación es un poco más complicada ya que el número de modelos que podrı́an postularse para una serie dada aumenta considerablemente. Tenga en cuenta que la identificación de la estructura no estacionaria consiste en (Martı́nez [8]): 1. Determinar si es necesario realizar alguna transformación de los datos para estabilizar la varianza. ES 2. Determinar el número de diferencias regulares d para que la media sea constante, generalmente d = 1, 2. Si la serie tiene tendencia o muestra cambio de nivel en la media, debe diferenciarse y esta situación se deduce generalmente del gráfico de la serie; sin embargo, si la decisión no resulta clara a través del gráfico de la serie, se debe estudiar la ACF y PACF donde una serie no estacionaria presenta una estructura AR con decrecimiento lento en la ACF. En procesos con estructura estacional sinusoidal la ACF será una mezcla de las componentes regulares y estacionales, y puede mostrarse que ésta función seguirá un patrón sinusoidal; en este caso la no estacionaridad se manifestará también por un decrecimiento muy lento de la ACF y será necesario diferenciar la serie. Debido a que al diferenciar una serie no estacionaria hasta convertirla en una serie estacionaria se espera también una disminución de la varianza, algunos autores recomiendan diferenciar en forma regular hasta que la varianza aumente al diferenciar; sin embargo, hay que ser cautos con esta recomendación pues es posible que para una serie estacionaria su CAPÍTULO 10. MODELOS SARIMA 358 7 varianza también disminuya al diferenciarla. Otra forma de determinar la necesidad de diferenciar es mediante la aplicación de un test de raı́z unitaria, sin embargo recuerde que estos testes adolecen de baja potencia, es decir, tienden a rechazar poco la hipótesis nula de raı́z unitaria cuando en realidad hay estacionariedad. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 3. Si la serie puede ser a priori estacional con un perı́odo s, aplicar la diferencia estacional ∇s = 1 − B s , y siempre que exista componente estacional hay que aplicar una diferencia estacional. Recuerde que la estacionalidad se manifiesta cuando a) en el gráfico de la serie aparece un patrón repetido en todos los años; b) en la ACF se presentan coeficientes de autocorrelación altos que decrecen lentamente, en los rezagos k = s, 2s, 3s, etc. c) Cuando tanto una diferencia regular y una estacional son necesaria, observamos que al aplicar sólo la diferencia regular que elimina la tendencia, las pautas estacionales aparecen más claramente. 4. Para la identificación de la estructura ARMA, una vez obtenida la serie estacionaria Wt = ∇d ∇D s Yt , para d y D apropiados, se calcula la ACF y PACF muestrales del proceso W t . Si este proceso es estacional debe estudiarse la ACF y PACF en los rezagos k = s, 2s, . . . para identificar la estructura ARMA estacional. Recuerde que la estructura ARMA regular en la ACF y PACF aparecen en los rezagos bajos y que alrededor de los rezagos estacionales se observa la interacción entre la parte regular y la estacional. Tenga en cuenta lo descrito previamente sobre las caracterı́sticas de la ACF y PACF de Arimas estacionales. ES En esta etapa también se recomienda iniciar primero con modelos AR o MA de orden bajo, pero también tratando de explicar los rasgos obvios observados en la ACF y PACF, además, utilizar las interacciones alrededor de los rezagos estacionales para confirmar la concordancia entre la parte regular y la estacional. 5. Respecto a la búsqueda de componentes determinı́sticas, Martı́nez [8] muestra que en general el modelo (1 − B)d Yt = (1 − B)d Et , Et ∼ R.B es equivalente al modelo de tendencia polinómica Yt = β0 + β1 t + · · · + βd td + Et La anterior situación también se da con los operadores estacionales. Por ejemplo, la solución de (1 − B 12 )Yt = (1 − B 12 )Et , Et ∼ R.B 10.6. RAÍCES UNITARIAS ESTACIONALES 359 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 es Yt = St + Et con St función periódica de perı́odo s tal que S t = St−12 para todo t. Ası́, por ejemplo, cuando aparece una componente MA(1) estacional con parámetro Θ 1 ≈ −1, esto puede ser un indicio de que hay componente estacional determinı́stica. Pero hay que tener cuidado con esta conclusión puesto que una raı́z unitaria en la parte MA (regular o estacional) también puede originarse por una sobre diferenciación. Por ejemplo, si se toma una diferencia estacional en el modelo Y t = St + Et cuando St = 0, o una diferencia regular en el modelo Y t = β0 + Et . 10.6. Raı́ces unitarias estacionales Cuando hay estacionalidad lo más conveniente es incluir esta componente en el modelo, y al hacerlo, es necesario contar con una metodologı́a que permita probar la existencia de raı́ces unitarias estacionales (Guerrero [5]). Al igual que en el caso de raı́ces unitarias regulares visto en el Capı́tulo anterior, las raı́ces unitarias estacionales están asociadas con el grado de diferenciación necesaria para estacionarizar la serie. Pero en este caso, de acuerdo a Guerrero [5], el hecho de que una serie requiera de diferencias estacionales debe verse como señal de que los efectos estacionales de la serie no son estables en el tiempo. Por otra parte, debemos considerar los testes de raı́ces unitarias estacionales como herramientas que complementan el análisis exploratorio de la serie que se realiza con base en la gráfica de la serie, la ACF muestral y la evaluación de la varianza con distintos órdenes de diferenciación. Recuerde que la diferenciación estacional se realiza con el filtro ∇ D s = (1 − B s )D . Si se requieren d diferencias regulares y D diferencias estacionales para estacionarizar una serie Y t , decimos que Yt es integrada de orden d, D y escribimos Yt ∼ I(d,D)s . También tenga en cuenta que cuando hay estacionalidad, existen tres posibles modelos para la serie, 1. Modelos de componentes determinı́sticas y modelos de descomposición; ES 2. Modelos no estacionarios integrados estacionalmente (SARIMA), es decir ARIMA(p,d,q) × (P,D,Q)s , con d = 0 y D = 0; 3. Modelo estacionario estacional, es decir, ARIMA(p,0,q)×(P,0,Q) s o ARMA(p,q)× (P,Q)s , que es equivalente a un ARMA(p+Ps,q+Qs) estacionario, es decir, sus polinomios autorregresivos regular y estacional son de raı́ces con módulo mayor a 1, y es invertible si los polinomios de medias móviles regular y estacional son también de raı́ces con módulo mayor a 1. Este modelo también es llamado SARMA. Cada uno de estos tres diferentes tratamientos de las series será correcto si se le aplica a un determinado comportamiento del proceso generador de los datos. Ası́, por ejemplo, si empleamos variables indicadoras para tratar la estacionalidad cuando lo correcto era diferenciar, entonces tendremos un modelo 360 CAPÍTULO 10. MODELOS SARIMA ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 mal especificado que puede conducir a conclusiones erradas. Si el proceso que genera los datos implica que el comportamiento estacional es puramente determinı́stico, entonces la mejor aproximación será emplear variables indicadoras. Si por el contrario, el proceso generador de los datos corresponde a un proceso estacionario estacional, entonces la mejor opción será estimar un modelo SARMA. Pero, si por el contrario el proceso generado de los datos implica la presencia de un proceso no estacionario estacional (raı́ces unitarias estacionales) entonces la aproximación correcta es emplear la integración (o diferenciación) estacional. La diferencia entre estas tres posibles formas de estacionalidad es que en el caso de la estacionalidad determinı́stica y la estacionaria los choques en el modelo desaparecen en el largo plazo (se regresa a la media o a la tendencia según sea el caso). Por el contrario, en los modelos no-estacionarios estacionales los choques tienen efecto permanente y se incorporan a la serie y estos procesos tienen propiedades similares a las series integradas ordinarias, tales como memoria larga, varianzas que crecen linealmente y asintóticamente no está correlacionados con otras raı́ces de otras frecuencias. Hylleberg, Engle, Granger y Yoo [6] establece además, que una serie con una estacionalidad clara puede incluso tener una combinación de algunos de los tres tipos de modelos de estacionalidad citados. Para poder introducir las pruebas de raı́ces unitarias estacionales, considere la siguiente definición: Definición: Un proceso ARMA(p,q) se dice es integrado estacional o de raı́z unitaria estacional, de perı́odo s (con s par), si alguna o todas las raı́ces de 1 − xs son raı́ces del polinomio que define la parte autorregresiva del proceso. 4 √ i= √ Por ejemplo, si s = 4, tenemos que las 12raı́ces de 1 − x son 1,√−1, i, −i, con −1. las raı́ces de 1−x son 1, −1, ±i, −(1±i 3)/2, (1±i 3)/2, √ Si s = 12 entonces √ −( 3 ± i)/2 y ( 3 ± i)/2. Las raı́ces unitarias se pueden identificar con los ángulos que forma |x| (módulo de x) con el eje X, definidos por θ = 2πj/s, j = 0, 1, 2, . . . , s − 1. Estos ángulos se denominan las frecuencias estacionales. 10.6.1. Test HEGY de raı́z unitaria estacional Este test fue propuesto por Hylleberg, et. al. [6]. El objetivo de esta prueba es determinar si se necesitará diferenciar o no la serie y el tipo de diferenciación, para obtener estacionaridad. La prueba parte de un modelo AR (infinito) ϕ(B)Yt = Et y construye una ecuación de regresión del tipo visto en el test de Dickey-Fuller para probar las hipótesis de interés, y para ello se hace uso del siguiente resultado llamado Representaci ón de Lagrange: Cualquier polinomio ϕ(x), posiblemente infinito o racional, que toma un valor finito sobre los puntos c 1 , c2 , . . . , cr , distintos de cero y posiblemente complejos (ck ∈ C, k = 1, 2, . . . , r) puede expresarse en términos de polinomios elementales 10.6. RAÍCES UNITARIAS ESTACIONALES 361 más un residuo, de la siguiente manera r ϕ(x) = k=1 λk Δ(x)[1 − δk (x)] + Δ(x)φ∗ (x) δk (x) (10.8) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 r ϕ(ck ) x ; Δ(x) = δk (x); δk (x) = 1 − . λk = δj (ck ) ck k=1 7 donde φ∗ (x) es un polinomio que corresponde a un proceso estacionario, (10.9) j =k De la definición de λ k y de δk (x), se deduce que el polinomio ϕ(x) tendrá una raı́z unitaria en ck si y sólo sı́ el correspondiente λ k es igual a cero, es decir, ϕ(ck ) = 0 ⇐⇒ λk = 0 Por tanto, el polinomio ϕ(B) tendrá una raı́z c k si y sólo sı́ λk = 0. La prueba de raı́z unitaria estacional es para determinar si c k es una raı́z estacional. Los λk aparecen involucrados en los coeficientes de una regresión lineal múltiple que se define usando (10.8) en la ecuación ϕ(B)Y t = Et . ES Para entender cómo opera esta prueba considere el caso s = 4, es decir, estacionalidad trimestral. Las raı́ces a evaluar son c 1 = 1, c2 = −1, c3 = i y c4 = −i. En este caso se quiere determinar si en la representación autorregresiva del proceso de la serie observada, alguno o todos los c k son raı́ces del polinomio ϕ(B), donde la raı́z c1 = 1 implica que Yt ≈ Yt−1 y por tanto está asociada a un proceso no estacional (de frecuencia cero por año); la raı́z c 2 = −1 implica que Yt ≈ −Yt−1 ≈ Yt−2 , por tanto está asociada a un proceso de frecuencia estacional de dos veces por año; por su parte, las raı́ces ±i implican conjuntamente que Yt ≈ −Yt−2 ≈ Yt−4 y por tanto, están asociadas a procesos de frecuencia estacional de 1 vez por año. Note que si ∇4 Yt = (1 − B 4 )Yt es estacionario, debe cumplirse al menos una de las siguientes condiciones C1. (1 − B) = 0 y por lo tanto tendremos que Y t − Yt−1 será estacionario y existe una raı́z unitaria no estacional. C2. (1 + B) = 0, esto implica que Y t + Yt−1 será estacionario y existe una raı́z semestral (bianual). C3. 1 + B 2 = 0 y por lo tanto Yt + Yt−2 será estacionario, y existe una raı́z unitaria anual. Usando los valores c k identificados, tenemos que δ1 (B) = 1 − B; δ2 (B) = 1 + B; δ3 (B) = 1 + iB; δ4 (B) = 1 − iB (10.10) CAPÍTULO 10. MODELOS SARIMA 362 luego Δ(B) = 4 - δk (B) = 1−B 4 , y reemplazando en (10.8), con x = B, obtenemos k=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 ϕ(B) =λ1 B(1 + B + B 2 + B 3 ) + λ2 (−B)(1 − B + B 2 − B 3 ) + λ3 (−iB)(1 − B 2 )(1 − iB) + λ4 (iB)(1 − B 2 )(1 + iB) + (1 − B 4 )φ∗ (B) (10.11) y comoϕ(B) es real, λ3 y λ4 deben ser complejos conjugados. La prueba de HEGY emplea estadı́sticos que permiten comprobar las 3 condiciones C1, C2, C3 conjuntamente y de manera individual. Para ello, define las siguientes variables X1,t = (1 + B)(1 + B 2 )Yt = (1 + B + B 2 + B 3 )Yt X2,t = −(1 − B)(1 + B 2 )Yt = −(1 − B + B 2 − B 3 )Yt = X3,t = −(1 − B)(1 + B)Yt = −(1 − B 2 )Yt (10.12) también se definen los parámetros, π1 = −λ1 , π2 = −λ2 , 2λ3 = −π3 + π4 i, 2λ4 = −π3 − π4 i y utilizando estas nuevas variables y los parámetros π j , reescribimos la ecuación ϕ(B)Yt = Et como ϕ(B)Yt = −π1 X1,t−1 − π2 X2,t−1 − (π4 + π3 B)X3,t−1 + φ∗ (B)∇4 Yt = Et de donde φ∗ (B)∇4 Yt = π1 X1,t−1 + π2 X2,t−1 + π4 X3,t−1 + π3 X3,t−2 + Et (10.13) ES Note que X1,t tiene asociada a la raı́z c 1 = 1 y por tanto corresponde a un proceso no estacional (de frecuencia cero veces por año); X 2,t está asociada a la raı́z c2 = −1 y por tanto corresponde a un proceso estacional de frecuencia dos veces por año, mientras que X 3,t tiene asociadas las raı́ces c 3 = i y c4 = −i y su frecuencia estacional es de una vez por año. Por otro lado, se asume que el polinomio φ∗ (B) tiene un orden suficientemente grande para que se cumpla el supuesto de que Et es ruido blanco, por tanto, p − 1 ≥ 1. Luego, escribimos, p−1 ∇4 Yt = π1 X1,t−1 + π2 X2,t−1 + π4 X3,t−1 + π3 X3,t−2 + bi ∇4 Yt−i + Et (10.14) i=1 Esta última ecuación define un modelo de regresión con variable respuesta ∇4 Yt y variables explicatorias X 1,t−1 , X2,t−1 , X3,t−1 , X3,t−2 y rezagos ∇4 Yt−i . Basados en el ajuste de este modelo por mı́nimos cuadrados, se estiman los π j y se prueba luego las siguientes hipótesis para determinar si ϕ(B) tiene como raı́ces todos o algunos de los valores c k = 1, −1, i, −i: 10.6. RAÍCES UNITARIAS ESTACIONALES 363 Test 1. H1 : ϕ(1) = 0 ⇐⇒ π1 = 0 (raı́z unitaria no estacional) vs. H 1 : ϕ(1) > 0 ⇐⇒ π1 < 0; 7 Test 2. H0 : ϕ(−1) = 0 ⇐⇒ π2 = 0 (raı́z unitaria semestral) vs. H 1 : ϕ(−1) > 0 ⇐⇒ π2 < 0; TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Test 3. H0 : |ϕ(i)| = 0 ⇐⇒ π3 = π4 = 0 (raı́z unitaria anual) vs. H 1 : |ϕ(i)| > 0 ⇐⇒ π3 < 0 ó π4 = 0. En los test 1 y 2 el estadı́stico de la prueba se construye como un estadı́stico tipo t-student, aunque no es exactamente la distribución de tales estadı́sticos. En el test 3, el estadı́stico de la prueba se construye como un estadı́stico tipo F, pero aquı́ tampoco la distribución resulta ser exactamente una F. Por otra parte, de acuerdo a Guerrero [5], es importante que la selección del número de rezagos p en la ecuación de regresión en (10.14) haga explı́cita la longitud estacional, es decir, conviene comenzar con p − 1 = 4 (el caso de estacionalidad trimestral) y probar la significancia estadı́stica conjunta de los cuatro rezagos. Las conclusiones posibles en las pruebas HEGY son las siguientes: No habrán raı́ces unitarias estacionales cuando se rechace en los testes 2 y 3; No habrá ningún tipo de raı́z unitaria presente si se rechaza en los testes 1 a 3 y la serie se clasifica como una serie estacionaria estacional, es decir, puede modelarse como cierto ARMA de órdenes altos. En el test 1 no rechazar H 0 significa que existe una raı́z unitaria no estacional; No rechazar H0 en el test 2 significa que existe una raı́z unitaria estacional con frecuencia semianual; ES En el test 3 el no rechazo de H 0 implica que existe una raı́z unitaria estacional de frecuencia anual. Para el caso s = 12, la prueba HEGY se construye de una forma similar al caso anterior, pero esta vez es necesario considerar la factorización del operador ∇12 , en la cual se obtiene que exceptuando al factor (1 − B), todos los demás factores corresponden a raı́ces estacionales, que son −1√(6 ciclos por √ año), ±i (3 ciclos por año), −(1 ± i 3)/2 (4 ciclos por año), (1 ± i 3)/2 (2 ciclos √ por a ño), −( 3 ± i)/2 ( dos raı́ces en la frecuencias 5π/6 o 5 ciclos por año) y √ ( 3 ± i)/2 (un ciclo por año). Se definen 12 parámetros π j y nuevas variables Xi,t , relacionadas con las raı́ces anteriores y se construye un modelo de regresión como el dado en (10.14), pero en lugar de ∇ 4 Yt se tiene a ∇12 Yt . Los testes que se realizan son los siguientes Test 1. H0 : π1 = 0 (raı́z unitaria no estacional) vs. H 1 : π1 < 0; CAPÍTULO 10. MODELOS SARIMA 364 Test 2. H0 : π2 = 0 (raı́z unitaria bimensual) vs. H 1 : π2 < 0; Test 3. π3 = π4 = 0 (raı́z unitaria para perı́odos de 4 meses) vs. π 3 < 0 ó π4 = 0. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Test 5. π7 = π8 = 0 (raı́z unitaria semestral) vs. π 7 < 0 ó π8 = 0. 7 Test 4. π5 = π6 = 0 (raı́z unitaria trimestral) vs. π 5 < 0 ó π6 = 0. Test 6. π9 = π10 = 0 (raı́z unitaria en la frecuencia 5π/6) vs. π 9 < 0 ó π10 = 0. Test 7. π11 = π12 = 0 (raı́z unitaria anual) vs. π 11 < 0 ó π12 = 0. Test HEGY en R En la librerı́a uroot (disponible en https://r-forge.r-project.org/R/?group id=525; en Download hacer click en Windows multi-arch binary (.zip)) está implementada la prueba HEGY en la función HEGY.test(): HEGY.test(wts,itsd,regvar=0,selectlags=list(mode="signf",Pmax=NULL)) wts la serie de tiempo sobre la cual se hará la prueba. itsd para indicar la inclusión de componentes determinı́sticas en el modelo de la prueba: componentes regulares (tendencia lineal), componentes estacionales (variables indicadoras). Por ejemplo, itsd=c(0,0,c(0)) indica que ningún intercepto, ni tendencia ni variables indicadoras serán incluidas, en cambio itsd=c(1,0,c(1,2,3)) indica que el intercepto y las tres primeras indicadoras de la estacionalidad determinı́stica serán incluidas. ES regvar para especificar en una matriz otras variables regresoras a ser incluidas en el modelo. Si no hay regresoras se especifica regvar=0. selectlags para especificar mediante una lista el método de selección del número de rezagos p y el máximo de este parámetro a considerar en tal proceso de selección. Por ejemplo selectlags=list(mode="bic",Pmax=12) especifica que se use el criterio del BIC y un valor máximo para p de 12. Los métodos de selección disponibles son “aic", "bic", "signf". 10.6.2. Test Canova-Hansen (CH) Este test trata de determinar si los patrones estacionales presentes en una serie son determinı́sticos y por tanto estables en el tiempo o por el contrario, siguen un proceso estocástico y por tanto no son estables a lo largo del tiempo, especı́ficamente, un proceso con raı́z unitaria estacional. Ası́ la hipótesis nula 10.6. RAÍCES UNITARIAS ESTACIONALES 365 7 de este test establece la estabilidad estructural de la componente estacional. El procedimiento considera el siguiente modelo de regresión, k 2πjt 2πjt Yt = β0 + β1 t + + γj cos + Et αj sin (10.15) s s j=1 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 con k = s/2 con s par, donde el j−ésimo par (sin (2πjt/s) , cos (2πjt/s)) corresponde a la j−ésima frecuencia estacional armónica λ j = 2πj/s. Recuerde que para j = s/2, sin (2πjt/s) = sin(πt) = 0, y por tanto sólo se requieren s − 1 coeficientes en la parte estacional representada con las funciones trigonométricas. Se requiere además que Y t no tenga raı́ces unitarias en la frecuencia cero con el fin de distinguir la no estacionariedad en las frecuencias estacionales y en la frecuencia cero. Si existe raı́z unitaria en la frecuencia cero, entonces se considera a ∇Yt = Yt − Yt−1 como la variable dependiente. Considere los vectores α = (α1 , . . . , αs/2−1 ) y γ = (γ1 , . . . , γs/2−1) . Bajo la hipótesis alterna, un patrón estacional cambiante puede conducir a la variación en los vectores de coeficientes α y γ a lo largo del tiempo según una caminata aleatoria, es decir, αt = αt−1 + ut y γ t = γ t−1 + vt , donde ut y vt son vectores aleatorios iid de media cero y también son independientes de E t . Para probar la estabilidad de los parámetros estacionales se prueba que las autocovarianzas de u t y vt , respectivamente es cero mientras que bajo la hipótesis alterna, en cada caso, es mayor que cero, o equivalentemente H0 : αt = α, γ t = γ versus H1 : αt = αt−1 + ut , γ t = γ t−1 + vt (10.16) El estadı́stico de la prueba denominado L sugerido por Canova y Hansen no tiene una distribución estándar (como la t-Student, la normal estándar, la F , por ejemplo) pero tiene p grados de libertad, donde p se deriva del número posible de raı́ces unitarias. Por ejemplo, si la estacionalidad determinı́stica es probada, sólo se permiten p − 1 raı́ces unitarias estacionales bajo la hipótesis alternativa. El modelo en (10.15) también admite variables explicatorias que podrı́an incluir a Y t−1 . ES Test CH en R El test CH está disponible en la librerı́a uroot, en la función CH.test(): CH.test (wts,frec=NULL,f0=1,DetTr=FALSE,ltrunc=NULL) donde wts un objeto serie de tiempo el cual será chequeado con este test. frec un vector para especificar los ciclos estacionales a analizar. Por defecto se incluyen todos. Para especificar se usa un vector de ceros y 1’s donde 0 indica que tal frecuencia no será considerada y 1 lo contrario. La posición de cada frecuencia en el vector es como sigue: c(π/2, π) para series trimestrales y c(π/6, π/3, π/2, 2π/3, 5π/6, π) para series mensuales. CAPÍTULO 10. MODELOS SARIMA 366 f0 con valor igual a 0 ó 1, para indicar si se incluye (1) o no (0) el rezago de orden 1 de la variable dependiente en la regresión auxiliar. 7 DetTr Toma valor de TRUE o FALSE para indicar si se incluye o no una tendencia lineal determinı́stica en la regresión auxiliar. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ltrunc parámetro de truncamiento del rezago para calcular la matriz de covarianza de los residuales. Por defecto toma el valor de parte entera de (n/100)0.25 × s, donde n es la longitud de la serie y s la periodicidad de los datos. Se recomienda que para aplicar este test se elimine la tendencia de la serie en caso de existir, lo cual puede hacerse eliminando la componente T t estimada mediante el filtro stl() visto en los primeros capı́tulos y aplicamos el test sobre Wt = Yt − T̂t , con los argumentos f0=0 y DetTr=FALSE. 10.7. Ejemplo 500 6.5 1000 Yt ES log(Yt) 7.0 1500 7.5 2000 A continuación vamos a modelar la serie de producción trimestral de cemento portland, introducida en capı́tulos previos. Desde que la serie presenta varianza no constante, trabajaremos el proceso de modelación sobre el logaritmo. Se tiene un total de N = 155 observaciones pero se ajusta con n = 151 para realizar validación cruzada con las últimas observaciones. En el Capı́tulo 8 se encontró como mejor modelo uno de tendencia cuadrática, estacionalidad trimestral con variables indicadoras y errores con estructura AR(6). Este modelo asume que la estacionalidad es determinı́stica. Ahora, someteremos entonces esta serie a la modelación con modelos ARIMA(p,d,q) × (P,D,Q) 4 . 1960 1970 1980 Time Figura 10.8: 1990 1960 1970 1980 1990 Time Serie de producción trimestral de cemento portland y su logaritmo A continuación examinamos las gráficas de las diferencias regular y estacional ilustradas en la Figura 10.9. Como puede observarse existen todavı́a algunos cambios en la varianza y particularmente valores bastante distantes 10.7. EJEMPLO 367 −0.3 −0.1 0.0 ∇4log(Yt) 0.0 −0.1 −0.2 ∇log(Yt) 0.1 0.1 0.2 0.2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 del resto al final de esta series. Sin embargo, las series ∇∇ 4 log(Yt ) y ∇4 ∇ log(Yt ) tienen una varianza más estable y además estas dos series son las mismas, lo cual es de esperarse. Note también que aplicar sólo la diferencia ∇ no elimina el patrón estacional, mientras que aplicar sólo una diferencia estacional, deja una fuerte autocorrelación entre valores consecutivos, lo que se refleja en el patrón cı́clico. 1960 1970 1980 1990 1960 1970 0.15 0.05 −0.15 −0.05 ∇4∇log(Yt) 0.05 −0.05 −0.15 ∇∇4log(Yt) 1990 Time 0.15 Time 1980 1960 1970 1980 1960 1970 1980 1990 Time ES Time 1990 Figura 10.9: Diferencias ∇, ∇4 , ∇∇4 y ∇4 ∇ para el logaritmo de la producción trimestral de cemento portland. En la Figura 10.10 se ilustran las ACF’s de las serie del logaritmo, su primera diferencia regular, su diferencia estacional y de la diferencia ∇∇ 4 . La ACF del logaritmo muestra un patrón en el cual la autocorrelación tanto en los rezagos no estacionales y estacionales decae lentamente. En la ACF de la primera diferencia se ve más claramente que existe una fuerte autocorrelación entre las observaciones separadas k = 4j, lo que evidencia la existencia de estacionalidad. En la ACF de la serie con la diferencia estacional vemos que éste filtro no elimina la autocorrelación intra perı́odos mientras que en CAPÍTULO 10. MODELOS SARIMA 368 la ACF de la serie filtrada estacional y regularmente se observa un patrón estacionario. ACF de ∇log(Yt) −0.2 0.2 ACF 0.0 −0.6 −0.5 ACF TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 0.5 0.6 7 ACF de log(Yt) 10 15 20 25 30 35 5 10 15 20 25 30 Lag Lag ACF de ∇4log(Yt) ACF de ∇∇4log(Yt) 35 −0.1 −0.3 ACF 0.1 0.0 0.2 0.4 0.6 0 5 10 15 20 Lag Figura 10.10: 0 0.2 5 −0.4 ACF 0 25 30 35 0 5 10 15 20 25 30 35 Lag ACF’s para el logaritmo de la producción de cemento portland y de sus diferencias ∇, ∇4 , ∇∇4 . ES A continuación tratamos de identificar qué posible proceso ARMA estacionario estacional sigue la serie ∇∇ 4 log(Yt ). Para ello, examinamos su ACF y PACF y adicionalmente usamos la función R armasubsets() disponible en la librerı́a TSA, esta función selecciona modelos ARMA con base en el criterio BIC y resulta útil porque permite identificar rezagos autorregresivos y de medias móviles especı́ficos que son significativos en los modelos. Los resultados se presentan gráficamente en la Figura 10.11. Evaluemos inicialmente lo que sucede en los rezagos estacionales. Según la PACF aparentemente existe un patrón de cola decreciente en rezagos estacionales y en la ACF puede ser un patrón de corte con cortes significativos en k = 4, 8; esto nos estarı́a indicando que para la parte estacional el modelo podrı́a ser un MA de orden 2. Para la parte regular nos concentramos en el comportamiento de los primeros rezagos, pero al ser tan pocos para el caso s = 4, no es fácil distinguir patrones. BIC (Intercept) −0.4 Partial ACF 0 Lag PACF de ∇∇4log(Yt) 0 Lag −39 −38 −0.3 ACF Figura 10.11: 25 30 35 25 30 35 error−lag12 error−lag11 error−lag10 error−lag9 error−lag8 error−lag7 error−lag6 20 error−lag5 20 error−lag4 error−lag3 15 error−lag2 15 error−lag1 test−lag12 test−lag11 10 test−lag10 10 test−lag9 test−lag8 5 test−lag7 0.0 0.1 0.2 5 test−lag6 test−lag5 test−lag4 test−lag3 test−lag2 test−lag1 −0.2 7 −0.1 0.0 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ES 0.1 0.2 10.7. EJEMPLO 369 ACF de ∇∇4log(Yt) −37 −37 −36 −34 −33 −20 ACF, PACF y resultado de la función armasubsets() para ∇∇4 sobre el logaritmo de la producción de cemento portland. 370 CAPÍTULO 10. MODELOS SARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Sin embargo, observe que si fuese un AR en la parte regular la PACF nos estarı́a mostrando un orden p = 2, y si fuese un MA, la ACF también estarı́a mostrando que q = 2. Por otro lado no podemos descartar una ARMA ası́ que podrı́amos iniciar con un ARMA(2,2) en la parte regular. Si examinamos la tabla arrojada por la función armasubsets(), vemos que en todos los modelos, menos el último, aparece significativo el rezago autorregresivo de orden 2; el rezago 1 en la parte de medias móviles también aparece en los mejores modelos exceptuando el segundo, también resalta el rezago en medias móviles de orden 4. Considerando sólo los resultados para los dos primeros modelos, parece que en la parte regular hay polinomio autorregresivo de orden 2 y puede que haya un polinomio de media móvil de orden 1; en la parte estacional, como no aparecen en estos dos modelos rezagos autorregesivos en múltiplos de cuatro o en 4j + k, k = 1, 2, 3, j = 1, 2, descartamos por este medio un polinomio autorregresivo estacional. En cuanto al polinomio de medias móviles estacional puede ser de orden 1 ó 2 ya que el rezago 4 de medias móviles parece significativo en la mayorı́a de los modelos y el rezago 8 sólo en los dos primeros y el penúltimo modelo. Resumiendo, de los análisis anteriores, se pueden postular los siguientes modelos para la serie log(Y t ), Modelo 1: log(Yt ) ∼ ARIMA(2,1,0) × (0,1,2)4 . Modelo 2: log(Yt ) ∼ ARIMA(0,1,2) × (0,1,2)4 . Modelo 3: log(Yt ) ∼ ARIMA(2,1,2) × (0,1,2)4 . ES Modelo 4: log(Yt ) ∼ ARIMA(2,1,1) × (0,1,2)4 . Adicionalmente, se usó la función auto.arima() sobre ∇∇ 4 log(Yt ), con el criterio del AIC. No se aplica esta función directamente sobre la serie sin diferenciar ya que internamente realiza el test CH de raı́z unitaria estacional y la presencia de raı́z unitaria regular puede hacer ineficiente el procedimiento. El modelo arrojado es ∇∇ 4 log(Yt ) ∼ ARMA(0,3) × (2,1)4 , luego tenemos que, Modelo 5: log(Yt ) ∼ ARIMA(0,1,3) × (2,1,1)4 . A seguir, se presentan las tablas de los ajustes de estos cinco modelos, sus AIC’s (en escala log), sus medidas de precisión de pronósticos para los últimos cuatro valores de la serie (en escala real), los resultados de los testes LjungBox sobre los residuales de ajuste. ¿Qué se concluye de estos resultados? 10.7. EJEMPLO 371 P (|Z| > |Z0 |) 0.1803 0.0034 0.0000 0.0259 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Parámetro θ1 θ2 Θ1 Θ2 P (|Z| > |Z0 |) 0.0455 0.0039 0.0000 0.1616 7 Parámetro φ1 φ2 Θ1 Θ2 Parámetros estimados Modelo 1 Estimación s.e Z0 -0.1615 0.0807 -2.0001 0.2382 0.0824 2.8892 -0.7369 0.0972 -7.5773 -0.1363 0.0974 -1.3997 Modelo 2 Estimación s.e Z0 -0.1137 0.0849 -1.3399 0.2476 0.0847 2.9249 -0.6581 0.0959 -6.8594 -0.2036 0.0914 -2.2285 Modelo 3 Estimación s.e Z0 -0.6921 0.4204 -1.6464 -0.3340 0.3177 -1.0511 0.5472 0.3972 1.3778 0.5135 0.2416 2.1252 -0.6545 0.1349 -4.8533 -0.2133 0.1260 -1.6929 Modelo 4 Estimación s.e Z0 -0.2935 0.2698 -1.0876 0.2132 0.1018 2.0953 0.1388 0.2678 0.5181 -0.7513 0.1052 -7.1450 -0.1241 0.1037 -1.1972 Modelo 5 Estimación s.e Z0 -0.1890 0.0859 -2.2010 0.2562 0.0878 2.9163 -0.2239 0.1016 -2.2042 0.1298 0.0968 1.3413 -0.2573 0.0914 -2.8156 -0.8206 0.0582 -14.1002 Parámetro φ1 φ2 θ1 θ2 Θ1 Θ2 Parámetro φ1 φ2 θ1 Θ1 Θ2 Parámetro θ1 θ2 θ3 Φ1 Φ2 Θ1 ES Modelo 1 -499.9882 P (|Z| > |Z0 |) 0.0997 0.2932 0.1683 0.0336 0.0000 0.0905 P (|Z| > |Z0 |) 0.2768 0.0361 0.6044 0.0000 0.2312 P (|Z| > |Z0 |) 0.0277 0.0035 0.0275 0.1798 0.0049 0.0000 AIC’s Modelos 1 a 5 (escala log) Modelo 2 Modelo 3 Modelo 4 -498.3687 -498.3162 -498.2444 Modelo 5 -503.7367 Medidas de precisi ón de pronósticos (escala original) Modelo ME RMSE MAE MPE MAPE 1 149.4414 177.5695 149.4414 8.1460 8.1460 2 146.2509 175.5318 146.2509 7.9567 7.9567 3 157.4289 184.6768 157.4289 8.6080 8.6080 4 151.4899 179.1132 151.4899 8.2657 8.2657 5 182.5585 209.3829 182.5585 10.0441 10.0441 Test de Normalidad Shapiro Wilks Modelos 1 2 3 4 Estadı́stico 0.9774 0.9794 0.9731 0.9770 Valor P 0.0137 0.0228 0.0046 0.0125 5 0.9846 0.0920 CAPÍTULO 10. MODELOS SARIMA QLB 4.7462 13.3704 20.2747 24.9259 28.5152 35.9964 Test Ljung-Box 1 P (χ2m > QLB ) QLB 0.5767 5.9699 0.3427 12.4091 0.3176 18.5562 0.4098 22.4213 0.5432 25.1747 0.4688 31.0833 3 P (χ2m > QLB ) QLB 0.7971 4.7633 0.5634 13.7165 0.4459 20.7533 0.5126 25.5099 0.5927 29.3338 0.4964 37.0788 5 P (χ2m > QLB ) 0.7744 0.7029 0.7094 0.8108 0.9087 0.8364 Modelo g.l 6.0000 12.0000 18.0000 24.0000 30.0000 36.0000 Modelo g.l 6.0000 12.0000 18.0000 24.0000 30.0000 36.0000 2 P (χ2m > QLB ) 0.4266 0.4134 0.4196 0.5541 0.7165 0.7014 4 P (χ2m > QLB ) 0.5745 0.3192 0.2920 0.3785 0.5001 0.4190 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 m 6 12 18 24 30 36 Modelo g.l 6.0000 12.0000 18.0000 24.0000 30.0000 36.0000 Modelo g.l 6.0000 12.0000 18.0000 24.0000 30.0000 36.0000 Modelo g.l 6.0000 12.0000 18.0000 24.0000 30.0000 36.0000 7 372 m 6 12 18 24 30 36 QLB 3.0932 10.6008 18.1481 23.1214 27.5799 35.4124 m 6 12 18 24 30 36 QLB 3.2693 9.0008 14.2987 17.8387 20.2943 27.7392 A continuación se presentan resultados gráficos para valoración de ajustes, pronósticos, y validación de supuestos. ¿Qué se concluye de estas gráficas? Realización pronosticado zona naranja 500 ES 1000 Yt 1500 2000 Producción trimestral de Cemento Pronósticos modelo 1 1960 1970 1980 1990 Time Figura 10.12: Ajuste y pronósticos de la producción de cemento portland con Modelo SARIMA 1. 10.7. EJEMPLO TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 373 Producción trimestral de Cemento Pronósticos modelo 3 2000 2000 Producción trimestral de Cemento Pronósticos modelo 2 1000 Yt 1500 Realización pronosticado zona naranja 500 500 1000 Yt 1500 Realización pronosticado zona naranja 1970 1980 1990 1960 1970 1980 Time Time Producción trimestral de Cemento Pronósticos modelo 4 Producción trimestral de Cemento Pronósticos modelo 5 2000 2000 1960 1000 Yt 1500 Realización pronosticado zona naranja Figura 10.13: 500 500 ES 1000 Yt 1500 Realización pronosticado zona naranja 1990 1960 1970 1980 Time 1990 1960 1970 1980 1990 Time Ajuste y pronósticos de la producción de cemento portland con Modelo SARIMA 2 a 5. CAPÍTULO 10. MODELOS SARIMA 1700 Serie Original Pronóstico Modelo 1 Pronóstico Modelo 2 Pronóstico Modelo 3 Pronóstico Modelo 4 Pronóstico Modelo 5 1400 1500 1600 Producción 1800 1900 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 374 1993.Q4 1994.Q1 1994.Q2 1994.Q3 ES Time Figura 10.14: Comparación de los pronósticos en escala original, de los modelos SARIMA 1 a 5 ajustados al logaritmo de la producción de cemento portland con Modelo. 10.7. EJEMPLO 1960 1970 1980 0.10 0.00 −0.10 residuals(modsarima1) 0.10 0.00 −0.10 residuals(modsarima1) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 375 1990 6.2 6.4 1970 1980 6.4 7.0 7.2 7.4 7.6 7.2 7.4 7.6 7.2 7.4 7.6 0.10 0.00 1990 6.2 6.4 6.6 6.8 7.0 −0.10 1990 0.10 0.00 −0.10 residuals(modsarima4) 0.10 0.00 residuals(modsarima4) ES Figura 10.15: 6.8 fitted(modsarima3) 1980 Time 6.6 −0.10 residuals(modsarima3) 0.10 residuals(modsarima3) 0.00 1980 1970 7.6 0.10 6.2 Time 1960 7.4 fitted(modsarima2) −0.10 1970 7.2 0.00 1990 Time 1960 7.0 −0.10 residuals(modsarima2) 0.10 0.00 1960 6.8 fitted(modsarima1) −0.10 residuals(modsarima2) Time 6.6 6.2 6.4 6.6 6.8 7.0 fitted(modsarima4) Gráficos de residuales de ajuste de los modelos SARIMA 1 a 4 ajustados al logaritmo de la producción de cemento portland con Modelo. PACF residuos Modelo 1 0.15 10 15 20 25 30 35 0 25 35 30 35 30 35 30 35 5 10 15 20 25 30 0.00 Partial ACF 0.15 30 −0.15 0.0 −0.2 35 0 5 10 15 20 25 Lag Lag ACF residuos Modelo 3 PACF residuos Modelo 3 0.15 15 20 25 30 0.00 Partial ACF 10 −0.15 0.0 5 35 0 5 10 15 20 25 Lag Lag ACF residuos Modelo 4 PACF residuos Modelo 4 0.15 5 10 15 20 Lag 25 30 35 0.00 Partial ACF −0.2 0 −0.15 ACF 20 PACF residuos Modelo 2 −0.2 ACF 15 ACF residuos Modelo 2 0.0 ACF 10 Lag 0.2 0 ES 5 Lag 0.2 0 Figura 10.16: 0.00 Partial ACF 5 0.2 0 −0.15 0.0 −0.2 ACF 0.2 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ACF residuos Modelo 1 7 CAPÍTULO 10. MODELOS SARIMA 376 0 5 10 15 20 25 Lag ACF’s y PACF’s para residuales de ajuste de los modelos SARIMA 1 a 4 ajustados al logaritmo de la producción de cemento portland con Modelo. 1970 1980 1990 0.05 −0.10 6.2 6.4 6.6 6.8 7.0 7.2 7 1960 residuals(modsarima5) −0.10 0.05 377 7.4 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 residuals(modsarima5) 10.7. EJEMPLO ACF residuos Modelo 5 PACF residuos Modelo 5 5 10 15 20 25 30 Lag Figura 10.17: 35 −0.15 0.1 −0.1 ACF 0 0.05 fitted(modsarima5) Partial ACF Time 0 5 10 15 20 25 30 35 Lag Gráficos de residuales de ajuste y su ACF y PACF, modelo SARIMA 5 para el logaritmo de la producción de cemento portland con Modelo. Finalmente, se presentan los resultados de las pruebas HEGY y CH para raı́ces unitarias estacionales. Salida R 10.1. ---- ---HEGY test ---- ---Null hypothesis: Unit root. Alternative hypothesis: Stationarity. ES ---HEGY statistics: Stat. p-value tpi_1 2.017 0.1 tpi_2 -0.773 0.1 Fpi_3:4 0.678 0.1 Fpi_2:4 0.650 NA Fpi_1:4 1.491 NA El anterior test no rechaza ninguna de las hipótesis nula, es decir, que para la serie de log(Yt ), hay raı́z unitaria no estacional o en la frecuencia 0 (ver resultados para tpi 1), hay raı́z unitaria estacional semestral o en la frecuencia π (resultados en tpi 2) y hay raı́z unitaria estacional en las frecuencias π/2 y 3π/2 (resultados en tpi 3:4). En resumen la serie log(Y t ) tiene tanto raı́z unitaria en la tendencia como estacional, luego es apropiado ajustar un modelo SARIMA a esta serie. 378 CAPÍTULO 10. MODELOS SARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Vea a continuación los resultados del test CH aplicado sobre la serie W t = log(Yt ) − T̂t , donde T̂t es la componente de tendencia de la serie log(Y t ) filtrada con stl(). De estos resultados podemos concluir que para un valor del estadı́stico de la prueba L = 1.734 y un nivel de significancia de 0.05 es rechazada la hipótesis nula de componente estacional determinı́stica en favor de una componente estacional con raı́z unitaria que corresponde a la inestabilidad de tal componente. Salida R 10.2. ------ - ------ ---Canova & Hansen test ------ - ------ ---Null hypothesis: Stationarity. Alternative hypothesis: Unit root. Frequency of the tested cycles: pi/2 , pi , L-statistic: 1.734 Lag truncation parameter: 4 Critical values: 0.10 0.05 0.025 0.01 0.846 1.01 1.16 1.35 10.7.1. Programaci ón R usada en Ejemplo Código R 10.1. library(TSA) library(forecast) library(uroot) ES BP.LB.test=function(serie,maxlag,type="Box"){ aux=floor(maxlag/6); X.squared=c(rep(NA,aux)) df=c(rep(NA,aux)) p.value=c(rep(NA,aux)) for(i in 1:aux){ test=Box.test(serie,lag=(6*i),type=type) X.squared[i]=test[[1]] df[i]=test[[2]] p.value[i]=test[[3]] } lag=6*c(1:aux) teste=as.data.frame(cbind(X.squared,df,p.value)) rownames(teste)=lag teste } ################################################################################ #LECTURA DE LOS DATOS, DEFINICIÓN DE VARIABLES Y GRAFICACIÓN DE LA SERIE ################################################################################ yt=scan() 465 532 561 570 529 604 603 582 554 620 646 637 573 673 690 681 621 698 753 728 688 737 782 692 637 757 783 757 674 734 835 838 797 904 949 975 902 974 969 967 849 961 966 922 836 998 1025 971 892 973 1047 1017 948 1032 1190 1136 1049 1134 1229 1188 1058 1209 1199 1253 1070 1282 1303 1281 1148 1305 1342 1452 10.7. EJEMPLO 1316 1290 1202 1573 1279 1554 1416 1644 1538 1353 1101 1302 1533 1313 1347 1625 1658 1569 1121 1284 1377 1651 1166 1516 1770 1668 1450 1297 1321 1359 1347 1373 1546 1791 1343 1569 1318 1317 1232 1575 1456 1564 1622 1441 1648 1281 1122 1386 1475 1496 1333 1719 1444 1777 1109 1261 1440 1357 1251 1458 1972 1497 1468 7 1352 1341 1298 1282 1158 1631 1613 1575 1501 1962 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1184 1299 1312 1439 1086 1456 1499 1893 1267 1732 379 yt=ts(yt,frequency=4,start=c(1956,1)) lnyt=log(yt) win.graph(width=12,height=6) nf=layout(cbind(c(1,1),c(2,2))) plot(yt,ylab=expression(Y[t])) plot(lnyt,ylab=expression(log(Y[t]))) #Valores de la serie log para los ajustes m=4 n=length(yt)-m yt2=ts(yt[1:n],frequency=4,start=c(1956,1)) lnyt2=log(yt2) dif1dif4lnyt2=diff(diff(lnyt2,4),1) #serie log con diferencia y diferencia estacional ################################################################################ #GRÁFICAS PARA LA DISTINTAS DIFERENCIAS PRESENTADAS PARA EL LOG DE LA SERIE ################################################################################ nf=layout(rbind(c(1,2),c(3,4))) #Gráfica de la primera diferencia plot(diff(lnyt2),ylab=expression(paste(nabla,sep="",log(Y[t])))) abline(h=mean(diff(lnyt2))) #Gráfica de la primera diferencia estacional trimestral plot(diff(lnyt2,4),ylab=expression(paste(nabla[4],sep="",log(Y[t])))) abline(h=mean(diff(lnyt2,4))) #Gráficas de las diferencias regular y estacional combinadas plot(diff(diff(lnyt2,4),1),ylab=expression(paste(nabla,sep="",nabla[4],sep="",log(Y[t])))) abline(h=mean(diff(diff(lnyt2,4),1))) plot(diff(diff(lnyt2,1),4),ylab=expression(paste(nabla[4],sep="",nabla,sep="",log(Y[t])))) abline(h=mean(diff(diff(lnyt2,1),4))) ES #ACF’s y PACF’s para la diferencias nf=layout(rbind(c(1,2),c(3,4))) acf(as.numeric(lnyt2),ci.type="ma",lag.max=36,main=expression(paste("ACF de",sep=" ",log(Y[t])))) acf(as.numeric(diff(lnyt2)),ci.type="ma",lag.max=36, main=expression(paste("ACF de",sep=" ",nabla,sep="",log(Y[t])))) acf(as.numeric(diff(lnyt2,4)),ci.type="ma",lag.max=36, main=expression(paste("ACF de",sep=" ",nabla[4],sep="",log(Y[t])))) acf(as.numeric(dif1dif4lnyt2),ci.type="ma",lag.max=36, main=expression(paste("ACF de",sep=" ",nabla,sep="",nabla[4],sep="",log(Y[t])))) #Gráficas de ACF y PACF de la diferencia combinada más resultados de #la función armasubsets win.graph(width=12,height=16) nf=layout(rbind(c(1,1),c(2,2),c(3,3))) acf(as.numeric(dif1dif4lnyt2),ci.type="ma",lag.max=36, main=expression(paste("ACF de",sep=" ",nabla,sep="",nabla[4],sep="",log(Y[t])))) 380 CAPÍTULO 10. MODELOS SARIMA pacf(as.numeric(dif1dif4lnyt2),lag.max=36, main=expression(paste("PACF de",sep=" ",nabla,sep="",nabla[4],sep="",log(Y[t])))) res=armasubsets(y=dif1dif4lnyt2,nar=12,nma=12,y.name=’test’,ar.method=’ml’) plot(res) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 ################################################################################ #AJUSTE DE MODELOS IDENTIFICADOS ################################################################################ #Modelo1 modsarima1=Arima(lnyt2,order=c(2,1,0),seasonal=list(order=c(0,1,2))) modsarima1 #Cálculo estadı́stico Z0 y valores P est=cbind(Estimación=modsarima1$coef,s.e=sqrt(diag(modsarima1$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) ################################################################################ #Modelo 2 modsarima2=Arima(lnyt2,order=c(0,1,2),seasonal=list(order=c(0,1,2))) modsarima2 #Cálculo estadı́stico Z0 y valores P est=cbind(Estimación=modsarima2$coef,s.e=sqrt(diag(modsarima2$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) ################################################################################ #Modelo 3 modsarima3=Arima(lnyt2,order=c(2,1,2),seasonal=list(order=c(0,1,2))) modsarima3 #Cálculo estadı́stico Z0 y valores P est=cbind(Estimación=modsarima3$coef,s.e=sqrt(diag(modsarima3$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) ################################################################################ #Modelo 4 modsarima4=Arima(lnyt2,order=c(2,1,1),seasonal=list(order=c(0,1,2))) modsarima4 ES #Cálculo estadı́stico Z0 y valores P est=cbind(Estimación=modsarima4$coef,s.e=sqrt(diag(modsarima4$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) ################################################################################ #Modelo 5 auto.arima(dif1dif4lnyt2) #arroja un ARMA(0,3)*(2,1)_4 estacionario #Se ajusta ARIMA(0,1,3)*(2,1,1)_4 a la serie del log modsarima5=Arima(lnyt2,order=c(0,1,3),seasonal=list(order=c(2,1,1))) modsarima5 #Cálculo estadı́stico Z0 y valores P est=cbind(Estimación=modsarima5$coef,s.e=sqrt(diag(modsarima5$var.coef))) z0=est[,1]/est[,2] vp=pnorm(abs(z0),lower.tail=FALSE)+pnorm(-abs(z0)) ################################################################################ #PRONÓSTICOS EN ESCALA ORIGINAL, SUS GRÁFICAS Y PRECISIÓN ################################################################################ #Modelo 1 10.7. EJEMPLO 381 predmodsarima1=exp(as.data.frame(forecast(modsarima1,h=m,level=95))) #Precisión pronósticos accuracy(predmodsarima1[,1],yt[(n+1):length(yt)]) 7 plot(yt,ylab=expression(Y[t]),,main="Producción trimestral de Cemento\nPronósticos modelo 1") lines(exp(fitted(modsarima1)),col=2) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Para graficar bandas de predicción sombreada xx1=c(time(yt)[(n+1):length(yt)],rev(time(yt)[(n+1):length(yt)])) yy1=c(predmodsarima1[,2],rev(predmodsarima1[,3])) polygon(xx1, yy1, col="orange", border = "orange") lines(time(yt)[(n+1):length(yt)],predmodsarima1[,1],lty=1,col=2,lwd=1) lines(time(yt)[(n+1):length(yt)],log(yt)[(n+1):length(yt)],lty=1,col=2,lwd=2) legend("topleft",legend=c("Realización","pronosticado zona naranja"),lwd=c(2,2),col=c(2,1)) ################################################################################ #Modelo 2 predmodsarima2=exp(as.data.frame(forecast(modsarima2,h=m,level=95))) #Precisión pronósticos accuracy(predmodsarima2[,1],yt[(n+1):length(yt)]) plot(yt,ylab=expression(Y[t]),,main="Producción trimestral de Cemento\nPronósticos modelo 2") lines(exp(fitted(modsarima2)),col=2) #Para graficar bandas de predicción sombreada xx1=c(time(yt)[(n+1):length(yt)],rev(time(yt)[(n+1):length(yt)])) yy1=c(predmodsarima2[,2],rev(predmodsarima2[,3])) polygon(xx1, yy1, col="orange", border = "orange") lines(time(yt)[(n+1):length(yt)],predmodsarima2[,1],lty=1,col=2,lwd=1) lines(time(yt)[(n+1):length(yt)],log(yt)[(n+1):length(yt)],lty=1,col=2,lwd=2) legend("topleft",legend=c("Realización","pronosticado zona naranja"),lwd=c(2,2),col=c(2,1)) ################################################################################ #Modelo 3 predmodsarima3=exp(as.data.frame(forecast(modsarima3,h=m,level=95))) #Precisión pronósticos accuracy(predmodsarima3[,1],yt[(n+1):length(yt)]) plot(yt,ylab=expression(Y[t]),,main="Producción trimestral de Cemento\nPronósticos modelo 3") lines(exp(fitted(modsarima3)),col=2) ES #Para graficar bandas de predicción sombreada xx1=c(time(yt)[(n+1):length(yt)],rev(time(yt)[(n+1):length(yt)])) yy1=c(predmodsarima3[,2],rev(predmodsarima3[,3])) polygon(xx1, yy1, col="orange", border = "orange") lines(time(yt)[(n+1):length(yt)],predmodsarima3[,1],lty=1,col=2,lwd=1) lines(time(yt)[(n+1):length(yt)],log(yt)[(n+1):length(yt)],lty=1,col=2,lwd=2) legend("topleft",legend=c("Realización","pronosticado zona naranja"),lwd=c(2,2),col=c(2,1)) ################################################################################ #Modelo 4 predmodsarima4=exp(as.data.frame(forecast(modsarima4,h=m,level=95))) #Precisión pronósticos accuracy(predmodsarima4[,1],yt[(n+1):length(yt)]) plot(yt,ylab=expression(Y[t]),,main="Producción trimestral de Cemento\nPronósticos modelo 4") lines(exp(fitted(modsarima4)),col=2) #Para graficar bandas de predicción sombreada xx1=c(time(yt)[(n+1):length(yt)],rev(time(yt)[(n+1):length(yt)])) yy1=c(predmodsarima4[,2],rev(predmodsarima4[,3])) 382 CAPÍTULO 10. MODELOS SARIMA polygon(xx1, yy1, col="orange", border = "orange") lines(time(yt)[(n+1):length(yt)],predmodsarima4[,1],lty=1,col=2,lwd=1) lines(time(yt)[(n+1):length(yt)],log(yt)[(n+1):length(yt)],lty=1,col=2,lwd=2) legend("topleft",legend=c("Realización","pronosticado zona naranja"),lwd=c(2,2),col=c(2,1)) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 #Precisión pronósticos accuracy(predmodsarima5[,1],yt[(n+1):length(yt)]) 7 ################################################################################ #Modelo 5 predmodsarima5=exp(as.data.frame(forecast(modsarima5,h=m,level=95))) plot(yt,ylab=expression(Y[t]),,main="Producción trimestral de Cemento\nPronósticos modelo 5") lines(exp(fitted(modsarima5)),col=2) #Para graficar bandas de predicción sombreada xx1=c(time(yt)[(n+1):length(yt)],rev(time(yt)[(n+1):length(yt)])) yy1=c(predmodsarima5[,2],rev(predmodsarima5[,3])) polygon(xx1, yy1, col="orange", border = "orange") lines(time(yt)[(n+1):length(yt)],predmodsarima5[,1],lty=1,col=2,lwd=1) lines(time(yt)[(n+1):length(yt)],log(yt)[(n+1):length(yt)],lty=1,col=2,lwd=2) legend("topleft",legend=c("Realización","pronosticado zona naranja"),lwd=c(2,2),col=c(2,1)) ################################################################################ #COMPARANDO GRÁFICAMENTE TODOS LOS PRONÓSTICOS EN LA ESCALA ORIGINAL ################################################################################ win.graph(height=6,width=6) matplot(152:155,cbind(yt[(n+1):length(yt)],predmodsarima1[,1],predmodsarima2[,1], predmodsarima3[,1],predmodsarima4[,1],predmodsarima5[,1]),xlab="Time",ylab="Producción", col=1,type="b",pch=c(19,1:5),xaxt=’n’,lwd=2) axis(1,at=152:155,labels=c("1993.Q4","1994.Q1","1994.Q2","1994.Q3")) legend("topleft",legend=c("Serie Original","Pronóstico Modelo 1", "Pronóstico Modelo 2","Pronóstico Modelo 3","Pronóstico Modelo 4","Pronóstico Modelo 5"), pch=c(19,1:5),bty="n") ############################################################################### #COMPARANDO LOS AJUSTES SEGÚN AIC, EN ESCALA LOG ############################################################################### AICs=cbind(AICmod1=AIC(modsarima1),AICmod2=AIC(modsarima2),AICmod3=AIC(modsarima3), AICmod4=AIC(modsarima4),AICmod5=AIC(modsarima5)) AICs ES ################################################################################ #GRÁFICAS PARA ANÁLISIS DE RESIDUALES ################################################################################ #Gráficos de residuales Modelos 1 a 4 win.graph(width=14,height=16) nf=layout(rbind(c(1,2),c(3,4),c(5,6),c(7,8))) plot(residuals(modsarima1)) abline(h=0) plot(fitted(modsarima1),residuals(modsarima1)) abline(h=0) plot(residuals(modsarima2)) abline(h=0) plot(fitted(modsarima2),residuals(modsarima2)) abline(h=0) plot(residuals(modsarima3)) abline(h=0) plot(fitted(modsarima3),residuals(modsarima3)) abline(h=0) plot(residuals(modsarima4)) abline(h=0) plot(fitted(modsarima4),residuals(modsarima4)) 10.7. EJEMPLO 383 abline(h=0) Modelo 1") Modelo 2") 7 #Gráficos de ACF y PACF Modelos 1 a 4 win.graph(width=16,height=16) nf=layout(rbind(c(1,2),c(3,4),c(5,6),c(7,8))) acf(as.numeric(residuals(modsarima1)),ci.type="ma",lag.max=36,main="ACF residuos pacf(as.numeric(residuals(modsarima1)),lag.max=36,main="PACF residuos Modelo 1") acf(as.numeric(residuals(modsarima2)),ci.type="ma",lag.max=36,main="ACF residuos pacf(as.numeric(residuals(modsarima2)),lag.max=36,main="PACF residuos Modelo 2") acf(as.numeric(residuals(modsarima3)),ci.type="ma",lag.max=36,main="ACF residuos pacf(as.numeric(residuals(modsarima3)),lag.max=36,main="PACF residuos Modelo 3") acf(as.numeric(residuals(modsarima4)),ci.type="ma",lag.max=36,main="ACF residuos pacf(as.numeric(residuals(modsarima4)),lag.max=36,main="PACF residuos Modelo 4") TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 Modelo 3") Modelo 4") #Gráficas de residuales, y ACF y PACF Modelo 5 win.graph(width=8,height=5) nf=layout(rbind(c(1,2),c(3,4))) plot(residuals(modsarima5)) abline(h=0) plot(fitted(modsarima5),residuals(modsarima5)) abline(h=0) acf(as.numeric(residuals(modsarima5)),ci.type="ma",lag.max=36,main="ACF residuos Modelo 5") pacf(as.numeric(residuals(modsarima5)),lag.max=36,main="PACF residuos Modelo 5") ################################################################################ #PRUEBAS LJUNG-BOX SOBRE RESIDUOS MODELOS AJUSTADOS ################################################################################ BP.LB.test(residuals(modsarima1),36,type="Ljung") BP.LB.test(residuals(modsarima2),36,type="Ljung") BP.LB.test(residuals(modsarima3),36,type="Ljung") BP.LB.test(residuals(modsarima4),36,type="Ljung") BP.LB.test(residuals(modsarima5),36,type="Ljung") ################################################################################ #PRUEBAS SHAPIRO WILK SOBRE RESIDUOS MODELOS AJUSTADOS ################################################################################ shapiro.test(residuals(modsarima1)) shapiro.test(residuals(modsarima2)) shapiro.test(residuals(modsarima3)) shapiro.test(residuals(modsarima4)) shapiro.test(residuals(modsarima5)) ################################################################################ #Test HEGY para la serie del logaritmo ################################################################################ HEGY.test(wts=lnyt2,itsd=c(0,0,c(0)),selectlags=list(mode="aic", Pmax=12)) ES ################################################################################ #Test CH para la serie del logaritmo ################################################################################ Tt=stl(lnyt2,s.window="periodic")[[1]][,2] wt=lnyt2-Tt CH.test(wt,f0=0,DetTr=FALSE) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 ES 7 384 CAPÍTULO 10. MODELOS SARIMA TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Apéndice A Funciones R A.1. Función decompose: Descomposición estacional clásica mediante medias móviles Esta función R descompone una serie de tiempo en sus componentes de tendencia, estacionalidad y componente de error utilizando medias móviles, para series de componentes aditivas o multiplicativas. Su sintaxis general es la siguiente: decompose(x, type = c("additive", "multiplicative"), filter = NULL) donde, x: Es un serie de tiempo (objeto del tipo ts) type: El tipo de componente estacional, aditiva (“additive”) según modelo en (2.1) o multiplicativa ("multiplicative") según modelo en (2.2); ES filter: Un vector de coeficientes de filtramiento dados en orden inverso del tiempo (como para los coeficientes AR o MA), usado para filtrar la componente estacional. Si su valor es NULL, entonces la función aplica una media móvil con ventana simétrica. La función procede de la siguiente manera: Primero halla la componente de tendencia usando una media móvil (si filter es igual a NULL, decompose usa una ventana simétrica con pesos iguales, es decir, calcula las medias móviles bilaterales) y la remueve de la serie restándola de la serie original (caso aditivo) o dividiendo la serie original por esta componente. Luego, la componente estacional es calculada mediante promedios para cada estación sobre todos los periodos. Esta componente es luego centrada para que los factores estacionales sumen cero (caso aditivo) o normalizados dividiendo por el promedio de los factores estacionales crudos (caso multiplicativo). Finalmente, la componente de error es obtenida eliminando de la serie original la tendencia y la estacionalidad, para esto, si la serie es aditiva, a los datos originales le 385 APÉNDICE A. FUNCIONES R 386 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 seasonal: La componente estacional para t = 1, · · · , n; 7 resta las componentes de tendencia y estacionalidad, y en el caso multiplicativo, divide la serie original por el producto de las componentes de tendencia y estacionalidad. Valor: La función decompose produce un objeto R de la clase "decomposed.ts" que tiene los siguientes componentes: figure:Sólo los s factores estacionales estimados ; trend: La componente de tendencia; random El error o resto de la serie; type: El valor especificado para el tipo de serie. Ejemplo: Considere la serie presentada en la Figura A.1; Código R A.1. yt=scan() 154 96 73 200 118 90 223 104 107 346 261 224 518 404 300 613 392 273 628 308 324 49 79 85 141 210 322 248 36 59 95 169 78 91 167 169 75 99 135 211 148 145 223 272 196 186 247 343 189 257 324 404 272 210 289 335 445 464 677 278 347 460 560 680 858 298 375 488 612 711 895 245 203 326 467 610 664 yt=ts(yt,frequency=12,start=c(1965,1)) Jun 0.4887194 0.4887194 0.4887194 0.4887194 0.4887194 0.4887194 Jul 0.7007826 0.7007826 0.7007826 0.7007826 0.7007826 0.7007826 ES descom=decompose(yt,type="multiplicative") descom$seasonal #produce los siguientes datos Jan Feb Mar Apr May 1965 1.3262761 0.8516414 0.6680514 0.5296497 0.4422268 1966 1.3262761 0.8516414 0.6680514 0.5296497 0.4422268 1967 1.3262761 0.8516414 0.6680514 0.5296497 0.4422268 1968 1.3262761 0.8516414 0.6680514 0.5296497 0.4422268 1969 1.3262761 0.8516414 0.6680514 0.5296497 0.4422268 1970 1.3262761 0.8516414 0.6680514 0.5296497 0.4422268 Aug Sep Oct Nov Dec 1965 0.8660279 1.3621465 1.7570249 1.8533501 1.1541034 1966 0.8660279 1.3621465 1.7570249 1.8533501 1.1541034 1967 0.8660279 1.3621465 1.7570249 1.8533501 1.1541034 1968 0.8660279 1.3621465 1.7570249 1.8533501 1.1541034 1969 0.8660279 1.3621465 1.7570249 1.8533501 1.1541034 1970 0.8660279 1.3621465 1.7570249 1.8533501 1.1541034 descom$figure #produce los siguientes datos [1] 1.3262761 0.8516414 0.6680514 0.5296497 0.4422268 0.4887194 0.7007826 [8] 0.8660279 1.3621465 1.7570249 1.8533501 1.1541034 descom$trend #produce los siguientes datos Jan Feb Mar Apr May 1965 NA NA NA NA NA 1966 165.5833 168.5833 171.8750 178.0417 184.1250 1967 185.5833 186.0000 189.6667 196.2917 205.7083 1968 272.0000 278.2083 285.3333 294.0833 303.4167 1969 367.0833 371.0417 374.7917 380.5833 389.7083 Jun NA 185.5833 215.5417 314.4583 399.7917 Jul 148.7500 184.7917 225.7917 327.5000 409.7083 Aug 151.5833 185.1667 237.4583 340.6250 413.1667 A.1. FUNCIÓN DECOMPOSE 445.4583 NA Nov 158.1667 186.3750 261.4583 360.6667 419.4583 484.7917 461.7500 476.8333 486.7500 489.6250 486.7500 NA NA Dec 161.2500 186.5833 266.4167 364.3750 422.1250 NA 7 434.0417 NA Oct 155.1667 186.2500 256.0833 355.7917 415.0833 484.4167 TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 1970 428.2917 1971 NA Sep 1965 153.2083 1966 185.2917 1967 248.8750 1968 349.7500 1969 411.5417 1970 485.3750 1971 387 descom$random #produce los siguientes datos Jan Feb Mar Apr 1965 NA NA NA NA 1966 0.9107086 0.8218842 0.7838265 0.8377545 1967 0.9060078 0.6565437 0.8444675 0.8175764 1968 0.9591207 1.1015739 1.1751293 0.9052322 1969 1.0639744 1.2785036 1.1981784 1.0417916 1970 1.0791627 1.0604688 0.9173725 1.3166195 Aug Sep Oct Nov 1965 1.2873700 1.0062667 1.0196907 1.0165853 1966 1.0538821 1.1450333 1.0603647 1.0856408 1967 1.0260374 0.9881883 1.0223477 1.0070705 1968 0.9220628 0.9340679 0.8958068 0.9155624 1969 0.9585990 0.8277141 0.9323859 0.9145834 1970 0.9583928 1.0239705 1.0080691 0.9961172 May NA 0.9579366 0.8244499 1.1030043 1.1372902 0.8962932 Dec 1.3165024 0.9427108 1.0602579 1.1105129 1.2521145 NA Jun NA 1.0033278 0.9398193 0.9435074 0.9519620 1.0803577 Jul 0.9113461 1.2895874 0.8531837 0.9716509 0.8602781 0.9442742 descom$type #arroja la siguiente información [1] "multiplicative" #Graficando la serie original y su descomposición win.graph(width=4,height=5,pointsize=8) plot(descom) 600 400 350 150 1.6 1.2 seasonal 0.8 1.1 0.9 0.7 random 1.30.4 ES 250 trend 450 200 observed 800 Decomposition of multiplicative time series 1965 1966 1967 1968 1969 1970 1971 Time Figura A.1: Descomposición de una serie multiplicativa. Fuente:O.D. Anderson (1976) and O’Donovan (1983). Ventas mensuales compañı́a X, ene 65 - may 71. APÉNDICE A. FUNCIONES R 388 A.2. Función nls: Mı́nimos cuadrados no lineales Esta función estima por mı́nimos cuadrados los parámetros de modelos no lineales. Su sintaxis es como sigue: 7 nls(formula,data,start,control,algorithm,trace,subset,weights,na.action,model,lower,upper, ...) TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 formula: Fórmula aritmética del modelo no lineal incluyendo variables y parámetros. data: Un data frame opcional que contiene las variables especificadas en data y los pesos weight (para mı́nimos cuadrados no lineales ponderados). Puede ser también un objeto lista o un ambiente R pero no una matriz. start: Un objeto lista de R para especificar los valores iniciales de los parámetros a estimar, nombrados usando el mismo nombre dado a cada uno en formula. control: Una lista R para ajustar algunos valores de control del algoritmo tales como el máximo de iteraciones, la tolerancia para el criterio de convergencia del algoritmo, entre otros. Este argumento tiene valores por defecto. Ver ayuda R, nls.control. algorithm: Una cadena de caracteres para especificar el método numérico a usar. Por defecto es el método de Gauss-Newton. trace: Un valor lógico (FALSE o TRUE) que indica si se debe imprimir los resultados de cada iteración. Por defecto es FALSE. subset: Un vector opcional para especificar un subconjunto de observaciones a ser usadas para el proceso de ajuste. ES weights: Un vector numérico opcional de pesos fijos cuando se va a realizar mı́nimos cuadrados ponderados. na.action: Una función que indica qué se debe hacer cuando los datos contienen observaciones NA’s (datos faltantes), por defecto produce un mensaje de error en caso de datos faltantes. Puede modificarse a na.action=na.omit para excluir las observaciones incompletas. ver más en ayuda R. model: Un argumento lógico para exhibir o no el modelo. Por defecto es FALSE. A.3. FUNCIÓN STL: DESCOMPOSICI ÓN USANDO LOESS 389 A.3. Función stl: Descomposición usando LOESS TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 STL es un método para estimar las componentes de tendencia y estacionalidad en series estacionales aditivas y multiplicativas. Consiste en una aplicación iterativa de la regresión local LOESS. Es necesario que el objeto sobre el cual se desea aplicar la función stl() sea un objeto de serie de tiempo, con la frecuencia de 52 (serie semanal), 4 (serie trimestral) o 12 (serie mensual). La sintaxis es como sigue: stl(x, s.window, s.degree = 0, t.window = NULL, t.degree = 1, l.window = nextodd(period), l.degree = t.degree, s.jump = ceiling(s.window/10), t.jump = ceiling(t.window/10), l.jump = ceiling(l.window/10), robust = FALSE, inner = if(robust) 1 else 2, outer = if(robust) 15 else 0, na.action = na.fail) donde, x: Es una serie de tiempo univariada creada con función ts() y de frecuencia mayor a 1. s.window: se especifica como “periodic” o bien, un entero impar indicando el ancho de la ventana de la regresión loess para la extracción de la componente estacional s.degree: El grado del polinomio ajustado localmente en la extracción de la componente estacional. Debe ser cero o uno. t.window: Un número impar para indicar el ancho de la ventana loess a usar para la extracción de la tendencia, por defecto es ajustada como nextodd(ceiling((1.5*period) / (1-(1.5/s.window)))). ES t.degree: el grado del polinomio local a usar en la extracción de la tendencia, sólo puede ser cero o uno. l.window: El ancho de la ventana loess para el filtro de las subseries de la estacionalidad. Por defecto, es el impar más pequeño que es mayor a la frecuencia de la serie. l.degree: El grado del polinomio ajustado localmente para la filtración de las subseries de la estacionalidad. Puede ser cero o uno. s.jump, t.jump, l.jump: Valores enteros indicando la velocidad de incremento del respectivo suavizador. robust: Un valor lógico (TRUE o FALSE) para indicar si debe usarse un ajuste robusto en el procedimiento loess. APÉNDICE A. FUNCIONES R 390 inner, outer: el número de iteracciones “dentro” y “fuera”, respectivamente, en las estimaciones robustas. na.action: Acción a realizar con valores faltantes. ES TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Este procedimiento halla la componente estacional ajustando por loess las subseries de cada estación; si s.window =“periodic” el suavizamiento es reemplazado tomando medias. Los valores estacionales son removidos y luego la serie resultante es suavizada para hallar la tendencia. El nivel global es removido de la componente estacional y sumado a la tendencia. Este proceso es repetido iterativamente varias veces. La componente de error es hallada luego por diferencia de la serie original menos la tendencia y estacionalidad ajustadas. TA D N ÍS EL T FI IC G AI O II N ZÁ 30 LE 06 Z 13 7 Bibliografı́a [1] Campos Santillán, T., Problemario de Pronósticos para la Toma de Decisiones. Thomson Learning, México, 2001. [2] Cryer, J. D and Chan, K-S., Time Series Analysis With Applications in R. 2nd ed. Springer, New York, 2008. [3] Diebold, F., Elementos de Pronósticos. Thomson Learning, México, 2001. [4] Gaynor, P. E and Kirkpatrick, R. C., Introduction to Time-Series Modeling and Forecasting in Business and Economics. McGrawh-Hill, Inc. New York, 1994. [5] Guerrero V. M. Análisis Estadı́stico de Series de Tiempo Económicas 2. ed. Thompson Learning, México, 2003. [6] Hylleberg, S., Engle, R. F, Granger, C. W. J and Yoo, B. S. (1990). Seasonal Integration and Cointegration. “Journal of Econometrics”, 44, 215238. [7] Makridakis, Wheelwright and McGee Forecasting: Methods and Applications. Wiley, 1983. ES [8] Martinez J. Modelos Box Jenkins. Curso introductorio. II Simposio de Estadı́stica, Análisis de Series temporales, Departamento de Estadı́stica, Facultad de Ciencias, Universidad Nacional de Colombia, Bogotá, 1991. [9] Wei, William W. S. Time Series Analysis. Univariate and Multivariate Methods. Addison-Wesley Publishing Company, Inc., New York, 1990. 391