This function defines and validates specifications for model estimation.
controls |
Either a list or an object of class fHMM_controls .
The list can contain the following elements, which are described
in more detail below:
-
hierarchy , defines an hierarchical HMM,
-
states , defines the number of states,
-
sdds , defines the state-dependent distributions,
-
horizon , defines the time horizon,
-
period , defines a flexible, periodic fine-scale time horizon,
-
data , a list of controls that define the data,
-
fit , a list of controls that define the model fitting
Either none, all, or selected elements can be specified.
Unspecified parameters are set to their default values.
Important: Specifications in controls always override individual
specifications.
|
hierarchy |
A logical , set to TRUE for an hierarchical HMM.
If hierarchy = TRUE , some of the other controls must be specified for
the coarse-scale and the fine-scale layer.
By default, hierarchy = FALSE .
|
states |
An integer , the number of states of the underlying Markov chain.
If hierarchy = TRUE , states must be a vector of length
2. The first entry corresponds to the coarse-scale layer, while the second
entry corresponds to the fine-scale layer.
By default, states = 2 if hierarchy = FALSE and
states = c(2, 2) if hierarchy = TRUE .
|
sdds |
A character , specifying the state-dependent distribution. One of
-
"normal" (the normal distribution),
-
"lognormal" (the log-normal distribution),
-
"t" (the t-distribution),
-
"gamma" (the gamma distribution),
-
"poisson" (the Poisson distribution).
The distribution parameters, i.e. the
mean mu ,
standard deviation sigma (not for the Poisson distribution),
degrees of freedom df (only for the t-distribution),
can be fixed via, e.g., "t(df = 1)" or
"gamma(mu = 0, sigma = 1)" .
To fix different values of a parameter for different states, separate by
"|", e.g. "poisson(mu = 1|2|3)" .
If hierarchy = TRUE , sdds must be a vector of length 2.
The first entry corresponds to the coarse-scale layer, while the second entry
corresponds to the fine-scale layer.
By default, sdds = "normal" if hierarchy = FALSE and
sdds = c("normal", "normal") if hierarchy = TRUE .
|
horizon |
A numeric , specifying the length of the time horizon.
If hierarchy = TRUE , horizon must be a vector of length
2. The first entry corresponds to the coarse-scale layer, while the second
entry corresponds to the fine-scale layer.
By default, horizon = 100 if hierarchy = FALSE and
horizon = c(100, 30) if hierarchy = TRUE .
If data is specified (i.e., not NA ), the first entry of
horizon is ignored and the (coarse-scale) time horizon is defined by
available data.
|
period |
Only relevant if hierarchy = TRUE .
In this case, a character which specifies a flexible, periodic
fine-scale time horizon and can be one of
-
"w" for a week,
-
"m" for a month,
-
"q" for a quarter,
-
"y" for a year.
By default, period = NA . If period is not NA , it
overrules horizon[2] .
|
data |
Either NA , in which case data is simulated (the default), or a
list of controls specifying the empirical data set.
The list can contain the following elements, which are described
in more detail below:
-
file , defines the data set,
-
date_column , defines the date column,
-
data_column , defines the data column,
-
from , defines a lower date limit,
-
to , defines an upper date limit,
-
logreturns , defines a data transformation to log-returns,
-
merge , defines the merging for coarse-scale observations.
Either none, all, or selected elements can be specified.
Unspecified parameters are set to their default values, see below.
Specifications in data override individual specifications.
|
file |
A data.frame with data and dates for modeling.
If hierarchy = TRUE , file can be a list of
length 2. The first entry is a data.frame and provides the data for
the coarse-scale layer, while the second entry corresponds to the fine-scale
layer. If file is a single data.frame , then the same
data.frame is used for both layers.
Alternatively, it can be a character (of length two), the path to a
.csv-file with financial data.
|
date_column |
A character , the name of the column in file with dates.
If hierarchy = TRUE and file is a list of two
data.frame s, data_column must be a vector of
length 2. The first entry corresponds to the coarse-scale layer, while the
second entry corresponds to the fine-scale layer.
By default, date_column = "Date" .
|
data_column |
A character , the name of the column in file with observations.
If hierarchy = TRUE , data_column must be a vector of
length 2. The first entry corresponds to the coarse-scale layer, while the
second entry corresponds to the fine-scale layer.
By default, data_column = "Close" if hierarchy = FALSE and
data_column = c("Close", "Close") if hierarchy = TRUE .
|
from |
A character of the format "YYYY-MM-DD" , setting a lower
date limit. No lower limit if from = NA (default).
|
to |
A character of the format "YYYY-MM-DD" , setting an upper
date limit. No lower limit if to = NA (default).
|
logreturns |
A logical , if TRUE the data is transformed to log-returns.
If hierarchy = TRUE , logreturns must be a vector of
length 2. The first entry corresponds to the coarse-scale layer, while the
second entry corresponds to the fine-scale layer.
By default, logreturns = FALSE if hierarchy = FALSE and
logreturns = c(FALSE, FALSE) if hierarchy = TRUE .
|
merge |
Only relevant if hierarchy = TRUE .
In this case, a function
which merges an input numeric vector of fine-scale data x into one
coarse-scale observation. For example,
-
merge = function(x) mean(x) (default) defines the mean of the
fine-scale data as the coarse-scale observation,
-
merge = function(x) mean(abs(x)) for the mean of the
absolute values,
-
merge = function(x) sum(abs(x)) for the sum of the
absolute values,
-
merge = function(x) (tail(x, 1) - head(x, 1)) / head(x, 1) for
the relative change of the first to the last fine-scale observation.
|
fit |
A list of controls specifying the model fitting.
The list can contain the following elements, which are described
in more detail below:
-
runs , defines the number of numerical optimization runs,
-
origin , defines initialization at the true parameters,
-
accept , defines the set of accepted optimization runs,
-
gradtol , defines the gradient tolerance,
-
iterlim , defines the iteration limit,
-
print.level , defines the level of printing,
-
steptol , defines the minimum allowable relative step length.
Either none, all, or selected elements can be specified.
Unspecified parameters are set to their default values, see below.
Specifications in fit override individual specifications.
|
runs |
An integer , setting the number of randomly initialized
optimization runs of the model likelihood from which the best one is selected
as the final model.
By default, runs = 10 .
|
origin |
Only relevant for simulated data, i.e., if the data control is
NA .
In this case, a logical . If origin = TRUE the optimization is
initialized at the true parameter values.
This sets run = 1 and accept = 1:5 .
By default, origin = FALSE .
|
accept |
An integer (vector), specifying which optimization runs are
accepted based on the output code of nlm .
By default, accept = 1:3 .
|
gradtol |
A positive numeric value, specifying the gradient tolerance, passed on
to nlm .
By default, gradtol = 0.01 .
|
iterlim |
A positive integer value, specifying the iteration limit, passed on
to nlm .
By default, iterlim = 100 .
|
print.level |
One of 0 , 1 , and 2 to control the verbosity of the
numerical likelihood optimization, passed on to nlm .
By default, print.level = 0 .
|
steptol |
A positive numeric value, specifying the step tolerance, passed on
to nlm .
By default, gradtol = 0.01 .
|
x , object |
An object of class fHMM_controls .
|
... |
Currently not used.
|