Prediction
如何預測或擴展 ggplot2 中的回歸線?
我有一個包含兩個時間序列的數據框:Emacs 和 Firefox 版本的日期和版本號。使用一個 ggplot2 命令很容易製作一個使用 loess 的圖表(以一種看起來有點有趣的方式,我不介意)將點變成線。
我怎樣才能將這些線路延伸到未來?我想確定 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 現在每六週發布一次,但它們不存在然而,我對這個預測問題的一般答案很感興趣。)
正如@Glen 提到的,您必須使用一種
stat_smooth
支持外推的方法,而這種方法loess
不支持。lm
然而確實如此。您需要做的是使用fullrange
參數stat_smooth
並擴展 x 軸以包含您想要預測的範圍。我沒有您的數據,但這裡有一個使用 mtcars 數據集的示例:ggplot(mtcars,aes(x=disp,y=hp)) + geom_point() + xlim(0,700) + stat_smooth(method="lm",fullrange=TRUE)