Actividad - Sesion 05

library(tidyverse)
library(forecast)
library(quantmod)
library(AER)
library(MASS)
library(tseries)
library(stats)
library(car)
library(lmtest)
library(urca)
library(aTSA)

Primera Serie

En el siguiente chunk de código utiliza el comando ‘arima.sim’ para simular 700 observaciones de un proceso \(ARIMA(2,0,2)\) donde \(\alpha_1 = 0.273\), \(\alpha_2 = -0.774\) y \(\beta_1 = 0.835\), \(\beta_2 = -0.182\). Genera su respectiva gráfica.

set.seed(123)
datos <- arima.sim(model = list(ar = c(0.273, -0.774), ma = c(0.835, -0.182)), n = 700)
plot(datos, main = "Proceso ARIMA(2,0,2)")

En el siguiente chunk ajusta un modelo \(ARIMA(1,0,1)\) y debajo escribe tus comentarios respecto a la comparación de los valores de los coeficientes estimados con el valor real utilizado para generar esta serie de tiempo previamente.

?arima.sim
?arima
set.seed(20220530)
Y <- arima.sim(n = 365*3, list(ar = c(1.15, -0.72), ma = 0.93))

plot(Y)

modelo_1 <- arima(Y, order = c(2, 0, 1))
coef(modelo_1)
##        ar1        ar2        ma1  intercept 
##  1.1492428 -0.7219114  0.9467727 -0.2726111
modelo_1.preds <- predict(modelo_1,n.ahead=30)

Y.ts <- ts(Y, start = 2020, freq = 365)
Y.pred <- ts(modelo_1.preds$pred,start=2023, freq=365)
ts.plot(cbind(Y.ts, Y.pred), lty = 1:2)

Ahora busca ajustar un modelo \(ARIMA(2,0,2)\) y debajo escribe tus comentarios respecto a la comparación de los valores de los coeficientes estimados con el valor real utilizado para generar esta serie de tiempo previamente. De ser posible, piensa en que comando visto en clase se podría utilizar, para evitar el error cometido en el ajuste anterior (\(ARIMA(1,0,1)\)) al proceso originalmente simulado.

set.seed(123)

# Definir los coeficientes verdaderos
ar.coef <- c(0.273, -0.774)
ma.coef <- c(0.835, -0.182)

# Simular el proceso 
sim <- arima.sim(n = 700, list(ar = ar.coef, ma = ma.coef))

# Ajustar el modelo 
fit <- arima(sim, order = c(2,0,2))

# Imprimir los coeficientes estimados
fit$coef
##         ar1         ar2         ma1         ma2   intercept 
##  0.28186798 -0.77995998  0.74518539 -0.23594755  0.01183795
# Comentarios. Podemos ver que hay una buena correspondencia, ya que los valores estimados están cerca de los verdaderos

Segunda Serie

Ahora utiliza el siguiente chunk de código para simular 1200 observaciones de un proceso \(ARIMA(1,1,1)\) donde \(\alpha_1 = -0.88\) y \(\beta_1 = 0.185\) y generar su respectiva gráfica. Para considerar que el modelo ARMA se aplica a un proceso \(I(1)\) es necesario incluir el parámetro ‘order=c(1,1,1)’ dentro de la lista que incluye los valores de los coeficientes.

set.seed(10)
n <- 1000
set.seed(3005)
WN <- rnorm(n,0,10)
RW <- diffinv(WN,xi=0)

plot(RW, type = "l", main="Caminata Aleatoria")

AR_1 <- ar(RW, method = "ols")
AR_1$order # identificar el orden del modelo autoregresivo (parámetro p)
## [1] 1
AR_1$ar # estimar los valores de los coeficientes
## , , 1
## 
##           [,1]
## [1,] 0.9894564
AR_1$var.pred # estimación de la varianza del Ruido Blanco que no se explica por el modelo
## [1] 100.361

En el siguiente chunk ajusta un modelo \(ARIMA(1,2,1)\) y debajo escribe tus comentarios respecto a la comparación de los valores de los coeficientes estimados con el valor real utilizado para generar esta serie de tiempo previamente.

set.seed(123) 

# Definir los coeficientes verdaderos
ar.coef <- c(0.273, -0.774)
ma.coef <- c(0.835, -0.182)

# Simular el proceso 
sim <- arima.sim(n = 700, list(ar = ar.coef, ma = ma.coef))

# Ajustar el modelo 
fit <- arima(sim, order = c(1,2,1))

# Imprimir los coeficientes estimados
fit$coef
##        ar1        ma1 
## -0.1521994  0.9897803
# Comentarios: Podemos ver que no hay una buena correspondencia, ya que los valores estimados están lejos de los verdaderos

Ahora busca ajustar un modelo \(ARIMA(1,1,1)\) y debajo escribe tus coomentarios respecto a la comparación de los valores de los coeficientes estimados con el valor real utilizado para generar esta serie de tiempo previamente. De ser posible, piensa en que comando visto en clase se podría utilizar, para evitar el error cometido en el ajuste anterior (\(ARIMA(1,2,1)\)) al proceso originalmente simulado.

set.seed(123)

# Definir los coeficientes verdaderos
ar.coef <- c(0.273, -0.774)
ma.coef <- c(0.835, -0.182)

sim <- arima.sim(n = 700, list(ar = ar.coef, ma = ma.coef))

# Ajustar el modelo 
fit <- arima(sim, order = c(1,1,1))

# Imprimir los coeficientes estimados
fit$coef
##         ar1         ma1 
## -0.02417581  0.99167801
#Comentarios: Podemos ver que hay una buena correspondencia, ya que los valores estimados están cerca de los verdaderos