【发布时间】:2018-02-11 22:29:50
【问题描述】:
我想估计大约 2250 万个观察值的数据集的滚动风险价值,因此我想使用 sparklyr 进行快速计算。这是我所做的(使用示例数据库):
library(PerformanceAnalytics)
library(reshape2)
library(dplyr)
data(managers)
data <- zerofill(managers)
data<-as.data.frame(data)
class(data)
data$date=row.names(data)
lmanagers<-melt(data, id.vars=c('date'))
现在我使用 dplyr 和 PerformanceAnalytics 包估计 VaR:
library(zoo) # for rollapply()
var <- lmanagers %>% group_by(variable) %>% arrange(variable,date) %>%
mutate(var=rollapply(value, 10,FUN=function(x) VaR(x, p=.95, method="modified",align = "right"), partial=T))
这很好用。现在我这样做是为了利用 sparklyr:
library(sparklyr)
sc <- spark_connect(master = "local")
lmanagers_sp <- copy_to(sc,lmanagers)
src_tbls(sc)
var_sp <- lmanagers_sp %>% group_by(variable) %>% arrange(variable,date) %>%
mutate(var=rollapply(value, 10,FUN=function(x) VaR(x, p=.95, method="modified",align = "right"), partial=T)) %>%
collect
但这会产生以下错误:
Error: Unknown input type: pairlist
谁能告诉我错误在哪里,正确的代码是什么?或者任何其他更快地估计滚动 VaR 的解决方案也值得赞赏。
【问题讨论】:
-
您确实意识到
data$date=row.names(data)为您提供了character的向量,而不是Date的向量?如果你这样做会发生什么data$date <- as.Date(row.names(data))
标签: r dplyr sparklyr rollapply performanceanalytics