Estoy simulando los precios del petróleo en Estados Unidos, aquí están los datos y un modelo simple:
oil <- c(20, 18, 20, 23, 24, 23, 25, 24, 20, 39, 32, 23, 23, 25, 22, 23,
27, 27, 25, 25, 24, 23, 19, 20, 26, 24, 24, 26, 25, 25, 26, 29, 28, 33, 34,
29, 27, 27, 26, 21, 20, 23, 18, 22, 26, 35, 38, 44, 47, 50, 43, 42, 42, 41,
31, 39, 39, 47, 46, 49, 41, 39, 42, 49, 52, 59, 53, 66, 70, 77, 69, 73, 79,
71, 71, 71, 72, 82, 92, 106, 136, 110, 51, 61, 78, 75, 79, 83, 78, 78, 90,
100, 94, 86, 101, 106, 85, 92, 87, 95, 99, 110, 104, 112, 115, 103, 68, 60,
74, 60, 51, 50, 63, 59, 69, 66, 60)
lambda <- BoxCox.lambda(oil)
model <- auto.arima(ts(data = oil, frequency = 4), stepwise=FALSE,
approximation=FALSE, lambda=lambda)
Ahora, quiero simular un camino:
-
Esto es lo que simular utiliza en su código real, todo está bien:
innovs <- rnorm(5, 0, sqrt(model$sigma2)) simulate(model, innov = innovs, future=TRUE, lambda=lambda) 66 79 68 64 67
-
Ahora añade un simple choque:
innovs <- rnorm(5, 0, sqrt(model$sigma2)) + c(0,0,10,0,0) simulate(model, innov = innovs, future=TRUE, lambda=lambda) 66 59 NA NA NA
Es extraño que añadir lambda causa este problema. Si ejecuto este modelo sin lambda Entonces no hay ningún problema. ¿Alguna idea?
EDITAR:
Basándome en la gran respuesta de Rob, he probado a añadir una desviación estándar de choque y todo funciona bien:
innovs <- rnorm(5, 0, sqrt(model$sigma2)) + c(0,0,1,0,0)*sqrt(model$sigma2)
simulate(model, innov = innovs, future=TRUE, lambda=lambda)