X-Git-Url: https://git.auder.net/?p=talweg.git;a=blobdiff_plain;f=pkg%2FR%2FF_Average.R;h=8f81747fbca9a863a0ac9c882dca87298a6bb63c;hp=ba0f0036441fd8c9c402d263169d3e36053cc1fc;hb=3ddf1c12af0c167fe7d3bb59e63258550270cfc5;hpb=44a9990b6d608ffcd2e99d5193fa8b9e6cbdb436 diff --git a/pkg/R/F_Average.R b/pkg/R/F_Average.R index ba0f003..8f81747 100644 --- a/pkg/R/F_Average.R +++ b/pkg/R/F_Average.R @@ -1,35 +1,21 @@ -#' @include Forecaster.R +#' Average Forecaster #' -#' @title Average Forecaster +#' Pointwise average of all the series of the same day of week in the past. #' -#' @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", +#' For example, if the current day (argument "today") is a tuesday, then all series +#' corresponding to wednesdays in the past (until the beginning or memory limit) are +#' averaged to provide a smooth prediction. This forecast will most of the time be wrong, +#' but will also look plausible enough. +#' +#' @docType class +#' @format R6 class, inherits Forecaster +#' @aliases F_Average +#' +AverageForecaster = R6::R6Class("AverageForecaster", + inherit = 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, ...) + public = list( + predictShape = function(data, today, memory, horizon, ...) { avg = rep(0., horizon) first_day = max(1, today-memory)