library(tidyverse)
library(forecast)
library(quantmod)
library(AER)
library(MASS)
library(tseries)
library(stats)
library(car)
library(lmtest)
library(urca)
library(aTSA)
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
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