1

prophet在 R ( https://facebook.github.io/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  
 }

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

4

2 回答 2

3

如果您检查绘图对象的类:

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)
于 2018-01-24T21:38:23.240 回答
0

prophet软件包为此提供了专用功能,add_changepoints_to_plot.

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

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

?add_changepoints_to_plot定制。

于 2018-12-08T19:02:25.793 回答