排序变量的R-ggplot

排序变量的R-ggplot,r,R,亲爱的所有人,抱歉,我刚刚发布了一个太宽泛的问题,我正在通过具体的方式重新发布 我正试图在2017年《金融杂志》的“波动性管理投资组合”论文中重现这张图表(见上图)。具体来说,我有一个月度时间序列对象m_收益,和一个月度时间序列对象m_波动率(基于每日收益的每个月的已实现波动率) 就像附件中的第一张图表一样,我想显示五个桶的月平均回报率,按波动率排序(从低波动率到高波动率)。我创建了一些示例数据,并使用下面的代码进行说明,其中代码只给出了X轴上的十个条。我的问题是,在不将m_波动转化为五种波动状

亲爱的所有人,抱歉,我刚刚发布了一个太宽泛的问题,我正在通过具体的方式重新发布

我正试图在2017年《金融杂志》的“波动性管理投资组合”论文中重现这张图表(见上图)。具体来说,我有一个月度时间序列对象m_收益,和一个月度时间序列对象m_波动率(基于每日收益的每个月的已实现波动率)

就像附件中的第一张图表一样,我想显示五个桶的月平均回报率,按波动率排序(从低波动率到高波动率)。我创建了一些示例数据,并使用下面的代码进行说明,其中代码只给出了X轴上的十个条。我的问题是,在不将m_波动转化为五种波动状态(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")
库(ggplot2)

m_return您必须创建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")
库(ggplot2)

m“不将m_波动率转换为五种波动率状态(1到5)”如果您不想将波动率分为五个类别,您希望如何按照图左上角的面板绘制每个类别的平均波动率?如果您确实想对波动率值进行分类,那么类别是如何定义的?我认为ggplot2软件包可能有一个功能已经包含了这种类型的功能,因为这种排序在金融中非常常用。但我错了。谢谢你,非常感谢G·格罗森迪克。真的很感激!我按照G.Grothendieck的建议实现了代码。与我所需要的稍有不同的是,切割函数将每月的波动性观察值按相等的间隔划分为多个桶,而不是按相等的观察值数量(这正是我所需要的)。例如,由于波动性倾向于聚集在较低的值周围,而较高的Vol桶只有很少的观察值,因此当前的低Vol桶占每月观察值的20%以上。我正试图找出如何修改代码,但如果有人有任何想法,我会非常感激的。我将剪切函数中的“breaks=5”改为“breaks=quantile(m_volatility,probs=seq(0,1,by=0.2)),它产生了我现在需要的东西。谢谢大家