X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=pkg%2FR%2FF_Average.R;h=4d395ac3a9d3491b9fa77fcd0f29ba1b626b430c;hb=81cb8b9e38ae82f2c108f11df56d53c9e29366ed;hp=6cd2d6e93b3160dbcde46060180314b902a06f90;hpb=d2ab47a744d8fb29c03a76a7ca2368dae53f9a57;p=talweg.git diff --git a/pkg/R/F_Average.R b/pkg/R/F_Average.R index 6cd2d6e..4d395ac 100644 --- a/pkg/R/F_Average.R +++ b/pkg/R/F_Average.R @@ -3,9 +3,9 @@ #' Pointwise average of all the series of the same day of week in the past. #' #' 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. +#' corresponding to tuesday in the past (until the beginning or memory limit) -- and in +#' the future if 'opera' is FALSE -- are 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) #' @@ -23,6 +23,7 @@ AverageForecaster = R6::R6Class("AverageForecaster", first_day = max(1, today-memory) index <- today nb_no_na_series = 0 + opera = ifelse(hasArg("opera"), list(...)$opera, FALSE) repeat { index = index - 7 @@ -35,6 +36,23 @@ AverageForecaster = R6::R6Class("AverageForecaster", nb_no_na_series = nb_no_na_series + 1 } } + if (!opera) + { + # The same, in the future + index <- today + repeat + { + index = index + 7 + if (index > data$getSize()) + 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 + } + } + } avg / nb_no_na_series } )