我有一个包含两个时间序列的数据框:Emacs和Firefox发行版的日期和版本号。使用一个ggplot2命令,很容易制作一个使用黄土的图表(这种方式看起来有点可笑,我不介意)将点变成线。
我该如何将线延伸到未来?我想确定Emacs和Firefox版本号何时何地交叉,如果有办法显示错误范围,那就更好了。
鉴于ggplot2正在绘制线条,它必须有一个模型,但我看不出如何告诉它扩展线条,或取出模型并对其进行处理。
> library(ggplot2)
> programs <- read.csv("http://www.miskatonic.org/files/se-program-versions.csv")
> programs$Date <- as.Date(programs$Date, format="%B %d, %Y")
> head(programs)
Program Version Date
1 Emacs 24.1 2012-06-10
2 Emacs 23.4 2012-01-29
3 Emacs 23.3 2011-03-10
4 Emacs 23.2 2010-05-08
5 Emacs 23.1 2009-07-29
6 Emacs 22.3 2008-09-05
> head(subset(programs, Program == "Firefox"))
Program Version Date
18 Firefox 16 2012-10-09
19 Firefox 15 2012-08-28
20 Firefox 14 2012-06-26
21 Firefox 13 2012-06-15
22 Firefox 12 2012-04-24
23 Firefox 11 2012-03-13
> ggplot(programs, aes(y = Version, x = Date, colour = Program)) + geom_point() + geom_smooth(span = 0.5, fill = NA)
(注意:我不得不捏造Firefox的早期版本,然后将0.1改为0.01等,因为“点一”和“点十”在算术上是相等的。我知道Firefox现在每六周发布一次,但它们不存在但是,我对这个预测问题的一般回答感兴趣。)