小编Jai*_*pta的帖子

使用sparklyr对大数据进行rollapply

我想估计大约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'))
Run Code Online (Sandbox Code Playgroud)

现在我估计使用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))
Run Code Online (Sandbox Code Playgroud)

这很好用.现在我这样做是为了使用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
Run Code Online (Sandbox Code Playgroud)

但是这会产生以下错误:

Error: Unknown input type: pairlist
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我哪里出错,什么是正确的代码?或者任何其他更快地估算滚动VaR的解决方案也是值得赞赏的.

r performanceanalytics dplyr rollapply sparklyr

7
推荐指数
1
解决办法
615
查看次数

使用R估计风险滚动值(VaR)

我需要对每日股票收益进行滚动VaR估计.起初我做了以下事情:

library(PerformanceAnalytics)
data(edhec)
sample<-edhec[,1:5]
var605<-rollapply(as.zoo(sample),width=60,FUN=function(x) VaR(R=x,p=.95,method="modified",invert=T),by.column=TRUE,fill=NA)
Run Code Online (Sandbox Code Playgroud)

它执行计算并返回一个zoo对象,但给出了一系列警告,如下所示:

VaR calculation produces unreliable result (inverse risk) for column: 1 : -0.00030977098532231 
Run Code Online (Sandbox Code Playgroud)

然后,我尝试了同样的数据样本,如下所示:

library(foreign)
sample2 <- read.dta("sample2.dta")
sample2.xts <- xts(sample2[,-1],order.by=as.Date(sample2$datadate,format= "%Y-%m-%d"))
any(is.na(sample2.xts))
var605<-rollapply(as.zoo(sample2.xts),width=60,FUN=function(x) VaR(R=x,p=.95,method="modified",invert=T),by.column=TRUE,fill=NA)
Run Code Online (Sandbox Code Playgroud)

但是不会返回任何动物园对象并给出以下警告和错误:

VaR calculation produces unreliable result (inverse risk) for column: 1 : -0.0077322590200255
Error in if (eval(tmp < 0)) { : missing value where TRUE/FALSE needed
Called from: top level
Run Code Online (Sandbox Code Playgroud)

从之前的文章(使用rollapply函数进行使用R的VaR计算)我理解,如果缺少完整的滚动窗口,则无法执行滚动估计,但在我的数据(sample2.dta)中没有缺失值.

sample2.dta可以从https://drive.google.com/file/d/0B8usDJAPeV85WDdDQTFEbGQwaUU/edit?usp=sharing下载

有谁可以帮我解决和理解这个问题?

r computational-finance performanceanalytics rollapply

6
推荐指数
1
解决办法
2702
查看次数

更快速地替代功能'rollapply'

我需要在xts数据上运行滚动窗口函数,该数据包含大约7,000行和11,000列.我做了以下事情:

require(PerformanceAnalytics)
ssd60<-rollapply(wddxts,width=60,FUN=function(x) SemiDeviation(x),by.column=TRUE)
Run Code Online (Sandbox Code Playgroud)

我等了12个小时,但计算没有完成.但是,当我尝试使用小数据集时,如下所示:

sample<-wddxts[,1:5]
ssd60<-rollapply(sample,width=60,FUN=function(x) SemiDeviation(x),by.column=TRUE)
Run Code Online (Sandbox Code Playgroud)

计算在60秒内完成.我在配备Intel i5-2450M CPU,Windows 7操作系统和12 GB RAM的计算机上运行它们.

任何人都可以建议我,如果有更快的方法在大型xts数据集上执行上述计算?

r zoo xts performanceanalytics rollapply

5
推荐指数
1
解决办法
1731
查看次数

在R中的Cox回归之后,将预测的危险比列添加到数据帧

在R中运行Cox PH回归后,我需要在数据框中添加预测风险比率列.数据框是一个面板数据,其中numgvkey如果公司标识符和年龄是时间标识符.您可以从以下链接下载该日期的一小部分:https: //drive.google.com/file/d/0B8usDJAPeV85VFRWd01pb0h1MDA/view?usp=sharing

我有以下几点:

library(survival)
library(readstata13)
sme <- read.dta13("sme.dta")
reg<-coxph(Surv(age,EVENT2)~L1FETA+frailty(numgvkey), ties=c("efron"),  data=sme)
summary(reg)
hr <- predict(reg, type="risk")
Run Code Online (Sandbox Code Playgroud)

如何在"sme"数据框中添加第5列"危险比"(hr)?另外,有没有办法预测EVENT2概率而不是'hr'?

r dataframe cox-regression survival-analysis

5
推荐指数
1
解决办法
1804
查看次数