亲爱的所有人,我很抱歉,我只是发布了一个过于笼统的问题,我将其具体化,以重新发布。
我正在尝试在2017年《金融杂志》的“波动率管理的投资组合”论文中重新创建此图表(如上)。具体地说,我有一个每月时间序列对象m_return和一个每月时间序列对象m_volatility(这是根据每日收益计算的每个月的已实现波动率。
就像附图中的第一个图表一样,我想显示五个桶的月平均回报率,按波动率排序(从低波动到高波动)。我创建了一些示例数据,并使用下面的代码进行说明,其中代码仅在X轴上给了我10条。我的问题是,如何在不将m_volatility转换为五个波动性状态(1到5)的情况下使用ggplot创建我想要的东西?怎样在条形图中显示返回变量的平均值?
这是我的示例代码无效
library(ggplot2)
m_return <- c(0.02, 0.03, 0.04, 0.05, 0.06, 0.04, 0.05, 0.06, 0.05, 0.07)
m_volatility <- c(0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19)
m_data <- data.frame(m_return, m_volatility)
ggplot(m_data, aes(m_volatility, m_return)) + geom_bar(stat="identity")
希望问题现在可以发布了。 非常感谢, 亚历克斯
答案 0 :(得分:0)
您将必须创建5个组,并且可以使用cut
来完成。
library(ggplot2)
m <- data.frame(m_volatility, m_return,
volatility_group = cut(m_volatility, 5, lab = c("Low vol", 2, 3, 4, "High vol")))
m5 <- aggregate(m_return ~ volatility_group, m, mean)
ggplot(m5, aes(volatility_group, m_return)) +
geom_bar(stat = "identity") +
xlab("Volatility") +
ylab("Return")