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.
In the psrwe, PS-integrated survival analyses in randomized controlled trials (RCTs) with an augmented control arm (Chen, et al., to be submitted) are also implemented in three functions:
psrwe_survkm() for treatment effect test (Com-Nougue,
et al., 1993).psrwe_survlrk() for log-rank test (Klein and
Moeschberger, 2003; Peto and Peto, 1972).psrwe_survrmst() for restricted mean survival time
(RMST) test (Royston and Parmar, 2013; Uno, et al., 2014).These tests are non-parametric approaches for comparing two treatments with time-to-event endpoints. Therefore, these tests are only implemented for RCTs with augmenting control arm.
Similar to the approaches: PSPP (Wang, et al., 2019), PSCL (Wang, et
al., 2020), and PSKM (Chen, et al., 2022), the PS-integrated study
design functions, psrwe_est() and
psrwe_borrow(), below estimate the PS model, set borrowing
parameters, and determine discounting parameters for borrowing
information for a two-arm RCT with an augmented control arm from
RWD.
data(ex_dta_rct)
dta_ps_rct <- psrwe_est(ex_dta_rct,
v_covs = paste("V", 1:7, sep = ""),
v_grp = "Group", cur_grp_level = "current",
v_arm = "Arm", ctl_arm_level = "control",
ps_method = "logistic", nstrata = 5,
stra_ctl_only = FALSE)
ps_bor_rct <- psrwe_borrow(dta_ps_rct, total_borrow = 30)Similar to the single arm study example (in
psrwe/demo/sec_4_4_ex.r and
demo("sec_4_5_ex", package = "psrwe")), the code below
evaluates a two-arm RCT. The results show the treatment effect which is
the survival difference between the two arms at 1 year (365 days).
rst_km_rct <- psrwe_survkm(ps_bor_rct,
pred_tp = 365,
v_time = "Y_Surv",
v_event = "Status")
rst_km_rct## With a total of 30 subject borrowed from the RWD, based on
## the survival probability at time 365, the treatment effect
## is 0.144 with standard error 0.054.
The estimated PSKM curves with confidence intervals are shown below.
## Warning: Removed 576 rows containing missing values or values outside the scale range
## (`geom_step()`).
## Removed 576 rows containing missing values or values outside the scale range
## (`geom_step()`).
## Removed 576 rows containing missing values or values outside the scale range
## (`geom_step()`).
The inference is based on the treatment effect \(S_{trt}(\tau) - S_{ctl}(\tau)\) at \(\tau = 365\) days where \(S_{trt}\) and \(S_{ctl}\) are the survival probabilities of the treatment and control arms, respectively. In other words, the example tests \[ H_0: S_{trt}(\tau) - S_{ctl}(\tau) \leq 0 \quad \mbox{vs.} \quad H_a: S_{trt}(\tau) - S_{ctl}(\tau) > 0 . \] The outcome analysis can be summarized below. Note that this is a one-sided test.
## - Method: ps_km, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: theta_trt-theta_ctl <= 0.000 vs. Ha: theta_trt-theta_ctl > 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Overall 0.144 0.0541 365 0.038 0.25 0.00388
The details of the estimates for each arm can be printed via the
print() function with the option
show_rct = TRUE.
## - Method: ps_km, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: theta_trt-theta_ctl <= 0.000 vs. Ha: theta_trt-theta_ctl > 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Overall 0.144 0.0541 365 0.038 0.25 0.00388
## - RCT Treatment Arm:
## Stratum Mean StdErr T Lower Upper
## Overall 0.822 0.0384 365 0.732 0.885
## - RCT Control Arm:
## Stratum Mean StdErr T Lower Upper
## Overall 0.674 0.0376 365 0.594 0.741
As the survival package, the results of other time
points can be also predicted via the summary() with the
option pred_tps.
## - Method: ps_km, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 180 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: theta_trt-theta_ctl <= 0.000 vs. Ha: theta_trt-theta_ctl > 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Overall 0.0678 0.0416 180 -0.0136 0.149 0.05136
## Overall 0.1441 0.0541 365 0.0380 0.250 0.00388
The log-rank test is another way to compare two treatments of
time-to-event endpoint. Similar to the PSKM for the two-arm test above,
the function psrwe_survlrk() computes the statistic for
each distinctive time point beased on the observed data, then it returns
all necessary results for the downstream analyses, such as tests and
confidence intervals.
## With a total of 30 subject borrowed from the RWD, based on
## the survival probability at time 365, the log-rank
## statistic is -1.760 with standard error 0.744.
The inference is based on the log-rank method to test whether two survival distributions are different from each other. The example tests \[ H_0: S_{trt}(t) = S_{ctl}(t) \quad \mbox{vs.} \quad H_a: S_{trt}(t) \neq S_{ctl}(t) 0 \] for all \(t \leq \tau\) where \(\tau = 365\) days. The outcome analysis can be summarized below.
## - Method: ps_lrk, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: sum[d_trt-E(d_trt)] == 0.000 vs. Ha: sum[d_trt-E(d_trt)] != 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Overall -1.76 0.744 365 -3.22 -0.301 0.0181
The details of the estimates for each arm can be printed via the
print() function with the option
show_rct = TRUE.
## - Method: ps_lrk, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: sum[d_trt-E(d_trt)] == 0.000 vs. Ha: sum[d_trt-E(d_trt)] != 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Stratum 1 -2.820 1.736 365 -6.22 0.583 0.1044
## Stratum 2 -0.308 1.704 365 -3.65 3.033 0.8567
## Stratum 3 -1.829 1.703 365 -5.17 1.508 0.2826
## Stratum 4 -4.052 1.646 365 -7.28 -0.825 0.0138
## Stratum 5 0.208 1.525 365 -2.78 3.198 0.8916
## Overall -1.760 0.744 365 -3.22 -0.301 0.0181
As the survival package, the results of other time
points can be also predicted via the summary() with the
option pred_tps.
## - Method: ps_lrk, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 180 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: sum[d_trt-E(d_trt)] == 0.000 vs. Ha: sum[d_trt-E(d_trt)] != 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Overall -0.801 0.534 180 -1.85 0.247 0.1341
## Overall -1.760 0.744 365 -3.22 -0.301 0.0181
The restricted means survival time (RMST) tests whether areas under
two survival distributions (AUC) are different from each other. Similar
to the log-rank test above, the function psrwe_survrmst()
computes the statistic for each distinctive time point beased on the
observed data, then it returns all necessary results for the downstream
analyses, such as tests and confidence intervals.
rst_rmst <- psrwe_survrmst(ps_bor_rct,
pred_tp = 365,
v_time = "Y_Surv",
v_event = "Status")
rst_rmst## With a total of 30 subject borrowed from the RWD, based on
## the survival probability at time 365, the RMST statistic is
## 26.111 with standard error 13.863.
The inference is based on comparing whether AUCs are different from each other. The example tests \[ H_0: \int_0^{\tau} S_{trt}(t) dt = \int_0^{\tau} S_{ctl}(t) dt \quad \mbox{vs.} \quad H_a: \int_0^{\tau} S_{trt}(t) dt \neq \int_0^{\tau} S_{ctl}(t) dt \] where \(\tau = 365\) days. The outcome analysis can be summarized below. Note that this is a two-sided test.
## - Method: ps_rmst, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: auc(S_trt)-auc(S_ctl) == 0.000 vs. Ha: auc(S_trt)-auc(S_ctl) != 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Overall 26.1 13.9 365 -1.06 53.3 0.0596
The details of the estimates for each arm can be printed via the
print() function with the option
show_rct = TRUE.
## - Method: ps_rmst, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: auc(S_trt)-auc(S_ctl) == 0.000 vs. Ha: auc(S_trt)-auc(S_ctl) != 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Stratum 1 34.40 29.5 365 -23.43 92.2 0.2437
## Stratum 2 -11.22 35.9 365 -81.51 59.1 0.7544
## Stratum 3 38.38 24.9 365 -10.38 87.1 0.1229
## Stratum 4 63.40 29.8 365 5.00 121.8 0.0334
## Stratum 5 5.59 33.8 365 -60.60 71.8 0.8684
## Overall 26.11 13.9 365 -1.06 53.3 0.0596
As the survival package, the results of other time
points can be also predicted via the summary() with the
option pred_tps.
## - Method: ps_rmst, Outcome Type: tte, Study Type: RCT
## - Predict Time Point: 180 365
## - StdErr Method: naive
## - Interval Method: wald, Level: 0.95, Type: plain
## - Test Method: p_value, Method pval: wald
## H0: auc(S_trt)-auc(S_ctl) == 0.000 vs. Ha: auc(S_trt)-auc(S_ctl) != 0.000
## - Analysis Results:
## Stratum Mean StdErr T Lower Upper p.value
## Overall 5.79 5.66 180 -5.30 16.9 0.3063
## Overall 26.11 13.86 365 -1.06 53.3 0.0596
The scripts in “psrwe/demo/sec_4_5_ex.r”,
“psrwe/demo/sec_4_6_ex.r”, and
“psrwe/demo/sec_4_7_ex.r” source files have the full
examples for the PS-integrated survival analyses, which can be run via
the demo("sec_4_5_ex", package = "psrwe"),
demo("sec_4_6_ex", package = "psrwe"), and
demo("sec_4_7_ex", package = "psrwe"), respectively.
Two Jackknife standard errors are also demonstrated for each test
method. Note that Jackknife standard errors may take a while to finish.
Chen, W.-C., Lu, N., Wang, C., Li, H., Song, C., Tiwari, R., Xu, Y., and Yue, L.Q. (to be submitted). Propensity Score-Integrated Statistical Tests for Survival Analysis: Leveraging External Evidence for Augmenting the Control Arm of a Randomized Controlled Trial.
Chen, W.-C., Lu, N., Wang, C., Li, H., Song, C., Tiwari, R., Xu, Y., and Yue, L.Q. (2022). Propensity Score-Integrated Approach to Survival Analysis: Leveraging External Evidence in Single-Arm Studies. Journal of Biopharmaceutical Statistics, 32(3), 400-413.
Com-Nougue, C., Rodary, C. and Patte, C. (1993). How to establish equivalence when data are censored: A randomized trial of treatments for B non-Hodgkin lymphoma. Statist. Med., Volume 12, pp. 1353-1364.
Klein, J. and Moeschberger, M. (2003). Survival Analysis: Techniques for Censored and Truncated Data. 2nd ed. New York: Springer.
Peto, R. and Peto, J. (1972). Asymptotically Efficient Rank Invariant Test Procedures. Journal of the Royal Statistical Society, Series A, 135(2), 185-207.
Royston, P. and Parmar, M. K. (2013). Restricted mean survival time: an alternative to the hazard ratio for the design and analysis of randomized trials with a time-to-event outcome. BMC Med Res Methodol, 13(152).
Uno, H., et al., (2014). Moving beyond the hazard ratio in quantifying the between-group difference in survival analysis. Journal of clinical oncology, Volume 32, 2380-2385.
Wang, C., Li, H., Chen, W. C., Lu, N., Tiwari, R., Xu, Y., and Yue, L.Q. (2019). Propensity score-integrated power prior approach for incorporating real-world evidence in single-arm clinical studies. Journal of Biopharmaceutical Statistics, 29(5), 731-748.
Wang, C., Lu, N., Chen, W. C., Li, H., Tiwari, R., Xu, Y., and Yue, L.Q. (2020). Propensity score-integrated composite likelihood approach for incorporating real-world evidence in single-arm clinical studies. Journal of Biopharmaceutical Statistics, 30(3), 495-507.
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.