Skip to contents

Fits a two-part hurdle-Poisson model to a KK matching-on-the-fly count design by maximizing a single combined likelihood over the matched pairs and reservoir subjects jointly, rather than fitting matched and reservoir submodels separately and combining them afterward (contrast with the inverse-variance-weighted-combination sibling, InferenceCountKKHurdlePoissonIVWC).

Computes the randomization distribution of the treatment effect estimate under the sharp null.

Whether compute_rand_two_sided_pval() is actually usable on this instance right now – FALSE exactly when it would stop(): an incidence-response instance with no custom randomization statistic and a design not eligible for design-randomization-based incidence inference (see private$should_use_design_randomization_for_incidence()). TRUE for every other case, including every non-incidence response type. Public, self-contained (only reads already-set instance state, no side effects), so InferenceSuite can check this before attempting the sentinel instead of relying on the stop() being silently swallowed into a pval = NA "ok" row – the single source of truth for both this check and compute_rand_two_sided_pval()'s own guard, so the two can never drift apart.

Computes a randomization-based p-value.

Value

When debug = FALSE (default), a numeric vector of length r. When debug = TRUE, a list with: values, errors (list of character vectors, one per iteration), warnings (list of character vectors, one per iteration), num_errors, num_warnings, prop_iterations_with_errors, prop_iterations_with_warnings, and prop_illegal_values.

A single logical.

Randomization p-value.

Details

Model. For subject \(i\) with count response \(Y_i \ge 0\), a hurdle model factors the likelihood into (1) a binary zero-vs-positive part \(P(Y_i = 0) = 1 - \pi_i\), \(\mathrm{logit}(\pi_i) = X_i'\gamma\), and (2) a zero-truncated Poisson part for the positive counts, \(Y_i \mid Y_i > 0 \sim \text{Poisson}_{+}(\lambda_i)\), \(\log \lambda_i = X_i'\beta + \beta_T W_i\), where \(W_i\) is the treatment indicator and \(\beta_T\) is the treatment log-rate coefficient for the positive-count submodel (the estimand returned by compute_estimate()). Unlike a standard hurdle model fit by maximum likelihood on i.i.d. rows, this class's negative log-likelihood combines the matched-pair rows and reservoir rows of a KK design into one objective (see private$fit_combined_hurdle()), so the fitted \(\beta_T\) and its curvature already reflect the design's matched/reservoir structure rather than treating all subjects as exchangeable.

Likelihood tier. likelihood_tier = "full": Wald, score, likelihood-ratio, and gradient testing types are all available (see get_testing_type()). Because a hurdle-Poisson combined likelihood does not by itself encode the KK design's finite-sample matched-pair randomization distribution, the score/likelihood-ratio/gradient confidence intervals and p-values are computed twice — once from this class's design-aware asymptotic variance (the same Wald-type calculation used by compute_wald_confidence_interval()) and once from the generic likelihood-based calculation inherited from InferenceAsympLik — and the wider interval / larger p-value of the two is returned (see .conservative_kk_onelik_ci()/.conservative_kk_onelik_pval()), so the model-based test is never anti-conservative relative to the design. The Wald confidence interval and p-value fall back to the BayesianBootstrap component's bootstrap distribution when the model-based standard error is unavailable or non-finite (e.g. a boundary/separation fit).

Assumptions. Independence across matched pairs and reservoir subjects conditional on covariates; correct specification of the logistic hurdle and log-linear positive-count submodels; a KK matching-on-the-fly design (DesignSeqOneByOneKK14 or subclass) supplying the matched/reservoir partition. No response censoring is supported (checked at construction via assertNoCensoring()).

References

Mullahy, J. (1986). "Specification and Testing of Some Modified Count Data Models." Journal of Econometrics, 33(3), 341-365. doi:10.1016/0304-4076(86)90002-3 . (Mullahy1986 in REFERENCES.md.)

See also

Analogous Python API for hurdle/zero-truncated count models: statsmodels discrete models (HurdleCountModel). Poisson regression (orientation).

Super class

Inference -> InferenceCountKKHurdlePoissonOneLik

Methods

+ inherited public methods from Inference


InferenceCountKKHurdlePoissonOneLik$approximate_randomization_distribution_beta_hat_T()

Usage

InferenceCountKKHurdlePoissonOneLik$approximate_randomization_distribution_beta_hat_T(
  r = 501,
  delta = 0,
  transform_responses = "none",
  show_progress = TRUE,
  permutations = NULL,
  debug = FALSE,
  zero_one_logit_clamp = .Machine$double.eps
)

Arguments

r

Number of randomization vectors. Default 501.

r

Number of randomization vectors.

delta

The null difference. Default 0.

delta

Null difference.

transform_responses

Type of transformation. Default "none".

transform_responses

Transformation.

show_progress

Show progress bar. Default TRUE.

show_progress

Show progress.

permutations

Pre-computed permutations. Default NULL.

permutations

Pre-computed permutations.

debug

If TRUE, return a list with the distribution values and per-iteration diagnostics including error messages, warning messages, counts of each, and summary proportions for iterations with errors, warnings, and illegal (non-finite) values. Runs serially. Default FALSE.

zero_one_logit_clamp

The clamping amount for exact 0 and 1 values when logging

zero_one_logit_clamp

The clamping amount for exact 0 and 1 values when logging


InferenceCountKKHurdlePoissonOneLik$supports_rand_pval_for_incidence()

Usage

InferenceCountKKHurdlePoissonOneLik$supports_rand_pval_for_incidence()


InferenceCountKKHurdlePoissonOneLik$compute_rand_two_sided_pval()

Usage

InferenceCountKKHurdlePoissonOneLik$compute_rand_two_sided_pval(
  r = 501,
  delta = 0,
  transform_responses = "none",
  na.rm = TRUE,
  show_progress = TRUE,
  permutations = NULL,
  zero_one_logit_clamp = .Machine$double.eps
)

Arguments

r

Number of randomization vectors. Default 501.

r

Number of randomization vectors.

delta

The null difference. Default 0.

delta

Null difference.

transform_responses

Type of transformation. Default "none".

transform_responses

Transformation.

na.rm

Remove NAs.

show_progress

Show progress bar. Default TRUE.

show_progress

Show progress.

permutations

Pre-computed permutations. Default NULL.

permutations

Pre-computed permutations.

zero_one_logit_clamp

The clamping amount for exact 0 and 1 values when logging

zero_one_logit_clamp

The clamping amount for exact 0 and 1 values when logging


InferenceCountKKHurdlePoissonOneLik$clone()

The objects of this class are cloneable with this method.

Usage

InferenceCountKKHurdlePoissonOneLik$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.