【问题标题】:Add changepoint lines to plot in prophet (R)在先知(R)中添加更改点线以进行绘图
【发布时间】:2018-01-24 21:15:38
【问题描述】:

我在 R (https://facebook.github.io/prophet/) 中使用 prophet,并且我想在预测图的顶部覆盖变化点。这是我的代码(df 是一个包含日期(ds 列)和值(y 列)的数据框:

m <- prophet(df)
future <- make_future_dataframe(m, periods=5)
forecast <- predict(m, future)

plot(m, forecast, xlab="Day", ylab="Counts")


i = 0
while (i <= length(m$changepoints.t)) {
  tmp <- m$changepoints[i]
  abline(v=as.POSIXct(tmp), col='red')
  i = i + 1  
 }

但是,更改点线永远不会出现。我仔细检查了更改点是否在主图的范围内,并在abline 中尝试了as.Date 和as.POSIXct。在这两种情况下都没有错误,但也没有变化点线。有人可以帮忙吗?

【问题讨论】:

    标签: r facebook-prophet


    【解决方案1】:

    如果检查绘图对象的类:

    class(plot(m,forecast,xlab="Day", ylab="Counts"))
    

    ... 你会看到它是一个 ggplot 图形。此外,如果您访问 m$changepoints 而不是 m$changepoints.t,您会发现模型的更改点已经采用 POSIXct 格式。

    要将所有更改点绘制为垂直线,您可以像这样使用geom_vline:

    p <- plot(m,forecast,xlab="Day", ylab="Counts")
    for (changepoint in m$changepoints) {
      p <- p + geom_vline(xintercept = changepoint)
    }
    print(p)
    

    【讨论】:

      【解决方案2】:

      prophet 包有一个专门的函数,add_changepoints_to_plot。

      在你的情况下,这可以解决问题:

      plot(m, forecast, xlab="Day", ylab="Counts") +
      add_changepoints_to_plot(m)
      

      有关自定义,请参阅 ?add_changepoints_to_plot。

      【讨论】:

        猜你喜欢
        • 2022-11-03
        • 1970-01-01
        • 2023-03-18
        • 2014-08-31
        • 1970-01-01
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多