Learn R Programming

roll (version 1.0.5)

roll_sd: Rolling Standard Deviations

Description

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

Usage

roll_sd(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 each value 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 standard deviations.

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 standard deviation
result <- roll_sd(data, 252)

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

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

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

Run the code above in your browser using DataLab