I. Examen Teorico

1.¿Qué es una serie de tiempo?

Una serie de tiempo es una secuencia de observaciones en diferentes momentos del tiempo, sobre una o varias caracteríticas, ordenadas cronologicamente.

2. ¿Para qué sirve una serie de tiempo?

Las series de tiempo sirven para elaborar un modelo estadistico capaz de describir adecuadamente la procedencia de la serie. A su vez, dicho modelo tiene la capacidad de describir, predecir y constrastar su evolución.

3. Describa e identifique los componentes de una serie de tiempo

Tendencia: patrón de la serie a lo largo del tiempo.

Variacion estacional: variabilidad de la serie causada por eventos estacionales.

Variacion ciclica: variabilidad de la serie causada por eventos a largo plazo.

Variacion irregular: variabilidad de los datos causada por factores de corto plazo o de improvisto.

4. ¿Qué es una ecuación en diferencia? Describa los tipos vistos en clase y sus diferencias

Es una ecuación que relaciona dos variables distinas. En ella, se conocen los valores que toma una de las variables y se desea conocer los valores que tomará la otra variable.

Ecuaciones de primer orden: son ecuaciones en las que el grado 1.

Ecuaciones de segundo grado homogeneas: son ecuaciones en las que b es 0.

5. Defina la diferencia entre estacionariedad y estacionalidad

Una serie de tiempo posee estacionariedad cuando la media y la variabilidad de manitienen constantes. En la estacionalidad, las series de tiempo presentan los mismos cambios en un tiempo determinado.

6. Describa los componentes p, q, d del modelo ARIMA.

p es el grado del modelo AR (autorregresivo), q es el grado del modelo MA (medias moviles) y d es el numero de diferenciaciones que se realizaron a la serie de tiempo para obtener un P value menor a 0.05.

II. Examen Práctico

1. Utilizando el set de datos “auscafe” de la libreria fpp2, grafique y describa los componentes de la serie de tiempo

library(fpp2)
## Warning in register(): Can't find generic `scale_type` in package ggplot2 to
## register S3 method.
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## -- Attaching packages ---------------------------------------------- fpp2 2.4 --
## v ggplot2   3.3.5     v fma       2.4  
## v forecast  8.16      v expsmooth 2.3
## 
plot(auscafe)

plot(decompose(auscafe))

En la descomposicion de la serie de tiempo podemos observar que tiene una tendencia creciente. Por otro lado, tambien se se puede observar que ¨auscafe¨ es una serie de tiempo con variacion estacional.

2. Resuelva la siguiente ecuacion en diferencia

Se tiene una poblacion de insectos, inicialmente existian 20, cada dos años se tiene el triple de insectos que el año anterior y el doble que el año anterior a este. No se tiene registro de fuga, muertes o ingresos de insectos desde otros sectore. ¿Cuantos insectos se tendran luego de 8 años?

3. Utilizando el set de datos “a10” de la libreria fpp2, pronostique los registros para los siguientes 18 meses utilizando modelos ARIMA estacionales (SARIMA).

library(vars)
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## The following objects are masked from 'package:fma':
## 
##     cement, housing, petrol
## Loading required package: strucchange
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: sandwich
## Loading required package: urca
## Loading required package: lmtest
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble  3.1.6     v dplyr   1.0.7
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## v purrr   0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x stringr::boundary() masks strucchange::boundary()
## x dplyr::filter()     masks stats::filter()
## x dplyr::lag()        masks stats::lag()
## x dplyr::select()     masks MASS::select()
library(ggfortify)
## Registered S3 methods overwritten by 'ggfortify':
##   method                 from    
##   autoplot.Arima         forecast
##   autoplot.acf           forecast
##   autoplot.ar            forecast
##   autoplot.bats          forecast
##   autoplot.decomposed.ts forecast
##   autoplot.ets           forecast
##   autoplot.forecast      forecast
##   autoplot.stl           forecast
##   autoplot.ts            forecast
##   fitted.ar              forecast
##   fortify.ts             forecast
##   residuals.ar           forecast
library(forecast)
library(seasonal)
## 
## Attaching package: 'seasonal'
## The following object is masked from 'package:tibble':
## 
##     view
library(tseries)
library(fpp2)

set.seed(300)
a10=ts(arima.sim(list(order = c(1,1,2), ma=c(0.32,0.47), ar=0.8), n = 50)+20, start=2010, frequency = 4)
plot(a10)

plot(decompose(a10))

adf.test(a10)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  a10
## Dickey-Fuller = -0.58049, Lag order = 3, p-value = 0.975
## alternative hypothesis: stationary

El P value de la prueba de Dickey-Fuller Aumentada es de 0.975 lo que indica que la serie tiene raices unitarias, es decir, no es estacionaria. Es necesario aplicar diferencias

diff_a10<-diff(diff(a10))
plot(diff_a10)

plot(decompose(diff_a10))

adf.test(diff_a10)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff_a10
## Dickey-Fuller = -3.5551, Lag order = 3, p-value = 0.04613
## alternative hypothesis: stationary

El P value de la prueba de Dickey-Fuller Aumentada es de 0.04613 lo que indica que la serie ya no tiene raices unitarias, es decir, es estacionaria.

acf(diff_a10)

pacf(diff_a10)

Ambas graficas caen gradualmente por lo que el modelo a utilizar es ARIMA

modelo1 = arima(a10, order=c(1,2,0))
modelo2 = arima(a10, order=c(1,2,1))
modelo3 = arima(a10, order=c(1,2,2))
modelo4 = arima(a10, order=c(1,2,3))
modelo5 = arima(a10, order=c(2,2,0))
modelo6 = arima(a10, order=c(2,2,1))
modelo7 = arima(a10, order=c(2,2,2))
modelo8 = arima(a10, order=c(2,2,3))
modelo9 = arima(a10, order=c(3,2,0))
modelo10 = arima(a10, order=c(3,2,1))
modelo11 = arima(a10, order=c(3,2,2))
modelo12 = arima(a10, order=c(3,2,3))

modelo1$aic
## [1] 153.4622
modelo2$aic
## [1] 154.7564
modelo3$aic
## [1] 149.5071
modelo4$aic
## [1] 151.0614
modelo5$aic
## [1] 153.0968
modelo6$aic
## [1] 151.3842
modelo7$aic
## [1] 149.1661
modelo8$aic
## [1] 151.1476
modelo9$aic
## [1] 147.2237
modelo10$aic
## [1] 147.526
modelo11$aic
## [1] 147.644
modelo12$aic
## [1] 151.6956

El modelo 9 es el mejor modelo para utilizar porque el valor del AIC (147.2237) es el menor de todos.

checkresiduals(modelo9$residuals)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.

En la primera grafica de residuales no se observa ninguna distribucion anormal, en la segunda gráfica todos los elementos se encuentran dentro de las lineas de tolerancia y la tercera gráfica muestra una distribucion normal.

Box.test(modelo9$residuals, type="Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  modelo9$residuals
## X-squared = 0.016377, df = 1, p-value = 0.8982

El P value de la prueba Ljung Box es mayor a 0.05 lo que confirma que el modelo de residuales cumple con los supuestos necesarios.

autoplot(forecast(modelo9))

La gráfica muestra las predicciones del modelo para la siguiente etapa.