utils.R 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. #' Get layers to overlay significant changepoints on prophet forecast plot.
  2. #'
  3. #' @param m Prophet model object.
  4. #' @param threshold Numeric, changepoints where abs(delta) >= threshold are
  5. #' significant. (Default 0.01)
  6. #' @param cp_color Character, line color. (Default "red")
  7. #' @param cp_linetype Character or integer, line type. (Default "dashed")
  8. #' @param trend Logical, if FALSE, do not draw trend line. (Default TRUE)
  9. #' @param ... Other arguments passed on to layers.
  10. #'
  11. #' @return A list of ggplot2 layers.
  12. #'
  13. #' @examples
  14. #' \dontrun{
  15. #' plot(m, fcst) + layer_changepoints(m)
  16. #' }
  17. #'
  18. #' @export
  19. layer_changepoints <- function(m, threshold = 0.01, cp_color = "red",
  20. cp_linetype = "dashed", trend = TRUE, ...) {
  21. layers <- list()
  22. if (trend) {
  23. trend_layer <- ggplot2::geom_line(
  24. ggplot2::aes_string("ds", "trend"), color = cp_color, ...)
  25. layers <- append(layers, trend_layer)
  26. }
  27. signif_changepoints <- m$changepoints[abs(m$params$delta) >= threshold]
  28. cp_layer <- ggplot2::geom_vline(
  29. xintercept = as.integer(signif_changepoints), color = cp_color,
  30. linetype = cp_linetype, ...)
  31. layers <- append(layers, cp_layer)
  32. return(layers)
  33. }