ds@mcpanalytics.aiEmail your data and your question and get an answer about your own data, with the method shown.Email your data and question. Get an answer.
What are the odds? Bayesian methods analyses | MCP Analytics
Question

What are the odds?

By MCP Analytics Team | Published , updated

Compare two groups? Find what drives an outcome? Spot a trend? The question decides which statistics fit, so it is the first thing to get right.

See a worked example

How the analyses here work

Bayesian methods: prebuilt analyses

The analyses filed under this question. Each card opens the analysis page, where you can run it on a file. Cards marked Coming soon are still being built.

Bayesian A/B Test

Posterior probability of winning, expected loss; no peeking problem.

Rows split into groups
Coming soon

Bayesian Estimation: Credible Intervals

What range does the true value plausibly lie in? Bayesian posterior estimates and credible intervals for means, rates, differences.

Rows split into groups
Worked example

How likely is it that Variant B really converts better than Control?

The data. standard_ab_test_v2.csv, the published sample file for A/B test: 4,795 rows; columns User ID, Assigned Group, Converted, Order Value, Signup Date, Device. Sample data, not a customer's.

The calculation. Python, standard library only. This exact code ran against the file when this page was built, and printed the output below it.

import csv
from math import erf, sqrt
rows = list(csv.DictReader(open("standard_ab_test_v2.csv")))
n, won = {}, {}
for r in rows:
    g, c = r["Assigned Group"], r["Converted"]
    if g and c in ("Yes", "No"):
        n[g] = n.get(g, 0) + 1
        won[g] = won.get(g, 0) + (c == "Yes")
post = {}  # Beta(1, 1) prior -> Beta(1 + won, 1 + lost)
for g in n:
    a, b = 1 + won[g], 1 + n[g] - won[g]
    post[g] = (a / (a + b), a * b / ((a + b) ** 2 * (a + b + 1)))
for g in sorted(post):
    print(g, "posterior mean", f"{post[g][0]:.2%}")
(mb, vb), (mc, vc) = post["Variant B"], post["Control"]
z = (mb - mc) / sqrt(vb + vc)  # normal approximation
print("P(Variant B beats Control):",
      round(0.5 * (1 + erf(z / sqrt(2))), 4))
Control posterior mean 4.93%
Variant B posterior mean 7.38%
Variant C posterior mean 5.39%
P(Variant B beats Control): 0.998

What it says. Starting from a flat prior, the data leaves a probability of about 0.998 that Variant B's true conversion rate is higher than Control's. That is the statement people usually want from a test, and it is not what a p-value says: a p-value is the chance of data this extreme if there were no difference.

What it does not say. The answer leans on the prior, which is harmless here with about 1,600 users a group and matters a lot with a few dozen. The normal approximation to the two Beta distributions is close at these sizes and poor when a group has only a handful of conversions.

Run A/B test on this file or your own, or open its stored sample report. For this question on your own data, use Bayesian A/B Test.

Sources

Further reading on the method in the worked example. Each reference was looked up and its authors, title, year and venue confirmed on 27 October 2026.

  1. Wasserstein R, Lazar N (2016). The ASA Statement on p-Values: Context, Process, and Purpose. The American Statistician. https://doi.org/10.1080/00031305.2016.1154108

By MCP Analytics Team. Updated November 2026. Analysis list from the library catalog.

A delivered report from this list

Bayesian A/B Test: sample report Open full report →

The stored sample report for Bayesian A/B Test. Each analysis has its own report layout; open its page to see what it returns.