You are on page 1of 12

Ejemplo modelos ARIMA: Anlisis Serie Tasa de Cambio Yen-Dlar

Sea el promedio mensual de la tasa de cambio del yen al dlar, con N=283 observaciones desde enero de 1973 a julio de
1996. Se va a identificar y ajustar usando las primeras n=264 observaciones y validacin cruzada en los pronsticos para
las ltimas 19 observaciones (de enero de 1995 a julio de 1996). Esta es una serie no estacional (no tiene componente St).
ACF de log(Y t) PACF de log(Y t)

0.0 0.2 0.4 0.6 0.8 1.0


1.0
300

10
250

0.5

Partial ACF
0
200

ACF
Yt
Yt

0.0
-10
150

-0.5
-20
100

1975 1980 1985 1990 1995 1975 1980 1985 1990 1995 0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35

Time Time Lag Lag

ACF de log(Yt) PACF de log(Y t)

0.3

0.3
5.6

0.05

0.2

0.2
Partial ACF
5.2

log(Yt)

0.00

0.1
log(Yt)

ACF

0.1
0.0
-0.05
4.8

0.0
-0.2 -0.1

-0.1
-0.10
4.4

1975 1980 1985 1990 1995 1975 1980 1985 1990 1995 0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35

Time Time Lag Lag

Figura 1 Figura 2
En la figura 1, arriba se observa la serie en su escala original y su diferencia = y abajo a la serie transformada
por logaritmo y su diferencia log = log log . Observamos claramente que
a) La serie tiene tendencia no constante y parece que tambin la varianza no es constante, por tanto no es
estacionaria, mientras que su primera diferencia es estacionaria en su media pero su varianza no lo es. Por esta razn se
decide aplicar transformacin logartmica para ver si se logra estabilizar la varianza.
b) La serie del logaritmo de nuevo muestra no estacionariedad por tendencia pero la varianza es estable. Adems, en
la Figura 2 (con los primeros=264 datos) se observa que la ACF muestral para log tiene un patrn de cola positiva pero no
ergdica, es decir decae muy lentamente e iniciando en k=1 en un valor casi igual a 1, mientras que en su PACF se observa un patrn
de corte con un nico corte en k=1 donde la estimacin es casi igual a 1, con estos dos patrones estaramos identificando para
log un proceso AR(1) pero no estacionario en covarianza, y esto nos indica que esta serie presenta sntoma de raz unitaria (es
decir que su polinomio AR tiene una raz igual a 1) y que por tanto necesita diferenciarse al menos una vez. Por su parte,
log muestra media constante y varianza tambin aprox. constante; tambin se observa variaciones cclicas pero eso no
implica no estacionariedad, slo nos dice que hay autocorrelacin no nula en log .

Pasos para identificar los modelos ARIMA(p,d,q) en este ejemplo (usando slo los primeros=264 datos).
1) Estabilizacin de la varianza. Ya se ha establecido que era necesario la transformacin logartmica
2) Sobre log , identificar el orden d del filtro diferencia = 1 , para eliminar no estacionariedad por
tendencia: Ya se ha concluido que log es no estacionaria no slo por ver grficamente un patrn de tendencia sino tambin
porque ACF y PACF revelan sntoma de raz unitaria, por tanto debe aplicarse el filtro diferencia con d=1. Observamos en
Figura 2 la ACF y PACF de log . En la ACF ya hay un patrn ergdico, es decir que estadsticamente se cumple que
lim corr log , log = 0 ocurre rpidamente (no importa que en k=17 haya rechazo en ACF, lo que importa es
que ya no vemos el patrn de decaimiento lento que muestra la ACF de log ), adems junto con la media y la varianza
de log constantes, concluimos que esta serie es estacionaria en covarianza, es decir, es suficiente el filtro diferencia de
orden d=1.
3) Sobre log aplicamos las tcnicas de identificacin de una ARMA(p,q) estacionario:
a) ACF-PACF: Es difcil establecer cul de las dos grficas puede tener patrn de corte y cul patrn de cola,
lo que es seguro es que no pueden ser ambas de patrn de corte, as que se decide no postular modelos con esta
grfica y declarar que es un log ARMA(p,q) no identificado plenamente y por tanto tampoco se identifica
plenamente el modelo ARIMA(p,1,q) para log (slo sabemos que d=1).
b) EACF: No se descarta la posibilidad de identificar un MA(q) puesto que no se ha establecido si en la ACF
hay o no un patrn de cola, as que podemos intentar la identificacin desde el primer rengln para determinar
una MA y buscar un modelo ARMA(p,q) a partir del segundo rengln.
EACF de

AR/MA 0 1 2 3 4 5 6 7 8 9 10 11 12 13
o
0 x o o o o o o o o o o o o

1 x o o o o o o o o o o o o o

2 x x o o o o o o o o o o x o

3 x x o o o o o o o o o o o o

El tringulo con vrtice (0,1) identifica un MA(1) y el tringulo con 4 x x x o o o o o o o o o o o


vrtice en (1,1) identifica un ARMA(1,1), ambos casos ignorando la x en
5 x x x x o o o o o o o o o o
la celda (2,12), debido a que en proximidades de sta slo hay ceros. Un
tercer modelo sera moviendo el tringulo por debajo de la celda (2,12), es
6 x x x o o o o o o o o o o o
decir, con vrtice en (3, 2) el cual identifica un ARMA(3,2), un modelo
que no es parsimonioso comparado con los dos anteriores. 7 x x o o o o o o o o o o o o

8 o o o o x x o x o o o o o o

9 o o x o x x o o o o o o o o

10 o o x o x x o o o o o o o o

11 x x x x o x o x o x o o o o

12 x x o x o x x x o x x o o o

13 x x x x x x x o x o x o o o

Se tendra con la EACF que (recuerde que en los modelos ARIMA(p,d,q) para log tenemos que d=1, puesto que
se han identificado los ARMA(p,q) sobre la serie log diferenciada con d=1).
Si log es un MA(1), entonces log es un ARIMA(0,1,1)
Si log es un ARMA(1,1), entonces log es un ARIMA(1,1,1)
Si log es un ARMA (3,2), entonces log es un ARIMA(3,1,2)

c) Funcin autoarmafit de la librera timsac: Esta funcin estima y selecciona ARMAs sobre series
estacionarias segn AIC; como resultado da los rdenes p, q y una estimacin de los parmetros, sin embargo,
slo nos es til la informacin sobre p y q, adems los signos de los coeficientes estimados en la parte MA deben
!
cambiarse, ya que para esta funcin el polinomio MA es ! = 1 #$ # # , en lugar del polinomio definido
!
en el curso, ! = 1 + #$ # # que es la tal como lo define la funcin Arima con la que se estima en R.
Entonces, con base en la salida caso No. 1, se identifica como mejor modelo para log un ARMA(3,2), y como
segundo mejor modelo el caso No. 2 que indica que log es un ARMA(2,3), esto implica que
Si log es un ARMA(3,2), entonces log es un ARIMA(3,1,2) (este es el tercer modelo que se identific con
EACF)
Si log es un ARMA(2,3), entonces log es un ARIMA(2,1,3)

> autoarmafit(dif1lny)
Best ARMA model
AR coefficient (order =3) 0.025498 -0.858122 0.278330
MA coefficient (order =2) -0.336749 -0.905025

Case No. 1
I AR(I) STANDARD DEVIATION
1 0.025498 0.085561
2 -0.858122 0.044802
3 0.278330 0.067767

I MA(I) STANDARD DEVIATION


1 -0.336749 0.061650
2 -0.905025 0.055826

AIC -1920.565606
Innovation variance 0.000649
Final gradient 2.720034e-09 1.026303e-08 1.593054e-08 1.191777e-08 -1.788662e-08

Case No. 2
I AR(I) STANDARD DEVIATION
1 -0.323346 0.047000
2 -0.934306 0.044688

I MA(I) STANDARD DEVIATION


1 -0.692615 0.077615
2 -1.059193 0.059946
3 -0.281288 0.067470

AIC -1920.455432
Innovation variance 0.000649
Final gradient -5.622938e-08 -5.308665e-08 8.198043e-08 -3.253739e-09 2.652625e-09

d) Funcin auto.arima con criterio de informacin BIC, aplicada directamente sobre log . auto.arima es la
nica funcin en R que puede aplicarse directamente sin hacer ningn tipo de diferenciacin (es decir, sin filtrar
la no estacionariedad tanto por tendencia como por patrones estacionales no estacionarios) ya que est en
capacidad de chequear la presencia de races unitarias y de derivas, es decir, da tanto los rdenes p, q como el
orden de diferencia d y si es necesario la deriva en el modelo ARIMA. En la salida R vemos que se identifica que
log es un ARIMA(1,1,0) sin deriva y esto implica que log debera ser un AR(1) estacionario de media cero
(con este modelo se esperara ver patrn de cola en ACF y patrn de corte en PACF). Este modelo y el
ARIMA(0,1,1) son modelos contradictorios uno con otro cul es ms prximo a los patrones observados? No lo
sabemos desde que con ACF-PACF no se pudo establecer cul de estas dos funciones puede tener patrn de corte.

> auto.arima(lny,ic="bic")
Series: lny
ARIMA(1,1,0)

Coefficients:
ar1
0.3463
s.e. 0.0589

sigma^2 estimated as 0.0006898: log likelihood=584.48


AIC=-1164.97 AICc=-1164.92 BIC=-1157.82

OBS: Si calculamos la media de la serie & log , con los primeros n=264 datos, se obtiene un valor muy pequeo de 0.004192971,
lo cual, junto con el resultado de auto.arima, nos indica que no es necesario considerar una deriva en los modelos ARIMA para ,-. ,
por tanto se postulan los siguientes modelos, para los cuales sus ecuaciones se inician escribiendo en la forma /0 1 log =
! 1 , con 1 un proceso RB distribuido 2 0, 3 4
, y luego se despeja log . OJO: 5 ;
exp:log < exp 3
> 4
/2
Nombre del modelo Ecuacin terica para y ajustada para (vea tablas de parmetros estimados abajo)
1/ 1 log = 1 , con 1 un R.B 2 0, 3 4 , y como 1 / 1 = 1 1+/ + / 4,
entonces la ecuacin final es,
Modelo 1: Un ARIMA(1,1,0) sin deriva = A + BA A BA C+D
Ec. ajustada en escala original:
5 exp 1.34634 log 0.34634 log 4 exp 0.0006897983/2
1 log = 1 + 1 , con 1 un R.B 2 0, 3 4 , entonces,
= A + D + HA D A
Modelo 2: Un ARIMA(0,1,1) sin deriva
Ec. ajustada en escala original:
5 exp:log + 0.38056615 < exp 0.0006809274/2
1 / /4 4 1 log = 1 + + 4 4 + J J 1 , con 1 un R.B 2 0, 3 4 , y como,
1 / /4 4 1 = 1 1+/ /4 / 4
+ /4 J, entonces la ecuacin final es,
= A + BA A + BC BA C BC K + D + HA D A + HC D C + HK D K
Modelo 3: Un ARIMA(2,1,3) sin deriva Ec. ajustada en escala original:
5 exp:2.513249 log 2.470607 log 4 + 0.957358 log J 1.15084915 + 0.42238215 4
+ 0.37783615 J < exp 0.0006695847/2
1 / /4 4 /J J 1 log = 1 + + 4 4 1 , con 1 un R.B 2 0, 3 4 , y como
1 / /4 4 /J J 1 =1 1+/ /4 / 4
/J /4 J + /J L, la ecuacin final
queda de la siguiente forma,
Modelo 4: Un ARIMA(3,1,2) sin deriva = A + BA A + BC BA C + BK BC K BK M + D + HA D A + HC D C
Ec. ajustada en escala original:
5 exp:1.181192 log 1.109353 log 4 + 1.300834 log J 0.372673 log L + 0.19753515
+ 0.99565615 4 < exp 0.0006503803/2
1/ 1 log = 1 + 1 , con 1 un R.B 2 0, 3 4 , y como 1 / 1 =1 1+/ +
/ 4, entonces la ecuacin final es,
Modelo 5: Un ARIMA(1,1,1) sin deriva = A + BA A BA C + D + HA D A
Ec. ajustada en escala original:
5 exp:1.03915 log 0.03915 log 4 + 0.3469815 < exp 0.0006833958/2

Resultados R de los ajustes


O C = 0.0006897983)
Ajuste Modelo 1 (N O C = 0.0006809274)
Ajuste Modelo 2 (N
t test of coefficients: t test of coefficients:
Estimate Std. Error t value Pr(>|t|) Estimate Std. Error t value Pr(>|t|)
ar1 0.34634 0.05889 5.8811 1.233e-08 ma1 0.380566 0.056674 6.715 1.155e-10
--- ---
O C = 0.0006695847)
Ajuste Modelo 3 (N O C = 0.0006503803)
Ajuste Modelo 4 (N
t test of coefficients: t test of coefficients:
Estimate Std. Error t value Pr(>|t|) Estimate Std. Error t value Pr(>|t|)
ar1 1.513249 0.025199 60.0516 < 2.2e-16 ar1 0.181192 0.059585 3.0409 0.002601
ar2 -0.957358 0.022169 -43.1844 < 2.2e-16 ar2 -0.928161 0.011323 -81.9724 < 2.2e-16
ma1 -1.150849 0.062916 -18.2919 < 2.2e-16 ar3 0.372673 0.058907 6.3265 1.096e-09
ma2 0.422382 0.091637 4.6093 6.349e-06 ma1 0.197535 0.011243 17.5698 < 2.2e-16
ma3 0.377836 0.059187 6.3838 7.936e-10 ma2 0.995656 NA NA NA
--- ---
O C = 0.0006833958)
Ajuste Modelo 5 (N p AIC BIC
t test of coefficients: Modelo1 1 29.98203 30.39091
Estimate Std. Error t value Pr(>|t|) Modelo2 1 29.62372 30.02771
ar1 0.03915 0.16891 0.2318 0.81688 Modelo3 5 29.93127 32.02863
ma1 0.34698 0.15810 2.1947 0.02906 Modelo4 5 29.03797 31.07273
--- Modelo5 2 29.83625 30.65558
300

300

300
Real Real Real
250 Ajuste modelo1 Ajuste modelo2 Ajuste modelo3

250

250
200

200

200
V1

V1

V1
150

150

150
100

100

100
1975 1980 1985 1990 1995 1975 1980 1985 1990 1995 1975 1980 1985 1990 1995

Time Time Time


300

300
Real Real
Ajuste modelo4 Ajuste modelo5
250

250
200

200
V1

V1
150

150
100

100

1975 1980 1985 1990 1995 1975 1980 1985 1990 1995

Time Time
110

Real
Modelo1
Modelo2
Modelo3
105

Modelo4
Modelo5
100

RMSE MAE MAPE Amplitudes Coberturas


medias I.P I.P(%)
modelo1 8.77 6.75 7.28 45.76 84.21
ytf

modelo2 8.71 6.77 7.28 42.01 84.21


95

modelo3 8.56 6.75 7.24 43.58 84.21


modelo4 8.85 6.83 7.37 46.17 84.21
modelo5 8.72 6.77 7.29 42.65 84.21
90
85

1995.0 1995.5 1996.0 1996.5

Time

Ecuaciones de pronstico con origen en t=264: En las siguientes ecuaciones, 54PL Q exp Rlog ;4PL Q S exp 3> 4 /2 y corresponde al pronstico en la escala
;4PL Q es el pronstico en la escala de logaritmo natural de los datos;
original L perodos despus de t=264, mientras que log
; Observacin log 4PL ] ^ , si Q T 0 Residuo 154PL ] # , si Q h 0
log 4PL Q T = U ; 154PL Q h = U
Pronstico Q T perodos despus de f = 264 en escala log , si Q T > 0 0, si Q h > 0

Modelo1:
;4PL Q 1 0.34634 log
54PL Q exp:1.34634 log ;4PL Q 2 < exp 0.0006897983/2 .

Modelo2:
;4PL Q 1 + 0.380566154PL Q 1 S exp 0.0006809274/2
54PL Q exp Rlog
Modelo3:
;4PL Q 1 2.470607 log
54PL Q exp R2.513249 log ;4PL Q 2 + 0.957358 log
;4PL Q 3 1.150849154PL Q 1 + 0.422382154PL Q 2 +

0.377836154PL Q 3 S exp R
j.jjjPPklmLn
S.
4

Modelo4:
;4PL Q 1 1.109353 log
54PL Q exp R1.181192 log ;4PL Q 2 + 1.300834 log
;4PL Q 3 0.372673 log
;4PL Q 4 + 0.197535154PL Q 1 +

0.995656154PL Q 2 S exp 0.0006503803/2 .

Modelo5:
;4PL Q 1 0.03915 log
54PL Q exp R1.03915 log ;4PL Q 2 + 0.34698154PL Q 1 S exp 0.0006833958/2
Modelo1 Modelo2 Modelo3
Point Forecast Lo 95 Hi 95 Point Forecast Lo 95 Hi 95 Point Forecast Lo 95 Hi 95
Jan 1995 100.97 95.90 106.30 Jan 1995 101.11 96.07 106.42 Jan 1995 100.70 95.71 105.96
Feb 1995 101.23 92.86 110.36 Feb 1995 101.11 92.67 110.32 Feb 1995 100.24 91.96 109.26
Mar 1995 101.32 90.34 113.63 Mar 1995 101.11 90.38 113.12 Mar 1995 100.02 89.49 111.78
Apr 1995 101.35 88.25 116.40 Apr 1995 101.11 88.56 115.44 Apr 1995 100.13 87.66 114.37
May 1995 101.36 86.45 118.84 May 1995 101.11 87.01 117.50 May 1995 100.51 86.25 117.13
Jun 1995 101.37 84.88 121.05 Jun 1995 101.11 85.65 119.36 Jun 1995 100.98 85.05 119.90
Jul 1995 101.37 83.48 123.09 Jul 1995 101.11 84.42 121.10 Jul 1995 101.33 83.91 122.38
Aug 1995 101.37 82.21 124.99 Aug 1995 101.11 83.31 122.72 Aug 1995 101.41 82.72 124.32
Sep 1995 101.37 81.04 126.79 Sep 1995 101.11 82.27 124.26 Sep 1995 101.18 81.46 125.68
Oct 1995 101.37 79.96 128.51 Oct 1995 101.11 81.31 125.73 Oct 1995 100.78 80.20 126.63
Nov 1995 101.37 78.95 130.16 Nov 1995 101.11 80.41 127.14 Nov 1995 100.38 79.04 127.47
Dec 1995 101.37 78.00 131.74 Dec 1995 101.11 79.56 128.50 Dec 1995 100.16 78.06 128.51
Jan 1996 101.37 77.10 133.28 Jan 1996 101.11 78.75 129.81 Jan 1996 100.21 77.29 129.92
Feb 1996 101.37 76.25 134.76 Feb 1996 101.11 77.99 131.09 Feb 1996 100.50 76.69 131.69
Mar 1996 101.37 75.44 136.21 Mar 1996 101.11 77.26 132.33 Mar 1996 100.88 76.17 133.63
Apr 1996 101.37 74.66 137.63 Apr 1996 101.11 76.56 133.54 Apr 1996 101.20 75.60 135.45
May 1996 101.37 73.92 139.01 May 1996 101.11 75.88 134.73 May 1996 101.29 74.93 136.93
Jun 1996 101.37 73.21 140.36 Jun 1996 101.11 75.24 135.88 Jun 1996 101.14 74.14 137.98
Jul 1996 101.37 72.53 141.68 Jul 1996 101.11 74.61 137.02 Jul 1996 100.82 73.30 138.69
Modelo4 Modelo5
Point Forecast Lo 95 Hi 95 Point Forecast Lo 95 Hi 95
Jan 1995 101.78 96.81 107.00 Jan 1995 101.11 96.06 106.43
Feb 1995 101.64 93.34 110.69 Feb 1995 101.15 92.66 110.40
Mar 1995 100.98 90.10 113.17 Mar 1995 101.15 90.32 113.28
Apr 1995 101.57 88.47 116.60 Apr 1995 101.15 88.45 115.66
May 1995 102.24 87.20 119.89 May 1995 101.15 86.87 117.77
Jun 1995 101.57 85.00 121.37 Jun 1995 101.15 85.49 119.68
Jul 1995 101.04 83.13 122.80 Jul 1995 101.15 84.24 121.45
Aug 1995 101.82 82.48 125.69 Aug 1995 101.15 83.10 123.11
Sep 1995 102.20 81.59 128.03 Sep 1995 101.15 82.05 124.69
Oct 1995 101.35 79.80 128.72 Oct 1995 101.15 81.07 126.19
Nov 1995 101.13 78.61 130.11 Nov 1995 101.15 80.16 127.63
Dec 1995 102.03 78.34 132.88 Dec 1995 101.15 79.29 129.02
Jan 1996 102.07 77.45 134.53 Jan 1996 101.15 78.47 130.37
Feb 1996 101.17 75.90 134.85 Feb 1996 101.15 77.70 131.68
Mar 1996 101.29 75.18 136.49 Mar 1996 101.15 76.95 132.95
Apr 1996 102.18 75.04 139.12 Apr 1996 101.15 76.24 134.19
May 1996 101.88 74.06 140.14 May 1996 101.15 75.56 135.40
Jun 1996 101.06 72.75 140.39 Jun 1996 101.15 74.91 136.58
Jul 1996 101.51 72.38 142.36 Jul 1996 101.15 74.27 137.74
Para la validacin de supuestos, tenga en cuenta que segn las ecuaciones tericas de los modelos 1 a 5, 1 es quien se
supone es RB con distribucin normal, por tanto, para los tests ACF y Ljung-Box se define o p = q-rr 1 , 1 , y para
tests PACF se define / = q-rr 1 , 1 |1 , , 1 u ;
. Los residuos de ajuste corresponden a 1 = log log .
Anlisis grficos de residuales
Modelo Conclusiones
1, 2, 3, 4 y 5 u
1 vs. t y 1 ; la media parece constante en cero y su varianza aprox. Cte; en u
u vs. log 1 vs. t no es claro si hay o no
ciclos no explicados.
De hecho las grficas de los residuales de todos estos modelos son muy similares!

Tests de incorrelacin para RB:


Ljung-Box (m=6, 12, 18, 24, 30, 36)
Tests ACF (k=1, 2, , 36) Tests PACF (k=1, 2, , 36)
con o p = q-rr 1 , 1
Modelo vj : o p = q-rr 1 , 1 = 0 vs. vj : / = q-rr 1 , 1 |1 ,,1 = 0 vs.
vj : o 1 = = o z = 0 vs.
v : o p 0. v :/ 0.
v : al menos un o p 0, k=1, 2, ,m
1 Rechaza en k=2, 17 Rechaza en k=2, 17 Rechaza con m=18, 24, 30 y 36
2 Rechaza en k=17 Rechaza en k=13, 17 No rechaza en las seis pruebas
3 Rechaza en k=17 y 23 Rechaza en k=17 No rechaza en las seis pruebas
4 No rechaza en las 36 pruebas No rechaza en las 36 pruebas (k=1 a 36) No rechaza en las seis pruebas
(k=1 a 36)
5 Rechaza en k=17 Rechaza en k=17 No rechaza en las seis pruebas
Residuos ARIMA(1,1,0) para log(Y t) Residuos ARIMA(1,1,0) para log(Yt) Residuos ARIMA(0,1,1) para log(Yt) Residuos ARIMA(0,1,1) para log(Yt)

0.05

0.05

0.05

0.05
residuals(modelo1)

residuals(modelo1)

residuals(modelo2)

residuals(modelo2)
0.00

0.00

0.00

0.00
-0.05

-0.05

-0.05

-0.05
-0.10

-0.10
-0.10

-0.10
1975 1980 1985 1990 1995 4.6 4.8 5.0 5.2 5.4 5.6 1975 1980 1985 1990 1995 4.6 4.8 5.0 5.2 5.4 5.6

Time as.numeric(modelo1$fitted) Time as.numeric(modelo2$fitted)

ACF residuos ARIMA(1,1,0) para log(Yt) PACF residuos ARIMA(1,1,0) para log(Y t) ACF residuos ARIMA(0,1,1) para log(Y t) PACF residuos ARIMA(0,1,1) para log(Y t)
0.15

0.10

0.10
0.05
0.05

Partial ACF

Partial ACF
0.00

0.00
ACF

ACF
-0.05

-0.05
-0.10

-0.10
-0.15

-0.15
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35

Lag Lag Lag Lag

Residuos ARIMA(2,1,3) para log(Y t) Residuos ARIMA(2,1,3) para log(Yt) Residuos ARIMA(3,1,2) para log(Yt) Residuos ARIMA(3,1,2) para log(Yt)

0.05

0.05
0.05

0.05
residuals(modelo3)

residuals(modelo3)

residuals(modelo4)

residuals(modelo4)
0.00

0.00
0.00

0.00

-0.05

-0.05
-0.05

-0.05

1975 1980 1985 1990 1995 4.6 4.8 5.0 5.2 5.4 5.6 1975 1980 1985 1990 1995 4.6 4.8 5.0 5.2 5.4 5.6

Time as.numeric(modelo3$fitted) Time as.numeric(modelo4$fitted)

ACF residuos ARIMA(2,1,3) para log(Yt) PACF residuos ARIMA(2,1,3) para log(Y t) ACF residuos ARIMA(3,1,2) para log(Y t) PACF residuos ARIMA(3,1,2) para log(Y t)
0.10

0.00 0.05 0.10


0.10
0.10

Partial ACF

Partial ACF
0.00
0.00
ACF

ACF

0.00
-0.10
-0.10

-0.10

-0.10
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35

Lag Lag Lag Lag

Residuos ARIMA(1,1,1) para log(Y t) Residuos ARIMA(1,1,1) para log(Yt)


Tests Ljung-Box
Modelo 1: ARIMA(1,1,0) Modelo 4: ARIMA(3,1,2)
X.squared df p.value X.squared df p.value
0.05

0.05

6 10.14152 6 0.11881733 6 2.940916 6 0.8162252


residuals(modelo5)

residuals(modelo5)

12 16.55446 12 0.16713929 12 6.722101 12 0.8754187


0.00

0.00

18 29.95836 18 0.03785332 18 12.662198 18 0.8112372


24 38.90869 24 0.02791773 24 15.185187 24 0.9152228
-0.05

-0.05

30 43.79627 30 0.04975891 30 17.586562 30 0.9648504


36 50.40121 36 0.05605989 36 19.790682 36 0.9870101
-0.10

-0.10

1975 1980 1985 1990 1995 4.6 4.8 5.0 5.2 5.4 5.6

Time as.numeric(modelo5$fitted)
Modelo 2: ARIMA(0,1,1) Modelo5: ARIMA(1,1,1)
X.squared df p.value X.squared df p.value
6 4.038034 6 0.6715292 6 4.237085 6 0.6446269
ACF residuos ARIMA(1,1,1) para log(Yt) PACF residuos ARIMA(1,1,1) para log(Y t)
12 9.094802 12 0.6948125 12 9.450312 12 0.6640623
18 21.065184 18 0.2761372 18 21.491329 18 0.2553530
0.10

24 27.965150 24 0.2615126 24 28.566775 24 0.2368621


0.05

30 31.110565 30 0.4099860 30 31.805562 30 0.3766247


Partial ACF

0.00

36 36.142039 36 0.4620138 36 36.999765 36 0.4226023


ACF

-0.05

Modelo 3: ARIMA(2,1,3)
-0.10

X.squared df p.value
-0.15

6 2.661759 6 0.8499431
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
12 6.949812 12 0.8609123
Lag Lag 18 17.310943 18 0.5018334
24 24.158594 24 0.4525589
30 26.524787 30 0.6480980
36 32.212381 36 0.6493957
Normal Q-Q Plot Normal Q-Q Plot

Modelo2 Modelo3

0.05
0.05
VP-Shapiro=0.0007589 VP-Shapiro=0.001308

Sample Quantiles

Sample Quantiles
0.00

0.00
-0.05

-0.05
-0.10
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3

Theoretical Quantiles Theoretical Quantiles

Normal Q-Q Plot Normal Q-Q Plot

modelo4 modelo5
0.05

VP-Shapiro=0.000936 VP-Shapiro=0.0007603

0.05
Sample Quantiles

Sample Quantiles
0.00

0.00
-0.05
-0.05

-0.10
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3

Theoretical Quantiles Theoretical Quantiles

Note que es comn el rechazo en k=17 para ACF y PACF (excepto en el modelo 4 que no rechaza) y es muy probable que
sea debido a la influencia de obs. atpicas que estn causando el corte en estas grficas, pero donde claramente no se
cumple el supuesto de RB es en el modelo 1. Tambin observe que para modelo4 los valores P de los tests Ljung-Box son
los ms altos, todo esto estara dicindonos que en este modelo puede ser ms probable la validez del supuesto de ruido
blanco en sus respectivos errores de ajuste. Si consideramos como modelos vlidos en cuanto al supuesto de ruido blanco
a los modelos 2, 3, 4 y 5 veamos si tambin no se rechaza supuesto de normalidad Para 1 : Por test Shapiro Wilk se
rechaza la hiptesis de normalidad, verifiquemos si esto slo ocurre por la presencia de alguna observacin muy extrema
o si realmente hay patrones de no normalidad. De estos grficos es muy claro que hay desvo significativo de la recta de
probabilidad normal, es decir, realmente no es cierto el supuesto de normalidad para los errores de ajuste en estos
modelos.

Si a pesar de la no normalidad quisiramos elegir entre modelos 2, 3, 4 y 5, adems de medidas de ajuste deben
compararse los pronsticos en la validacin cruzada, sin embargo, recuerde que esto debe hacerse llevando previamente
los resultados a la escala original exponenciando las cifras y multiplicando por factor de correccin. Segn las medidas de
precisin de pronsticos puntuales y por Intervalos de prediccin, hay muy pocas diferencias en la calidad de los ajustes
segn AIC y BIC, y en la capacidad de pronsticos de estos modelos, aunque podemos decir que el menos preciso en el
pronstico es el modelo 4 por sus resultados un poco mayores en RMSE, MAE, MAPE y en Amplitud media de los I.P,
mientras que el modelo que ajusta un poco mejor por BIC y es un modelo parsimonioso es el modelo 2 pero los
pronsticos deben ser a corto plazo, pues como vemos en la grfica comparativa de pronsticos, a la larga, estos se
convierten en un valor constante que desconoce los cambios por los que la serie va atravesando en su futuro.

Observaciones adicionales:
1. En el modelo ARIMA(1,1,1) sin deriva al parecer el parmetro / no es significativo y sus medidas de pronsticos
puntuales son un poco peor comparado con modelo 2.
2. Aunque los tests de validacin apuntan al modelo 4, es bastante probable que su identificacin sea ms por la
influencia de observaciones extremas que causan rechazo en test de RB en los dems modelos ARIMA en ACF y PACF
con k=17 , as que el modelo 4 puede ser un modelo sobre parametrizado.
3. En el Captulo 9 de notas de clase se model tambin el logaritmo natural de esta serie con modelos de regresin
global de tendencia lineal con errores ARMA y se compararon con los modelos ARIMA aqu presentados (ojo, los
resultados de ajuste y de pronstico en ese captulo fueron calculados en la escala logaritmo natural contrario a lo hecho
en este documento). Sin embargo, debemos ir ms all de los resultados numricos y de validacin de supuestos de estos
modelos de regresin, pues la cuestin ms importante a definir aqu es si se debe o no considerar la serie con una
tendencia global determinstica, es decir, si sta es o no bien definida por una funcin determinstica del tiempo, o si lo
ms apropiado es considerar la tendencia como estocstica. Los modelos con errores ARMA considerados en ese captulo
fueron denominados como modelos 5b y 5c, mientras que el modelo de regresin con error estructural RB fue denotado
como modelo 5a. Para el modelo 5a, la ACF y PACF de sus residuos muestran sntoma de no estacionariedad en los
errores estructurales por posible raz unitaria o bien, est muy cerca a tal condicin, lo cual no es para nada deseable, de
hecho con base en las estimaciones del modelo 5c parte ARMA, se tiene un polinomio AR(3) estimado en ese modelo
igual a /uJ = 1 0.2777 0.7285 4 + 0.0673 J cuyas races son 1.039333, -1.290755 y 11.076088, donde la primera
raz si bien es de mdulo mayor 1 no est lejos de 1. Ud. podra intentar cambiar el modelo de la tendencia a un
polinomio mayor pero en general, las series relativas a tasas de cambio han sido preferentemente tratadas como de
tendencia estocstica pues un modelo de tendencia global implica que siempre habr o crecimiento o decrecimiento en la
serie de manera predecible y dado que los datos observados mostraron decrecimiento, entonces basados en estos, con un
modelo de tendencia global estaramos infiriendo que la tasa de cambio del yen al dlar es siempre decreciente y esto est
totalmente alejado del comportamiento real que se ha observado en este tipo de datos; piense por ejemplo cmo se viene
moviendo la tasa de cambio del peso al dlar en los ltimos aos se puede asumir un patrn global? puede ud. asegurar
que siempre hay devaluacin o revaluacin de la moneda? Los modelos globales impuestos a series que tienen patrones
estocsticos fracasan a mediano y largo plazo, son modelos donde la estabilidad de los parmetros no podr cumplirse y
fallarn en los pronsticos de datos futuros.

En conclusin, la postulacin y la eleccin de modelos para una serie no pueden estar nicamente basadas en medidas
numricas de ajuste, en tests de validacin etc. No se deben imponer modelos a los datos, debemos postular modelos que
realmente expliquen y tengan en cuenta la naturaleza y la dinmica de estos y no obligar a los datos a seguir modelos que
tal vez en las validaciones cruzadas muestran buenos resultados pero que bajo el supuesto de continuidad sobre el cual se
trabaja en series de tiempo, no son los que realmente describen a la serie. Esta es la razn de la importancia de conocer y
entender qu son los datos y no trabajar simplemente a espaldas de lo que ellos son, postulando modelos sin sentido.

Programa R usado: Recuerde que los modelos son para logaritmo natural de la serie y por tanto en el ajuste y pronstico
debe aproximarse valores en la escala original exponenciando resultados para logaritmo de la serie y aplicando factor de
correccin exp 3> 4 /2 , el cual en este programa se calcula como exp(modelo$sigma2/2), siendo el objeto modelo el
que haya guardado el ajuste del modelo ARIMA. Tambin recuerde que debido al ajuste en escala de logaritmos, es
necesario el clculo de seudo residuos para la obtencin de las medidas AIC y BIC en la escala original de los datos, pero
la validacin de supuestos se hace con los residuos de ajuste directamente, los cuales son obtenidos con
residuals(modelo).

Cdigo R 1.0: Cargando libreras y definiendo funciones de usuario


library(forecast);library(TSA);library(timsac);library(lmtest)
#Creando funcin usuario crit.inf.resid() para calcular {| ~
crit.inf.resid=function(residuales,n.par,AIC="TRUE"){
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
}

#Funcin usuario para obtener 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
}
#Funcin para calcular la amplitud de los I.P
amplitud=function(LIP,LSP){
a=LSP-LIP
am=mean(a)
am
}

#Funcin para calcular la cobertura de los I.P


cobertura=function(real,LIP,LSP){
I=ifelse(real>=LIP & real<=LSP,1,0)
p=mean(I)
p
}

Cdigo R 2.0: Lectura datos y grficos serie, primera diferencia y sus ACFs y PACFs muestrales con los primeros n=264 datos
#Lectura de los datos
datos=read.table(file.choose(),header=F) #Leer EXCHYENDOLAR.txt
datos=ts(datos,freq=12,start=c(1973,1))
plot(datos)

#Grficas de la serie, su diferencia y de log y su diferencia


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=mean(diff(datos)))
plot(log(datos),ylab=expression(log(Y[t])))
plot(diff(log(datos)),ylab=expression(paste(nabla,sep="",log(Y[t]))))
abline(h=mean(diff(log(datos))))

#definicin del tamao de la muestra a usar para ajuste


#variable de tiempo en el ajuste y en pronstico con modelos lineales
n=length(datos)-19
t=1:n
tnuevo=(n+1):length(datos)

#Serie recortada, escala original


yt=ts(datos[t],freq=12,start=c(1973,1))

#log de la serie recortada a ajustar y su primera diferencia


lny=ts(log(datos[t]),freq=12,start=c(1973,1))
dif1lny=diff(lny)

#log de la serie recortada a en tiempos de los pronsticos ex post


ytf=ts(datos[tnuevo],freq=12,start=c(1995,1))

#Grficas de ACF's y PAC's del log y de su diferencia (primeros n=264 datos)


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]))))

Cdigo R 3.0: Identificacin automtica de modelos ARIMA usando slo los primeros n=264 datos
#Identificacin de modelos ARMA para la diferencia del log
eacf(dif1lny,ar.max=13,ma.max=13)
autoarmafit(dif1lny)

#Identificacin modelo ARIMA para logYt usando BIC


auto.arima(lny,ic="bic")

#Identificacin modelo ARMA para diferencia regular de logYt usando BIC


auto.arima(diff(lny),ic="bic")

mean(dif1lny) #verificando valor medio de la primera diferencia regular de logYt

Cdigo R 4.0: Ajustes de modelos ARIMA usando slo los primeros n=264 datos
4.1 Ajuste y pronsticos modelo1
#ARIMA(1,1,0)
modelo1=Arima(lny,order=c(1,1,0),method="ML")
k1=1 #Nro. de parmetros
df1=n-k1
coeftest(modelo1,df=df1)
ythat1=exp(modelo1$fitted)*exp(modelo1$sigma2/2)
plot(datos);lines(ythat1,col=2)
legend("topright",legend=c("Real","Ajuste Modelo1"),col=1:2,lty=1,lwd=2)
seudores1=yt-ythat1 #Seudo residuos, slo para clculo de AIC y BIC
aic1=exp(crit.inf.resid(seudores1,n.par=k1));aic1
bic1=exp(crit.inf.resid(seudores1,n.par=k1,AIC="FALSE"));bic1

layout(rbind(c(1,2),c(3,4)))
plot(residuals(modelo1),main=expression(paste("Residuos ARIMA(1,1,0) para ",sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo1$sigma2),0,2*sqrt(modelo1$sigma2)),col=2)
plot(as.numeric(modelo1$fitted),residuals(modelo1),main=expression(paste("Residuos ARIMA(1,1,0) para ",
sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo1$sigma2),0,2*sqrt(modelo1$sigma2)),col=2)
acf(as.numeric(residuals(modelo1)),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(modelo1)),lag.max=36,ci.col="red",main=expression(paste("PACF residuos ARIMA(1,1,0)
para",sep=" ",log(Y[t]))))

BP.LB.test(residuals(modelo1),maxlag=36,type="Ljung")
shapiro.test(residuals(modelo1))
qqnorm(residuals(modelo1));qqline(residuals(modelo1))
legend("topleft",legend=c("Modelo1","VP-Shapiro=0.001357"))
#predicciones
predmodelo1=ts(exp(as.data.frame(forecast(modelo1,h=19,level=95)))*exp(modelo1$sigma2/2),freq=12,start=c(1995,1)
)
predmodelo1
accuracy(predmodelo1[,1],ytf)

Amplmodelo1=amplitud(LIP=predmodelo1[,2],LSP=predmodelo1[,3]);Amplmodelo1
Cobmodelo1=cobertura(real=ytf,LIP=predmodelo1[,2],LSP=predmodelo1[,3]); Cobmodelo1

4.2 Ajuste y pronsticos modelo2


#Modelo 2: ARIMA(0,1,1)
modelo2=Arima(lny,order=c(0,1,1),method="ML")
k2=1 #Nro. de parmetros
df2=n-k2
coeftest(modelo2,df=df2)
ythat2=exp(modelo2$fitted)*exp(modelo2$sigma2/2)
plot(datos);lines(ythat2,col=2)
legend("topright",legend=c("Real","Ajuste modelo2"),col=1:2,lty=1,lwd=2)

seudores2=yt-ythat2 #Seudo residuos, slo para clculo de AIC y BIC


aic2=exp(crit.inf.resid(seudores2,n.par=k2));aic2
bic2=exp(crit.inf.resid(seudores2,n.par=k2,AIC="FALSE"));bic2

layout(rbind(c(1,2),c(3,4)))
plot(residuals(modelo2),main=expression(paste("Residuos ARIMA(0,1,1) para ",sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo2$sigma2),0,2*sqrt(modelo2$sigma2)),col=2)
plot(as.numeric(modelo2$fitted),residuals(modelo2),main=expression(paste("Residuos ARIMA(0,1,1) para ",
sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo2$sigma2),0,2*sqrt(modelo2$sigma2)),col=2)
acf(as.numeric(residuals(modelo2)),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(modelo2)),lag.max=36,ci.col="red",main=expression(paste("PACF residuos ARIMA(0,1,1)
para",sep=" ",log(Y[t]))))

BP.LB.test(residuals(modelo2),maxlag=36,type="Ljung")
shapiro.test(residuals(modelo2))
qqnorm(residuals(modelo2));qqline(residuals(modelo2))
legend("topleft",legend=c("Modelo2","VP-Shapiro=0.0007589"))

#predicciones
predmodelo2=ts(exp(as.data.frame(forecast(modelo2,h=19,level=95)))*exp(modelo2$sigma2/2),freq=12,start=c(1995,1)
)
predmodelo2
accuracy(predmodelo2[,1],ytf)

Amplmodelo2=amplitud(LIP=predmodelo2[,2],LSP=predmodelo2[,3]);Amplmodelo2
Cobmodelo2=cobertura(real=ytf,LIP=predmodelo2[,2],LSP=predmodelo2[,3]); Cobmodelo2

4.3 Ajuste y pronsticos modelo3


#ARIMA(2,1,3)
modelo3=Arima(lny,order=c(2,1,3),method="ML",optim.method="L-BFGS-B") #se cambio mtodo de optimizacin para
evitar NAs en errores estndar
k3=5 #Nro. de parmetros
df3=n-k3
coeftest(modelo3,df=df3)
ythat3=exp(modelo3$fitted)*exp(modelo3$sigma2/2)
plot(datos);lines(ythat3,col=2)
legend("topright",legend=c("Real","Ajuste modelo3"),col=1:2,lty=1,lwd=2)
seudores3=yt-ythat3 #Seudo residuos, slo para clculo de AIC y BIC
aic3=exp(crit.inf.resid(seudores3,n.par=k3));aic3
bic3=exp(crit.inf.resid(seudores3,n.par=k3,AIC="FALSE"));bic3

layout(rbind(c(1,2),c(3,4)))
plot(residuals(modelo3),main=expression(paste("Residuos ARIMA(2,1,3) para ",sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo3$sigma2),0,2*sqrt(modelo3$sigma2)),col=2)
plot(as.numeric(modelo3$fitted),residuals(modelo3),main=expression(paste("Residuos ARIMA(2,1,3) para ",
sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo3$sigma2),0,2*sqrt(modelo3$sigma2)),col=2)
acf(as.numeric(residuals(modelo3)),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(modelo3)),lag.max=36,ci.col="red",main=expression(paste("PACF residuos ARIMA(2,1,3)
para",sep=" ",log(Y[t]))))

BP.LB.test(residuals(modelo3),maxlag=36,type="Ljung")
shapiro.test(residuals(modelo3))
qqnorm(residuals(modelo3));qqline(residuals(modelo3))
legend("topleft",legend=c("Modelo3","VP-Shapiro=0.001308"))

#predicciones
predmodelo3=ts(exp(as.data.frame(forecast(modelo3,h=19,level=95)))*exp(modelo3$sigma2/2),freq=12,start=c(1995,1)
)
predmodelo3
accuracy(predmodelo3[,1],ytf)

Amplmodelo3=amplitud(LIP=predmodelo3[,2],LSP=predmodelo3[,3]);Amplmodelo3
Cobmodelo3=cobertura(real=ytf,LIP=predmodelo3[,2],LSP=predmodelo3[,3]); Cobmodelo3

4.4 Ajuste y pronsticos modelo4


#ARIMA(3,1,2)
modelo4=Arima(lny,order=c(3,1,2),method="ML")
k4=5 #Nro. de parmetros
df4=n-k4
coeftest(modelo4,df=df4)
ythat4=exp(modelo4$fitted)*exp(modelo4$sigma2/2)
plot(datos);lines(ythat4,col=2)
legend("topright",legend=c("Real","Ajuste modelo4"),col=1:2,lty=1,lwd=2)

seudores4=yt-ythat4 #Seudo residuos, slo para clculo de AIC y BIC


aic4=exp(crit.inf.resid(seudores4,n.par=k4));aic4
bic4=exp(crit.inf.resid(seudores4,n.par=k4,AIC="FALSE"));bic4

layout(rbind(c(1,2),c(3,4)))
plot(residuals(modelo4),main=expression(paste("Residuos ARIMA(3,1,2) para ",sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo4$sigma2),0,2*sqrt(modelo4$sigma2)),col=2)
plot(as.numeric(modelo4$fitted),residuals(modelo4),main=expression(paste("Residuos ARIMA(3,1,2) para ",
sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo4$sigma2),0,2*sqrt(modelo4$sigma2)),col=2)
acf(as.numeric(residuals(modelo4)),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(modelo4)),lag.max=36,ci.col="red",main=expression(paste("PACF residuos ARIMA(3,1,2)
para",sep=" ",log(Y[t]))))

BP.LB.test(residuals(modelo4),maxlag=36,type="Ljung")
shapiro.test(residuals(modelo4))
qqnorm(residuals(modelo4));qqline(residuals(modelo4))
legend("topleft",legend=c("modelo4","VP-Shapiro=0.000936"))

#predicciones
predmodelo4=ts(exp(as.data.frame(forecast(modelo4,h=19,level=95)))*exp(modelo4$sigma2/2),freq=12,start=c(1995,1)
)
predmodelo4
accuracy(predmodelo4[,1],ytf)
Amplmodelo4=amplitud(LIP=predmodelo4[,2],LSP=predmodelo4[,3]);Amplmodelo4
Cobmodelo4=cobertura(real=ytf,LIP=predmodelo4[,2],LSP=predmodelo4[,3]); Cobmodelo4

4.5 Ajuste y pronsticos modelo5


#ARIMA(1,1,1)
modelo5=Arima(lny,order=c(1,1,1),method="ML")
k5=2 #Nro. de parmetros
df5=n-k5
coeftest(modelo5,df=df5)
ythat5=exp(modelo5$fitted)*exp(modelo5$sigma2/2)
plot(datos);lines(ythat5,col=2)
legend("topright",legend=c("Real","Ajuste modelo5"),col=1:2,lty=1,lwd=2)

seudores5=yt-ythat5 #Seudo residuos, slo para clculo de AIC y BIC


aic5=exp(crit.inf.resid(seudores5,n.par=k5));aic5
bic5=exp(crit.inf.resid(seudores5,n.par=k5,AIC="FALSE"));bic5
layout(rbind(c(1,2),c(3,4)))
plot(residuals(modelo5),main=expression(paste("Residuos ARIMA(1,1,1) para ",sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo5$sigma2),0,2*sqrt(modelo5$sigma2)),col=2)
plot(as.numeric(modelo5$fitted),residuals(modelo5),main=expression(paste("Residuos ARIMA(1,1,1) para ",
sep=" ",log(Y[t]))))
abline(h=c(-2*sqrt(modelo5$sigma2),0,2*sqrt(modelo5$sigma2)),col=2)
acf(as.numeric(residuals(modelo5)),lag.max=36,ci.type="ma",ci.col="red",main=expression(paste("ACF residuos
ARIMA(1,1,1) para",sep=" ",log(Y[t]))))
pacf(as.numeric(residuals(modelo5)),lag.max=36,ci.col="red",main=expression(paste("PACF residuos ARIMA(1,1,1)
para",sep=" ",log(Y[t]))))
shapiro.test(residuals(modelo5))

BP.LB.test(residuals(modelo5),maxlag=36,type="Ljung")
qqnorm(residuals(modelo5));qqline(residuals(modelo5))
legend("topleft",legend=c("modelo5","VP-Shapiro=0.0007603"))
#predicciones
predmodelo5=ts(exp(as.data.frame(forecast(modelo5,h=19,level=95)))*exp(modelo5$sigma2/2),freq=12,
start=c(1995,1))
predmodelo5
accuracy(predmodelo5[,1],ytf)

Amplmodelo5=amplitud(LIP=predmodelo5[,2],LSP=predmodelo5[,3]);Amplmodelo5
Cobmodelo5=cobertura(real=ytf,LIP=predmodelo5[,2],LSP=predmodelo5[,3]); Cobmodelo5

#Grfico Normalidad slo para modelos 2, 3, 4 Y 5


layout(rbind(c(1,1,2,2),c(3,3,4,4)))
qqnorm(residuals(modelo2));qqline(residuals(modelo2))
legend("topleft",legend=c("Modelo2","VP-Shapiro=0.0007589"))
qqnorm(residuals(modelo3));qqline(residuals(modelo3))
legend("topleft",legend=c("Modelo3","VP-Shapiro=0.001308"))
qqnorm(residuals(modelo4));qqline(residuals(modelo4))
legend("topleft",legend=c("modelo4","VP-Shapiro=0.000936"))
qqnorm(residuals(modelo5));qqline(residuals(modelo5))
legend("topleft",legend=c("modelo5","VP-Shapiro=0.0007603"))

4.6 Comparaciones de ajustes


win.graph(width=16,height=11)
layout(rbind(c(1,2,3),c(4,5,6)))
plot(datos);lines(ythat1,col=2)
legend("topright",legend=c("Real","Ajuste modelo1"),col=1:2,lty=1,lwd=2)
plot(datos);lines(ythat2,col=2)
legend("topright",legend=c("Real","Ajuste modelo2"),col=1:2,lty=1,lwd=2)
plot(datos);lines(ythat3,col=2)
legend("topright",legend=c("Real","Ajuste modelo3"),col=1:2,lty=1,lwd=2)
plot(datos);lines(ythat4,col=2)
legend("topright",legend=c("Real","Ajuste modelo4"),col=1:2,lty=1,lwd=2)
plot(datos);lines(ythat5,col=2)
legend("topright",legend=c("Real","Ajuste modelo5"),col=1:2,lty=1,lwd=2)

Tablacriterios=data.frame(p=c(1,1,5,5,2),AIC=c(aic1,aic2,aic3,aic4,aic5),BIC=c(bic1,bic2,bic3,bic4,bic5),row.nam
es=c("Modelo1","Modelo2","Modelo3","Modelo4","Modelo5"))
Tablacriterios

4.7 Comparaciones de pronsticos


Amplitudes=rbind(Amplmodelo1,Amplmodelo2,Amplmodelo3,Amplmodelo4,Amplmodelo5)
Coberturas=rbind(Cobmodelo1,Cobmodelo2,Cobmodelo3,Cobmodelo4,Cobmodelo5)*100

precispuntual=rbind(accuracy(predmodelo1[,1],ytf)[c(2,3,5)],accuracy(predmodelo2[,1],ytf)[c(2,3,5)],accuracy(pre
dmodelo3[,1],ytf)[c(2,3,5)],accuracy(predmodelo4[,1],ytf)[c(2,3,5)],accuracy(predmodelo5[,1],ytf)[c(2,3,5)])
colnames(precispuntual)=c("RMSE","MAE","MAPE")
Tablamedidaspronost=data.frame(precispuntual,Amplitudes,Coberturas,row.names=c("modelo1","modelo2","modelo3","mo
delo4","modelo5"))
round(Tablamedidaspronost,digits=2)

plot(ytf,type="b",pch=19,col="brown",lwd=2)
lines(predmodelo1[,1],pch=1,type="b",col=1,lwd=2)
lines(predmodelo2[,1],pch=2,type="b",col=2,lwd=2)
lines(predmodelo3[,1],pch=3,type="b",col=3,lwd=2)
lines(predmodelo4[,1],pch=4,type="b",col=4,lwd=2)
lines(predmodelo5[,1],pch=5,type="b",col=5,lwd=2)
legend("topleft",legend=c("Real","Modelo1","Modelo2","Modelo3","Modelo4","Modelo5"),pch=c(19,1:5),col=c("brown",
1:5),lwd=2)

You might also like