Skip to main content

Bootstrap confidence interval estimation routines for Numpy/Scipy/Pandas

Project description

DOI Codecov PyPI GitHub release (latest SemVer) PyPI - Python Version

Documentation: Stable, Latest.

scikits-bootstrap

Scikits.bootstrap provides bootstrap statistics confidence interval algorithms for Numpy/Scipy/Pandas. It originally required scipy, but no longer needs it.

It also provides an algorithm which estimates the probability that the statistics lies satisfies some criteria, e.g., lies in some interval.

Much of the code has been written based off the descriptions from Efron and Tibshirani's Introduction to the Bootstrap, and results should match the results obtained from following those explanations. However, the current ABC code is based off of the modified-BSD-licensed R port of the Efron bootstrap code, as I do not believe I currently have a sufficient understanding of the ABC method to write the code independently.

Please contact me (Constantine Evans bootstrap@mb.costi.net, or Matrix <@cge:matrix.org>) with any questions, suggestions, vulnerabilities, or other comments (PGP key), or, preferably, use Github's issue and pull requests.

If you'd like to add something, or make improvements, please keep the following in mind:

  • I'd like to keep the library as widely supported as possible, with as few dependencies as possible, preferably small ones. I'm also very wary of anything that would break backwards compatibility, even in unknown ways.

  • I am following semantic versioning.

  • Code should be formatted with Ruff, and should have type annotations that work in 3.8 through the latest stable Python and PyPy3.

  • Docstrings should be in Numpy format. They should preferably include references for the implemented algorithms (see the current code for examples).

  • All code should have working unit tests, preferably ones that do more than just testing fixed output with a fixed random seed, though given the non-deterministic nature of the bootstrap, good, deterministic tests may be difficult. Non-deterministic tests with extremely small chances of failure are acceptable, but shouldn't use such large numbers of samples that they overly slow down the tests.

  • I am a physicist, and am not very familiar with applications of the bootstrap for business or development statistics. So if you'd like to add something for those, it would be useful to give some more explanation than otherwise as to how they are generally useful.

The package is licensed under the BSD 3-Clause License. It is supported by the Evans Foundation.

I don't see a particular need to cite this package, but if you want to, please use the Zenodo DOI above, or the one appropriate for the version you used.

Version Information

  • v1.1.1: Compatibility updates for Numpy 2 (thank you @sobue-code, #38), replacement of pyerf with math.erf, changes to build and testing system (using hatch). Python 3.7 is no longer supported.

  • v1.1.0: Randomness is now generated via a numpy.random Generator. Anything that relied on using numpy.random.seed to obtain deterministic results will fail (mostly of relevance for testing). Seeds (or Generators) can now be passed to relevant functions with the seed argument, but note that changes in Numpy's random number generation means this will not give the same results that would be obtained using numpy.random.seed to set the seed in previous versions.

    There is a new pval function, and there are several bugfixes.

    Numba is now supported in some instances (np.average or np.mean as statfunction, 1-D data), using use_numba=True. Pypy3 is also supported. Typing information has been added, with code passing mypy --strict --allow-untyped-calls --ignore-missing-imports, and tests cover 100% of the code (though many tests use fixed seeds).

    Handling of multiple data sets (tuples/etc of arrays) now can be specified as multi="paired" (the previous handling), where the sets must be of the same length, and samples are taken keeping corresponding points connected, or multi="independent", treating data sets as independent and sampling them seperately (in which case they may be different sizes).

  • v1.0.1: Licensing information added.

  • v1.0.0: scikits.bootstrap now uses pyerf, which means that it doesn't actually need scipy at all. It should work with PyPy, has some improved error and warning messages, and should be a bit faster in many cases. The old ci_abc function has been removed: use method='abc' instead.

  • v0.3.3: Bug fixes. Warnings have been cleaned up, and are implemented for BCa when all statistic values are equal (a common confusion in prior versions). Related numpy warnings are now suppressed. Some tests on Python 2 were fixed, and the PyPI website link is now correct.

  • v0.3.2: This version contains various fixes to allow compatibility with Python 3.3. While I have not used the package extensively with Python 3, all tests now pass, and importing works properly. The compatibility changes slightly modify the output of bootstrap_indexes, from a Python list to a Numpy array that can be iterated over in the same manner. This should only be important in extremely unusual situations.

Installation and Usage

scikits.bootstrap is tested on Python 3.8 - 3.13, and PyPy 3. The package can be installed using pip.

pip install scikits.bootstrap

Usage example for python 3.x:

import scikits.bootstrap as boot
import numpy as np
boot.ci(np.random.rand(100), np.average)

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

scikits_bootstrap-1.1.1.tar.gz (19.0 kB view details)

Uploaded Source

Built Distribution

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

scikits_bootstrap-1.1.1-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file scikits_bootstrap-1.1.1.tar.gz.

File metadata

  • Download URL: scikits_bootstrap-1.1.1.tar.gz
  • Upload date:
  • Size: 19.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for scikits_bootstrap-1.1.1.tar.gz
Algorithm Hash digest
SHA256 6942bddee6ca1818499c3c7d945974fe5f6cf6116a707bd1df4c81c57849c905
MD5 f45cf0a67d6f0ba210d8d5f5add01798
BLAKE2b-256 f0a1f1060d5d2d1e74816b39813f640526dcdd194ce59dc8b4c4227fe0832714

See more details on using hashes here.

File details

Details for the file scikits_bootstrap-1.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for scikits_bootstrap-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8d99832f9369cf02d8b0900bceca5b8bf208a195162995fa4c84e8fe309851b3
MD5 1d182cef57f79c226cb33ab8961d0e09
BLAKE2b-256 9b1d03726655815cf6b3361c7799deb587841d06677e832aedfed3965a52946c

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