У меня есть ежедневные панельные данные с четырьмя переменными: дата, cusip (идентификатор идентификатора), PD (вероятность дефолта) и цена. PD доступен только ежеквартально в первый день января, апреля, июля и октября. Я хочу сгенерировать ежедневные данные для частичного разряда, используя преобразование частоты Chow-Lin из пакета tempdisagg
. Я знаю, как применить функцию td()
к временным рядам, но я не нашел примеров с фреймами данных панели. Вот мой код и образцы данных с использованием reproduce()
из пакета devtools
, поэтому включены только несколько дней выборки вместо полного квартала. Запуск td()
сообщает об ошибке:
Ошибка в td (PD ~ price, conversion = "first", method = "chow-lin-fixed", fixed.rho = 0.5): In numeri Режим c, 'to' должно быть целым числом.
Я знаю, что и цена, и PD являются часто встречающимися ежедневными индикаторами в mydata
, поэтому, думаю, мне нужно использовать to.quarterly()
функция PD
или что-то подобное.
library(dplyr)
library(zoo)
library(tempdisagg)
library(tsbox)
mydata <- structure(list(date = structure(c(13516, 13516, 13517, 13517,13518, 13518, 13521, 13605, 13605, 13606), class = "Date"), cusip = c("31677310","66585910", "31677310", "66585910", "31677310", "66585910", "31677310","66585910", "31677310", "66585910"), PD = c(0.076891, 0.096,NA, NA, NA, NA, NA, 0.094341, 0.08867, NA), price = c(40.98, 61.31,40.99, 60.77, 40.18, 59.97, 39.92, 59.96, 38.6, 60.69)), row.names = c(6L,13L, 36L, 43L, 66L, 73L, 96L, 1843L, 1866L, 1873L), class = "data.frame")
mydata <- mydata%>%
group_by(cusip) %>%
arrange(cusip,date) %>%
mutate(PDdaily = td(PD ~ price, conversion = "first",method = "chow-lin-fixed", fixed.rho = 0.5))