Exploración de una Serie de Tiempo

Sobre Exploración de una serie de tiempo

Para hacer la exploración de la serie se hace uso de las herramientas básica de exploración de datos: medidas de localización, medidas de dispersión y de forma.

Para las medidas de localización las funciones que se requieren son las usuales mean,quantile,summary. Para medidas de dispersión se usan  range,IQR,var,sd y una opción para las medidas de forma es usar la librería e1071 donde podemos calcular las funciones kurtosis,skewness.

En resumen estas funciones nos dan información de la densidad, de la distribución y de como se comportan los datos en general. Siempre la mejor herramienta para tener una idea rápida sobre los datos es alguna gráficas.

#Analizamos los datos
glotemp<-scan("glotemp.dat")
hist(glotemp,col="2",main="Histograma",xlab="Temperatura global",ylab="Densidad",prob=T)
lines(density(globtemp),lwd=2)

qqnorm(glotemp,main="QQ-Norm",xlab="Cuantiles teóricos",ylab="Cuantiles muestrales",col="2")

 Histograma_densidad_temp-global

QQ-norm_datos_temperaturas_globales

Esto no es diferente a la exploración de datos en general, pero como al analizar una serie buscamos si existe algún comportamiento solo desde la serie misma, resulta importante explorar como se comporta la serie al graficar contra si con tiempo diferentes. Es decir, analizamos la serie completa contra la serie retardada un tiempo para ver si existe algún patrón de comportamiento, pero podemos hacer este análisis contra tiempos retrasados mayores.

El siguiente ejemplo muestra lo que trato de mostrar en el párrafo anterior.

#Scatterplot de serie contra retrasos
soi<-scan("soi.dat")
lag.plot(soi,lags=12,layout=c(3,4),diag=F,colo="2")

 Los datos soi corresponden al Southern Oscillation Index y los datos se pueden descargar desde la página de Robert Shumway.

También puede suceder que sospechamos que dos series se relaciona o que puede haber alguna relación entre ellas, así que al no saber si se relaciona con la serie con retardo se puede hacer un scatter plot para explorar esta posible relación.

#Scatterplot de dos series y sus retrasos
rec<-scan("recruit.dat")
rec=ts(rec)
par(mfrow=c(3,3),mar=c(2.5,4,4,1))
for(h in 0:8){
      plot(lag(soi,-h),rec,main=paste("Soi(t-",h,")"),ylab="Rec(t)",xlab="",col="2")}

Scatterplot-SOI-RecAl cierre de la entrada ¿qué es una serie de tiempo?, se comentó que las serie SOI y Recruitment muestran una posible relación, mientras SOI se refiere al promedio de la temperatura en el océano pacífico, Recruitment cuenta con los datos de la estimación de nueva población de peces en el océano pacífico. Así que la gráfica anterior hace una exploración de la posible relación entre los datos con ciertos retrasos.

Otra herramienta para explorar la serie es analizar sus espectro de frecuencias, esto está relacionado con la versión de análisis de señales. Para lo cual se hace uso de la transformada de Fourier y se busca analizar las frecuencias  que dominan el comportamiento de la serie.

#Ejemplo de análisis espectral
t=1:500
x=2*cos(2*pi*t/50+.6*pi)
I=abs(fft(x)/sqrt(500))^2
P=(4/500)*I
f=0:250/500
plot(f,P[1:251],type="l",xlab="Frecuencias",main="Ejemplo de Espectro de Frencuencias",col="4")
abline(a=seq(0,.5,.02),lty="dotted")

 Espectro_de_Frecuencias

En la gráfica anterior se muestra la frecuencia dominante de la serie, esto permite empezar hacer un análisis de la señal. Pese a que los datos fueron generados en R project, uno puede recuperar información de la serie original al hacer el análisis espectral de la serie.

Algo de modelos de componentes no observables.

Antes de explicar en breve que es eso de los modelos de componentes no observables hago la descomposición de la serie SOI.

#Descomposición de la serie
plot(stl(ts(soi,freq=12),s.window="periodic"),col="4",main="Descomposición de SOI")

Descomposición_de_SOI

La gráfica muestra la serie, la parte estacional , la tendencia y los residuos. Cada una parece dar información sobre la serie. Lo que hacen los modelos de componentes no observables es tomar la idea de que cada señal está compuesta por cuatro componentes no observados:Tendencia, Estacionalidad, Ciclo e Irregularidad.

La idea  modelo es la siguiente:

Señal=f(T,S,C,I)

Donde f() es una función y tienen esas cuatro variables. Los modelos más sencillos y más usados son los que se llaman aditivos y multiplicativos. Con esto se indica que:

Señal=T+S+C+I

o

Señal=TxSxCxI

En series de tiempo no tan grandes la parte Cíclica es notoria, pero cuando no es suficientemente grande la serie la parte cíclica y la tendencia parecen altamente relacionadas y se opta por considerar solo un componente Tendencia-Ciclo. Así se reduce el modelo a:

Señal=T+S+I

o

Señal=TxSxI

Por lo cual en la gráfica anterior se mostraban solo 3 componentes. Entonces lo que resta es analizar como extraer información de la tendencia y de la estacionalidad.

La forma de elegir qué modelo usar es observando el comportamiento de la gráfica de la serie, si la estacionalidad se muestra contante con respecto  la tendencia el modelo es Aditivo, si la estacionalidad incremente con respecto a la tendencia el modelo es Multiplicativo.

#Serie aditiva
x=20*cos(2*pi*t/50+.6*pi)+rnorm(500,0,10)
Aditiva=x+t
plot.ts(Aditiva,col="2",main="Serie Aditiva",xlab="Tiempo",ylab="Aditiva")

#Ejemplo Multiplicativo

souvenir <- scan("http://robjhyndman.com/tsdldata/data/fancy.dat")
plot.ts(souvenir,col="4",main="Ventas de tiendas de Recuerdos",xlab="Tiempo",ylab="Ventas")

 Series_Aditiva

Ejemplo_Multiplicativa

Los primeros datos son simulaciones de una serie aditiva y los otros datos son tomados desde la página de Rob Hyndman. Observamos en las gráficas como el comportamiento es distinto, mientras la primera mantiene la amplitud constante, la segunda se altera con respecto a la tendencia.

Lo que suele estudiar en textos al tener la noción de modelos de componentes no observables, se estudia como extraer la tendencia y como extraer la estacionalidad. Para cada una se usan ciertas técnicas que en otra entrada comentaré.

La parte de Irregularidad o ruido, es analizada con pruebas estadísticas para validar que cumplen ciertas condiciones que son convenientes e importantes teóricamente. Para los modelos ARIMA se requiere explicar y ejemplificar ciertos conceptos que están íntimamente ligados a la parte Irregular de la serie y que son lo que da origen a los modelos.

Espero que la entrada de una idea general de como explorar la serie.  Otro problema que surge es como analizar una familia de series de tiempo, para ellos se pueden usar técnicas como Análisis de Compones Principales (PCA) o Análisis de aglomerados (cluster).  Espero en otra entrada hablar al respecto.

Referencias:

1.-http://anson.ucdavis.edu/~shumway/

2.-https://www.otexts.org/fpp/

3.-http://www.statsoft.com/Textbook/Time-Series-Analysis

4.-http://www.medellin.unal.edu.co/~ndgirald/members.htm

5.-http://pandas.pydata.org/pandas-docs/stable/timeseries.html

6.-Analysis of financial time series

7.-Nonlinear time series analysis

8.-Econometric Models Economic Forecasts

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s