← Back to all sparks
P

profoc

INFRA · APIS
Velocity0.0

Probabilistic Forecast Combination Using CRPS Learning

A forecast combination package that spun its profiler out into its own project

forecastingonline-learningr-packagercppensemble-methodsprobabilistic-forecasting
Current state
profoc combines probabilistic forecasts online, using the Bernstein online aggregation family with B-spline smoothing over quantiles and time. The recent releases are infrastructure rather than method: 1.3.4 removed a using namespace arma directive for CRAN compliance and closed a timer edge case, 1.3.3 adjusted the integration with rcpptimer against its now-stable 1.2.0 API. The last release to change what users can do was 1.3.0, which exposed the conline C++ class to R and exported init_experts_list(), make_basis_mats(), make_hat_mats() and post_process_model() so the engine can be driven directly.
Where it's heading
The direction is toward a reusable C++ core with thin language bindings. The timing code that lived inside profoc was extracted into the standalone rcpptimer package in 1.3.2, deliberately so other R packages and Python projects could use it through cpptimer and cppytimer, and the clock header was reworked in 1.3.1 to maximise the code shared between the R and Python versions. Method work sits earlier in the history - periodic splines and penalties in 1.2.0, the penalty() function in 1.1.0 - while the recent cadence, a single release in the last sixteen months, points at a package the maintainer considers finished.
Prediction
The repeated references to future Python use suggest the next significant work happens outside this package, in the shared C++ components, rather than in profoc's R surface.

Recent moves

  1. 6mo ago

    CRAN compliance fix removing a namespace directive

    Drops using namespace arma to satisfy CRAN policy and stops a timer that was left running in edge cases. Compliance housekeeping, and the only release in sixteen months.

    View source ↗
  2. 1y ago

    Timer integration updated to the stable rcpptimer API

    Adjusts how profoc consumes rcpptimer now that its 1.2.0 API is expected to be stable, simplifying the calling code. The follow-through on the extraction two releases earlier, with no user-facing effect.

    View source ↗
  3. 2y ago

    Timing code extracted into the standalone rcpptimer package

    Moves the timer out of profoc into rcpptimer, which becomes a dependency, explicitly so other R packages and Python projects can use it via cpptimer and cppytimer. profoc gets smaller and easier to maintain; the interesting half of this release lands in a different package's changelog.

    View source ↗
  4. 2y ago

    Integer overflow fix and Welford timing statistics

    Fixes an integer overflow in the clock header that made the package fail outright on some systems, and corrects online() when regret is exactly zero - which happens with a single expert or two experts making identical early predictions. The switch to Welford's algorithm for timing means standard deviations now appear in the times table.

    View source ↗
  5. 2y ago

    The conline C++ class opens up to R users

    Exposes weights from the conline C++ class to R and exports the helper functions needed to work with it directly, alongside articles on deploying online learning in production. This is the release that made the engine addressable rather than only reachable through online(), and it also simplified online() itself.

    View source ↗
  6. 2y ago

    Quantile crossing flagged and tidy methods added

    Adds predictions_got_sorted to the output so users can tell when quantile crossing occurred and predictions were reordered - a diagnostic that is otherwise invisible. tidy() methods convert weights, predictions and loss objects to tibbles, which is what makes the output usable with the rest of the tidyverse.

    View source ↗