Learn R Programming

roll (version 1.0.7)

roll_pcr: Rolling Principal Component Regressions

Description

A parallel function for computing rolling principal component regressions of time-series data.

Usage

roll_pcr(x, y, width, comps = 1:ncol(x), weights = rep(1, width),
  intercept = TRUE, center = FALSE, center_x = center,
  center_y = center, scale = FALSE, scale_x = scale, scale_y = scale,
  min_obs = width, complete_obs = TRUE, na_restore = FALSE,
  parallel_for = c("rows", "cols"))

Arguments

x

matrix or xts object. Rows are observations and columns are the independent variables.

y

matrix or xts object. Rows are observations and columns are the dependent variables.

width

integer. Window size.

comps

integer vector. Select a subset of principal components.

weights

vector. Weights for each observation within a window.

intercept

logical. Either TRUE to include or FALSE to remove the intercept.

center

logical. center = z is shorthand for center_x = z and center_y = z, where z is either TRUE or FALSE.

center_x

logical. If TRUE then the weighted mean of each x variable is used, if FALSE then zero is used.

center_y

logical. Analogous to center_x.

scale

logical. scale = z is shorthand for scale_x = z and scale_y = z, where z is either TRUE or FALSE.

scale_x

logical. If TRUE then the weighted standard deviation of each x variable is used, if FALSE then no scaling is done.

scale_y

logical. Analogous to scale_x.

min_obs

integer. Minimum number of observations required to have a value within a window, otherwise result is NA.

complete_obs

logical. If TRUE then rows containing any missing values are removed, if FALSE then pairwise is used.

na_restore

logical. Should missing values be restored?

parallel_for

character. Executes a "for" loop in which iterations run in parallel by rows or cols.

Value

A list containing the following components:

coefficients

A list of objects with the rolling coefficients for each y. An object is the same class and dimension (with an added column for the intercept) as x.

r.squared

A list of objects with the rolling r-squareds for each y. An object is the same class as x.

Details

The numerical calculations use RcppParallel to parallelize rolling principal component regressions of time-series data. RcppParallel provides a complete toolkit for creating safe, portable, high-performance parallel algorithms, built on top of the Intel Threading Building Blocks (TBB) and TinyThread libraries.

By default, all the available cores on a machine are used for parallel algorithms. If users are either already taking advantage of parallelism or instead want to use a fixed number or proportion of threads, then set the number of threads in the RcppParallel package with the setThreadOptions function.

Examples

Run this code
# NOT RUN {
n_vars <- 10
n_obs <- 1000
x <- matrix(rnorm(n_obs * n_vars), nrow = n_obs, ncol = n_vars)
y <- matrix(rnorm(n_obs), nrow = n_obs, ncol = 1)

# Rolling principal component regressions
result <- roll_pcr(x, y, 252, comps = 1)

# Rolling principal component regressions with exponential decay
weights <- 0.9 ^ (251:0)
result <- roll_pcr(x, y, 252, comps = 1, weights)
# }

Run the code above in your browser using DataLab