distributions {pomp} | R Documentation

## Probability distributions

### Description

pomp provides a number of probability distributions that have proved useful in modeling partially observed Markov processes. These include the Euler-multinomial family of distributions and the the Gamma white-noise processes.

### Usage

    reulermultinom(n = 1, size, rate, dt)

    deulermultinom(x, size, rate, dt, log = FALSE)

    rgammawn(n = 1, sigma, dt)

### Arguments

`n` | integer; number of random variates to generate.
`size` | scalar integer; number of individuals at risk.
`rate` | numeric vector of hazard rates.
`dt` | numeric scalar; duration of Euler step.
`x` | matrix or vector containing number of individuals that have succumbed to each death process.
`log` | logical; if TRUE, return logarithm(s) of probabilities.
`sigma` | numeric scalar; intensity of the Gamma white noise process.

### Details

If N individuals face constant hazards of death in k ways at rates r1,r2,…,rk, then in an interval of duration dt, the number of individuals remaining alive and dying in each way is multinomially distributed:

(N-∑(dni), dn1, …, dnk) ~ multinomial(N;p0,p1,…,pk),

where dni is the number of individuals dying in way i over the interval, the probability of remaining alive is p0=exp(-∑(ri dt)), and the probability of dying in way j is

pj=(1-exp(-sum(ri dt))) rj/(∑(ri)).

In this case, we say that

(dn1,…,dnk)~eulermultinom(N,r,dt),

where r=(r1,…,rk). Draw m random samples from this distribution by doing

        dn <- reulermultinom(n=m,size=N,rate=r,dt=dt),

where `r` is the vector of rates. Evaluate the probability that x=(x1,…,xk) are the numbers of individuals who have died in each of the k ways over the interval `dt`, by doing

        deulermultinom(x=x,size=N,rate=r,dt=dt).

Breto & Ionides (2011) discuss how an infinitesimally overdispersed death process can be constructed by compounding a multinomial process with a Gamma white noise process. The Euler approximation of the resulting process can be obtained as follows. Let the increments of the equidispersed process be given by

        reulermultinom(size=N,rate=r,dt=dt).

In this expression, replace the rate r with r {Δ W}/{Δ t}, where Δ W \sim \mathrm{Gamma}(Δ t/σ^2,σ^2) is the increment of an integrated Gamma white noise process with intensity σ. That is, Δ W has mean Δ t and variance σ^2 Δ t. The resulting process is overdispersed and converges (as Δ t goes to zero) to a well-defined process. The following lines of code accomplish this:

        dW <- rgammawn(sigma=sigma,dt=dt)

        dn <- reulermultinom(size=N,rate=r,dt=dW)

or

        dn <- reulermultinom(size=N,rate=r*dW/dt,dt=dt).

He et al. (2010) use such overdispersed death processes in modeling measles.

For all of the functions described here, access to the underlying C routines is available: see below.

### Value

`reulermultinom` | Returns a `length(rate)` by `n` matrix. Each column is a different random draw. Each row contains the numbers of individuals that have succumbed to the corresponding process.
`deulermultinom` | Returns a vector (of length equal to the number of columns of `x`) containing the probabilities of observing each column of `x` given the specified parameters (`size`, `rate`, `dt`).
`rgammawn` | Returns a vector of length `n` containing random increments of the integrated Gamma white noise process with intensity `sigma`.

### C API

An interface for C codes using these functions is provided by the package. Visit the package homepage to view the pomp C API document.

### Author(s)

Aaron A. King

### References

C. Breto & E. L. Ionides, Compound Markov counting processes and their applications to modeling infinitesimally over-dispersed systems. Stoch. Proc. Appl., 121:2571–2591, 2011.

D. He, E. L. Ionides, & A. A. King, Plug-and-play inference for disease dynamics: measles in large and small populations as a case study. J. R. Soc. Interface, 7:271–283, 2010.

### See Also

Other information on model implementation: `Csnippet`, `accumulators`, `covariate_table`, `dmeasure_spec`, `dprocess_spec`, `parameter_trans`, `pomp-package`, `prior_spec`, `rinit_spec`, `rmeasure_spec`, `rprocess_spec`, `skeleton_spec`, `transformations`, `userdata`

### Examples

    print(dn <- reulermultinom(5,size=100,rate=c(a=1,b=2,c=3),dt=0.1))
    deulermultinom(x=dn,size=100,rate=c(1,2,3),dt=0.1)
    ## an Euler-multinomial with overdispersed transitions:
    dt <- 0.1
    dW <- rgammawn(sigma=0.1,dt=dt)
    print(dn <- reulermultinom(5,size=100,rate=c(a=1,b=2,c=3),dt=dW))

[Package pomp version 2.3 Index]