Three automatic changepoints, absmax scaling
match ← All logistic growth benchmarks96 daily rows rising toward a ceiling of about 100, with a little noise. Prediction covers the history and 24 more days. Changepoints are spread over the first 80% of the history. Values are divided by their largest distance from the floor.
Input
benchmark/inputs/v2/logistic-basic-96.json: 96 history rows and 120 forecast rows.
Output
Largest difference: 1.3e-11 (< 0.0001% of the input's range).
Every forecast row from both libraries.
| Date | Effect Prophet | Python Prophet | Difference |
|---|---|---|---|
| 2020-01-01 | 14.1882 | 14.1882 | 2.9e-12 |
| 2020-01-02 | 14.7203 | 14.7203 | 2.8e-12 |
| 2020-01-03 | 15.2688 | 15.2688 | 2.7e-12 |
| 2020-01-04 | 15.8342 | 15.8342 | 2.6e-12 |
| 2020-01-05 | 16.4167 | 16.4167 | 2.5e-12 |
| 2020-01-06 | 17.0164 | 17.0164 | 2.4e-12 |
| 2020-01-07 | 17.6337 | 17.6337 | 2.3e-12 |
| 2020-01-08 | 18.2686 | 18.2686 | 2.2e-12 |
| 2020-01-09 | 18.9214 | 18.9214 | 2.0e-12 |
| 2020-01-10 | 19.5922 | 19.5922 | 1.9e-12 |
| 2020-01-11 | 20.2812 | 20.2812 | 1.7e-12 |
| 2020-01-12 | 20.9883 | 20.9883 | 1.6e-12 |
| 2020-01-13 | 21.7138 | 21.7138 | 1.4e-12 |
| 2020-01-14 | 22.4576 | 22.4576 | 1.2e-12 |
| 2020-01-15 | 23.2198 | 23.2198 | 1.0e-12 |
| 2020-01-16 | 24.0003 | 24.0003 | 7.9e-13 |
| 2020-01-17 | 24.7991 | 24.7991 | 5.6e-13 |
| 2020-01-18 | 25.6161 | 25.6161 | 3.3e-13 |
| 2020-01-19 | 26.4511 | 26.4511 | 9.6e-14 |
| 2020-01-20 | 27.3040 | 27.3040 | 1.6e-13 |
| 2020-01-21 | 28.1745 | 28.1745 | 4.3e-13 |
| 2020-01-22 | 29.0625 | 29.0625 | 7.0e-13 |
| 2020-01-23 | 29.9675 | 29.9675 | 9.7e-13 |
| 2020-01-24 | 30.8894 | 30.8894 | 1.3e-12 |
| 2020-01-25 | 31.8277 | 31.8277 | 1.6e-12 |
| 2020-01-26 | 32.7820 | 32.7820 | 1.9e-12 |
| 2020-01-27 | 33.7521 | 33.7521 | 2.2e-12 |
| 2020-01-28 | 34.7372 | 34.7372 | 2.5e-12 |
| 2020-01-29 | 35.7368 | 35.7368 | 2.9e-12 |
| 2020-01-30 | 36.7503 | 36.7503 | 3.2e-12 |
| 2020-01-31 | 37.7772 | 37.7772 | 3.5e-12 |
| 2020-02-01 | 38.8167 | 38.8167 | 3.9e-12 |
| 2020-02-02 | 39.8681 | 39.8681 | 4.2e-12 |
| 2020-02-03 | 40.9308 | 40.9308 | 4.6e-12 |
| 2020-02-04 | 42.0039 | 42.0039 | 4.9e-12 |
| 2020-02-05 | 43.0866 | 43.0866 | 5.3e-12 |
| 2020-02-06 | 44.1782 | 44.1782 | 5.7e-12 |
| 2020-02-07 | 45.2777 | 45.2777 | 6.0e-12 |
| 2020-02-08 | 46.3843 | 46.3843 | 6.4e-12 |
| 2020-02-09 | 47.4971 | 47.4971 | 6.7e-12 |
| 2020-02-10 | 48.6151 | 48.6151 | 7.1e-12 |
| 2020-02-11 | 49.7374 | 49.7374 | 7.4e-12 |
| 2020-02-12 | 50.8631 | 50.8631 | 7.8e-12 |
| 2020-02-13 | 51.9912 | 51.9912 | 8.1e-12 |
| 2020-02-14 | 53.1208 | 53.1208 | 8.4e-12 |
| 2020-02-15 | 54.2508 | 54.2508 | 8.8e-12 |
| 2020-02-16 | 55.3803 | 55.3803 | 9.1e-12 |
| 2020-02-17 | 56.5084 | 56.5084 | 9.4e-12 |
| 2020-02-18 | 57.6341 | 57.6341 | 9.7e-12 |
| 2020-02-19 | 58.7565 | 58.7565 | 9.9e-12 |
| 2020-02-20 | 59.8746 | 59.8746 | 1.0e-11 |
| 2020-02-21 | 60.9877 | 60.9877 | 1.0e-11 |
| 2020-02-22 | 62.0948 | 62.0948 | 1.1e-11 |
| 2020-02-23 | 63.1949 | 63.1949 | 1.1e-11 |
| 2020-02-24 | 64.2873 | 64.2873 | 1.1e-11 |
| 2020-02-25 | 65.3711 | 65.3711 | 1.1e-11 |
| 2020-02-26 | 66.4456 | 66.4456 | 1.2e-11 |
| 2020-02-27 | 67.5099 | 67.5099 | 1.2e-11 |
| 2020-02-28 | 68.5634 | 68.5634 | 1.2e-11 |
| 2020-02-29 | 69.6055 | 69.6055 | 1.2e-11 |
| 2020-03-01 | 70.6354 | 70.6354 | 1.2e-11 |
| 2020-03-02 | 71.6526 | 71.6526 | 1.2e-11 |
| 2020-03-03 | 72.6565 | 72.6565 | 1.2e-11 |
| 2020-03-04 | 73.6466 | 73.6466 | 1.3e-11 |
| 2020-03-05 | 74.6224 | 74.6224 | 1.3e-11 |
| 2020-03-06 | 75.5834 | 75.5834 | 1.3e-11 |
| 2020-03-07 | 76.5294 | 76.5294 | 1.3e-11 |
| 2020-03-08 | 77.4599 | 77.4599 | 1.3e-11 |
| 2020-03-09 | 78.3746 | 78.3746 | 1.3e-11 |
| 2020-03-10 | 79.2732 | 79.2732 | 1.3e-11 |
| 2020-03-11 | 80.1555 | 80.1555 | 1.3e-11 |
| 2020-03-12 | 81.0212 | 81.0212 | 1.3e-11 |
| 2020-03-13 | 81.8704 | 81.8704 | 1.3e-11 |
| 2020-03-14 | 82.7027 | 82.7027 | 1.3e-11 |
| 2020-03-15 | 83.5181 | 83.5181 | 1.3e-11 |
| 2020-03-16 | 84.3166 | 84.3166 | 1.2e-11 |
| 2020-03-17 | 85.0981 | 85.0981 | 1.2e-11 |
| 2020-03-18 | 85.8626 | 85.8626 | 1.2e-11 |
| 2020-03-19 | 86.6103 | 86.6103 | 1.2e-11 |
| 2020-03-20 | 87.3410 | 87.3410 | 1.2e-11 |
| 2020-03-21 | 88.0550 | 88.0550 | 1.2e-11 |
| 2020-03-22 | 88.7522 | 88.7522 | 1.2e-11 |
| 2020-03-23 | 89.4330 | 89.4330 | 1.2e-11 |
| 2020-03-24 | 90.0973 | 90.0973 | 1.2e-11 |
| 2020-03-25 | 90.7454 | 90.7454 | 1.1e-11 |
| 2020-03-26 | 91.3776 | 91.3776 | 1.1e-11 |
| 2020-03-27 | 91.9938 | 91.9938 | 1.1e-11 |
| 2020-03-28 | 92.5946 | 92.5946 | 1.1e-11 |
| 2020-03-29 | 93.1799 | 93.1799 | 1.1e-11 |
| 2020-03-30 | 93.7502 | 93.7502 | 1.1e-11 |
| 2020-03-31 | 94.3056 | 94.3056 | 1.0e-11 |
| 2020-04-01 | 94.8465 | 94.8465 | 1.0e-11 |
| 2020-04-02 | 95.3731 | 95.3731 | 1.0e-11 |
| 2020-04-03 | 95.8856 | 95.8856 | 9.8e-12 |
| 2020-04-04 | 96.3845 | 96.3845 | 9.6e-12 |
| 2020-04-05 | 96.8700 | 96.8700 | 9.4e-12 |
| 2020-04-06 | 97.3423 | 97.3423 | 9.3e-12 |
| 2020-04-07 | 97.8018 | 97.8018 | 9.0e-12 |
| 2020-04-08 | 98.2489 | 98.2489 | 8.9e-12 |
| 2020-04-09 | 98.6837 | 98.6837 | 8.7e-12 |
| 2020-04-10 | 99.1067 | 99.1067 | 8.5e-12 |
| 2020-04-11 | 99.5180 | 99.5180 | 8.3e-12 |
| 2020-04-12 | 99.9181 | 99.9181 | 8.1e-12 |
| 2020-04-13 | 100.3073 | 100.3073 | 7.9e-12 |
| 2020-04-14 | 100.6857 | 100.6857 | 7.8e-12 |
| 2020-04-15 | 101.0538 | 101.0538 | 7.5e-12 |
| 2020-04-16 | 101.4118 | 101.4118 | 7.4e-12 |
| 2020-04-17 | 101.7600 | 101.7600 | 7.2e-12 |
| 2020-04-18 | 102.0988 | 102.0988 | 7.0e-12 |
| 2020-04-19 | 102.4283 | 102.4283 | 6.8e-12 |
| 2020-04-20 | 102.7489 | 102.7489 | 6.7e-12 |
| 2020-04-21 | 103.0608 | 103.0608 | 6.5e-12 |
| 2020-04-22 | 103.3644 | 103.3644 | 6.4e-12 |
| 2020-04-23 | 103.6598 | 103.6598 | 6.2e-12 |
| 2020-04-24 | 103.9474 | 103.9474 | 6.0e-12 |
| 2020-04-25 | 104.2273 | 104.2273 | 5.8e-12 |
| 2020-04-26 | 104.4999 | 104.4999 | 5.7e-12 |
| 2020-04-27 | 104.7654 | 104.7654 | 5.5e-12 |
| 2020-04-28 | 105.0240 | 105.0240 | 5.4e-12 |
| 2020-04-29 | 105.2760 | 105.2760 | 5.2e-12 |
Timing
Median of all measured repetitions.
| Step | Effect Prophet | Python Prophet | Effect Prophet is |
|---|---|---|---|
| Fit | 19.0 ms | 30.2 ms | 1.6× faster |
| Predict | 699 µs | 3.53 ms | 5.0× faster |
| Save model to JSON | 28 µs | 459 µs | 17× faster |
| Load model from JSON | 160 µs | 2.29 ms | 14× faster |
| Load and predict in a new process | 160 ms | 1.43 s | 8.9× faster |
Settings
The case declaration both libraries ran.
json
{
"kind": "map",
"comparison": {
"kind": "equivalent-objective",
"evidenceId": "logistic-python-reconciliation-v1"
},
"configuration": {
"growth": "logistic",
"scaling": "absmax",
"seasonalityMode": "additive",
"holidaysMode": "additive",
"changepoints": {
"mode": "auto",
"count": 3,
"range": 0.8
},
"changepointPriorScale": 0.05,
"seasonalities": [],
"events": [],
"regressors": []
},
"pythonOptimizer": {
"algorithm": "Auto",
"maxIterations": 10000,
"newtonFallback": true,
"sigFigs": 12
}
}