X-Git-Url: https://git.auder.net/?p=talweg.git;a=blobdiff_plain;f=R%2FF_Level.R;h=a186c1a9193f595b65048b78e7c82509a9fbe99d;hp=e0132ae41c905e289e6211f3df61f14c96dab4f7;hb=e5aa669afc0b71278d1a864fb0d4e2aff8032ef1;hpb=e030a6e31232332b73187eda25870e843152c174 diff --git a/R/F_Level.R b/R/F_Level.R index e0132ae..a186c1a 100644 --- a/R/F_Level.R +++ b/R/F_Level.R @@ -2,8 +2,7 @@ #' #' @title Level Forecaster #' -#' @description Return flat serie of last observed level (on similar day). -#' Inherits \code{\link{ShapeForecaster}} +#' @description Return flat serie of last observed level. Inherits \code{\link{ShapeForecaster}} LevelForecaster = setRefClass( Class = "LevelForecaster", contains = "Forecaster", @@ -13,39 +12,23 @@ LevelForecaster = setRefClass( { callSuper(...) }, - predict = function(today, memory, horizon, all_memory=TRUE, ...) + predict = function(today, memory, horizon, ...) { - #return last (similar) day level, or on all memory if all_memory==TRUE + #return last day level first_day = max(1, today-memory) - index = today-7 + 1 - if (all_memory) - { - sum_level = 0. - nb_series = 0 - } + same_day = ifelse(hasArg("same_day"), list(...)$same_day, TRUE) + index = today - ifelse(same_day,6,0) repeat { { - last_similar_serie = data$getSerie(index)[1:horizon] - index = index - 7 + last_serie = data$getSerie(index)[1:horizon] + index = index - ifelse(same_day,7,1) }; #TODO: next test is too strict - if (!any(is.na(last_similar_serie))) - { - if (all_memory) - { - sum_level = sum_level + mean(last_similar_serie) - nb_series = nb_series + 1 - } - else - return (rep(mean(last_similar_serie), horizon)) - }; + if (!any(is.na(last_serie))) + return (rep(mean(last_serie), horizon)); if (index < first_day) - { - if (all_memory) - return (rep(sum_level / nb_series, horizon)) return (NA) - } } } )