Start by clarifying objectives: metric(s) to detect, baseline rate/variance, minimum detectable effect (MDE), target power (e.g., 80%) and alpha (e.g., 0.05). In overlapping concurrent experiments you must account for interference, multiplicity and limited traffic.Sample-size methods- Independent z-test approximation (for proportions/means): n_per_arm ≈ 2 * (Z_{1-α/2}+Z_{1-β})^2 * σ^2 / δ^2 where δ is MDE, σ^2 is variance. Use historical data to estimate σ.- If groups overlap or there is correlation between treatments, use variance inflation: n_adj = n_per_arm * (1 + (k-1)ρ) for k simultaneous experiments with pairwise correlation ρ (inspired by design effect).- For cluster or page-level interference, compute effective sample size: ESS = N / DE, DE = 1 + (m-1)ICC.Practical Python snippet (approximate two-sided proportion test):python
import math
from scipy.stats import norm
def sample_size_prop(p0, mde, alpha=0.05, power=0.8):
z_alpha = norm.ppf(1-alpha/2)
z_beta = norm.ppf(power)
p1 = p0 + mde
var = p0*(1-p0) + p1*(1-p1)
n = (z_alpha+z_beta)**2 * var / (mde**2)
return math.ceil(n/2) # per arm
Interference (SUTVA violations)- Identify possible interference (users in multiple experiments or network effects).- Mitigate: orthogonalize experiments (assign mutually exclusive segments), cluster randomization (by user, region, or day), or measure and model spillover (include indicators for exposure to other treatments).- If interference unavoidable, estimate direct and spillover effects using experimental design for interference (e.g., partial population treatment, two-stage randomization).Multiple comparisons & sequential testing- If testing many metrics/variants, control Type I: - Family-wise: Bonferroni (conservative) or Holm step-down. - FDR: Benjamini–Hochberg for many correlated tests. - Sequential/peeking: use alpha spending methods (O’Brien–Fleming) or sequential tests (MAMS) or adopt Bayesian posterior probabilities which avoid strict α thresholds.- Predefine families of hypotheses and correction scope; report adjusted p-values and CIs.Estimating duration- Duration = required_sample_per_arm / (traffic_per_arm * allocation_fraction)- When multiple experiments share traffic, effective traffic per experiment = total_traffic * allocation_fraction * (1 - overlap_share) or reduced by orthogonalization.- Account for seasonality: ensure minimum run-time (full weekly cycles) and metrics stabilization.Prioritization when traffic limited- Score experiments by expected value = traffic * expected_lift * conversion_value * probability_of_detecting (power).- Prioritize: high-impact × high-likelihood experiments; prefer lower-sample MDEs (large expected lifts) or those with lower variance.- Strategies: run high-priority experiments full sample, lower-priority as sequential A/B tests or in holdout buckets, run orthogonalization to run more experiments without overlap, pool similar low-risk tests into a single platform test (factorial designs).- Use pre-registration and staging to avoid p-hacking; consider Bayesian A/B with credible intervals to make faster decisions with limited traffic.Key trade-offs- Orthogonalization reduces interference but increases time to finish experiments.- Conservative multiple-comparison control reduces false positives but increases required sample size.- Cluster designs simplify interference at the cost of larger DE and longer duration.This combination—estimate sample sizes from historical variance, inflate for correlation/ICC, control multiplicity appropriately, mitigate interference via design, and prioritize by expected value—gives a principled plan for running concurrent experiments under traffic constraints.