Ускорить прогнозирование на один шаг вперед (вместо использования rollapply)
Я использую rollapply
для создания прогноза на 1 шаг вперед по модели GARCH(1,1) (garchFit
). Пример приведен ниже:
require(fGarch)
require(zoo)
data(EuStockMarkets)
dax <- diff(log(EuStockMarkets))[,"DAX"]
gfit <- function(df)
{
series <- df
capture.output(gf <- garchFit(formula=~arma(0,0) + garch(1,1), data=series), file='NUL')
g <- predict(gf, n.ahead=1)[,2]
attributes(g) <- NULL
return(g)
}
rolling <- rollapply(dax, width=250, FUN=gfit)
Однако это занимает относительно много времени. Итак, мой вопрос: есть ли способ ускорить это?
1 ответ
Решение
В последних версиях была ошибка
rollapply
(например, зоопарк 1.7-6), который не привел к неправильным ответам, но заставил его работать намного медленнее, чем нужно. Попробуйте версию для разработчиков (чтобы стать зоопарком 1.7-7) и посмотрите, достаточно ли этого для ваших нужд:install.packages ("zoo", repo = "http://r-forge.r-project.org")
Вы также можете попробовать измерить процент времени, занимаемого вашей функцией (см.
?Rprof
) а если его большое, т.е.total.pct
заFUN
большой, то искать его бессмысленноrollapply
альтернативы.