### Navigation

- index
- modules |
- next |
- previous |
- Statistics »

# Distributions used in implementing Hidden Markov Models

Distributions used in implementing Hidden Markov Models

These distribution classes are designed specifically for HMM’s and not for general use in statistics. For example, they have fixed or non-fixed status, which only make sense relative to being used in a hidden Markov model.

AUTHOR:

> - William Stein, 2010-03

class `sage.stats.hmm.distributions.``DiscreteDistribution`

  Bases: `sage.stats.hmm.distributions.Distribution`

  x.__init__(...) initializes x; see help(type(x)) for signature

class `sage.stats.hmm.distributions.``Distribution`

  Bases: `object`

  A distribution.

  `plot`(*args, **kwds)

    Return a plot of the probability density function.

    INPUT:

    > - args and kwds, passed to the Sage plot function

    OUTPUT:

    > - a Graphics object

    EXAMPLES:

        sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
        sage: P.plot(-10,30)
        Graphics object consisting of 1 graphics primitive

  `prob`(x)

    The probability density function evaluated at x.

    INPUT:

    > - x – object

    OUTPUT:

    > - float

    EXAMPLES:

    This method must be defined in a derived class:

        sage: import sage.stats.hmm.distributions
        sage: sage.stats.hmm.distributions.Distribution().prob(0)
        Traceback (most recent call last):
        ...
        NotImplementedError

  `sample`(n=None)

    Return either a single sample (the default) or n samples from this probability distribution.

    INPUT:

    > - n – None or a positive integer

    OUTPUT:

    > - a single sample if n is 1; otherwise many samples

    EXAMPLES:

    This method must be defined in a derived class:

        sage: import sage.stats.hmm.distributions
        sage: sage.stats.hmm.distributions.Distribution().sample()
        Traceback (most recent call last):
        ...
        NotImplementedError

class `sage.stats.hmm.distributions.``GaussianDistribution`

  Bases: `sage.stats.hmm.distributions.Distribution`

  x.__init__(...) initializes x; see help(type(x)) for signature

class `sage.stats.hmm.distributions.``GaussianMixtureDistribution`

  Bases: `sage.stats.hmm.distributions.Distribution`

  A probability distribution defined by taking a weighted linear combination of Gaussian distributions.

  EXAMPLES:

      sage: P = hmm.GaussianMixtureDistribution([(.3,1,2),(.7,-1,1)]); P
      0.3*N(1.0,2.0) + 0.7*N(-1.0,1.0)
      sage: P[0]
      (0.3, 1.0, 2.0)
      sage: P.is_fixed()
      False
      sage: P.fix(1)
      sage: P.is_fixed(0)
      False
      sage: P.is_fixed(1)
      True
      sage: P.unfix(1)
      sage: P.is_fixed(1)
      False

  `fix`(i=None)

    Set that this GaussianMixtureDistribution (or its ith component) is fixed when using Baum-Welch to update the corresponding HMM.

    INPUT:

    > - i - None (default) or integer; if given, only fix the i-th component

    EXAMPLES:

        sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
        sage: P.fix(1); P.is_fixed()
        False
        sage: P.is_fixed(1)
        True
        sage: P.fix(); P.is_fixed()
        True

  `is_fixed`(i=None)

    Return whether or not this GaussianMixtureDistribution is fixed when using Baum-Welch to update the corresponding HMM.

    INPUT:

    > - i - None (default) or integer; if given, only return whether the i-th component is fixed

    EXAMPLES:

        sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
        sage: P.is_fixed()
        False
        sage: P.is_fixed(0)
        False
        sage: P.fix(0); P.is_fixed()
        False
        sage: P.is_fixed(0)
        True
        sage: P.fix(); P.is_fixed()
        True

  `prob`(x)

    Return the probability of x.

    Since this is a continuous distribution, this is defined to be the limit of the p’s such that the probability of [x,x+h] is p*h.

    INPUT:

    > - x – float

    OUTPUT:

    > - float

    EXAMPLES:

        sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
        sage: P.prob(.5)
        0.21123919605857971
        sage: P.prob(-100)
        0.0
        sage: P.prob(20)
        0.1595769121605731

  `prob_m`(x, m)

    Return the probability of x using just the m-th summand.

    INPUT:

    > - x – float
    > - m – integer

    OUTPUT:

    > - float

    EXAMPLES:

        sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
        sage: P.prob_m(.5, 0)
        2.7608117680508...e-97
        sage: P.prob_m(.5, 1)
        0.21123919605857971
        sage: P.prob_m(.5, 2)
        0.0

  `sample`(n=None)

    Return a single sample from this distribution (by default), or if n>1, return a TimeSeries of samples.

    INPUT:

    > - n – integer or None (default: None)

    OUTPUT:

    > - float if n is None (default); otherwise a TimeSeries

    EXAMPLES:

        sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
        sage: P.sample()
        19.65824361087513
        sage: P.sample(1)
        [-10.4683]
        sage: P.sample(5)
        [-0.1688, -10.3479, 1.6812, 20.1083, -9.9801]
        sage: P.sample(0)
        []
        sage: P.sample(-3)
        Traceback (most recent call last):
        ...
        ValueError: n must be nonnegative

  `unfix`(i=None)

    Set that this GaussianMixtureDistribution (or its ith component) is not fixed when using Baum-Welch to update the corresponding HMM.

    INPUT:

    > - i - None (default) or integer; if given, only fix the i-th component

    EXAMPLES:

        sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
        sage: P.fix(1); P.is_fixed(1)
        True
        sage: P.unfix(1); P.is_fixed(1)
        False
        sage: P.fix(); P.is_fixed()
        True
        sage: P.unfix(); P.is_fixed()
        False

`sage.stats.hmm.distributions.``unpickle_gaussian_mixture_distribution_v1`(c0, c1, param, fixed)

  Used in unpickling GaussianMixtureDistribution’s.

  EXAMPLES:

      sage: P = hmm.GaussianMixtureDistribution([(.2,-10,.5),(.6,1,1),(.2,20,.5)])
      sage: loads(dumps(P)) == P          # indirect doctest
      True

### Navigation

- index
- modules |
- next |
- previous |
- Statistics »