X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=pkg%2FR%2FJ_Neighbors.R;h=ceea8037267ee610ef3f09f1ef75bf75b8a8223e;hb=8ab6420267542d34b7428f978aa76ba939b9754b;hp=351fbf9dc3d004f73e4c21bdb51fe69531005e07;hpb=72b9c50162bcdcf6c99fbb8b2ec6ea9ba98379cb;p=talweg.git diff --git a/pkg/R/J_Neighbors.R b/pkg/R/J_Neighbors.R index 351fbf9..ceea803 100644 --- a/pkg/R/J_Neighbors.R +++ b/pkg/R/J_Neighbors.R @@ -1,21 +1,31 @@ -#' Obtain jump forecast by the Neighbors method +#' getNeighborsJumpPredict +#' +#' Apply optimized weights on gaps observed on selected neighbors. +#' This jump prediction method can only be used in conjunction with the Neighbors +#' Forecaster, because it makes use of the optimized parameters to re-apply the weights +#' on the jumps observed at days interfaces of the past neighbors. #' #' @inheritParams computeForecast #' @inheritParams getZeroJumpPredict #' -getNeighborsJumpPredict = function(data, today, memory, horizon, params, ...) +#' @aliases J_Neighbors +#' +getNeighborsJumpPredict = function(data, today, memory, predict_from, horizon, + params, ...) { first_day = max(1, today-memory) filter = (params$indices >= first_day) indices = params$indices[filter] weights = params$weights[filter] - realtime = ifelse(hasArg("realtime"), list(...)$realtime, FALSE) - if (any(is.na(weights) | is.na(indices))) + if (is.na(indices[1])) return (NA) gaps = sapply(indices, function(i) { - data$getSerie(i+1,hat=(realtime && i+1==today))[1] - tail(data$getSerie(i), 1) + if (predict_from >= 2) + data$getSerie(i)[predict_from] - data$getSerie(i)[predict_from-1] + else + head(data$getSerie(i),1) - tail(data$getSerie(i-1),1) }) scal_product = weights * gaps norm_fact = sum( weights[!is.na(scal_product)] )