CST_MultivarRMSE {CSTools}R Documentation

Multivariate Root Mean Square Error (RMSE)

Description

This function calculates the RMSE from multiple variables, as the mean of each variable's RMSE scaled by its observed standard deviation. Variables can be weighted based on their relative importance (defined by the user).

Usage

CST_MultivarRMSE(
  exp,
  obs,
  weight = NULL,
  memb_dim = "member",
  dat_dim = "dataset",
  sdate_dim = "sdate",
  ftime_dim = "ftime"
)

Arguments

exp

A list of objects, one for each variable, of class s2dv_cube as returned by CST_Anomaly function, containing the anomaly of the seasonal forecast experiment data in the element named $data.

obs

A list of objects, one for each variable (in the same order than the input in 'exp') of class s2dv_cube as returned by CST_Anomaly function, containing the observed anomaly data in the element named $data.

weight

(optional) A vector of weight values to assign to each variable. If no weights are defined, a value of 1 is assigned to every variable.

memb_dim

A character string indicating the name of the member dimension. It must be one dimension in 'exp' and 'obs'. The default value is 'member'.

dat_dim

A character string indicating the name of the dataset dimension. It must be one dimension in 'exp' and 'obs'. If there is no dataset dimension, it can be NULL. The default value is 'dataset'.

sdate_dim

A character string indicating the name of the start date dimension. It must be one dimension in 'exp' and 'obs'. The default value is 'sdate'.

ftime_dim

A character string indicating the name of the forecast time dimension. It must be one dimension in 'exp' and 'obs'. The default value is 'ftime'.

Value

An object of class s2dv_cube containing the RMSE in the element $data which is an array with two datset dimensions equal to the 'dataset' dimension in the exp$data and obs$data inputs. An array with dimensions: c(number of exp, number of obs, 1 (the multivariate RMSE value), number of lat, number of lon)

Author(s)

Deborah Verfaillie, deborah.verfaillie@bsc.es

See Also

RMS and CST_Load

Examples

# Example with 2 variables
mod1 <- abs(rnorm(1 * 3 * 4 * 5 * 6 * 7))
mod2 <- abs(rnorm(1 * 3 * 4 * 5 * 6 * 7))
dim(mod1) <- c(dataset = 1, member = 3, sdate = 4, ftime = 5, lat = 6, lon = 7)
dim(mod2) <- c(dataset = 1, member = 3, sdate = 4, ftime = 5, lat = 6, lon = 7)
obs1 <- abs(rnorm(1 * 1 * 4 * 5 * 6 * 7))
obs2 <- abs(rnorm(1 * 1 * 4 * 5 * 6 * 7))
dim(obs1) <- c(dataset = 1, member = 1, sdate = 4, ftime = 5, lat = 6, lon = 7)
dim(obs2) <- c(dataset = 1, member = 1, sdate = 4, ftime = 5, lat = 6, lon = 7)
lon <- seq(0, 30, 5)
lat <- seq(0, 25, 5)
coords <- list(lat = lat, lon = lon)
exp1 <- list(data = mod1, coords = coords, 
            attrs = list(Datasets = "EXP1", source_files = "file1", 
                         Variable = list(varName = 'pre')))
exp2 <- list(data = mod2, coords = coords, 
            attrs = list(Datasets = "EXP2", source_files = "file2", 
                         Variable = list(varName = 'tas')))
obs1 <- list(data = obs1, coords = coords, 
            attrs = list(Datasets = "OBS1", source_files = "file1", 
                         Variable = list(varName = 'pre')))
obs2 <- list(data = obs2, coords = coords, 
            attrs = list(Datasets = "OBS2", source_files = "file2", 
                         Variable = list(varName = 'tas')))
attr(exp1, 'class') <- 's2dv_cube'
attr(exp2, 'class') <- 's2dv_cube'
attr(obs1, 'class') <- 's2dv_cube'
attr(obs2, 'class') <- 's2dv_cube'
anom1 <- CST_Anomaly(exp1, obs1, cross = TRUE, memb = TRUE)
anom2 <- CST_Anomaly(exp2, obs2, cross = TRUE, memb = TRUE)
ano_exp <- list(anom1$exp, anom2$exp)
ano_obs <- list(anom1$obs, anom2$obs)
a <- CST_MultivarRMSE(exp = ano_exp, obs = ano_obs, weight = c(1, 2))

[Package CSTools version 5.2.0 Index]