roll_scale: Rolling Scaling and Centering

Description Usage Arguments Details Value Examples

View source: R/roll.R

Description

A function for computing the rolling and expanding scaling and centering of time-series data.

Usage

1
2
3
roll_scale(x, width, weights = rep(1, width), center = TRUE,
  scale = TRUE, min_obs = width, complete_obs = FALSE,
  na_restore = FALSE, online = TRUE)

Arguments

x

vector or matrix. 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 each value is used.

na_restore

logical. Should missing values be restored?

online

logical. Process observations using an online algorithm.

Details

If center is TRUE then centering is done by subtracting the weighted mean from each variable, if FALSE then zero is used. After centering, if scale is TRUE then scaling is done by dividing by the weighted standard deviation for each variable if center is TRUE, and the root mean square otherwise. If scale is FALSE then no scaling is done.

The denominator used gives an unbiased estimate of the standard deviation, so if the weights are the default then the divisor n - 1 is obtained.

Value

An object of the same class and dimension as x with the rolling and expanding scaling and centering.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
n <- 15
x <- rnorm(n)
weights <- 0.9 ^ (n:1)

# rolling z-scores with complete windows
roll_scale(x, width = 5)

# rolling z-scores with partial windows
roll_scale(x, width = 5, min_obs = 1)

# expanding z-scores with partial windows
roll_scale(x, width = n, min_obs = 1)

# expanding z-scores with partial windows and weights
roll_scale(x, width = n, min_obs = 1, weights = weights)

Example output

 [1]         NA         NA         NA         NA -0.8539589 -1.2334460
 [7]  1.6838749  0.3967620 -0.6937601 -0.8960314  0.4494436  0.9738593
[13]  0.6034998  0.7887685 -1.6834170
 [1]         NA  0.7071068 -1.1225621 -0.4960434 -0.8539589 -1.2334460
 [7]  1.6838749  0.3967620 -0.6937601 -0.8960314  0.4494436  0.9738593
[13]  0.6034998  0.7887685 -1.6834170
 [1]         NA  0.7071068 -1.1225621 -0.4960434 -0.8539589 -1.4179348
 [7]  1.7097645  0.4303983 -0.9881007 -1.3593633  0.7793457  1.0397202
[13]  0.6364000  1.1954772 -0.8812297
 [1]         NA  0.6698906 -1.0392796 -0.4275413 -0.7703709 -1.2747856
 [7]  1.5424086  0.3677354 -0.9025327 -1.1745598  0.7713885  0.9502773
[13]  0.5503598  1.0261921 -0.8998317

roll documentation built on July 13, 2020, 5:09 p.m.