NEWS
PDRobust 0.3.8 (2026-10-02)
Interface correction and printed results
- Corrected the public
ORCI() argument name from fomula to formula in
the function, validation messages, help, examples, vignettes, README, and
interface tests. Calls that supplied the former misspelling by name must use
formula; positional calls are unchanged.
- Custom print methods now introduce their results with a sentence, display
their principal numeric or tabular component, and draw the stored
user-facing plot or plots when present. The underlying plot objects and all
statistical calculations are unchanged.
Data validation and standardization
- Replaced repeated subject-level lookups with grouped visit counts,
treatment flags, and stable survival ordering. Both validation passes and
the existing public interfaces, data ordering, and audit attributes remain.
- Documented all
DataCheck() return fields and DataStandard() attributes,
including the distinction between repairability and final analysis readiness.
Corrected the data-workflow vignette's endpoint, row-removal, and metadata
descriptions to match the existing implementation.
- Added regression coverage for factor-covariate attrition and the final
readiness check when deletion removes a treatment group.
- Excluded the large-sample development script and saved test plot from source
archives; these files remain in the working repository.
CRAN release preparation
- Retained the 0.3.7 treatment-1 survival-favorable estimator and documented
how to convert treatment coding and effect contrasts relative to Zhang
et al. (2026). Added the methodological citation and an implementation guide.
Outcome-noise sensitivity is explicitly distinguished from the paper's
principal-ignorability sensitivity procedure.
- Corrected the documented
ORCI() argument spelling and QR return values
without changing function signatures or numerical estimators.
- Documented all bundled data columns and the existing print, plot, and
subsetting methods.
- Added reproducible seeds and explained demonstration-only bootstrap counts
in the README and workflow vignettes; clarified the binary effect link and
the interpretation of outcome-noise sensitivity analysis.
- Declared the utility namespace import used for global-variable registration
and excluded development reports, release artifacts, and the top-level
sensitivity image from source builds.
- Shortened the package title and made the software citation follow the
package metadata.
- Corrected vignette figure paths for the documentation website and supplied
descriptive alternative text for workflow figures.
PDRobust 0.3.7.2
Live bootstrap progress
HTEAllT() and HTESepT() accept an optional progress_callback without
changing their estimands, fitting logic, bootstrap acceptance rules, or
returned numerical results.
- The callback receives structured updates before model fitting, after the
point estimate, after every bootstrap attempt, and at completion. Updates
report successful replications, total and failed attempts, elapsed time, and
the last worker-update time.
- A callback error produces one warning and disables monitoring for that run;
it does not interrupt or alter the scientific calculation.
PDRobust 0.3.7
Interfaces and example data
- All ten
Mapping() arguments are required and every package example now
supplies the five structural column roles explicitly.
ORCI() now requires the treatment-group argument a; the obsolete
treatment_group argument and its default were removed.
- Tests and vignettes now use the current
ImperfectConSample contract:
noncanonical clinical column names, character visit months 0/6/12, preserved
X1-X6 covariate names, and explicitly reported recoverable imperfections.
Model warnings and diagnostics
- Logistic warnings are normalized so nonconvergence and separation are each
reported once per fit instead of duplicating both
glm() and package-level
messages.
HTESepT(), HTEAllT(), and SA() consolidate repeated point-estimate
nuisance warnings at the public analysis boundary. Bootstrap warnings remain
silent during resampling and are aggregated in bootstrap_info.
- Analysis-internal principal-score and outcome models are fitted once for
each distinct data/formula combination and reused for the two counterfactual
treatment predictions, eliminating identical duplicate fits without changing
the prediction equations.
- Returned model diagnostics identify the analysis, sample type, target time,
treatment group, fitting rows and subjects, response counts, formula,
predictors, rank status, finite-prediction status, convergence, and
separation.
Return precision
- Final user-facing predictions, estimates, diagnostics, confidence intervals,
odds ratios, weighted summaries, and sensitivity tables are rounded to three
decimal places.
- Full precision is retained for analysis data, internal nuisance predictions,
fitted models, probabilities, weights, score equations, optimization,
bootstrap replicates, and confidence-interval calculations.
generate_data_example() performs its simulation at full precision and
rounds only the final generated data frame.
Validation cleanup
- Binary conversion and invalid-row detection now share one authoritative
implementation.
- Validation guaranteed by
Mapping() is no longer repeated by DataCheck().
DataStandard() now consumes the authoritative initial DataCheck() result
instead of repeating mapping, column, and nonempty-data checks.
- Prepared-data helpers now reuse the validated mapping instead of retrieving
and validating it multiple times in the same public call.
PDRobust 0.3.6
Estimation and bootstrap
SA() now supports continuous and binary outcomes. Continuous analyses retain
the original additive-noise and closed-form equations; binary analyses use
logistic outcome prediction and the bounded-link HTE estimating equation.
- Subject-level bootstrap resampling still preserves complete panels and
assigns a new bootstrap ID to every sampled cluster. Ordinary model warnings
are now recorded without automatically rejecting otherwise finite,
converged replicates.
- Bootstrap diagnostics now categorize rejected replicates and retain warnings
emitted by accepted or rejected attempts. The arbitrary coefficient-magnitude
rejection threshold was removed.
- Binary estimating equations use numerically stable logistic calculations and
may accept a finite root reached at the iteration limit when its residual
precision satisfies the requested tolerance.
Prediction and validation
OutPred() retains the original missing-outcome filtering, treatment and
survival assignments, linear/logistic model choice, response prediction, and
row-aligned numeric return value.
- Separation, extreme fitted probabilities, rank-deficient nuisance fits, and
ordinary fitting or prediction warnings are no longer fatal when finite
predictions remain available. Genuinely non-finite or misaligned predictions
and non-estimable HTE modifier systems remain errors.
- Ill-conditioned but full-rank closed-form estimating systems now warn and are
accepted only when solving produces finite coefficients.
Data, documentation, plots, and tests
- Examples now use the package datasets
BiSample and
ImperfectConSample through standard data() loading. The redundant
CSV-backed pd_example_data() helper was removed.
- Pooled HTE and ORCI forest plots use stable, distinct variable colors with
matching point, interval, and legend mappings.
- Tests now cover binary and continuous sensitivity analysis, finite
warning-tolerant nuisance prediction, successful built-in-data bootstrap
estimation, categorized bootstrap diagnostics, and plot color mappings.
PDRobust 0.3.5
Model validation
- Propensity-score, principal-score, outcome, odds-ratio, quantile-regression,
HTE, and sensitivity-analysis fitting now use shared package-level preflight
checks.
- Missing formula variables, invalid model matrices, zero-variance predictors,
rank deficiency, insufficient complete cases, nonvarying responses,
separation, non-estimable coefficients, fitting warnings, convergence
failures, and singular estimating systems now produce contextual PDRobust
errors instead of leaking raw model-fitting conditions.
Tests
- Added a deterministic, side-effect-free simulation helper adapted from the
package's example-data generator. It creates continuous, binary, valid, and
deliberately invalid test panels.
- Expanded data workflow tests for validation contracts, supported and
unsupported encodings, edge cases, immutability, reproducibility, audit
attributes, attrition, and value idempotency.
- Expanded prediction, analysis, profile, sensitivity, and diagnostic tests for
boundary inputs, model-matrix validity, estimability, separation,
convergence, reproducibility, and preservation of user data.
PDRobust 0.3.4
Diagnostics
PSDiag() now always truncates internally estimated propensity scores to
[0.01, 0.99] before ordinary IPTW weights and weighted SMDs are calculated.
PrinSDiag() now applies the same fixed propensity-score truncation before
evaluating the cutoff principal-score diagnostic equation.
Tests
- Principal-score prediction fixtures now use a larger probabilistically
generated panel with non-separated survival outcomes and a full-rank design
matrix.
- Tests explicitly verify principal-model rank, response variation, convergence,
absence of fitting warnings, and fixed diagnostic propensity truncation.
Documentation
- The README now demonstrates the complete public workflow and identifies the
principal returned class and components of every exported function.
- All vignettes were revised to document data preparation, independent
prediction models, diagnostics, profiling, HTE estimation, and sensitivity
analysis under the 0.3.4 interface.