Learn R Programming

roll (version 1.0.7)

roll_vif: Rolling Variance Inflation Factors

Description

A parallel function for computing rolling variance inflation factors of time-series data.

Usage

roll_vif(data, width, weights = rep(1, width), center = FALSE,
  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

An object of the same class and dimension as data with the rolling variance inflation factors.

Details

The numerical calculations use RcppParallel to parallelize rolling variance inflation factors of time-series data. RcppParallel provides a complete toolkit for creating safe, portable, high-performance parallel algorithms, built on top of the Intel Threading Building Blocks (TBB) and TinyThread libraries.

By default, all the available cores on a machine are used for parallel algorithms. If users are either already taking advantage of parallelism or instead want to use a fixed number or proportion of threads, then set the number of threads in the RcppParallel package with the setThreadOptions function.

Examples

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

# Rolling variance inflation factors
result <- roll_vif(data, 252)

# Rolling variance inflation factors with exponential decay
weights <- 0.9 ^ (251:0)
result <- roll_vif(data, 252, weights)
# }

Run the code above in your browser using DataLab