library(TSA)
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library(ggplot2)
library(forecast)
library(gridExtra)
library(readxl)
library(readxl)
library(urca)
library(vars)
## Loading required package: MASS
## 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: lmtest
library(zoo)
library(fpp2)
## Loading required package: fma
## 
## Attaching package: 'fma'
## The following objects are masked from 'package:MASS':
## 
##     cement, housing, petrol
## Loading required package: expsmooth
library(expsmooth)
library(readxl)
library(readxl)
Transmetro <- read_excel("~/Documents/Transmetro.xls")
View(Transmetro)
library(readxl)
Personal_Ocupado <- read_excel("~/Downloads/Personal_Ocupado.xls")
View(Personal_Ocupado)

EJERCICIO 1.

Breve descripcion de la serie elegida, asi como su frecuencia, unidad de medida, fuente, etc.

La serie temporal elegida es el Recorrido a miles de kilometros del transmetro de la Ciudad de Monterrey, con una frecuecia mensual en un periodo de diez a?os (2008-2018)

FUENTE: https://www.inegi.org.mx/sistemas/bie/

EJERCICIO 2.

Graficar los datos, analizar patrones y observaciones atipicas. Apoye su analisis con una descomposicion clasica.

km<-ts(Transmetro$Km,frequency=12,start=c(2010,03))
plot(km,col="deeppink4",ylab="Km Recorridos",xlab="A??os",lwd=.5,main="Km recorridos transmetro MTY",type="l",pch=7)

Declaracion de la serie y comportamiento original del numereo de miles de kilometros recorridos en el transmetro en la ciudad de Monterrey.

monthplot(km,col="magenta",ylab="Km Recorridos",xlab="A??os",lwd=.5,main="Km recorridos transmetro MTY",type="l",pch=7)

Se muestra el comportamiento de la serie de manera mensual, podemos decir que desde este punto la serie muestra bastante irregular.

fit<-decompose(km)
plot(fit,col="magenta4",ylab="eje y",xlab="A?os",lwd=.5,type="l",pch=9)

Revision extensa de la descomposicion clasica de la serie del numero de miles de kilometros recorridos en el transmetro en la ciudad de Monterrey.(2008-2018)

La serie muestra una tendencia creciente o positiva muy pronunciada los kilometros recorridos de el transmetro de la Cd. de Monterrey durante el a??o 2011, alcanzando ese punto maximo la tendencia ya es menor en los siguientes a??os.

En la Ultima grafica (random) podemos apreciar que las variables que construyen la serie son independientes, aleatorias e identicamente distribuidas.

EJERCICIO 3.

Si es necesario, utilizar transformacion Box-Cox / logaritmos para estabilizar la varianza

p01<-autoplot(km)
p02<-autoplot(log(km))
grid.arrange(p01,p02)

De acuerdo al grafico se observa, que la aplicacion de logaritmos no fue suficiente para estabilizar la varianza de la serie. En este caso se tiene que aplicar la diferencia de logaritmos para poder estabilizarla.

plot(km,type="l")

plot(log(km), type="l")

tasa<-na.omit((km-zlag(km))/zlag(km))
plot(diff(log(km)), type = "l")

cor(diff(log(km))[-1],tasa[-1])
## [1] 0.9838981

Al aplicar la diferencia a los logaritmos se puede observar que el comportamiento de la serie se vuelve estacionaria, aunque tiene una variacion pronunciada en los a?os en el a?o 2011 pero en general, se observar con claridad el comportamiento estacionario.

BoxCox.ar(km)
## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

BoxCox.ar(km,lambda = seq(-5,1.8,5))
## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1

El primer grafico indica el punto maximo que alcanza el 95% de nivel de confianza y el segundo grafico se comprueba al incluir los parametros.

plot(diff(log(km))^2,type="l")

Se elevo la serie al cuadrado segun la prueba Box.Cox para estabilizarla, y podemos observar que en la mayoria de los a?os esta cercanos a cero, es decir se estabiliza la varianza.

EJERCICIO 4.

Modelar la serie de tiempo elegida como funcion de una tendencia, tendencua cuadr?tca y/o medias estacionales. Presente el diagnostico del modelo elegido.

En este caso como la serie de n?mero de miles de kilometros en el trasmetro en MTY no presenta comportamiento estacional, por lo tanto no se podria aplicar diferencias estacionales.

EJERCICIO 6.

Usar prueba Dickey-Fuller para evaluar el orden de integracion de la serie. Difereniar hasta que la serie sea estacionaria.

summary(ur.df(km))
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -54.683 -10.250  -0.379  11.073 219.405 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## z.lag.1     0.003156   0.005664   0.557  0.57836   
## z.diff.lag -0.271977   0.087511  -3.108  0.00234 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 27.81 on 122 degrees of freedom
## Multiple R-squared:  0.07389,    Adjusted R-squared:  0.05871 
## F-statistic: 4.867 on 2 and 122 DF,  p-value: 0.009253
## 
## 
## Value of test-statistic is: 0.5573 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

Rechaza la hipotesis nula por lo tanto no existe raiz unitaria en la serie.

EJERCICIO 7.

Usar herramientas ACF, PACF, EACF y criterios de Akaike/ Bayes para construir propuestas de modelos.

km<- log(km)
ggtsdisplay(diff(km,12))

ggtsdisplay(diff(km,1))

EJERCICIO 7.

Como parte del diagn??stico del modelo, analizar los residuos y aplicar la prueba Ljung-Box

PROPUESTA MODELO NO.1

fit01<-Arima(km, order=c(0,0,1), seasonal=c(1,0,0))
fit01
## Series: km 
## ARIMA(0,0,1)(1,0,0)[12] with non-zero mean 
## 
## Coefficients:
##          ma1    sar1    mean
##       0.8435  0.4349  6.0011
## s.e.  0.0437  0.1552  0.0494
## 
## sigma^2 estimated as 0.02626:  log likelihood=50.21
## AIC=-92.42   AICc=-92.09   BIC=-81.08
checkresiduals(fit01)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,0,1)(1,0,0)[12] with non-zero mean
## Q* = 229.87, df = 21, p-value < 2.2e-16
## 
## Model df: 3.   Total lags used: 24

PROPUESTA MODELO NO.2

fit02<-Arima(km, order=c(0,1,0), seasonal=c(2,0,0))
fit02
## Series: km 
## ARIMA(0,1,0)(2,0,0)[12] 
## 
## Coefficients:
##         sar1    sar2
##       0.3233  0.3212
## s.e.  0.1541  0.1581
## 
## sigma^2 estimated as 0.006689:  log likelihood=133.75
## AIC=-261.49   AICc=-261.29   BIC=-253.01
checkresiduals(fit02)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,0)(2,0,0)[12]
## Q* = 17.457, df = 22, p-value = 0.7376
## 
## Model df: 2.   Total lags used: 24

PROPUESTA MODELO NO.3

fit03<-Arima(km, order=c(1,1,0), seasonal=c(1,1,0))
fit03
## Series: km 
## ARIMA(1,1,0)(1,1,0)[12] 
## 
## Coefficients:
##          ar1     sar1
##       0.0509  -0.4143
## s.e.  0.0939   0.1659
## 
## sigma^2 estimated as 0.007146:  log likelihood=118.73
## AIC=-231.47   AICc=-231.25   BIC=-223.29
checkresiduals(fit03)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(1,1,0)(1,1,0)[12]
## Q* = 19.386, df = 22, p-value = 0.6214
## 
## Model df: 2.   Total lags used: 24

Las propuestas realizadas podemos observar que la ultima opcion es probable que el modelo ARIMA sea la mejor opcion.

EJERCICIO 9.

Usar la funcion auto.arima() y compare sus resultados con el inciso anterior.

Autoarima<- auto.arima(km,stepwise=FALSE, approximation=FALSE)
Autoarima
## Series: km 
## ARIMA(0,1,0)(2,0,0)[12] 
## 
## Coefficients:
##         sar1    sar2
##       0.3233  0.3212
## s.e.  0.1541  0.1581
## 
## sigma^2 estimated as 0.006689:  log likelihood=133.75
## AIC=-261.49   AICc=-261.29   BIC=-253.01
checkresiduals(Autoarima)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,0)(2,0,0)[12]
## Q* = 17.457, df = 22, p-value = 0.7376
## 
## Model df: 2.   Total lags used: 24

Como podemos ver la propuesta del modelo autoarima coindicen en el propuesta 2, se rechaza la hipotesis nula por lo que se concluye que no hay autocorrelaci?n serial.

EJERCICIO 10.

Presente la ecuacion final y describa.

\[ Y_(t)= \Phi (0.3204)_{et-1}+ \Phi (-0.3708)_{et-2}+e_t \]

EJERCICIO 11.

Crear un promositco a dos a?os

pronostico <- plot(forecast(Autoarima,h=24))

pronostico
## $mean
##           Jan      Feb      Mar      Apr      May      Jun      Jul
## 2020                                                               
## 2021 6.098404 6.098998 6.105401 6.070767 6.103618 6.081221 6.108295
## 2022 6.091444 6.088974 6.094098 6.081756 6.091854 6.083078 6.099270
##           Aug      Sep      Oct      Nov      Dec
## 2020          6.110696 6.115676 6.100016 6.126684
## 2021 6.092104 6.094132 6.095095 6.087213 6.111626
## 2022 6.084716                                    
## 
## $lower
##               80%      95%
## Sep 2020 6.005881 5.950395
## Oct 2020 5.967445 5.888976
## Nov 2020 5.918471 5.822367
## Dec 2020 5.917054 5.806082
## Jan 2021 5.864030 5.739960
## Feb 2021 5.842254 5.706343
## Mar 2021 5.828086 5.681285
## Apr 2021 5.774305 5.617368
## May 2021 5.789172 5.622715
## Jun 2021 5.749767 5.574306
## Jul 2021 5.760663 5.576638
## Aug 2021 5.729014 5.536806
## Sep 2021 5.705454 5.499699
## Oct 2021 5.682411 5.463949
## Nov 2021 5.651845 5.421375
## Dec 2021 5.654699 5.412816
## Jan 2022 5.613931 5.361151
## Feb 2022 5.591725 5.328498
## Mar 2022 5.577868 5.304593
## Apr 2022 5.547219 5.264253
## May 2022 5.539616 5.247279
## Jun 2022 5.513689 5.212273
## Jul 2022 5.513232 5.203002
## Aug 2022 5.482489 5.163689
## 
## $upper
##               80%      95%
## Sep 2020 6.215511 6.270997
## Oct 2020 6.263907 6.342375
## Nov 2020 6.281562 6.377666
## Dec 2020 6.336314 6.447285
## Jan 2021 6.332778 6.456848
## Feb 2021 6.355741 6.491653
## Mar 2021 6.382715 6.529517
## Apr 2021 6.367229 6.524166
## May 2021 6.418063 6.584520
## Jun 2021 6.412676 6.588137
## Jul 2021 6.455928 6.639953
## Aug 2021 6.455194 6.647402
## Sep 2021 6.482811 6.688566
## Oct 2021 6.507780 6.726241
## Nov 2021 6.522581 6.753051
## Dec 2021 6.568552 6.810435
## Jan 2022 6.568958 6.821738
## Feb 2022 6.586222 6.849449
## Mar 2022 6.610327 6.883603
## Apr 2022 6.616293 6.899260
## May 2022 6.644092 6.936429
## Jun 2022 6.652467 6.953883
## Jul 2022 6.685308 6.995537
## Aug 2022 6.686943 7.005743

El pronostico muestra que la serie mantendr? un comportamiento constante por lo que es probable (95%) que en los proximos 2 a?os el n?mero de miles de kilometros recorridos por el transmetro de la ciudad de Monterrey no tendra una variacion significativa.

EJERCICIO 12.

Utilizando metodos de pronosticos simples y/o suavizamiento exponencial generar un pronostico para dos a?os. Elegir el metodo que presente la raiz del error medio al cuadrado mas pequeno.

data(Transmetro)
## Warning in data(Transmetro): data set 'Transmetro' not found
autoplot(km)+ggtitle("No. de Km ")+ylab("km")+xlab("A??os")

transmetro1 <- window(km,start=2013,end=c(2018,6))
autoplot(transmetro1) +
forecast::autolayer(meanf(transmetro1, h=24), PI=FALSE, series="Mean") +
forecast::autolayer(naive(transmetro1, h=24), PI=FALSE, series="Naive") +
forecast::autolayer(snaive(transmetro1, h=24), PI=FALSE, series="Seasonal naive") +
ggtitle("Trenes en circulacion") +
xlab("A??os") + ylab("Km") +
guides(colour=guide_legend(title="Forecast"))

transmetrofit1 <- meanf(transmetro1,h=24)
transmetrofit2 <- rwf(transmetro1,h=24)
transmetrofit3 <- snaive(transmetro1,h=24)
autoplot(window(km, start=2013)) +
forecast::autolayer(transmetrofit1, series="Mean", PI=FALSE) +
forecast::autolayer(transmetrofit2, series="Naive", PI=FALSE) +
forecast::autolayer(transmetrofit3, series="Seasonal naive", PI=FALSE) +
xlab("A??os") + ylab("Km") +
guides(colour=guide_legend(title="Forecast"))

transmetro2<- window(km, start=2013)
accuracy(transmetrofit1, transmetro2)
##                         ME       RMSE        MAE          MPE      MAPE
## Training set  1.345684e-17 0.03251850 0.02519431 -0.002825821 0.4114976
## Test set     -6.781316e-03 0.03198011 0.02411809 -0.113261822 0.3942929
##                  MASE        ACF1 Theil's U
## Training set 1.377214 -0.14612495        NA
## Test set     1.318384  0.06793086 0.7395113
accuracy(transmetrofit2, transmetro2)
##                        ME       RMSE        MAE         MPE      MAPE
## Training set  0.000959247 0.04919868 0.04028494  0.01244949 0.6575659
## Test set     -0.019201495 0.03668022 0.02909698 -0.31592331 0.4762143
##                  MASE        ACF1 Theil's U
## Training set 2.202124 -0.65957634        NA
## Test set     1.590549  0.06793086 0.8713992
accuracy(transmetrofit3, transmetro2)
##                        ME       RMSE        MAE         MPE      MAPE
## Training set  0.004798054 0.02441975 0.01829367  0.07773901 0.2984094
## Test set     -0.017659821 0.03553520 0.02566744 -0.29036533 0.4200812
##                  MASE        ACF1 Theil's U
## Training set 1.000000  0.02658292        NA
## Test set     1.403077 -0.02300447  0.848942
transmetrodata <- window(km, start=2018)
autoplot(transmetrodata)+ylab("Km") + xlab("A??os")

fc<-ses(transmetrodata,h=24)
round(accuracy(fc),2)
##              ME RMSE  MAE   MPE MAPE MASE  ACF1
## Training set  0 0.03 0.02 -0.06 0.29 0.56 -0.22
autoplot(fc) +autolayer(fitted(fc), series="Fitted") +ylab("Km") + xlab("A??os")

transmetrodata <-window(km,start=2013)
fc <- holt(km, h=24)
fc2 <- holt(transmetrodata, damped=TRUE, phi = 0.9, h=24)
autoplot(transmetrodata) +autolayer(fc, series="Holt's method", PI=FALSE) +autolayer(fc2,series="Damped Holt's method", PI=FALSE) +ggtitle("No.de Km") + xlab("A??os") +ylab("Km")+guides(colour=guide_legend(title="Forecast"))

EJERCICIO 14.

Analizar un VAR, necesita incluir los puntos siguientes:

a) Buscar otra variable (incluso mas variables) y redactar la teoria que se encuentra detras de la relacion entre variables que propone.

po<-ts(Personal_Ocupado$Personal,frequency=12,start=c(1994,11))

Existe una relacion directa entre el numero de kilometros recorridos en la ciudad MTY y el personal ocupado, que trabaja; Incluye personal administrativo de confianza adscrito a los m??dulos y oficinas centrales; as?? como operadores, obreros y t??cnicos dedicados exclusivamente al mantenimiento de las unidades. El servicio del transmetro y n??mero de kilometros recorridos para proporcionarlo, aumento en el a??o 2011 el aumento de kilometros por la inauguraci??n de la linea 2, por lo tanto en proporcion aumenta el numero de personal.

b) Evaluar la estacionalidad de la nueva variable.

autoplot(po)

ggseasonplot(po)

mes. <- season(po)
modelo1 <- lm(po ~ mes. + time(po) + I(time(po)^2))
summary(modelo1)
## 
## Call:
## lm(formula = po ~ mes. + time(po) + I(time(po)^2))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -83.714 -10.974  -0.771  15.516  55.225 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -1.006e+07  1.346e+06  -7.474 1.85e-11 ***
## mes.February  -5.316e-01  1.316e+01  -0.040    0.968    
## mes.March     -1.028e+00  1.316e+01  -0.078    0.938    
## mes.April     -1.490e+00  1.316e+01  -0.113    0.910    
## mes.May       -4.773e+00  1.350e+01  -0.354    0.724    
## mes.June      -5.374e+00  1.349e+01  -0.398    0.691    
## mes.July      -5.441e+00  1.349e+01  -0.403    0.688    
## mes.August     9.528e+00  1.349e+01   0.706    0.482    
## mes.September  9.031e+00  1.350e+01   0.669    0.505    
## mes.October    8.569e+00  1.350e+01   0.635    0.527    
## mes.November   1.168e+00  1.316e+01   0.089    0.929    
## mes.December   5.664e-01  1.316e+01   0.043    0.966    
## time(po)       1.005e+04  1.346e+03   7.469 1.90e-11 ***
## I(time(po)^2) -2.512e+00  3.365e-01  -7.464 1.94e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 30.86 on 112 degrees of freedom
## Multiple R-squared:  0.4965, Adjusted R-squared:  0.4381 
## F-statistic: 8.495 on 13 and 112 DF,  p-value: 9.403e-12

La regresi??n ser?? la que unicamente el intercepto es estadisticamente significativo pero ninguno de los meses lo es, por lo tanto la serie no es una serie que pueda ser explicada en el tiempo

Por lo que refleja no existe estacionalidad en la serie conforme a los meses. Febrero es el coeficiente m??s alto de la serie y guardan una relacion negativa con el intercepto de -.9.3% respectivamente la disminuci??n de -0.42%

c) Proponga el orden de rezagos optimo para el VAR y presentar la estimacion.

ddkm<-diff(log(km,12))
ddpo<-diff(log(po,12))

ggtsdisplay(ddkm)

ggtsdisplay(ddpo)

km2<- cbind.zoo(km = ddkm, po= ddpo)
View(km2)
autoplot(km2)
## Don't know how to automatically pick scale for object of type yearmon. Defaulting to continuous.
## Warning: Removed 250 rows containing missing values (geom_path).