ошибка временного ряда xts с PerformanceAnalytics

Привет, у меня есть объект dataframe с именем NormalizedPnL. Вот:

  print(head(NormalizedPnL))
  print(class(NormalizedPnL))
  print(class(NormalizedPnL[,1]))
  print(class(NormalizedPnL[,2]))
  print(class(NormalizedPnL[,3]))

  businessdate    start A            Strat B           Strat C
1   2014-01-01  0.000000000        0.00000000       0.000000000
2   2014-01-02  0.016764200        0.04218263       0.011912007
3   2014-01-03  0.001179697       -0.02683310      -0.000897083
4   2014-01-06 -0.033131903        0.01902207       0.021104512
5   2014-01-07 -0.033215587       -0.06347915      -0.018900792
6   2014-01-08  0.045181350       -0.00732205      -0.016600410
[1] "data.frame"
[1] "Date"   # you can see here the this column is a date
[1] "numeric"
[1] "numeric"

Теперь я делаю это объектом xts:

  NormalizedPnL_xts<- xts(NormalizedPnL[,-1], order.by= as.Date(NormalizedPnL[,1]))
  print(head(NormalizedPnL_xts))
  print(class(head(NormalizedPnL_xts)))
  print(class(NormalizedPnL_xts[,1]))
  print(class(NormalizedPnL_xts[,2]))
  print(class(NormalizedPnL_xts[,3]))

               Strat A            Start B         Strat C 
2014-01-01  0.000000000        0.00000000       0.000000000
2014-01-02  0.016764200        0.04218263       0.011912007
2014-01-03  0.001179697       -0.02683310      -0.000897083
2014-01-06 -0.033131903        0.01902207       0.021104512
2014-01-07 -0.033215587       -0.06347915      -0.018900792
2014-01-08  0.045181350       -0.00732205      -0.016600410
[1] "xts" "zoo"
[1] "xts" "zoo"
[1] "xts" "zoo"
[1] "xts" "zoo"

вы можете видеть, что все столбцы зоопарка

Теперь я пытаюсь использовать аналитику производительности:

charts.PerformanceSummary(NormalizedPnL_xts,geometric= FALSE,cex.axis=1.5)

И я получаю ошибку:

The data cannot be converted into a time series.  If you are trying to pass
 in        names     from a data object with one column, you should use the 
 form 'data[rows, columns,     drop = FALSE]'.  Rownames should have standard date formats, such as 

'1985-03-15'. 
Error in `[<-.data.frame`(`*tmp*`, i, 2, value = c(90600, 60400, 302000 : 
  replacement has 3 rows, data has 1
Error in `[<-.data.frame`(`*tmp*`, i, 8, value = c(-742200, -494800, -2474000 : 
  replacement has 3 rows, data has 1

Кто-нибудь может сказать мне, в чем проблема? В ошибке упоминается наличие 1 столбца, но у меня их 3.


person user3022875    schedule 28.03.2014    source источник
comment
У меня работает нормально. Должна быть синтаксическая ошибка с вашей стороны. Похоже, вы установили NormalizedPnL_xts <- NormalizedPnL в какой-то момент.   -  person Joshua Ulrich    schedule 28.03.2014
comment
Вы можете объяснить? Я не совсем понимаю, что вы имеете ввиду. Эта строка: NormalizedPnL_xts‹- xts(NormalizedPnL[,-1], order.by= as.Date(NormalizedPnL[,1])) неверна?   -  person user3022875    schedule 28.03.2014


Ответы (1)


Работает на меня:

library(PerformanceAnalytics)

NormalizedPnL <-
structure(list(businessdate = c("2014-01-01", "2014-01-02", "2014-01-03", 
"2014-01-06", "2014-01-07", "2014-01-08"), StratA = c(0, 0.0167642, 
0.001179697, -0.033131903, -0.033215587, 0.04518135), StratB = c(0, 
0.04218263, -0.0268331, 0.01902207, -0.06347915, -0.00732205), 
    StratC = c(0, 0.011912007, -0.000897083, 0.021104512, -0.018900792, 
    -0.01660041)), .Names = c("businessdate", "StratA", "StratB", 
"StratC"), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6"))

NormalizedPnL_xts <- xts(NormalizedPnL[,-1], order.by=as.Date(NormalizedPnL[,1]))
charts.PerformanceSummary(NormalizedPnL_xts,geometric=FALSE,cex.axis=1.5)
person Joshua Ulrich    schedule 28.03.2014
comment
хммм Это так странно, что мой код не работает. Кажется, он делает то же самое. я потерялся - person user3022875; 28.03.2014
comment
Вероятно, у вас где-то опечатка или синтаксическая ошибка. Попробуйте это в новом сеансе R. - person Joshua Ulrich; 28.03.2014
comment
Не повезло. Как вы думаете, это что-то с моими именами строк. когда я делаю имена строк (NormalizedPnL), я получаю 1,2,4.... но когда я делаю имена строк (NormalizedPnL_xts), я получаю NULL. Я не уверен, как интерпретировать этот ответ ">stackoverflow.com/questions/20008212/, но это связано с именами строк. - person user3022875; 28.03.2014
comment
Этот ответ работает, потому что они передают data.frame функции. Вы можете сделать это, но имена строк должны быть значениями, которые будут использоваться для индекса xts, и они должны быть в подходящем формате. Объекты xts не должны иметь имена строк, отличные от NULL, так что это не проблема. Я не знаю, почему это не работает для вас. У меня это работает с последней версией PerformanceAnalytics на CRAN. - person Joshua Ulrich; 28.03.2014