zic.reg {bizicount}  R Documentation 
Univariate zeroinflated Poisson and negative binomial regression models
Description
This function from the bizicount
package estimates
univariate zeroinflated 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 postestimation
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 zeroinflated
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
zeroinflation 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 zeroinflated 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 zicregclass
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 zeroinflated 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 zeroinflated 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
– Loglikelihood at convergence 
model
– List containing model matrices ifkeep = TRUE
Author(s)
John Niehaus
References
Lambert, Diane. "Zeroinflated Poisson regression, with an application to defects in manufacturing." Technometrics 34.1 (1992): 114.
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 = "NelderMead",
control = list(reltol = 1e10)
)
# 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 postestimation methods
mod = zic.reg(y ~ x[,1]  z[,1], dist = "n", keep = TRUE)
print(mod)
summary(mod)