Ich möchte Rolling-Value-at-Risk für einen Datensatz von etwa 22,5 Millionen Beobachtungen schätzen, daher möchte ich Sparklyr für schnelle Berechnung verwenden. Hier ist, was ich getan habe (eine Beispieldatenbank verwendet wird):Rollappliz für große Daten mit 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'))
Jetzt schätze ich VaR, mit dplyr und PerformanceAnalytics Pakete:
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))
Dies funktioniert gut. Jetzt mache ich diese Verwendung von sparklyr zu machen:
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
Aber das gibt den folgenden Fehler:
Error: Unknown input type: pairlist
Kann jemand bitte sagen Sie mir, wo der Fehler ist und was der richtige Code? Oder eine andere Lösung, um rollendes VaR schneller zu schätzen, wird ebenfalls geschätzt.
Sie erkennen, dass 'data $ date = row.names (data)' gibt Ihnen einen Vektor von 'Zeichen', nicht von' Date'? Was passiert, wenn Sie 'data $ date <- as.Date (row.names (data))' – C8H10N4O2