This calculator is useful for the types of tests known as non-inferiority and superiority tests. Whether the null hypothesis represents 'non-inferiority' or 'superiority' depends on the context and whether the non-inferiority/superiority margin, $\delta$, is positive or negative. In this setting, we wish to test whether the odds of an outcome in group 'A', $p_A(1-p_A)$, is non-inferior/superior to the odds of the outcome in group 'B', $p_B(1-p_B)$, where $p_A$ and $p_B$ are the probabilities of the outcome in the two groups. We collect a sample from both groups, and thus will conduct a two-sample test. The idea is that statistically significant differences between the proportions may not be of interest unless the difference is greater than a threshold. This is particularly popular in clinical studies, where the margin is chosen based on clinical judgement and subject-domain knowledge. The hypotheses to test are
This calculator uses the following formulas to compute sample size and power, respectively: $$ n_A=\kappa n_B \;\text{ and }\; n_B=\left(\frac{1}{\kappa p_A(1-p_A)}+\frac{1}{p_B(1-p_B)}\right) \left(\frac{z_{1-\alpha}+z_{1-\beta}}{\ln(OR)-\delta}\right)^2$$ $$1-\beta= \Phi\left(z-z_{1-\alpha}\right)+\Phi\left(-z-z_{1-\alpha}\right) \quad ,\quad z=\frac{(\ln(OR)-\delta)\sqrt{n_B}}{\sqrt{\frac{1}{\kappa p_A(1-p_A)}+\frac{1}{p_B(1-p_B)}}}$$ where $$OR=\frac{p_A(1-p_B)}{p_B(1-p_A)}$$ and where
R code to implement these functions:
pA=0.40 pB=0.25 delta=0.20 kappa=1 alpha=0.05 beta=0.20 (OR=pA*(1-pB)/pB/(1-pA)) # 2 (nB=(1/(kappa*pA*(1-pA))+1/(pB*(1-pB)))*((qnorm(1-alpha)+qnorm(1-beta))/(log(OR)-delta))^2) ceiling(nB) # 242 z=(log(OR)-delta)*sqrt(nB)/sqrt(1/(kappa*pA*(1-pA))+1/(pB*(1-pB))) (Power=pnorm(z-qnorm(1-alpha))+pnorm(-z-qnorm(1-alpha)))
Chow S, Shao J, Wang H. 2008. Sample Size Calculations in Clinical Research. 2nd Ed. Chapman & Hall/CRC Biostatistics Series. page 107.