Skip to content

v0.3.0

Choose a tag to compare

@jer-k jer-k released this 23 Oct 20:43
· 119 commits to main since this release
e7bca57

A correctness release: broader checks against Python Prophet 1.4.0, and the fixes they turned up.
Evaluation scores now match Python's exactly, which removes a few options and fields, so read
Removed before upgrading.

Added

  • FittingError has a memory-limit reason for models too large for WebAssembly's 4 GiB of
    memory.

Changed

  • Flat growth fits the way Python does. Every flat model uses Prophet's Stan optimizer and
    accepts map.changepoints and map.changepointPriorScale. Models saved by earlier versions
    still load and predict.
  • Large Fourier orders fit quickly, and models with more than 2048 parameters, which used to
    fail, now fit as they do in Python.
  • Histories the model can fit exactly, such as noiseless data, fit with a noise scale near
    zero, as in Python, instead of failing.
  • Standardized regressors use exactly the mean and standard deviation Python computes.
  • performanceMetrics matches Python's performance_metrics exactly, so some scores change,
    most of all rolling scores. rows scores are sorted by horizon, as in Python.
  • mape fails with zero-actual when an actual is within 1e-8 of zero, not only at exactly
    zero.
  • decodeEvaluationReport rejects holdout reports saved by earlier versions, because their scores
    are recomputed when decoded.

Fixed

  • Regressors that are not standardized no longer fail validation when their values are too large
    to average.

Removed

  • The noise-collapse reason of FittingError, which no fit returns any more.
  • The mapeZeroActual option of performanceMetrics, searchModels and evaluateHoldout, with
    the includedCount and excludedCount score fields. To skip zero actuals, leave those rows out
    before scoring.
  • rowCount on rolling metric points, which always equals the report's windowRows. They now
    have their own RollingMetricPoint type.
  • The empty-bucket reason of EvaluationMetricError, which can no longer happen.

Verification against Python Prophet

  • Property-based tests run in every CI build and check that hostile input produces typed
    errors, never crashes.
  • A weekly differential comparison fits hundreds of newly generated inputs with both
    libraries and reports every case where Effect Prophet fits worse, with a seed that replays it.
    Cases where Python's own result is unstable are reported separately. Run it locally with
    npm run differential.
  • New fixtures cover regressor standardization, large Fourier orders and evaluation metrics.

Full Changelog: v0.2.0...v0.3.0