R: The Vectorized Multinomial Distribution

dmultinomial {mc2d} | R Documentation

## The Vectorized Multinomial Distribution

### Description

Generate multinomially distributed random number vectors and compute multinomial probabilities.

### Usage

    dmultinomial(x, size=NULL, prob, log=FALSE)
    rmultinomial(n, size, prob)

### Arguments

`x` | vector or matrix of length (or ncol) K of integers in 0:size.
`n` | number of random vectors to draw.
`size` | a vector of integers, say N, specifying the total number of objects that are put into K boxes in the typical multinomial experiment. For dmultinom, it defaults to sum(x). The first element correspond to the vector prob or the first row of prob, ...
`prob` | Numeric non-negative vector of length K, or matrix of size (x x K) specifying the probability for the K classes; is internally normalized to sum 1.
`log` | Logical; if TRUE, log probabilities are computed.

### Details

These functions are the vectorized versions of `rmultinom` and `dmultinom`. Recycling is permitted.

### Examples

    x <- c(100, 200, 700)
    x1 <- matrix(c(100, 200, 700, 200, 100, 700, 700, 200, 100), byrow=TRUE, ncol=3)
    p <- c(1, 2, 7)
    p1 <- matrix(c(1, 2, 7, 2, 1, 7, 7, 2, 1), byrow=TRUE, ncol=3)
    dmultinomial(x1, prob=p)
    ## is equivalent to
    c(	dmultinom(x1[1, ], prob=p),
    	dmultinom(x1[2, ], prob=p),
    	dmultinom(x1[3, ], prob=p))

    dmultinomial(x1, prob=p1, log=TRUE)
    ## is equivalent to
    c(	dmultinom(x1[1, ], prob=p1[1, ], log=TRUE),
    	dmultinom(x1[2, ], prob=p1[2, ], log=TRUE),
    	dmultinom(x1[3, ], prob=p1[3, ], log=TRUE))

    dmultinomial(x, prob=p1, log=TRUE)
    ## is equivalent to
    c(	dmultinom(x, prob=p1[1, ], log=TRUE),
    	dmultinom(x, prob=p1[2, ], log=TRUE),
    	dmultinom(x, prob=p1[3, ], log=TRUE))

    prob <- c(1, 2, 7)
    rmultinomial(4, 1000, prob)
    rmultinomial(4, c(10, 100, 1000, 10000), prob)

    ## rmultinomial used with mcstoc
    ## (uncertain size and prob)
    s <- mcstoc(rpois, "U", lambda=50)
    p <- mcstoc(rdirichlet, "U", nvariates=3, alpha=c(4, 10, 20))
    mcstoc(rmultinomial, "VU", nvariates=3, size=s, prob=p)

[Package mc2d version 0.1-18 Index]