在先知(R)中将变化点线添加到绘图中



我在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.Dateas.POSIXct。 这两种情况下都没有错误,但也没有变化点线。有人可以帮忙吗?

如果检查绘图对象的类:

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)

> prophet 包对此有一个专用功能,add_changepoints_to_plot

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

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

有关自定义设置,请参阅?add_changepoints_to_plot

最新更新