🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

msprt

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

msprt

0.1.2
PyPI
Maintainers
1

Python mSPRT Package:

This package provides a Python implementation for calculating the Mixture Sequential Probability Ratio Test (mSPRT).

mSPRT is a statistical hypothesis test that can be used to decide if a observed data supports one of two hypotheses, based on a sequence of independent and identically distributed observations.

Main functionalities:

  • Calculating mixture variance

$$ \tau^2 = \sigma^2 \frac{\Phi(-b)}{\frac{1}{b}\phi(b)-\Phi(-b)} $$

  • Calculating test statistic for normal distribution

$$ \tilde{\Lambda}_n = \sqrt{\frac{2\sigma^2}{V_n + n\tau^2}}\exp\left(\frac{n^2\tau^2(\bar{Y}_n - \bar{X}_n-\theta_0)^2}{4\sigma^2(2\sigma^2+n\tau^2)}\right). $$

  • Calculating test statistic for Bernoulli distribution

$$ \tilde{\Lambda}_n = \sqrt{\frac{V_n}{V_n + n\tau^2}}\exp{\left(\frac{n^2\tau^2(\bar{Y}_n - \bar{X}_n-\theta_0)^2}{2V_n(V_n+n\tau^2)}\right)} $$

Installation:

The mSPRT package can be easily installed using pip:

pip install msprt

Pre-requisite

Python >=3.10;<3.13

Dependencies:

The mSPRT package depends on the following Python libraries:

  • Numpy
  • Scipy
  • Matplotlib

These dependencies can also be easily installed using pip:

pip install numpy scipy matplotlib

How to Use:

First, import the mSPRT package:

import numpy as np
from msprt import msprt

Then, prepare the two sample lists that you want to compare.

np.random.seed(42)
n = 500
x = np.random.normal(0, 1, n)
y = np.random.normal(0.2, 1, n)

Next, call the msprt object with observation lists, along with the parameters for the mSPRT test, such as the alpha and the theta values (by default it assumes you are using a normal distribution and alpha is set to 0.05).

result = msprt(x=x, y=y, sigma=1.0)
print(result)

If you want to use a Bernoulli distribution, specify it as such:

result = msprt(x=x, y=y, theta=0.5, distribution='bernoulli')
print(result)

To plot the results, use the plot method:

result.plot()

For detailed information about each parameter, please refer to the comments in the source code.

Contact:

If you find any problems with the implementation, you can leave the ticket on Github.

mSPRT GitHub Page

License:

This project is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. See the LICENSE file for more information.

References (real heroes)

  • Johari, R., Pekelis, L., & Walsh, D. J. (2019). Always Valid Inference: Bringing Sequential Analysis to A/B Testing. arXiv:1512.04922 [math.ST]. Link to the paper
  • The R and C++ implementations of the paper are available in the GitHub repository maintained by Erik Stenberg: GitHub Repository.

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts