#' @param horizon Number of time steps to predict
#' @param ... Additional parameters for the forecasting models
#'
-#' @return An object of class Forecast
+#' @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
+#' }
#'
#' @examples
#' ts_data = system.file("extdata","pm10_mesures_H_loc.csv",package="talweg")
#' #do_something_with_pred
#' }}
#' @export
-computeForecast = function(data, indices, forecaster, pjump=NULL,
+computeForecast = function(data, indices, forecaster, pjump,
memory=Inf, horizon=data$getStdHorizon(), ...)
{
# (basic) Arguments sanity checks
if (!is.character(forecaster))
stop("forecaster (name) should be of class character") #pjump could be NULL
- pred = list()
- forecaster = new(paste(forecaster,"Forecaster",sep=""), data=data,
- pjump =
- if (is.null(pjump))
- function() {}
- else
- getFromNamespace(paste("get",pjump,"JumpPredict",sep=""), "talweg"))
+ pred = Forecast$new()
+ 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)
{
- #pred$append(...) is slow; TODO: use R6 class
- pred[[length(pred)+1]] = list(
- "serie" = forecaster$predict(today, memory, horizon, ...),
- "params" = forecaster$getParameters(),
- "index" = today
+ pred$append(
+ new_serie = forecaster$predictSerie(today, memory, horizon, ...),
+ new_params = forecaster$getParameters(),
+ new_index = today
)
}
- new("Forecast",pred=pred)
+ pred
}