Reductions: partition-based updates + EHA reductions chapter#156
Merged
Conversation
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
…to redux-comments
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
…to redux-comments
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
…to redux-comments
- Update partition-based reductions (P4C22) with expanded content - Add EHA reductions chapter (P4C23) with competing risks framework, PAM and RSF examples on sir.adm data - Add CIF comparison figures for PAM vs RSF - Update survival chapter (P1C4) with minor edits - Update quarto config and bibliography
Closed
P4C19 (Reductions intro):
- Hyphenation fixes: one-dimensional, event-history
- Grammar fixes: sentence fragment, data are, dataset, only a few, computational cost
P4C20 (IPCW Classification):
- Chapter title: IPC Weighted → IPCW Classification
- Hyphenation: time point, pointwise, well-calibrated, rank-based, gradient-based
- Capitalise Bayesian; \mathbb{I} → \II
- Loss notation: \mathcal{l} → L (aggregate loss convention); add missing negation
to log loss (both pointwise and aggregate forms)
- Fix logical description of censored observations (line 36)
P4C21 (Pseudo-value Regression):
- New section: Choice of Response Function (§17.2), covering post-hoc vs.
integrated application of h(·) and interpretation of covariate effects
- Table 17.1: common link/response functions with covariate interpretations;
notation refined to h⁻¹(ψ) / h(f(x)) with ψ = S(τ|x) in caption
- Section moved before examples to avoid forward references
- Removed stale forward-reference note and inline RMST explanation (now refs §17.2)
- Fix \mathbb{I} → \II (4 occurrences); \xx_i^⊤ notation; h(f(x)) → h(f(xx))
- Correct @eq-cox-ph → @eq-ph; Gamma/Poisson → log link with literature support
- data set → dataset; various grammar/hyphenation fixes
- Further reading expanded: add foundational papers (Andersen 2003, 2004),
eventglm (Sachs 2022), random forests (Mogensen 2013), deep learning (Zhao 2020)
P5C24 (Conclusions):
- Update Langbein2024 → Langbein2025 (published journal version)
library.bib:
- Add Sachs2022 (eventglm, JSS), Hothorn2021, royston2011use, tian2014predicting
- Remove duplicate Andersen2004 entry (andersen2004regressionanalysis already present)
Closed
- Title hyphenation: Partition-Based Reductions
- Abstract written (was TODO)
- Conclusion section added: Key Takeaways, Limitations, Further Reading callouts
- Numerous typo fixes: disjunct→disjoint, occured→occurred, classifcation→classification,
inerpreted→interpreted, transfomration→transformation, akward→awkward, accross→across
- Consistent hyphenation throughout: discrete-time, partition-based, tree-based,
risk-set-based, continuous-time
- data set → dataset throughout
- \mathbb{I} → \II; \mathbb{E} → E
- Citation style fixes: (@...) → [@...]; remove Figure/Table/Section prefix before @-refs
- Stray punctuation fixes (extra comma, stray parenthesis)
- less rows → fewer rows
- Sentence fragment fixed (garbled sentence in left-closed vs left-open section)
- Limitation added: reductions apply to right-censored data only; left- and
interval-censored data require additional adaptations
Collaborator
Author
Summary of changes (beyond #147)P4C19 – Reductions intro
P4C20 – IPCW Classification
P4C21 – Pseudo-value Regression
P4C22 – Partition-Based Reductions
P5C24 – Conclusions
|
Collaborator
Author
|
@RaphaelS1 Integrated most of your previous suggestions from #147. Added few things, particularly in partition based reduction. I think 15-18 are very good now. 19 needs more work, but will do later |
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
RaphaelS1
reviewed
Mar 13, 2026
| First, consider a linear model without features, that is $\hat{S}(\tau|\xx_i) = \hat{\beta}_{\tau,0}$. | ||
| By construction of the pseudo-values, at time point $\tau = 1000$ days we have $\hat{\tilde{\theta}}(1000) = \hat{\beta}_{1000,0} = \frac{1}{n} \sum_{i=1}^n \tilde{\theta}_i(1000) = 0.6175 = \hat{S}_{KM}(1000)$. | ||
| Of course it doesn't really make sense to estimate $n+1$ Kaplan-Meier curves just to obtain the overall Kaplan-Meier estimate at one time-point, but this example illustrates that pseudo-value based regression provides consistent estimators of the survival probability. | ||
| To guarantee pseudo-values are within the required range, one can then apply the sigmoid function (see @tbl-pseudo-link-interpretation) |
Collaborator
There was a problem hiding this comment.
The table doesn't state that sigmoid and logit are the inverse and doesn't clearly state in which column is the logit and which is sigmoid
RaphaelS1
reviewed
Mar 13, 2026
Comment on lines
+91
to
+95
| **Left-truncation.** | ||
| In the competing risks setting, all subjects usually start in the initial state at time $0$. | ||
| In a multi-state process, subjects enter the risk set for a transition $\ell \to e$ at the time they enter state $\ell$, which can differ across subjects. | ||
| As discussed in @sec-multi-state for the `prothr` data, a subject may only enter an intermediate state (and thus become at risk for transitions from that state) at some later time point. | ||
| This constitutes *internal* or *process-induced* left-truncation and must be handled appropriately by the hazard estimation method. |
Collaborator
There was a problem hiding this comment.
This needs to be before the pseudo-algorithm above because currently it just throws in left truncation without explanation
RaphaelS1
reviewed
Apr 10, 2026
| * @Friedman1982 introduced the piecewise exponential model and established its consistency properties. | ||
| * @Tutz2016 provide a comprehensive treatment of discrete-time survival analysis, covering model specification, estimation, and interpretation in depth. | ||
| * @Bender2018 and @Kopper2022 show how penalized additive models (PAMs) can be used as the base learner in the PEM framework, with the `pammtools` package [@pkgpammtools] providing a convenient implementation. | ||
| * @Bender2018PAM and @Kopper2022 show how penalized additive models (PAMs) can be used as the base learner in the PEM framework, with the `pammtools` package [@pkgpammtools] providing a convenient implementation. |
Collaborator
There was a problem hiding this comment.
@adibender can you check I updated to the correct citation here
Co-authored-by: Raphael Sonabend-Friend <raphaelsonabend@gmail.com>
Co-authored-by: Raphael Sonabend-Friend <raphaelsonabend@gmail.com>
Co-authored-by: Raphael Sonabend-Friend <raphaelsonabend@gmail.com>
Co-authored-by: Raphael Sonabend-Friend <raphaelsonabend@gmail.com>
Co-authored-by: Raphael Sonabend-Friend <raphaelsonabend@gmail.com>
Co-authored-by: Raphael Sonabend-Friend <raphaelsonabend@gmail.com>
Co-authored-by: Raphael Sonabend-Friend <raphaelsonabend@gmail.com>
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
…into reductions-clean
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
# Conflicts: # book/P5C24_conclusions.qmd # book/_book/Machine-Learning-in-Survival-Analysis.pdf # book/_not_used.qmd
Walkthrough fixes for the 8 review-comment TODOs Raphael left in
book/P4C22_partition-based-reduction.qmd:
* (Data Transformation) drop meta TODO comment, fix "effect"->
"affect".
* (Discrete-time likelihood) rewrite the case-by-case justification of
the last equality so it links to the cases on the previous line
instead of using the ambiguous "first/second bracket" phrasing.
* (Discrete-time summary) fix the interpretation -- a classifier
predicts the class probability \hat\pi_{ij}, not a label
\hat\delta_{ij}; \hat\pi_{ij} estimates the conditional discrete-time
hazard.
* (Discrete-time logistic example) drop the implementation-detail
parenthetical about reference-coded interval index and fix a stray
comma (resolved manually by user).
* (Discrete-time logistic example) add an explicit bridge showing
\hat h_{tilde Y}(j|x) = sigmoid(linear predictor) via
@eq-discrete-hazard-probability before introducing \hat S.
* (PEM intro) rewrite to distinguish PEM from the discrete-time
approach up front: continuous-time step-function hazard, exact
within-interval event times preserved via offset, continuous-time
hazard estimates.
* (PEM survival formula) show the integral S = exp(-int h du) first,
then collapse to a sum because h is piecewise constant.
* (PEM) add new subsection "When to use PEM" with pros/cons vs
discrete-time / survival stacking; remove the orphan TODO comment.
Also tightens an ill-formed set-builder expression in the survival
stacking section: \mathcal{A} = {t_{(1)}, ..., t_{(m+1)}: ...} ->
chain of strict inequalities, matching the convention in
@eq-cut-points.
No prose semantics changed elsewhere; all cross-references resolve.
* Restructure CR section into Separate datasets / Stacked dataset / Separate vs. stacked / Application to sir.adm. * Add MS section: transition-specific pipeline + stacked dataset subsections, with new prothr application using a two-stage reduction (multi-state -> transition-specific LT single-event -> Poisson PED) fit via XGBoost and compared against the AJ baseline split by treatment. * Replace older Python infographic generators with drawio HTML+SVG sources for cr-reduction-pipeline, cr-reduction-stacked, ms-reduction-pipeline, and ms-reduction-stacked figures. * Regenerate cif-marg-sir.png; render tp-prothr-cmp.png. * Add Limitations callout (separate-data bookkeeping overhead, specialised learner trade-offs e.g. native CR RSF). * P1C5: prothr state-occupation discussion + companion R scripts and figures, currently parked in _not_used.qmd. * library.bib: new citations (niessl2023, putter2018). * code.R: prothr MS reduction comparison block (AJ + XGBoost-Poisson via pammtools as_ped + xgb.train with offset base_margin trick).
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
Signed-off-by: Raphael Sonabend <raphaelsonabend@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces #153 with a clean history (single commit on main).