Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

increment

Analyze experiments directly from your warehouse or a dataframe.

Estimate treatment effects, quantify uncertainty, and inform decisions using data that already exists. Define warehouse analyses in version-controlled YAML, or start directly from a dataframe. Increment does not assign traffic, ship feature flags, or maintain a separate event store.

Quickstart · Warehouse analysis · Documentation · Statistical limitations

What you can do

  • Analyze experiments — estimate effects, reduce variance with CUPED, apply multiple-comparison corrections, and check sample-ratio mismatch.
  • Bayesian inference — combine prior beliefs with experiment data to estimate effects and probabilities of benefit.
  • Plan and monitor — solve for sample size, power, and minimum detectable effect; use sequential methods for repeated looks under their stated assumptions.
  • Estimate causal effects — use IPTW, DML, or AIPW for observational treatments from dataframes, or analyze encouragement designs and switchback contrasts.
  • Explore and report — inspect breakouts, trends, and heterogeneous treatment effects; produce readout tables, dashboards, and sitewide-impact estimates.

Not every method works with every metric or design. The method guide helps you choose; the compatibility matrix shows supported combinations.

Quickstart

Requires Python 3.12–3.14. Install the pre-release package and Polars for this example:

pip install --pre increment polars

Start with one row per randomization unit. This example generates a small control/treatment dataset and estimates the relative change in mean revenue:

from random import Random

import polars as pl
from increment import Analysis

rng = Random(0)
df = pl.DataFrame(
    {
        "user_id": [f"u{i}" for i in range(200)],
        "variant": ["control"] * 100 + ["treatment"] * 100,
        "revenue": [rng.gauss(20 + (i >= 100), 5) for i in range(200)],
    }
)

results = Analysis.from_unit_summary(
    df,
    unit="user_id",
    group="variant",
    control="control",
    metrics={"revenue": "mean"},
).run()

for result in results:
    print(f"{result.metric}: lift={result.lift.value:+.1%}")
revenue: lift=+7.5%

Replace the generated data with your own unit-level dataframe. No YAML, warehouse connection, or DuckDB is required. Other Narwhals-supported eager dataframes work as well. For unit-by-day data, use Analysis.from_unit_panel.

The dataframe quickstart covers metric declarations, missing values, analysis plans, uncertainty intervals, and monitoring.

Connect your warehouse

Declare sources, exposures, metrics, and experiments in YAML. Bind the definitions to an Ibis connection to inspect the generated SQL and run an analysis:

import ibis
from increment import Analysis

con = ibis.snowflake.connect(...)
analysis = Analysis.from_definitions("checkout_redesign", "definitions/", con)

print(analysis.summary_sql()["revenue"])
results = analysis.run()

Install your warehouse's Ibis backend separately—for example, pip install 'ibis-framework[snowflake]'. The core package bundles no database driver. DuckDB, PostgreSQL, Snowflake, and BigQuery have execution test suites; coverage is not a promise that every method works on every backend.

See the runnable warehouse example and data-model guide for YAML setup, query inspection, portable unit-day artifacts, and moments exports.

Optional extras

Install Adds
increment[demo] DuckDB for local examples and simulation
increment[tables] CoefTable and pandas for rendered readouts
increment[dashboard] marimo, CoefTable, and pandas for an HTML experiment dashboard

Explore the guides

Goal Guide
Choose an analysis method Method selection
Set up dataframe inputs Quickstart
Define warehouse data and experiments Data model
Understand metrics and supported combinations Metric types · Compatibility
Use priors and probability-based decisions Bayesian inference
Reduce variance CUPED
Correct multiple comparisons Multiplicity
Monitor an experiment Sequential inference
Plan sample size or power Power analysis
Analyze non-randomized treatments Observational inference
Analyze encouragement or switchback designs Encouragement · Switchback
Explore treatment-effect differences Heterogeneity and rollout
Build an experiment dashboard Dashboard
Look up public APIs API reference

The examples/ directory contains runnable marimo notebooks for warehouse and dataframe analyses, power, CUPED, causal inference, and reporting. See the examples guide to choose one.

Scope and statistical assumptions

Increment analyzes randomized experiments from dataframes or SQL warehouses; observational treatments are supported from dataframes. It estimates effects—it does not make an observational comparison causal without identification assumptions.

Exact and asymptotic methods have different guarantees. Repeated looks require a compatible sequential procedure to claim frequentist error control; Bayesian posterior probabilities do not automatically provide that guarantee. Unsupported combinations surface coded errors or warnings; partial results may be returned when only some requested cells are unsupported.

Read the statistical limitations, compatibility matrix, and backend verification notes before choosing an analysis for production use.

Contributing and license

See CONTRIBUTING.md for development setup and contribution requirements. Contributions require a signed Contributor License Agreement.

Apache License 2.0 — see LICENSE and NOTICE. Copyright 2026 Kyle Caron.

Metadata

Release files for increment 0.1.0a2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for increment 0.1.0a2
File Size Uploaded
increment-0.1.0a2.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for increment 0.1.0a2
File Interpreter ABI Platform
increment-0.1.0a2-py3-none-any.whl Python 3 none any Details

Total release size: 2.5 MB

Release files / increment-0.1.0a2.tar.gz

Download URL increment-0.1.0a2.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
af909df3235db01a3f02a8e4c060b89e9e1fdf8a4d232fb66634b3bf30e1c004
BLAKE2b-256 checksum
How to use checksums
66175168e5c29e1971a6e0af710e051d4378978b207eda4f6c2e3c5f2cb4696b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / increment-0.1.0a2-py3-none-any.whl

Download URL increment-0.1.0a2-py3-none-any.whl
Size 1.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
15804cd12624155800fde40737996a2c2018f9741ca1e208c2aba085cc173fb6
BLAKE2b-256 checksum
How to use checksums
425ac562cd8025843d229d373a86bf43340f4fc6d4b35b641dfc506b93d215ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0a2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page