Skip to content

Empirical Distribution#107

Open
wrdxwrdxwrdx wants to merge 2 commits into
mainfrom
empirical-distribution
Open

Empirical Distribution#107
wrdxwrdxwrdx wants to merge 2 commits into
mainfrom
empirical-distribution

Conversation

@wrdxwrdxwrdx
Copy link
Copy Markdown
Collaborator

@wrdxwrdxwrdx wrdxwrdxwrdx commented May 10, 2026

Summary

Adds EmpiricalDistribution — a continuous univariate distribution built from observed data via a pluggable density estimator (KDE by default). PDF is provided analytically; CDF and PPF are derived automatically by the characteristic graph.

See examples/example_empirical_distribution.ipynb for end-to-end usage.

Added

Distribution

  • EmpiricalDistribution — wraps any EmpiricalMethod into a Distribution
  • EmpiricalMethod / FittedEmpirical — protocols for custom estimators
  • ScipyGaussianKde — built-in method via scipy.stats.gaussian_kde (bandwidth: "scott", "silverman", or float)
  • with_method(m) — returns an independent clone with a new method (shared sample, no copy)
  • set_method(m) — replaces the estimator in place; cache and sampler reset automatically

Computation strategy

  • EmpiricalComputationStrategy — extends DefaultComputationStrategy with:
    • Estimator-identity invalidation: detects _estimator swap via is-comparison on every query_method call; no explicit invalidate() needed
    • Vectorised PPF: CDF tabulation + PCHIP inversion, avoids per-quantile root-finding

Fixed

  • DefaultUnuranSamplingStrategy.__deepcopy__ — returns a fresh uninitialised instance instead of trying to copy CFFI state; previously with_method crashed after the first sample() call

@wrdxwrdxwrdx wrdxwrdxwrdx force-pushed the empirical-distribution branch from 2f53407 to 261c89c Compare May 11, 2026 00:14
@wrdxwrdxwrdx wrdxwrdxwrdx marked this pull request as ready for review May 11, 2026 00:34
@wrdxwrdxwrdx wrdxwrdxwrdx changed the title feat: empirical distribution Empirical Distribution May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant