Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Reason given by maintainers: Renamed to abtestwise to avoid conflict with an existing XPKit product.

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

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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

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