Commit | Line | Data |
---|---|---|
25b75559 | 1 | #' Forecast |
3d69ff21 | 2 | #' |
25b75559 | 3 | #' Forecast encapsulation |
3d69ff21 | 4 | #' |
25b75559 BA |
5 | #' @docType class |
6 | #' @importFrom R6 R6Class | |
7 | #' | |
a66a84b5 BA |
8 | #' @field .pred List with \itemize{ |
9 | #' \item serie: forecasted serie | |
10 | #' \item params: corresponding list of parameters (weights, neighbors...) | |
98e958ca | 11 | #' \item index_in_data: corresponding index in data object} |
a66a84b5 BA |
12 | #' @field .dates vector of day indices where forcast occurs |
13 | #' | |
98e958ca BA |
14 | #' @section Methods: |
15 | #' \describe{ | |
16 | #' \item{\code{initialize(dates)}}{ | |
17 | #' Initialize a Forecast object with a series of date indices.} | |
18 | #' \item{\code{getSize()}}{ | |
19 | #' Return number of individual forecasts.} | |
20 | #' \item{\code{append(new_serie, new_params, new_index_in_data)}}{ | |
21 | #' Acquire a new individual forecast, with its (optimized) parameters and the corresponding | |
5d83d815 | 22 | #' index in the dataset.} |
98e958ca BA |
23 | #' \item{\code{getDates()}}{ |
24 | #' Get dates where forecast occurs.} | |
25 | #' \item{\code{getSerie(index)}}{ | |
26 | #' Get forecasted serie at specified index.} | |
27 | #' \item{\code{getParams(index)}}{ | |
28 | #' Get parameters at specified index (for 'Neighbors' method).} | |
29 | #' \item{\code{getIndexInData(index)}}{ | |
30 | #' Get index in data which corresponds to current forecast.} | |
31 | #' } | |
25b75559 BA |
32 | Forecast = R6::R6Class("Forecast", |
33 | private = list( | |
a66a84b5 | 34 | .pred = list(), |
98e958ca | 35 | .dates = integer(0) #store dates as integers (from 1970-01-01) |
3d69ff21 | 36 | ), |
25b75559 BA |
37 | public = list( |
38 | initialize = function(dates) | |
5d83d815 BA |
39 | { |
40 | private$.dates <- dates | |
41 | invisible(self) | |
42 | }, | |
1e20780e | 43 | getSize = function() |
5d83d815 | 44 | length(private$.pred) |
25b75559 | 45 | , |
5d83d815 BA |
46 | append = function(new_serie, new_params, new_index_in_data) |
47 | { | |
48 | private$.pred[[length(private$.pred)+1]] <- | |
49 | list("serie"=new_serie, "params"=new_params, "index_in_data"=new_index_in_data) | |
50 | }, | |
25b75559 | 51 | getDates = function() |
98e958ca | 52 | as.Date( private$.dates, origin="1970-01-01" ) |
25b75559 | 53 | , |
3d69ff21 | 54 | getSerie = function(index) |
5d83d815 BA |
55 | { |
56 | if (is(index,"Date")) | |
57 | index = match(index, private$.dates) | |
58 | private$.pred[[index]]$serie | |
59 | }, | |
3d69ff21 | 60 | getParams = function(index) |
5d83d815 BA |
61 | { |
62 | if (is(index,"Date")) | |
63 | index = match(index, private$.dates) | |
64 | private$.pred[[index]]$params | |
65 | }, | |
3d69ff21 | 66 | getIndexInData = function(index) |
5d83d815 BA |
67 | { |
68 | if (is(index,"Date")) | |
69 | index = match(index, private$.dates) | |
70 | private$.pred[[index]]$index_in_data | |
71 | } | |
3d69ff21 BA |
72 | ) |
73 | ) |