添加变换点线以在先知(R)中绘图

时间:2018-01-24 21:15:38

标签: r facebook-prophet

我在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  
 }

但是,更改点行永远不会显示出来。我仔细检查了变更点是否在主要情节的范围内,我在as.Date中尝试了as.POSIXctabline。两种情况都没有错误,但也没有变化点线。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

如果检查绘图对象的类:

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)

答案 1 :(得分:0)

prophet软件包对此具有专用功能add_changepoints_to_plot

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

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

请参见?add_changepoints_to_plot进行自定义。