In this page, we present the code we used for our examples in a paper we submitted to International Journal of Epidemiology. We compared the results from four different sample size calculators for stepped-wedge cluster randomized trails (SW-CRT). They are:
A Shiny app to assist users to view and select the most suitable sample size and power calculation software for their SW-CRTs can be found at: https://douyang.shinyapps.io/swcrtcalculator/
The last part of this document has an example to demonstrate how to use this Shiny app
| Parameters | Value |
|---|---|
| Number of sequences | 3 |
| Number of periods | 4 |
| Number of clusters (equal allocation) | 6 |
| Number of patients per cluster-period | 10 |
| Mean difference | 0.39 |
| Standard deviation | 1 |
| Type of design | Closed cohort |
| Type of treatment effect | Step change (time-average effect) |
| Significance level | Two-sided, 5% |
| Correlation.structure | wpICC | CAC | IAC.or.wi.ICC |
|---|---|---|---|
| Exchangeable | 0.005 | 1.000 | 0.65 |
| Nested exchangeable | 0.010 | 0.223 | 0.65 |
| Proportional decay | 0.025 | 0.689 | 0.65 |
For this example, users need to specify three ICC estimates: alpha0 = wpICC, alpha1 = bpICC, and alpha2 = intra-individual ICC. Please note that the exchangeable correlation structure can be achieved by setting alpha0=alpha1
In swdpwr, the time effect is irrelevant for a continuous outcome. However, if no time effect is specified, the time effect term will be excluded from the model, which may lead to over-estimating the power. To be conservative and make it comparable to other packages, we should add a non-zero time effect to ensure the time effect term is included in the model. The treatment effect is meanresponse_end1 - meanresponse_end0 = 0.39. The calculations were done both with and without time effects.
# Load packages
library(swdpwr)
# Design matrix
dataset <-matrix(c(rep(c(0,1,1,1),2), rep(c(0,0,1,1),2),
rep(c(0,0,0,1),2)),6,4,byrow=TRUE)
# No time effects, meanresponse_start = meanresponse_end0
## exchangeable
### alpha0 = alpha1 = wp-ICC; alpha2 = wi-ICC
swdpower(K = 10, design = dataset, family = "gaussian",
model = "conditional", link = "identity", type = "cohort",
meanresponse_start = 0, meanresponse_end0 = 0,
meanresponse_end1 = 0.39, sigma2 = 1, typeIerror = 0.05,
alpha0 = 0.005, alpha1 = 0.005, alpha2 = 0.65)
## This cohort study has total sample size of 60
## Power for this scenario is 0.997 for the alternative hypothesis treatment effect beta = 0.39 (two-sided Type I error = 0.05 )
## block exchangeable
### alpha0 = wp-ICC, alpha1 = wp-ICC*CAC, alpha2 = wi-ICC
swdpower(K = 10, design = dataset, family = "gaussian",
model = "conditional", link = "identity",
type = "cohort", meanresponse_start = 0,
meanresponse_end0 = 0, meanresponse_end1 = 0.39,
sigma2 = 1, typeIerror = 0.05, alpha0 = 0.01,
alpha1 = 0.00223, alpha2 = 0.65)
## This cohort study has total sample size of 60
## Power for this scenario is 0.991 for the alternative hypothesis treatment effect beta = 0.39 (two-sided Type I error = 0.05 )
# Time effect = 0.1 (e.g.,meanresponse_end0-meanresponse_start = 0.1)
## exchangeable
### alpha0 = alpha1 = wp-ICC; alpha2 = wi-ICC
swdpower(K = 10, design = dataset, family = "gaussian",
model = "conditional", link = "identity", type = "cohort",
meanresponse_start = 0, meanresponse_end0 = 0.1,
meanresponse_end1 = 0.49, sigma2 = 1, typeIerror = 0.05,
alpha0 = 0.005, alpha1 = 0.005, alpha2 = 0.65)
## This cohort study has total sample size of 60
## Power for this scenario is 0.794 for the alternative hypothesis treatment effect beta = 0.39 (two-sided Type I error = 0.05 )
## block exchangeable
### alpha0 = wp-ICC, alpha1 = wp-ICC*CAC, alpha2 = wi-ICC
swdpower(K = 10, design = dataset, family = "gaussian",
model = "conditional", link = "identity",
type = "cohort", meanresponse_start = 0,
meanresponse_end0 = 0.1, meanresponse_end1 = 0.49,
sigma2 = 1, typeIerror = 0.05, alpha0 = 0.01,
alpha1 = 0.00223, alpha2 = 0.65)
## This cohort study has total sample size of 60
## Power for this scenario is 0.724 for the alternative hypothesis treatment effect beta = 0.39 (two-sided Type I error = 0.05 )
%include "C:\Users\Derek Ouyang\Desktop\CRTFASTGEEPWR.v1.01.sas";
*\replace the path with your local path to the SAS macro;
For this example, users need to specify two ICC estimates: alpha1 = wpICC and alpha2 = bpICC. In case of exponential decay, users need to specify alpha0 = wpICC and r0 = decaying parameter. Please note that the exchangeable correlation structure can be achieved by setting alpha1=alpha2
*\ the intervention effect model type: 1- average intervention effects model, 2- incremental intervention effects model;
*\the period effect model type: 1- categorical time period model, 2- continuous time period model;
*\ No Time effect, beta_period_effects is constant;
*\ exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({2,2,2}), corr_type = 3,
/* alpha1 = alpha2 = wp-ICC; alpha3 = wi-ICC; */
alpha1 = 0.005, alpha2 = 0.005 , alpha3=0.65,
df_choice=2, intervention_effect_type=1 , delta = 0.39,
period_effect_type= 1 , beta_period_effects =%str({1,1,1,1}), dist = "normal",
phi=1,
CP_size_matrix = %str({10 10 10 10,
10 10 10 10,
10 10 10 10}),
DesignPattern = %str({0 1 1 1 ,
0 0 1 1 ,
0 0 0 1 }));
*\ block exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({2,2,2}), corr_type = 3,
/* alpha1 = bp-ICC, alpha2 = wp-ICC; alpha3 = wi-ICC; */
alpha1 = 0.01, alpha2 = 0.00223 , alpha3=0.65,
df_choice=2, intervention_effect_type=1,
delta = 0.39, period_effect_type= 1,
beta_period_effects =%str({1,1,1,1}), dist = "normal",
phi=1,
CP_size_matrix = %str({10 10 10 10,
10 10 10 10,
10 10 10 10}),
DesignPattern = %str({0 1 1 1 ,
0 0 1 1 ,
0 0 0 1 }));
*\ proportional decay;
%CRTFASTGEEPWR(alpha=0.05, m =%str({2,2,2}), corr_type = 4,
/* alpha0 = wp-ICC; r0 = exponential decay rate(i.e., CAC or IAC); */
alpha0 = 0.025, r0=0.65, df_choice=2,
intervention_effect_type=1, delta = 0.39,
period_effect_type= 1,
beta_period_effects =%str({1,1,1,1}), dist = "normal", phi=1,
CP_size_matrix = %str({10 10 10 10,
10 10 10 10,
10 10 10 10}),
DesignPattern = %str({0 1 1 1 ,
0 0 1 1 ,
0 0 0 1 }))
*\ Time effect = 0.1, period effects equally spaced, the last period - first period = 0.1;
*\ exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({2,2,2}), corr_type = 3,
/* alpha1 = alpha2 = wp-ICC; alpha3 = wi-ICC; */
alpha1 = 0.005, alpha2 = 0.005 , alpha3=0.65,
df_choice=2, intervention_effect_type=1 , delta = 0.39,
period_effect_type= 1 , beta_period_effects =%str({1.025,1.05,1.075,1.1}), dist = "normal",
phi=1,
CP_size_matrix = %str({10 10 10 10,
10 10 10 10,
10 10 10 10}),
DesignPattern = %str({0 1 1 1 ,
0 0 1 1 ,
0 0 0 1 }));
*\ block exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({2,2,2}), corr_type = 3,
/* alpha1 = bp-ICC, alpha2 = wp-ICC; alpha3 = wi-ICC; */
alpha1 = 0.01, alpha2 = 0.00223 , alpha3=0.65,
df_choice=2, intervention_effect_type=1,
delta = 0.39, period_effect_type= 1,
beta_period_effects =%str({1.025,1.05,1.075,1.1}), dist = "normal",
phi=1,
CP_size_matrix = %str({10 10 10 10,
10 10 10 10,
10 10 10 10}),
DesignPattern = %str({0 1 1 1 ,
0 0 1 1 ,
0 0 0 1 }));
*\ proportional decay;
%CRTFASTGEEPWR(alpha=0.05, m =%str({2,2,2}), corr_type = 4,
/* alpha0 = wp-ICC; r0 = exponential decay rate(i.e., CAC or IAC); */
alpha0 = 0.025, r0=0.65, df_choice=2,
intervention_effect_type=1, delta = 0.39,
period_effect_type= 1,
beta_period_effects =%str({1.025,1.05,1.075,1.1}), dist = "normal", phi=1,
CP_size_matrix = %str({10 10 10 10,
10 10 10 10,
10 10 10 10}),
DesignPattern = %str({0 1 1 1 ,
0 0 1 1 ,
0 0 0 1 }))
| Parameters | Value |
|---|---|
| Number of sequences | 4 |
| Number of periods | 5 |
| Number of clusters | 22 (6, 6, 6, 4 for each sequence) |
| Number of patients per cluster-period | 305 |
| Baseline rate | 0.07 |
| Mean (absolute) difference (treatment effect) | -0.014 |
| Type of design | cross-sectional |
| Type of treatment effect | Step change (time-average effect) |
| Significance level | Two-sided, 5% |
| Correlation.structure | wpICC | CAC |
|---|---|---|
| Exchangeable | 0.007 | 1.0 |
| Nested exchangeable | 0.007 | 0.5 |
| Exponential decay | 0.007 | 0.7 |
#Design matrix
dataset2 <- matrix(c(rep(c(0,1,1,1,1),6),rep(c(0,0,1,1,1),6),
rep(c(0,0,0,1,1),6),rep(c(0,0,0,0,1),4)),
22,5,byrow=TRUE)
## time effect = 0, therefore, meanresponse_start = meanresponse_end0
## the effect size is meanresponse_end1 - meanresponse_end0 = -0.014
### exchangeable
### alpha0 = alpha1 = wp-ICC
swdpower(K = 305, design = dataset2, family = "binomial",
model = "marginal", link = "identity",
type = "cross-sectional", meanresponse_start = 0.076,
meanresponse_end0 = 0.076, meanresponse_end1 = 0.062,
typeIerror = 0.05, alpha0 = 0.007, alpha1 = 0.007)
## This cross-sectional study has total sample size of 33550
## Power for this scenario is 0.995 for the alternative hypothesis treatment effect beta = -0.014 (two-sided Type I error = 0.05 )
## nested exchangeable
### alpha0 = wp-ICC; alpha1 = wp-ICC*CAC
swdpower(K = 305, design = dataset2, family = "binomial",
model = "marginal", link = "identity",
type = "cross-sectional", meanresponse_start = 0.076,
meanresponse_end0 = 0.076, meanresponse_end1 = 0.062,
typeIerror = 0.05, alpha0 = 0.007, alpha1 = 0.0035)
## This cross-sectional study has total sample size of 33550
## Power for this scenario is 0.904 for the alternative hypothesis treatment effect beta = -0.014 (two-sided Type I error = 0.05 )
## time effect = -0.007, therefore, meanresponse_end0 - meanresponse_start = -0.007
## the effect size is meanresponse_end1 - meanresponse_end0 = -0.014
### exchangeable
### alpha0 = alpha1 = wp-ICC
swdpower(K = 305, design = dataset2, family = "binomial",
model = "marginal", link = "identity",
type = "cross-sectional", meanresponse_start = 0.076,
meanresponse_end0 = 0.069 , meanresponse_end1 = 0.055 ,
typeIerror = 0.05, alpha0 = 0.007, alpha1 = 0.007)
## This cross-sectional study has total sample size of 33550
## Power for this scenario is 0.819 for the alternative hypothesis treatment effect beta = -0.014 (two-sided Type I error = 0.05 )
## nested exchangeable
swdpower(K = 305, design = dataset2, family = "binomial",
model = "marginal", link = "identity",
type = "cross-sectional", meanresponse_start = 0.076,
meanresponse_end0 = 0.069, meanresponse_end1 = 0.055,
typeIerror = 0.05, alpha0 = 0.007, alpha1 = 0.0035)
## This cross-sectional study has total sample size of 33550
## Power for this scenario is 0.56 for the alternative hypothesis treatment effect beta = -0.014 (two-sided Type I error = 0.05 )
# time effect = -0.014, therefore, meanresponse_end0 - meanresponse_start = -0.014
## the effect size is meanresponse_end1 - meanresponse_end0 = -0.014
### exchangeable
### alpha0 = alpha1 = wp-ICC
swdpower(K = 305, design = dataset2, family = "binomial",
model = "marginal", link = "identity",
type = "cross-sectional", meanresponse_start = 0.076,
meanresponse_end0 = 0.062, meanresponse_end1 = 0.048,
typeIerror = 0.05, alpha0 = 0.007, alpha1 = 0.007)
## This cross-sectional study has total sample size of 33550
## Power for this scenario is 0.837 for the alternative hypothesis treatment effect beta = -0.014 (two-sided Type I error = 0.05 )
## nested exchangeable
### alpha0 = wp-ICC; alpha1 = wp-ICC*CAC
swdpower(K = 305, design = dataset2, family = "binomial",
model = "marginal", link = "identity",
type = "cross-sectional", meanresponse_start = 0.076,
meanresponse_end0 = 0.062, meanresponse_end1 = 0.048,
typeIerror = 0.05, alpha0 = 0.007, alpha1 = 0.0035)
## This cross-sectional study has total sample size of 33550
## Power for this scenario is 0.58 for the alternative hypothesis treatment effect beta = -0.014 (two-sided Type I error = 0.05 )
For this example, users need to specify two ICC estimates: icc = wpICC and CAC. For exchangeable correlation structure, the CAC = 1
library(swCRTdesign)
# exchangeable
swPwr(swDsn(c(6,6,6,4)), distn="binomial",
n=305, mu0=0.076, mu1=0.062, icc=0.007, cac = 1,
alpha=0.05, retDATA=FALSE)
## Warning in swPwr(swDsn(c(6, 6, 6, 4)), distn = "binomial", n = 305, mu0 =
## 0.076, : The order of variance component arguments has changed for swPwr (in
## version 2.2.0, it was tau, eta, rho, sigma); please modify existing code if
## necessary.
## [1] 0.8030252
# nested exchangeable
swPwr(swDsn(c(6,6,6,4)), distn="binomial",
n=305, mu0=0.076, mu1=0.062, icc=0.007, cac = 0.5,
alpha=0.05, retDATA=FALSE)
## Warning in swPwr(swDsn(c(6, 6, 6, 4)), distn = "binomial", n = 305, mu0 =
## 0.076, : The order of variance component arguments has changed for swPwr (in
## version 2.2.0, it was tau, eta, rho, sigma); please modify existing code if
## necessary.
## [1] 0.5402172
%include "C:\Users\Derek Ouyang\Desktop\CRTFASTGEEPWR.v1.01.sas";
*\replace the path with your local path to the SAS macro;
*\no time effect. The beta_period_effects are constant;
*\exchangeable correlation structure;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 1,
/* alpha1 = alpha2 = wp-ICC*/
alpha1 = 0.007, alpha2 = 0.007 ,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.076,0.076,0.076,0.076,0.076}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\nested exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 1,
/* alpha1 = wp-ICC; alpha2 = bp-ICC*/
alpha1 = 0.007, alpha2 = 0.0035 ,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.076,0.076,0.076,0.076,0.076}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\exponential decay;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 2,
/* alpha0 = wp-ICC; r0 = decay parameter (e.g., CAC)*/
alpha0 = 0.007, r0 = 0.7,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.076,0.076,0.076,0.076,0.076}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\time effect = -0.007. The beta_period_effects are equally spaced, the last - the first = -0.007;
*\exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 1,
/* alpha1 = alpha2 = wp-ICC*/
alpha1 = 0.007, alpha2 = 0.007 ,
intervention_effect_type=1, delta = -0.014,
df_choice=2, period_effect_type= 1,
beta_period_effects =%str({0.076,0.07425,0.0725,0.07075,0.069}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\nested exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 1,
/* alpha1 = wp-ICC; alpha2 = bp-ICC*/
alpha1 = 0.007, alpha2 = 0.0035 ,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.076,0.07425,0.0725,0.07075, 0.069}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\ED;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 2,
/* alpha0 = wp-ICC; r0 = decay parameter (e.g., CAC)*/
alpha0 = 0.007, r0 = 0.7 ,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.076,0.07425,0.0725,0.07075,0.069}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\time effect = 0.014. The beta_period_effects are equally spaced, the last - the first = -0.014;
*\exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 1,
/* alpha1 = alpha2 = wp-ICC*/
alpha1 = 0.007, alpha2 = 0.007,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.0760,0.0725,0.0690,0.0655,0.0620}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\nested exchangeable;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 1,
/* alpha1 = wp-ICC; alpha2 = bp-ICC*/
alpha1 = 0.007, alpha2 = 0.0035,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.0760,0.0725,0.0690,0.0655,0.0620}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
*\ED;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 2,
/* alpha0 = wp-ICC; r0 = decay parameter (e.g., CAC)*/
alpha0 = 0.007, r0 = 0.7,
intervention_effect_type=1, delta = -0.014, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({0.0760,0.0725,0.0690,0.0655,0.0620}),
DIST = "binary", link = "identity", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
Let us consider the EPT trial again. For simplicity, we assume there are no time effects while keeping other parameters the same as in Section 2. The effect size should be entered on the log scale and all other parameters should be entered on the proportions scale. Then the power can be calculated as follows:
#Design matrix
dataset2 <- matrix(c(rep(c(0,1,1,1,1),6),rep(c(0,0,1,1,1),6),
rep(c(0,0,0,1,1),6),rep(c(0,0,0,0,1),4)),
22,5,byrow=TRUE)
OR <- (0.062/(1-0.062))/(0.076/(1-0.076))
swdpower(K = 305, design = dataset2, family = "binomial",
model = "marginal", link = "logit",
type = "cross-sectional", meanresponse_start = 0.076,
meanresponse_end0 = 0.076, effectsize_beta = log(OR),
typeIerror = 0.05, alpha0 = 0.007, alpha1 = 0.007)
%include "C:\Users\Derek Ouyang\Desktop\CRTFASTGEEPWR.v1.01.sas";
*\replace the path with your local path to the SAS macro;
*\ the intervention effect model type: 1- average intervention effects model, 2- incremental intervention effects model;
*\the period effect model type: 1- categorical time period model, 2- continuous time period model;
*\Constant period effect on logit scale: log(0.076/(1-0.076))= -2.497979;
%CRTFASTGEEPWR(alpha=0.05, m =%str({6,6,6,4}), corr_type = 1,
/* alpha1 = alpha2 = wp-ICC*/
alpha1 = 0.007, alpha2 = 0.007,
/* delta = log(OR)*/
intervention_effect_type=1, delta = -0.2186368, df_choice=2,
period_effect_type= 1,
beta_period_effects =%str({-2.497979, -2.497979, -2.497979,
-2.497979, -2.497979}),
DIST = "binary", phi=1,
CP_size_matrix = %str({305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305,
305 305 305 305 305}),
DesignPattern = %str({0 1 1 1 1,
0 0 1 1 1,
0 0 0 1 1,
0 0 0 0 1}));
In order to help researchers to select the best SW-CRT calculators that may fit their SW trials, we developed a Shiny app to assist users to select the best calculators that can be used for power and sample size calculation. This calculation is available free at: https://douyang.shinyapps.io/swcrtcalculator/
A screenshot of the Shiny app is as follow. On the left column, there are common design features that people may consider when designing a SW-CRT. The users can select the feature(s) they want, and on the right panel, all calculators that may support the selected features may appear.
Suppose I am interested in finding calculators that I can use for “GoG” trial. Rememebr, GoG trial has following features:
I want to find the a calculator on either SAS or R which can be used to perform power calculation for my trial. The follow screenshot shows how I click the features we want in the left panel and the calculator(s) that meets all the criteria. In our case, the only available calculator is CRTFASTGEEPWR in SAS
Note: Multiple selection under Software platform return the calculators operating on any of the selected platforms. Multiple selection under other sections returns the calculators that meet ALL selected features. Therefore, only select the features you must need to allow for maximum possibilities.