Learn R Programming

roll (version 1.0.5)

roll_eigen: Rolling Eigenvalues and Eigenvectors

Description

A parallel function for computing rolling eigenvalues and eigenvectors of time-series data.

Usage

roll_eigen(data, width, weights = rep(1, width), center = TRUE, scale = FALSE, 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 list containing the following components: A list containing the following components:

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 eigenvalues and eigenvectors
result <- roll_eigen(data, 252)

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

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

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

Run the code above in your browser using DataLab