OTC: OTC (Optimal Transport Correction) method

OTCR Documentation

OTC (Optimal Transport Correction) method

Description

Perform a multivariate bias correction of X0 with respect to Y0.

Details

Joint distribution, i.e. all dependence are corrected.

Public fields

bin_width

[vector or NULL] A vector of lengths of the cells discretizing R^numbers of variables. If NULL, it is estimating during the fit

bin_origin

[vector or NULL] Coordinate of lower corner of one cell. If NULL, c(0,...,0) is used

muX

[SparseHist] Histogram of the data from the model

muY

[SparseHist] Histogram of the data from the observations

ot

[OTSolver] Optimal Transport solver, default is the network simplex

plan

[matrix] The plan computed by the ot solver.

n_features

[integer] Numbers of features

Methods

Public methods


Method new()

Create a new OTC object.

Usage
OTC$new(bin_width = NULL, bin_origin = NULL, ot = SBCK::OTNetworkSimplex$new())
Arguments
bin_width

[vector or NULL] A vector of lengths of the cells discretizing R^numbers of variables. If NULL, it is estimating during the fit

bin_origin

[vector or NULL] Coordinate of lower corner of one cell. If NULL, c(0,...,0) is used

ot

[OTSolver] Optimal Transport solver, default is the network simplex

Returns

A new 'OTC' object.


Method fit()

Fit the bias correction method

Usage
OTC$fit(Y0, X0)
Arguments
Y0

[matrix: n_samples * n_features] Observations in calibration

X0

[matrix: n_samples * n_features] Model in calibration

Returns

NULL


Method predict()

Predict the correction

Note: Only the center of the bins associated to the corrected points are returned, but all corrections of the form: >> bw = otc$bin_width / 2 >> n = base::prod(base::dim(X0)) >> Z0 = otc$predict(X0) >> Z0 = Z0 + t(matrix(stats::runif( n = n min = - bw , max = bw ) , ncol = dim(X0)[1] )) are equivalent for OTC.

Usage
OTC$predict(X0)
Arguments
X0

[matrix: n_samples * n_features or NULL] Model in calibration

Returns

[matrix] Return the corrections of X0


Method clone()

The objects of this class are cloneable with this method.

Usage
OTC$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

References

Robin, Y., Vrac, M., Naveau, P., Yiou, P.: Multivariate stochastic bias corrections with optimal transport, Hydrol. Earth Syst. Sci., 23, 773–786, 2019, https://doi.org/10.5194/hess-23-773-2019

Examples

## Two bivariate random variables (rnorm and rexp are inverted between ref 
## and bias)
XY = SBCK::dataset_gaussian_exp_2d(2000)
X0 = XY$X0 ## Biased in calibration period
Y0 = XY$Y0 ## Reference in calibration period

## Bin length
bin_width = SBCK::bin_width_estimator( list(X0,Y0) )

## Bias correction
## Step 1 : construction of the class OTC 
otc = SBCK::OTC$new( bin_width ) 
## Step 2 : Fit the bias correction model
otc$fit( Y0 , X0 )
## Step 3 : perform the bias correction, Z0 is the correction of
## X0 with respect to the estimation of Y0
Z0 = otc$predict(X0)


SBCK documentation built on Sept. 11, 2023, 5:10 p.m.

Related to OTC in SBCK...