Uploaded by Andrés Forero

NOTASDECLASEESTADISTICAIIIv.01

advertisement
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
Download