Repository navigation
The first stable release, covering everything Python Prophet 1.4.0 does except plotting. From now
on, breaking changes to the public API wait for a new major version. Each kind of bad input now fails with its own typed error instead of one
InputValidationError, so code that catches that error or reads its input field must move to
the new errors.
Changed
-
Typed input errors.
InputValidationErrorandValidationInputare removed. Each kind of
input has its own error, with a fixed list ofreasonvalues:ObservationError,
PredictionInputError,OptionsError,FutureTimestampsError,UncertaintyOptionsError,
EvaluationPlanError,MetricOptionsError,SearchOptionsErrorandHoldoutInputError.- Every input error keeps
issuesandmessage. Errors about rows also name the first
rejected row withrowIndex,fieldandname, and the others give its location inpath. - Rejected shapes have
reason: "invalid-shape", and an empty history"empty". - When the input has several kinds of problems, the error reports the first kind found and
every problem of that kind. SearchOptionsErrornames a failing candidate withcandidateIndexand keeps the original
error incause, which isn't saved when a report is encoded.- The
InputErrorunion andisInputErrormatch any of them, for example with
Effect.catchIf. - Holdout reports record a candidate's input error as its error and
reason. Saved reports
that recorded anInputValidationErrorno longer decode.
See Input errors.
- Every input error keeps
Fixed
- Automatic changepoints now match Prophet when a candidate lands exactly between two rows.
NumPy'slinspacedivides before it multiplies, and Effect Prophet multiplied first, so the two
could round to different rows and move a changepoint by one. On one 30-row history this changed
the trend by about 0.82; it now matches Python's. predictUncertaintyandpredictWithIntervalsgiven around 150,000 rows or more crashed with
RangeError: Maximum call stack size exceeded. They now fail with aPredictionErrorwhose
reasonis"simulation-limit", like any request over the 10,000-row limit.decodeEvaluationReportfroze the caller's ownselected.optionsobject, so editing it
afterwards threw. It now returns a frozen copy.
Documentation
- The tracing guide,
README and home page now say that the attributes Effect Prophet sets contain no user data. A
failed span still carries its error, and exporters such asOtlpTracersend its message and
stack trace, which can name your fields. - Benchmark pages no longer compare speeds when the two libraries do different work: Bayesian
predict, uncertainty with MAP or Bayesian fits, and evaluation cases. They show "Not compared:
different work" with a note, and keep both raw times. - Regressors explains the units of
additive and multiplicative coefficients, and thatmodedefaults toseasonalityMode. - The seasonality and events guides no longer say an individual event takes its own
mode.
holidaysModesets one mode for every event. - Coming from Python maps
mcmc_samplestomcmc, and What's different
notes that cross-validation has no counterpart toextra_output_columns. - The Bayesian guide and the Python differences page separate
mcmcoption limits, which fail
with anOptionsError, from the limit on kept values, which fails with
FittingError("sampling-limit").
Verification against Python Prophet
- A new changepoint fixture checks a history whose automatic changepoint candidate falls on a
rounding tie. - Refreshed benchmarks time logistic Bayesian fits at 4–5 times as long as Python's native
CmdStan, not the 3–4 times reported for 0.7.0: that run timed Python's slowest logistic case
while the machine was sleeping. The
Bayesian guide now says so. Linear
and flat fits still take about as long as Python's.
Full Changelog: v0.7.0...v1.0.0