TSMBC {SBCK}R Documentation

TSMBC (Time Shifted Multivariate Bias Correction)

Description

Perform a bias correction of auto-correlation

Details

Correct auto-correlation with a shift approach.

Public fields

shift

[Shift class] Shift class to shift data.

bc_method

[SBCK::BC_method] Underlying bias correction method.

Active bindings

method

[character] If inverse is by row or column, see class Shift

ref

[integer] reference column/row to inverse shift, see class

Methods

Public methods


Method new()

Create a new TSMBC object.

Usage
TSMBC$new(lag, bc_method = OTC, method = "row", ref = "middle", ...)
Arguments
lag

[integer] max lag of autocorrelation

bc_method

[SBCK::BC_METHOD] bias correction method to use after shift of data, default is OTC

method

[character] If inverse is by row or column, see class Shift

ref

[integer] reference column/row to inverse shift, see class Shift. Default is 0.5 * (lag+1)

...

[] All others arguments are passed to bc_method

Returns

A new 'TSMBC' object.


Method fit()

Fit the bias correction method

Usage
TSMBC$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

Usage
TSMBC$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
TSMBC$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

References

Robin, Y. and Vrac, M.: Is time a variable like the others in multivariate statistical downscaling and bias correction?, Earth Syst. Dynam. Discuss. [preprint], https://doi.org/10.5194/esd-2021-12, in review, 2021.

Examples


## arima model parameters
modelX0 = list( ar = base::c(  0.6 , 0.2 , -0.1 ) )
modelY0 = list( ar = base::c( -0.3 , 0.4 , -0.2 ) )

## arima random generator
rand.genX0 = function(n){ return(stats::rnorm( n , mean = 0.2 , sd = 1   )) }
rand.genY0 = function(n){ return(stats::rnorm( n , mean = 0   , sd = 0.7 )) }

## Generate two AR processes
X0 = stats::arima.sim( n = 1000 , model = modelX0 , rand.gen = rand.genX0 )
Y0 = stats::arima.sim( n = 1000 , model = modelY0 , rand.gen = rand.genY0 )
X0 = as.vector( X0 )
Y0 = as.vector( Y0 + 5 )

## And correct it with 30 lags
tsbc = SBCK::TSMBC$new( 30 )
tsbc$fit( Y0 , X0 )
Z0 = tsbc$predict(X0)


[Package SBCK version 1.0.0 Index]