Learn R Programming

roll (version 1.0.5)

roll_cor: Rolling Correlation Matrices

Description

A parallel function for computing rolling correlation matrices of time-series data.

Usage

roll_cor(data, width, weights = rep(1, width), center = TRUE, scale = TRUE, min_obs = width, complete_obs = TRUE, na_restore = FALSE, parallel_for = c("rows", "cols"))

Arguments

data
matrix or xts object. Rows are observations and columns are variables.
width
integer. Window size.
weights
vector. Weights for each observation within a window.
center
logical. If TRUE then the weighted mean of each variable is used, if FALSE then zero is used.
scale
logical. If TRUE then the weighted standard deviation of each variable is used, if FALSE then no scaling is done.
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 cube with each slice the rolling correlation matrix.

See Also

setThreadOptions for thread options via RcppParallel.

Examples

Run this code
n_vars <- 10
n_obs <- 1000
data <- matrix(rnorm(n_obs * n_vars), nrow = n_obs, ncol = n_vars)

# 252-day rolling correlation matrix
result <- roll_cor(data, 252)

# Equivalent to 'na.rm = TRUE'
result <- roll_cor(data, 252, min_obs = 1)

# Expanding window
result <- roll_cor(data, n_obs, min_obs = 1)

# Exponential decay
weights <- 0.9 ^ (251:0)
result <- roll_cor(data, 252, weights, min_obs = 1)

Run the code above in your browser using DataLab