Mam ramkę danych, która zawiera dwie serie czasowe: daty i numery wersji wydań Emacs i Firefox. Za pomocą jednego polecenia ggplot2 łatwo jest utworzyć wykres, który używa less (w sposób, który wygląda nieco zabawnie, co nie mam nic przeciwko), aby zamieniać punkty w linie.
Jak mogę przedłużyć linie w przyszłości? Chcę ustalić, gdzie i kiedy przekroczą się numery wersji Emacsa i Firefoksa, a jeśli istnieje sposób na pokazanie zakresu błędów, tym lepiej.
Biorąc pod uwagę, że ggplot2 kreśli linie, musi mieć model, ale nie widzę, jak powiedzieć mu, aby przedłużył linie lub wyciągnął model i coś z nim zrobił.
> 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)
(Uwaga: musiałem sfałszować wczesne wersje Firefoksa i zmienić 0,1 na 0,01 itd., Ponieważ „kropka pierwsza” i „kropka dziesiąta” są równe arytmetycznie. Wiem, że Firefox wypuszcza teraz co sześć tygodni, ale nie istnieją ale interesuje mnie ogólna odpowiedź na to pytanie dotyczące prognoz).