tidy.polyreg() accepts the default arguments forwarded
by modelsummary::msummary(), so tables can display
exponentiated coefficients and confidence intervals at the requested
level.polyreg() validates the active event codes and requires
both event types by the analysis time for fixed-time competing-risk
models. IPCW uses the specified censoring code, supports character
strata, and accounts for estimating the censoring distribution within
each stratum in the fixed-time sandwich variance.cifcurve() computes delta and Aalen variances using all
event times up to each reported time. The legacy engine reports risk
sets immediately before each time and accepts unweighted data or
positive weights that are constant within each stratum. Confidence
limits and one-sided p-values are missing beyond each stratum’s
positive-weight follow-up.Surv()
response types. Explicit competing-risk analyses retain their selected
outcome type when a cause is absent, subject to the event requirements
of each estimator. The joint Gray covariance in
ciftest_mdir() respects custom event codes.Added direct optional gtsummary::tbl_regression()
support for polyreg, including event selection, reference
rows and event-specific RR/OR/SHR headings. tidy.polyreg()
supports exponentiate and the standard logical
conf.int/numeric conf.level interface while
retaining legacy numeric conf.int. Stored intervals are
retained when inference settings are unchanged.
Corrected survival-summary SE scaling and unstratified curve
compatibility. cifcurve() now returns a subclass of
survfit; its summary and stratum-subsetting methods keep
saved inference aligned and prevent interval extrapolation past
positive-weight follow-up. Reporting adapters preserve the fitted
statistical results.
Added reporting articles for CIF curves/tests and event-specific regression, with gtsummary formatting and Word/HTML export examples.
Fixed unweighted cifplot() calls being treated as
weighted when NULL weights were forwarded internally. Unweighted plots
now honor error = "aalen" and "delta", and
retain the unweighted default variance choice. Actual supplied weights
retain the existing weighted-inference rules.
Added pointwise IF-t, FG-normal and FG-t intervals to
cifcurve() for independent observations with no weights or
known fixed weights. Select conf.dist = "t" for Student
critical values, or error = "fay" for the FG sandwich
correction. Existing default method choices are retained.
IF-t supports df.method = "deletion" (FG-type
allocation, default) or "equal" (equal-allocation working
Satterthwaite degrees of freedom). FG-t uses deletion allocation.
Results record time-specific degrees of freedom, critical values and
interval availability reasons. These are approximations, not exact t
distributions or uniform coverage guarantees.
Supplied weights, including externally estimated IPTW, are treated as fixed. Propensity-score estimation and its full IF contribution remain outside this API. IF/FG limits beyond positive-weight follow-up, or with invalid interior variance/df, are missing rather than silently replaced by a normal interval; valid boundary singletons are retained.
Corrected the C++ IF recursion to differentiate the actual KM/AJ product limit, including tied jumps. IF standard errors can consequently differ from earlier versions. FG contributions share that recursion. Also fixed zero cause-1 CIFs when only competing events are observed.
Added ciftest() for standard and weighted
log-rank/Gray tests and closed-form augmented competing-risk score tests
with separately specified censoring and competing-risk nuisance
strata.
Redesigned the public ciftest() selector around
test = "auto", "logrank", "gray",
"score", or "augmented"; "early"
and "late" select outcome-specific Fleming–Harrington
presets. Survival outcomes now default to log-rank and competing-risk
outcomes to the augmented score. Added "L",
"LR", and "log-rank" aliases for log-rank,
"G" for Gray, and "A", "aug", and
"augmentation" for the augmented score test. Added a null
robust score option, individual score-contribution matrices, two-sided
multigroup omnibus tests, and survdiff compatibility for
the ordinary unweighted log-rank result.
Renamed the public analysis-stratification argument from
strata.event to strata.
strata.censor is formally available for the competing-risk
null score, while strata.competing.risk remains specific to
augmentation.
Added prob.truncation for derivative-aware
probability lower truncation of censoring KM and working AJ survival
denominators. Raw probabilities continue to determine structural
positivity failures; raw and used minima and truncation counts are
returned in diagnostics.
Added ciftest_mdir() to combine user-selected
unweighted, early, late, or custom Fleming–Harrington directions in a
Ditzhaus–Friedrich quadratic score test with rank-adaptive asymptotic
chi-square calibration. Classical log-rank directions use a joint
finite-population-corrected hypergeometric covariance, while classical
Gray directions use the bilinear extension of Gray’s event,
competing-event, and censoring covariance. Consequently, linearly
dependent FH directions do not change the quadratic test.
ciftest(test = "multiple") and its "multi" and
"m" aliases use the linearly independent default directions
(2, 0), (0, 2), and (0, 0); the
single-direction early and late presets remain (1, 0) and
(0, 1).
Added analysis stratification to ciftest()
independently of strata.censor and
strata.competing.risk. Log-rank and Gray
scores/covariances, Fine–Gray risk sets, and FH weight processes are
constructed within event strata and then summed. Closed-form
augmentation uses event-by-exposure-by-competing-risk-by-censoring
computational cells; positive fixed-point iterations remain restricted
to pooled models. All three strata arguments accept one or more column
names; multiple columns define their observed interaction and share one
complete-case filter.
Added finite Scheike fixed-point refinement to
ciftest(). The single iteration argument
selects the closed-form augmented score at zero and a fixed number of
iterated time-weighted Fine–Gray updates at positive integers, with
subject-level scores and residual diagnostics returned. Appendix-E
iteration now evaluates the working competing-risk ratio with the
coherent Aalen–Johansen survival and enforces positivity only where a
future cause-1 score contribution is active; censoring times beyond the
last cause-1 event are excluded from the correction map and reported in
diagnostics$iteration.support.
Anchored positive finite iterations and the internal direct
fixed-point reference at the closed-form augmented score using
closed-form + AIPWCC(value) - AIPWCC(seed). This preserves
the zeroth-step identity in each observed sample while retaining the raw
AIPWCC(seed) as a batch-only diagnostic. Anchoring
discrepancies are returned under
diagnostics$iteration.anchor.
Added an internal batched ciftest engine for
simulation studies. It reuses censoring Kaplan–Meier and working
Aalen–Johansen nuisance fits within one data set, preserves scalar
ciftest() result objects, and moves the nested Fine–Gray
score-IID and closed-form augmentation loops to Rcpp kernels. Fixed
Fleming–Harrington weights with a common nuisance specification are
evaluated together in a multiweight traversal.
Replaced the default Fine–Gray score-IID traversal with an
internal sort-plus-prefix/reverse-suffix C++ kernel. Risk moments, the
base IID, censoring derivative, and censoring-martingale IID are
evaluated without the former event-by-censoring-time-by-subject loop.
The independent legacy kernel remains available through
options(cifmodeling.ciftest.fg.engine = "legacy");
"check" evaluates both kernels and stops if their numerical
outputs differ beyond tolerance.
Added a cell-aggregated prefix C++ kernel for closed-form
augmentation. Reverse at-risk sums replace the censoring-time-by-subject
centering loop, and cell-specific censoring-hazard prefixes replace the
subject-level martingale traversal. The legacy implementation remains
available through
options(cifmodeling.ciftest.augmentation.engine = "legacy");
"check" evaluates both implementations and verifies all
returned IID and diagnostic quantities.
Added a batch-only direct Appendix-E fixed-point reference
solver. It builds the affine iteration operator, reuses one QR
factorization across FH weights, and reports residual, spectral-radius,
and conditioning diagnostics. Finite iteration and the public scalar
ciftest() interface remain unchanged. A direct solution is
now marked converged only when its algebraic residual meets tolerance
and the empirical operator has spectral radius below one; solving a
non-contractive linear system is retained as a diagnostic
result.
Added a batch-only Fine–Gray score-IID reference for simulation comparisons. It uses the Fine–Gray influence-function cross-product as its test variance and is kept separate from the public standard Gray test.
Added diagnostics$fh.weight.process to
ciftest() results so the exact event-time FH process and
its pooled-AJ or native-Gray construction can be audited and compared
with independent implementations.
Third CRAN release.
Added cifflowchart() for lightweight flowchart
summaries of exclusions, groups, and outcome status.
Added one-sided normal approximation tests in
cifcurve() via time.point and
null.hypothesis.
Improved handling of risk-set display and event coding options.
Updated documentation, examples, vignettes, and pkgdown site.
Fixed bugs and expanded test coverage.
n.risk.type to cifcurve() to
optionally display weighted, unweighted, or Kish ESS risk set sizes
without changing estimates or SEs.cifplot() to display integer
values.cloglog by
unifying axis-application logic, improving maintainability without
changing user-facing results.-Wstringop-overread)
triggered in calculateAJ_Rcpp (no change to user-facing
results).Invalid DESCRIPTION file, software names were single quoted. Rebuilt and resubmitted.
Addressed CRAN feedback regarding file-system and environment management. Removed development-time scripts under tools/ that performed bulk renaming and wrote to the package directory or the current working directory. These files are no longer included in the source tarball. Eliminated the remaining use of .GlobalEnv in internal helpers. panel_as_formula_global() now evaluates formulas in the calling environment (parent.frame()) instead of .GlobalEnv, fully complying with the “no modification of the .GlobalEnv” CRAN policy. No user-visible changes; only internal cleanup for CRAN compliance.
10.21105/joss.00510) does not
appear to be present in the package source. Verified using recursive
search and a freshly created tarball. Rebuilt and resubmitted.Breaking change: cifplot() and
cifpanel() now return structured objects with explicit
plot/list.plot and patchwork
elements, metadata, and printing handled via new S3 methods. Automatic
printing is limited to interactive sessions, and panel outputs store
engine metadata in print.info$engine.
Standardized outcome.type canonical values to lowercase; legacy uppercase and short aliases remain accepted. Internals now use tolower().
cifpanel() and panel mode of * cifplot()
were developed.cifcurve(), cifplot() and
polyreg() were developed.