+++ /dev/null
-#' @title Forecaster (abstract class)
-#'
-#' @description Abstract class to represent a forecaster (they all inherit this)
-#'
-#' @field params List of computed parameters, for post-run analysis (dev)
-#' @field data Dataset, object of class Data
-#' @field pjump Function: how to predict the jump at day interface ?
-Forecaster = setRefClass(
- Class = "Forecaster",
-
- fields = list(
- params = "list",
- data = "Data",
- pjump = "function"
- ),
-
- methods = list(
- initialize = function(...)
- {
- "Initialize (generic) Forecaster object"
-
- callSuper(...)
- if (!hasArg(data))
- stop("Forecaster must be initialized with a Data object")
- params <<- list()
- },
- predict = function(today, memory, horizon, ...)
- {
- "Obtain a new forecasted time-serie"
-
- # Parameters (potentially) computed during shape prediction stage
- predicted_shape = predictShape(today, memory, horizon, ...)
- predicted_delta = pjump(data, today, memory, horizon, params, ...)
- # Predicted shape is aligned it on the end of current day + jump
- predicted_shape + tail(data$getSerie(today),1) - predicted_shape[1] + predicted_delta
- },
- predictShape = function(today, memory, horizon, ...)
- {
- "Shape prediction (centered curve)"
-
- #empty default implementation: to implement in inherited classes
- },
- getParameters = function()
- {
- "Get parameters list"
-
- params
- }
- )
-)