ts_ma: Moving Average Method for Time Series Data

View source: R/ts_seasonal.R

ts_maR Documentation

Moving Average Method for Time Series Data

Description

Calculate the moving average (and double moving average) for time series data

Usage

ts_ma(ts.obj, n = c(3, 6, 9), n_left = NULL, n_right = NULL,
  double = NULL, plot = TRUE, show_legend = TRUE, multiple = FALSE,
  separate = TRUE, margin = 0.03, title = NULL, Xtitle = NULL,
  Ytitle = NULL)

Arguments

ts.obj

a univariate time series object of a class "ts", "zoo" or "xts" (support only series with either monthly or quarterly frequency)

n

A single or multiple integers (by default using 3, 6, and 9 as inputs), define a two-sides moving averages by setting the number of past and future to use in each moving average window along with current observation.

n_left

A single integer (optional argument, default set to NULL), can be used, along with the n_right argument, an unbalanced moving average. The n_left defines the number of lags to includes in the moving average.

n_right

A single integer (optional argument, default set to NULL), can be used, along with the n_left argument, to set an unbalanced moving average. The n_right defines the number of negative lags to includes in the moving average.

double

A single integer, an optional argument. If not NULL (by default), will apply a second moving average process on the initial moving average output

plot

A boolean, if TRUE will plot the results

show_legend

A boolean, if TRUE will show the plot legend

multiple

A boolean, if TRUE (and n > 1) will create multiple plots, one for each moving average degree. By default is set to FALSE

separate

A boolean, if TRUE will separate the orignal series from the moving average output

margin

A numeric, set the plot margin when using the multiple or/and separate option, default value is 0.03

title

A character, if not NULL (by default), will use the input as the plot title

Xtitle

A character, if not NULL (by default), will use the input as the plot x - axis title

Ytitle

A character, if not NULL (by default), will use the input as the plot y - axis title

Details

A one-side moving averages (also known as simple moving averages) calculation for Y[t] (observation Y of the series at time t):

MA[t|n] = (Y[t-n] + Y[t-(n-1)] +...+ Y[t]) / (n + 1),

where n defines the number of consecutive observations to be used on each rolling window along with the current observation

Similarly, a two-sided moving averages with an order of (2*n + 1) for Y[t]:

MA[t|n] = (Y[t-n] + Y[t-(n-1)] +...+ Y[t] +...+ Y[t+(n-1)] + Y[t+n]) / (2*n + 1)

Unbalanced moving averages with an order of (k1 + k2 + 1) for observation Y[t]:

MA[t|k1 & k2] = (Y[t-k1] + Y[t-(k1-1)] +...+ Y[t] +...+ Y[t+(k2-1)] + Y[t+k2]) / (k1 + k2 + 1)

The unbalanced moving averages is a special case of two-sides moving averages, where k1 and k2 represent the number of past and future periods, respectively to be used in each rolling window, and k1 != k2 (otherwise it is a normal two-sided moving averages function)

Value

A list with the original series, the moving averages outputs and the plot

Examples

## Not run: 
# A one-side moving average order of 7
USgas_MA7 <- ts_ma(USgas, n_left = 6, n = NULL)

# A two-sided moving average order of 13
USgas_two_side_MA <- ts_ma(USgas, n = 6)

# Unbalanced moving average of order 12
 USVSales_MA12 <- ts_ma(USVSales, n_left = 6, n_right = 5, n = NULL, 
 title = "US Monthly Total Vehicle Sales - MA", 
 Ytitle = "Thousand of Units")

# Adding double MA of order 2 to balanced the series:
USVSales_MA12 <- ts_ma(USVSales, n_left = 6, n_right = 5, n = NULL, 
 double = 2,
 title = "US Monthly Total Vehicle Sales - MA", 
 Ytitle = "Thousand of Units")

# Adding several types of two-sided moving averages along with the unblanced
# Plot each on a separate plot
USVSales_MA12 <- ts_ma(USVSales, n_left = 6, n_right = 5, n = c(3, 6, 9), 
double = 2, multiple = TRUE,
title = "US Monthly Total Vehicle Sales - MA", 
Ytitle = "Thousand of Units")

## End(Not run)

TSstudio documentation built on Aug. 9, 2023, 9:06 a.m.