Skip to content

Cross-validation with ranges, eight months ​

match ← All logistic growth benchmarks

The same long folds with simulated futures for interval coverage.

Input ​

benchmark/inputs/v1/logistic-implicit-floor-large.json: 256 history rows and 64 forecast rows.

Output ​

Largest difference: 0.028 (0.034% of the input's range).

Each row is one forecast made during cross-validation, next to the value that actually happened.

DateActualEffect ProphetPython ProphetDifference
2020-08-1387.351487.333187.31370.019
2020-08-1487.648887.537687.54130.0037
2020-08-1587.424987.402487.41100.0086
2020-08-1687.092187.141587.15150.010
2020-08-1787.073287.028387.05640.028
2020-08-1887.284587.224487.24530.021
2020-08-1987.621587.693987.67900.015
2020-08-2088.104388.179688.15950.020
2020-08-2188.421088.387188.38940.0024
2020-08-2288.240388.248688.25580.0072
2020-08-2387.879487.985387.99400.0086
2020-08-2487.855887.875087.90120.026
2020-08-2588.145588.070788.09020.019
2020-08-2688.522088.536788.52140.015

Timing ​

Median of all measured repetitions.

StepEffect ProphetPython ProphetEffect Prophet is
Cross-validate with ranges16.1 ms56.8 ms3.5× faster

Settings ​

The case declaration both libraries ran.

json
{
  "kind": "evaluation",
  "comparison": {
    "kind": "different-public-work",
    "evidenceId": "rolling-origin-evaluation-v1"
  },
  "configuration": {
    "growth": "logistic",
    "scaling": "minmax",
    "seasonalityMode": "additive",
    "holidaysMode": "additive",
    "changepoints": {
      "mode": "explicit",
      "timestamps": [
        "2020-02-10T00:00:00.000Z"
      ]
    },
    "changepointPriorScale": 0.2,
    "seasonalities": [
      {
        "name": "weekly-custom",
        "periodDays": 7,
        "fourierOrder": 2,
        "priorScale": 10
      }
    ],
    "events": [],
    "regressors": []
  },
  "pythonOptimizer": {
    "algorithm": "Auto",
    "maxIterations": 10000,
    "newtonFallback": true,
    "sigFigs": 12
  },
  "plan": {
    "horizonMs": 604800000,
    "cutoffs": [
      "2020-08-12T00:00:00.000Z",
      "2020-08-19T00:00:00.000Z"
    ]
  },
  "metricAggregation": "rolling",
  "mapeZeroActual": "exclude",
  "interval": {
    "seed": 19,
    "samples": 256,
    "intervalWidth": 0.8
  }
}

Inspired by Prophet from Meta. Not affiliated with Meta.