2 Análisis descriptivo de una serie temporal
Florence Nightingale (1820-1910) Estadística británica. Fue la primera mujer en ser miembro de la Royal Statistical Society en 1858. Fue pionera en el uso de gráficos circulares. Nightingale realizó un estudio estadístico completo sobre el saneamiento en la vida rural de la India y fue la figura principal en la introducción de una mejor atención médica y servicios de salud pública en la India. Fue pionera en estadística médica e influyó en Francis Galton y Karl Pearson. |
2.2 Manipulando ts
en R
- Abrir
IPCEcuador.csv
- Se puede ver una inflación variable
uu <- "https://raw.githubusercontent.com/vmoprojs/DataLectures/master/IPCEcuador.csv"
datos <- read.csv(url(uu),header=T,dec=".",sep=",")
IPC <- ts(datos$IPC,start=c(2005,1),freq=12)
plot(IPC)
La serie tiene tendencia creciente. Tratemos de quitar esa tendencia:
Se ha estabilizado, pero podemos hacerlo aún más con el logaritmo de la diferencia:
La serie no tiene tendencia y es estable. Ahora, si deseo trabajar con un subconjunto de datos, puedo…
# Solo quiero trabajar con los datos de agosto 2008
IPC2 <- window(IPC,start=c(2008,8),freq=1)
plot(IPC2)
# IPC de todos los diciembres
IPC.dic <- window(IPC,start=c(2005,12),freq=T)
plot(IPC.dic)
points(IPC.dic)
Si tengo mensuales y necesito trabajar con el IPC anual:
## Time Series:
## Start = 2005
## End = 2012
## Frequency = 1
## [1] 1213.09 1241.75 1262.13 1349.24 1399.26 1435.96 1491.87 1542.53
A continuación algunas transformaciones frecuentes y su interpretación:
Transformación | Interpretación |
---|---|
\(z_t=\nabla y_t=y_t-y_{t-1}\) | Cambio en \(y_t\). Es un indicador de crecimiento absoluto. |
\(z_t=ln(y_t)-ln(y_{t-1})\approx \frac{y_t-y_{t-1}}{y_{t-1}}\) | Es la tasa logarítmica de variación de una variable. Es un indicador de crecimiento relativo. Si se multiplica por 100 es la tasa de crecimiento porcentual de la variable |
\(z_t=\nabla[ln(y_t)-ln(y_{t-1})]\) | Es el cambio en la tasa logarítmica de variación de una variable. Es un indicador de la aceleración de la tasa de crecimiento relativo de una variable. |
Ejemplo
Veamos un gráfico más interesante usando un conjunto de datos anterior, vamos a:
- Abrir la base
estadísticas Turismo.csv
- Agregar de manera mensual
- Convertir a
ts
y graficar
uu <- "https://raw.githubusercontent.com/vmoprojs/DataLectures/master/estadisticas%20Turismo.csv"
datos <- read.csv(url(uu),header=T,dec=".",sep=";")
# Visitas a Areas Naturales Protegidas
# Sumar por mes y año
mensual <- aggregate(datos$TOTALMENSUAL,by=list(datos$mesnum,datos$Year),FUN="sum") # Los datos sin mes es el total de ese anio
TOTALmensual <- ts(mensual[,3],start=c(2006,1),freq=12)
plot(TOTALmensual)
Se ve una tendencia creciente y también una cierta estacionalidad. Veamos la misma serie en gráficos más atractivos:
2.3 Descomposición de una serie de tiempo
Componentes
- Tendencia-ciclo: representa los cambios de largo plazo en el nivel de la serie de tiempo
- Estacionalidad: Caracteriza fluctuaciones periódicas de longitud constante causadas por factores tales como temperatura, estación del año, periodo vacacional, políticas, etc.
\[ Y_t = f(S_t,T_t,E_t) \] donde \(Y_t\) es la serie observada, \(S_t\) es el componente estacional, \(T_t\) es la tendencia y \(E_t\) es el término de error.
La forma de \(f\) en la ecuación anterior determina tipos de descomposiciones:
Descomposición | Expresión |
---|---|
Aditiva | \(Y_t = S_t +T_t+E_t\) |
Multiplicativa | \(Y_t = S_t *T_t*E_t\) |
Transformación logaritmica | \(log(Y_t) = log(S_t) +log(T_t)+log(E_t)\) |
Ajuste estacional | \(Y_t - S_t =T_t+E_t\) |
Ejemplo
Dentro de visitas.decompuesta
tenemos los siguientes elementos:
$x
= serie original$seasonal
= componente estacional de los datos EJ: en marzo hay un decremento de 2502 (para cada dato)$trend
= tendencia$random
= visitas no explicadas por la tendencia o la estacionalidad$figure
= estacionalidad (mismo queseasonal
pero sin repetición)
2.3.1 Descomposición: ¿aditiva o multiplicativa?
Visualmente:
- Aditivo:
- las fluctuaciones estacionales lucen aproximadamente constantes en tamaño con el tiempo y
- no parecen depender del nivel de la serie temporal,
- y las fluctuaciones aleatorias también parecen ser más o menos constantes en tamaño a lo largo del tiempo
- Multiplicativo:
- Si el efecto estacional tiende a aumentar a medida que aumenta la tendencia
- la varianza de la serie original y la tendencia aumentan con el tiempo.
Forma alternativa de elegir: ver cuál es la que tiene un componente aleatorio menor.
Ejemplo
Los datos en el archivo wine.dat
son ventas mensuales de vino australiano por categoría, en miles de litros, desde enero de 1980 hasta julio de 1995. Las categorías son blanco fortificado (fortw
), blanco seco (dryw
), blanco dulce (sweetw
), rojo (red
), rosa (rose
) y espumoso (spark
).
direccion <- "https://raw.githubusercontent.com/dallascard/Introductory_Time_Series_with_R_datasets/master/wine.dat"
wine <- read.csv(direccion,header=T,sep="")
dulce <- ts(wine$sweetw,start=c(1980,12), freq=12)
plot(dulce)
Tratemos la serie como un caso aditivo:
En funcion del gráfico de la variable, se decide el type de la descomposición La estacionalidad tiene valores negativos porque se plantea respecto de la tendencia
a <- dulce.descompuesta$trend[27] # La tendencia era de 130 en mayo del 82
b <- dulce.descompuesta$seasonal[27] # El componente de la estacionalidad era este
c <- dulce.descompuesta$random[27] # Es el componente aleatorio
a+b+c # La sumatoria de la descomposicion de la serie da el valor real, si es aditiva
## [1] 127
Veamos el caso multiplicativo:
# Multiplicativa
dulce.descompuesta1<-decompose(dulce, type="multiplicative")
plot(dulce.descompuesta1)
a <- dulce.descompuesta1$trend[27] # La tendencia era de 130 en mayo del 82
b <- dulce.descompuesta1$seasonal[27] # El componente de la estacionalidad era este
c <- dulce.descompuesta1$random[27] # Es el componente aleatorio
a*b*c # La sumatoria de la descomposicion de la serie da el valor real, si es aditiva
## [1] 127
Veamos la forma alternativa de elección:
u1 <- var(dulce.descompuesta$random,na.rm=T)
u2 <- var(dulce.descompuesta1$random,na.rm=T)
cbind(u1,u2)
## u1 u2
## [1,] 1970.235 0.02247602
Se escoge la multiplicativa en este caso.
2.3.2 Detrend:
Las series se ofrecen generalmente sin tendencia ni estacionalidad. Veamos la serie sin tendencia:
Parece ser que hay un cambio en la varianza desde el 85.
Si descomponemos multiplicativamente en vez de restar se debe dividir.
Existen formas de descomponer más sofisticadas, por ejemplo, usando la función stl
.
En este caso el cálculo de la tendencia cambia, se calcula con formas no paramétricas. La barra del final es la desviación estándar.
2.4 Suavizamiento: Holt-Winters
El método se resume en las fórmulas siguientes:
\[\begin{eqnarray} a_{t} &=& \alpha(x_{t}-s_{t-p})+(1-\alpha)(a_{t-1}+b_{t-1}) \nonumber \\ b_{t} &=& \beta(a_{t}-a_{t-1})+(1-\beta)b_{t-1} \nonumber \\ s_{t} &=& \gamma(x_{t}-a_{t})+(1-\gamma)s_{t-p} \nonumber \end{eqnarray}\]
donde
- \(0\leq\alpha\leq1\) es el factor de suavizamiento de los datos,
- \(0\leq\beta\leq1\) es el factor de suavizamiento de la tendencia,
- \(0\leq\gamma\leq1\) es el factor de suavizamiento del cambio estacional.
Con \(x_0 = a_0\), la predicción se define como
\[ F_{t+m} = a_t+mb_t+c_{t-L+1+((m+1)\mod L)} \]
El método de Holt-Winters generaliza el método de suavizamiento exponencial.
Ejemplo
Veamos un modelo más sencillo:
\[\begin{eqnarray} x_{t} &=& \mu_{t}+w_{t} \nonumber \\ \mu_{t}=a_{t}&=& \alpha x_{t} + (1-\alpha) a_{t-1} \nonumber \end{eqnarray}\]
donde \(x_0 = a_0\)
Es un suavizamiento HW sin tendencia y sin componente estacional.
La serie roja son los datos con suavizamiento exponencial y la negra son los observados. R
buscó el alpha que le pareció apropiado.
Usemos un alpha deliberado:
¿Qué pasó con los errores?
## [1] 963408.2
## [1] 1132577
Es decir, el criterio para la busqueda de los parámetros es la minimización del SSE.
Ejemplo
Total mensual de pasajeros (en miles) de líneas aéreas internacionales, de 1949 a 1960.
## Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 135 148 148 136 119 ...
Se aprecia tendencia y variabilidad. Podemos usar HW para predicción: