Prediction

如何預測或擴展 ggplot2 中的回歸線?

  • September 12, 2012

我有一個包含兩個時間序列的數據框: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)

按日期劃分的 Emacs 和 Firefox 版本

(注意:我不得不捏造早期的 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)

引用自:https://stats.stackexchange.com/questions/36207

comments powered by Disqus