Skip to main content

Lightweight toolkit for binary A/B experiment analysis using aggregate counts.

Reason this release was yanked:

Renamed to abtestwise to avoid conflict with an existing XPKit product.

Project description

xpkit

A lightweight Python toolkit for binary A/B experiment analysis using aggregate count data. Version 0.1 combines frequentist and Bayesian summaries for binary proportions.

Install

Install from PyPI:

pip install xpkit

Development install

To work on the package locally (with the test dependencies):

pip install -e ".[dev]"

Quickstart

from xpkit import BinaryABTest

test = BinaryABTest.from_counts(
    control_successes=120,
    control_total=1000,
    treatment_successes=145,
    treatment_total=1000,
    prior_alpha=1,
    prior_beta=1,
    n_simulations=100_000,
    credible_interval=0.95,
    seed=42,
)

result = test.run()

print(result.summary())
print(result.prob_lift_above(0.01))

prob_lift_above(0.01) gives the posterior probability that Treatment B improves the metric by more than 1 percentage point.

Do-no-harm checks

prob_no_harm(margin) gives the posterior probability that Treatment B is not worse than Control A by more than margin (in raw decimal units, so 0.005 means 0.5 percentage points). prob_harm_above(margin) is its complement.

result.prob_no_harm(0.005)     # P(lift >= -0.005): B is not worse by more than 0.5pp
result.prob_harm_above(0.005)  # P(lift <  -0.005): B is worse by more than 0.5pp

Raw result values are also available:

result.to_dict()

Plotting

import matplotlib.pyplot as plt

result.plot_lift_distribution()
result.plot_probability_bar()

plt.show()

The lift distribution plot shows posterior lift in percentage points.

The probability bar plot shows:

P(Treatment B > Control A)
P(Control A > Treatment B)

Groups and sign convention

In product A/B testing terms:

  • Control (A) is the baseline group.
  • Treatment (B) is the test group or variant B.
  • Lift is always Treatment B - Control A.
  • Positive lift means Treatment B is better than Control A.
  • Negative lift means Control A is better than Treatment B.

Scope (v0.1)

  • Binary proportions only.
  • Aggregate counts only.
  • Two groups only.
  • Frequentist: two-sided pooled two-proportion z-test.
  • Bayesian: beta-binomial posterior simulation with default prior Beta(1, 1).
  • Equal-tailed credible interval.
  • Expected loss.
  • Practical lift thresholds.
  • Simple plots.

Development

Run tests with:

python -m pytest -q

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xpkit-0.1.1.tar.gz (36.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xpkit-0.1.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file xpkit-0.1.1.tar.gz.

File metadata

  • Download URL: xpkit-0.1.1.tar.gz
  • Upload date:
  • Size: 36.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for xpkit-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1bc7d3ebd4230aef24ac05f788b0f719aa21e564681ed07b95800b175d168160
MD5 4426062c80e765409d07dca0c072e52d
BLAKE2b-256 6a377135749259900e1ef57a5a9408aeed8f07d32e20fc87083e62650f21a514

See more details on using hashes here.

File details

Details for the file xpkit-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: xpkit-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for xpkit-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2e70791fd0a1a2c0a7875efe591b0a374c1dc788943b36f8449fc34746011197
MD5 6e5e030bb1e4885e628d5c74d7ced843
BLAKE2b-256 7131c47b7d7b0f28e11bd34498e7a9102c83edb483dec8e564716da1abc89fd0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page