如何在 R 中使用 diff 函数生成每月回报箱线图

  • 本文关键字:回报 函数 diff r diff
  • 更新时间 :
  • 英文 :


我正在尝试制作每月的箱形图,除了 R 中的 diff 函数外,其他一切都有效。我正在尝试计算回报。Rstudio 给我错误:替换有 [x] 行,数据有 [y]。

数据来自雅虎财经的^GDAXI

stocks$Returns <- diff(stocks[,"Returns"],lag=1): "Error in `$<-.data.frame`(`*tmp*`, Returns, value = c(-0.024564607951433,  : replacement has 5093 rows, data has 5094"
stocks <- read.csv("^GDAXI.csv")
stocks[,1] <- as.Date(stocks[,1])
stocks <- na.omit(stocks)
stocks$Returns <- log(stocks[,"Close"])
stocks$Returns <- diff(stocks[,"Returns"],lag=1)
stocks$Month <- factor(format(stocks$Date, "%m"))
ggplot(stocks, aes(Month, Returns)) + geom_boxplot() + stat_boxplot(geom ='errorbar') + ggtitle("Boxplot of Returns")

使用新的 xts 文件我没有错误,但箱线图停止工作

stocks <- read.csv("^GDAXI.csv")
stocks[,1] <- as.Date(stocks[,1])
stocks <- xts(stocks[, -1], order.by=as.Date(stocks$Date))
stocks <- stocks[,-1]
stocks <- na.omit(stocks)
stocks <- stocks[complete.cases(stocks), ]

stocks_ret <- diff(log(stocks[,3]))
stocks_ret <- stocks_ret[-1,]
stocks_ret$Month <- factor(format(index(stocks_ret), "%m"))

ggplot(stocks_ret, aes(Month, Close, group =1)) + geom_boxplot() + stat_boxplot(geom ='errorbar') + ggtitle("Boxplot of Returns")

当然,差异的数量比值的数量少一个。您可以通过重复第一个值来解决这个问题(将使第一个月的回报为零(。

stocks$Returns <- diff(c(stocks[1,"Returns"], stocks[,"Returns"]), lag=1)

最新更新