Commit | Line | Data |
---|---|---|
25b75559 | 1 | #' Forecaster |
e030a6e3 | 2 | #' |
25b75559 | 3 | #' Forecaster (abstract class, implemented by all forecasters) |
e030a6e3 | 4 | #' |
a66a84b5 BA |
5 | #' @docType class |
6 | #' @importFrom R6 R6Class | |
7 | #' | |
e030a6e3 BA |
8 | #' @field params List of computed parameters, for post-run analysis (dev) |
9 | #' @field data Dataset, object of class Data | |
10 | #' @field pjump Function: how to predict the jump at day interface ? | |
25b75559 | 11 | #' |
a66a84b5 BA |
12 | #' @section Methods: \describe{ |
13 | #' \item{\code{initialize(data, pjump)}} | |
14 | #' {Initialize a Forecaster object with a Data object and a jump prediction function.} | |
15 | #' \item{\code{predictSerie(today,memory,horizon,...)}} | |
af3b84f4 BA |
16 | #' {Predict a new serie of \code{horizon} values at day index \code{today} |
17 | #' using \code{memory} days in the past.} | |
a66a84b5 | 18 | #' \item{\code{predictShape(today,memory,horizon,...)}} |
af3b84f4 BA |
19 | #' {Predict a new shape of \code{horizon} values at day index \code{today} |
20 | #' using \code{memory} days in the past.} | |
a66a84b5 | 21 | #' \item{\code{getParameters()}} |
5d83d815 | 22 | #' {Return (internal) parameters.}} |
25b75559 BA |
23 | Forecaster = R6::R6Class("Forecaster", |
24 | private = list( | |
a66a84b5 BA |
25 | .params = list(), |
26 | .data = NULL, | |
27 | .pjump = NULL | |
e030a6e3 | 28 | ), |
25b75559 BA |
29 | public = list( |
30 | initialize = function(data, pjump) | |
a66a84b5 BA |
31 | { |
32 | private$.data <- data | |
33 | private$.pjump <- pjump | |
34 | invisible(self) | |
35 | }, | |
25b75559 | 36 | predictSerie = function(today, memory, horizon, ...) |
a66a84b5 BA |
37 | { |
38 | # Parameters (potentially) computed during shape prediction stage | |
5d83d815 | 39 | predicted_shape = self$predictShape(today, memory, horizon, ...) |
af3b84f4 BA |
40 | predicted_delta = private$.pjump( |
41 | private$.data, today, memory, horizon, private$.params, ...) | |
a66a84b5 | 42 | # Predicted shape is aligned it on the end of current day + jump |
af3b84f4 BA |
43 | predicted_shape + tail(private$.data$getSerie(today),1) - |
44 | predicted_shape[1] + predicted_delta | |
a66a84b5 | 45 | }, |
e030a6e3 | 46 | predictShape = function(today, memory, horizon, ...) |
5d83d815 | 47 | NULL #empty default implementation: to implement in inherited classes |
25b75559 | 48 | , |
e030a6e3 | 49 | getParameters = function() |
a66a84b5 | 50 | private$.params |
e030a6e3 BA |
51 | ) |
52 | ) |