fastbootstrap


Namefastbootstrap JSON
Version 1.6.1 PyPI version JSON
download
home_pageNone
SummaryFast Python implementation of statistical bootstrap
upload_time2025-07-16 17:39:05
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseNone
keywords ab-testing bca-bootstrap bootstrap confidence-intervals data-science hypothesis-testing machine-learning monte-carlo nonparametric p-value percentile-bootstrap power-analysis quantile-bootstrap resampling sampling-distribution significance-testing spotify-bootstrap statistical-inference statistical-simulation statistical-testing statistics
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # FastBootstrap

<div align="center">

**⚡ Fast Python implementation of statistical bootstrap methods**

[![PyPI version](https://badge.fury.io/py/fastbootstrap.svg)](https://badge.fury.io/py/fastbootstrap)
[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/release/python-3120/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

*High-performance statistical bootstrap with parallel processing and comprehensive method support*

[Installation](#installation) • [Quick Start](#quick-start) • [Examples](#examples) • [Performance](#performance) • [API](#api-reference)

</div>

---

## 🚀 Features

- **Multiple Bootstrap Methods**: Percentile, BCa, Basic, Studentized, Spotify-style, and Poisson bootstrap
- **High Performance**: Parallel processing with joblib, optimized NumPy operations
- **Comprehensive Statistics**: Confidence intervals, p-values, effect sizes, power analysis, quantile-quantile analysis
- **Flexible API**: Unified interface with method auto-selection
- **Rich Visualizations**: Built-in plotting with matplotlib and plotly
- **Production Ready**: Extensive error handling, type hints

## 📦 Installation

```bash
pip install fastbootstrap
```

### 🛠️ Development Setup

```bash
git clone https://github.com/timofeytkachenko/fastbootstrap.git
cd fastbootstrap
pip install -e ".[dev]"
pre-commit install
```

## 🎯 Quick Start

```python
import numpy as np
import fastbootstrap as fb

# Generate sample data
np.random.seed(42)
control = np.random.normal(100, 15, 1000)      # Control group
treatment = np.random.normal(105, 15, 1000)    # Treatment group (+5% effect)

# Two-sample bootstrap test
result = fb.two_sample_bootstrap(control, treatment, plot=True)
print(f"P-value: {result['p_value']:.4f}")
print(f"Effect size: {result['statistic_value']:.2f}")
print(f"95% CI: [{result['confidence_interval'][0]:.2f}, {result['confidence_interval'][1]:.2f}]")
```

## 📊 Examples

### One-Sample Bootstrap

Estimate confidence intervals for a single sample statistic:

```python
import fastbootstrap as fb
import numpy as np

# Sample data
sample = np.random.exponential(2, 500)

# Basic percentile bootstrap
result = fb.one_sample_bootstrap(
    sample,
    statistic=np.mean,
    method='percentile',
    bootstrap_conf_level=0.95,
    number_of_bootstrap_samples=10000,
    plot=True
)

print(f"Mean estimate: {result['statistic_value']:.3f}")
print(f"95% CI: [{result['confidence_interval'][0]:.3f}, {result['confidence_interval'][1]:.3f}]")

# Advanced: BCa (Bias-Corrected and Accelerated) bootstrap
bca_result = fb.one_sample_bootstrap(
    sample,
    method='bca',
    statistic=np.median,
    plot=True
)
```
![One-Sample Bootstrap Example](img/onesample.png)



### Two-Sample Comparison

Compare two groups with various statistics:

```python
import fastbootstrap as fb
import numpy as np

# A/B test data
control = np.random.normal(0.25, 0.1, 800)     # 25% conversion rate
treatment = np.random.normal(0.28, 0.1, 800)   # 28% conversion rate

# Test difference in means
result = fb.two_sample_bootstrap(
    control,
    treatment,
    statistic=fb.difference_of_mean,
    number_of_bootstrap_samples=10000,
    plot=True
)

print(f"Difference in conversion rates: {result['statistic_value']:.1%}")
print(f"P-value: {result['p_value']:.4f}")
print(f"Significant: {'Yes' if result['p_value'] < 0.05 else 'No'}")

# Test percentage change
percent_result = fb.two_sample_bootstrap(
    control,
    treatment,
    statistic=fb.percent_change_of_mean
)
print(f"Percentage change: {percent_result['statistic_value']:.1%}")
```

![Two-Sample Bootstrap Example](img/twosample.png)

### Spotify-Style Bootstrap

Fast quantile-based bootstrap using binomial sampling:

```python
import fastbootstrap as fb
import numpy as np

# Revenue data (heavy-tailed distribution)
control_revenue = np.random.lognormal(3, 1, 1000)
treatment_revenue = np.random.lognormal(3.1, 1, 1000)

# Compare medians (50th percentile)
result = fb.spotify_two_sample_bootstrap(
    control_revenue,
    treatment_revenue,
    q1=0.5,  # Median
    q2=0.5,
    plot=True
)

print(f"Median difference: ${result['statistic_value']:.2f}")
print(f"P-value: {result['p_value']:.4f}")

# Compare different quantiles
p90_result = fb.spotify_two_sample_bootstrap(
    control_revenue,
    treatment_revenue,
    q1=0.9,  # 90th percentile
    q2=0.9
)
print(f"90th percentile difference: ${p90_result['statistic_value']:.2f}")
```

### Power Analysis & Simulation

Comprehensive statistical power analysis:

```python
import numpy as np
import fastbootstrap as fb

# Simulate experiment data
control = np.random.normal(100, 20, 500)
treatment = np.random.normal(110, 20, 500)  # 10% effect size

# Power analysis
power_result = fb.power_analysis(
    control,
    treatment,
    number_of_experiments=1000,
    plot=True
)

print("Power Analysis Results:")
print(f"Statistical Power: {power_result['power_summary']['statistical_power']:.3f}")
print(f"Type I Error Rate: {power_result['power_summary']['type_i_error_rate']:.3f}")
print(f"Effect Size: {power_result['power_summary']['treatment_mean'] - power_result['power_summary']['control_mean']:.1f}")

# A/A test validation (should show ~5% false positive rate)
aa_result = fb.aa_test_simulation(
    np.concatenate([control, treatment]),
    number_of_experiments=2000
)
print(f"A/A Test False Positive Rate: {aa_result['type_i_error_rate']:.3f}")
```

![Power Analysis](img/power_analysis.png)

### Quantile-Quantile Analysis

```python
import numpy as np
import fastbootstrap as fb

# Simulate experiment data
control = np.random.exponential(scale=1 / 0.001, size=n)
treatment = np.random.exponential(scale=1 / 0.00101, size=n)

# Quantile-quantile bootstrap analysis
fb.quantile_bootstrap_plot(control, treatment, n_step=1000)
```

![Quantile Plot](img/quantile_plot.png)

### Custom Statistics

Bootstrap with simple custom statistical functions:

```python
import numpy as np
import fastbootstrap as fb

# Simple custom statistics
def max_difference(x, y):
    """Difference in maximum values."""
    return np.max(y) - np.max(x)

def range_ratio(x, y):
    """Ratio of ranges."""
    range_x = np.max(x) - np.min(x)
    range_y = np.max(y) - np.min(y)
    return range_y / range_x

def mean_ratio(x, y):
    """Ratio of means."""
    return np.mean(y) / np.mean(x)

# Apply custom statistics
control = np.random.normal(50, 10, 300)
treatment = np.random.normal(55, 12, 300)

# Test different custom statistics
max_result = fb.two_sample_bootstrap(control, treatment, statistic=max_difference)
range_result = fb.two_sample_bootstrap(control, treatment, statistic=range_ratio)
ratio_result = fb.two_sample_bootstrap(control, treatment, statistic=mean_ratio)

print(f"Max Difference: {max_result['statistic_value']:.2f}")
print(f"Range Ratio: {range_result['statistic_value']:.3f}")
print(f"Mean Ratio: {ratio_result['statistic_value']:.3f}")
```

### Unified Bootstrap Interface

Automatic method selection based on input:

```python
import numpy as np
import fastbootstrap as fb

# One-sample (automatic detection)
sample = np.random.gamma(2, 2, 400)
result = fb.bootstrap(sample, statistic=np.mean, method='bca')

# Two-sample (automatic detection)
control = np.random.normal(0, 1, 300)
treatment = np.random.normal(0.3, 1, 300)
result = fb.bootstrap(control, treatment)

# Spotify-style (automatic detection)
result = fb.bootstrap(control, treatment, spotify_style=True, q=0.5)
```

## ⚡ Performance Benchmarks

Performance benchmarks on Apple Silicon M1 Pro (results may vary by system):

### Standard Configuration (n=1,000, bootstrap=10,000)

| Method | Time (seconds) | Bootstrap/sec |
|--------|----------------|---------------|
| Spotify One Sample | 0.001 | 19,717,384 |
| Spotify Two Sample | 0.001 | 9,099,065 |
| One Sample Basic | 0.219 | 45,685 |
| One Sample Percentile | 0.224 | 44,601 |
| Two Sample Standard | 0.230 | 43,471 |
| One Sample Studentized | 0.234 | 42,752 |
| One Sample Bca | 0.243 | 41,201 |
| Poisson Bootstrap | 0.298 | 33,581 |

### Key Performance Insights

- **Fastest Method**: Spotify One Sample (0.001s) - optimized quantile-based approach
- **Multithreading**: Leverages joblib for parallel bootstrap sample generation across CPU cores
- **Parallel Processing**: Automatically scales to utilize all available CPU cores for optimal performance
- **Memory Efficient**: O(n) space complexity with minimal memory overhead for large datasets
- **Vectorized Operations**: NumPy-optimized computations for maximum throughput
- **Scalability**: Linear scaling with sample size and bootstrap iterations, sublinear with CPU cores

## 🔧 API Reference

### Core Functions

#### `bootstrap(control, treatment=None, **kwargs)`
Unified bootstrap interface with automatic method selection.

#### `one_sample_bootstrap(sample, **kwargs)`
Single-sample bootstrap for confidence intervals.

#### `two_sample_bootstrap(control, treatment, **kwargs)`
Two-sample bootstrap for group comparisons.

#### `spotify_one_sample_bootstrap(sample, q=0.5, **kwargs)`
Fast quantile bootstrap using binomial sampling.

#### `spotify_two_sample_bootstrap(control, treatment, q1=0.5, q2=0.5, **kwargs)`
Fast two-sample quantile comparison.

### Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `bootstrap_conf_level` | float | 0.95 | Confidence level (0-1) |
| `number_of_bootstrap_samples` | int | 10000 | Bootstrap iterations |
| `method` | str | 'percentile' | Bootstrap method |
| `statistic` | callable | `np.mean` | Statistical function |
| `seed` | int | 42 | Random seed |
| `plot` | bool | False | Generate plots |

### Bootstrap Methods

- **percentile**: Basic percentile method
- **bca**: Bias-corrected and accelerated
- **basic**: Basic bootstrap
- **studentized**: Studentized bootstrap

### Statistical Functions

- `difference_of_mean`, `difference_of_median`, `difference_of_std`
- `percent_change_of_mean`, `percent_change_of_median`
- `percent_difference_of_mean`, `percent_difference_of_median`

---

<div align="center">

**[⭐ Star us on GitHub](https://github.com/timofeytkachenko/fastbootstrap)** • **[📖 Full Documentation](https://nbviewer.org/github/timofeytkachenko/fastbootstrap/blob/main/bootstrap_experiment.ipynb)**

</div>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fastbootstrap",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "ab-testing, bca-bootstrap, bootstrap, confidence-intervals, data-science, hypothesis-testing, machine-learning, monte-carlo, nonparametric, p-value, percentile-bootstrap, power-analysis, quantile-bootstrap, resampling, sampling-distribution, significance-testing, spotify-bootstrap, statistical-inference, statistical-simulation, statistical-testing, statistics",
    "author": null,
    "author_email": "Timofey Tkachenko <timofey_tkachenko@pm.me>",
    "download_url": "https://files.pythonhosted.org/packages/53/d3/7c607fd756d34b0f6c15630ce1151454d83d0dc7b3b5aa296ca21127c977/fastbootstrap-1.6.1.tar.gz",
    "platform": null,
    "description": "# FastBootstrap\n\n<div align=\"center\">\n\n**\u26a1 Fast Python implementation of statistical bootstrap methods**\n\n[![PyPI version](https://badge.fury.io/py/fastbootstrap.svg)](https://badge.fury.io/py/fastbootstrap)\n[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/release/python-3120/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n*High-performance statistical bootstrap with parallel processing and comprehensive method support*\n\n[Installation](#installation) \u2022 [Quick Start](#quick-start) \u2022 [Examples](#examples) \u2022 [Performance](#performance) \u2022 [API](#api-reference)\n\n</div>\n\n---\n\n## \ud83d\ude80 Features\n\n- **Multiple Bootstrap Methods**: Percentile, BCa, Basic, Studentized, Spotify-style, and Poisson bootstrap\n- **High Performance**: Parallel processing with joblib, optimized NumPy operations\n- **Comprehensive Statistics**: Confidence intervals, p-values, effect sizes, power analysis, quantile-quantile analysis\n- **Flexible API**: Unified interface with method auto-selection\n- **Rich Visualizations**: Built-in plotting with matplotlib and plotly\n- **Production Ready**: Extensive error handling, type hints\n\n## \ud83d\udce6 Installation\n\n```bash\npip install fastbootstrap\n```\n\n### \ud83d\udee0\ufe0f Development Setup\n\n```bash\ngit clone https://github.com/timofeytkachenko/fastbootstrap.git\ncd fastbootstrap\npip install -e \".[dev]\"\npre-commit install\n```\n\n## \ud83c\udfaf Quick Start\n\n```python\nimport numpy as np\nimport fastbootstrap as fb\n\n# Generate sample data\nnp.random.seed(42)\ncontrol = np.random.normal(100, 15, 1000)      # Control group\ntreatment = np.random.normal(105, 15, 1000)    # Treatment group (+5% effect)\n\n# Two-sample bootstrap test\nresult = fb.two_sample_bootstrap(control, treatment, plot=True)\nprint(f\"P-value: {result['p_value']:.4f}\")\nprint(f\"Effect size: {result['statistic_value']:.2f}\")\nprint(f\"95% CI: [{result['confidence_interval'][0]:.2f}, {result['confidence_interval'][1]:.2f}]\")\n```\n\n## \ud83d\udcca Examples\n\n### One-Sample Bootstrap\n\nEstimate confidence intervals for a single sample statistic:\n\n```python\nimport fastbootstrap as fb\nimport numpy as np\n\n# Sample data\nsample = np.random.exponential(2, 500)\n\n# Basic percentile bootstrap\nresult = fb.one_sample_bootstrap(\n    sample,\n    statistic=np.mean,\n    method='percentile',\n    bootstrap_conf_level=0.95,\n    number_of_bootstrap_samples=10000,\n    plot=True\n)\n\nprint(f\"Mean estimate: {result['statistic_value']:.3f}\")\nprint(f\"95% CI: [{result['confidence_interval'][0]:.3f}, {result['confidence_interval'][1]:.3f}]\")\n\n# Advanced: BCa (Bias-Corrected and Accelerated) bootstrap\nbca_result = fb.one_sample_bootstrap(\n    sample,\n    method='bca',\n    statistic=np.median,\n    plot=True\n)\n```\n![One-Sample Bootstrap Example](img/onesample.png)\n\n\n\n### Two-Sample Comparison\n\nCompare two groups with various statistics:\n\n```python\nimport fastbootstrap as fb\nimport numpy as np\n\n# A/B test data\ncontrol = np.random.normal(0.25, 0.1, 800)     # 25% conversion rate\ntreatment = np.random.normal(0.28, 0.1, 800)   # 28% conversion rate\n\n# Test difference in means\nresult = fb.two_sample_bootstrap(\n    control,\n    treatment,\n    statistic=fb.difference_of_mean,\n    number_of_bootstrap_samples=10000,\n    plot=True\n)\n\nprint(f\"Difference in conversion rates: {result['statistic_value']:.1%}\")\nprint(f\"P-value: {result['p_value']:.4f}\")\nprint(f\"Significant: {'Yes' if result['p_value'] < 0.05 else 'No'}\")\n\n# Test percentage change\npercent_result = fb.two_sample_bootstrap(\n    control,\n    treatment,\n    statistic=fb.percent_change_of_mean\n)\nprint(f\"Percentage change: {percent_result['statistic_value']:.1%}\")\n```\n\n![Two-Sample Bootstrap Example](img/twosample.png)\n\n### Spotify-Style Bootstrap\n\nFast quantile-based bootstrap using binomial sampling:\n\n```python\nimport fastbootstrap as fb\nimport numpy as np\n\n# Revenue data (heavy-tailed distribution)\ncontrol_revenue = np.random.lognormal(3, 1, 1000)\ntreatment_revenue = np.random.lognormal(3.1, 1, 1000)\n\n# Compare medians (50th percentile)\nresult = fb.spotify_two_sample_bootstrap(\n    control_revenue,\n    treatment_revenue,\n    q1=0.5,  # Median\n    q2=0.5,\n    plot=True\n)\n\nprint(f\"Median difference: ${result['statistic_value']:.2f}\")\nprint(f\"P-value: {result['p_value']:.4f}\")\n\n# Compare different quantiles\np90_result = fb.spotify_two_sample_bootstrap(\n    control_revenue,\n    treatment_revenue,\n    q1=0.9,  # 90th percentile\n    q2=0.9\n)\nprint(f\"90th percentile difference: ${p90_result['statistic_value']:.2f}\")\n```\n\n### Power Analysis & Simulation\n\nComprehensive statistical power analysis:\n\n```python\nimport numpy as np\nimport fastbootstrap as fb\n\n# Simulate experiment data\ncontrol = np.random.normal(100, 20, 500)\ntreatment = np.random.normal(110, 20, 500)  # 10% effect size\n\n# Power analysis\npower_result = fb.power_analysis(\n    control,\n    treatment,\n    number_of_experiments=1000,\n    plot=True\n)\n\nprint(\"Power Analysis Results:\")\nprint(f\"Statistical Power: {power_result['power_summary']['statistical_power']:.3f}\")\nprint(f\"Type I Error Rate: {power_result['power_summary']['type_i_error_rate']:.3f}\")\nprint(f\"Effect Size: {power_result['power_summary']['treatment_mean'] - power_result['power_summary']['control_mean']:.1f}\")\n\n# A/A test validation (should show ~5% false positive rate)\naa_result = fb.aa_test_simulation(\n    np.concatenate([control, treatment]),\n    number_of_experiments=2000\n)\nprint(f\"A/A Test False Positive Rate: {aa_result['type_i_error_rate']:.3f}\")\n```\n\n![Power Analysis](img/power_analysis.png)\n\n### Quantile-Quantile Analysis\n\n```python\nimport numpy as np\nimport fastbootstrap as fb\n\n# Simulate experiment data\ncontrol = np.random.exponential(scale=1 / 0.001, size=n)\ntreatment = np.random.exponential(scale=1 / 0.00101, size=n)\n\n# Quantile-quantile bootstrap analysis\nfb.quantile_bootstrap_plot(control, treatment, n_step=1000)\n```\n\n![Quantile Plot](img/quantile_plot.png)\n\n### Custom Statistics\n\nBootstrap with simple custom statistical functions:\n\n```python\nimport numpy as np\nimport fastbootstrap as fb\n\n# Simple custom statistics\ndef max_difference(x, y):\n    \"\"\"Difference in maximum values.\"\"\"\n    return np.max(y) - np.max(x)\n\ndef range_ratio(x, y):\n    \"\"\"Ratio of ranges.\"\"\"\n    range_x = np.max(x) - np.min(x)\n    range_y = np.max(y) - np.min(y)\n    return range_y / range_x\n\ndef mean_ratio(x, y):\n    \"\"\"Ratio of means.\"\"\"\n    return np.mean(y) / np.mean(x)\n\n# Apply custom statistics\ncontrol = np.random.normal(50, 10, 300)\ntreatment = np.random.normal(55, 12, 300)\n\n# Test different custom statistics\nmax_result = fb.two_sample_bootstrap(control, treatment, statistic=max_difference)\nrange_result = fb.two_sample_bootstrap(control, treatment, statistic=range_ratio)\nratio_result = fb.two_sample_bootstrap(control, treatment, statistic=mean_ratio)\n\nprint(f\"Max Difference: {max_result['statistic_value']:.2f}\")\nprint(f\"Range Ratio: {range_result['statistic_value']:.3f}\")\nprint(f\"Mean Ratio: {ratio_result['statistic_value']:.3f}\")\n```\n\n### Unified Bootstrap Interface\n\nAutomatic method selection based on input:\n\n```python\nimport numpy as np\nimport fastbootstrap as fb\n\n# One-sample (automatic detection)\nsample = np.random.gamma(2, 2, 400)\nresult = fb.bootstrap(sample, statistic=np.mean, method='bca')\n\n# Two-sample (automatic detection)\ncontrol = np.random.normal(0, 1, 300)\ntreatment = np.random.normal(0.3, 1, 300)\nresult = fb.bootstrap(control, treatment)\n\n# Spotify-style (automatic detection)\nresult = fb.bootstrap(control, treatment, spotify_style=True, q=0.5)\n```\n\n## \u26a1 Performance Benchmarks\n\nPerformance benchmarks on Apple Silicon M1 Pro (results may vary by system):\n\n### Standard Configuration (n=1,000, bootstrap=10,000)\n\n| Method | Time (seconds) | Bootstrap/sec |\n|--------|----------------|---------------|\n| Spotify One Sample | 0.001 | 19,717,384 |\n| Spotify Two Sample | 0.001 | 9,099,065 |\n| One Sample Basic | 0.219 | 45,685 |\n| One Sample Percentile | 0.224 | 44,601 |\n| Two Sample Standard | 0.230 | 43,471 |\n| One Sample Studentized | 0.234 | 42,752 |\n| One Sample Bca | 0.243 | 41,201 |\n| Poisson Bootstrap | 0.298 | 33,581 |\n\n### Key Performance Insights\n\n- **Fastest Method**: Spotify One Sample (0.001s) - optimized quantile-based approach\n- **Multithreading**: Leverages joblib for parallel bootstrap sample generation across CPU cores\n- **Parallel Processing**: Automatically scales to utilize all available CPU cores for optimal performance\n- **Memory Efficient**: O(n) space complexity with minimal memory overhead for large datasets\n- **Vectorized Operations**: NumPy-optimized computations for maximum throughput\n- **Scalability**: Linear scaling with sample size and bootstrap iterations, sublinear with CPU cores\n\n## \ud83d\udd27 API Reference\n\n### Core Functions\n\n#### `bootstrap(control, treatment=None, **kwargs)`\nUnified bootstrap interface with automatic method selection.\n\n#### `one_sample_bootstrap(sample, **kwargs)`\nSingle-sample bootstrap for confidence intervals.\n\n#### `two_sample_bootstrap(control, treatment, **kwargs)`\nTwo-sample bootstrap for group comparisons.\n\n#### `spotify_one_sample_bootstrap(sample, q=0.5, **kwargs)`\nFast quantile bootstrap using binomial sampling.\n\n#### `spotify_two_sample_bootstrap(control, treatment, q1=0.5, q2=0.5, **kwargs)`\nFast two-sample quantile comparison.\n\n### Parameters\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `bootstrap_conf_level` | float | 0.95 | Confidence level (0-1) |\n| `number_of_bootstrap_samples` | int | 10000 | Bootstrap iterations |\n| `method` | str | 'percentile' | Bootstrap method |\n| `statistic` | callable | `np.mean` | Statistical function |\n| `seed` | int | 42 | Random seed |\n| `plot` | bool | False | Generate plots |\n\n### Bootstrap Methods\n\n- **percentile**: Basic percentile method\n- **bca**: Bias-corrected and accelerated\n- **basic**: Basic bootstrap\n- **studentized**: Studentized bootstrap\n\n### Statistical Functions\n\n- `difference_of_mean`, `difference_of_median`, `difference_of_std`\n- `percent_change_of_mean`, `percent_change_of_median`\n- `percent_difference_of_mean`, `percent_difference_of_median`\n\n---\n\n<div align=\"center\">\n\n**[\u2b50 Star us on GitHub](https://github.com/timofeytkachenko/fastbootstrap)** \u2022 **[\ud83d\udcd6 Full Documentation](https://nbviewer.org/github/timofeytkachenko/fastbootstrap/blob/main/bootstrap_experiment.ipynb)**\n\n</div>\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Fast Python implementation of statistical bootstrap",
    "version": "1.6.1",
    "project_urls": {
        "Homepage": "https://github.com/timofeytkachenko/fastbootstrap"
    },
    "split_keywords": [
        "ab-testing",
        " bca-bootstrap",
        " bootstrap",
        " confidence-intervals",
        " data-science",
        " hypothesis-testing",
        " machine-learning",
        " monte-carlo",
        " nonparametric",
        " p-value",
        " percentile-bootstrap",
        " power-analysis",
        " quantile-bootstrap",
        " resampling",
        " sampling-distribution",
        " significance-testing",
        " spotify-bootstrap",
        " statistical-inference",
        " statistical-simulation",
        " statistical-testing",
        " statistics"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0e05536bff33da84b7e1ec5a70659399667338b5754b58ae08102358ffb25e93",
                "md5": "fc9af2f4311d86f863b4043e7e1fae29",
                "sha256": "46bf0f490111d1040bfa6247348038705280512317c614e3ee4f0596a12252c2"
            },
            "downloads": -1,
            "filename": "fastbootstrap-1.6.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fc9af2f4311d86f863b4043e7e1fae29",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 169334,
            "upload_time": "2025-07-16T17:39:03",
            "upload_time_iso_8601": "2025-07-16T17:39:03.601671Z",
            "url": "https://files.pythonhosted.org/packages/0e/05/536bff33da84b7e1ec5a70659399667338b5754b58ae08102358ffb25e93/fastbootstrap-1.6.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "53d37c607fd756d34b0f6c15630ce1151454d83d0dc7b3b5aa296ca21127c977",
                "md5": "1e24da9379305d9c70a7223425285eb9",
                "sha256": "260ce170ca10771b9714c2ef63562a8c9d52e632e510fde20038a594b32da5b3"
            },
            "downloads": -1,
            "filename": "fastbootstrap-1.6.1.tar.gz",
            "has_sig": false,
            "md5_digest": "1e24da9379305d9c70a7223425285eb9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 169112,
            "upload_time": "2025-07-16T17:39:05",
            "upload_time_iso_8601": "2025-07-16T17:39:05.416366Z",
            "url": "https://files.pythonhosted.org/packages/53/d3/7c607fd756d34b0f6c15630ce1151454d83d0dc7b3b5aa296ca21127c977/fastbootstrap-1.6.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-16 17:39:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "timofeytkachenko",
    "github_project": "fastbootstrap",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "fastbootstrap"
}
        
Elapsed time: 0.83120s