Welcome to PyPowerUp’s documentation!

https://img.shields.io/pypi/v/pypowerup.svg https://img.shields.io/travis/sophiamyang/pypowerup.svg Documentation Status

Authors

Sophia Man Yang, Nianbo Dong, Rebecca Maynard

PyPowerUp

PyPowerUp is the Python implementation for the research article “PowerUp!: A Tool for Calculating Minimum Detectable Effect Sizes and Minimum Required Sample Sizes for Experimental and Quasi-experimental Design Studies (Dong & Maynard, 2013)”. It is a power analysis tool for 21 experimental and quasi-experimental designs.

Given study design, PyPowerUp computes minimum detectable effect sizes effect_size, power power, and minimum required samples sizes sample size.

To install PyPowerUp, run this command in your terminal:

$ pip install pypowerup

To use the functions:

from pypowerup import effect_size, power, sample_size

Individual Random Assignment Designs

Simple Individual Random Assignment (IRA)

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
simple 1 individual 1 NA
[1]:
from pypowerup import effect_size, power, sample_size
[2]:
# effect size, i.e., minimum detectable effect sizes (MDES):
effect_size(design='ira', n=787, power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[2]:
0.19997988869985736
[3]:
# sample size, i.e., minimum required samples sizes (MRSS):
sample_size(design='ira', es=0.2, power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[3]:
787.0
[4]:
# power
power(design='ira', es=0.2, n=787, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[4]:
0.8000799952735076

Parameters for IRA

Parameters effect_size sample_size power
design
es  
n  
power  
alpha
two_tailed
p
r21
g

Output validation with statsmodels

Here we used statsmodels with the same parameters to validate our model results. Note nobs1 in statsmodels is the sample size for treatment group, which is half of the total sample size output from our model. Thus, we define nobs1=787/2=393.5 in the models beflow.

[5]:
from statsmodels.stats.power import TTestIndPower
[6]:
# effect size
analysis = TTestIndPower()
analysis.solve_power(power=0.8, nobs1=393.5, ratio=1, alpha=0.05, alternative='two-sided')
[6]:
0.19997768751017836
[7]:
# sample size (statsmodels output treatment sample size only, which is the half of our computed total sample size)
analysis.solve_power(0.2, power=0.8, nobs1=None, ratio=1, alpha=0.05,alternative='two-sided')
[7]:
393.4056989990335
[8]:
# power
analysis.solve_power(0.2, nobs1=393.5, ratio=1.0, alpha=0.05, alternative='two-sided')
[8]:
0.8000942129794306

With the same parameters, we get the same results as the statsmodels. However, statsmodels does not do power analysis for more complicated designs, which we will cover next.

Blocked (Stratified) Individual Random Assignment (BIRA)

BIRA2_1c

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 2 individual 1 constant
[1]:
from pypowerup import effect_size, power, sample_size
[2]:
# effect size, i.e., minimum detectable effect sizes (MDES):
effect_size(design = "bira2_1c", n=80, J=14, power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[2]:
0.1675746241777643
[3]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units.
sample_size(design = "bira2_1c", n=80, es=0.168, power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[3]:
14.0
[4]:
# power
power(design = "bira2_1c", n=80, J=14, es=0.168, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[4]:
0.801986386400488

Parameters for BIRA2_1c:

Parameters effect_size sample_size power
design
es  
n
J  
power  
alpha
two_tailed
p
r21
g

BIRA2_1f

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 2 individual 1 fixed
[5]:
# effect size, i.e., minimum detectable effect sizes (MDES):
effect_size(design = "bira2_1f", n=10, J=200, power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[5]:
0.1253671054395026
[6]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units.
sample_size(design = "bira2_1f", n=10, es=0.125, power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[6]:
201.0
[7]:
# power
power(design = "bira2_1f", n=10, J=200, es=0.125, alpha=0.05, two_tailed=True, p=0.5, r21=0, g=0)
[7]:
0.7976961337604935

Parameters for BIRA2_1f

Parameters effect_size sample_size power
design
es  
n
J  
power  
alpha
two_tailed
p
r21
g

BIRA2_1r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 2 individual 1 random
[8]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "bira2_1r", n=80, J=480, rho2=0.35, omega2=0.1, power=0.8, alpha=0.05,
            two_tailed=True, p=0.5, r21=0, r2t2=0, g=0)
[8]:
0.033290496240165834
[9]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units
sample_size(design = "bira2_1r", es=0.033290496240165834, n=80, rho2=0.35, omega2=0.1, power=0.8, alpha=0.05,
            two_tailed=True, p=0.5, r21=0, r2t2=0, g=0)
[9]:
480.0
[10]:
# power
power(design = "bira2_1r", es=0.033290496240165834, n=80, J=480, rho2=0.35, omega2=0.1, alpha=0.05,
      two_tailed=True, p=0.5, r21=0, r2t2=0, g=0)
[10]:
0.800001211704756

Parameters for BIRA2_1r

Parameters effect_size sample_size power
design
es  
n
J  
power  
alpha
two_tailed
p
r21
g
rho2
omega2
r2t2

BIRA3_1r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 3 individual 1 random
[11]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "bira3_1r", n=80, J=10, K=100, rho3=0.2, rho2=0.15, omega3=0.1, omega2=0.1,
            power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, r2t2=0, r2t3=0, g=0)

[11]:
0.04451381756409839
[12]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units
sample_size(design = "bira3_1r", es=0.04451381756409839, n=80, J=10, rho3=0.2, rho2=0.15, omega3=0.1, omega2=0.1,
            power=0.8, alpha=0.05, two_tailed=True, p=0.5, r21=0, r2t2=0, r2t3=0, g=0)
[12]:
100.0
[13]:
# power
power(design = "bira3_1r", es=0.04451381756409839, n=80, J=10, K=100, rho3=0.2, rho2=0.15, omega3=0.1, omega2=0.1,
            alpha=0.05, two_tailed=True, p=0.5, r21=0, r2t2=0, r2t3=0, g=0)
[13]:
0.8000026614774113

Parameters for BIRA3_1r

Parameters effect_size sample_size power
design
es  
n
J
K  
power  
alpha
two_tailed
p
r21
g
rho2
omega2
r2t2
rho3
omega3
r2t3

BIRA4_1r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 4 individual 1 random
[14]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "bira4_1r", n=10, J=4, K=4, L=20, rho4=0.05, rho3=0.15, rho2=0.15,
            omega4=0.5, omega3=0.5, omega2=0.5, r21=0.5, r2t2=0.5, r2t3=0.5, r2t4=0.5, g=1,
            power=0.8, alpha=0.05, two_tailed=True
           )
[14]:
0.1191537036343213
[15]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 4 units
sample_size(design = "bira4_1r", es=0.1191537036343213, n=10, J=4, K=4, rho4=0.05, rho3=0.15, rho2=0.15,
            omega4=0.5, omega3=0.5, omega2=0.5, r21=0.5, r2t2=0.5, r2t3=0.5, r2t4=0.5, g=1,
            power=0.8, alpha=0.05, two_tailed=True)
[15]:
20.0
[16]:
# power
power(design = "bira4_1r", es=0.1191537036343213, n=10, J=4, K=4, L=20, rho4=0.05, rho3=0.15, rho2=0.15,
            omega4=0.5, omega3=0.5, omega2=0.5, r21=0.5, r2t2=0.5, r2t3=0.5, r2t4=0.5, g=1,
            alpha=0.05, two_tailed=True)
[16]:
0.8000404338335202

Parameters for BIRA4_1r

Parameters effect_size sample_size power
design
es  
n
J
K
L  
power  
alpha
two_tailed
p
r21
g
rho2
omega2
r2t2
rho3
omega3
r2t3
rho4
omega4
r2t4

Cluster Random Assignment Designs

Simple Cluster Random Assignment (CRA)

CRA2_2r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
simple 2 cluster 2 random
[1]:
from pypowerup import effect_size, sample_size, power
[2]:
# effect size, i.e., minimum detectable effect sizes (MDES):
effect_size(design='cra2_2r', rho2=0.15, r21=0.40, r22=0.53, g=1, n=100, J=40,
           alpha=0.05, power=0.8, p=0.5)
[2]:
0.2502054873913746
[3]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units.
sample_size(design='cra2_2r', es=0.2502054873913746, rho2=0.15, r21=0.40, r22=0.53,
            g=1, n=100, alpha=0.05, power=0.8, p=0.5)
[3]:
40.0
[4]:
# power
power(design='cra2_2r', es=0.2502054873913746, rho2=0.15, r21=0.40,
      r22=0.53, g=1, n=100, J=40, alpha=0.05, p=0.5)
[4]:
0.8000094900703394

Parameters for CRA2_2r

Parameters effect_size sample_size power
design
es  
n
J  
power  
alpha
two_tailed
p
r21
r22
rho2
g

CRA3_3r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
simple 3 cluster 3 random
[5]:
# effect size, i.e., minimum detectable effect sizes (MDES):
effect_size(design='cra3_3r', rho3=0.38, rho2=0.10, r21=0.37, r22=0.53,
            r23=0.87, g=1, n=20, J=2, K=66, alpha=0.05, power=0.8, p=0.5)
[5]:
0.19949475029929953
[6]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units.
sample_size(design='cra3_3r', es=0.19949475029929953, rho3=0.38,
            rho2=0.10, r21=0.37, r22=0.53, r23=0.87, g=1, n=20, J=2,
            alpha=0.05, power=0.8, p=0.5)
[6]:
66.0
[7]:
# power
power(design='cra3_3r', es=0.19949475029929953, rho3=0.38, rho2=0.10, r21=0.37,
      r22=0.53, r23=0.87, g=1, n=20, J=2, K=66, alpha=0.05, p=0.5)
[7]:
0.8000043161361032

Parameters for CRA3_3r

Parameters effect_size sample_size power
design
es  
n
J
K  
power  
alpha
two_tailed
p
r21
r22
rho2
r23
rho3
g

CRA4_4r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
simple 4 cluster 4 random
[8]:
# effect size, i.e., minimum detectable effect sizes (MDES):
effect_size(design='cra4_4r', rho4=0.05, rho3=0.05, rho2=0.10, r21=0.50, r22=0.50,
            r23=0.50, r24=0.50, g=1, n=10, J=2, K=3, L=20,
            alpha=0.05, power=0.8, p=0.5)
[8]:
0.29231230598875796
[9]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 4 units.
sample_size(design='cra4_4r', es=0.29231230598875796, rho4=0.05, rho3=0.05, rho2=0.10, r21=0.50, r22=0.50,
            r23=0.50, r24=0.50, g=1, n=10, J=2, K=3, alpha=0.05, power=0.8, p=0.5)
[9]:
20.0
[10]:
# power
power(design='cra4_4r', es=0.29231230598875796, rho4=0.05, rho3=0.05, rho2=0.10, r21=0.50, r22=0.50,
            r23=0.50, r24=0.50, g=1, n=10, J=2, K=3, L=20, alpha=0.05, p=0.5)
[10]:
0.800046080238779

Parameters for CRA4_4r

Parameters effect_size sample_size power
design
es  
n
J
K
L  
power  
alpha
two_tailed
p
r21
r22
rho2
r23
rho3
r24
rho4
g

Blocked (Stratified) Cluster Randomized Assignment (BCRA)

BCRA3_2f

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 3 cluster 2 fixed
[1]:
from pypowerup import effect_size, sample_size, power
[2]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design='bcra3_2f', rho2=0.10, r21=0.50, r22=0.50, g=1, n=20, J=44, K=5)
[2]:
0.10219354337360606
[3]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units
sample_size(design='bcra3_2f', es=0.10219354337360606, rho2=0.10, r21=0.50, r22=0.50, g=1, n=20, J=44)
[3]:
5.0
[4]:
# power
power(design='bcra3_2f', es=0.10219354337360606, rho2=0.10, r21=0.50, r22=0.50, g=1, n=20, J=44, K=5)
[4]:
0.8000016066584502
Parameters effect_size sample_size power
design
es  
n
J
K  
power  
alpha
two_tailed
p
r21
rho2
r22
g

BCRA3_2r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 3 cluster 2 random
[5]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design='bcra3_2r', rho3=0.38, rho2=0.10, omega3=0.50, r21=0.37,
            r22=0.53, r2t3=0, g=0, n=20, J=2, K=64)
[5]:
0.20020041517111645
[6]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units
sample_size(design='bcra3_2r', es=0.20020041517111645, rho3=0.38, rho2=0.10, omega3=0.50, r21=0.37,
            r22=0.53, r2t3=0, g=0, n=20, J=2)
[6]:
64.0
[7]:
# power
power(design='bcra3_2r', es=0.20020041517111645, rho3=0.38, rho2=0.10, omega3=0.50, r21=0.37,
            r22=0.53, r2t3=0, g=0, n=20, J=2, K=64)
[7]:
0.8000043161361032
Parameters effect_size sample_size power
design
es  
n
J
K  
power  
alpha
two_tailed
p
r21
rho2
r22
r2t3
rho3
omega3
g

BCRA4_2r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 4 cluster 2 random
[8]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design='bcra4_2r', rho4=0.05, rho3=0.15, rho2=0.15, omega4=0.5, omega3=0.5, r21=0.5, r22=0.5,
            r2t3=0.5, r2t4=0.5, g=0, n=10, J=4, K=4, L=20)
[8]:
0.14584081061169768
[9]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 4 units
sample_size(design='bcra4_2r', es=0.14584081061169768, rho4=0.05, rho3=0.15, rho2=0.15, omega4=0.5, omega3=0.5, r21=0.5, r22=0.5,
            r2t3=0.5, r2t4=0.5, g=0, n=10, J=4, K=4)
[9]:
20.0
[10]:
# power
power(design='bcra4_2r', es=0.14584081061169768, rho4=0.05, rho3=0.15, rho2=0.15, omega4=0.5, omega3=0.5, r21=0.5, r22=0.5,
            r2t3=0.5, r2t4=0.5, g=0, n=10, J=4, K=4, L=20)
[10]:
0.8000357933435768
Parameters effect_size sample_size power
design
es  
n
J
K
L  
power  
alpha
two_tailed
p
r21
rho2
r22
rho3
omega3
r2t3
rho4
omega4
r2t4
g

BCRA4_3f

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 4 cluster 3 fixed
[11]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design='bcra4_3f', rho3=0.15, rho2=0.15, r21=0.5, r22=0.5,
            r23=0.5, g=2, n=10, J=4, K=4, L=15)
[11]:
0.2399780453218905
[12]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 4 units
sample_size(design='bcra4_3f', es=0.2399780453218905, rho3=0.15, rho2=0.15, r21=0.5, r22=0.5,
            r23=0.5, g=2, n=10, J=4, K=4)
[12]:
15.0
[13]:
# power
power(design='bcra4_3f', es=0.2399780453218905, rho3=0.15, rho2=0.15, r21=0.5, r22=0.5,
            r23=0.5, g=2, n=10, J=4, K=4, L=15)
[13]:
0.8000158353898167
Parameters effect_size sample_size power
design
es  
n
J
K
L  
power  
alpha
two_tailed
p
r21
rho2
r22
rho3
r23
g

BCRA4_3r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 4 cluster 3 random
[14]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design='bcra4_3r', rho4=0.05, rho3=0.15, rho2=0.15, omega4=0.5,
            r21=0.5, r22=0.5, r23=0.5, r2t4=0.5, g=3, n=10, J=4, K=20, L=20)
[14]:
0.12100407246925271
[15]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 4 units
sample_size(design='bcra4_3r', es=0.12100407246925271, rho4=0.05, rho3=0.15, rho2=0.15, omega4=0.5,
            r21=0.5, r22=0.5, r23=0.5, r2t4=0.5, g=3, n=10, J=4, K=20)
[15]:
20.0
[16]:
# power
power(design='bcra4_3r', es=0.12100407246925271, rho4=0.05, rho3=0.15, rho2=0.15, omega4=0.5,
            r21=0.5, r22=0.5, r23=0.5, r2t4=0.5, g=3, n=10, J=4, K=20, L=20)
[16]:
0.800053034680572
Parameters effect_size sample_size power
design
es  
n
J
K
L  
power  
alpha
two_tailed
p
r21
rho2
r22
rho3
r23
rho4
omega4
r2t4
g

Quasi-experimental Designs

Regression Discontinuity (RD)

RD2_1f

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 2 individual 1 fixed
[1]:
from pypowerup import effect_size, sample_size, power
[2]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "rd2_1f", n=55, J=20, r21=0.5, g=1, design_effect=2.75)
[2]:
0.19828457764454652
[3]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units
sample_size(design = "rd2_1f", es=0.19828457764454652, n=55, r21=0.5, g=1, design_effect=2.75)
[3]:
20.0
[4]:
# power
power(design = "rd2_1f", es=0.19828457764454652, n=55, r21=0.5, J=20, g=1, design_effect=2.75)
[4]:
0.8000010686602212
Parameters effect_size sample_size power
design
es  
n
J  
power  
alpha
two_tailed
p
r21
g
design_effect

RD2_1r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 2 individual 1 random
[5]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "rd2_1r", n=50, J=40, r21=0.5, g=1, r2t2=0.1, omega2=0.2, rho2= 0.15, design_effect=2.75)
[5]:
0.15782962225367275
[6]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units
sample_size(design = "rd2_1r", es=0.15782962225367275, n=50,r21=0.5, g=1,
          r2t2=0.1, omega2=0.2, rho2= 0.15, design_effect=2.75)
[6]:
40.0
[7]:
# power
power(design = "rd2_1r", es=0.15782962225367275, n=50, J=40, r21=0.5, g=1,
      r2t2=0.1, omega2=0.2, rho2= 0.15, design_effect=2.75)
[7]:
0.8000090684884187
Parameters effect_size sample_size power
design
es  
n
J  
power  
alpha
two_tailed
p
r21
rho2
r2t2
g
design_effect

RDC_2r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
simple 2 cluster 2 random
[8]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "rdc_2r", rho2=0.15, r21=0.5, r22=0.5, g=1, n=55, J=179, design_effect=2.75)
[8]:
0.20086870136611698
[9]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units
sample_size(design = "rdc_2r", es=0.20086870136611698, rho2=0.15, r21=0.5,
            r22=0.5, g=1, n=55, design_effect=2.75)
[9]:
179.0
[10]:
# power
power(design = "rdc_2r", es=0.20086870136611698, rho2=0.15, r21=0.5,
            r22=0.5, g=1, n=55, J=179, design_effect=2.75)

[10]:
0.8000017574724924
Parameters effect_size sample_size power
design
es  
n
J  
power  
alpha
two_tailed
p
r21
rho2
r22
g
design_effect

RDC_3r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
simple 3 cluster 3 random
[11]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "rdc_3r", rho3=0.15, rho2=0.15, r21=0.5, r22=0.5,
            r23=0.5,  g=1, n=18, J=3, K=230, design_effect=2.75)

[11]:
0.20079075638849297
[12]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 2 units
sample_size(design = "rdc_3r", es=0.20079075638849297, rho3=0.15, rho2=0.15, r21=0.5, r22=0.5,
            r23=0.5,  g=1, n=18, J=3, design_effect=2.75)
[12]:
230.0
[13]:
# power
power(design = "rdc_3r", es=0.20079075638849297, rho3=0.15, rho2=0.15, r21=0.5, r22=0.5,
            r23=0.5,  g=1, n=18, J=3, K=230, design_effect=2.75)
[13]:
0.8000015459112233
Parameters effect_size sample_size power
design
es  
n
J
K  
power  
alpha
two_tailed
p
r21
rho2
r22
rho3
r23
g
design_effect

RD2_3f

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 3 cluster 2 fixed
[14]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "rd3_2f", rho2=0.15, r21=0.5, r22=0.5, g=0, n=18, J=3, K=71, design_effect=2.75)
[14]:
0.20131125779908843
[15]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units
sample_size(design = "rd3_2f", es=0.20131125779908843, rho2=0.15, r21=0.5, r22=0.5, g=0,
            n=18, J=3, design_effect=2.75)
[15]:
71.0
[16]:
# power
power(design = "rd3_2f", es=0.20131125779908843, rho2=0.15, r21=0.5, r22=0.5, g=0,
            n=18, J=3, K=71, design_effect=2.75)
[16]:
0.8000020062425997
Parameters effect_size sample_size power
design
es  
n
J
K  
power  
alpha
two_tailed
p
r21
rho2
r22
g
design_effect

RD2_3r

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 3 cluster 2 random
[17]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "rdc_3r", rho3=0.15, rho2=0.15, r21=0.5, r22=0.5, r23=0.5,
            g=1, n=18, J=3, K=230, design_effect=2.75)
[17]:
0.20079075638849297
[18]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units
sample_size(design = "rdc_3r", es=0.20079075638849297, rho3=0.15, rho2=0.15, r21=0.5, r22=0.5, r23=0.5,
            g=1, n=18, J=3, design_effect=2.75)
[18]:
230.0
[19]:
# power
power(design = "rdc_3r", es=0.20079075638849297, rho3=0.15, rho2=0.15, r21=0.5, r22=0.5, r23=0.5,
            g=1, n=18, J=3, K=230, design_effect=2.75)
[19]:
0.8000015459112233
Parameters effect_size sample_size power
design
es  
n
J
K  
power  
alpha
two_tailed
p
r21
rho2
r22
rho3
r2t3
omega3
g
design_effect

Interrupted Time-Series (ITS)

Assignment Clustering Level Treatment Assignment Treatment Level Cluster Effect
blocked 3 cluster 2 constant at level 3 random at level 2
[1]:
from pypowerup import effect_size, sample_size, power

No comparison units

[2]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "its_nocompare", rho2=0.03, T=5, n=75, K=10, r22=0, tf=2, g=0)
[2]:
0.3658177052373508
[3]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units
sample_size(design = "its_nocompare", es=0.3658177052373508, rho2=0.03, T=5, n=75, r22=0, tf=2, g=0)
[3]:
10.0
[4]:
# power
power(design = "its_nocompare", es=0.3658177052373508, rho2=0.03, T=5, n=75, K=10, r22=0, tf=2, g=0)
[4]:
0.8000060699483386
Parameters effect_size sample_size power
design
es  
n
K  
power  
alpha
two_tailed
p
r22
rho2
g
T
tf

With comparison units

[5]:
# effect size, i.e., minimum detectable effect sizes (MDES)
effect_size(design = "its_wcompare", rho2=0.03, T=5, n=75, K=10, r22=0, tf=2, g=0,q=2)
[5]:
0.44803335835368546
[6]:
# sample_size, i.e., minimum required samples sizes (MRSS) for level 3 units
sample_size(design = "its_wcompare", es=0.44803335835368546, rho2=0.03, T=5, n=75, r22=0, tf=2, g=0, q=2)
[6]:
10.0
[7]:
# power
power(design = "its_wcompare", es=0.44803335835368546, rho2=0.03, T=5, n=75, K=10, r22=0, tf=2, g=0, q=2)
[7]:
0.8000060699483386
Parameters effect_size sample_size power
design
es  
n
K  
power  
alpha
two_tailed
p
r22
rho2
g
T
tf
q

Credit and disclaimer

This document is heavily built on https://www.causalevaluation.org/uploads/7/3/3/6/73366257/powerup.xlsm. All the design and variable explanations are from this sheet.

References

Dong, N. & Maynard, R. A. (2013). PowerUp!: A tool for calculating minimum detectable effect sizes and minimum required sample sizes for experimental and quasi- experimental design studies, Journal of Research on Educational Effectiveness, 6(1), 24-67. doi: 10.1080/19345747.2012.673143. https://www.causalevaluation.org/uploads/7/3/3/6/73366257/powerup.xlsm

Bulus, M., Dong, N., Kelcey, B., & Spybrook, J. (2019). PowerUpR: Power Analysis Tools for Multilevel Randomized Experiments. R package version 1.0.4. https://CRAN.R-project.org/package=PowerUpR