X-Git-Url: https://git.auder.net/?p=talweg.git;a=blobdiff_plain;f=R%2FS_Average.R;h=819531dbd56f366beb870a5f52facacf074b66dc;hp=9694693ecb052e2666d08cfffc0632280f74eb79;hb=09cf9c19b5c6a04bc23c58b7ac8a4bbae2c6827d;hpb=3d69ff21e577fc7bb082257280661b64536c20e8 diff --git a/R/S_Average.R b/R/S_Average.R index 9694693..819531d 100644 --- a/R/S_Average.R +++ b/R/S_Average.R @@ -2,8 +2,8 @@ #' #' @title Average Shape Forecaster #' -#' @description Return the (pointwise) average of the all the centered day curves in the past. -#' Inherits \code{\link{ShapeForecaster}} +#' @description Return the (pointwise) average of the all the (similar) centered day curves +#' in the past. Inherits \code{\link{ShapeForecaster}} AverageShapeForecaster = setRefClass( Class = "AverageShapeForecaster", contains = "ShapeForecaster", @@ -16,12 +16,24 @@ AverageShapeForecaster = setRefClass( predict = function(today, memory, horizon, ...) { avg = rep(0., horizon) - for (i in (today-memory):today) + first_day = max(1, today-memory) + index = today-7 + 1 + nb_no_na_series = 0 + repeat { - if (!any(is.na(data$getSerie(i)))) - avg = avg + data$getCenteredSerie(i) + { + 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 + avg / nb_no_na_series } ) )