# negmn: The Negative Multinomial Distribution In MGLM: Multivariate Response Generalized Linear Models

 rnegmn R Documentation

## The Negative Multinomial Distribution

### Description

`dnegmn` calculates the log of the negative multinomial probability mass function. `rnegmn` generates random observations from the negative multinomial distribution.

### Usage

```rnegmn(n, beta, prob)

dnegmn(Y, beta, prob = alpha/(rowSums(alpha) + 1), alpha = NULL)
```

### Arguments

 `n` number of random vectors to generate. When `beta` is a scalar and `prob` is a vector, must specify `n`. When `beta` is a vector and `prob` is a matrix, `n` is optional. The default value of `n` is the length of `beta`. If given, `n` should be equal to the length of `beta`. `beta` the over dispersion parameter of the negative multinomial distribution. `beta` can be either a scalar or a vector of length n. `prob` the probability parameter of the negative multinomial distribution. Should be a numerical non-negative vector or matrix. For `dnegmn`, `prob` can be either a vector of length d (d ≥ 2) or a matrix with matching size of `Y`. If `prob` is a vector, it will be replicated n times to match the dimension of `Y`. The sum of each row of `prob` should be smaller than 1. For `rnegmn`, If `prob` is a vector, `beta` must be a scalar. All the `n` random vectors will be drawn from the same `prob` and `beta`. If `prob` is a matrix, the number of rows should match the length of `beta`. Each random vector will be drawn from the corresponding row of `prob` and the corresponding element of `beta`. Each row of `prob` should have sum less than 1. `Y` the multivariate response matrix of dimension nxd, where n = 1, 2, … is number of observations and d=2,3,… is number of categories. `alpha` an alternative way to specify the probability. Default value is `NULL`. See details.

### Details

y=(y_1, …, y_d) is a d category vector. Given the parameter vector p= (p_1, …, p_d), p_{d+1} = 1/(1 + sum_{j'=1}^d p_{j'}), and β, β>0, the negative multinomial probability mass function is

P(y|p,β) = C_{m}^{β+m-1} C_{y_1, …, y_d}^{m} prod_{j=1}^d p_j^{y_j} p_{d+1}^β = (β_m)/(m!) C_{y_1, …, y_d}^{m} prod_{j=1}^d p_j^{y_j} p_{d+1}^β,

where m = sum_{j=1}^d y_j. Here, C_k^n, often read as "n choose k", refers the number of k combinations from a set of n elements.

`alpha` is an alternative way to specify the probability:

p_j = α_j / (1+sum_{k=1}^{d} α_k)

for j=1,…,d and p_{d+1} = 1 / (1+sum_{k=1}^{d} α_k).

The parameter `prob` can be a vector and `beta` is a scalar; `prob` can also be a matrix with n rows, and `beta` is a vector of length n like the estimate from the regression function multiplied by the covariate matrix.

### Value

`dnegmn` returns the value of logP(y|p, β). When `Y` is a matrix of n rows, the function returns a vector of length n.

`rnegmn` returns a nxd matrix of the generated random observations.

### Author(s)

Yiwen Zhang and Hua Zhou

### Examples

```###-----------------------###
set.seed(128)
n <- 100
d <- 4
p <- 5
a <- -matrix(1,p,d)
X <- matrix(runif(n*p), n, p )
alpha <- exp(X%*%a)
prob <- alpha/(rowSums(alpha)+1)
beta <- exp(X%*%matrix(1,p))
Y <- rnegmn(n, beta, prob)

###-----------------------###
m <- 20
n <- 10
p <- 5
d <- 6
a <- -matrix(1,p,d)
X <- matrix(runif(n*p), n, p )
alpha <- exp(X%*%a)
prob <- alpha/(rowSums(alpha)+1)
b <- exp(X%*%rep(0.3,p))
Y <- rnegmn(prob=prob, beta=rep(10, n))
dnegmn(Y, b, prob)

```

MGLM documentation built on April 14, 2022, 1:07 a.m.