- first_day = max(today - memory, 1)
- # The first day is generally not complete:
- if (length(data$getCenteredSerie(1)) < length(data$getCenteredSerie(2)))
- first_day = 2
-
- # Predict only on (almost) non-NAs days
- nas_in_serie = is.na(data$getSerie(today))
- if (any(nas_in_serie))
- {
- #TODO: better define "repairing" conditions (and method)
- if (sum(nas_in_serie) >= length(nas_in_serie) / 2)
- return (NA)
- for (i in seq_along(nas_in_serie))
- {
- if (nas_in_serie[i])
- {
- #look left
- left = i-1
- while (left>=1 && nas_in_serie[left])
- left = left-1
- #look right
- right = i+1
- while (right<=length(nas_in_serie) && nas_in_serie[right])
- right = right+1
- #HACK: modify by-reference Data object...
- data$data[[today]]$serie[i] <<-
- if (left==0) data$data[[today]]$serie[right]
- else if (right==0) data$data[[today]]$serie[left]
- else (data$data[[today]]$serie[left] + data$data[[today]]$serie[right]) / 2.
- }
- }
- }
-
- # Determine indices of no-NAs days followed by no-NAs tomorrows
- fdays_indices = c()
- for (i in first_day:(today-1))
- {
- if ( !any(is.na(data$getSerie(i)) | is.na(data$getSerie(i+1))) )
- fdays_indices = c(fdays_indices, i)
- }
-
- #GET OPTIONAL PARAMS
- # Similarity computed with exogenous variables ? endogenous ? both ? ("exo","endo","mix")
- simtype = ifelse(hasArg("simtype"), list(...)$simtype, "mix")
- simthresh = ifelse(hasArg("simthresh"), list(...)$simthresh, 0.)