The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
This vignette describes Regional Consistency Probability (RCP) calculations for three survival endpoint types: hazard ratio, milestone survival probability, and restricted mean survival time (RMST). All three endpoints share a common trial design framework, and event times are modelled by the exponential distribution.
For all survival endpoints, the following parameters define the trial design.
| Parameter | Symbol | Description |
|---|---|---|
t_a |
\(t_a\) | Accrual period; patients enrol uniformly over \([0, t_a]\) |
t_f |
\(t_f\) | Follow-up period after accrual closes |
tau |
\(\tau = t_a + t_f\) | Total study duration (computed internally) |
lambda |
\(\lambda\) | True hazard rate under the alternative (exponential model) |
lambda0 |
\(\lambda_0\) | Historical control hazard rate |
lambda_dropout |
\(\lambda_d\) | Dropout hazard rate; NULL assumes no dropout
(default) |
The common parameters below are used throughout the examples in this vignette.
lambda <- log(2) / 10 # treatment arm: median survival = 10
lambda0 <- log(2) / 5 # historical control: median survival = 5
t_a <- 3 # accrual period
t_f <- 10 # follow-up period
# True HR = lambda / lambda0 = 0.5Under the exponential model with uniform accrual over \([0, t_a]\) and administrative censoring at \(\tau\), the expected event probability per patient is:
\[ \phi = \frac{\lambda}{\lambda + \lambda_d} \left[1 - \frac{e^{-(\lambda + \lambda_d)t_f} - e^{-(\lambda + \lambda_d)\tau}}{(\lambda + \lambda_d)\,t_a}\right] \]
The expected number of events in Region \(j\) is \(E_j = N_j\,\phi\), and the log-hazard ratio estimator has the approximate distribution:
\[ \log(\widehat{HR}_j) \sim N\!\left(\log(HR),\; \frac{1}{E_j}\right) \]
Method 1 (log-HR scale):
Letting \(\delta = \log(HR) < 0\), \(E_1 = N_1\phi\), and \(E_{-1} = (N - N_1)\phi\):
\[ \text{RCP}_{1,\log} = \Phi\!\left(\frac{-(1 - \pi)\,\delta} {\sqrt{(1 - \pi f_1)^2/E_1 + \{\pi(1 - f_1)\}^2/E_{-1}}}\right) \]
Method 1 (linear-HR scale) (Hayashi and Itoh 2018):
\[ \text{RCP}_{1,\text{lin}} = \Pr\!\left[\,(1 - \widehat{HR}_1) \geq \pi\,(1 - \widehat{HR})\,\right] \]
This is derived via the delta method. Define \(g = \log(\widehat{HR}_1) - \log(1 - \pi + \pi\,\widehat{HR})\). Under homogeneity:
\[ E[g] = \log(HR) - \log(1 - \pi + \pi\,HR) \]
\[ \mathrm{Var}(g) = \frac{1}{E_{\text{total}}} \left[ \frac{\{1 - \pi + \pi(1 - f_1)HR\}^2}{f_1\,(1 - \pi + \pi\,HR)^2} + \frac{\{\pi(1 - f_1)HR\}^2}{(1 - f_1)\,(1 - \pi + \pi\,HR)^2} \right] \]
and \(\text{RCP}_{1,\text{lin}} = \Phi(-E[g] / \sqrt{\mathrm{Var}(g)})\).
Method 2:
\[ \text{RCP}_2 = \prod_{j=1}^{J} \Pr\!\left(\widehat{HR}_j < 1\right) = \prod_{j=1}^{J} \Phi\!\left(-\delta\,\sqrt{E_j}\right) \]
result_f <- rcp1armHazardRatio(
lambda = lambda,
lambda0 = lambda0,
Nj = c(20, 80),
t_a = t_a,
t_f = t_f,
lambda_dropout = NULL,
PI = 0.5,
approach = "formula"
)
print(result_f)
#>
#> Regional Consistency Probability for Single-Arm MRCT
#> Endpoint : Time-to-Event (Hazard Ratio)
#>
#> Approach : Closed-Form Solution
#> True Hazard : lambda = 0.069315
#> Control Hazard : lambda0 = 0.138629
#> Sample Size : Nj = (20, 80)
#> Total Size : N = 100
#> Accrual Period : t_a = 3.00
#> Follow-up : t_f = 10.00
#> Study Duration : tau = 13.00
#> Dropout Hazard : lambda_d = NA
#> Threshold : PI = 0.5000
#>
#> Consistency Probabilities:
#> Method 1 (Region 1 vs Overall):
#> Log-HR based : 0.8935
#> Linear-HR based : 0.9228
#> Method 2 (All Regions Show Benefit):
#> HR < 1 : 0.9892result_s <- rcp1armHazardRatio(
lambda = lambda,
lambda0 = lambda0,
Nj = c(20, 80),
t_a = t_a,
t_f = t_f,
lambda_dropout = NULL,
PI = 0.5,
approach = "simulation",
nsim = 10000,
seed = 1
)
print(result_s)
#>
#> Regional Consistency Probability for Single-Arm MRCT
#> Endpoint : Time-to-Event (Hazard Ratio)
#>
#> Approach : Simulation-Based (nsim = 10000)
#> True Hazard : lambda = 0.069315
#> Control Hazard : lambda0 = 0.138629
#> Sample Size : Nj = (20, 80)
#> Total Size : N = 100
#> Accrual Period : t_a = 3.00
#> Follow-up : t_f = 10.00
#> Study Duration : tau = 13.00
#> Dropout Hazard : lambda_d = NA
#> Threshold : PI = 0.5000
#>
#> Consistency Probabilities:
#> Method 1 (Region 1 vs Overall):
#> Log-HR based : 0.9019
#> Linear-HR based : 0.9320
#> Method 2 (All Regions Show Benefit):
#> HR < 1 : 0.9924Specifying lambda_dropout reduces the expected event
probability \(\phi\), which in turn
reduces all RCP values.
result_dropout <- rcp1armHazardRatio(
lambda = lambda,
lambda0 = lambda0,
Nj = c(20, 80),
t_a = t_a,
t_f = t_f,
lambda_dropout = 0.05,
PI = 0.5,
approach = "formula"
)
print(result_dropout)
#>
#> Regional Consistency Probability for Single-Arm MRCT
#> Endpoint : Time-to-Event (Hazard Ratio)
#>
#> Approach : Closed-Form Solution
#> True Hazard : lambda = 0.069315
#> Control Hazard : lambda0 = 0.138629
#> Sample Size : Nj = (20, 80)
#> Total Size : N = 100
#> Accrual Period : t_a = 3.00
#> Follow-up : t_f = 10.00
#> Study Duration : tau = 13.00
#> Dropout Hazard : lambda_d = 0.050000
#> Threshold : PI = 0.5000
#>
#> Consistency Probabilities:
#> Method 1 (Region 1 vs Overall):
#> Log-HR based : 0.8656
#> Linear-HR based : 0.8971
#> Method 2 (All Regions Show Benefit):
#> HR < 1 : 0.9793The treatment effect at evaluation time \(t_{\text{eval}}\) is:
\[ \delta = S(t_{\text{eval}}) - S_0 = e^{-\lambda\,t_{\text{eval}}} - S_0 \]
where \(S_0\) is the historical control survival rate at \(t_{\text{eval}}\), supplied by the user.
The asymptotic variance of the Kaplan-Meier estimator \(\hat{S}_j(t_{\text{eval}})\) is derived from Greenwood’s formula:
\[ \mathrm{Var}\!\left[\hat{S}_j(t)\right] \approx \frac{e^{-2\lambda t}}{N_j} \int_0^{t} \frac{\lambda\,e^{(\lambda + \lambda_d)u}}{G_a(u)}\,du \;=:\; \frac{v_{KM}(t)}{N_j} \]
where:
\[ G_a(u) = \begin{cases} 1 & 0 \leq u \leq t_f \\ (\tau - u)/t_a & t_f < u \leq \tau \end{cases} \]
Closed-form solution when \(t_{\text{eval}} \leq t_f\) (\(G_a(u) = 1\) throughout):
\[ v_{KM}(t) = e^{-2\lambda t} \cdot \frac{\lambda}{\lambda + \lambda_d} \left(e^{(\lambda + \lambda_d)\,t} - 1\right) \]
For \(\lambda_d = 0\) this reduces
to the binomial variance \(S(t)(1 -
S(t))\). When \(t_{\text{eval}} >
t_f\), the integral is evaluated numerically via
stats::integrate().
Method 1:
\[ \text{RCP}_1 = \Phi\!\left(\frac{(1 - \pi)\,\delta} {\sqrt{(1 - \pi f_1)^2\,v_{KM}/N_1 + \{\pi(1 - f_1)\}^2\,v_{KM}/(N - N_1)}}\right) \]
Method 2:
\[ \text{RCP}_2 = \prod_{j=1}^{J} \Phi\!\left(\frac{\delta}{\sqrt{v_{KM}/N_j}}\right) \]
t_eval <- 8
S0 <- exp(-log(2) * t_eval / 5)
cat(sprintf("True S(%g) = %.4f, S0 = %.4f, delta = %.4f\n",
t_eval, exp(-lambda * t_eval), S0,
exp(-lambda * t_eval) - S0))
#> True S(8) = 0.5743, S0 = 0.3299, delta = 0.2445result_f <- rcp1armMilestoneSurvival(
lambda = lambda,
t_eval = t_eval,
S0 = S0,
Nj = c(20, 80),
t_a = t_a,
t_f = t_f,
lambda_dropout = NULL,
PI = 0.5,
approach = "formula"
)
print(result_f)
#>
#> Regional Consistency Probability for Single-Arm MRCT
#> Endpoint : Milestone Survival
#>
#> Approach : Closed-Form Solution (Greenwood)
#> True Hazard : lambda = 0.069315
#> Sample Size : Nj = (20, 80)
#> Total Size : N = 100
#> Accrual Period : t_a = 3.00
#> Follow-up : t_f = 10.00
#> Study Duration : tau = 13.00
#> Dropout Hazard : lambda_d = NA
#> Threshold : PI = 0.5000
#> Eval Time : t_eval = 8.00
#> Control Surv : S0 = 0.3299
#> True Surv : S_est = 0.5743
#>
#> Consistency Probabilities:
#> Method 1 (Region 1 vs Overall) : 0.8848
#> Method 2 (All Regions > S0) : 0.9865Since \(t_{\text{eval}} = 8 \leq t_f =
10\), the closed-form solution is used
(formula_type = "closed-form"). For \(t_{\text{eval}} > t_f\), numerical
integration is applied automatically.
result_s <- rcp1armMilestoneSurvival(
lambda = lambda,
t_eval = t_eval,
S0 = S0,
Nj = c(20, 80),
t_a = t_a,
t_f = t_f,
lambda_dropout = NULL,
PI = 0.5,
approach = "simulation",
nsim = 10000,
seed = 1
)
print(result_s)
#>
#> Regional Consistency Probability for Single-Arm MRCT
#> Endpoint : Milestone Survival
#>
#> Approach : Simulation-Based (nsim = 10000)
#> True Hazard : lambda = 0.069315
#> Sample Size : Nj = (20, 80)
#> Total Size : N = 100
#> Accrual Period : t_a = 3.00
#> Follow-up : t_f = 10.00
#> Study Duration : tau = 13.00
#> Dropout Hazard : lambda_d = NA
#> Threshold : PI = 0.5000
#> Eval Time : t_eval = 8.00
#> Control Surv : S0 = 0.3299
#> True Surv : S_est = 0.5743
#>
#> Consistency Probabilities:
#> Method 1 (Region 1 vs Overall) : 0.8873
#> Method 2 (All Regions > S0) : 0.9887The restricted mean survival time (RMST) up to truncation time \(\tau^*\) is:
\[ \mu(\tau^*) = \int_0^{\tau^*} S(t)\,dt = \frac{1 - e^{-\lambda\tau^*}}{\lambda} \]
The asymptotic variance of the regional RMST estimator is:
\[ \mathrm{Var}\!\left[\hat{\mu}_j(\tau^*)\right] \approx \frac{v_{\text{RMST}}(\tau^*)}{N_j} \]
where:
\[ v_{\text{RMST}}(\tau^*) = \int_0^{\tau^*} \frac{e^{\lambda_d t}\left(1 - e^{-\lambda(\tau^* - t)}\right)^2}{\lambda\,G_a(t)}\,dt \]
Closed-form solution when \(\tau^* \leq t_f\), using \(A(r) = (e^{r\tau^*} - 1)/r\) (and \(A(0) = \tau^*\)):
\[ v_{\text{RMST}}(\tau^*) = \frac{1}{\lambda}\Bigl[ A(\lambda_d) - 2\,e^{-\lambda\tau^*}\,A(\lambda_d + \lambda) + e^{-2\lambda\tau^*}\,A(\lambda_d + 2\lambda) \Bigr] \]
For \(\lambda_d = 0\) this simplifies to:
\[ v_{\text{RMST}}(\tau^*) = \tau^* - \frac{2(1 - e^{-\lambda\tau^*})}{\lambda} + \frac{1 - e^{-2\lambda\tau^*}}{2\lambda} \]
When \(\tau^* > t_f\), the
integral is split at \(t_f\) and
evaluated via stats::integrate().
Method 1:
\[ \text{RCP}_1 = \Phi\!\left(\frac{(1 - \pi)\,(\mu_{\text{est}} - \mu_0)} {\sqrt{(1 - \pi f_1)^2\,v/N_1 + \{\pi(1 - f_1)\}^2\,v/(N - N_1)}}\right) \]
Method 2:
\[ \text{RCP}_2 = \prod_{j=1}^{J} \Phi\!\left(\frac{\mu_{\text{est}} - \mu_0}{\sqrt{v/N_j}}\right) \]
tau_star <- 8
mu0 <- (1 - exp(-lambda0 * tau_star)) / lambda0
mu_est <- (1 - exp(-lambda * tau_star)) / lambda
cat(sprintf("True RMST = %.4f, mu0 = %.4f, delta = %.4f\n",
mu_est, mu0, mu_est - mu0))
#> True RMST = 6.1408, mu0 = 4.8339, delta = 1.3069result_f <- rcp1armRMST(
lambda = lambda,
tau_star = tau_star,
mu0 = mu0,
Nj = c(20, 80),
t_a = t_a,
t_f = t_f,
lambda_dropout = NULL,
PI = 0.5,
approach = "formula"
)
print(result_f)
#>
#> Regional Consistency Probability for Single-Arm MRCT
#> Endpoint : Restricted Mean Survival Time (RMST)
#>
#> Approach : Closed-Form Solution
#> True Hazard : lambda = 0.069315
#> Sample Size : Nj = (20, 80)
#> Total Size : N = 100
#> Accrual Period : t_a = 3.00
#> Follow-up : t_f = 10.00
#> Study Duration : tau = 13.00
#> Dropout Hazard : lambda_d = NA
#> Threshold : PI = 0.5000
#> Trunc. Time : tau* = 8.00
#> Control RMST : mu0 = 4.8339
#> True RMST : mu_est = 6.1408
#>
#> Consistency Probabilities:
#> Method 1 (Region 1 vs Overall) : 0.8693
#> Method 2 (All Regions > mu0) : 0.9808result_s <- rcp1armRMST(
lambda = lambda,
tau_star = tau_star,
mu0 = mu0,
Nj = c(20, 80),
t_a = t_a,
t_f = t_f,
lambda_dropout = NULL,
PI = 0.5,
approach = "simulation",
nsim = 10000,
seed = 1
)
print(result_s)
#>
#> Regional Consistency Probability for Single-Arm MRCT
#> Endpoint : Restricted Mean Survival Time (RMST)
#>
#> Approach : Simulation-Based (nsim = 10000)
#> True Hazard : lambda = 0.069315
#> Sample Size : Nj = (20, 80)
#> Total Size : N = 100
#> Accrual Period : t_a = 3.00
#> Follow-up : t_f = 10.00
#> Study Duration : tau = 13.00
#> Dropout Hazard : lambda_d = NA
#> Threshold : PI = 0.5000
#> Trunc. Time : tau* = 8.00
#> Control RMST : mu0 = 4.8339
#> True RMST : mu_est = 6.1408
#>
#> Consistency Probabilities:
#> Method 1 (Region 1 vs Overall) : 0.8790
#> Method 2 (All Regions > mu0) : 0.9809| Endpoint | Effect parameter | Benefit direction | Variance basis | Closed-form condition |
|---|---|---|---|---|
| Hazard Ratio | \(\log(HR) = \log(\lambda/\lambda_0)\) (Method 1, log-HR scale); \(1 - HR = 1 - \lambda/\lambda_0\) (Method 1, linear-HR scale) | \(\widehat{HR}_j < 1\) | Expected events via \(\phi\) (Wu 2015) | Always |
| Milestone Survival | \(\delta = e^{-\lambda t_{\text{eval}}} - S_0\) | \(\hat{S}_j(t) > S_0\) | Greenwood’s formula | \(t_{\text{eval}} \leq t_f\) |
| RMST | \(\delta = \mu(\tau^*) - \mu_0(\tau^*)\) | \(\hat{\mu}_j > \mu_0\) | Squared survival difference integral | \(\tau^* \leq t_f\) |
Hayashi N, Itoh Y (2017). A re-examination of Japanese sample size calculation for multi-regional clinical trial evaluating survival endpoint. Japanese Journal of Biometrics, 38(2): 79–92. https://doi.org/10.5691/jjb.38.79
Wu J (2015). Sample size calculation for the one-sample log-rank test. Pharmaceutical Statistics, 14(1): 26–33. https://doi.org/10.1002/pst.1654
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.