reorganize folder
[talweg.git] / pkg / R / F_Average.R
diff --git a/pkg/R/F_Average.R b/pkg/R/F_Average.R
new file mode 100644 (file)
index 0000000..dab156a
--- /dev/null
@@ -0,0 +1,39 @@
+#' @include Forecaster.R
+#'
+#' @title Average Forecaster
+#'
+#' @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",
+
+       methods = list(
+               initialize = function(...)
+               {
+                       callSuper(...)
+               },
+               predictShape = function(today, memory, horizon, ...)
+               {
+                       avg = rep(0., horizon)
+                       first_day = max(1, today-memory)
+                       index = today-7 + 1
+                       nb_no_na_series = 0
+                       repeat
+                       {
+                               {
+                                       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 / nb_no_na_series
+               }
+       )
+)