Skip to content

Ranges with an explicit floor ​

match ← All logistic growth benchmarks

80% ranges from 512 simulated paths for a model bounded by a floor and ceiling.

Input ​

benchmark/inputs/v1/logistic-explicit-floor.json: 96 history rows and 24 forecast rows.

Output ​

Largest difference: 1.1e-11 (< 0.0001% of the input's range).

Every forecast row from both libraries.

DateEffect ProphetPython ProphetDifference
2020-04-0665.832765.83271.1e-11
2020-04-0766.248166.24811.1e-11
2020-04-0867.285467.28541.1e-11
2020-04-0967.569967.56991.1e-11
2020-04-1067.957067.95701.1e-11
2020-04-1168.003368.00331.0e-11
2020-04-1267.897767.89771.0e-11
2020-04-1367.942967.94299.9e-12
2020-04-1468.695668.69569.4e-12
2020-04-1568.934868.93489.5e-12
2020-04-1669.549369.54939.3e-12
2020-04-1769.895269.89528.9e-12
2020-04-1869.901669.90168.7e-12
2020-04-1969.757269.75728.5e-12
2020-04-2070.155670.15567.9e-12
2020-04-2170.099070.09908.1e-12
2020-04-2270.685170.68517.9e-12
2020-04-2371.265471.26547.7e-12
2020-04-2471.578371.57837.4e-12
2020-04-2571.552871.55287.2e-12
2020-04-2671.775971.77596.6e-12
2020-04-2771.355471.35546.8e-12
2020-04-2871.660771.66076.7e-12
2020-04-2972.219072.21906.5e-12

Timing ​

Median of all measured repetitions.

StepEffect ProphetPython ProphetEffect Prophet is
Convert input rows43 µs492 µs11× faster
Save model to JSON34 µs499 µs15× faster
Load model from JSON200 µs2.52 ms13× faster
Simulate uncertainty945 µs89.0 ms94× faster
First simulation in a new process185 ms1.59 s8.6× faster
Load and simulate in a new process154 ms1.55 s10× faster

Settings ​

The case declaration both libraries ran.

json
{
  "kind": "map",
  "comparison": {
    "kind": "equivalent-objective",
    "evidenceId": "logistic-map-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": [
      {
        "name": "promotion",
        "priorScale": 10,
        "standardization": "never",
        "mode": "multiplicative"
      }
    ]
  },
  "pythonOptimizer": {
    "algorithm": "Auto",
    "maxIterations": 10000,
    "newtonFallback": true,
    "sigFigs": 12
  },
  "uncertainty": {
    "seed": 19,
    "samples": 512,
    "intervalWidth": 0.8,
    "output": "intervals",
    "algorithm": "scalar-continuous-time",
    "evidence": "docs/validation/uncertainty.md#evidence-classes",
    "samplerMemoryLimitBytes": 67108864
  }
}

Inspired by Prophet from Meta. Not affiliated with Meta.