Abortos otoñales: análisis de series temporales (III)

En los dos números anteriores hemos introducido las series temporales. Para recordar diremos que una serie temporal es una secuencia de datos medidos en determinados momentos y ordenados cronológicamente. Su análisis nos interesa especialmente porque podemos describir o explicar qué ha sucedido con esa variable en el pasado y también porque queremos predecir cómo se comportará probablemente en el futuro.
Para recordar cómo podíamos describir matemáticamente una serie de datos diremos que cada dato de dicha serie es la suma (modelo aditivo) de varias componentes:

Xt = Tt + St + It, o 
Valor observado = Tendencia + Estacionalidad + Irregular




Donde:

■  X es el valor observado en el momento t.
■  T es el valor de la tendencia (comportamiento de la serie a largo plazo) en el momento t.
■  S es el valor de la estacionalidad (movimientos de oscilación dentro de un año) en el momento t.
■  I es el valor de la irregularidad (o valor aleatorio, es decir, movimientos oscilatorios de la serie alrededor de los componentes anteriores, no controlados por el modelo) en el momento t.


RETOMAMOS EL ANÁLISIS CON R
Estudiamos también si nuestros datos tenían una tendencia estacional y lo hicimos con R. Volvemos a cargar los datos con los que estuvimos trabajando y para ello, iniciaremos R y cargaremos ante
todo el paquete “timeSeries” que nos permitirá realizar los análisis que queremos. Para ello iremos a la consola de R (donde cargamos habitualmente RCommander) e iniciaremos el paquete “timeSeries” y “RCommander” escribiendo estas dos instrucciones:
library (timeSeries)
library (Rcmdr)
Una vez instalado, cargaremos el archivo “abortionsmes.csv” A estos datos les llamaremos “abortionsmes” igual que en el número anterior. Verificaremos que los datos están cargados viendo que en RCommander, en la esquina superior izquierda, aparece la etiqueta “abortionsmes”.
Lo último que hicimos y sobre lo que incidimos de nuevo es en la descomposición de nuestros datos en tres componentes: la tendencia, la estacionalidad y la componente aleatoria. Para ello escribimos en la pantalla de instrucciones de RCommander:
 abort.ts <- ts(abortionmes, frequency=12,start=c(2012,1))
Donde le decimos a R que nuestros datos “abortionsmes” son mensuales (frequency=12) y que
comienzan en el año 2012, correspondiendo el primer dato a enero de 2012 [start=c(2012, 1)].
Después escribiremos en la pantalla de comandos de RCommander la siguiente instrucción:
abort.sc <- decompose(abort.ts)
Si ahora escribimos:
abort.sc$seasonal
R nos devolverá el grupo de datos de la tabla 1.
Únicamente se ha cambiado la nomenclatura. En el número anterior lo llamábamos:
“abortimeseriescomponents”; ahora “abort.sc”
Podemos ver que el mayor factor estacional se dapara los meses de septiembre y octubre de cada año. Esto lo vimos en el número 124 de Suis con lafigura 3, página 26. Si escribimos:
plot(abort.sc)

DESESTACIONALIZACIÓN DE LOS DATOS DE LA SERIE
Lo que vamos a hacer ahora es quitar la estacionalidad a esta serie temporal.

¿Por qué?
Hemos oído y visto mucho este término en datos que ofrece el gobierno cuando habla del empleo o cuando se dan cifras macroeconómicas que tienen una periodicidad. Por ejemplo, los datos desestacionalizados del paro son los datos corregidos teniendo en cuenta que hay diferencias sistemáticas en las series de datos según el momento concreto del año. Los no desestacionalizados no llevan el ajuste correspondiente.
Siguiendo con este ejemplo, para saber si una medida del gobierno introducida en mayo tiene efecto sobre los niveles de paro, hay que eliminar el efecto estacional del verano para saber si es efectiva o no. Con nuestros datos sucederá lo mismo.

¿Cómo? R nos ayuda
Restamos la componente estacional de los datosoriginales. Para ello ejecutaremos la siguiente ins trucción en R:
plot(abort.sc)
Y tendremos los datos desestacionalizados. Lo podemos comprobar con un simple cálculo. Si tomamos el valor original de los abortos en el mes de enero de 2012 (12) y le restamos el valor del mes de enero del 2012 dado en la tabla 1 (-4,785880) el resultado es 16,785880. Ahora podemos hacer un gráfico de los datos desestacionalizados con:
plot(abort.adj)
Y si además usamos la siguiente instrucción, veremos el gráfico con los datos originales y el gráfico con los datos desestacionalizados (figura 1):
par(mfrow=c(1,2))
plot(abort.ts)
plot(abort.adj)
Ahora los datos sólo contienen la componente de tendencia y la irregular.



¿CÓMO SABEMOS SI TENEMOS UNASERIE TEMPORAL ESTACIONARIA?

En este apartado retrocedemos un poco, ya que iniciamos estos números dedicados a las series temporales y rápidamente comenzamos a trabajar con los datos de los abortos de una granja. No vimos nada acerca de cómo eran los datos y ahora que ya sabemos hacer análisis de una serie temporal introduciremos algunos conceptos necesarios. Por ejemplo, las series temporales pueden ser estacionarias o no estacionarias. ¿Cómo sabemos si tenemos una serie temporal estacionaria?

Una serie es estacionaria cuando es estable a lo largo del tiempo. Dicho matemáticamente, cuando su
media y varianza son constantes en el tiempo. Esto se refleja gráficamente en que los valores de la serie tienden a oscilar alrededor de una media constante y la variabilidad con respecto a esa media también permanece constante en el tiempo.
Por el contrario, una serie temporal es no estacionaria si la tendencia y/o la variabilidad cambian en el tiempo. Los cambios en la media determinan una tendencia a crecer o decrecer a largo plazo, por lo que la serie no oscila alrededor de un valor constante.
Evidentemente, nuestra serie original no era estacionaria y para analizarla y hacer predicciones, necesitamos que lo sea. Una de las formas más fáciles de transformar una serie no estacionaria en estacionaria es crear una nueva serie de valores de tal forma que los nuevos valores serán la diferencia del siguiente con el actual. Por ejemplo, si el dato de los abortos del mes de enero de 2012 era 12 y el de febrero 14, nuestro primer valor nuevo será 2. Y así sucesivamente. En R esto es muy fácil de realizar:

abort.ts.diff1 <- diff(abort.ts, differences=1)


Y nos genera una serie nueva de valores que si losponemos en un gráfico mediante:

plot (abort.ts.diff1)


obtenemos la figura 2. Que como vemos es muy diferente al gráfico de nuestros datos originales. En el próximo número veremos la utilidad de esta herramienta y realizaremos predicciones creando un modelo matemático al efecto.







Documento para descargar: abortionsmes.csv

Comentarios

  1. Muy interesante el artículo que, de alguna forma, invalida mi comentario anterior pues veo que se han dedicado varios artículos al análisis de series temporales. Como anécdota he tenido que acudir al diccionario de la Real Academia porque estacional y estacionario son palabras que suenan muy similar, pero tienen sentidos muy distintos. Están muy bien definidos en el texto; pero pueden dar lugar a confusiones en lectura rápida o cuando no se está familiarizado con estos conceptos. Enhorabuena por el blog!

    ResponderEliminar

Publicar un comentario

Entradas populares