fixes and improvements
[talweg.git] / R / S_Average.R
index 9694693..819531d 100644 (file)
@@ -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
                }
        )
 )