You are on page 1of 6

Procesos Estocasticos

Taller No 2: Analisis procesos ARMA con Matlab


Octubre 2007

1. Funciones Matlab para analisis de procesos AR-


MA
1. Funciones para identificacion de los ordenes p y q:

a) autocorr: calcula y grafica la funcion de autocorrelacion estimada.


b) parrcorr: calcula y grafica la funcion de autocorrelacion parcial estimada.

2. Funciones para estimacion y ajuste:

a) armabat: funcion para identificar la pareja (p,q) que produce el modelo


con menor criterio de informacion de Akaike (AIC). Ver pag. web de H.
Hurd. 1
b) armax: funcion que estima los paremetros del modelo ARMA(p,q). Mat-
lab provee varias funciones para estimacion de modelos pero solamente se
considerara esta.
c) resid: funcion para calcular los residuos del modelo con el fin de poder
realizar pruebas de hipotesis para determinar si es ruido blanco, como la
prueba de Ljung-Box. Los residuos son estimaciones de Zn .
d ) lbqtest: funcion para realizar la prueba de Ljung-Box.
e) compare: funcion para examinar la calidad de los pronosticos que se pueden
hacer con el modelo ajustado con el fin de determinar si este es adecuado
o no.

Notacion Matlab. En lugar de la letra L, Matlab utiliza q 1 , luego q 1 (Xn ) = Xn1 .


Por ejemplo, un modelo ARMA(4,2) se expresa en Matlab as:
A(q 1)Xn = B(q 1)Zn
1
http://www.stat.unc.edu/faculty/hurd/stat185Data/progdoc.html

1
A(q 1) = 1 0,8875q 1 + 0,6884q 2 0,8956q 3 + 0,7022q 4
B(q 1) = 1 + 0,2434q 1 + 0,4649q 2

1.0.1. Pasos para el analisis con las funciones de Matlab

1. Graficar la trayectoria del proceso, la FAC estimada, la FACP estimada y el


Variograma. Las instrucciones a continuacion muestran como hacerlo.

figure(1)

subplot(2,2,1), plot(x);
ylabel(Xn)
title(Trayectoria)

[fac_y,m]=autocorr(x,[],2);
subplot(2,2,2), autocorr(x,[],2)
title(fac);

[facp_y, mp] = parcorr(x,[],2);


subplot(2,2,3), parcorr(x,[],2)
title(facp);

v = (fac_y(1)-fac_y)/(fac_y(1)-fac_y(2));
subplot(2,2,4), stem(m,v);
grid
title(Variograma)

2. Despues de una posible identificacion del tipo de proceso se procede a especificar


los ordenes p y q del proceso. En caso de no ser posible identificar un AR o un
MA, se toma inicialmente el rango p, q = 1, 2, 3, 4, 5, 6, y se corre la funcion
armabat. Antes de aplicar la funcion es conveniente restar la media para
obtener un proceso de media cero, asumiendo que el proceso es estacionario en
covarianza:

% eliminar la media
xt = x -mean(x);

% explora el orden
pvec = [1 2 3 4 5 6];
qvec = [1 2 3 4 5 6];
[mbest,minaic,pbest,qbest]=armabat(xt,pvec,qvec);
pbest
qbest

2
En las variables pbest y qbest estan los valores de los ordenes p y q que
mejor describen el proceso.

3. Estimacion los parametros del modelo ARMA(p,q). Para esto se utiliza la fun-
cion armax con la pareja (p, q) escogida en el punto anterior. Esta instruccion
crea un objeto de nombre (por ejemplo)armapq que contiene varios campos
con informacion sobre el modelo estimado.

armapq = armax(xt,[pbest qbest]);


present(armapq)
armapq.a
armapq.c

4. Pruebas de significacion de los Parametros. La instruccion

tcrit = armapq.ParameterVector./sqrt(diag(armapq.CovarianceMatrix))

calcula un vector de cocientes tj = bj /Sbj , donde Sbj es la desviacion estandar


bj . Cada valor tj es el valor de un estadstico t de Student que
del coeficiente
sirve para probar la hipotesis de que los coeficientes son significativamente difer-
entes de cero, es decir, se acepta la hipotesis Ho : j = 0 al nivel de 5 % si
observamos que |tj | < 1,96; en caso contrario se rechaza.
Tambien se puede calcular el valor estimado de la varianza del ruido blanco, 2,
mediante la instruccion: armapq.NoiseVariance.

5. Para completar el analisis es necesario chequear si los residuos del modelo ajus-
tado son ruido blanco. Los residuos son valores estimados del proceso Zn . La
forma de hacerlo es calculando la fac y la fac parcial con los residuos. Si los
residuos resultan ruido blanco ambas funciones deben mostrar todos los valores
dentro de las bandas de Bartlett. El calculo de los residuos se puede hacer con
los siguientes comandos.

dato = iddata(xt);
rarmapq = resid(armapq,dato);
et = rarmapq.OutputData;
[H,P,Qstat,CV] = lbqtest(et, [20 25], 0.05);
[H,P,Qstat,CV]

figure(3)

3
subplot(2,2,1), plot(et);
title(Residuos)

[fac_x,m] = autocorr(et,30,[],2);
subplot(2,2,2), autocorr(et,30,[],2);
title(fac muestral)

subplot(2,2,3), parcorr(et,30,[],2);
title(facp muestral)

v = (fac_x(1)-fac_x)/(fac_x(1)-fac_x(2));
subplot(2,2,4), stem(m,v);
grid
title(Variograma)

6. Una manera de chequear si el modelo propuesto ajusto bien los datos es ajustar
el modelo con la primera mitad de los datos y utilizar la parte restante para
comparar con los pronosticos a un paso: se compara Xn con el pronostico de Xn
realizado con el modelo. La funcion compare de Matlab hace este calculo.

figure(4)
% uso de la funcion "compare"
mitad = floor(length(xt)/2);
ye = xt(1:mitad);
yv = xt(mitad+1:end);
model= armax(ye,[pbest qbest]);
compare(yv,model,1);

Ejemplo 1.1. En la Figura (1) se puede ver la grafica de la serie: entrada de gas
metano en un horno a gas ( Methane input into gas furnace: cu. ft/min. Sampling
interval 9 seconds. Source: Box and Jenkins (2)), se aprecian la fac y la fac par-
cial estimadas. Segun lo explicado acerca de la identificacion de modelos tipo AR-
MA, correspondera a un proceso autorregresivo AR(3). La estimacion con armabat
y armax se realizo de acuerdo a las indicaciones anteriores y se obtuvo un modelo
ARMA(1,4)(!!!). El modelo ajustado para la serie Xn es:
Discrete-time IDPOLY model: A(q)y(t) = C(q)e(t)
A(q) = 1 - 0.8109 (+-0.04829) q^-1

C(q) = 1 + 1.231 (+-0.0689) q^-1 + 1.111 (+-0.09903) q^-2 + 0.8187 (+-0.09637) q^-3 + 0.3131 (+-0.06364) q^-4

2
http://www-personal.buseco.monash.edu.au/ hyndman/TSDL/

4
Trayectoria fac muestral
4 1

Sample Autocorrelation
2
0.5
0
0
2

4 0.5
0 100 200 300 0 10 20 30
Lag
Sample Partial Autocorrelations

facp muestral Variograma


1 30

0.5
20
0
10
0.5

1 0
0 10 20 30 0 10 20 30
Lag

Figura 1: Analisis de la Serie entrada de gas metano en un horno a gas cu.ft/min

El residuo o error, indicado en Matlab con e(t) corresponde a un ruido blanco Zn


con desviacion estandar estimada dada por b = 0,1845. La comprobacion de que los
residuos e(t) son ruido blanco se realiza con la prueba Ljung-Box. En este caso no se
rechaza la hipotesis de incorrelacion de e(t). Ademas, todos los coeficientes resultan
significativamente diferentes de cero. Los numeros que aparecen entre parentesis con
+- son las desviaciones estandar sbj de los coeficientes bj . En este caso, como se
explico, se puede ver que la dividir el coeficiente por su desviacion se obtiene un
valor mayor de 1.96 en valor absoluto por lo que se puede considerar que todos son
significativamente diferentes de cero.
tcrit =

-16.7930
17.8598
11.2191
8.4959
4.9194

Prueba Ljung-Box

0 0.1996 25.0477 31.4104


0 0.3949 26.2398 37.6525

5
Trayectoria fac muestral
1 1

Sample Autocorrelation
0.5
0.5
0
0
0.5

1 0.5
0 100 200 300 0 10 20 30
Lag
Sample Partial Autocorrelations

facp muestral Variograma


1 1.5

0.5 1

0 0.5

0.5 0
0 10 20 30 0 10 20 30
Lag

Figura 2: analisis de Residuos del modelo arma(1,4)

1.5

0.5

0.5

1.5

2.5

3
140 160 180 200 220 240 260 280 300

Figura 3: analisis de pronosticos con el modelo arma(1,4)

You might also like