-
Notifications
You must be signed in to change notification settings - Fork 59
Preparing predictor data
The selection of informative and robust predictors is one of the most critical and time-consuming tasks for perfect-prog downscaling experiments.
Broadly speaking, two main configurations (and their combinations) have been used in the literature :
- Using raw (as they are) atmospheric fields for a given spatial domain (typically continental- or national-wide for downscaling monthly and daily data, respectively). In this case, local information from the nearest griboxes is typically used as predictor for a given station in order to reduce the dimension of the predictor set. Alternatively, step-wise or regularized methods can be used to automatically selected the predictors from the full domain. However, in this case, a different predictor set could result for different stations (e.g. different variables), thus hampering the interpretation of results.
- Using principal components obtained from these fields. This can be either a number of principal components calculated upon each particular variable (e.g. explaining 95% of the variability), and/or a combined PC considering a combination of different predictor variables. These predictors convey large-scale information to the predictor set.
The large number of options required for a fine-tuning of the predictors (spatial, local or a combination of both) for a downscaling method requires a flexible, yet easily configurable interface, enabling users to launch complex experiments for testing different predictor setups. prepareData
has been designed to this aim.
In the climate4R
bundle (see e.g. Cofiño et al. 2017), atmospheric variables are stored in the so called data grids. In order to efficiently handle multiple variables used as predictors in downscaling experiments, "stacks" of grids are used. These are known as multiGrids, and can be obtained using the constructor makeMultiGrid
from a set of -dimensionally consistent- grids.
Daily data from the NCEP reanalysis (Kalnay et al. 1996) are used as example. In particular, a domain centered on the Iberian Peninsula is considered, and three variables (mean sea-level pressure psl
, specific humidity at 850mb hus850
and air temperature at 850mb ta850
) will be used as predictors. These are built-in example datasets from the package transformeR
of the climate4R
bundle. See for instance help("NCEP_Iberia_hus850", package = "transformeR")
for further details.
library(transformeR)
data("NCEP_Iberia_hus850", "NCEP_Iberia_psl", "NCEP_Iberia_ta850")
Here we use function spatialPlot
from visualizeR
(also part of the climate4R bundle) to visualize grids and/or as in this case multiGrids:
require(visualizeR)
spatialPlot(climatology(NCEP_Iberia_psl), backdrop.theme = "coastline",
main = "Mean DJF SLP (1983-2002)")
spatialPlot(climatology(NCEP_Iberia_hus850), backdrop.theme = "coastline",
main = "Mean DJF hus850 (1983-2002)")
spatialPlot(climatology(NCEP_Iberia_ta850), backdrop.theme = "coastline",
main = "Mean DJF ta850 (1983-2002)")
The grids are already spatially and temporally consistent, so they can be stacked in a multiGrid structure:
x <- makeMultiGrid(NCEP_Iberia_hus850, NCEP_Iberia_psl, NCEP_Iberia_ta850)
The predictands correspond to the observations used for downscaling. These are typically meteorological station data or interpolated gridded datasets. In this example, we use a subset of stations used in a large intercomparison experiment of downscaling methods performed in the framework of the COST Action VALUE (Maraun et al. 2015). The target variable is daily precipitation.
data("VALUE_Iberia_pr")
y <- VALUE_Iberia_pr
spatialPlot(climatology(y), backdrop.theme = "countries",
cex = 1.5, colorkey = TRUE,
main = "Mean Winter daily precip (mm/day, 1983-2002")
Although the aim of this example is preparing only the predictors (the predictands are not manipulated), the information of the predictand is always required in order to ensure the spatio-temporal consistency of the experiment. The function handles internally non-overlapping temporal periods, ensuring that there is a perfect match between predictors and predictand prior to model calibration.
library(downscaleR)
In this section we briefly describe the main charateristics of the output object of prepareData
. It is in essence a named list with different components, whose content varies depending on the predictor setup:
-
y
: This is the predictand object. If required, it is a subset of the original one in order to ensure the temporal consistency with the predictors (this is achieved internally through the helper functiongetTemporalIntersection
intransformeR
). -
x.global
: Is the global predictor data matrix. In this example, it is a matrix in which rows correspond to times (days in this case) and the columns to locations, arranged via the internal helpertransformeR::array3Dto2Dmat
. If there is more than one variable as predictor, as in the example, the matrices for each variable are just binded by columns. In other cases, fopr instance when using PCs, this matrix corresponds to the selected combined PC (rows are times, and columns are PCs, in decreasing order of explained variance according to the user specifications). -
x.local
: in case local predictors are used, the local information is included here. This is a list of matrices, of the same longitude as the number of locations in the predictand, each one containing the local information that will be appended to theglobal
matrix. Note that for extensibility to the definition of localnewdata
information for model prediction, it is structured as a nested list of the formsites --> members
, although in the case of predictors, there is only one single member and this dimension in this case is not needed (it is necessary however in order to make predictions with multimember models, e.g. seasonal forecasts). -
pca
: This element stores the whole PCA (this is the output of thetransformeR::prinComp
function). It contains metadata required in subsequent steps. - In addition, several attributes are appended to the output to aid in the traceability of the predictor structure.
These elements will be next shown for case studies, building upon the example datasets descriibed in the previous section.
In this situation, the multigrid is directly passed to prepareData
. Note that only x
(predictors multigrid) and y
(predictand, stations) are passed to the function, while the rest of arguments are left with their default value NULL
(they could be omitted):
out <- prepareData(x = x,
y = y,
global.vars = NULL,
spatial.predictors = NULL,
local.predictors = NULL)
str(out)
## List of 4
## $ y :List of 5
## ..$ Variable:List of 1
## .. ..$ varName: chr "tmean"
## .. ..- attr(*, "subset")= chr "time"
## .. ..- attr(*, "time_subset")= chr "getTemporalIntersection"
## ..$ Data : num [1:1805, 1:11] 2.9 3.4 1 0.6 4.3 8 10.1 9.4 9.8 10.4 ...
## .. ..- attr(*, "dimensions")= chr [1:2] "time" "loc"
## ..$ xyCoords:'data.frame': 11 obs. of 2 variables:
## .. ..$ x: num [1:11] -6.73 -9.15 -6.83 -4.49 -4.01 ...
## .. ..$ y: num [1:11] 41.8 38.7 38.9 36.7 40.8 ...
## .. ..- attr(*, "projection")= chr "+proj=longlat +init=epsg:4326 +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
## .. ..- attr(*, "resX")= num 0
## .. ..- attr(*, "resY")= num 0
## ..$ Dates :List of 2
## .. ..$ start: chr [1:1805] "1982-12-01 00:00:00" "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" ...
## .. ..$ end : chr [1:1805] "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" "1982-12-05 00:00:00" ...
## .. ..- attr(*, "season")= int [1:3] 12 1 2
## ..$ Metadata:List of 4
## .. ..$ station_id: chr [1:11] "000212" "000214" "000229" "000231" ...
## .. ..$ name : chr [1:11] "BRAGANCA" "LISBOA-GEOFISICA" "BADAJOZ-TALAVERALAREAL" "MALAGA" ...
## .. ..$ altitude : int [1:11] 690 77 185 7 1894 251 44 151 370 8 ...
## .. ..$ source : chr [1:11] "ECA&D" "ECA&D" "ECA&D" "ECA&D" ...
## $ x.global: num [1:1805, 1:105] 0.00183 0.00418 0.00498 0.00504 0.00383 ...
## $ x.local : NULL
## $ pca : NULL
## - attr(*, "predictor.vars")= chr [1:3] "hus@850" "psl" "ta@850"
## - attr(*, "nature")= chr "raw"
## - attr(*, "globalPred.vars")= chr [1:3] "hus@850" "psl" "ta@850"
## - attr(*, "dates")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## - attr(*, "xyCoords")=List of 2
## ..$ x: num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..$ y: num [1:5] 35 37.5 40 42.5 45
str(attributes(out))
## List of 6
## $ names : chr [1:4] "y" "x.global" "x.local" "pca"
## $ predictor.vars : chr [1:3] "hus@850" "psl" "ta@850"
## $ nature : chr "raw"
## $ globalPred.vars: chr [1:3] "hus@850" "psl" "ta@850"
## $ dates : chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## $ xyCoords :List of 2
## ..$ x: num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..$ y: num [1:5] 35 37.5 40 42.5 45
In this example, instead of using the raw fields as predictors, we will use principal components. The tuning of the principal component analysis can be undertaken by passing the different possible arguments admitted by transformeR::prinComp
in the form of a named list, which are detailed in the help of the function prepareData
.
Note that here we will use the first 5 PCs of the 3 input variables contained in the multiGrid, which are:
getVarNames(x)
## [1] "hus@850" "psl" "ta@850"
If we use the first 5 PCs of the 3 input variables, hence:
out <- prepareData(x = x,
y = y,
spatial.predictors = list(n.eofs = c(10,5,5))
)
In this case, the output element pca
contains the full output of prinComp
, that will be needed in subsequent steps of the downscaling. Note that now, the x.global
element of the output contains the PC matrix of all the variables in the input grid, and thus it has n
.
str(out)
## List of 4
## $ y :List of 5
## ..$ Variable:List of 1
## .. ..$ varName: chr "tmean"
## .. ..- attr(*, "subset")= chr "time"
## .. ..- attr(*, "time_subset")= chr "getTemporalIntersection"
## ..$ Data : num [1:1805, 1:11] 2.9 3.4 1 0.6 4.3 8 10.1 9.4 9.8 10.4 ...
## .. ..- attr(*, "dimensions")= chr [1:2] "time" "loc"
## ..$ xyCoords:'data.frame': 11 obs. of 2 variables:
## .. ..$ x: num [1:11] -6.73 -9.15 -6.83 -4.49 -4.01 ...
## .. ..$ y: num [1:11] 41.8 38.7 38.9 36.7 40.8 ...
## .. ..- attr(*, "projection")= chr "+proj=longlat +init=epsg:4326 +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
## .. ..- attr(*, "resX")= num 0
## .. ..- attr(*, "resY")= num 0
## ..$ Dates :List of 2
## .. ..$ start: chr [1:1805] "1982-12-01 00:00:00" "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" ...
## .. ..$ end : chr [1:1805] "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" "1982-12-05 00:00:00" ...
## .. ..- attr(*, "season")= int [1:3] 12 1 2
## ..$ Metadata:List of 4
## .. ..$ station_id: chr [1:11] "000212" "000214" "000229" "000231" ...
## .. ..$ name : chr [1:11] "BRAGANCA" "LISBOA-GEOFISICA" "BADAJOZ-TALAVERALAREAL" "MALAGA" ...
## .. ..$ altitude : int [1:11] 690 77 185 7 1894 251 44 151 370 8 ...
## .. ..$ source : chr [1:11] "ECA&D" "ECA&D" "ECA&D" "ECA&D" ...
## $ x.global: num [1:1805, 1:20] -0.148 0.679 1.757 2.195 4.994 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:20] "PC1" "PC2" "PC3" "PC4" ...
## $ x.local : NULL
## $ pca :List of 3
## ..$ hus@850:List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:10] -0.148 0.679 1.757 2.195 4.994 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:10] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ EOFs: num [1:35, 1:10] 0.129 0.156 0.168 0.151 0.103 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:10] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 0.00329 0.00323 0.00338 0.00343 0.00339 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 0.00148 0.0015 0.00154 0.00153 0.00148 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:10] 0.429 0.611 0.724 0.8 0.843 ...
## ..$ psl :List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:5] 0.299 -0.809 -2.795 -6.589 -9.13 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:5] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ EOFs: num [1:35, 1:5] -0.142 -0.16 -0.169 -0.165 -0.149 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:5] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 102167 102202 102168 102069 101910 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 714 818 898 991 1119 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:5] 0.822 0.912 0.979 0.986 0.991
## ..$ ta@850 :List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:5] -4.54 -4.83 -4.32 -1.18 2.52 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:5] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ EOFs: num [1:35, 1:5] 0.154 0.157 0.154 0.149 0.136 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:5] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 280 279 277 277 276 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 3.4 3.27 3.21 3.33 3.53 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:5] 0.687 0.835 0.935 0.958 0.974
## ..- attr(*, "level")= num [1:3] 850 NA 850
## ..- attr(*, "dates_start")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## ..- attr(*, "dates_end")= chr [1:1805] "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" "1982-12-05 GMT" ...
## ..- attr(*, "season")= int [1:3] 12 1 2
## ..- attr(*, "xCoords")= num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..- attr(*, "yCoords")= num [1:5] 35 37.5 40 42.5 45
## ..- attr(*, "projection")= chr "LatLonProjection"
## - attr(*, "spatialPred.pars")=List of 1
## ..$ n.eofs: num [1:3] 10 5 5
## - attr(*, "predictor.vars")= chr [1:3] "hus@850" "psl" "ta@850"
## - attr(*, "nature")= chr "spatial"
## - attr(*, "globalPred.vars")= chr [1:3] "hus@850" "psl" "ta@850"
## - attr(*, "dates")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## - attr(*, "xyCoords")=List of 2
## ..$ x: num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..$ y: num [1:5] 35 37.5 40 42.5 45
Finally, it is possible to specify local predictors using the corresponding argument. It is passed as a named list with the following elements:
-
vars
: the names of the variables to be used as local predictors -
n
: the number of nearest points/grid-boxes to the predcitand location to be used -
fun
: the aggregation function of the selected neighbours (if any). IfNULL
(the default), the nearest neighbours are not aggregated but just appended to the predictor matrix.
TIP: In order to select variables, either for local predictors or for multigrid subsetting via global.vars
, the helper getVarNames
from transformeR
may be useful:
getVarNames(x)
## [1] "hus@850" "psl" "ta@850"
Next, we will use the raw fields of air temperature at 850mb and sea-level pressure as global predictors (global.vars = c("ta@850", "psl")
). In addition, specific humidity at 850mb will be used as a local predictor (vars = "hus@850"
). In this example, we will consider the 4 closest points to the predictand location (n =4
), and no aggregation of the neighbours is undertaken (fun = NULL
, this argument could be ommited as this is the default).
out <- prepareData(x = x,
y = y,
global.vars = c("ta@850", "psl"),
local.predictors = list(vars = "hus@850",
n = 4,
fun = NULL)
)
str(out)
## List of 4
## $ y :List of 5
## ..$ Variable:List of 1
## .. ..$ varName: chr "tmean"
## .. ..- attr(*, "subset")= chr "time"
## .. ..- attr(*, "time_subset")= chr "getTemporalIntersection"
## ..$ Data : num [1:1805, 1:11] 2.9 3.4 1 0.6 4.3 8 10.1 9.4 9.8 10.4 ...
## .. ..- attr(*, "dimensions")= chr [1:2] "time" "loc"
## ..$ xyCoords:'data.frame': 11 obs. of 2 variables:
## .. ..$ x: num [1:11] -6.73 -9.15 -6.83 -4.49 -4.01 ...
## .. ..$ y: num [1:11] 41.8 38.7 38.9 36.7 40.8 ...
## .. ..- attr(*, "projection")= chr "+proj=longlat +init=epsg:4326 +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
## .. ..- attr(*, "resX")= num 0
## .. ..- attr(*, "resY")= num 0
## ..$ Dates :List of 2
## .. ..$ start: chr [1:1805] "1982-12-01 00:00:00" "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" ...
## .. ..$ end : chr [1:1805] "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" "1982-12-05 00:00:00" ...
## .. ..- attr(*, "season")= int [1:3] 12 1 2
## ..$ Metadata:List of 4
## .. ..$ station_id: chr [1:11] "000212" "000214" "000229" "000231" ...
## .. ..$ name : chr [1:11] "BRAGANCA" "LISBOA-GEOFISICA" "BADAJOZ-TALAVERALAREAL" "MALAGA" ...
## .. ..$ altitude : int [1:11] 690 77 185 7 1894 251 44 151 370 8 ...
## .. ..$ source : chr [1:11] "ECA&D" "ECA&D" "ECA&D" "ECA&D" ...
## $ x.global: num [1:1805, 1:70] 102168 102320 102595 102930 103260 ...
## $ x.local :List of 11
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00223 0.00293 0.00312 0.00389 0.00631 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00114 0.00337 0.00468 0.00554 0.00598 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.0019 0.00328 0.00385 0.0035 0.00416 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00287 0.00445 0.00462 0.00295 0.00245 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00264 0.00294 0.00254 0.00218 0.00408 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00401 0.00372 0.00401 0.00329 0.00464 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00378 0.00284 0.00342 0.00351 0.00349 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00391 0.00339 0.00382 0.00369 0.00337 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00262 0.00341 0.00342 0.0067 0.00797 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00378 0.00284 0.00342 0.00351 0.00349 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00264 0.00294 0.00254 0.00218 0.00408 ...
## ..- attr(*, "local.index.list")=List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## $ pca : NULL
## - attr(*, "localPred.pars")=List of 4
## ..$ vars : chr "hus@850"
## ..$ n : num 4
## ..$ fun : NULL
## ..$ local.index.list:List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## - attr(*, "predictor.vars")= chr [1:3] "ta@850" "psl" "hus@850"
## - attr(*, "nature")= chr "local"
## - attr(*, "globalPred.vars")= chr [1:2] "psl" "ta@850"
## - attr(*, "dates")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## - attr(*, "xyCoords")=List of 2
## ..$ x: num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..$ y: num [1:5] 35 37.5 40 42.5 45
Instead of using all 4 neighbours sepparately, these can be aggregated, for instance using their average value as local predictor (fun = list(FUN = "mean")
), or any other user-defined function, by adding all the additional arguments needed in the fun
list (for instance, the 90th percentile value would be specified as fun = list(FUN = "quantile", prob = .9)
, etc).
out <- prepareData(x = x,
y = y,
global.vars = c("ta@850", "psl"),
local.predictors = list(vars = "hus@850",
n = 4,
fun = list(FUN = "mean"))
)
str(out)
## List of 4
## $ y :List of 5
## ..$ Variable:List of 1
## .. ..$ varName: chr "tmean"
## .. ..- attr(*, "subset")= chr "time"
## .. ..- attr(*, "time_subset")= chr "getTemporalIntersection"
## ..$ Data : num [1:1805, 1:11] 2.9 3.4 1 0.6 4.3 8 10.1 9.4 9.8 10.4 ...
## .. ..- attr(*, "dimensions")= chr [1:2] "time" "loc"
## ..$ xyCoords:'data.frame': 11 obs. of 2 variables:
## .. ..$ x: num [1:11] -6.73 -9.15 -6.83 -4.49 -4.01 ...
## .. ..$ y: num [1:11] 41.8 38.7 38.9 36.7 40.8 ...
## .. ..- attr(*, "projection")= chr "+proj=longlat +init=epsg:4326 +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
## .. ..- attr(*, "resX")= num 0
## .. ..- attr(*, "resY")= num 0
## ..$ Dates :List of 2
## .. ..$ start: chr [1:1805] "1982-12-01 00:00:00" "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" ...
## .. ..$ end : chr [1:1805] "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" "1982-12-05 00:00:00" ...
## .. ..- attr(*, "season")= int [1:3] 12 1 2
## ..$ Metadata:List of 4
## .. ..$ station_id: chr [1:11] "000212" "000214" "000229" "000231" ...
## .. ..$ name : chr [1:11] "BRAGANCA" "LISBOA-GEOFISICA" "BADAJOZ-TALAVERALAREAL" "MALAGA" ...
## .. ..$ altitude : int [1:11] 690 77 185 7 1894 251 44 151 370 8 ...
## .. ..$ source : chr [1:11] "ECA&D" "ECA&D" "ECA&D" "ECA&D" ...
## $ x.global: num [1:1805, 1:70] 102168 102320 102595 102930 103260 ...
## $ x.local :List of 11
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00299 0.00311 0.00297 0.00353 0.00613 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00178 0.00318 0.00396 0.00478 0.00591 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00227 0.00314 0.00325 0.00298 0.00432 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00297 0.00393 0.00411 0.00295 0.00299 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00341 0.00324 0.00321 0.00288 0.00459 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00382 0.00386 0.00405 0.00332 0.00438 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00385 0.00311 0.00362 0.00386 0.00362 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00366 0.00356 0.00385 0.0037 0.00352 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00287 0.00348 0.00306 0.00572 0.00776 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00386 0.00302 0.00358 0.00382 0.00389 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1] 0.00341 0.00324 0.00321 0.00288 0.00459 ...
## ..- attr(*, "local.index.list")=List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## $ pca : NULL
## - attr(*, "localPred.pars")=List of 4
## ..$ vars : chr "hus@850"
## ..$ n : num 4
## ..$ fun :List of 1
## .. ..$ FUN: chr "mean"
## ..$ local.index.list:List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## - attr(*, "predictor.vars")= chr [1:3] "ta@850" "psl" "hus@850"
## - attr(*, "nature")= chr "local"
## - attr(*, "globalPred.vars")= chr [1:2] "psl" "ta@850"
## - attr(*, "dates")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## - attr(*, "xyCoords")=List of 2
## ..$ x: num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..$ y: num [1:5] 35 37.5 40 42.5 45
This is probably the most typical configuration of predictors. The global information of the PCs is complemented with local information using an additional variable. For instance, in this example we retain temperature and sea-level pressure as global predictors, using their PCs, and include local information for specific humnifity at 850 mb. In this case, we indicate that we want to keep the PCs explaining no less than 95% of the total variance for each global variable (v.exp = c(0.95, 0.95)
; note that in the previous PCA example we indicated the number of PCs (argument n.eofs
), instead of the amount of explained variance):
out <- prepareData(x = x,
y = y,
global.vars = c("ta@850", "psl"),
spatial.predictors = list(v.exp = c(.95, .95)),
local.predictors = list(vars = "hus@850",
n = 4,
fun = NULL)
)
str(out)
## List of 4
## $ y :List of 5
## ..$ Variable:List of 1
## .. ..$ varName: chr "tmean"
## .. ..- attr(*, "subset")= chr "time"
## .. ..- attr(*, "time_subset")= chr "getTemporalIntersection"
## ..$ Data : num [1:1805, 1:11] 2.9 3.4 1 0.6 4.3 8 10.1 9.4 9.8 10.4 ...
## .. ..- attr(*, "dimensions")= chr [1:2] "time" "loc"
## ..$ xyCoords:'data.frame': 11 obs. of 2 variables:
## .. ..$ x: num [1:11] -6.73 -9.15 -6.83 -4.49 -4.01 ...
## .. ..$ y: num [1:11] 41.8 38.7 38.9 36.7 40.8 ...
## .. ..- attr(*, "projection")= chr "+proj=longlat +init=epsg:4326 +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
## .. ..- attr(*, "resX")= num 0
## .. ..- attr(*, "resY")= num 0
## ..$ Dates :List of 2
## .. ..$ start: chr [1:1805] "1982-12-01 00:00:00" "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" ...
## .. ..$ end : chr [1:1805] "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" "1982-12-05 00:00:00" ...
## .. ..- attr(*, "season")= int [1:3] 12 1 2
## ..$ Metadata:List of 4
## .. ..$ station_id: chr [1:11] "000212" "000214" "000229" "000231" ...
## .. ..$ name : chr [1:11] "BRAGANCA" "LISBOA-GEOFISICA" "BADAJOZ-TALAVERALAREAL" "MALAGA" ...
## .. ..$ altitude : int [1:11] 690 77 185 7 1894 251 44 151 370 8 ...
## .. ..$ source : chr [1:11] "ECA&D" "ECA&D" "ECA&D" "ECA&D" ...
## $ x.global: num [1:1805, 1:7] 0.299 -0.809 -2.795 -6.589 -9.13 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:7] "PC1" "PC2" "PC3" "PC1" ...
## $ x.local :List of 11
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00223 0.00293 0.00312 0.00389 0.00631 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00114 0.00337 0.00468 0.00554 0.00598 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.0019 0.00328 0.00385 0.0035 0.00416 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00287 0.00445 0.00462 0.00295 0.00245 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00264 0.00294 0.00254 0.00218 0.00408 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00401 0.00372 0.00401 0.00329 0.00464 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00378 0.00284 0.00342 0.00351 0.00349 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00391 0.00339 0.00382 0.00369 0.00337 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00262 0.00341 0.00342 0.0067 0.00797 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00378 0.00284 0.00342 0.00351 0.00349 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00264 0.00294 0.00254 0.00218 0.00408 ...
## ..- attr(*, "local.index.list")=List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## $ pca :List of 2
## ..$ psl :List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:3] 0.299 -0.809 -2.795 -6.589 -9.13 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:3] "PC1" "PC2" "PC3"
## .. .. ..$ EOFs: num [1:35, 1:3] -0.142 -0.16 -0.169 -0.165 -0.149 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:3] "PC1" "PC2" "PC3"
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 102167 102202 102168 102069 101910 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 714 818 898 991 1119 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:3] 0.822 0.912 0.979
## ..$ ta@850:List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:4] -4.54 -4.83 -4.32 -1.18 2.52 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:4] "PC1" "PC2" "PC3" "PC4"
## .. .. ..$ EOFs: num [1:35, 1:4] 0.154 0.157 0.154 0.149 0.136 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:4] "PC1" "PC2" "PC3" "PC4"
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 280 279 277 277 276 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 3.4 3.27 3.21 3.33 3.53 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:4] 0.687 0.835 0.935 0.958
## ..- attr(*, "level")= num [1:2] NA 850
## ..- attr(*, "dates_start")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## ..- attr(*, "dates_end")= chr [1:1805] "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" "1982-12-05 GMT" ...
## ..- attr(*, "season")= int [1:3] 12 1 2
## ..- attr(*, "xCoords")= num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..- attr(*, "yCoords")= num [1:5] 35 37.5 40 42.5 45
## ..- attr(*, "projection")= chr "LatLonProjection"
## - attr(*, "spatialPred.pars")=List of 1
## ..$ v.exp: num [1:2] 0.95 0.95
## - attr(*, "localPred.pars")=List of 4
## ..$ vars : chr "hus@850"
## ..$ n : num 4
## ..$ fun : NULL
## ..$ local.index.list:List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## - attr(*, "predictor.vars")= chr [1:3] "ta@850" "psl" "hus@850"
## - attr(*, "nature")= chr "spatial+local"
## - attr(*, "globalPred.vars")= chr [1:2] "psl" "ta@850"
## - attr(*, "dates")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## - attr(*, "xyCoords")=List of 2
## ..$ x: num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..$ y: num [1:5] 35 37.5 40 42.5 45
The x.global
matrix has now 7 columns, corresponding to 3 PCs retained for sea-level pressure plus 3 for air temperature.
Another option is to use the joint/combined PCs as predictors. To do so, we have to pass to the argument which.combine
the variables we want to be joined when calculating PCs.
out <- prepareData(x = x,
y = y,
spatial.predictors = list(v.exp = 0.95, which.combine = getVarNames(x)),
local.predictors = list(vars = "hus@850",
n = 4,
fun = NULL)
)
str(out)
## List of 4
## $ y :List of 5
## ..$ Variable:List of 1
## .. ..$ varName: chr "tmean"
## .. ..- attr(*, "subset")= chr "time"
## .. ..- attr(*, "time_subset")= chr "getTemporalIntersection"
## ..$ Data : num [1:1805, 1:11] 2.9 3.4 1 0.6 4.3 8 10.1 9.4 9.8 10.4 ...
## .. ..- attr(*, "dimensions")= chr [1:2] "time" "loc"
## ..$ xyCoords:'data.frame': 11 obs. of 2 variables:
## .. ..$ x: num [1:11] -6.73 -9.15 -6.83 -4.49 -4.01 ...
## .. ..$ y: num [1:11] 41.8 38.7 38.9 36.7 40.8 ...
## .. ..- attr(*, "projection")= chr "+proj=longlat +init=epsg:4326 +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
## .. ..- attr(*, "resX")= num 0
## .. ..- attr(*, "resY")= num 0
## ..$ Dates :List of 2
## .. ..$ start: chr [1:1805] "1982-12-01 00:00:00" "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" ...
## .. ..$ end : chr [1:1805] "1982-12-02 00:00:00" "1982-12-03 00:00:00" "1982-12-04 00:00:00" "1982-12-05 00:00:00" ...
## .. ..- attr(*, "season")= int [1:3] 12 1 2
## ..$ Metadata:List of 4
## .. ..$ station_id: chr [1:11] "000212" "000214" "000229" "000231" ...
## .. ..$ name : chr [1:11] "BRAGANCA" "LISBOA-GEOFISICA" "BADAJOZ-TALAVERALAREAL" "MALAGA" ...
## .. ..$ altitude : int [1:11] 690 77 185 7 1894 251 44 151 370 8 ...
## .. ..$ source : chr [1:11] "ECA&D" "ECA&D" "ECA&D" "ECA&D" ...
## $ x.global: num [1:1805, 1:14] 1.764 1.307 -0.488 -5.388 -8.562 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:14] "PC1" "PC2" "PC3" "PC4" ...
## $ x.local :List of 11
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00223 0.00293 0.00312 0.00389 0.00631 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00114 0.00337 0.00468 0.00554 0.00598 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.0019 0.00328 0.00385 0.0035 0.00416 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00287 0.00445 0.00462 0.00295 0.00245 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00264 0.00294 0.00254 0.00218 0.00408 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00401 0.00372 0.00401 0.00329 0.00464 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00378 0.00284 0.00342 0.00351 0.00349 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00391 0.00339 0.00382 0.00369 0.00337 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00262 0.00341 0.00342 0.0067 0.00797 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00378 0.00284 0.00342 0.00351 0.00349 ...
## ..$ :List of 1
## .. ..$ member_1: num [1:1805, 1:4] 0.00264 0.00294 0.00254 0.00218 0.00408 ...
## ..- attr(*, "local.index.list")=List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## $ pca :List of 4
## ..$ hus@850 :List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:11] -0.148 0.679 1.757 2.195 4.994 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:11] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ EOFs: num [1:35, 1:11] 0.129 0.156 0.168 0.151 0.103 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:11] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 0.00329 0.00323 0.00338 0.00343 0.00339 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 0.00148 0.0015 0.00154 0.00153 0.00148 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:11] 0.429 0.611 0.724 0.8 0.843 ...
## ..$ psl :List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:3] 0.299 -0.809 -2.795 -6.589 -9.13 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:3] "PC1" "PC2" "PC3"
## .. .. ..$ EOFs: num [1:35, 1:3] -0.142 -0.16 -0.169 -0.165 -0.149 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:3] "PC1" "PC2" "PC3"
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 102167 102202 102168 102069 101910 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 714 818 898 991 1119 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:3] 0.822 0.912 0.979
## ..$ ta@850 :List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:4] -4.54 -4.83 -4.32 -1.18 2.52 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:4] "PC1" "PC2" "PC3" "PC4"
## .. .. ..$ EOFs: num [1:35, 1:4] 0.154 0.157 0.154 0.149 0.136 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:4] "PC1" "PC2" "PC3" "PC4"
## .. .. ..$ orig: atomic [1:1] NA
## .. .. .. ..- attr(*, "scaled:center")= num [1:35] 280 279 277 277 276 ...
## .. .. .. ..- attr(*, "scaled:scale")= num [1:35] 3.4 3.27 3.21 3.33 3.53 ...
## .. .. .. ..- attr(*, "scaled:method")= chr "gridbox"
## .. .. ..- attr(*, "explained_variance")= num [1:4] 0.687 0.835 0.935 0.958
## ..$ COMBINED:List of 1
## .. ..$ :List of 3
## .. .. ..$ PCs : num [1:1805, 1:14] 1.764 1.307 -0.488 -5.388 -8.562 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:14] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ EOFs: num [1:105, 1:14] 0.0566 0.047 0.0332 0.012 -0.0113 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : NULL
## .. .. .. .. ..$ : chr [1:14] "PC1" "PC2" "PC3" "PC4" ...
## .. .. ..$ orig: NULL
## .. .. ..- attr(*, "explained_variance")= num [1:14] 0.354 0.622 0.689 0.751 0.794 ...
## .. ..- attr(*, "combined_variables")= chr [1:3] "hus@850" "psl" "ta@850"
## ..- attr(*, "level")= num [1:4] 850 NA 850 NA
## ..- attr(*, "dates_start")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## ..- attr(*, "dates_end")= chr [1:1805] "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" "1982-12-05 GMT" ...
## ..- attr(*, "season")= int [1:3] 12 1 2
## ..- attr(*, "xCoords")= num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..- attr(*, "yCoords")= num [1:5] 35 37.5 40 42.5 45
## ..- attr(*, "projection")= chr "LatLonProjection"
## - attr(*, "spatialPred.pars")=List of 2
## ..$ v.exp : num 0.95
## ..$ which.combine: chr [1:3] "hus@850" "psl" "ta@850"
## - attr(*, "localPred.pars")=List of 4
## ..$ vars : chr "hus@850"
## ..$ n : num 4
## ..$ fun : NULL
## ..$ local.index.list:List of 1
## .. ..$ hus@850: num [1:4, 1:11] 8 9 13 14 2 3 7 8 7 8 ...
## - attr(*, "predictor.vars")= chr [1:3] "hus@850" "psl" "ta@850"
## - attr(*, "nature")= chr "spatial+local"
## - attr(*, "globalPred.vars")= chr [1:3] "hus@850" "psl" "ta@850"
## - attr(*, "dates")= chr [1:1805] "1982-12-01 GMT" "1982-12-02 GMT" "1982-12-03 GMT" "1982-12-04 GMT" ...
## - attr(*, "xyCoords")=List of 2
## ..$ x: num [1:7] -10 -7.5 -5 -2.5 0 2.5 5
## ..$ y: num [1:5] 35 37.5 40 42.5 45
-
Cofiño, A.S., Bedia, J., Iturbide, M., Vega, M., Herrera, S., Fernández, J., Frías, M.D., Manzanas, R., Gutiérrez, J.M., 2017. The ECOMS User Data Gateway: Towards seasonal forecast data provision and research reproducibility in the era of Climate Services. Climate Services. doi:10.1016/j.cliser.2017.07.001
-
Kalnay, E., Kanamitsu, M., Kistler, R., Collins, W., Deaven, D., Gandin, L., Iredell, M., Saha, S., White, G., Woollen, J., Zhu, Y., Leetmaa, A., Reynolds, R., Chelliah, M., Ebisuzaki, W., Higgins, W., Janowiak, J., Mo, K.C., Ropelewski, C., Wang, J., Jenne, R., Joseph, D., 1996. The NCEP/NCAR 40-Year Reanalysis Project. Bulletin of the American Meteorological Society 77, 437–471. doi:10.1175/1520-0477(1996)077<0437:TNYRP>2.0.CO;2
-
Maraun, D., Widmann, M., Gutiérrez, J.M., Kotlarski, S., Chandler, R.E., Hertig, E., Wibig, J., Huth, R., Wilcke, R.A.I., 2015. VALUE: A framework to validate downscaling approaches for climate change studies. Earth’s Future 3, 2014EF000259. doi:10.1002/2014EF000259
print(sessionInfo(package = c("transformeR", "downscaleR")))
## R version 3.4.3 (2017-11-30)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 14.04.5 LTS
##
## Matrix products: default
## BLAS: /usr/lib/libblas/libblas.so.3.0
## LAPACK: /usr/lib/lapack/liblapack.so.3.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=es_ES.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=es_ES.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=es_ES.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## character(0)
##
## other attached packages:
## [1] transformeR_1.3.3 downscaleR_3.0.0
##
## loaded via a namespace (and not attached):
## [1] Rcpp_0.12.15 compiler_3.4.3 highr_0.6
## [4] methods_3.4.3 bitops_1.0-6 iterators_1.0.8
## [7] utils_3.4.3 tools_3.4.3 grDevices_3.4.3
## [10] deepnet_0.2 digest_0.6.13 dotCall64_0.9-5.2
## [13] evd_2.3-2 gtable_0.2.0 evaluate_0.10.1
## [16] lattice_0.20-35 Matrix_1.2-7.1 foreach_1.4.3
## [19] yaml_2.1.16 parallel_3.4.3 spam_2.1-2
## [22] akima_0.6-2 gridExtra_2.2.1 stringr_1.2.0
## [25] knitr_1.18 raster_2.6-7 gridGraphics_0.2
## [28] graphics_3.4.3 datasets_3.4.3 stats_3.4.3
## [31] fields_9.6 maps_3.2.0 rprojroot_1.3-2
## [34] grid_3.4.3 glmnet_2.0-13 base_3.4.3
## [37] rmarkdown_1.8 sp_1.2-7 magrittr_1.5
## [40] backports_1.1.2 codetools_0.2-15 htmltools_0.3.6
## [43] MASS_7.3-44 abind_1.4-5 stringi_1.1.5
## [46] RCurl_1.95-4.10 RcppEigen_0.3.3.3.1
downscaleR - Santander MetGroup (Univ. Cantabria - CSIC)