如何在函数的参数中创建可能值的向量

时间:2019-04-01 10:00:07

标签: r time-series

我写了一个函数,使嵌入的时间序列回归。现在我可以退缩三个滞后了。我想扩展该函数的参数以选择最多要使用多少个滞后。因此,该参数应为向量,如果我指定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)
  }
}

0 个答案:

没有答案