使用ggplot绘制多个变量在时间序列中的平均值

11

我有一个包含多个变量a到k的时间序列数据文件。

我想创建一个图表,绘制a到k变量的平均值随着时间的变化情况,并在平均线上下添加一条平滑曲线,表示每天的最大和最小变化范围。

就像置信区间一样,但是是平滑版本。

这是数据集: https://dl.dropbox.com/u/22681355/co.csv

这是我目前的代码:

library(ggplot2)
library(reshape2)
meltdf <- melt(df,id="Year")
ggplot(meltdf,aes(x=Year,y=value,colour=variable,group=variable)) + geom_line()

3
请提供旧数据集的一个示例。 - jackb
1个回答

11

这显示了自助法得出的95%置信区间:

ggplot(meltdf,aes(x=Year,y=value,colour=variable,group=variable)) +
  stat_summary(fun.data = "mean_cl_boot", geom = "smooth")

ggplot smoothed bootstrap confidence

这张图展示了所有变量的平均值加减1个标准差:

ggplot(meltdf,aes(x=Year,y=value)) +
  stat_summary(fun.data ="mean_sdl", mult=1, geom = "smooth")

在此输入图片描述

在计算变量的平均值和标准偏差之前,您可能希望先计算年度平均值,但我将这个决定留给您。

但是,我认为自助法置信区间更加合理,因为分布显然不对称。它也会更窄。 ;)

当然,您也可以对数转换您的值。


Roland,谢谢。也许我没有表达清楚,但是我的意思是绘制所有变量的平均值,并且不使用置信区间,而是为每天绘制阴影区域表示每天A至K的变化超过或低于平均值。 - user1723765
我不知道你所说的“平均值上下变化”是什么意思。 - Roland
  1. 你需要对a-k取平均值,并在每天绘制该值。
  2. 对于每一天,你将会有一些高于和低于该平均值的a-k变量。我希望有一个阴影区域显示平均值周围的变化范围。
- user1723765
@user1723765 我增加了一个我认为符合你要求的示例。 - Roland
是的,这正是我想要的。另外一个有用的东西是,根据大多数值所在的位置,在不同的区域中以某种方式添加不同的阴影效果。这可行吗?谢谢您的帮助。 - user1723765
@user1723765:你似乎没有意识到这有多难。你可能想要在每个时间点上绘制(3D,等高线)密度图,然后在它们之间进行插值。但是当然密度受到积分为1的限制,这需要考虑到插值中。如果您不想进行插值,可以使用geom_violin - Roland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接