Learn R Programming

uGMAR (version 3.1.0)

condMoments: Calculate conditional moments of GMAR, StMAR or G-StMAR model

Description

condMoments calculates the regime specific conditional means and variances and total conditional means and variances of the specified GMAR, StMAR or G-StMAR model.

Usage

condMoments(data, p, M, params, model = c("GMAR", "StMAR", "G-StMAR"),
  restricted = FALSE, constraints = NULL,
  parametrization = c("intercept", "mean"),
  to_return = c("regime_cmeans", "regime_cvars", "total_cmeans",
  "total_cvars"))

Arguments

data

a numeric vector class 'ts' object containing the data. NA values are not supported.

p

a positive integer specifying the order of AR coefficients.

M
For GMAR and StMAR models:

a positive integer specifying the number of mixture components.

For G-StMAR model:

a size (2x1) vector specifying the number of GMAR-type components M1 in the first element and StMAR-type components M2 in the second. The total number of mixture components is M=M1+M2.

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}\)).

For G-StMAR model:

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

With linear constraints:

Replace the vectors \(\phi_{m}\) with vectors \(\psi_{m}\) and provide a list of constraint matrices C 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})\).

For G-StMAR model:

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

With linear constraints:

Replace the vector \(\phi\) with vector \(\psi\) and provide a constraint matrix \(C\) 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 \(\nu\) a degrees of freedom parameter. If parametrization=="mean" just replace each intercept term \(\phi_{m,0}\) with regimewise mean \(\mu_m = \phi_{m,0}/(1-\sum\phi_{i,m})\). In the G-StMAR model the first M1 components are GMAR-type and the rest M2 components are StMAR-type. Note that in the case M=1 the parameter \(\alpha\) is dropped, and in the case of StMAR or G-StMAR model the degrees of freedom parameters \(\nu_{m}\) have to be larger than \(2\).

model

is "GMAR", "StMAR" or "G-StMAR" model considered? In G-StMAR model the first M1 components are GMAR-type and the rest M2 components are StMAR-type.

restricted

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

constraints

specifies linear constraints applied to the autoregressive parameters.

For non-restricted models:

a list of size \((pxq_{m})\) constraint matrices \(C_{m}\) of full column rank satisfying \(\phi_{m}\)\(=\)\(C_{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 \(C\) of full column rank satisfying \(\phi\)\(=\)\(C\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. Ignore or set to NULL if applying linear constraints is not desired.

parametrization

is the model parametrized with the "intercepts" \(\phi_{m,0}\) or "means" \(\mu_m = \phi_{m,0}/(1-\sum\phi_{i,m})\)?

to_return

calculate regimewise conditional means (regime_cmeans), regimewise conditional variances (regime_cvars), total conditional means (total_cmeans), or total conditional variances (total_cvars)?

Value

Note that the first p observations are taken as the initial values so the conditional moments start form the p+1:th observation (interpreted as t=1).

if to_return=="regime_cmeans":

a size ((n_obs-p)xM) matrix containing the regime specific conditional means.

if to_return=="regime_cvars":

a size ((n_obs-p)xM) matrix containing the regime specific conditional variances.

if to_return=="total_cmeans":

a size ((n_obs-p)x1) vector containing the total conditional means.

if to_return=="total_cvars":

a size ((n_obs-p)x1) vector containing the total conditional variances.

References

  • Galbraith, R., Galbraith, J. 1974. On the inverses of some patterned matrices arising in the theory of stationary time series. Journal of Applied Probability 11, 63-71.

  • Kalliovirta L., Meitz M. and Saikkonen P. 2015. Gaussian Mixture Autoregressive model for univariate time series. Journal of Time Series Analysis, 36, 247-266.

  • Meitz M., Preve D., Saikkonen P. 2018. A mixture autoregressive model based on Student's t-distribution. arXiv:1805.04010 [econ.EM].

  • There are currently no published references for the G-StMAR model, but it's a straightforward generalization with theoretical properties similar to the GMAR and StMAR models.

See Also

Other moment functions: get_regime_autocovs, get_regime_means, get_regime_vars, uncondMoments

Examples

Run this code
# NOT RUN {
# GMAR model
params12 <- c(0.18, 0.93, 0.01, 0.86, 0.68, 0.02, 0.88)
rcm12 <- condMoments(logVIX, 1, 2, params12, to_return="regime_cmeans")
rcv12 <- condMoments(logVIX, 1, 2, params12, to_return="regime_cvars")
tcm12 <- condMoments(logVIX, 1, 2, params12, to_return="total_cmeans")
tcv12 <- condMoments(logVIX, 1, 2, params12, to_return="total_cvars")

# StMAR model
params12t <- c(0.17,  0.93, 0.01, 4.87, -0.90, 0.01, 0.98, 4.22, 1000)
rcm12t <- condMoments(logVIX, 1, 2, params12t, model="StMAR",
 to_return="regime_cmeans")
rcv12t <- condMoments(logVIX, 1, 2, params12t, model="StMAR",
 to_return="regime_cvars")

# G-StMAR model
params12gs <- c(0.86, 0.68, 0.02, 0.18, 0.93, 0.01, 0.11, 44)
rcv12gs <- condMoments(logVIX, 1, c(1,1), params12gs, model="G-StMAR",
 to_return="regime_cvars")
tcv12gs <- condMoments(logVIX, 1, c(1,1), params12gs, model="G-StMAR",
 to_return="total_cvars")
# }

Run the code above in your browser using DataLab