| rcounts {corcounts} | R Documentation |
'rcounts' is used to generate high-dimensional correlated count random variables with a prespecified Pearson correlation.
rcounts(N, margins, mu, phi, omega, psi, corstr, corpar, conv = 0.01)
N |
number of observations to be generated per margin (should be at least 500). |
margins |
Vector of margin tokens. Its length T is the dimension. See details. |
mu |
Vector of length T of means for the Poisson, GP, ZIP, ZIGP and NB margins. |
phi |
Vector of length T of dispersion parameters for the GP, and ZIGP margins. For Poisson, ZIP and NB margins, an 'NA' can be provided. |
omega |
Vector of length T of zero-inflation parameters for the ZIP and ZIGP margins. For Poisson, GP and NB margins, an 'NA' can be provided. |
psi |
Vector of length T of size parameters for the NB margins. For Poisson, GP, ZIP and ZIGP margins, an 'NA' can be provided. |
corstr |
Correlation structure. Can be 'ex' for exchangeable, 'AR1' for AR(1) and 'unstr' for unstructured. |
corpar |
Correlation parameter. Scalar correlation for 'ex' and 'AR1' and matrix of dimension TxT for 'unstr'. |
conv |
Convergence criterion |
The entries in 'margins' can be specified as 'Poi' for Poisson, 'GP' for generalized Poisson, 'ZIP' for zero-inflated Poisson, 'ZIGP' for zero-inflated generalized Poisson and 'NB' for negative-binomial.
The function will return a matrix of counts of dimension N x T.
Vinzenz Erhardt
N <- 5000
# high precision in dimension 2
margins <- c("ZIGP","GP")
mu <- c(10, 15)
phi <- c(1.5, 3.5)
omega <- c(.25, NA)
psi <- c(NA, NA)
corstr <- "ex"
corpar <- .5
Y <- rcounts(N=N, margins=margins, mu=mu, phi=phi, omega=omega, psi=psi, corstr=corstr, corpar=corpar, conv=0.0001)
cor(Y)
# five-dimensional examples
margins <- c("ZIGP","GP","Poi","NB","ZIP")
mu <- c(10, 25, 12, 20, 28)
phi <- c(1.5, 2, NA, NA, NA)
omega <- c(.25, NA, NA, NA, .2)
psi <- c(NA, NA, NA, 7, NA)
# Exchangeable structure with correlation of 0.5
corstr <- "ex"
corpar <- .5
Y <- rcounts(N=N, margins=margins, mu=mu, phi=phi, omega=omega, psi=psi, corstr=corstr, corpar=corpar)
cor(Y)
# AR(1) structure with correlation of corr(Y(t1), Y(t2)) = .8 ^ |t1-t2|
corstr <- "AR1"
corpar <- .8
Y <- rcounts(N=N, margins=margins, mu=mu, phi=phi, omega=omega, psi=psi, corstr=corstr, corpar=corpar)
cor(Y)
# Unstructured correlation. Create random symmetric positive definite matrix using function 'unstructured'
corstr <- "unstr"
corpar <- unstructured(5)
corpar
Y <- rcounts(N=N, margins=margins, mu=mu, phi=phi, omega=omega, psi=psi, corstr=corstr, corpar=corpar)
cor(Y)