約2250万回の観測データセットのローリングバリューアットリスクを推定したいので、高速計算にsparklyrを使用したいと考えています。ここでは(サンプル・データベースを使用して)私がやったことです: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)'は、 'Date'ではなく' character'のベクトルを与えます。 'data $ date < - as.Date(row.names(data))'を実行するとどうなりますか? – C8H10N4O2