ANALISIS DE SERIES DE TIEMPO

Para este ejercicio usaremos datos de busquedas de “licuado” en mexico del año 2004 a 2021

library(readr)
licuado <- read_csv("licuado.csv")
## Rows: 214 Columns: 2
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (2): Mes, licuado
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(licuado)
head(licuado[ ,2])
## # A tibble: 6 x 1
##   licuado
##     <dbl>
## 1      51
## 2       0
## 3      37
## 4      32
## 5      13
## 6      13

Tenemos un vector numerico llamado “licuado”

Grafiquemos los datos

plot(licuado)

Ahora transformaremos este vector numerico a un objeto de serie de tiempo

licuado.ts <- ts(licuado[, 2], start = c(2004,1), frequency = 12)

Datos: “licuado” Empieza la serie de tiempo (start): 2004 Cada año se compone de un ciclo de 12 meses: frequency = 12

Ahora vemos los datos que ya son una serie d tiempo

print(licuado.ts)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2004  51   0  37  32  13  13  30  12  19  10   0   0
## 2005   9   0  17  16  22   0   0   7   0  27  11  20
## 2006   5  11   4  10  13  14   5  12  11   3  14  12
## 2007   7  10   8  25  14  23  15  20  12  13  15   5
## 2008  15  11  15  23  17  19  18  12  18  21  11  11
## 2009  12  19  18  24  16  22  23  20  12  11   9  13
## 2010  18  16  22  20  32  25  32  16  25  15  20  18
## 2011  25  25  26  32  27  22  26  24  22  19  21  16
## 2012  27  21  26  25  35  32  31  31  23  26  20  25
## 2013  30  42  33  40  47  37  40  38  35  34  38  28
## 2014  46  55  53  45  56  53  57  55  47  49  47  33
## 2015  66  67  61  65  64  67  68  59  59  55  51  46
## 2016  64  62  67  68  65  71  66  46  52  50  50  44
## 2017  51  76  70  63  62  66  66  64  49  53  59  38
## 2018  67  72  68  73  70  68  71  72  56  55  47  40
## 2019  71  69  80  74  71  71  69  66  56  57  61  46
## 2020  66  70  68  82  89 100  85  83  63  66  67  49
## 2021  77  90  90  89  75  78  69  71  71  70

Ahora grafiquemos con respecto al tiempo

plot(licuado.ts)

Ahora para hacer una comparacion entre los meses de cada año todos los eneros por ejemplo seran una poblacion buscando “licuado”

esto lo haremos a traves de un grafico de caja y bigote

boxplot(licuado.ts ~ cycle(licuado.ts))

DECOMPOSICION DE SERIES DE TIEMPO

En este modelo, la serie observada es el resultado de sumar una tendencia que representa el comportamiento a largo plazo de la serie, un efecto estacional que describe sus fluctuaciones periódicas y un componente residual que describe las variaciones a corto plazo, normalmente impredecibles.

Con R es muy sencillo obtener una descomposición estructural de este tipo. Se usa el comando decompose:

$$

serie observada = Tendencia + efecto estacional + residuos

$$

licuado.ts.desc <- decompose(licuado.ts)
plot(licuado.ts.desc, xlab="year")

Esta descomposición se basa en métodos elementales:

  • la tendencia se calcula con una media móvil,

  • el efecto estacional se calcula promediando los valores de cada unidad de tiempo para todos los periodos (por ejemplo, todos los meses de enero si la serie es mensual) y luego centrando el resultado. Finalmente,

  • los residuos se obtienen restando a la serie observada las dos componentes anteriores.

La descomposicion solo es totalmente adecuada si se dispone de un número completo de periodos (por ejemplo, un múltiplo de 12 si la serie es mensual).

TRANSFORMACIONES BASICAS DE UNA SERIE

En el gráfico de licuado.ts se observa que la serie no es estacionaria ya que el consumo va en aumento con el tiempo por lo que la variabilidad tampoco es constante.. La serie presenta una tendencia aparentemente lineal y una estacionalidad muy marcada. Sin embargo, muchos modelos importantes de series temporales corresponden a series estacionarias (es decir, sin tendencia ni estacionalidad y con variabilidad constante). Antes de ajustar un modelo estacionario tenemos que transformar la serie original.

Estabilización de la varianza: Para estabilizar la variabilidad se suelen tomar logaritmos. Esta transformación funcionará bien cuando la variabilidad sea aproximadamente proporcional al nivel de la serie. Representamos la serie transformada mediante

plot(log(licuado.ts))

Eliminacion de la tendencia: Una forma sencilla de eliminar una tendencia aproximadamente lineal es diferenciar la serie, es decir, considerar la serie de diferencias entre una observación y la anterior en lugar de la serie original. Si xt es una serie contenida en x, para calcular:

\[ \nabla x_t = x_t -x_{t-1} \]

x <- log(licuado.ts)
dif1.x <- diff(x)
plot(dif1.x)

Eliminación de estacionalidad: Para eliminar la estacionalidad de una serie mensual se pueden tomar diferencias estacionales de orden 12. Si xt es la serie que queremos desestacionalizar, se trata de calcular:

\[ \nabla_{12} x_t = x_t - x_{t-12} \]

dif12.dif1.x <- diff(dif1.x, lag=12)
plot(dif12.dif1.x)