Repository navigation
ppsds 0.0.2 (private beta)
Pre-release
Pre-release
A private beta, not on PyPI. The second beta: the package stops being only about DRPP. DRPP
answers what can a predictor guarantee when the model is uncertain — a lower bound. This release
adds the other side of that question, how well could anything predict a system known exactly —
an upper bound — and a way to feel the difference before reading any of it. It also rebuilds the
documentation around the question of who each page is for.
Added
ppsds.predictability— theepsilon-logarithm score's reference values:
predictability_upper_bound(the best expected score any predictor could reach, a property of
the system alone),approximation_value(theO(epsilon)approximation for a given
predictor),differential_entropy/cross_entropy, and trajectory aggregation
(cumulative_average,across_trajectories).EpsilonLogarithmScore— the neighbourhood scoring rule, replacing the previous zero-caller
stub. It is vectorised, callable, and dispatches on the law it is given:logpdfat
epsilon = 0, abox_integralmethod for pmfs, a closed form for diagonal Gaussians, and CDF
inclusion-exclusion as the general fallback. These paths are tested against each other, not
against stored constants.ppsds.numerics.atom_pmf.AtomPmf— a predictive law as weighted atoms. Its support need not
contain the true distribution's, which is the point: under the neighbourhood score a sparse
pmf is a usable prediction, while under the ordinary logarithm score it is-infalmost
surely.ppsds.probabilistic_predictor.pmf— a second kind of predictor besidedrpp:
StaticAtomPmfPredictorandDriftShiftedAtomPmfPredictor, which predict with a pmf you
supply rather than one a model derives.ppsds.dynamics.known_sds.AdditiveDriftSdsandppsds.environment.KnownSdsEnv— a system that
is known exactly (drift plus a named noise law, non-Gaussian included) and a gymnasium
environment that steps it.Envstill serves scene 2;KnownSdsEnvis the exception.- Examples reproducing the predictability paper's figure (
examples/understand_predictability/) and
running your own pmf bets as an experiment (experiments/pmf_betting/). - An interactive page at https://xuzerken.github.io/ppsds/examples/understand_ppsds_by_pmf_betting/ that scores a hand of bets live,
and a README animation of it. The page replays trajectories exported from
experiments/pmf_betting/presets.py, and checks its own JavaScript against vectors computed by
ppsdson every load. EpsilonLogarithmScore,AtomPmf, the pmf predictors and the predictability functions are now
re-exported from the top level.docs/assets/map.png— a route map across the four sections, used by the README, the site home
andtutorials/map.md.docs/assets/paper-drpp.pnganddocs/assets/paper-predictability.png— each paper's own
vector figure rasterised separately for its Research page.
Changed
- The documentation site is organised as four kinds of node. Home, then Examples (stories
you can run), Experiments (the same questions at paper scale), Research (the common
preliminaries and one page per paper, each with its own citation), Tutorials (topics treated
on their own terms), and API. The old flat shelf (Concepts,Predictability,Examples,
Developer Guide,Citation) is gone;concepts.mdbecame the Research preliminaries and the
separate citation page was retired because every paper page now ends with its citation. - The batch experiments moved out of
examples/intoexperiments/:
experiments/drpp/,experiments/pmf_betting/andexperiments/predictability/. Each example
and experiment directory now carries its ownenvironment.yml, so one page can be run without
installing the rest.examples/understand_ppsds_by_pmf_betting/keeps its README: its runnable
front is the no-install game page. - The README sells routes, not a page list. It opens with a two-column game block (the
animation beside the rules that map onto the package), a one-row-per-reader entry table, and
cross-section routes through Examples, Experiments, Research and Tutorials. The old
The examplesandA predictor on your own systemsections were removed: both duplicated pages
the site now owns. - The citation and licence sections were merged; contributing is a reader type in the entry table
rather than a separate section.
Notes
- No number moved. The DRPP experiment was compared against the pre-move commit with
tools/ab_compare.py; every compared array is bit-identical. - The
epsilon-logarithm score is discontinuous atepsilon = 0, and this is a property of
the definition rather than an artefact: at exactly zero it islog p(x), while for any
epsilon > 0it carries ad log(2 epsilon)volume term and runs to-infasepsilon
shrinks. Subtract that term to recover the ordinary logarithm score; do not take a limit. multivariate_uniformgained a batch-awarepdf/cdfand an optionalrngforrvs. The
defaultrvspath is unchanged, and the DRPP numbers are bit-identical.