forwardback: Forward and Backward Probabilities of DTHMM

Description Usage Arguments Details Value Author(s) References See Also Examples

Description

These functions calculate the forward and backward probabilities for a dthmm process, as defined in MacDonald & Zucchini (1997, Page 60).

Usage

1
2
3
4
backward(x, Pi, distn, pm, pn = NULL)
forward(x, Pi, delta, distn, pm, pn = NULL)
forwardback(x, Pi, delta, distn, pm, pn = NULL, fortran = TRUE)
forwardback.dthmm(Pi, delta, prob, fortran = TRUE, fwd.only = FALSE)

Arguments

x

is a vector of length n containing the observed process.

Pi

is the m*m transition probability matrix of the hidden Markov chain.

delta

is the marginal probability distribution of the m hidden states.

distn

is a character string with the distribution name, e.g. "norm" or "pois". If the distribution is specified as "wxyz" then a probability (or density) function called "dwxyz" should be available, in the standard R format (e.g. dnorm or dpois).

pm

is a list object containing the current (Markov dependent) parameter estimates associated with the distribution of the observed process (see dthmm).

pn

is a list object containing the observation dependent parameter values associated with the distribution of the observed process (see dthmm).

prob

an n*m matrix containing the observation probabilities or densities (rows) by Markov state (columns).

fortran

logical, if TRUE (default) use the Fortran code, else use the R code.

fwd.only

logical, if FALSE (default) calculate both forward and backward probabilities; else calculate and return only forward probabilities and log-likelihood.

Details

Denote the n*m matrices containing the forward and backward probabilities as A and B, respectively. Then the (i,j)th elements are

alpha_{ij} = Pr{ X_1 = x_1, ..., X_i = x_i, C_i = j }

and

beta_{ij} = Pr{ X_{i+1} = x_{i+1}, ..., X_n = x_n | C_i = j } .

Further, the diagonal elements of the product matrix AB' are all the same, taking the value of the log-likelihood.

Value

The function forwardback returns a list with two matrices containing the forward and backward (log) probabilities, logalpha and logbeta, respectively, and the log-likelihood (LL).

The functions backward and forward return a matrix containing the forward and backward (log) probabilities, logalpha and logbeta, respectively.

Author(s)

The algorithm has been taken from Zucchini (2005).

References

Cited references are listed on the HiddenMarkov manual page.

See Also

logLik

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#    Set Parameter Values

Pi <- matrix(c(1/2, 1/2,   0,   0,   0,
               1/3, 1/3, 1/3,   0,   0,
                 0, 1/3, 1/3, 1/3,   0,
                 0,   0, 1/3, 1/3, 1/3,
                 0,   0,   0, 1/2, 1/2),
             byrow=TRUE, nrow=5)

p <- c(1, 4, 2, 5, 3)
delta <- c(0, 1, 0, 0, 0)

#------   Poisson HMM   ------

x <- dthmm(NULL, Pi, delta, "pois", list(lambda=p), discrete=TRUE)

x <- simulate(x, nsim=10)

y <- forwardback(x$x, Pi, delta, "pois", list(lambda=p))

# below should be same as LL for all time points
print(log(diag(exp(y$logalpha) %*% t(exp(y$logbeta)))))
print(y$LL)

#------   Gaussian HMM   ------

x <- dthmm(NULL, Pi, delta, "norm", list(mean=p, sd=p/3))

x <- simulate(x, nsim=10)

y <- forwardback(x$x, Pi, delta, "norm", list(mean=p, sd=p/3))

# below should be same as LL for all time points
print(log(diag(exp(y$logalpha) %*% t(exp(y$logbeta)))))
print(y$LL)

HiddenMarkov documentation built on April 27, 2021, 5:06 p.m.