| rnegmn {MGLM} | 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 |
the over dispersion parameter of the negative multinomial distribution. |
prob |
the probability parameter of the negative multinomial distribution. Should be a numerical non-negative vector or matrix. For For |
Y |
the multivariate response matrix of dimension |
alpha |
an alternative way to specify the probability. Default value is |
Details
y=(y_1, \ldots, y_d) is a d category vector. Given the parameter vector p= (p_1, \ldots, p_d),
p_{d+1} = 1/(1 + \sum_{j'=1}^d p_{j'}),
and \beta, \beta>0, the negative multinomial probability mass function is
P(y|p,\beta) = C_{m}^{\beta+m-1} C_{y_1, \ldots, y_d}^{m}
\prod_{j=1}^d p_j^{y_j} p_{d+1}^\beta = \frac{\beta_m}{m!} {m \choose y_1, \ldots, y_d} \prod_{j=1}^d p_j^{y_j} p_{d+1}^\beta,
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 = \frac{\alpha_j}{(1+\sum_{k=1}^{d} \alpha_k)}
for j=1,\ldots,d and
p_{d+1} = \frac{1}{(1+\sum_{k=1}^{d} \alpha_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
\log(P(y|p, \beta) ). When Y is a matrix of n rows, the function
returns a vector of length n.
rnegmn returns a n\times d 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)