我写了一个函数,使嵌入的时间序列回归。现在我可以退缩三个滞后了。我想扩展该函数的参数以选择最多要使用多少个滞后。因此,该参数应为向量,如果我指定c(1,NA,1)
,则应使用lag = 1和3,而lag = 2。我该怎么做? TS只是数字的向量。
my_function<-function(TS,horizon){
embed_TS <- embed(TS,(horizon+3))
my_length <- dim(embed_TS)[1]
time <- c(1:my_length)
last_actual <- tail(TS,3)
last_actuals <-data.frame(last_actual)
direct <- rep(0,horizon)
limit_95 <- vector("list",horizon)
my_fit <- rep(0,horizon)
for(i in 1:horizon)
{
x <- embed_TS[,(1+i)]
x2 <- embed_TS[,(2+i)]
x3 <- embed_TS[,(3+i)]
z <-time
my_fit.lm <- lm(embed_TS[,1] ~ x+x2+x3+z)
direct[i] =c(1, last_actual,(my_length+i)) %*% coef(my_fit.lm)
pred_int =data.frame(x=last_actuals[1,1],x2=last_actuals[2,1],x3=last_actuals[3,1],z=(my_length+i))
limit_95[[i]] =predict(my_fit.lm, pred_int, interval = "prediction",level=0.95)
}
}