sábado, 8 de enero de 2011

Análisis de la estacionariedad de la serie.

Para el análisis del comportamiento estacionario de la serie, deberemos realizar la:
  1. Identificación de la estructura estacionaria: identificar el modelo a ajustar.
  2. Identificación de la estructura no-estacionaria: detectar qué transformaciones debemos aplicar a la serie para conseguir una media y varianza constantes.
Para ello conviene aplicar el siguiente esquema de estudio:

Estacionariedad en la media (la no estacionariedad en la media se llama tendencia –o tendencia determinística-). La aproximación a los procesos estocásticos con modelos AR o MA está restringida, en términos generales, a aquellos procesos estocásticos que cumplan al menos de forma débil la condición de estacionariedad. Por tanto, debemos analizar la estacionariedad de las series temporales analizadas antes de proceder a la identificación de la estructura del proceso estocástico AR o MA. Debe considerarse como tendencia determinista un cambio relevante y persistente en la serie que parezca “dominar” el valor a medio plazo de la media.
  • Detección: presencia de tendencias deterministas (no estacionariedad en media) por observación gráfica
  • Corrección: Aplicación de filtros de tendencia
Sea yt=Tt+YSTt, donde Tt es la tendencia, YSTt es la serie sin tendencia e yt es la serie original, podemos:
  • filtrar o eliminar (detrending, YSTt=et=yt-Tt) efectuando una regresión simple de la serie en función de una variable de tiempo t, donde el residuo de la regresión será la serie filtrada de tendencia. Aquí, debemos decidir el tipo de función matemática que mejor ajusta la tendencia de la serie (lineal, parabólica, exponencial, etc. Fig. 1) y aquella que sea más conveniente (priorizar la sencillez, evaluar alternativas, puede ser una tendencia compuesta o no-lineal). Trabajaremos luego con la serie del residuo que será estacionaria en media.
Procedimientos para extraer la tendencia:
Medias móviles. Es un tipo de filtro donde se calcula, para cada punto, un promedio del mismo número de valores a cada lado de este punto. Por ejemplo, una media móvil de 3 puntos se calcula como: m(yt)=(yt-1 + yt + yt+1)/3; Cuando la cantidad de puntos de la media móvil es par, se toma la mitad de los valores extremos, por tanto, na media móvil de 4 puntos viene dada por: m(yt)=[(yt-2/2) + yt-1 + yt + yt+1 + (yt+2/2)]/4.
Otros procedimientos posibles son el ajuste de polinomios y el alisado/suavizado (smoothing) mediante funciones exponenciales.
  • suavizar la serie. Una forma de visualizar la tendencia, es mediante suavizamiento de la serie. La idea central es definir a partir de la serie observada una nueva serie que suaviza los efectos ajenos a la tendencia (estacionalidad, efectos aleatorios), de manera que podamos determinar la dirección de la tendencia.
  • diferenciar la serie (differencing, dif(yt+1)=yt+1 - yt). Una clase de filtro que es particularmente útil para eliminar la tendencia consiste en suponer que la tendencia evoluciona lentamente en el tiempo, de manera que en el instante t la tendencia debe estar próxima a la tendencia en el instante t − 1. De esta forma, si restamos a cada valor de la serie el valor anterior, la serie resultante estará aproximadamente libre de tendencia. Este método se basa en aplicar diferencias a la serie hasta convertirla en estacionaria. Una diferencia de primer orden se obtiene restando dos valores contiguos: dif(yt+1)=yt+1 – yt, mientras que una diferencia de segundo orden se obtiene mediante dif2(yt+2)=dif(yt+2) – dif(yt+1).
Una ventaja de diferenciar en lugar de eliminar la tendencia es que no estimamos parámetros en la diferenciación, pero como desventaja, la diferenciación no produce una estimación del proceso estocástico yt. Para aplicar diferencias definimos el operador "backshift": Bxt=xt-1 o, para cualquier orden d, B^dxt=xt-k o diff(d)=(1-B^d).


• Estacionariedad en la varianza.
  • Detección: aplicación de test de Raíces Unitarias
  • Corrección: integración de la serie
Cuando no existe estacionariedad en al varianza, podemos: I) transformación logarítimica de la serie: yt=ln(xt). Tiende a eliminar fluctuaciones largas que ocurren sobre porciones de la serie donde los valores subyacentes sin grandes. II) transformación Box-Cox o potencial de la serie: yt= 1) (xt^lambda-1)/lambda si lambda es distinto que cero y 2) ln(xt) si lambda es igual a cero. La transformación Box-Cox se utiliza para mejorar la aproximación a la normalidad o mejorar la linealidad en los valores predichos.
También el análisis de los componentes de variación, el análisis exploratorio de los datos (EDA), el análisis de regresión y periodograma nos permiten describir la serie.

  • Pruebas Informales Gráficas: FAS
Uno de los métodos que suelen proponerse como suficientes para la detección de la no estacionariedad de una serie es, erróneamente, el del análisis de representaciones gráficas de la misma. Así, se dice que la simple contemplación del gráfico de evolución temporal de la serie permite decidir si la serie es o no estacionaria en virtud, por ejemplo, de la pendiente que presente. Por otro lado, suelen aconsejarse medidas como el gráfico rango - media para detectar la no estacionariedad en varianza; ambos procedimientos sólo son parcialmente útiles. Efectivamente pueden confundirse con facilidad representaciones gráficas de procesos con tendencias estocásticas con procesos con tendencias deterministas.
Un procedimiento sencillo que no requiere la aplicación de ningún contraste para determinar la presencia de raíces unitarias en las series, es el de observar el correlograma de la misma. Distintos trabajos, pero en especial los presentados por Hoskin (1989), Diebold y Rudebusch y Lo (1991), se han centrado en analizar las variaciones de la autocorrelación en función del orden de integración “d” de una serie.
En general, la regla a aplicar será sencilla: los valores de la FAS de una serie con raíces unitarias descienden muy suavemente hacia el cero mientras que cuando no hay presencia de raíces unitarias el descenso es exponencial.

  • Pruebas Formales: La prueba de Dickey-Fuller
Sin duda alguna, el test más sencillo y habitualmente utilizado a la hora de determinar la estacionariedad de una serie temporal es el test de Dickey–Fuller (Test DF) o su versión “ampliada” Dickey-Fuller Ampliado (Test ADF). Se trata de un contraste de “No estacionariedad”, es decir, en el que la hipótesis nula es precisamente la presencia de una raíz unitaria en el proceso generador de datos de la serie analizada.
Sin embargo, este procedimiento estándar presenta en este caso algunas peculiaridades. Quizá la más importante es que los valores críticos de las tablas DF o MacKinnon dependen de la presencia en el modelo de términos deterministas (término constante o tendencia determinista). De ese modo, antes de proceder a contrastar el valor de “gamma” debe optarse por una de las tres especificaciones siguientes:

(a).- Con tendencia y término independiente.
(b).- Con término independiente.
(c).- Sin términos deterministas.

En el caso de encontrar una raíz unitaria en la serie analizada, cabe preguntarse qué transformación requiere la serie para convertirse en una serie estacionaria en varianza. Observando el caso de un paseo aleatorio simple utilizado en la hipótesis nula, parece sencillo intuir que, si la serie original presenta una raíz unitaria, la serie en primeras diferencias será una transformada estacionaria en varianza.
Las series que requieren una transformación en diferencias (integración) para convertirse en series estacionarias en varianza se denominan series Integradas de Orden 1, y se representan como I(1).


Aplicación en R
#Estimación de tendencias
#la regersión de series temporales difiere del análisis de regresión estándar porque los residuos forman una serie temporal y por tanto tienden a estar correlacionados serialmente. Cuando esta correlación es positiva, el error estándar estimado para los patrámetros estimados, tiende a ser menor que sus valores reales. Esti tiende a una alta significación estadística errónea.
#GLS. cuadrados mínimos generalizados apra obtener estimaciones mejoradas de los errores estándar que dan cuenta de la autocorrelación en la serie residual.
#Modelo ajustado a las series de temperatura (1970-2005)
www <- "http://www.massey.ac.nz/~pscowper/ts/global.dat"
Global <- scan(www)
Global.ts <- ts(Global, st = c(1856, 1), end = c(2005,12), fr = 12)
temp <- window(Global.ts, start = 1970)
temp.lm <- lm(temp ~ time(temp))
coef(temp.lm)
confint(temp.lm) #el IC para la pendiente no contiene el cero, lo cual provee evidencia estad´sitica para la tendencia creciente en las temperaturas globales si la autocorrelación de los residuales es cero.
acf(resid(lm(temp ~ time(temp)))) #sin embargo, la serie residual está positivamente autocorrelacionada a lags pequeños conduciendo a una sub-estimación del error estándar y a IC muy estrechos

#SLR y OLS. Estimación de la tendencia por regresión lineal simple (SLR)
globtemp = ts(scan("c:/data/globtemp.dat"), start=1856)
gtemp = window(globtemp, start=1900) # usa los años 1990-1997
fit = lm(gtemp~time(gtemp), na.action=NULL) # regresión gtemp vs. tiempo
summary(fit) # resultados del ajuste. Observamos que la tendencia estimada por SLR no captura bien la tendencia de los datos.
plot(gtemp, type="o", ylab="Global Temperature Deviation") # gráfico de la serie
abline(fit) # línea de regresión
#Evaluación de las técnicas de eliminación de tendencia estimada por mínimos cuadrados ordinarios (OLS): X(t)=mu(t)+Y(t) entonces si mu(t)=beta1+beta2*t, estimamos Yt por OLS Y(t)=X(t)+mu(t)
x=gtemp[45:142]; t=1900:1997
fit=lm(x~t)
plot(t,fit$resid,type="o",xlab="year",ylab="detrended gtemp")

#Diferenciación. modelamos la tendencia como componente estocástico utilizando una caminata aleatoria con deriva: X(t)=mu(t)+Y(t), entonces si mu(t)=sigma+mu(t-1)+w(t), obtenemos que X(t)-X(t-1)=[mu(t)+Y(t)]-[mu(t-1)+Y(t-1)]=sigma+w(t)+Y(t)-Y(t-1). Así, diferenciando la serie Xt obtenemos un proceso estacionario.
x=gtemp[45:142]; t=1900:1997
plot(t,diff(x),type="o",xlab="year",ylab="differenced gtemp")
#Evaluación de las técnicas de eliminación de tendencia y diferenciación primera
par(mfrow=c(2,1))
plot(resid(fit), type="o", main="detrended")
plot(diff(gtemp), type="o", main="first difference")
x11(); par(mfrow=c(3,1)) # plot ACFs
acf(gtemp, 48)
acf(resid(fit), 48)
acf(diff(gtemp), 48)


1 comentario:

  1. bueno y donde se consigue estos datos para hacer esta ejecucion?
    globtemp = ts(scan("c:/data/globtemp.dat")

    ResponderEliminar

Libros para descargar sobre Análisis de Series Temporales