knitr::opts_chunk$set(echo = TRUE)
propERpos <- 0.70 early5yr <- 0.87 adv5yr <- 0.55 propERTam <- 0.58
# Early stage f = function(x, p=propERpos, t=propERTam, h=0.7, So=early5yr) { p*(1-t)*x + p*t*x^h + (1-p)*x - So} str(Sb.early <- uniroot(f, lower=0.5, upper=early5yr, tol = 0.0001))
# Advanced stage f = function(x, p=propERpos, t=propERTam, h=0.7, So=adv5yr) { p*(1-t)*x + p*t*x^h + (1-p)*x - So} str(Sb.adv <- uniroot(f, lower=0.2, upper=adv5yr, tol = 0.0001))
Note: I could have detailed Endocrine, Chemo and Both for the ER-, but the table focuses on treatments that have an impact, grouped by the hazard ratio. So for ER-, chemo and both have the same HR, the HR for just chemo, since Endocrine has no effect in ER-.
ER Status | Stage | Treatment | Percent ---- | ------ | ----------- | ------ Positive | Advanced | Endocrine | 10 | | | Chemo | 38 | | | Both | 59 | | Early | Endocrine | 58 | | | Chemo | 8 | | | Both | 10 Negative | Advanced | Chemo OR both | 85+10 = 95 | | Early | Chemo OR both | 50+5 = 55
Description | Notation | Value --------------------------------- | -------- | --------------------- Proportion of all cases that are ER positive | $p_{i=ER+}$ | 0.70 Proportion of all cases that are ER negative | $p_{i=ER-} = 1-p_{j=ER+}$ | 0.30 Within stage and ER group i, proportion treated with treatment j | $t_{ij}$ | See table below Hazard ratio for treatment j | $h_{j}$ | See table below Observed 5-year survival, all ER | $S_{o}$ | 0.55 (advanced) or 0.87 (early) Baseline 5-year survival, all ER | $S_{b}$ | To be estimated for each stage
Using the assumption $S_{b}$ is the same for both ER+ and ER-, observed survival is sum of survivals under each treatment, weighted by the proportion receiving each treatment. For treatment $j$, survival is $(S_{b})^{h_{i}}$
$$S_{o} = \sum_{i}^{}p_{i}\sum_{j}^{} (t_{ij}S_{b})^{h_{j}}$$ Rearranging terms gives a fractional polynomial for which $S_{b}$ is the root:
$$0 = \sum_{i}^{}p_{i}\sum_{j}^{} (t_{ij}S_{b})^{h_{j}} - S_{o}$$
Stage | ER Status $i$ | Treatment $j$ | Hazard ratio $h_{j}$ | Proportion $t_{ij}$ ---- | ------ | ----------- | ------ | -------- Advanced | Positive | Endocrine | 0.7 | 10 | | | Chemo | 0.775 | 38 | | | Both | 0.5425 | 50 | | | None | 1 | 2 | | Negative | Endocrine | 1 | 3 | | | Chemo | 0.775 | 85 | | | Both | 0.775 | 10 | | | None | 1 | 2 Early | Positive | Endocrine | 0.7 | 58 | | | Chemo | 0.775 | 8 | | | Both | 0.5425 | 10 | | | None | 1 | 24 | | Negative | Endocrine | 1 | 20 | | | Chemo | 0.775 | 50 | | | Both | 0.775 | 5 | | | None | 1 | 25
For example, for the advanced stage in Colombia:
$$S_{o} = \sum_{i}^{}p_{i}\sum_{j}^{} (t_{ij}S_{b})^{h_{j}}$$ $$0.55 = 0.70(0.10{S_{b}}^{0.7} + 0.38{S_{b}}^{0.775} + 0.50{S_{b}}^{0.5425} + 0.02{S_{b}}^{1}) + 0.30(0.03{S_{b}}^{1} + 0.85{S_{b}}^{0.775} + 0.10{S_{b}}^{0.775} + 0.02{S_{b}}^{1}) $$ For the ER negative, no treatment and endocrine have the same hazard ratios, as do chemo and both. Those terms can thus be combined:
$$0.55 = 0.70(0.10{S_{b}}^{0.7} + 0.38{S_{b}}^{0.775} + 0.50{S_{b}}^{0.5425} + 0.02{S_{b}}^{1}) + 0.30(0.05{S_{b}}^{1} + 0.95{S_{b}}^{0.775}) $$
# Treated survivals early5yr <- 0.87 adv5yr <- 0.55 # ER positivity propERpos <- 0.70 # Treatment proportions: e=endocrine, c=chemo, b=both, pos=ER+, ''=ER- # Hazard ratios: e=endocrine, c=chemo, b=both # For chemo, the terms with the same hazards are combined, i.e. chemo and both are tc and none and endocrine are t
# Early stage f = function(x, p=propERpos, tepos=0.58, tcpos=0.08, tbpos=0.10, tc=0.55, he=0.7, hc=0.775, So=early5yr) { p*(1-tepos-tcpos-tbpos)*x + p*tepos*x^he + p*tcpos*x^hc + p*tbpos*x^(he*hc) + (1-p)*(1-tc)*x + (1-p)*tc*x^hc - So } str(Sb.early <- uniroot(f, lower=0.5, upper=early5yr, tol = 0.0001))
# Advanced stage f = function(x, p=propERpos, tepos=0.10, tcpos=0.38, tbpos=0.59, tc=0.95, he=0.7, hc=0.775, So=adv5yr) { p*(1-tepos-tcpos-tbpos)*x + p*tepos*x^he + p*tcpos*x^hc + p*tbpos*x^(he*hc) + (1-p)*(1-tc)*x + (1-p)*tc*x^hc - So } str(Sb.adv <- uniroot(f, lower=0.2, upper=adv5yr, tol = 0.0001))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.