No changepoints, minmax 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. The curve's rate never changes. Values are scaled between the lowest floor and the highest ceiling.
Input
benchmark/inputs/v2/logistic-basic-96.json: 96 history rows and 120 forecast rows.
Output
Largest difference: 1.6e-10 (< 0.0001% of the input's range).
Every forecast row from both libraries.
| Date | Effect Prophet | Python Prophet | Difference |
|---|---|---|---|
| 2020-01-01 | 20.0599 | 20.0599 | 2.3e-11 |
| 2020-01-02 | 20.3521 | 20.3521 | 2.4e-11 |
| 2020-01-03 | 20.6579 | 20.6579 | 2.5e-11 |
| 2020-01-04 | 20.9776 | 20.9776 | 2.7e-11 |
| 2020-01-05 | 21.3119 | 21.3119 | 2.9e-11 |
| 2020-01-06 | 21.6612 | 21.6612 | 3.0e-11 |
| 2020-01-07 | 22.0261 | 22.0261 | 3.2e-11 |
| 2020-01-08 | 22.4070 | 22.4070 | 3.4e-11 |
| 2020-01-09 | 22.8046 | 22.8046 | 3.5e-11 |
| 2020-01-10 | 23.2194 | 23.2194 | 3.7e-11 |
| 2020-01-11 | 23.6519 | 23.6519 | 3.9e-11 |
| 2020-01-12 | 24.1025 | 24.1025 | 4.1e-11 |
| 2020-01-13 | 24.5720 | 24.5720 | 4.4e-11 |
| 2020-01-14 | 25.0607 | 25.0607 | 4.6e-11 |
| 2020-01-15 | 25.5692 | 25.5692 | 4.8e-11 |
| 2020-01-16 | 26.0979 | 26.0979 | 5.1e-11 |
| 2020-01-17 | 26.6474 | 26.6474 | 5.3e-11 |
| 2020-01-18 | 27.2181 | 27.2181 | 5.6e-11 |
| 2020-01-19 | 27.8104 | 27.8104 | 5.8e-11 |
| 2020-01-20 | 28.4247 | 28.4247 | 6.1e-11 |
| 2020-01-21 | 29.0614 | 29.0614 | 6.4e-11 |
| 2020-01-22 | 29.7209 | 29.7209 | 6.7e-11 |
| 2020-01-23 | 30.4033 | 30.4033 | 7.0e-11 |
| 2020-01-24 | 31.1091 | 31.1091 | 7.3e-11 |
| 2020-01-25 | 31.8384 | 31.8384 | 7.6e-11 |
| 2020-01-26 | 32.5913 | 32.5913 | 7.9e-11 |
| 2020-01-27 | 33.3679 | 33.3679 | 8.2e-11 |
| 2020-01-28 | 34.1684 | 34.1684 | 8.6e-11 |
| 2020-01-29 | 34.9926 | 34.9926 | 8.9e-11 |
| 2020-01-30 | 35.8405 | 35.8405 | 9.2e-11 |
| 2020-01-31 | 36.7120 | 36.7120 | 9.6e-11 |
| 2020-02-01 | 37.6068 | 37.6068 | 9.9e-11 |
| 2020-02-02 | 38.5247 | 38.5247 | 1.0e-10 |
| 2020-02-03 | 39.4651 | 39.4651 | 1.1e-10 |
| 2020-02-04 | 40.4278 | 40.4278 | 1.1e-10 |
| 2020-02-05 | 41.4121 | 41.4121 | 1.1e-10 |
| 2020-02-06 | 42.4175 | 42.4175 | 1.2e-10 |
| 2020-02-07 | 43.4432 | 43.4432 | 1.2e-10 |
| 2020-02-08 | 44.4884 | 44.4884 | 1.2e-10 |
| 2020-02-09 | 45.5524 | 45.5524 | 1.3e-10 |
| 2020-02-10 | 46.6341 | 46.6341 | 1.3e-10 |
| 2020-02-11 | 47.7325 | 47.7325 | 1.3e-10 |
| 2020-02-12 | 48.8466 | 48.8466 | 1.3e-10 |
| 2020-02-13 | 49.9751 | 49.9751 | 1.4e-10 |
| 2020-02-14 | 51.1169 | 51.1169 | 1.4e-10 |
| 2020-02-15 | 52.2707 | 52.2707 | 1.4e-10 |
| 2020-02-16 | 53.4351 | 53.4351 | 1.4e-10 |
| 2020-02-17 | 54.6087 | 54.6087 | 1.5e-10 |
| 2020-02-18 | 55.7901 | 55.7901 | 1.5e-10 |
| 2020-02-19 | 56.9778 | 56.9778 | 1.5e-10 |
| 2020-02-20 | 58.1703 | 58.1703 | 1.5e-10 |
| 2020-02-21 | 59.3662 | 59.3662 | 1.5e-10 |
| 2020-02-22 | 60.5638 | 60.5638 | 1.5e-10 |
| 2020-02-23 | 61.7616 | 61.7616 | 1.5e-10 |
| 2020-02-24 | 62.9582 | 62.9582 | 1.5e-10 |
| 2020-02-25 | 64.1520 | 64.1520 | 1.6e-10 |
| 2020-02-26 | 65.3414 | 65.3414 | 1.6e-10 |
| 2020-02-27 | 66.5251 | 66.5251 | 1.6e-10 |
| 2020-02-28 | 67.7015 | 67.7015 | 1.6e-10 |
| 2020-02-29 | 68.8694 | 68.8694 | 1.6e-10 |
| 2020-03-01 | 70.0273 | 70.0273 | 1.5e-10 |
| 2020-03-02 | 71.1740 | 71.1740 | 1.5e-10 |
| 2020-03-03 | 72.3081 | 72.3081 | 1.5e-10 |
| 2020-03-04 | 73.4287 | 73.4287 | 1.5e-10 |
| 2020-03-05 | 74.5345 | 74.5345 | 1.5e-10 |
| 2020-03-06 | 75.6246 | 75.6246 | 1.5e-10 |
| 2020-03-07 | 76.6980 | 76.6980 | 1.5e-10 |
| 2020-03-08 | 77.7538 | 77.7538 | 1.5e-10 |
| 2020-03-09 | 78.7912 | 78.7912 | 1.4e-10 |
| 2020-03-10 | 79.8096 | 79.8096 | 1.4e-10 |
| 2020-03-11 | 80.8082 | 80.8082 | 1.4e-10 |
| 2020-03-12 | 81.7866 | 81.7866 | 1.4e-10 |
| 2020-03-13 | 82.7441 | 82.7441 | 1.4e-10 |
| 2020-03-14 | 83.6806 | 83.6806 | 1.3e-10 |
| 2020-03-15 | 84.5956 | 84.5956 | 1.3e-10 |
| 2020-03-16 | 85.4888 | 85.4888 | 1.3e-10 |
| 2020-03-17 | 86.3601 | 86.3601 | 1.2e-10 |
| 2020-03-18 | 87.2093 | 87.2093 | 1.2e-10 |
| 2020-03-19 | 88.0365 | 88.0365 | 1.2e-10 |
| 2020-03-20 | 88.8416 | 88.8416 | 1.2e-10 |
| 2020-03-21 | 89.6246 | 89.6246 | 1.1e-10 |
| 2020-03-22 | 90.3858 | 90.3858 | 1.1e-10 |
| 2020-03-23 | 91.1252 | 91.1252 | 1.1e-10 |
| 2020-03-24 | 91.8430 | 91.8430 | 1.0e-10 |
| 2020-03-25 | 92.5396 | 92.5396 | 1.0e-10 |
| 2020-03-26 | 93.2151 | 93.2151 | 9.9e-11 |
| 2020-03-27 | 93.8700 | 93.8700 | 9.6e-11 |
| 2020-03-28 | 94.5045 | 94.5045 | 9.3e-11 |
| 2020-03-29 | 95.1191 | 95.1191 | 9.0e-11 |
| 2020-03-30 | 95.7142 | 95.7142 | 8.7e-11 |
| 2020-03-31 | 96.2901 | 96.2901 | 8.4e-11 |
| 2020-04-01 | 96.8473 | 96.8473 | 8.2e-11 |
| 2020-04-02 | 97.3863 | 97.3863 | 7.9e-11 |
| 2020-04-03 | 97.9075 | 97.9075 | 7.6e-11 |
| 2020-04-04 | 98.4114 | 98.4114 | 7.4e-11 |
| 2020-04-05 | 98.8985 | 98.8985 | 7.1e-11 |
| 2020-04-06 | 99.3693 | 99.3693 | 6.9e-11 |
| 2020-04-07 | 99.8243 | 99.8243 | 6.6e-11 |
| 2020-04-08 | 100.2639 | 100.2639 | 6.4e-11 |
| 2020-04-09 | 100.6886 | 100.6886 | 6.2e-11 |
| 2020-04-10 | 101.0990 | 101.0990 | 5.9e-11 |
| 2020-04-11 | 101.4954 | 101.4954 | 5.7e-11 |
| 2020-04-12 | 101.8785 | 101.8785 | 5.5e-11 |
| 2020-04-13 | 102.2485 | 102.2485 | 5.3e-11 |
| 2020-04-14 | 102.6061 | 102.6061 | 5.1e-11 |
| 2020-04-15 | 102.9517 | 102.9517 | 4.9e-11 |
| 2020-04-16 | 103.2857 | 103.2857 | 4.7e-11 |
| 2020-04-17 | 103.6085 | 103.6085 | 4.5e-11 |
| 2020-04-18 | 103.9206 | 103.9206 | 4.3e-11 |
| 2020-04-19 | 104.2224 | 104.2224 | 4.2e-11 |
| 2020-04-20 | 104.5143 | 104.5143 | 4.0e-11 |
| 2020-04-21 | 104.7967 | 104.7967 | 3.8e-11 |
| 2020-04-22 | 105.0699 | 105.0699 | 3.7e-11 |
| 2020-04-23 | 105.3344 | 105.3344 | 3.5e-11 |
| 2020-04-24 | 105.5905 | 105.5905 | 3.4e-11 |
| 2020-04-25 | 105.8385 | 105.8385 | 3.3e-11 |
| 2020-04-26 | 106.0789 | 106.0789 | 3.1e-11 |
| 2020-04-27 | 106.3118 | 106.3118 | 3.0e-11 |
| 2020-04-28 | 106.5377 | 106.5377 | 2.9e-11 |
| 2020-04-29 | 106.7569 | 106.7569 | 2.7e-11 |
Timing
Median of all measured repetitions.
| Step | Effect Prophet | Python Prophet | Effect Prophet is |
|---|---|---|---|
| Fit | 8.51 ms | 15.8 ms | 1.9× faster |
| Predict | 656 µs | 2.98 ms | 4.5× faster |
| Save model to JSON | 27 µs | 424 µs | 16× faster |
| Load model from JSON | 145 µs | 2.07 ms | 14× faster |
| Load and predict in a new process | 155 ms | 1.47 s | 9.4× faster |
Settings
The case declaration both libraries ran.
json
{
"kind": "map",
"comparison": {
"kind": "equivalent-objective",
"evidenceId": "logistic-python-reconciliation-v1"
},
"configuration": {
"growth": "logistic",
"scaling": "minmax",
"seasonalityMode": "additive",
"holidaysMode": "additive",
"changepoints": {
"mode": "explicit",
"timestamps": []
},
"changepointPriorScale": 0.05,
"seasonalities": [],
"events": [],
"regressors": []
},
"pythonOptimizer": {
"algorithm": "Auto",
"maxIterations": 10000,
"newtonFallback": true,
"sigFigs": 12
}
}