Скользящая регрессия временных рядов по группам и извлечение бета-регрессии - PullRequest
0 голосов
/ 22 июня 2019

Уже есть много вопросов о регрессии временных рядов, но, поскольку я довольно плохо знаком с 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 наблюдений каждого изина нет никакого доступного значения из-за скользящего окна. Большое спасибо за вашу помощь!

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