This page answers, for each important model family, “how do I know
this implementation actually computes what its documentation claims?” It
is an index into the test suite (R/EDI/tests/testthat/),
not a restatement of it — every row below names the specific test
file(s) that check the corresponding
fast_*/Inference* implementation against
independent evidence, so a reader auditing correctness (or a maintainer
touching a kernel) knows exactly which test to run or extend. All file
paths are relative to R/EDI/tests/testthat/.
Four kinds of evidence appear throughout the suite, matching
fix_documentation.md’s validation-evidence categories:
-
Package-to-package comparisons — the
coefficient/variance estimate from EDI’s own C++ kernel is checked
against an independent R package’s implementation of the same model
(
stats::glm, survival::coxph,
MASS::glm.nb, betareg::betareg,
VGAM::vglm, ordinal::clm,
lme4::glmer, glmmTMB,
pscl::hurdle, geepack/multgee,
copula, gamlss.dist) on the same simulated or
real data, usually to a tight numerical tolerance.
-
Closed-form/limiting-case reductions — a general
kernel is checked against a simpler model it must mathematically reduce
to in a special case (e.g. a frailty variance of zero, a single mixture
component, an uncensored subset).
-
Numerical-derivative checks — an analytic
score/gradient/Hessian is checked against a finite-difference
(
numDeriv) approximation at the same parameter vector,
independent of any reference package.
-
Simulation/calibration checks — Monte Carlo
simulation confirming an inference procedure’s operating characteristics
(type-I error, coverage) are near their nominal targets, using
SimulationFramework’s own built-in exact-binomial
calibration test (see below), not just a single point comparison.
Continuous
fast_ols_with_var_cpp |
stats::lm |
test-rcpp-fitting-equivalence.R |
fast_ols_with_var_cpp (real data) |
stats::lm on MASS::Boston
|
test-rcpp-fitting-real-data.R |
fast_robust_regression_cpp (M/MM) |
MASS::rlm |
test-rcpp-fitting-equivalence.R,
test-rcpp-fitting-real-data.R (mtcars) |
InferenceContinKKRobustRegrOneLik/IVWC
(use_rcpp path) |
MASS::rlm fallback, and Rcpp-vs.-fallback
bootstrap-weighted-estimate agreement |
test-kk-robust-regr-use-rcpp.R |
Incidence / binary
fast_logistic_regression_with_var_cpp |
stats::glm(family=binomial) |
test-rcpp-fitting-equivalence.R,
test-fast_glm_outputs.R
|
fast_probit_regression_with_var_cpp |
stats::glm(family=binomial(link="probit")) |
test-rcpp-fitting-equivalence.R;
InferenceIncidProbitRegr vs. stats::glm in
test-incidence-probit.R
|
fast_log_binomial_regression_with_var_cpp |
stats::glm(family=binomial(link="log")) |
test-rcpp-fitting-equivalence.R |
fast_identity_binomial_regression_with_var_cpp |
stats::glm(family=binomial(link="identity")) |
test-rcpp-fitting-equivalence.R |
| Real-data check |
stats::glm on MASS::birthwt
|
test-rcpp-fitting-real-data.R |
Count
fast_poisson_regression_with_var_cpp |
stats::glm(family=poisson) |
test-rcpp-fitting-equivalence.R,
test-poisson-delta-eta-step-halving.R (IRLS internals
incl. step-halving) |
fast_quasipoisson_regression_with_var_cpp |
stats::glm(family=quasipoisson) |
test-rcpp-fitting-equivalence.R |
fast_neg_bin_with_var_cpp |
MASS::glm.nb |
test-rcpp-fitting-equivalence.R,
test-negbin-gemv-gradient.R (fit + analytic-vs.-numerical
gradient), test-negbin-weighted.R
|
fast_neg_bin_weighted_cpp |
MASS::glm.nb with case weights |
test-negbin-weighted.R |
fast_truncated_negbin_count_cpp |
glmmTMB’s truncated_nbinom2
|
test-custom-implementation-canonical-reductions.R |
fast_zinb_cpp |
glmmTMB zero-inflated NB |
test-rcpp-fitting-equivalence.R, real-data check on
glmmTMB::Salamanders in
test-rcpp-fitting-real-data.R
|
fast_zero_augmented_poisson_cpp (hurdle/ZIP) |
glmmTMB |
test-rcpp-fitting-equivalence.R, real-data check on
glmmTMB::Salamanders
|
fast_hurdle_negbin_with_var_cpp |
pscl::hurdle(dist="negbin") |
test-rcpp-fitting-equivalence.R |
| Real-data check |
stats::glm(family=poisson)/MASS::glm.nb on
MASS::quine
|
test-rcpp-fitting-real-data.R |
fast_cpoisson_combined_with_var_cpp (matched-pair +
reservoir) |
reduces to canonical GLM fits in single-component cases |
test-custom-implementation-canonical-reductions.R |
Ordinal
fast_ordinal_regression_with_var_cpp (proportional
odds) |
ordinal::clm |
test-rcpp-fitting-equivalence.R; real-data check on
ordinal::wine in
test-rcpp-fitting-real-data.R
|
fast_ordinal_probit_regression_with_var_cpp |
ordinal::clm(link="probit") |
test-rcpp-fitting-equivalence.R |
fast_ordinal_cloglog_regression_with_var_cpp |
ordinal::clm(link="cloglog") |
test-rcpp-fitting-equivalence.R |
fast_ordinal_cauchit_regression_with_var_cpp |
ordinal::clm(link="cauchit") |
test-rcpp-fitting-equivalence.R |
fast_adjacent_category_logit_with_var_cpp |
VGAM::vglm(family=acat) |
test-rcpp-fitting-equivalence.R |
fast_continuation_ratio_regression_with_var_cpp |
VGAM::vglm(family=cratio) |
test-rcpp-fitting-equivalence.R |
fast_stereotype_logit_with_var_cpp |
K=2 reduces to stats::glm(binomial); K=3 checked
against score-at-MLE and finite-difference Hessian |
test-rcpp-fitting-equivalence.R |
fast_ordinal_clmm/fast_ordinal_glmm_cpp
|
buffer-reuse/equivalence checks |
test-ordinal-glmm-alpha-buf.R |
Survival
fast_coxph_regression_cpp |
survival::coxph |
test-rcpp-fitting-equivalence.R; real-data check on
survival::lung in
test-rcpp-fitting-real-data.R; component-composition
regression in test-cox-component-composition.R
|
fast_stratified_coxph_regression_cpp |
survival::coxph with strata()
|
test-rcpp-fitting-equivalence.R |
| Cluster-robust Cox covariance |
survival::coxph’s cluster-robust vcov |
test-coxph-robust-vcov.R |
fast_weibull_regression_general_cpp |
survival::survreg |
test-rcpp-fitting-equivalence.R,
test-weibull-general-censoring.R; real-data check on
survival::lung in
test-rcpp-fitting-real-data.R
|
compute_weibull_rand_bootstrap_parallel_cpp |
reproduces survreg on the same bootstrap resamples |
test-brt-weibull-kernel-matches-reference.R |
InferenceSurvivalKKWeibullMarginal |
survreg with cluster-robust / no-covariate fits |
test-weibull-marginal.R |
| Weibull frailty |
analytic score vs. numerical gradient; log-likelihood collapses to
plain survreg Weibull log-likelihood as the frailty SD
-> 0 |
test-weibull-frailty.R |
fast_gehan_wilcox_stats/martingale-residual kernel |
survival::survdiff(rho=1); canonical Peto-Prentice
weighted martingale residuals |
test-gehan-wilcox-fused-martingale.R; end-to-end
InferenceSurvivalGehanWilcox check in the same file |
fast_logrank_stats/martingale-residual kernel |
survival::survdiff; coxph martingale
residuals |
test-logrank-fused-martingale.R |
| Log-rank/Gehan-Wilcoxon under general censoring |
consistency checks across censoring patterns |
test-logrank-gehan-wilcox-general-censoring.R |
get_survival_stat_for_group/get_survival_stat_diff
(KM median) |
canonical survfit median, including exact-crossing,
tie, and non-estimable (returns NA, not Inf)
edge cases |
test-km-median-canonical.R |
| KM/RMST under general censoring |
test-km-rmst-general-censoring.R |
|
fast_dep_cens_transform_optim_cpp |
rho=0 score matches two independent lognormal survreg
fits |
test-custom-implementation-canonical-reductions.R |
fast_clayton_weibull_aft_optim_cpp |
singleton-only case matches plain survreg Weibull; pair
score matches the copula package’s reference
likelihood |
test-custom-implementation-canonical-reductions.R |
Proportion
fast_beta_regression_with_var_cpp/fast_beta_regression_mle
|
betareg::betareg |
test-rcpp-fitting-equivalence.R; real-data check on
betareg::ReadingSkills in
test-rcpp-fitting-real-data.R
|
fast_zero_one_inflated_beta_cpp |
factors into a betareg continuous submodel plus a
nnet::multinom inflation submodel; likelihood matches
gamlss.dist::dBEINF
|
test-custom-implementation-canonical-reductions.R |
| KK GEE direct solver (binomial, Poisson) |
geepack |
test-kk-gee-parity.R |
| Ordinal KK GEE |
direct multgee backend fit |
test-kk-gee-parity.R |
| Incidence/count/proportion KK GEE R6 wrappers |
their own backend fits |
test-kk-gee-parity.R |
fast_poisson_glmm_cpp |
lme4::glmer (Poisson, matched quadrature order) |
test-glmm-cpp-equivalence.R |
fast_logistic_glmm_cpp |
lme4::glmer (binomial, matched quadrature order) |
test-glmm-cpp-equivalence.R |
fast_hurdle_poisson_glmm_cpp |
glmmTMB’s truncated_poisson
|
test-glmm-cpp-equivalence.R |
fast_gaussian_lmm_cpp |
lme4::lmer fixed effects and variance components |
test-rcpp-fitting-equivalence.R |
fast_clogit_plus_glmm_cpp (matched-pair + reservoir
binary) |
dedicated equivalence suite |
test-clogit-plus-glmm-cpp-equivalence.R |
Numerical/backend utilities
fast_log1pexp |
closed-form/limiting behavior, precision at extreme arguments |
test-fast-log1pexp.R |
| Bartlett likelihood-ratio approximation |
smoke-tested across families (InferenceCountPoisson,
InferenceCountNegBin,
InferenceContinKKOLSOneLik,
InferenceSurvivalWeibullRegr,
InferenceOrdinalPropOddsRegr,
InferenceCountZeroInflatedNegBin/Poisson,
InferenceCountHurdlePoisson) |
test-bartlett-lr-approx-smoke-families.R,
test-bartlett-lr-plumbing.R,
test-bartlett-lr-logit.R,
test-bartlett-lr-ols-exact.R
|
Design-side
BlockingStructure/ClusterStructure
bootstrap-index generalization |
byte-identical (identical(), matched seeds) against
each real class’s pre-generalization output |
test-design-blocking-structure-bootstrap-golden.R,
test-design-cluster-structure-golden.R
|
Merged DesignFixedGreedyDOptimal
|
behavior-preservation against the pre-merge
DesignFixedAOptimal/DesignFixedDOptimal
classes |
test-greedy-d-optimal-merged.R |
Simulation/calibration checks
Point-estimate-vs-reference-package equivalence (above) confirms a
single fit is numerically correct; it does not by itself confirm an
inference procedure’s coverage or type-I
error are correct, since a subtly wrong standard-error formula
can still pass an equivalence test on the point estimate alone.
SimulationFrameworkReport$summarize() closes that gap: for
any (design, inference) pair it reports
coverage_pval/size_pval — the exact two-sided
binomial-test p-value of “true coverage = 1 - alpha” (respectively “true
size = alpha”) over Nrep_W * Nrep_Y_w Monte Carlo
replications — so a calibration claim is itself a hypothesis test with a
controlled false-alarm rate, not an eyeballed point estimate (see
vignette("reproducibility")’s “Monte Carlo error” section
for why a single observed coverage rate near but not exactly at the
nominal level is expected, and how many replications are enough to
distinguish that from genuine miscalibration). Running
SimulationFramework$new(...)$run() followed by
SimulationFrameworkReport$new(sim)$summarize() for a given
(design_classes_and_params, inference_classes_and_params, response_type)
combination is the package’s built-in mechanism for producing this
evidence for a specific method on demand; no single pre-computed report
is checked into the repository as of this writing (unlike the
point-estimate equivalence tests above, which run on every
R CMD check).
Coverage note
This page indexes what the test suite already demonstrates; it is not
a claim that every documented method has independent package-to-package
validation evidence. Custom/composite estimators without an external
single-package analogue (e.g. the matched-pair-plus-reservoir combined
kernels, fast_cpoisson_combined_with_var_cpp and
fast_clogit_plus_glmm_cpp) are instead validated by the
closed-form-reduction and numerical-derivative methods described above,
since no independent reference package implements the exact combined
model to compare against directly.