
Conditional Logistic IVWC Inference (KK Designs, Binary Response)
Source:R/inference_incidence_KK_cond_logit.R
InferenceIncidKKCondLogitIVWC.RdInverse-variance-weighted combination (IVWC) of two independently fit
conditional-likelihood pieces for KK matched-pair-plus-reservoir binary
designs: matched pairs are analyzed with exact conditional logistic
regression (conditional_logit_fit_matched_pairs(), which
conditions out the pair-specific nuisance intercept and estimates only the
treatment log-odds-ratio \(\beta_T\) from discordant pairs, or the joint
clogit-style likelihood when covariates are present), and reservoir
subjects are analyzed with ordinary logistic regression
(conditional_logit_fit_reservoir()). If \(\hat\beta_m,
\hat\sigma^2_m\) and \(\hat\beta_r, \hat\sigma^2_r\) are the matched-pair
and reservoir estimates and their variances, the combined estimate is the
variance-weighted average
$$\hat\beta_T = w^\star \hat\beta_m + (1-w^\star) \hat\beta_r, \quad
w^\star = \frac{\hat\sigma^2_r}{\hat\sigma^2_r + \hat\sigma^2_m},$$
with combined variance \(\hat\sigma^2_m \hat\sigma^2_r / (\hat\sigma^2_m
+ \hat\sigma^2_r)\). This is the classical fixed-effects inverse-variance
meta-analysis pooling formula (see Cochrane Handbook / DerSimonian-Laird),
applied here to combine the two conditionally-independent likelihood
contributions of a KK design rather than to pool separate studies. When
only one of the two components is estimable the combined estimate falls
back to that component alone. Contrast this with
InferenceIncidKKCondLogitOneLik, which instead fits a single joint
likelihood over both pieces (see that class's documentation) –
likelihood_tier = "partial" here reflects that the matched-pair
piece is a genuine conditional (partial) likelihood, but the two-piece
combination itself is a closed-form Wald/meta-analytic step, not a further
likelihood evaluation.
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.
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.
References
Fleiss, J.L., Levin, B., Paik, M.C. (2003). Statistical Methods for Rates and Proportions, 3rd ed. Wiley. (conditional logistic regression for matched pairs)
See also
InferenceIncidKKCondLogitOneLik
for the one-likelihood alternative combining strategy.
Super class
Inference -> InferenceIncidKKCondLogitIVWC
Methods
+ inherited public methods from Inference
Inference$capabilities()Inference$compute_asymp_confidence_interval()Inference$compute_asymp_two_sided_pval()Inference$compute_estimate()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$initialize()Inference$is_nonestimable()Inference$set_optimization_alg()Inference$set_seed()Inference$supports()
InferenceIncidKKCondLogitIVWC$approximate_randomization_distribution_beta_hat_T()
Usage
InferenceIncidKKCondLogitIVWC$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
rNumber of randomization vectors. Default 501.
deltaThe null difference. Default 0.
transform_responsesType of transformation. Default "none".
show_progressShow progress bar. Default TRUE.
permutationsPre-computed permutations. Default NULL.
debugIf
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. DefaultFALSE.zero_one_logit_clampThe clamping amount for exact 0 and 1 values when logging