zic.reg {bizicount} | R Documentation |
Univariate zero-inflated Poisson and negative binomial regression models
Description
This function from the bizicount
package estimates
univariate zero-inflated Poisson and negative binomial regression models
via maximum likelihood using either the nlm
or
optim
optimization functions. It's class has
associated simulate
methods for post-estimation
diagnostics using the DHARMa
package, as well as an
extract
method for printing professional tables using
texreg
. Visit the 'See Also' section for links to these
methods for zicreg
objects.
Usage
zic.reg(
fmla = NULL,
data,
dist = "pois",
link.ct = "log",
link.zi = "logit",
optimizer = "nlm",
starts = NULL,
subset,
na.action,
weights = rep(1, length(y)),
X = NULL,
z = NULL,
y = NULL,
offset.ct = NULL,
offset.zi = NULL,
warn.parent = T,
keep = F,
...
)
Arguments
fmla |
A |
data |
A |
dist |
The distribution used for the count portion of the zero-inflated
mixture. One of |
link.ct |
String specifying the link function used for the count portion
of the mixture distribution. One of |
link.zi |
Character string specifying the link function used for the
zero-inflation portion of the mixture distribution. One of |
optimizer |
String specifying the optimizer to be used for fitting, one
of |
starts |
Optional vector of starting values used for the numerical optimization procedure. Should have count parameters first (with intercept first, if applicable), followed by zero-inflated parameters (with intercept first, if applicable), and the inverse dispersion parameter last (if applicable). |
subset |
Vector indicating the subset of observations on which to estimate the model |
na.action |
A function which indicates what should happen when the data
contain NAs. Default is |
weights |
An optional numeric vector of weights for each observation. |
X , z |
If |
y |
If |
offset.ct , offset.zi |
If |
warn.parent |
Logical indicating whether to warn about |
keep |
Logical indicating whether to keep the model matrices in the
returned model object. Must be |
... |
Additional arguments to pass on to the chosen optimizer, either
|
Value
An S3 zicreg-class
object, which is a list containing:
-
call
– The original function call -
obj
– The class of the object -
coef
– Vector of coefficients, with count, then zi, then dispersion. -
se
– Vector of asymptotic standard errors -
grad
– Gradient vector at convergence -
link.ct
– Name of link used for count portion -
link.zi
– Name of link used for zero-inflated portion -
dist
– Name of distribution used for count portion -
optimizer
– Name of optimization package used in fitting -
coefmat.ct
– Coefficient matrix for count portion -
coefmat.zi
– Coefficient matrix for zero-inflated portion -
convergence
– Convergence code from optimization routine. -
coefmat.all
– Coefficient matrix for both parts of the model -
theta
– Coefficient matrix for dispersion, if applicable. -
covmat
– Asymptotic covariance matrix -
nobs
– Number of observations -
aic
– Akaike information -
bic
– Bayes information -
loglik
– Log-likelihood at convergence -
model
– List containing model matrices ifkeep = TRUE
Author(s)
John Niehaus
References
Lambert, Diane. "Zero-inflated Poisson regression, with an application to defects in manufacturing." Technometrics 34.1 (1992): 1-14.
See Also
simulate.zicreg
, extract.zicreg
Examples
## ZIP example
# Simulate some zip data
n=1000
x = cbind(1, rnorm(n))
z = cbind(1, rbeta(n, 4, 8))
b = c(1, 2.2)
g = c(-1, 1.7)
lam = exp(x %*% b)
psi = plogis(z %*% g)
y = bizicount::rzip(n, lambda = lam, psi=psi)
dat = cbind.data.frame(x = x[,-1], z = z[,-1], y = y)
# estimate zip model using NLM, no data.frame
mod = zic.reg(y ~ x[,-1] | z[,-1])
# same model, with dataframe
mod = zic.reg(y ~ x | z, data = dat)
# estimate zip using NLM, adjust stepmax via ... param
mod = zic.reg(y ~ x[,-1] | z[,-1], stepmax = .5)
# estimate zip using optim
mod = zic.reg(y ~ x[,-1] | z[,-1], optimizer = "optim")
# pass different method, reltol to optim using ... param
mod = zic.reg(y ~ x[,-1] | z[,-1],
optimizer = "optim",
method = "Nelder-Mead",
control = list(reltol = 1e-10)
)
# No formula, specify design matrices and offsets.
zic.reg(y=y, X=x, z=z)
## ZINB example
# simulate zinb data
disp = .5
y = bizicount::rzinb(n, psi = psi, size = disp, mu=lam)
# zinb model, use keep = TRUE for post-estimation methods
mod = zic.reg(y ~ x[,-1] | z[,-1], dist = "n", keep = TRUE)
print(mod)
summary(mod)