Tengo un marco de datos que contiene dos series de tiempo: las fechas y los números de versión de las versiones de Emacs y Firefox. Usando un comando ggplot2 es fácil hacer un gráfico que use loess (de una manera que parece un poco divertida, lo que no me importa) para convertir los puntos en líneas.
¿Cómo puedo extender las líneas hacia el futuro? Quiero determinar dónde y cuándo se cruzarán los números de versión de Emacs y Firefox, y si hay una manera de mostrar un rango de error, mucho mejor.
Dado que ggplot2 está trazando las líneas, debe tener un modelo, pero no veo cómo decirle que extienda las líneas o que saque el modelo y haga algo con él.
> 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)
(Nota: tuve que falsificar las primeras versiones de Firefox y convertir 0.1 en 0.01, etc., porque "punto uno" y "punto diez" son iguales aritméticamente. Sé que Firefox se lanza cada seis semanas, pero no existen todavía, y estoy interesado en una respuesta general a esta pregunta de predicción).