Использование tsboot для получения доверительного интервала от регрессии с лагами - PullRequest
0 голосов
/ 03 ноября 2018

Я хотел бы сделать начальную загрузку коэффициента регрессии в модели возврата, которая включает в себя два лага. У меня есть вектор snp_ret с возвратами, полученными от QuantMod. Данные выглядят так:

head(snp_ret)
                  ret
1998-10-13 -0.2920975
1998-10-14  1.0728374
1998-10-15  4.0882022
1998-10-16  0.8489058
1998-10-19  0.5635226
1998-10-20  0.1448549

Получение бутстрапа для коэффициентов должно быть простым:

getC=function(myData){
  return(coef(lm(formula = dyn(ret ~ lag(ret, c(-1,-9))), data=myData) ))
}

tsboot(snp_ret, getC, R = 100, l = 18, sim = "fixed")

Появляется следующая ошибка:

Ошибка в merge.zoo (ret, lag (ret, c (-1, -9)), retclass = "list", все = ИСТИНА): серию нельзя объединить с неуникальными индексными записями в серии

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

Если возможно, пожалуйста, помогите.

1 Ответ

0 голосов
/ 04 ноября 2018

Хорошо, я нашел обходной путь, так что, может быть, это будет интересно кому-то еще ... Помогло использование функции arima вместо операторов задержки.

getC <- function(myData) { 
  reg <- suppressWarnings(arima(myData, order = c(9, 0, 0), fixed = c(NA, 0,0,0,0,0,0,0,NA,NA)))
  return((coef(reg)[c(1,9,10)]))

Обратите внимание, что у arima есть странный способ выбора лагов - вы должны принудительно обнулять коэффициенты на лагах, которые вы не хотите включать

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