Цикл динамической линейной регрессии для суммирования в другом порядке

#r #r-model-formula

#r #r-модель-формула

Вопрос:

Я изо всех сил пытался воссоздать эту модель в R: Model (FARHANI 2012)

Я пробовал много вещей, таких как вставка cumsum — однако это не сработало бы, поскольку я не мог присвоить строкам правильную переменную, поскольку она продолжала думать, что 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))
  

Я также пытаюсь сделать это для регрессии DLUSGDP в DLWTI (имя моей переменной oil) для случаев, когда p = 0, q = 1-5, а также p = 1-5, q = 1-5
cumsum не будет работать, поскольку он будет суммировать переменные, а не рассматривать их как независимые регрессии.
Моя цель — запустить эти модели, а затем использовать IC, чтобы определить, какие из них следует проанализировать дальше.
Я надеюсь, что вы понимаете мою проблему, и любая помощь будет с благодарностью принята.

Ответ №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)
  }
  

Комментарии:

1. Большое вам спасибо за вашу помощь, сработало просто замечательно!