density_ratio(): crashed fold workers (returned as
try-error by mclapply) now cause an immediate
hard stop with a descriptive message, rather than being silently
converted to Rt_t = 1. A second guard stops if any subject
has NA density-ratio weight after the fold loop.R/diagnostics.R merged into R/helpers.R;
diagnostics.R removed.Description field in
DESCRIPTION.\value tag to sl_tmle.Rd.cat()/SL_WARN_FILE logging
block from R/sl.R.inst/sim_study/ (non-standard directory
containing local simulation scripts with global environment
side-effects).R/helpers.R
with — escapes.sim_bin(),
sim_cont(), and sim_multi() (missing man
pages).skip_on_cran() to
tests/testthat/test-accuracy.R.New pool_time = c("spline", "linear", "factor")
argument on sdr(), itmle(), and
qreg(), defaulting to "spline" (restricted
cubic spline, K = min(5, tmax) equally-spaced knots,
df = K - 1). Applies only when
pool_g_death = TRUE or pool_q_exit = TRUE.
Point estimates from pooled fits will change compared to 0.9.0; pass
pool_time = "linear" to reproduce the previous
behaviour.
Q_rem at the terminal block
(tt == tmax) now uses sl_recursive (routed
through sl_rec_early when
tt <= rec_transition), reverting the 0.9.0 behaviour
where it used sl_y. The family switch (binomial when the
outcome is binomial at tmax) is retained. Terminal-block
estimates change.
sl_rec_simple renamed to sl_rec_early
in sdr(), itmle(), and internal helpers.
Update any call that used the old argument name.
weight_diagnostics() default trim
changed from 0.99 to 1 (no trimming by
default). Pass trim = 0.99 explicitly for the previous
output.
$diagnostics$recursion_diag cleanup
(sdr() and itmle()):
pseudo_pre_ar_tr to
Y_target_ar; the diagnostic table now carries
Y_target_{mean,sd,min,max} and
resid_{sd,q95_abs,max_abs} columns.has_rem, has_dex,
has_qexit, has_qrem (superseded by the
existing used_const_* flags).mean_pseudo_pre_ar,
sd_pseudo_pre_ar, Q_pre_diff_*,
delta_mean, corr_*,
exit_contrib_*_mean, rem_contrib_*_mean.Q_post_diff_*,
delta_nat_target_mean, delta_shf_target_mean,
delta_nat_vl_target_mean, and
delta_shf_vl_target_mean.sim_bin() – single binary treatment.sim_cont() – single continuous treatment.sim_multi(n_binary, n_continuous) – arbitrary number of
binary and/or continuous treatments (columns
A_b1..A_bK, A_c1..A_cM).weight_diagnostics() – per-time weight summary
(instantaneous and cumulative-product means, quantiles, Kish ESS) from a
density-ratio object.branch_cal_summary() – fold-averaged
per-(t, branch) calibration table from an
sdr() / itmle() fit.contrast() – risk difference, risk ratio, and odds
ratio between two fits (or between a fit and the observed mean), with
SEs derived from the influence curves.vignette("diagnostics") walking through the
recommended workflow: density-ratio weights and trim selection,
natural-course Q calibration and SuperLearner tuning, final estimation,
then post-estimation sanity checks.?sdr and ?itmle gain a
Diagnostics section listing all diagnostic slots
(branch_cal, recursion_diag,
target_cal, target_sl,
sl_summary, ic_df) with one-sentence purposes
and a pointer to the vignette.?sdr and ?itmle @examples
reworked to use the new exported simulation helpers – one block each for
binary, continuous, and mixed multi-treatment scenarios.sl_workers documentation simplified: no longer names
specific learners as incompatible, just notes that fork-parallel
evaluation is not compatible with all learners.weight_diagnostics() cumulative-product weights now
computed over all N subjects (previously restricted,
causing under-reporting of the mean cumulative weight).sdr(), itmle(),
density_ratio(), qreg().a_names = c("A1", "A2", ...).[0, 1] scaling
via y_bounds.pool_g_death) and pooled
exit-outcome model option (pool_q_exit) for sparse late
time points.SL.tgt.*) and
iTMLE (SL.tmle_*) targeting steps.cluster
argument.