我的数据集有 140 个月的 1000 次对冲基金回报,我试图计算在 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]”形式。行名应具有标准日期格式,例如“1985-03-15”。
我试图将我的数据框转换为时间序列的组合,zoo()
但它没有帮助。有人可以帮助弄清楚我现在应该做什么吗?