计算数据框中的风险值

时间:2013-10-30 01:38:50

标签: r time-series

我的数据集有1000个对冲基金回报140个月,我试图在PerformanceAnalytics包中计算风险价值(VaR)起诉指令VaR。但是,在使用此功能时,我遇到了很多问题。我创建了一个示例数据框来显示我的问题。

df=data.frame(matrix(rnorm(24),nrow=8))
df$X1<-c('2007-01','2007-02','2007-03','2007-04','2007-05','2007-06','2007-07','2007-08')
df[2,2]<-NA
df[2,3]<-NA
df[1,3]<-NA
df

我有一个数据框:

           X1         X2          X3
    1 2007-01 -1.4420195          NA
    2 2007-02         NA          NA
    3 2007-03 -0.4503824 -0.78506597
    4 2007-04  1.4083746  0.02095307
    5 2007-05  0.9636549  0.19584430
    6 2007-06  1.1935281 -0.14175623
    7 2007-07 -0.3986336  1.58128683
    8 2007-08  0.8211377 -1.13347168
然后我跑

apply(df,2,FUN=VaR, na.rm=TRUE)

并收到一条警告信息:

无法将数据转换为时间序列。如果您尝试从具有一列的数据对象传入名称,则应使用“data [rows,columns,drop = FALSE]”形式。 Rownames应具有标准日期格式,例如'1985-03-15'。

我曾尝试使用zoo()将我的数据框转换为时间序列组合,但它没有帮助。有人可以帮我弄清楚我现在应该做什么吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试删除Date列:

 apply(df[,-1L], 2, FUN=VaR, na.rm=TRUE)

答案 1 :(得分:0)

@ user2893255,您应该在使用apply函数之前将数据框转换为xts-object:

df.xts <- as.xts(df[,2:3],order.by=as.Date(df$X1,"%Y-%m"))

然后

apply(df.xts,2,FUN=VaR, na.rm=TRUE)

为您提供没有警告或错误消息的结果。