
Zero-Inflated Negative Binomial Regression Inference for Count Responses
Source:R/inference_count_zero_inflated.R
InferenceCountZeroInflatedNegBin.RdFits a zero-inflated negative binomial regression for count responses: a
binary excess-zero submodel \(P(\text{structural zero}_i) =
\mathrm{logit}^{-1}(X_i^{h\top} \gamma^h)\) mixed with a (non-truncated)
negative-binomial count submodel \(\log E[Y_i \mid \text{not structural
zero}, w_i, x_i] = \beta_0 + \beta_T w_i + x_i^\top \gamma\),
\(\mathrm{Var}(Y_i \mid \text{not structural zero}) = \mu_i + \mu_i^2 /
\theta\). Unlike a hurdle model, zero counts can arise from either the
structural-zero mechanism or from an ordinary negative-binomial draw of
\(0\). The hurdle and count submodels may use different covariate
formulas (model_formula/model_formula_zero). The reported
treatment effect is the coefficient from the conditional count component,
on the log-rate scale, conditional on the response coming from the
count process, not the excess-zero-inflation mechanism: it is not the
effect on the unconditional mean \(E[Y]\), which also depends on how
treatment shifts the excess-zero probability. A marginal
(unconditional-mean) estimand is not yet implemented for this class (see
marginal_estimand_report.md). likelihood_tier = "full":
Wald, gradient, score, and (bootstrap-calibrated) likelihood-ratio tests
are all available for the count submodel's treatment coefficient (unlike
the Poisson variant, this class's private
get_supported_testing_types_impl() includes "score").
Jackknife inference is not supported: delete-one refits of this
two-part mixture model with a jointly-estimated dispersion parameter are
numerically unstable, so compute_jackknife_estimate() and related
methods report explicit non-estimability rather than attempting
delete-one refits.
References
Lambert, D. (1992). "Zero-Inflated Poisson Regression, with an Application to Defects in Manufacturing." Technometrics, 34(1), 1-14, doi:10.2307/1269547 , for the zero-inflated count-model framework.
See also
InferenceCountNegBin for
the single-part negative binomial model this class's count submodel
generalizes;
InferenceCountZeroInflatedPoisson
for the Poisson (equidispersed) variant.
Super classes
Inference -> InferenceCountZeroAugmentedPoissonAbstract -> InferenceCountZeroInflatedNegBin
Methods
+ inherited public methods from InferenceCountZeroAugmentedPoissonAbstract
InferenceCountZeroAugmentedPoissonAbstract$approximate_bayesian_bootstrap_distribution_beta_hat_T()InferenceCountZeroAugmentedPoissonAbstract$approximate_bootstrap_distribution_beta_hat_T()InferenceCountZeroAugmentedPoissonAbstract$approximate_jackknife_distribution_beta_hat_T()InferenceCountZeroAugmentedPoissonAbstract$approximate_m_out_of_n_bootstrap_distribution_beta_hat_T()InferenceCountZeroAugmentedPoissonAbstract$approximate_rand_bootstrap_distribution_beta_hat_T()InferenceCountZeroAugmentedPoissonAbstract$approximate_randomization_distribution_beta_hat_T()InferenceCountZeroAugmentedPoissonAbstract$approximate_subsampling_distribution_beta_hat_T()InferenceCountZeroAugmentedPoissonAbstract$compute_asymp_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_asymp_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_bayesian_bootstrap_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_bayesian_bootstrap_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_bootstrap_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_bootstrap_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_estimate()InferenceCountZeroAugmentedPoissonAbstract$compute_estimate_with_bootstrap_weights()InferenceCountZeroAugmentedPoissonAbstract$compute_gradient_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_gradient_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_jackknife_bias_estimate()InferenceCountZeroAugmentedPoissonAbstract$compute_jackknife_estimate()InferenceCountZeroAugmentedPoissonAbstract$compute_jackknife_std_error()InferenceCountZeroAugmentedPoissonAbstract$compute_jackknife_wald_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_jackknife_wald_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bartlett_approx_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bartlett_approx_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bartlett_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bartlett_exact_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bartlett_exact_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bartlett_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bootstrap_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_bootstrap_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_lik_ratio_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_m_out_of_n_bootstrap_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_m_out_of_n_bootstrap_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_param_bootstrap_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_param_bootstrap_estimate()InferenceCountZeroAugmentedPoissonAbstract$compute_param_bootstrap_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_rand_bootstrap_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_rand_bootstrap_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_rand_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_rand_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_score_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_score_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_subsampling_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_subsampling_sensitivity()InferenceCountZeroAugmentedPoissonAbstract$compute_subsampling_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$compute_wald_confidence_interval()InferenceCountZeroAugmentedPoissonAbstract$compute_wald_two_sided_pval()InferenceCountZeroAugmentedPoissonAbstract$get_information_preference()InferenceCountZeroAugmentedPoissonAbstract$get_information_source_used()InferenceCountZeroAugmentedPoissonAbstract$get_last_param_bootstrap_diagnostics()InferenceCountZeroAugmentedPoissonAbstract$get_last_param_bootstrap_estimate_diagnostics()InferenceCountZeroAugmentedPoissonAbstract$get_mod()InferenceCountZeroAugmentedPoissonAbstract$get_summary()InferenceCountZeroAugmentedPoissonAbstract$get_supported_bayesian_bootstrap_ci_types()InferenceCountZeroAugmentedPoissonAbstract$get_supported_bayesian_bootstrap_pval_types()InferenceCountZeroAugmentedPoissonAbstract$get_supported_bootstrap_ci_types()InferenceCountZeroAugmentedPoissonAbstract$get_supported_bootstrap_pval_types()InferenceCountZeroAugmentedPoissonAbstract$get_supported_information_preferences()InferenceCountZeroAugmentedPoissonAbstract$get_supported_rand_bootstrap_ci_types()InferenceCountZeroAugmentedPoissonAbstract$get_supported_rand_bootstrap_pval_types()InferenceCountZeroAugmentedPoissonAbstract$get_supported_testing_types()InferenceCountZeroAugmentedPoissonAbstract$get_testing_type()InferenceCountZeroAugmentedPoissonAbstract$select_optimal_b_subsampling()InferenceCountZeroAugmentedPoissonAbstract$select_optimal_m_out_of_n_bootstrap()InferenceCountZeroAugmentedPoissonAbstract$set_custom_randomization_statistic_cpp()InferenceCountZeroAugmentedPoissonAbstract$set_custom_randomization_statistic_function()InferenceCountZeroAugmentedPoissonAbstract$set_information_preference()InferenceCountZeroAugmentedPoissonAbstract$set_testing_type()InferenceCountZeroAugmentedPoissonAbstract$supports_rand_pval_for_incidence()+ inherited public methods from Inference
Inference$capabilities()Inference$compute_exact_confidence_interval()Inference$compute_exact_two_sided_pval_for_treatment_effect()Inference$duplicate()Inference$get_analysis_data()Inference$get_covariates()Inference$get_design_object()Inference$get_model_formula()Inference$get_nonestimable_reason()Inference$get_nonestimable_stage()Inference$get_optimization_alg()Inference$get_response()Inference$get_response_type()Inference$get_treatment()Inference$is_nonestimable()Inference$set_optimization_alg()Inference$set_seed()Inference$supports()
InferenceCountZeroInflatedNegBin$new()
Initialize inference for the zero-inflated negative
binomial model (binary excess-zero submodel mixed with a
negative-binomial count submodel); see
InferenceCountZeroInflatedNegBin
for the model form. Does not fit the model; the fit is deferred to the
first call to compute_estimate() or a method that requires it.
Usage
InferenceCountZeroInflatedNegBin$new(
des_obj,
model_formula = NULL,
model_formula_zero = NULL,
use_rcpp = TRUE,
verbose = FALSE,
optimization_alg = NULL
)Arguments
des_objA completed
Designobject with a count response.model_formulaOptional formula for covariate adjustment.
model_formula_zeroFormula for the zero-inflation submodel. If
NULL(default), it uses the same formula asmodel_formula.use_rcppLogical. If
TRUE(default), use our internal Rcpp implementation. IfFALSE, use glmmTMB.verboseWhether to print progress messages.
optimization_algOptimization algorithm. Default is dispatched via policy.
Examples
# \donttest{
seq_des = DesignSeqOneByOneBernoulli$new(n = 10, response_type = 'count')
for (i in 1:10) {
seq_des$add_one_subject_to_experiment_and_assign(data.frame(x1 = rnorm(1)))
}
seq_des$add_all_subject_responses(rpois(10, 2))
inf = InferenceCountZeroInflatedNegBin$new(seq_des, model_formula = ~ x1)
inf$compute_estimate()
#> [1] 0.3074481
# }