This function computes the log-likelihood value of a (hierarchical) hidden Markov model for given observations and parameter values.
Arguments
- parUncon
[
parUncon]
An object of classparUncon, which is anumericvectorwith identified and unconstrained model parameters in the following order:non-diagonal transition probabilities
gammasUnconexpectations
muUnconstandard deviations
sigmaUncon(if any)degrees of freedom
dfUncon(if any)fine-scale parameters for each coarse-scale state, in the same order (if any)
- observations
[
numeric()|matrix()]
Anumericvectorof time-series data.In the hierarchical case (
hierarchy = TRUE), amatrixwith coarse-scale data in the first column and corresponding fine-scale data in the rows.- controls
[
list()|fHMM_controls]
Either alistor an object of classfHMM_controls.The
listcan contain the following elements, which are described in more detail below:hierarchy, defines a 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, alistof controls that define the data,fit, alistof 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
controlsalways override individual specifications.- hierarchy
[
logical(1)]
Alogical, set toTRUEfor a 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
[
integer(1)|integer(2)]
Aninteger, the number of states of the underlying Markov chain.If
hierarchy = TRUE,statesmust be avectorof length 2. The first entry corresponds to the coarse-scale layer, while the second entry corresponds to the fine-scale layer.By default,
states = 2ifhierarchy = FALSEandstates = c(2, 2)ifhierarchy = TRUE.- sdds
[
character(1)|character(2)]
Acharacter, 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,sddsmust be avectorof 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"ifhierarchy = FALSEandsdds = c("normal", "normal")ifhierarchy = TRUE.- negative
[
logical(1)]
EitherTRUEto return the negative log-likelihood value (useful for optimization) orFALSE(default), else.- check_controls
[
logical(1)]
EitherTRUEto check the defined controls orFALSEto not check them (which saves computation time), else.
Examples
### HMM log-likelihood
controls <- set_controls(states = 2, sdds = "normal")
parameters <- fHMM_parameters(controls)
parUncon <- par2parUncon(parameters, controls)
observations <- 1:10
ll_hmm(parUncon, observations, controls)
#> [1] -268.9179
### HHMM log-likelihood
controls <- set_controls(
hierarchy = TRUE, states = c(2, 2), sdds = c("normal", "normal")
)
parameters <- fHMM_parameters(controls)
parUncon <- par2parUncon(parameters, controls)
observations <- matrix(dnorm(110), ncol = 11, nrow = 10)
ll_hmm(parUncon, observations, controls)
#> [1] -70.26436
