SERIES DE TIEMPO UNIVARIADAS
objetivo: Aprender y aplicar métodos estadísticos para el análisis de los datos que se han observado a lo largo del tiempo.
Desafío dar cuenta de la correlación entre las mediciones que están cerca en el tiempo. Los temas cubiertos en este curso incluyen métodos para:
Modelado de datos de series temporales univariantes con modelos autorregresivos y de media móvil (denominados modelos ARIMA, a veces llamados modelos Box Jenkins).
Herramientas para la identificación del modelo, la estimación del modelo y la evaluación de la idoneidad del modelo.
Usar un modelo para pronosticar y determinar intervalos de predicción para pronósticos.
Series de tiempo
La metodología de es una herramienta estadística que pretende estudiar un mismo fenómeno cuantitativo a través del tiempo con la finalidad de poder obtener pronósticos de forma asertiva.
Esta metodología se utiliza ampliamente en los negocios, las ciencias sociales, las ciencias biológicas, y en muchas otras disciplinas.
Definición:
Una serie de tiempo es un conjunto de observaciones sobre algún fenómeno que está indexado por el tiempo. Más formalmente, dada una sucesión de variables aleatorias \(Y_1, \cdots, Y_t\) se consideran sus respectivas realizaciones \(y_1,\cdots, y_t\). Considerando \(\{Y(\omega, t)\mid t \in \mathbb{N}\}\), siendo \(t\) la dimensión temporal y \(\omega\) el elemento de aleatoriedad. Se tienen los escenarios siguientes:
- \(\omega\) y \(t\) varían, tenemos un proceso estocástico (Serie de tiempo).
- \(\omega\) fijo y \(t\) variando, tenemos una serie de tiempo.
- \(\omega\) variando y \(t\) fijo, tenemos una Variable aleatoria.
- \(\omega\) y \(t\) fijos, tenemos un número.
Objetivos básicos del análisis
El objetivo básico generalmente es determinar un modelo que describa el patrón de las series de tiempo. Los usos para tal modelo son:
- Describir las características importantes del patrón de series de tiempo.
- Explicar cómo el pasado afecta el futuro o cómo dos series temporales pueden “interactuar”.
- Para pronosticar valores futuros de la serie.
- Posiblemente sirva como un estándar de control para una variable que mide la calidad del producto en algunas situaciones de fabricación.
Nilo
autoplot(Nile,ts.colour = "red")+
ggtitle("Volumen Anual del Rio Nilo")+
xlab("Tiempo")+
ylab("Volumen \n (1X10^9 m^3)")g<-autoplot(Nile,ts.colour = "red")+
ggtitle("Volumen Anual del Rio Nilo")+
xlab("Año")+
ylab("Volumen \n (1X10^9 m^3)")
ggplotly(g)## [1] "ts"
Supuestos para la toma de datos en series temporales
- Observaciones consecutivas están igualmente espaciadas
- Aplicar un índice de observación en el tiempo discreto
- Lo anterior tal vez sólo pueda lograrse de forma aproximada
Componentes de una serie temporal
Componente tendencia. Se puede definir como un cambio a largo plazo que se produce en la relación al nivel medio, o el cambio a largo plazo de la media. La tendencia se identifica con un movimiento suave de la serie a largo plazo
Componente estacional Muchas series temporales presentan cierta periodicidad o dicho de otro modo, variación de cierto período (semestral, mensual, etc.)
Componente aleatoria: Esta componente no responde a ningún patrón de comportamiento, sino que es el resultado de factores fortuitos o aleatorios que inciden de forma aislada en una serie de tiempo
\[X_{t}=T_{t}+E_{t}+I_{t}\]
donde:
- \(T_{t}\): es la tendencia
- \(E_{t}\): es la componente estacional
- \(I_{t}\): es la componente aleatoria.
Algunos Comandos en R
Para que R trate a un conjunto de datos como serie de tiempo:
ts(data, start, end, frequency)
- data: vector o matrix con las observaciones
- start: tiempo de la primera observación
- end: tiempo de la última observación
- frequency: número de observaciones por unidad de tiempoConocer el tiempo de comienzo o inicio de la serie:
Conocer el tiempo de fin de la serie:
Conocer la frecuencia de la serie:
Representación gráfica de la serie:
Representación numérica de la serie:
Unidad de tiempo a la que pertenece cada observación de la serie:
Obtener un subconjunto de la serie teporal (puede ser interesante por ejemplo para pintar un año y ver si presenta componente estacional):
window(serie temporal, start, end)
- start: tiempo de la primera observación
- end: tiempo de la última observaciónExtraer las subseries estacionales de la serie y pintarlas todas juntas (es interesante para ver la componente estacional)(lo ideal es usarlas sin la componente tendecia):
boxplot(formula, serie temporal)
- formula: fórmula que indica la serie temporal y su división en ciclos (es decir, a que estación o ciclo corresponde cada muestra)Agregación de los datos de la serie temporal (puede ser interesante por ejemplo para cambiar la frecuencia de anual a trimestral)(siempre que los datos sean agregables):
aggregate(serie temporal, FUN, nfrequency)
-FUN: función con la que se computa la agregación (mean)
-nfrequency: nuevo número de observaciones por unidad de tiempo (12->mensual, 4->trimestral, 1->anual...)##
## Attaching package: 'rio'
## The following object is masked from 'package:plotly':
##
## export
df=rio::import("https://github.com/Wilsonsr/Series-de-Tiempo/raw/main/bases/IPC.xlsx")
#df <- read_excel("IPC.xlsx")
IPC=ts(df[,2], start = c(2000,1), frequency = 12)
plot(IPC)library(readr)
#amazon=read_csv("AMZN.csv")
amazon=rio::import("https://github.com/Wilsonsr/Series-de-Tiempo/raw/main/bases/AMZN.csv")
amazon=ts(amazon[,5], start=c(1997,06,01), frequency = 12)
hchart(amazon)## Warning: Deprecated function. Use the `create_axis` function.
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
Observamos la clase de la variable AP class(AP)
## [1] "ts"
- Año y mes de inicio de la serie:
start(AP)
## [1] 1949 1
- Año y mes de finalización de la serie:
end(AP)
## [1] 1960 12
- Frecuencia de la serie:
frequency(AP)
## [1] 12
- Resumen:
summary(AP)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 104.0 180.0 265.5 280.3 360.5 622.0
- Gráfico básico de la serie
## Time Series:
## Start = 1949
## End = 1960
## Frequency = 1
## [1] 1520 1676 2042 2364 2700 2867 3408 3939 4421 4572 5140 5714
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 1 2 3 4 5 6 7 8 9 10 11 12
## 1950 1 2 3 4 5 6 7 8 9 10 11 12
## 1951 1 2 3 4 5 6 7 8 9 10 11 12
## 1952 1 2 3 4 5 6 7 8 9 10 11 12
## 1953 1 2 3 4 5 6 7 8 9 10 11 12
## 1954 1 2 3 4 5 6 7 8 9 10 11 12
## 1955 1 2 3 4 5 6 7 8 9 10 11 12
## 1956 1 2 3 4 5 6 7 8 9 10 11 12
## 1957 1 2 3 4 5 6 7 8 9 10 11 12
## 1958 1 2 3 4 5 6 7 8 9 10 11 12
## 1959 1 2 3 4 5 6 7 8 9 10 11 12
## 1960 1 2 3 4 5 6 7 8 9 10 11 12
oilfilters
library(readr)
#oilfilters <- read_csv("oilfilters.dat")
oilfilters=rio::import("https://github.com/Wilsonsr/Series-de-Tiempo/raw/main/bases/oilfilters.dat", format = ",")
oilfilters <-ts(oilfilters, start=1984, end= c(1987,7), frequency = 12 )
autoplot(oilfilters, colour = "red")Tempdub
Temperatura promedio mensual (en grados Fahrenheit) registrada en Dubuque 1/1964 - 12/1975
#tempdub <- read_csv("tempdub.dat")
tempdub=rio::import("https://github.com/Wilsonsr/Series-de-Tiempo/raw/main/bases/tempdub.dat", format=",")
tempdub<-ts(tempdub, start=1964,end= 1976,frequency = 12)
plot(tempdub)Estacionaria (descriptiva)
una serie es estacionaria cuando es estable a lo largo del tiempo, es decir, cuando la 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.
No estacionarias.- Son series en las cuales la tendencia y/o variabilidad cambian en el tiempo.
Eliminación de 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 \(x_t\) es una serie contenida en \(x\), para calcular \(∇x_t=x_t−x_{t−1}\) con R se escribe:
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 6 14 -3 -8 14 13 0 -12 -17 -15 14
## 1950 -3 11 15 -6 -10 24 21 0 -12 -25 -19 26
## 1951 5 5 28 -15 9 6 21 0 -15 -22 -16 20
## 1952 5 9 13 -12 2 35 12 12 -33 -18 -19 22
## 1953 2 0 40 -1 -6 14 21 8 -35 -26 -31 21
## 1954 3 -16 47 -8 7 30 38 -9 -34 -30 -26 26
## 1955 13 -9 34 2 1 45 49 -17 -35 -38 -37 41
## 1956 6 -7 40 -4 5 56 39 -8 -50 -49 -35 35
## 1957 9 -14 55 -8 7 67 43 2 -63 -57 -42 31
## 1958 4 -22 44 -14 15 72 56 14 -101 -45 -49 27
## 1959 23 -18 64 -10 24 52 76 11 -96 -56 -45 43
## 1960 12 -26 28 42 11 63 87 -16 -98 -47 -71 42
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1950 3 8 9 6 4 14 22 22 22 14 10 22
## 1951 30 24 37 28 47 29 29 29 26 29 32 26
## 1952 26 30 15 18 11 40 31 43 25 29 26 28
## 1953 25 16 43 54 46 25 34 30 28 20 8 7
## 1954 8 -8 -1 -8 5 21 38 21 22 18 23 28
## 1955 38 45 32 42 36 51 62 54 53 45 34 49
## 1956 42 44 50 44 48 59 49 58 43 32 34 28
## 1957 31 24 39 35 37 48 52 62 49 41 34 30
## 1958 25 17 6 0 8 13 26 38 0 12 5 1
## 1959 20 24 44 48 57 37 57 54 59 48 52 68
## 1960 57 49 13 65 52 63 74 47 45 54 28 27