Quiero hacer una regresión lineal sobre los bonos corporativos spread. La forma en que lo hice es ejecutar un modelo lineal utilizando lm
y, a continuación, ejecutar un auto.arima
sobre los residuos de la producción de lm
y por último utilizar los mismos coeficientes que en el auto.arima
y ejecute un Arima
con los valores de dispersión. Por último, quiero hacer una previsión. Cuando ejecuto un auto.arima
con xreg, obtengo una respuesta diferente si utilizo lm
+ Arima
. Obtengo un término "I" al utilizar auto.arima
aunque mis variables son todas estacionarias. Me pregunto cuál es la forma correcta de hacerlo. Aquí está mi código:
forecast.func <- function(NS.spread, ind.v, maturity, training, forc.horizon){
NS.spread <- NS.spread/100
forc <- list()
j <- 0
for(i in 1:floor((nrow(NS.spread)-training)/forc.horizon)){
# linear model
y <- as.vector(NS.spread[(1+j):(training+j) , maturity])
f <- ind.v[(1+j):(training+j) , maturity]
a <- cbind(y,f)
a <- as.data.frame(a)
b <- lm(y ~ lagmatrix(f, -1), data= a)
# auto- arima
c <- auto.arima(b$residuals, test= "adf")
# Arima
d <- Arima(y, xreg = lagmatrix(f, -1), order = c(c$arma[1], c$arma[6], c$arma[2]), include.mean = FALSE)
# forecast
e <- ind.v[(training+j+1):(training+j+forc.horizon) , maturity]
h <- forecast(d, xreg = lagmatrix(e, -1))
forc <- c(h, forc)
j <- j + forc.horizon
}
return(forc)
}