Para este ejercicio usaremos datos de las busquedas de año nuevo en el periodo de 2004-2020. Estos datos se encuentran disponibles en: https://trends.google.es/trends/explore?q=%2Fm%2F02vx4,%2Fm%2F0jm_&date=all&geo=US
library(readr)
añonuevo <- read_csv("añonuevo.csv")
## New names:
## * `` -> ...2
## Rows: 216 Columns: 2
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (2): CategorÃa: Todas las categorÃas, ...2
##
## 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.
#gas <- scan("http://verso.mat.uam.es/~joser.berrendero/datos/gas6677.dat")
head(añonuevo[, 2])
## # A tibble: 6 x 1
## ...2
## <chr>
## 1 <NA>
## 2 año nuevo: (México)
## 3 18
## 4 1
## 5 0
## 6 1
tenemos un vector numerico llamado “geomap”
Grafiquemos los datos
plot(añonuevo[, 2])
## Warning in xy.coords(x, y, xlabel, ylabel, log): NAs introducidos por coerción
Ahora transformaremos este vector numerico a un objeto de serie de tiempo
añonuevo.ts <- ts(añonuevo[, 2], start = c(2004,1), frequency = 12 )
datos: (añonuevo[, 1]) empieza la serie de tiempo (start): enero de 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(añonuevo.ts)
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2004 NA 37 5 3 2 3 2 2 3 2 3 3
## 2005 27 22 6 7 3 3 7 3 2 3 11 13
## 2006 21 26 8 7 3 3 3 3 7 3 7 7
## 2007 11 23 5 17 3 3 3 3 3 3 11 7
## 2008 21 23 9 13 3 3 3 3 1 3 7 11
## 2009 13 24 10 7 3 3 3 3 3 3 7 7
## 2010 17 31 9 17 3 3 3 7 3 3 11 7
## 2011 13 33 12 21 7 7 3 3 3 3 7 7
## 2012 13 36 14 11 7 3 3 3 3 3 7 7
## 2013 17 29 12 13 7 3 3 3 3 3 7 7
## 2014 13 35 15 11 7 3 3 3 3 3 7 7
## 2015 17 34 16 17 3 3 3 3 3 3 7 7
## 2016 17 4 22 13 7 7 3 3 3 3 7 11
## 2017 17 33 20 7 3 3 3 3 3 3 7 7
## 2018 17 32 19 27 3 7 3 3 3 7 11 7
## 2019 21 28 18 21 3 3 3 3 3 3 11 11
## 2020 17 25 30 11 7 7 7 7 3 3 7 11
## 2021 17 24 34 27 7 7 7 7 7 7 7 7
Ahora grafiquemos con respecto al tiempo
plot(añonuevo.ts)
Ahora para hacer una comparacion entre los meses de cada anio todos los eneros por ejemplo seran una poblacion
esto lo haremos a traves de un grafico de caja y bigote
boxplot(añonuevo.ts ~ cycle(añonuevo.ts))
Componentes estructurales de una serie de tiempo: Serie observada = Tendencia + Efecto Estacional + Residuos 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 \]
añonuevo.ts.desc <- decompose(añonuevo.ts)
plot(añonuevo.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)
En el gráfico de NEWYEAR.ts se observa que la serie no es estacionaria. La serie presenta una tendencia aparentemente lineal y una estacionalidad muy marcada (las busquedas aumentan en el mes de diciembre). 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: 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(añonuevo.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:
\[ ∇xt=xt−xt−1 \]
x <- log(añonuevo.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:
\[ ∇12xt=xt−xt−12 \]
dif12.dif1.x <- diff(dif1.x, lag=12)
plot(dif12.dif1.x)