AI8UC1_10

Irving Flores

13/8/2021

ANALISIS DE SERIES DE TIEMPO

Para este ejercicio usaremos datos de comida en mexico del año 2004 a 2021

library(readr)
comida <- read_csv("comida.csv")
## Rows: 214 Columns: 2
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (2): Mes, comida
## 
## 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(comida)
head(comida[ ,2])
## # A tibble: 6 x 1
##   comida
##    <dbl>
## 1     51
## 2     65
## 3     43
## 4     38
## 5     66
## 6     64

Tenemos un vector numerico llamado “comida”

Grafiquemos los datos

plot(comida)

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

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

Datos: comida 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(comida.ts)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2004  51  65  43  38  66  64  52  41  76  50  53  41
## 2005  52  51  68  51  62  51  40  34  62  55  59  45
## 2006  47  47  57  41  51  40  42  34  50  61  57  52
## 2007  46  50  43  39  38  47  34  40  49  56  55  43
## 2008  47  52  41  49  46  43  39  38  51  54  51  46
## 2009  53  51  48  41  44  40  36  37  45  55  54  42
## 2010  46  55  44  42  43  47  40  38  54  48  53  41
## 2011  47  51  46  42  43  43  38  38  45  50  50  37
## 2012  44  48  47  43  46  44  38  39  49  54  51  37
## 2013  48  49  47  56  48  49  43  45  52  56  56  47
## 2014  55  57  56  54  57  56  49  51  56  66  58  54
## 2015  59  62  58  67  61  66  54  59  65  70  65  56
## 2016  58  65  60  59  59  62  54  52  63  69  65  56
## 2017  62  68  67  64  65  67  63  59  66  73  72  62
## 2018  68  71  68  65  71  69  64  67  74  78  71  66
## 2019  70  72  78  72  72  74  69  66  76  81  74  68
## 2020  77  76  71  77  96  92 100  89  84  80  79  73
## 2021  77  83  81  78  81  79  76  72  76  78

Ahora grafiquemos con respecto al tiempo

plot(comida.ts)

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

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

boxplot(comida.ts ~ cycle(comida.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 \]

comida.ts.desc <- decompose(comida.ts)
plot(comida.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 comida.ts se observa que la serie no es estacionaria. Presenta una tendencia aparentemente lineal y una estacionalidad muy marcada. Además, la amplitud de las fluctuaciones aumenta con el tiempo por lo que la variabilidad tampoco es constante. 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: 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(comida.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(comida.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)

Las funciones de autocovarianza y autocorrelaciones

Transformamos la serie del consumo de gasolina de manera que un modelo estacionario sea apropiado para la serie transformada. El siguiente código se puede utilizar para representar el correlograma de la serie. El correlograma es una representación gráfica de las autocorrelaciones ρ(k) , es decir, las correlaciones entre xt y xt+k en función de k

y = dif12.dif1.x 
acf(y)