X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=pkg%2FR%2FF_Average.R;h=6cd2d6e93b3160dbcde46060180314b902a06f90;hb=d2ab47a744d8fb29c03a76a7ca2368dae53f9a57;hp=8a331115960411a8b71e1962168ba0bb309ecd98;hpb=102bcfda4afbb5cfee885cbee0f55545624168fd;p=talweg.git diff --git a/pkg/R/F_Average.R b/pkg/R/F_Average.R index 8a33111..6cd2d6e 100644 --- a/pkg/R/F_Average.R +++ b/pkg/R/F_Average.R @@ -7,33 +7,33 @@ #' averaged to provide a smooth prediction. This forecast will most of the time be wrong, #' but will also look plausible enough. #' +#' @usage # AverageForecaster$new(pjump) +#' #' @docType class #' @format R6 class, inherits Forecaster -#' @alias F_Average +#' @aliases F_Average #' AverageForecaster = R6::R6Class("AverageForecaster", inherit = Forecaster, public = list( - predictShape = function(data, today, memory, horizon, ...) + predictShape = function(data, today, memory, predict_from, horizon, ...) { - avg = rep(0., horizon) + avg = rep(0., (horizon-predict_from+1)) first_day = max(1, today-memory) - index = today-7 + 1 + index <- today nb_no_na_series = 0 repeat { - { - serie_on_horizon = data$getCenteredSerie(index)[1:horizon] - index = index - 7 - }; + index = index - 7 + if (index < first_day) + break + serie_on_horizon = data$getCenteredSerie(index)[predict_from:horizon] 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 }