GSMAR: Create object of class 'gsmar' defining a GMAR, StMAR, or...

View source: R/GSMARconstructor.R

GSMARR Documentation

Create object of class 'gsmar' defining a GMAR, StMAR, or G-StMAR model

Description

GSMAR creates an S3 object of class 'gsmar' that defines a GMAR, StMAR, or G-StMAR model.

Usage

GSMAR(
  data,
  p,
  M,
  params,
  model = c("GMAR", "StMAR", "G-StMAR"),
  restricted = FALSE,
  constraints = NULL,
  conditional = TRUE,
  parametrization = c("intercept", "mean"),
  calc_qresiduals,
  calc_cond_moments,
  calc_std_errors = FALSE,
  custom_h = NULL
)

## S3 method for class 'gsmar'
logLik(object, ...)

## S3 method for class 'gsmar'
residuals(object, ...)

## S3 method for class 'gsmar'
summary(object, ..., digits = 2)

## S3 method for class 'gsmar'
plot(x, ..., include_dens = TRUE)

## S3 method for class 'gsmar'
print(x, ..., digits = 2, summary_print = FALSE)

Arguments

data

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

p

a positive integer specifying the autoregressive order of the model.

M
For GMAR and StMAR models:

a positive integer specifying the number of mixture components.

For G-StMAR models:

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

params

a real valued parameter vector specifying the model.

For non-restricted models:

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

  • \upsilon_{m}=(\phi_{m,0},\phi_{m},\sigma_{m}^2)

  • \phi_{m}=(\phi_{m,1},...,\phi_{m,p}), m=1,...,M

  • \nu=(\nu_{M1+1},...,\nu_{M})

  • M1 is the number of GMAR type regimes.

In the GMAR model, M1=M and the parameter \nu dropped. In the StMAR model, M1=0.

If the model imposes linear constraints on the autoregressive parameters: Replace the vectors \phi_{m} with the vectors \psi_{m} that satisfy \phi_{m}=C_{m}\psi_{m} (see the argument constraints).

For restricted models:

Size (3M+M-M1+p-1x1) vector \theta=(\phi_{1,0},...,\phi_{M,0},\phi, \sigma_{1}^2,...,\sigma_{M}^2,\alpha_{1},...,\alpha_{M-1},\nu), where \phi=(\phi_{1},...,\phi_{p}) contains the AR coefficients, which are common for all regimes.

If the model imposes linear constraints on the autoregressive parameters: Replace the vector \phi with the vector \psi that satisfies \phi=C\psi (see the argument constraints).

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 the 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 mixing weight parameters \alpha are dropped, and in the case of StMAR or G-StMAR model, the degrees of freedom parameters \nu have to be larger than 2.

model

is "GMAR", "StMAR", or "G-StMAR" model considered? In the 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 imposed to each regime's autoregressive parameters separately.

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

The symbol \phi denotes an AR coefficient. Note that regardless of any constraints, the autoregressive order is always p for all regimes. Ignore or set to NULL if applying linear constraints is not desired.

conditional

a logical argument specifying whether the conditional or exact log-likelihood function should be used.

parametrization

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

calc_qresiduals

should quantile residuals be calculated? Default is TRUE iff the model contains data.

calc_cond_moments

should conditional means and variances be calculated? Default is TRUE iff the model contains data.

calc_std_errors

should approximate standard errors be calculated?

custom_h

A numeric vector with same the length as the parameter vector: i:th element of custom_h is the difference used in central difference approximation for partial differentials of the log-likelihood function for the i:th parameter. If NULL (default), then the difference used for differentiating overly large degrees of freedom parameters is adjusted to avoid numerical problems, and the difference is 6e-6 for the other parameters.

object

object of class 'gsmar' created with fitGSMAR or GSMAR.

...

in the plot method: arguments passed to the function density which calculates the kernel density estimate of the data.

digits

number of digits to be printed (max 20)

x

object of class 'gsmar' created with fitGSMAR or GSMAR.

include_dens

Plot also kernel density estimate of the data and model implied stationary density with regimewise densities? See the details.

summary_print

if set to TRUE then the print will include approximate standard errors for the estimates, log-likelihood, information criteria values, modulus of the roots of the characteristic AR polynomials for each regime, and several unconditional moments.

Details

Models can be built without data, e.q., in order to simulate from the process, but some things such as quantile residuals and conditional moments can't be calculated without data.

If include_dens == TRUE, the kernel density estimate of the data is calculated with the function density from the package stats. By default, the default settings of that function are used, including the usage of Gaussian kernel. Use the dot parameters to adjust the settings if desired.

By the model implied stationary density we mean the stationary one-dimensional mixture density of M regimes (see KMS 2015, Theorem 1 and the discussion following it for the Gaussian case and Theorem 2 in PMS 2018 for the Student's t case). The regimewise densities (i.e. each density 1,...,M in the stationary mixture density) are multiplied with the mixing weight parameters accordingly.

In the density plot black represents the kernel density estimate of the data, grey dashed line the model implied density, and the colored dotted lines the regime wise densities.

Value

Returns an object of class 'gsmar' defining the specified GMAR, StMAR, or G-StMAR model. If data is supplied, the returned object contains (by default) empirical mixing weights, some conditional and unconditional moments, and quantile residuals. Note that the first p observations are taken as the initial values so the mixing weights, conditional moments, and quantile residuals start from the p+1:th observation (interpreted as t=1).

Functions

  • logLik(gsmar): Log-likelihood method

  • residuals(gsmar): residuals method to extract quantile residuals

  • summary(gsmar): summary method, standard errors in brackets

  • plot(gsmar): Plot method for class 'gsmar'

  • print(gsmar): print method

References

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

  • Meitz M., Preve D., Saikkonen P. 2023. A mixture autoregressive model based on Student's t-distribution. Communications in Statistics - Theory and Methods, 52(2), 499-515.

  • Virolainen S. 2022. A mixture autoregressive model based on Gaussian and Student's t-distributions. Studies in Nonlinear Dynamics & Econometrics, 26(4) 559-580.

See Also

fitGSMAR, iterate_more, add_data, stmar_to_gstmar, swap_parametrization, get_gradient, simulate.gsmar, predict.gsmar, cond_moments, uncond_moments, LR_test, Wald_test

Examples

# GMAR model without data
params22 <- c(0.9, 0.4, 0.2, 0.5, 0.7, 0.5, -0.2, 0.7, 0.7)
gmar22 <- GSMAR(p=2, M=2, params=params22, model="GMAR")
gmar22

# StMAR model, without data
params12t <- c(1.38, 0.88, 0.27, 3.8, 0.74, 3.15, 0.8, 300, 3.6)
stmar12t <- GSMAR(p=1, M=2, params=params12t, model="StMAR")
stmar12t

# G-StMAR model with data
params42gs <- c(0.04, 1.34, -0.59, 0.54, -0.36, 0.01, 0.06, 1.28, -0.36,
                0.2, -0.15, 0.04, 0.19, 9.75)
gstmar42 <- GSMAR(data=M10Y1Y, p=4, M=c(1, 1), params=params42gs,
                  model="G-StMAR")
gstmar42

# Restricted G-StMAR model with data
params42gsr <- c(0.13, 0.03, 1.29, -0.4, 0.25, -0.2, 0.03, 0.05, 0.51, 2.76)
gstmar42r <- GSMAR(data=M10Y1Y, p=4, M=c(1, 1), params=params42gsr,
                   model="G-StMAR", restricted=TRUE)
gstmar42r

uGMAR documentation built on Aug. 19, 2023, 5:10 p.m.