GAfit
estimates specified GMAR, StMAR, or G-StMAR model using a genetic algorithm.
The employed genetic algorithm is designed to find starting values for gradient based methods.
GAfit(
data,
p,
M,
model = c("GMAR", "StMAR", "G-StMAR"),
restricted = FALSE,
constraints = NULL,
parametrization = c("intercept", "mean"),
conditional = TRUE,
ngen = 200,
popsize,
smartMu = min(100, ceiling(0.5 * ngen)),
meanscale,
sigmascale,
initpop = NULL,
regime_force_scale = 1,
red_criteria = c(0.05, 0.01),
to_return = c("alt_ind", "best_ind"),
minval,
seed = NULL
)
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
.
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.
is the model parametrized with the "intercepts" \(\phi_{m,0}\) or "means" \(\mu_m = \phi_{m,0}/(1-\sum\phi_{i,m})\)?
a logical argument specifying whether the conditional or exact log-likelihood function should be used.
a positive integer specifying the number of generations to be ran through in the genetic algorithm.
a positive even integer specifying the population size in the genetic algorithm.
Default is 10*d
where d
is the number of parameters.
a positive integer specifying the generation after which the random mutations in the genetic algorithm are "smart". This means that mutating individuals will mostly mutate fairly close (or partially close) to the best fitting individual so far.
a real valued vector of length two specifying the mean (the first element) and standard deviation (the second element)
of the normal distribution from which the \(\mu_{m}\) mean-parameters are generated in random mutations in the genetic algorithm.
Default is c(mean(data), sd(data))
.
Note that the genetic algorithm optimizes with mean-parametrization even when parametrization=="intercept"
, but
input (in initpop
) and output (return value) parameter vectors may be intercept-parametrized.
a positive real number specifying the standard deviation of the (zero mean, positive only by taking absolute value)
normal distribution from which the component variance parameters are generated in the random mutations in the genetic algorithm.
Default is var(stats::ar(data, order.max=10)$resid, na.rm=TRUE)
.
a list of parameter vectors from which the initial population of the genetic algorithm will be generated from. The parameter vectors should be of form...
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}\)\(=\)\(C_{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\)\(=\)\(C\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 or G-StMAR model,
the degrees of freedom parameters \(\nu_{m}\) have to be larger than \(2\).
If not specified (or FALSE
as is default), the initial population will be drawn randomly.
a non-negative real number specifying how much should natural selection favour individuals
with less regimes that have almost all mixing weights (practically) at zero (see red_criteria
), i.e., with
less "redundant regimes".
Set to zero for no favouring or large number for heavy favouring. Without any favouring the genetic algorithm gets more often stuck
in an area of the parameter space where some regimes are wasted, but with too much favouring the best genes might never mix into the
population and the algorithm might converge poorly. Default is 1
and it gives \(2x\) larger surviving probability weights for
individuals with no wasted regimes compared to individuals with one wasted regime. Number 2
would give \(3x\) larger probabilities etc.
a length 2 numeric vector specifying the criteria that is used to determine whether a regime is redundant or not.
Any regime m
which satisfies sum(mixingWeights[,m] > red_criteria[1]) < red_criteria[2]*n_obs
will be considered "redundant".
One should be careful when adjusting this argument (set c(0, 0)
to fully disable the 'redundant regime' features from the algorithm).
should the genetic algorithm return the best fitting individual which has the least "redundant" regimes ("alt_ind"
)
or the individual which has the highest log-likelihood in general ("best_ind"
) but might have more wasted regimes?
a real number defining the minimum value of the log-likelihood function that will be considered.
Values smaller than this will be treated as they were minval
and the corresponding individuals will never survive.
The default is -(10^(ceiling(log10(length(data))) + 1) - 1)
, and one should be very careful if adjusting this.
a single value, interpreted as an integer, or NULL, that sets seed for the random number generator in the beginning of
the function call. If calling GAfit
from fitGSMAR
, use the argument seeds
instead of passing the argument seed
.
Returns estimated parameter vector with the form described in initpop
.
The core of the genetic algorithm is mostly based on the description by Dorsey and Mayer (1995). It utilizes a slightly modified version of the individually adaptive crossover and mutation rates described by Patnaik and Srinivas (1994) and employs (50%) fitness inheritance discussed by Smith, Dike and Stegmann (1995). Large (in absolute value) but stationary AR parameter values are generated with the algorithm proposed by Monahan (1984).
By "redundant" or "wasted" regimes we mean regimes that have the time varying mixing weights basically at zero for all t. The model with redundant regimes would have approximately the same log-likelihood value without the redundant regimes and there is no purpose to have redundant regimes in the model.
Dorsey R. E. and Mayer W. J. 1995. Genetic algorithms for estimation problems with multiple optima, nondifferentiability, and other irregular features. Journal of Business & Economic Statistics, 13, 53-66.
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].
Monahan J.F. 1984. A Note on Enforcing Stationarity in Autoregressive-Moving Average Models. Biometrica 71, 403-404.
Patnaik L.M. and Srinivas M. 1994. Adaptive Probabilities of Crossover and Mutation in Genetic Algorithms. Transactions on Systems, Man and Cybernetics 24, 656-667.
Smith R.E., Dike B.A., Stegmann S.A. 1995. Fitness inheritance in genetic algorithms. Proceedings of the 1995 ACM Symposium on Applied Computing, 345-350.
Virolainen S. 2020. A mixture autoregressive model based on Gaussian and Student's t-distribution. arXiv:2003.05221 [econ.EM].