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)