Skip to contents

Fits 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


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_obj

A completed Design object with a count response.

model_formula

Optional formula for covariate adjustment.

model_formula_zero

Formula for the zero-inflation submodel. If NULL (default), it uses the same formula as model_formula.

use_rcpp

Logical. If TRUE (default), use our internal Rcpp implementation. If FALSE, use glmmTMB.

verbose

Whether to print progress messages.

optimization_alg

Optimization algorithm. Default is dispatched via policy.


InferenceCountZeroInflatedNegBin$clone()

The objects of this class are cloneable with this method.

Usage

InferenceCountZeroInflatedNegBin$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

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
# }