loglikelihood
computes the log-likelihood of the specified GMAR, StMAR, or G-StMAR model.
Exists for convenience if one wants to for example plot profile log-likelihoods or employ other estimation algorithms.
Use minval
to control what happens when the parameter vector is outside the parameter space.
loglikelihood(
data,
p,
M,
params,
model = c("GMAR", "StMAR", "G-StMAR"),
restricted = FALSE,
constraints = NULL,
conditional = TRUE,
parametrization = c("intercept", "mean"),
returnTerms = FALSE,
minval = NA
)
a numeric vector or class 'ts'
object containing the data. NA
values are not supported.
a positive integer specifying the autoregressive order of the model.
a positive integer specifying the number of mixture components.
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
.
a real valued parameter vector specifying the 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\).
Size \((M(p+4)-1x1)\) vector (\(\theta, \nu\))\(=\)(\(\upsilon_{1}\),...,\(\upsilon_{M}\), \(\alpha_{1},...,\alpha_{M-1}, \nu_{1},...,\nu_{M}\)).
Size \((M(p+3)+M2-1x1)\) vector (\(\theta, \nu\))\(=\)(\(\upsilon_{1}\),...,\(\upsilon_{M}\), \(\alpha_{1},...,\alpha_{M-1}, \nu_{M1+1},...,\nu_{M}\)).
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}})\).
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})\).
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})\).
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})\).
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\).
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.
a logical argument stating whether the AR coefficients \(\phi_{m,1},...,\phi_{m,p}\) are restricted to be the same for all regimes.
specifies linear constraints applied to the autoregressive parameters.
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}})\).
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 autoregressive order
is always p
for all regimes.
Ignore or set to NULL
if applying linear constraints is not desired.
a logical argument specifying whether the conditional or exact log-likelihood function should be used.
is the model parametrized with the "intercepts" \(\phi_{m,0}\) or "means" \(\mu_m = \phi_{m,0}/(1-\sum\phi_{i,m})\)?
should the terms \(l_{t}: t=1,..,T\) in the log-likelihood function (see KMS 2015, eq.(13) or MPS 2018, eq.(15)) be returned instead of the log-likelihood value?
this will be returned when the parameter vector is outside the parameter space and boundaries==TRUE
.
Returns the log-likelihood value or the terms described in returnTerms
.
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. (2012) Misspecification tests based on quantile residuals. The Econometrics Journal, 15, 358-393.
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].
Virolainen S. 2020. A mixture autoregressive model based on Gaussian and Student's t-distribution. arXiv:2003.05221 [econ.EM].
fitGSMAR
, GSMAR
, quantileResiduals
,
mixingWeights
, calc_gradient
# NOT RUN {
# StMAR model
params43 <- c(0.09, 1.31, -0.46, 0.33, -0.23, 0.04, 0.01, 1.15,
-0.3, -0.03, 0.03, 1.54, 0.06, 1.19, -0.3, 0.42, -0.4, 0.01,
0.57, 0.22, 8.05, 2.02, 10000)
loglikelihood(T10Y1Y, p=4, M=3, params=params43, model="StMAR")
# Restricted G-StMAR-model
params42gsr <- c(0.11, 0.03, 1.27, -0.39, 0.24, -0.17, 0.03, 1.01, 0.3, 2.03)
loglikelihood(T10Y1Y, p=4, M=c(1, 1), params=params42gsr, model="G-StMAR",
restricted=TRUE)
# Two-regime GMAR p=2 model with the second AR coeffiecient of
# of the second regime contrained to zero.
constraints <- list(diag(1, ncol=2, nrow=2), as.matrix(c(1, 0)))
params22c <- c(0.03, 1.27, -0.29, 0.03, -0.01, 0.91, 0.34, 0.88)
loglikelihood(T10Y1Y, p=2, M=2, params=params22c, model="GMAR",
constraints=constraints)
# }
Run the code above in your browser using DataLab