TODO: unit tests for simil days
[talweg.git] / pkg / R / F_Persistence.R
index 19cf2e4..fa5f99f 100644 (file)
@@ -1,19 +1,22 @@
-#' @include Forecaster.R
+#' Persistence Forecaster
 #'
-#' @title Persistence Forecaster
+#' Look for the most recent similar day in the past, and return its corresponding curve.
 #'
-#' @description Return the last centered (similar) day curve.
-#'   Inherits \code{\link{Forecaster}}
-PersistenceForecaster = setRefClass(
-       Class = "PersistenceForecaster",
-       contains = "Forecaster",
+#' There are two variations, depending whether "similar day" means "same day in the week"
+#' or "most recent day" (regardless of day type). The corresponding argument is named
+#' "same_day": a value of TRUE implies the former interpretation (same day in week).
+#' If the last similar day has missing values, the next one is searched, and so on until
+#' one full serie is found (if no one is found, NA is returned).
+#'
+#' @docType class
+#' @format R6 class, inherits Forecaster
+#' @aliases F_Persistence
+#'
+PersistenceForecaster = R6::R6Class("PersistenceForecaster",
+       inherit = Forecaster,
 
-       methods = list(
-               initialize = function(...)
-               {
-                       callSuper(...)
-               },
-               predictShape = function(today, memory, horizon, ...)
+       public = list(
+               predictShape = function(data, today, memory, horizon, ...)
                {
                        # Return centered last (similar) day curve, avoiding NAs until memory is run
                        first_day = max(1, today-memory)