name instead of year; ipynb generator debugged, with logging
[talweg.git] / pkg / R / computeForecast.R
index 0585e1b..8cf8861 100644 (file)
@@ -1,6 +1,6 @@
-#' @title get Forecast
+#' Compute forecast
 #'
-#' @description Predict time-series curves for the selected days indices (lines in data).
+#' Predict time-series curves for the selected days indices (lines in data).
 #'
 #' @param data Dataset, object of type \code{Data} output of \code{getData}
 #' @param indices Days indices where to forecast (the day after)
 #' @param horizon Number of time steps to predict
 #' @param ... Additional parameters for the forecasting models
 #'
-#' @return A list with the following items
-#' \itemize{
-#'   \item serie: forecasted serie
-#'   \item params: corresponding list of parameters (weights, neighbors...)
-#'   \item index: corresponding index in data object
-#' }
+#' @return An object of class Forecast
 #'
 #' @examples
 #' ts_data = system.file("extdata","pm10_mesures_H_loc.csv",package="talweg")
@@ -50,23 +45,22 @@ computeForecast = function(data, indices, forecaster, pjump,
        horizon = as.integer(horizon)[1]
        if (horizon<=0 || horizon>length(data$getCenteredSerie(2)))
                stop("Horizon too short or too long")
-       indices = sapply( seq_along(indices), function(i) dateIndexToInteger(indices[i], data) )
-       if (any(indices<=0 | indices>data$getSize()))
+       integer_indices = sapply(indices, function(i) dateIndexToInteger(i,data))
+       if (any(integer_indices<=0 | integer_indices>data$getSize()))
                stop("Indices out of range")
-       indices = sapply(indices, dateIndexToInteger, data)
-       if (!is.character(forecaster))
-               stop("forecaster (name) should be of class character") #pjump could be NULL
+       if (!is.character(forecaster) || !is.character(pjump))
+               stop("forecaster (name) and pjump (function) should be of class character")
 
-       pred = Forecast$new()
+       pred = Forecast$new( sapply(indices, function(i) integerIndexToDate(i,data)) )
        forecaster_class_name = getFromNamespace(paste(forecaster,"Forecaster",sep=""), "talweg")
-       forecaster = forecaster_class_name$new(data=data,
-               pjump = getFromNamespace(paste("get",pjump,"JumpPredict",sep=""), "talweg"))
-       for (today in indices)
+       forecaster = forecaster_class_name$new( #.pjump =
+               getFromNamespace(paste("get",pjump,"JumpPredict",sep=""), "talweg"))
+       for (today in integer_indices)
        {
                pred$append(
-                       new_serie = forecaster$predictSerie(today, memory, horizon, ...),
+                       new_serie = forecaster$predictSerie(data, today, memory, horizon, ...),
                        new_params = forecaster$getParameters(),
-                       new_index = today
+                       new_index_in_data = today
                )
        }
        pred