Skip to main content

Package for hypothesis testing in A/B-experiments

Project description

abito

Build Status Coverage Status

Python package for hypothesis testing. Suitable for using in A/B-testing software. Tested for Python >= 3.5. Based on numpy and scipy.

Features
  1. Convenient interface to run significance tests.
  2. Support of ratio-samples. Linearization included (delta-method).
  3. Bootstrapping: can measure significance of any statistic, even quantiles. Multiprocessing is supported.
  4. Ntile-bucketing: compress samples to get better performance.
  5. Trim: get rid of heavy tails.

Installation

pip install abito

Usage

The most powerful tool in this package is the Sample:

import abito as ab

Let's draw some observations from Poisson distribution and initiate Sample instance from them.

import numpy as np

observations = np.random.poisson(1, size=10**6)
sample = ab.sample(observations)

Now we can calculate any statistic in numpy-way.

print(sample.mean())
print(sample.std())
print(sample.quantile(q=[0.05, 0.95]))

To compare with other sample we can use t_test or mann_whitney_u_test:

observations_control = np.random.poisson(1.005, size=10**6)
sample_control = Sample(observations_control)

print(sample.t_test(sample_control))
print(sample.mann_whitney_u_test(sample_control))

Bootstrap

Or we can use bootstrap to compare any statistic:

sample.bootstrap_test(sample_control, stat='mean', n_iters=100)

To improve performance, it's better to provide observations in weighted form: unique values + counts. Or, we can compress samples, using built-in method:

sample.reweigh(inplace=True)
sample_control.reweigh(inplace=True)
sample.bootstrap_test(sample_control, stat='mean', n_iters=10000)

Now bootstrap is working lightning-fast. To improve performance further you can set parameter n_threads > 1 to run bootstrapping using multiprocessing.

Compress

observations = np.random.normal(100, size=10**8)
sample = ab.sample(observations)

compressed = sample.compress(n_buckets=100, stat='mean')

%timeit sample.std()
%timeit compressed.std()

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

abito-0.1.3.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

abito-0.1.3-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file abito-0.1.3.tar.gz.

File metadata

  • Download URL: abito-0.1.3.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.8

File hashes

Hashes for abito-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c4c851fca8482a1f3cd9fba3622244780f987bce17ff9c9ec22088e281b606a3
MD5 6ad3de292cc8c0793bb6730615b1062c
BLAKE2b-256 7cad8a631821b1f0d93d62f87ce0013d866ced16c3371b6be3df42c685256bc0

See more details on using hashes here.

File details

Details for the file abito-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: abito-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.8

File hashes

Hashes for abito-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4b8dfc6ee76edcd512ccad2ade2eae96a113544990e45c261b0b237d7027f58d
MD5 431f37d5ffe0c579a6e4739088a84ef2
BLAKE2b-256 52cf999a23169211230415179515ee6553f78a02bbe70fc7fa91bc8fa81e629f

See more details on using hashes here.

Supported by

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