library(fpp2)
## Loading required package: ggplot2
## Loading required package: forecast
## Loading required package: fma
## Loading required package: expsmooth
library(gridExtra)
library(readxl)
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(ggfortify)
library(fma)
library(AER)
## Loading required package: car
## Loading required package: carData
## Loading required package: lmtest
## 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: survival
library(urca)
Se eligió como serie “El gasto mensual en apuestas en Victoria Australia” en el periodo de julio de 1999 a noviembre del 2006, con una frecuencia mensual, unidad de medida millones de dolares por día.
La fuente es: https://datamarket.com/data/set/22m8/monthly-gambling-expenditure-in-victoria-australia-july-1999-to-november-2006-units-are-millions-of-dollars-per-day-smoking-ban-introduced-in-gaming-venues-in-september-2002#!ds=22m8&display=line
Datos <- read.csv("juegoAustralia.csv")
st <- ts(Datos$Monthlygambling,frequency =12,start = c (1999,7))
plot(st,col="purple",ylab="Millones de dólares",xlab="Años",lwd=.5,main="Gasto Mensual de Apuestas en Victoria Australia (1999-2006)",type="l",pch=5)
fit <- decompose(st, type='additive')
autoplot(fit)+xlab("Años") + ylab("Millones de dólares") +
ggtitle("Gasto Mensual de Apuestas en Victoria Australia (1999-2006)")
## Warning: attributes are not identical across measure variables;
## they will be dropped
## Warning: Removed 24 rows containing missing values (geom_path).
ggseasonplot(st,ylab="Millones de dólares",xlab="Años")
ggseasonplot(st, polar=TRUE)
Se puede observar que no hay componente estacional, esto se refleja en las dos gráficas anteriores, ya que no hay una super posición en los datos de la serie anual.
plot((st^0.7-1)/0.7)
plot(diff(sqrt(st)))
bo<-BoxCox.ar(st)
## Warning in arima0(x, order = c(i, 0L, 0L), include.mean = demean): possible
## convergence problem: optim gave code = 1
Aplicando la función Box-Cox, obtenemos que el intervalo a 95% para \(\lambda\) contiene el valor de \(\lambda=0.7\) lo cual sugiere una trasformación \(g(x)=\frac{x^{0.7}-1}{0.7}\) Al aplicar la transformación y la diferencia se obtiene la serie estacionaria.
5.Usar prueba Dickey-Fuller para evaluar el orden de integración de la serie. Diferenciar hasta que la serie sea estacionaria.
ur.df(st)
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: -1.2715
DF<-diff((st^0.7-1)/0.7)
par(mfrow=c(1,2))
acf(DF,main="Funcion de Autocorrelación",lag(500))
pacf(DF,main="Función de Autocorrelación parcial",lag(500))
eacf(DF)
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 o o o o o o o o o o o o o o
## 1 o o o o o o o o o o o x o o
## 2 x o o o o o o o o o o o o o
## 3 x o o o o o o o o o o x o o
## 4 x x x o o o o o o o o x o o
## 5 x x o x o o o o o o o x o o
## 6 x x o x o o o o o o o x o o
## 7 o x x o o o o o o o o o o o
De acuerdo a los resultados mostrados por la funciones: ACF, PACF Y EAPCF, el modelo que nos sugiere usar es un modelo ARMA (1,0,1).
Aplicando los criterios de Akaike/Bayes para determinar que modelo usar.
residuo<- armasubsets(y=DF,nar=14,nma=14,ar.method = "ols")
## Warning in leaps.setup(x, y, wt = wt, nbest = nbest, nvmax = nvmax,
## force.in = force.in, : 13 linear dependencies found
## Reordering variables and trying again:
plot(residuo)
#Ejercicio 7
modelo1<-arima(DF,order = c(1,0,1))
tsdiag(modelo1)
checkresiduals(modelo1)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,0,1) with non-zero mean
## Q* = 26.071, df = 15.4, p-value = 0.0431
##
## Model df: 3. Total lags used: 18.4
modelo2<-arima(DF,order = c(1,1,1))
tsdiag(modelo2)
checkresiduals(modelo2)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,1,1)
## Q* = 27.754, df = 16.4, p-value = 0.03901
##
## Model df: 2. Total lags used: 18.4
Los modelos propuestos pasan la prueba de Ljung Box lo que indica que son adecuados para describir la serie
autST<-auto.arima(DF)
La funcion auto.arima() sugiere un modelo arma(1,0,0) que era lo que se habia encontrado en el inciso anterior #Ejercicio 9
pronostico<-forecast(autST,24)
plot(pronostico)