X-Git-Url: https://git.auder.net/rpsls.js?a=blobdiff_plain;f=pkg%2FR%2FF_Neighbors.R;h=27cd23a7c31a5ad5691434568afee26c96499410;hb=9003747badc4416d68cab45ff17de3ecea327942;hp=d889a34ce64b82c51889a5a81322a1a7dec25b2c;hpb=ee8b1b4e3c13f8dcf13a2c8da6a3bef1520c8252;p=talweg.git diff --git a/pkg/R/F_Neighbors.R b/pkg/R/F_Neighbors.R index d889a34..27cd23a 100644 --- a/pkg/R/F_Neighbors.R +++ b/pkg/R/F_Neighbors.R @@ -30,12 +30,8 @@ NeighborsForecaster = R6::R6Class("NeighborsForecaster", fdays, today, horizon, list(...)$h_window, kernel, simtype, TRUE) ) } - # Indices of similar days for cross-validation; TODO: 45 = magic number - sdays = getSimilarDaysIndices(today, data, limit=45, same_season=FALSE) - - cv_days = intersect(fdays,sdays) - # Limit to 20 most recent matching days (TODO: 20 == magic number) - cv_days = sort(cv_days,decreasing=TRUE)[1:min(20,length(cv_days))] + # Indices of similar days for cross-validation; TODO: 20 = magic number + cv_days = getSimilarDaysIndices(today, data, limit=20, same_season=FALSE, days_in=fdays) # Function to optimize h : h |--> sum of prediction errors on last 45 "similar" days errorOnLastNdays = function(h, kernel, simtype) @@ -60,12 +56,12 @@ NeighborsForecaster = R6::R6Class("NeighborsForecaster", if (simtype != "endo") { h_best_exo = optimize( - errorOnLastNdays, c(0,10), kernel=kernel, simtype="exo")$minimum + errorOnLastNdays, c(0,7), kernel=kernel, simtype="exo")$minimum } if (simtype != "exo") { h_best_endo = optimize( - errorOnLastNdays, c(0,10), kernel=kernel, simtype="endo")$minimum + errorOnLastNdays, c(0,7), kernel=kernel, simtype="endo")$minimum } if (simtype == "endo") @@ -172,11 +168,11 @@ NeighborsForecaster = R6::R6Class("NeighborsForecaster", simils_endo else #mix simils_endo * simils_exo + similarities = similarities / sum(similarities) prediction = rep(0, horizon) for (i in seq_along(fdays)) prediction = prediction + similarities[i] * data$getCenteredSerie(fdays[i]+1)[1:horizon] - prediction = prediction / sum(similarities, na.rm=TRUE) if (final_call) {