소스 검색

Merge pull request #273 from hoxo-m/plot-changepoints

Add function to draw significant changepoints
Ben Letham 8 년 전
부모
커밋
3ce2070369
1개의 변경된 파일32개의 추가작업 그리고 0개의 파일을 삭제
  1. 32 0
      utils

+ 32 - 0
utils

@@ -0,0 +1,32 @@
+#' Get layers to overlay significant changepoints on prophet forecast plot.
+#'
+#' @param m Prophet model object.
+#' @param threshold Numeric, changepoints where abs(delta) >= threshold are significant. (Default 0.01)
+#' @param cp_color Character, line color. (Default "red")
+#' @param cp_linetype Character or integer, line type. (Default "dashed")
+#' @param trend Logical, if FALSE, do not draw trend line. (Default TRUE)
+#' @param ... Other arguments passed on to layers.
+#'
+#' @return A list of ggplot2 layer.
+#'
+#' @import ggplot2
+#'
+#' @examples
+#' \dontrun{
+#' plot(m, fcst) + layer_changepoints(m)
+#' }
+#'
+#' @export
+layer_changepoints <- function(m, threshold = 0.01, cp_color = "red",
+                               cp_linetype = "dashed", trend = TRUE, ...) {
+  layers <- list()
+  if (trend) {
+    trend_layer <- geom_line(aes_string("ds", "trend"), color = cp_color, ...)
+    layers <- append(layers, trend_layer)
+  }
+  signif_changepoints <- m$changepoints[abs(m$params$delta) >= threshold]
+  cp_layer <- geom_vline(xintercept = as.integer(signif_changepoints),
+                         color = cp_color, linetype = cp_linetype, ...)
+  layers <- append(layers, cp_layer)
+  layers
+}