不同阶数求和的动态线性回归循环

时间:2016-10-10 23:49:58

标签: r r-model-formula

我一直在努力在R中重新创建这个模型: Model (FARHANI 2012)

我尝试了很多东西,比如一个cumsum paste - 然而这不会起作用,因为我无法为正确的变量分配字符串,因为它一直认为L是一个函数。 我试图手动完成,我只是寻找p,q = 1,2,3,4,5然而在开始后我意识到这是多么低效。 这基本上就是我想做的事情

model5 <- vector("list",20)
#p=1-5, q=0
model5[[1]] <- dynlm(DLUSGDP~L(DLUSGDP,1))
model5[[2]] <- dynlm(DLUSGDP~L(DLUSGDP,1)+L(DLUSGDP,2))
model5[[3]] <- dynlm(DLUSGDP~L(DLUSGDP,1)+L(DLUSGDP,2)+L(DLUSGDP,3))
model5[[4]] <- dynlm(DLUSGDP~L(DLUSGDP,1)+L(DLUSGDP,2)+L(DLUSGDP,3)+L(DLUSGDP,4))
model5[[5]] <- dynlm(DLUSGDP~L(DLUSGDP,1)+L(DLUSGDP,2)+L(DLUSGDP,3)+L(DLUSGDP,4)+L(DLUSGDP,5))

当p = 0,q = 1-5且p = 1-5,q = 1时,我也试图在DLWTI(我的油变量名称)上回归DLUSGDP -5 cumsum不会起作用,因为它会对变量求和,而不是将它们视为独立的回归。 我的目标是运行这些模型,然后使用IC来确定哪些应该进一步分析。 我希望你理解我的问题,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西:

reformulate(paste0("L(DLUSGDP,", 1:n,")"), "DLUSGDP")

其中n是您要尝试的订单。例如,

n <- 3
reformulate(paste0("L(DLUSGDP,", 1:n,")"), "DLUSGDP")
# DLUSGDP ~ L(DLUSGDP, 1) + L(DLUSGDP, 2) + L(DLUSGDP, 3)

然后您可以通过

构建模型拟合
model5 <- vector("list",20)
for (i in 1:20) {
  form <- reformulate(paste0("L(DLUSGDP,", 1:i,")"), "DLUSGDP")
  model5[[i]] <- dynlm(form)
  }