hmm.discnp (version 0.2-4)

pr: Probability of state sequences.

Description

Calculates the conditional probability of one or more state sequences, given the corresponding observations sequences (and the model parameters.

Usage

pr(s,y,object=NULL,tpm,Rho,ispd=NULL)

Arguments

s

A sequence of states of the underlying Markov chain, or a list of such sequences.

y

A sequence of observations from a hidden Markov model, corresponding to the state sequence s, or a list of such sequences corresponding to the state sequences in the list s. If y is or consists of a single sequence, it is assumed to correspond to each of the state sequences in s in turn. Otherwise the length of the list y must be the same as the length of the list s (otherwise an error is given). If y is missing, it is extracted from object provided that object and its y component are not NULL. Otherwise an error is given.

object

An object of class hmm.discnp as returned by hmm().

tpm

The transition probability matrix of the chain. Ignored (and extracted from object instead) if object is not NULL.

Rho

The matrix of probabilities specifying the distribution of the observations, given the underlying state. The rows of this matrix correspond to the possible values of the observations, the columns to the states. Ignored (and extracted from object instead) if object is not NULL.

ispd

The vector specifying the initial state probability distribution of the Markov chain. Ignored (and extracted from object instead) if object is not NULL. If both ispd and object are NULL then ispd is taken to be the stationary distribution of the chain, calculated from tpm.

Value

The probability of s given y, or a vector of such probabilities if s and y are lists.

Warning

The conditional probabilities will be tiny if the sequences involved are of any substantial length. Underflow may be a problem. The implementation of the calculations is not sophisticated.

See Also

hmm(), mps(), viterbi(), sp(), fitted.hmm.discnp()

Examples

Run this code
# NOT RUN {
# See the help for sim.hmm() for how to generate y.num.
# }
# NOT RUN {
fit.num <- hmm(y.num,K=2,verb=TRUE)
# Using fitted parmeters.
s.vit.1   <- viterbi(y.num,fit.num)
pr.vit.1  <- pr(s.vit.1,object=fit.num)
# Using true parameters from which y.num was generated.
s.vit.2   <- viterbi(y.num,tpm=P,Rho=R)
pr.vit.2  <- pr(s.vit.2,y.num,tpm=P,Rho=R)
# }

Run the code above in your browser using DataLab