2

私のデータセットには 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)

警告メッセージを受け取りました:

データは時系列に変換できません。1 つの列を持つデータ オブジェクトから名前を渡そうとする場合は、'data[rows, columns, drop = FALSE]' の形式を使用する必要があります。行名には、「1985-03-15」などの標準の日付形式を使用する必要があります。

を使用してデータ フレームを時系列の組み合わせに変換しようとしましzoo()たが、役に立ちませんでした。誰かが私が今何をすべきかを理解するのを助けることができますか?

4

2 に答える 2

1

@ user2893255、apply 関数を使用する前に、データ フレームを xts オブジェクトに変換する必要があります。

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

その後

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

警告やエラー メッセージなしで結果が得られます。

于 2013-10-31T07:05:44.237 に答える
0

Date列を削除してみてください:

 apply(df[,-1L], 2, FUN=VaR, na.rm=TRUE)
于 2013-10-30T02:23:23.110 に答える