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)