Abstract class for randomization-based inference.
Super class
Inference -> InferenceRand
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()
InferenceRand$set_custom_randomization_statistic_function()
Set a custom R randomization statistic.
Replaces the default treatment-effect estimate used in
approximate_randomization_distribution_beta_hat_T() and
compute_randomization_two_sided_pval() with a user-supplied R
function. The function must return one scalar statistic for the current
randomized outcome/assignment state. Pass NULL to clear the custom
statistic. This cannot be used at the same time as
set_custom_randomization_statistic_cpp().
InferenceRand$set_custom_randomization_statistic_cpp()
Set a custom compiled C++ randomization statistic.
Replaces the default treatment-effect estimate used in
approximate_randomization_distribution_beta_hat_T() and
compute_randomization_two_sided_pval() with a scalar C++ statistic.
A source string is recommended because each parallel worker can compile
its own copy safely. A pre-compiled Rcpp function can be used in the main
process, but external pointers may not survive serialization to workers.
Pass NULL to clear the custom statistic. This cannot be used at
the same time as set_custom_randomization_statistic_function().
Arguments
fnEither a C++ source code string, a pre-compiled Rcpp function, an
RcppXPtrUtils::cppXPtr()external pointer, orNULL. A source string or Rcpp function must return a scalardoubleand accept either(NumericVector y, IntegerVector w)or(NumericVector y, IntegerVector w, IntegerVector dead). An external pointer follows the package-wideuser_compiled_fns.hcalling convention shared withDesignFixedOptimal'scustom_objective– Eigen types:double f(const Eigen::VectorXd& y, const Eigen::VectorXd& w), or the 3-argument form appendingconst Eigen::VectorXd& dead– and, like a pre-compiled Rcpp function, is valid in the main process only (external pointers do not survive serialization to parallel workers; use a source string for parallel paths).
InferenceRand$approximate_randomization_distribution_beta_hat_T()
Computes the randomization distribution of the treatment effect estimate under the sharp null.
Usage
InferenceRand$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
Returns
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.
InferenceRand$supports_rand_pval_for_incidence()
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 (fix_inference_hierarchy.md's
method-level-`stop()` TODO, 2026-08-21).
InferenceRand$compute_rand_two_sided_pval()
Computes a randomization-based p-value.
Usage
InferenceRand$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
)