J'ai une trame de données qui contient deux séries chronologiques: les dates et les numéros de version des versions d'Emacs et de Firefox. En utilisant une commande ggplot2, il est facile de créer un graphique qui utilise le loess (d'une manière qui semble un peu amusante, ce qui ne me dérange pas) pour transformer les points en lignes.
Comment prolonger les lignes dans le futur? Je veux déterminer où et quand les numéros de version d'Emacs et de Firefox se croiseront, et s'il y a un moyen d'afficher une plage d'erreur, tant mieux.
Étant donné que ggplot2 trace les lignes, il doit avoir un modèle, mais je ne vois pas comment lui dire d'étendre les lignes, ou d'extraire le modèle et de faire quelque chose avec.
> 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)
(Remarque: j'ai dû truquer les premières versions de Firefox et passer de 0,1 à 0,01, etc., car "point un" et "point dix" sont arithmétiquement égaux. Je sais que Firefox sort maintenant toutes les six semaines, mais elles n'existent pas encore, et je suis intéressé par une réponse générale à cette question de prédiction.)