About and methodology

Technical reference for the statistics engine. Local calculations, auditable formulas and no account required.

Made by Iago ↗

Formulas and rules

Conversion rate

CR = conversions / users

Relative and absolute lift

lift = (CRv − CRc) / CRc; Δ = CRv − CRc

Effective alpha

α′ = (1 − confidence) / (groups − 1)

With Bonferroni and 3+ groups. Without correction, α′ = 1 − confidence. Bayesian analysis ignores Bonferroni and hypothesis.

Critical values and power

zα = Φ⁻¹(1 − α′/2) [two-sided]; zα = Φ⁻¹(1 − α′) [one-sided]; zβ = Φ⁻¹(power)

Sample per variant

n = (zα√(2p̄(1−p̄)) + zβ√(p₁(1−p₁)+p₂(1−p₂)))² / (p₂−p₁)²; p₂ = p₁(1+lift); p̄ = (p₁+p₂)/2

Traffic, MDE and duration

p = weekly conversions / weekly traffic; n(w) = weekly traffic × traffic share × w / groups; days = ceil(n × groups / (weekly traffic / 7 × traffic share))

MDE is the lift requiring n(w) visitors, solved by bisection in the sample formula. Absolute MDE = p × relative MDE. Zero conversions prevent planning. p₂ cannot exceed 1.

Unpooled standard error

SE = √(CR(1−CR)/n); SEdiff = √(SEc²+SEv²)

Z test

z = (CRv−CRc)/SEdiff; p₂ = 2(1−Φ(|z|)); p₁ = 1−Φ(z); significant if p < α′

Confidence interval and observed power

CIΔ = Δ ± Φ⁻¹(1−α′/2)SEdiff; CIlift ≈ CIΔ/CRc; observed power = Φ(|z|−zα)

One-sided analysis shows only the lower bound, Δ − zα SEdiff. Relative CI is approximate. Observed power does not replace planning.

Bayesian model

prior = Beta(1,1); posterior = Beta(1+conversions,1+users−conversions)

50,000 Monte Carlo draws per group. Seed derived from users and conversions, giving reproducible results.

Probabilities, loss and credibility

P(beat) = P(CRv>CRc); P(best) = P(CRg = max CR); loss = E[max(CRc−CRv,0)]; relative loss = loss/CRc; interval = lift quantiles [(1−conf)/2,1−(1−conf)/2]

Sequential testing

g(α,t) = 2−2Φ(Φ⁻¹(1−α/2)/√t); t = current n / maximum n

Lan-DeMets O'Brien-Fleming type. One-sided g(α,t). Two-sided, each side g(α/2,t), using the gsDesign/ldbounds convention. Boundaries use Armitage-McPherson-Rowe recursive integration. Bonferroni precedes spending. Fixed sample grows by the design inflation factor. Without a plan, information fractions are equally spaced. Reaching maximum sample implies final analysis. No futility boundary.

Verdict

Bayesian: winner P≥conf; loser P≤1−conf. Z test: significant and Δ>0 wins; significant and Δ<0 loses only two-sided.

Without a conclusive result, achieved MDE ≤ reference lift means no meaningful difference. Above it means underpowered. In sequential mode, significant means crossing the boundary.

Additional days

max(0,ceil((required n − min group n) × groups / (total users / days)))

SRM

χ² = Σ(observed−expected)²/expected; expected = total users × split; df = groups−1; alert p<0.01

Revenue and forecast

monthly visitors = (total users/days) × 30/traffic share; extra conversions = monthly visitors × Δ; monthly contribution = extras × value; impact = contribution × months; forecast = monthly visitors × CRg × value × months

Currency changes labels and formatting only, with no exchange conversion. Both methods use observed rates. Inconclusive values are unconfirmed estimates.

Alerts

srm · Critical

Chi-square p < 0.01.

stopped_early · Critical

Plan exists, current sample < planned sample, sequential off.

low_data · Warning

Significant and |convV − convC × nV/nC| ≤ 20.

under_7_days · Warning

Duration < 7 days.

over_8_weeks · Warning

Duration > 56 days.

underpowered · Warning

Inconclusive verdict and MDE > reference target lift.

bonferroni_off · Warning

3+ groups and Bonferroni off.

incomplete_weeks · Info

Duration ≥ 7 days and not a multiple of 7. Suggest ceil(days/7) × 7.

mde_high · Info

Achieved MDE > 10%.

methods_disagree · Info

Bayesian and Z test verdicts differ.

seq_not_crossed · Info

Sequential on, boundary not crossed and not the final analysis.

Assumptions

Independent binary conversions, stable rates, intact group assignment and a metric chosen before the test. SRM, seasonality and peeking can invalidate interpretation. Revenue projections are linear and use observed rates.

What runs in the browser

All statistics run in a Web Worker in your browser. Inputs, plans and TL;DR live in the link fragment and local draft. They are not stored on the server.

What goes to AI

Only when you click Generate TL;DR do computed numbers and group names up to 40 characters pass through the Worker and OpenRouter to the Claude Haiku 5.5 model (Anthropic). OpenRouter may serve the model through Anthropic, Microsoft Azure, Google Cloud or AWS, using only providers that do not store data. The Turnstile token is used only for Cloudflare's anti-bot verification. No caching or storage of input or output. Limit of 20 summaries per day per IP and a 20-second timeout.

What Umami collects

Umami Cloud collects anonymous pageviews and usage events without cookies. URLs exclude fragments and query strings. Events include interface choices only, never test numbers, group names or AI text.

References