Learn R Programming

uGMAR (version 1.0.1)

forecastGMAR: Forecast GMAR pr StMAR process

Description

forecastGMAR forecasts the specified GMAR or StMAR process by using the given data to simulate its possible future values.

Usage

forecastGMAR(data, p, M, params, StMAR = FALSE, restricted = FALSE,
  constraints = FALSE, R, nsteps, conflevel = c(0.95, 0.8), nsimu = 10000,
  printRes = TRUE, plotRes = TRUE, nt, useMean = FALSE)

Arguments

data

a numeric vector or column matrix or an (univariate) time series object containing the data. NA values are not supported.

p

a positive integer specifying the order of AR coefficients.

M

a positive integer specifying the number of mixture components or regimes.

params

a real valued parameter vector specifying the model.

For non-restricted models:

For GMAR model:

Size \((M(p+3)-1x1)\) vector \(\theta\)\(=\)(\(\upsilon_{1}\),...,\(\upsilon_{M}\), \(\alpha_{1},...,\alpha_{M-1}\)), where \(\upsilon_{m}\)\(=(\phi_{m,0},\)\(\phi_{m}\)\(, \sigma_{m}^2)\) and \(\phi_{m}\)=\((\phi_{m,1},...,\phi_{m,p}), m=1,...,M\).

For StMAR model:

Size \((M(p+4)-1x1)\) vector (\(\theta, \nu\))\(=\)(\(\upsilon_{1}\),...,\(\upsilon_{M}\), \(\alpha_{1},...,\alpha_{M-1}, \nu_{1},...,\nu_{M}\)).

With linear constraints:

Replace the vectors \(\phi_{m}\) with vectors \(\psi_{m}\) and provide a list of constraint matrices R that satisfy \(\phi_{m}\)\(=\)\(R_{m}\psi_{m}\) for all \(m=1,...,M\), where \(\psi_{m}\)\(=(\psi_{m,1},...,\psi_{m,q_{m}})\).

For restricted models:

For GMAR model:

Size \((3M+p-1x1)\) vector \(\theta\)\(=(\phi_{1,0},...,\phi_{M,0},\)\(\phi\)\(, \sigma_{1}^2,...,\sigma_{M}^2,\alpha_{1},...,\alpha_{M-1})\), where \(\phi\)=\((\phi_{1},...,\phi_{M})\).

For StMAR model:

Size \((4M+p-1x1)\) vector (\(\theta, \nu\))\(=(\phi_{1,0},...,\phi_{M,0},\)\(\phi\)\(, \sigma_{1}^2,...,\sigma_{M}^2,\alpha_{1},...,\alpha_{M-1}, \nu_{1},...,\nu_{M})\).

With linear constraints:

Replace the vector \(\phi\) with vector \(\psi\) and provide a constraint matrix \(R\) that satisfies \(\phi\)\(=\)\(R\psi\), where \(\psi\)\(=(\psi_{1},...,\psi_{q})\).

Symbol \(\phi\) denotes an AR coefficient, \(\sigma^2\) a variance, \(\alpha\) a mixing weight and \(v\) a degrees of freedom parameter. Note that in the case M=1 the parameter \(\alpha\) is dropped, and in the case of StMAR model the degrees of freedom parameters \(\nu_{m}\) have to be larger than \(2\).

StMAR

an (optional) logical argument stating whether StMAR model should be considered instead of GMAR model. Default is FALSE.

restricted

an (optional) logical argument stating whether the AR coefficients \(\phi_{m,1},...,\phi_{m,p}\) are restricted to be the same for all regimes. Default is FALSE.

constraints

an (optional) logical argument stating whether general linear constraints should be applied to the model. Default is FALSE.

R

Specifies the linear constraints.

For non-restricted models:

a list of size \((pxq_{m})\) constraint matrices \(R_{m}\) of full column rank satisfying \(\phi_{m}\)\(=\)\(R_{m}\psi_{m}\) for all \(m=1,...,M\), where \(\phi_{m}\)\(=(\phi_{m,1},...,\phi_{m,p})\) and \(\psi_{m}\)\(=(\psi_{m,1},...,\psi_{m,q_{m}})\).

For restricted models:

a size \((pxq)\) constraint matrix \(R\) of full column rank satisfying \(\phi\)\(=\)\(R\psi\), where \(\phi\)\(=(\phi_{1},...,\phi_{p})\) and \(\psi\)\(=\psi_{1},...,\psi_{q}\).

Symbol \(\phi\) denotes an AR coefficient. Note that regardless of any constraints, the nominal order of AR coefficients is alway p for all regimes. This argument is ignored if constraints==FALSE.

nsteps

a positive integer specifying how many steps in the future should be forecasted.

conflevel

an (optional) numeric vector whose elements are in the open interval \((0,1)\), specifying the confidence levels for the confidence intervals that should be calculated. Default is c(0.95, 0.8).

nsimu

an (optional) positive integer specifying to how many simulations the forecast should be based on. Default is 10000.

printRes

an (optional) logical argument defining wether results should be printed or not. Default is TRUE.

plotRes

an (optional) logical argument defining wether the forecast should be plotted or not. Default is TRUE.

nt

an (optional) positive integer specifying the number of observations to be plotted along with the prediction. Default is round(length(data)*0.2).

useMean

set TRUE if the prediction should be based on sample mean instead of median. Default is FALSE.

Value

Returns a data frame containing the empirical best predicton and confidence intervals accordingly to conflevel.

Details

forecastGMAR uses the last p values of the given data to simulate nsimu possible future values for each step. The best prediction is then obtained by calculating the sample median (or mean) of each step and the confidence intervals are obtained from the empirical fractiles.

Examples

Run this code
# NOT RUN {
# GMAR model
params12 <- c(1.1, 0.9, 0.3, 4.5, 0.7, 3.2, 0.8)
pred12 <- forecastGMAR(VIX, 1, 2, params12, nsteps=10)

# Restricted GMAR model
params12r <- c(1.4, 1.8, 0.9, 0.3, 3.2, 0.8)
pred12r <- forecastGMAR(VIX, 1, 2, params12r, restricted=TRUE, nsteps=20,
                        conflevel=c(0.9, 0.8, 0.6), nt=200)

# StMAR model
params12t <- c(1.1, 0.9, 0.3, 4.5, 0.7, 3.2, 0.8, 5, 8)
pred12t <- forecastGMAR(VIX, 1, 2, params12t, StMAR=TRUE, nsteps=1)

# Non-mixture version of StMAR model with data as (fictional) time series object
params11t <- c(0.76, 0.93, 1.4, 2.4)
pred11t <- forecastGMAR(ts(VIX, start=1900, freq=12), 1, 1, params11t,
                        StMAR=TRUE, nsteps=5, useMean=TRUE)

# GMAR model as a mixture of AR(2) and AR(1) models
R <- list(diag(1, ncol=2, nrow=2), as.matrix(c(1, 0)))
params22c <- c(1.2, 0.8, 0.1, 0.3, 3.3, 0.8, 2.8, 0.8)
pred22c <- forecastGMAR(VIX, 2, 2, params22c, constraints=TRUE, R=R,
                        nsteps=15, conflevel=c(0.99, 0.9, 0.8))

# Such StMAR(3,2) that the AR coefficients are restricted to be
# the same for both regimes and that the second AR coefficients are
# constrained to zero.
params32trc <- c(2.2, 1.8, 0.88, -0.03, 2.4, 0.27, 0.40, 3.9, 1000)
pred32trc <- forecastGMAR(VIX, 3, 2, params32trc, StMAR=TRUE, restricted=TRUE, constraints=TRUE,
                          R=matrix(c(1, 0, 0, 0, 0, 1), ncol=2), nsteps=5)
# }

Run the code above in your browser using DataLab