Introduction

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

Section 1: Code for power calculation for the Girls on the Go trial

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

Calculation using R package:swdpwr

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

  • Special caution to time effects in swdpwr

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

# 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

# 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 )

Calculation using SAS: CRTFASTGEEPWR

%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

No time effect

*\ 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

*\ 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 }))

Section 2: Code for power calculation for the Community Expedited Partner Treatment (EPT) trial

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

Calculation using R package: swdpwr

#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)

No time effect

## 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 )

Small time effect

## 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 )

Larger time effect

# 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 )

Calculation using R package: swCRTdesign

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

Calculation using SAS: CRTFASTGEEPWR

%include "C:\Users\Derek Ouyang\Desktop\CRTFASTGEEPWR.v1.01.sas"; 
*\replace the path with your local path to the SAS macro;

No time effect

*\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}));

Samll time effect

*\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}));

Larger time effect

*\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}));

Section 4: SW-CRT power and sample size calculator finder

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.

Example: how to use the Shiny app

Suppose I am interested in finding calculators that I can use for “GoG” trial. Rememebr, GoG trial has following features:

  • Closed cohort design
  • Continuous outcome
  • Proportional correlation structure (most conservative choice)
  • Using GEE
  • Support incomplete design

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.