X-Git-Url: https://git.auder.net/?p=talweg.git;a=blobdiff_plain;f=R%2FD_Neighbors.R;h=dba5f378a99661dee36edb45443584ca7e4e249d;hp=f7bb5a801ca8a04ffe6b05af19f0631d37f13fa5;hb=09cf9c19b5c6a04bc23c58b7ac8a4bbae2c6827d;hpb=3d69ff21e577fc7bb082257280661b64536c20e8 diff --git a/R/D_Neighbors.R b/R/D_Neighbors.R index f7bb5a8..dba5f37 100644 --- a/R/D_Neighbors.R +++ b/R/D_Neighbors.R @@ -4,14 +4,18 @@ #' @inheritParams getZeroDeltaForecast getNeighborsDeltaForecast = function(data, today, memory, horizon, shape_params, ...) { - if (any(is.na(shape_params$weights) | is.na(shape_params$indices))) + first_day = max(1, today-memory) + filter = shape_params$indices >= first_day + indices = shape_params$indices[filter] + weights = shape_params$weights[filter] + if (any(is.na(weights) | is.na(indices))) return (NA) - gaps = sapply(shape_params$indices, function(i) { + gaps = sapply(indices, function(i) { data$getSerie(i+1)[1] - tail(data$getSerie(i), 1) }) - scal_product = shape_params$weights * gaps - norm_fact = sum( shape_params$weights[!is.na(scal_product)] ) + scal_product = weights * gaps + norm_fact = sum( weights[!is.na(scal_product)] ) sum(scal_product, na.rm=TRUE) / norm_fact }