statsmodels.stats.proportion.power_ztost_prop(low, upp, nobs, p_alt, alpha=0.05, dist='norm', variance_prop=None, discrete=True, continuity=0, critval_continuity=0)[source]

Power of proportions equivalence test based on normal distribution


low, upp : floats

lower and upper limit of equivalence region

nobs : int

number of observations

p_alt : float in (0,1)

proportion under the alternative

alpha : float in (0,1)

significance level of the test

dist : string in [‘norm’, ‘binom’]

This defines the distribution to evalute the power of the test. The critical values of the TOST test are always based on the normal approximation, but the distribution for the power can be either the normal (default) or the binomial (exact) distribution.

variance_prop : None or float in (0,1)

If this is None, then the variances for the two one sided tests are based on the proportions equal to the equivalence limits. If variance_prop is given, then it is used to calculate the variance for the TOST statistics. If this is based on an sample, then the estimated proportion can be used.

discrete : bool

If true, then the critical values of the rejection region are converted to integers. If dist is “binom”, this is automatically assumed. If discrete is false, then the TOST critical values are used as floating point numbers, and the power is calculated based on the rejection region that is not discretized.

continuity : bool or float

adjust the rejection region for the normal power probability. This has and effect only if dist='norm'

critval_continuity : bool or float

If this is non-zero, then the critical values of the tost rejection region are adjusted before converting to integers. This affects both distributions, dist='norm' and dist='binom'.


power : float

statistical power of the equivalence test.

(k_low, k_upp, z_low, z_upp) : tuple of floats

critical limits in intermediate steps temporary return, will be changed


In small samples the power for the discrete version, has a sawtooth pattern as a function of the number of observations. As a consequence, small changes in the number of observations or in the normal approximation can have a large effect on the power.

continuity and critval_continuity are added to match some results of PASS, and are mainly to investigate the sensitivity of the ztost power to small changes in the rejection region. From my interpretation of the equations in the SAS manual, both are zero in SAS.

works vectorized


The dist='binom' results match PASS, The dist='norm' results look reasonable, but no benchmark is available.


SAS Manual: Chapter 68: The Power Procedure, Computational Resources PASS Chapter 110: Equivalence Tests for One Proportion.