cvfit {curvir}R Documentation

Automatically select curve type and explanatory variables

Description

Using cross-validation automatically select explanatory variables jointly with curve type. When running cvfit there is no need to use varselect separately.

Usage

cvfit(
  x,
  y,
  folds = 10,
  constant = c(TRUE, FALSE),
  sign = NULL,
  reps = 3,
  parallel = c(FALSE, TRUE),
  usepbapply = c(FALSE, TRUE),
  alltype = c("logistic", "redLogistic", "doubleExp", "exponential", "arctan", "linear"),
  search = c("backward", "forward"),
  wsel = c("select", "combine"),
  dummy = NULL
)

Arguments

x

A matrix of explanatory variables. Excess reserve must be the first input.Additional regressor follow (optional).

y

A vector of normalised interest rates.

folds

Folds to use for cross-validation.

constant

A logical (TRUE or FALSE) whether to include a constant or not.

sign

A vector of equal length to the number of additional regressors in x (excluding the constant (if used) and the excess reserves) of positive and negative values (any) that will be used to obtain signs to restrict the values of the estimated parameters. Use NULL for no restrictions.

reps

Number of repetitions for the particle swarm optimisation.

parallel

Initialise and use parallel processing for the cross-validation. Note that the maximum number of cores that will be used is equal to the alternative types of curves that are evaluated (alltype).

usepbapply

A logical to indicate whether to use pbapply to report on the parallel calculation progress. Note that pbapply does not support load balancing.

alltype

A vector of the curve types to consider in the selection process.

search

Search strategy for variable inclusion. With forward the model starts from no explanatory variables, and evaluates potential additions. With backward the model starts with all variables and evaluates for potential exclusions.

wsel

Use the minimum error set of parameters (select) or the combination of the pool parameters using the heuristic in Kourentzes et al., (2019) (combine).

dummy

Optional input to signify a regime change (vertical shifts in the curve). Must be a vector of equal length to the rows of x. If not needed use NULL.

Value

Returns a list with the recommended variable selection choice:

Use cvfitplot to visualise the output.

Author(s)

Nikolaos Kourentzes, nikolaos@kourentzes.com

References

Chen, Z., Kourentzes, N., & Veyrune, R. (2023). Modeling the Reserve Demand to Facilitate Central Bank Operations. IMF Working Papers, 2023(179).

See Also

cvfitplot, curve, and varselect.

Examples


  # Use ECB example data
  rate <- ecb$rate
  x <- ecb$x[,1:3,drop=FALSE]
  cvKeep <- cvfit(x,rate,folds=5,alltype=c("logistic","arctan"),parallel=TRUE)
  # Print result
  print(cvKeep)
  # Fit curve with the selected variables
  curve(x[,cvKeep$keep,drop=FALSE],rate,type=cvKeep$type)



[Package curvir version 0.1.1 Index]