Skip to content

Bootstrap Classes

Bootstrap resampling methods for time series and dependent data.

StationaryBootstrap

Stationary bootstrap with random block lengths (Politis & Romano, 1994).

from polars_statistics import StationaryBootstrap

bootstrap = StationaryBootstrap(
    expected_block_length: float = 5.0,
    seed: int | None = None,
)

samples = bootstrap.samples(data, n_samples=1000)

Block lengths are drawn from a geometric distribution with mean expected_block_length.


CircularBlockBootstrap

Circular block bootstrap with fixed block length.

from polars_statistics import CircularBlockBootstrap

bootstrap = CircularBlockBootstrap(
    block_length: int = 10,
    seed: int | None = None,
)

samples = bootstrap.samples(data, n_samples=1000)

Example

import numpy as np
from polars_statistics import StationaryBootstrap

# Time series data
np.random.seed(42)
data = np.cumsum(np.random.randn(100))  # Random walk

# Generate bootstrap samples
bootstrap = StationaryBootstrap(expected_block_length=5.0, seed=42)
samples = bootstrap.samples(data, n_samples=1000)

# Compute bootstrap confidence interval for mean
means = [s.mean() for s in samples]
ci_lower = np.percentile(means, 2.5)
ci_upper = np.percentile(means, 97.5)
print(f"95% CI for mean: [{ci_lower:.2f}, {ci_upper:.2f}]")

Choosing Block Length

Data Characteristics Recommendation
Low autocorrelation Shorter blocks (3-5)
High autocorrelation Longer blocks (10-20)
Seasonal patterns Block length >= season length

See Also