我在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.POSIXct
和abline
。两种情况都没有错误,但也没有变化点线。有人可以帮忙吗?
答案 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
进行自定义。