Рекурсивный прогноз по ВАР с макетами - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь сделать рекурсивное прогнозирование с помощью biVAR (3), и я определил 9 манекенов для контроля выбросов остатков, вот код для рекурсивного прогноза:

dlcpi_recursivef=c(predict(var3,dumvar=matrix(0,nrow = 1, ncol = 9),n.ahead=1)$fcst$dlcpi[1,1])
dlm2_recursivef=c(predict(var3,dumvar=matrix(0,nrow = 1, ncol = 9),n.ahead=1)$fcst$dlm2[1,1]) 
dlcpi_new=dlcpi
dlm2_new=dlm2
exog=matrix(0,nrow = 1, ncol = 9)
for (i in 2:17){
  dlcpi_new[200+i-1]<-dlcpi_recursivef[i-1]
  dlm2_new[200+i-1]<-dlm2_recursivef[i-1]
  y_new=cbind(dlcpi=dlcpi_new[1:200+i-1],dlm2=dlm2_new[1:200+i-1])
  dummies_new <- cbind(d2005M12=d2005M12[1:200+i-1],d2007M12=d2007M12[1:200+i-1],
                       d2008M1=d2008M1[1:200+i-1],d2008M7=d2008M7[1:200+i-1],
                       d2002M10=d2002M10[1:200+i-1],d2002M11=d2002M11[1:200+i-1],
                       d2002M12=d2002M12[1:200+i-1],d2003M1=d2003M1[1:200+i-1],
                       d2003M2=d2003M2[1:200+i-1])
  var3_new = VAR(y_new, p=3, type = "const",exogen=dummies_new)
  dlcpi_recursivef[i]<-predict(var3_new, dumvar=exog,n.ahead=1)$fcst$dlcpi[1,1]
  dlm2_recursivef[i]<-predict(var3_new, dumvar=exog,n.ahead=1)$fcst$dlcpi[1,1]
}
var3_recursivef=cbind(dlcpi=dlcpi_recursivef,dlm2=dlm2_recursivef)

Вот Макеты, которые я определил:

d2002M10=create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2002,10), dummy_end = c(2002,10), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2002M11=create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2002,11), dummy_end = c(2002,11), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2002M12=create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2002,12), dummy_end = c(2002,12), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2003M1=create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2003,1), dummy_end = c(2003,1), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2003M2=create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2003,2), dummy_end = c(2003,2), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2005M12 = create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2005,12), dummy_end = c(2005,12), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2007M12 = create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2007,12), dummy_end = c(2007,12), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2008M1 = create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2008,1), dummy_end = c(2008,1), sp = TRUE, start_basic = c(2001,12), frequency = 12)
d2008M7 = create_dummy_ts(end_basic = c(2020,1), dummy_start = c(2008,7), dummy_end = c(2008,7), sp = TRUE, start_basic = c(2001,12), frequency = 12)
dummies=cbind(d2005M12=d2005M12[1:200],d2007M12=d2007M12[1:200],d2008M1=d2008M1[1:200],d2008M7=d2008M7[1:200],     d2002M10=d2002M10[1:200],d2002M11=d2002M11[1:200],d2002M12=d2002M12[1:200],d2003M1=d2003M1[1:200],d2003M2=d2003M2[1:200])

Переменные, которые я использую:

cpi <- ts(data$CPI, start=c(2001,12), end=c(2020,1), frequency = 12)
m2 <- ts(data$M2,start=c(2001,12), end=c(2020,1), frequency = 12)
lcpi=log(cpi)
lm2=log(m2)
dlcpi<-diff(lcpi)
dlm2<-diff(lm2)

И начальная оценка biVAR (3):

y1 = cbind(dlcpi=dlcpi[1:200],dlm2=dlm2[1:200])
VARselect(y1, type= "const", exogen = dummies)

Макеты определены для всей выборки (т. е. данные о поездах и тестах). Моя идея состояла в том, чтобы рекурсивно переместить эти макеты, вызвав пределы (т. е. DummyX [1: 200 + i-1]), как вы можете видеть выше в для l oop, но в итерации 10 я столкнулся с ошибкой:

Error in VAR(y_new, p = 3, type = "const", exogen = dummies_new) : 
NAs in y.

Я не знаю, что происходит, но если я запускаю его без пустышек, ошибка не появляется, поэтому что-то происходит с чайники, и я хочу знать, почему эта ошибка появляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...