Уже есть много вопросов о регрессии временных рядов, но, поскольку я довольно плохо знаком с R, я просто застрял. Мне нужно сделать регрессию временных рядов для разных isin и добавить бета-версии каждого isin во фрейм данных. Мне нужно регрессировать y ~ market + cds для каждого isin с помощью скользящего окна 4.
В следующем посте я уже нашел некоторый полезный код, однако он включает в себя только одну независимую переменную, я не понимаю, как настроить его для моей проблемы:
скользящая регрессия по группам в тидиверсе?
данные выглядят так:
mydata = data_frame('isin' = c('a','a', 'a','a','a','a', 'a','a','b', 'b', 'b', 'b','b', 'b', 'b', 'b','C','c','c','C','c','c','C','c','c'),
'y' = c(1,2,3,4,2,3,4,5,1,2,3,4,2,3,4,5,1,2,3,4,2,3,4,5,5),
'market' = c(2,4,6,8,6,9,12,15,2,4,6,8,6,9,12,15,2,4,6,8,6,9,12,15,15),
'cds' = c(2,4,6,8,6,9,12,15,2,4,6,8,6,9,12,15,2,4,6,8,6,9,12,15,2),
'date' = c(ymd('2016-06-01', '2016-06-02', '2016-06-03', '2016-06-04','2016-06-05', '2016-06-06', '2016-06-07', '2016-06-08',
'2016-06-03', '2016-06-04', '2016-06-05','2016-06-06', '2016-06-07', '2016-06-08', '2016-06-09', '2016-06-06', '2016-06-07',
'2016-06-08', '2016-06-09','2016-06-10', '2016-06-11','2016-06-12', '2016-06-13', '2016-06-14','2016-06-15')))
полезный код
mydata %>%
group_by(isin) %>%
do(select(., date, y, market, cds) %>%
read.zoo %>%
rollapplyr(2, Coef, by.column = FALSE, fill = NA) %>%
fortify.zoo(names = "date")
) %>%
ungroup
В конце мне нужен фрейм данных, содержащий исходные данные и скользящие бета-версии для рынка и компакт-дисков. Конечно, для первых 4 наблюдений каждого изина нет никакого доступного значения из-за скользящего окна. Большое спасибо за вашу помощь!