Learn R Programming

roll (version 1.0.0)

roll_var: Rolling Variances

Description

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

Usage

roll_var(data, width, weights = rep(1, width), center = TRUE,
  min_obs = width, complete_obs = FALSE, 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.
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

  • An object of the same class and dimension as data with the rolling variances.

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 variance
result <- roll_var(data, 252)

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

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

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

Run the code above in your browser using DataLab