Title
mm_rbinomial() -- Generate binomial distributed random numbers
------------------------------------------------------------------------------- Note: An official rbinomial() function was introduced in Stata 10.1 (see help [M-5] runiform()). Official rbinomial() is much faster than mm_rbinomial(). -------------------------------------------------------------------------------
Syntax
real matrix mm_rbinomial(n, p)
real matrix mm_cebinomial(n, k, p)
where
n: real matrix n k: real matrix k p: real matrix p
Description
mm_rbinomial() returns a random draw from the binomial distribution where n is the number of trials and p is the success probability.
When n and p are not scalar, mm_rbinomial() returns element-by-element results. n and p are required to be r-conformable (see help [M-6] glossary).
If you are serious about generating random numbers, you should first set the random number seed; see help generate or help for [M-5] uniform().
mm_cebinomial() returns the expected value of a binomial distributed random variable conditional on the variable being equal to k or larger. That is, mm_cebinomial() returns
E(X|X>=k)
where
X ~ B(n, p)
and n is the number of trials and p is the success probability.
When n, k, and p are not scalar, mm_cebinomial() returns element-by-element results. n, k, and p are required to be r-conformable (see help [M-6] glossary).
Remarks
mm_rbinomial(): If n<50 or p>.03, the random numbers are generated using the rejection technique. If n>=50 and p>=.03, the geometric distribution technique is applied (see Evans et al. 2000).
mm_cebinomial(): The expectation of X ~ B(n, p) conditional on X>=k may be written as
E(X|X>=k) = k + [ P(X>=k+1) + ... + P(X=n) ] / P(X>=k)
where P(X>=k) is the probability of k or more successes, which is computed as Binomial(n, k, p) (see [M-5] normal()).
Conformability
Both functions require arguments be r-conformable (see help [M-6] glossary). Returned is a matrix of max(argument rows) rows and max(argument columns) columns containing element-by-element calculated results.
Diagnostics
Missing value is returned if arguments are out of range (p>1, p<0, n<=0, k<0, or k>n) or contain missing value or if n and k are non-integer.
Source code
mm_rbinomial.mata, mm_cebinomial.mata
References
Evans, M., N. Hastings, B. Peacock (2000): Statistical Distributions. Third Edition. New York: Wiley.
Author
Ben Jann, ETH Zurich, jann@soz.gess.ethz.ch
Also see
Online: help for [M-5] normal(), moremata