+++ /dev/null
-#' @include Forecaster.R
-#'
-#' @title Average Forecaster
-#'
-#' @description Return the (pointwise) average of the all the (similar) centered day curves
-#' in the past. Inherits \code{\link{Forecaster}}
-AverageForecaster = setRefClass(
- Class = "AverageForecaster",
- contains = "Forecaster",
-
- methods = list(
- initialize = function(...)
- {
- callSuper(...)
- },
- predict = function(today, memory, horizon, ...)
- {
- predicted_shape = predictShape(today, memory, horizon, ...)
- #Take care of never passing same_day==FALSE (when pjump == Persistence)
- predicted_delta =
- if (#as.character(substitute(pjump))=="Persistence" && #TODO: doesn't work
- hasArg("same_day") && list(...)$same_day==FALSE)
- {
- args = list(...)
- args$same_day = TRUE
- do.call(pjump, append(list("today"=today,"memory"=memory,"horizon"=horizon), args))
- }
- else
- pjump(data, today, memory, horizon, params, ...)
- predicted_shape + tail(data$getSerie(today),1) - predicted_shape[1] + predicted_delta
- },
- predictShape = function(today, memory, horizon, ...)
- {
- avg = rep(0., horizon)
- first_day = max(1, today-memory)
- index = today-7 + 1
- nb_no_na_series = 0
- repeat
- {
- {
- serie_on_horizon = data$getCenteredSerie(index)[1:horizon]
- index = index - 7
- };
- if (!any(is.na(serie_on_horizon)))
- {
- avg = avg + serie_on_horizon
- nb_no_na_series = nb_no_na_series + 1
- };
- if (index < first_day)
- break
- }
- avg / nb_no_na_series
- }
- )
-)