# Multinom

##### The Multinomial Distribution

Generate multinomially distributed random number vectors and compute multinomial probabilities.

- Keywords
- distribution

##### Usage

```
rmultinom(n, size, prob)
dmultinom(x, size = NULL, prob, log = FALSE)
```

##### Arguments

- x
- vector of length $K$ of integers in
`0:size`

. - n
- number of random vectors to draw.
- size
- integer, 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)`

. - prob
- numeric non-negative vector of length $K$, specifying the probability for the $K$ classes; is internally normalized to sum 1. Infinite and missing values are not allowed.
- log
- logical; if TRUE, log probabilities are computed.

##### Details

If `x`

is a $K$-component vector, `dmultinom(x, prob)`

is the probability
$$P(X_1=x_1,\ldots,X_K=x_k) = C \times \prod_{j=1}^K
\pi_j^{x_j}$$
where $C$ is the `Bin(size, prob[j])`

for $j = 1, \ldots, K$.

The `rmultinom()`

algorithm draws binomials $X_j$ from
$Bin(n_j,P_j)$ sequentially, where
$n_1 = N$ (N := `size`

),
$P_1 = \pi_1$ ($\pi$ is `prob`

scaled to sum 1),
and for $j \ge 2$, recursively,
$n_j = N - \sum_{k=1}^{j-1} X_k$
and
$P_j = \pi_j / (1 - \sum_{k=1}^{j-1} \pi_k)$.

##### Value

- For
`rmultinom()`

, an integer $K \times n$ matrix where each column is a random vector generated according to the desired multinomial law, and hence summing to`size`

. Whereas the*transposed*result would seem more natural at first, the returned matrix is more efficient because of columnwise storage.

##### Note

`dmultinom`

is currently *not vectorized* at all and has
no C interface (API); this may be amended in the future.

##### See Also

Distributions for standard distributions, including
`dbinom`

which is a special case conceptually.

##### Examples

`library(stats)`

```
rmultinom(10, size = 12, prob = c(0.1,0.2,0.8))
pr <- c(1,3,6,10) # normalization not necessary for generation
rmultinom(10, 20, prob = pr)
## all possible outcomes of Multinom(N = 3, K = 3)
X <- t(as.matrix(expand.grid(0:3, 0:3))); X <- X[, colSums(X) <= 3]
X <- rbind(X, 3:3 - colSums(X)); dimnames(X) <- list(letters[1:3], NULL)
X
round(apply(X, 2, function(x) dmultinom(x, prob = c(1,2,5))), 3)
```

*Documentation reproduced from package stats, version 3.3, License: Part of R 3.3*