R-排序变量的ggplot

时间:2018-07-28 13:20:16

标签: r

enter image description here

亲爱的所有人,我很抱歉,我只是发布了一个过于笼统的问题,我将其具体化,以重新发布。

我正在尝试在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")

希望问题现在可以发布了。 非常感谢, 亚历克斯

1 个答案:

答案 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")

screenshot