100 rows: just over the optimizer switch
match ← All logistic growth benchmarksExactly 100 rows, so both libraries switch to L-BFGS.
Input
benchmark/inputs/v2/logistic-basic-100.json: 100 history rows and 124 forecast rows.
Output
Largest difference: 4.7e-11 (< 0.0001% of the input's range).
Every forecast row from both libraries.
| Date | Effect Prophet | Python Prophet | Difference |
|---|---|---|---|
| 2020-01-01 | 14.1874 | 14.1874 | 2.8e-11 |
| 2020-01-02 | 14.6981 | 14.6981 | 2.9e-11 |
| 2020-01-03 | 15.2241 | 15.2241 | 2.9e-11 |
| 2020-01-04 | 15.7656 | 15.7656 | 3.0e-11 |
| 2020-01-05 | 16.3228 | 16.3228 | 3.1e-11 |
| 2020-01-06 | 16.8959 | 16.8959 | 3.2e-11 |
| 2020-01-07 | 17.4852 | 17.4852 | 3.2e-11 |
| 2020-01-08 | 18.0908 | 18.0908 | 3.3e-11 |
| 2020-01-09 | 18.7128 | 18.7128 | 3.4e-11 |
| 2020-01-10 | 19.3514 | 19.3514 | 3.4e-11 |
| 2020-01-11 | 20.0067 | 20.0067 | 3.5e-11 |
| 2020-01-12 | 20.6788 | 20.6788 | 3.6e-11 |
| 2020-01-13 | 21.3678 | 21.3678 | 3.6e-11 |
| 2020-01-14 | 22.0737 | 22.0737 | 3.7e-11 |
| 2020-01-15 | 22.7966 | 22.7966 | 3.8e-11 |
| 2020-01-16 | 23.5364 | 23.5364 | 3.8e-11 |
| 2020-01-17 | 24.2932 | 24.2932 | 3.9e-11 |
| 2020-01-18 | 25.0668 | 25.0668 | 4.0e-11 |
| 2020-01-19 | 25.8572 | 25.8572 | 4.0e-11 |
| 2020-01-20 | 26.6642 | 26.6642 | 4.1e-11 |
| 2020-01-21 | 27.4877 | 27.4877 | 4.1e-11 |
| 2020-01-22 | 28.3275 | 28.3275 | 4.2e-11 |
| 2020-01-23 | 29.1833 | 29.1833 | 4.2e-11 |
| 2020-01-24 | 30.0550 | 30.0550 | 4.3e-11 |
| 2020-01-25 | 30.9421 | 30.9421 | 4.3e-11 |
| 2020-01-26 | 31.8445 | 31.8445 | 4.4e-11 |
| 2020-01-27 | 32.7616 | 32.7616 | 4.4e-11 |
| 2020-01-28 | 33.6932 | 33.6932 | 4.5e-11 |
| 2020-01-29 | 34.6387 | 34.6387 | 4.5e-11 |
| 2020-01-30 | 35.5977 | 35.5977 | 4.5e-11 |
| 2020-01-31 | 36.5698 | 36.5698 | 4.6e-11 |
| 2020-02-01 | 37.5542 | 37.5542 | 4.6e-11 |
| 2020-02-02 | 38.5505 | 38.5505 | 4.6e-11 |
| 2020-02-03 | 39.5581 | 39.5581 | 4.6e-11 |
| 2020-02-04 | 40.5763 | 40.5763 | 4.6e-11 |
| 2020-02-05 | 41.6045 | 41.6045 | 4.7e-11 |
| 2020-02-06 | 42.6419 | 42.6419 | 4.7e-11 |
| 2020-02-07 | 43.6879 | 43.6879 | 4.7e-11 |
| 2020-02-08 | 44.7416 | 44.7416 | 4.7e-11 |
| 2020-02-09 | 45.8026 | 45.8026 | 4.7e-11 |
| 2020-02-10 | 46.8697 | 46.8697 | 4.7e-11 |
| 2020-02-11 | 47.9423 | 47.9423 | 4.6e-11 |
| 2020-02-12 | 49.0195 | 49.0195 | 4.6e-11 |
| 2020-02-13 | 50.1005 | 50.1005 | 4.6e-11 |
| 2020-02-14 | 51.1844 | 51.1844 | 4.6e-11 |
| 2020-02-15 | 52.2704 | 52.2704 | 4.6e-11 |
| 2020-02-16 | 53.3576 | 53.3576 | 4.5e-11 |
| 2020-02-17 | 54.4452 | 54.4452 | 4.5e-11 |
| 2020-02-18 | 55.5323 | 55.5323 | 4.5e-11 |
| 2020-02-19 | 56.6181 | 56.6181 | 4.4e-11 |
| 2020-02-20 | 57.7018 | 57.7018 | 4.4e-11 |
| 2020-02-21 | 58.7824 | 58.7824 | 4.3e-11 |
| 2020-02-22 | 59.8592 | 59.8592 | 4.3e-11 |
| 2020-02-23 | 60.9314 | 60.9314 | 4.2e-11 |
| 2020-02-24 | 61.9982 | 61.9982 | 4.1e-11 |
| 2020-02-25 | 63.0588 | 63.0588 | 4.1e-11 |
| 2020-02-26 | 64.1124 | 64.1124 | 4.0e-11 |
| 2020-02-27 | 65.1584 | 65.1584 | 4.0e-11 |
| 2020-02-28 | 66.1961 | 66.1961 | 3.9e-11 |
| 2020-02-29 | 67.2247 | 67.2247 | 3.8e-11 |
| 2020-03-01 | 68.2436 | 68.2436 | 3.8e-11 |
| 2020-03-02 | 69.2523 | 69.2523 | 3.7e-11 |
| 2020-03-03 | 70.2501 | 70.2501 | 3.6e-11 |
| 2020-03-04 | 71.2365 | 71.2365 | 3.5e-11 |
| 2020-03-05 | 72.2110 | 72.2110 | 3.5e-11 |
| 2020-03-06 | 73.1731 | 73.1731 | 3.4e-11 |
| 2020-03-07 | 74.1223 | 74.1223 | 3.3e-11 |
| 2020-03-08 | 75.0583 | 75.0583 | 3.2e-11 |
| 2020-03-09 | 75.9806 | 75.9806 | 3.1e-11 |
| 2020-03-10 | 76.8889 | 76.8889 | 3.1e-11 |
| 2020-03-11 | 77.7830 | 77.7830 | 3.0e-11 |
| 2020-03-12 | 78.6624 | 78.6624 | 2.9e-11 |
| 2020-03-13 | 79.5271 | 79.5271 | 2.8e-11 |
| 2020-03-14 | 80.3767 | 80.3767 | 2.7e-11 |
| 2020-03-15 | 81.2112 | 81.2112 | 2.7e-11 |
| 2020-03-16 | 82.0303 | 82.0303 | 2.6e-11 |
| 2020-03-17 | 82.8339 | 82.8339 | 2.5e-11 |
| 2020-03-18 | 83.6220 | 83.6220 | 2.4e-11 |
| 2020-03-19 | 84.3945 | 84.3945 | 2.4e-11 |
| 2020-03-20 | 85.1514 | 85.1514 | 2.3e-11 |
| 2020-03-21 | 85.8927 | 85.8927 | 2.2e-11 |
| 2020-03-22 | 86.6184 | 86.6184 | 2.1e-11 |
| 2020-03-23 | 87.3285 | 87.3285 | 2.1e-11 |
| 2020-03-24 | 88.0231 | 88.0231 | 2.0e-11 |
| 2020-03-25 | 88.7024 | 88.7024 | 1.9e-11 |
| 2020-03-26 | 89.3663 | 89.3663 | 1.9e-11 |
| 2020-03-27 | 90.0151 | 90.0151 | 1.8e-11 |
| 2020-03-28 | 90.6489 | 90.6489 | 1.7e-11 |
| 2020-03-29 | 91.2679 | 91.2679 | 1.7e-11 |
| 2020-03-30 | 91.8721 | 91.8721 | 1.6e-11 |
| 2020-03-31 | 92.4619 | 92.4619 | 1.5e-11 |
| 2020-04-01 | 93.0375 | 93.0375 | 1.5e-11 |
| 2020-04-02 | 93.5989 | 93.5989 | 1.4e-11 |
| 2020-04-03 | 94.1465 | 94.1465 | 1.4e-11 |
| 2020-04-04 | 94.6805 | 94.6805 | 1.3e-11 |
| 2020-04-05 | 95.2011 | 95.2011 | 1.3e-11 |
| 2020-04-06 | 95.7086 | 95.7086 | 1.2e-11 |
| 2020-04-07 | 96.2033 | 96.2033 | 1.2e-11 |
| 2020-04-08 | 96.6853 | 96.6853 | 1.1e-11 |
| 2020-04-09 | 97.1550 | 97.1550 | 1.1e-11 |
| 2020-04-10 | 97.6126 | 97.6126 | 1.0e-11 |
| 2020-04-11 | 98.0583 | 98.0583 | 9.8e-12 |
| 2020-04-12 | 98.4926 | 98.4926 | 9.3e-12 |
| 2020-04-13 | 98.9155 | 98.9155 | 9.0e-12 |
| 2020-04-14 | 99.3275 | 99.3275 | 8.6e-12 |
| 2020-04-15 | 99.7287 | 99.7287 | 8.2e-12 |
| 2020-04-16 | 100.1194 | 100.1194 | 7.8e-12 |
| 2020-04-17 | 100.5000 | 100.5000 | 7.5e-12 |
| 2020-04-18 | 100.8706 | 100.8706 | 7.2e-12 |
| 2020-04-19 | 101.2316 | 101.2316 | 6.8e-12 |
| 2020-04-20 | 101.5831 | 101.5831 | 6.5e-12 |
| 2020-04-21 | 101.9255 | 101.9255 | 6.2e-12 |
| 2020-04-22 | 102.2591 | 102.2591 | 5.9e-12 |
| 2020-04-23 | 102.5840 | 102.5840 | 5.6e-12 |
| 2020-04-24 | 102.9005 | 102.9005 | 5.4e-12 |
| 2020-04-25 | 103.2089 | 103.2089 | 5.2e-12 |
| 2020-04-26 | 103.5094 | 103.5094 | 4.9e-12 |
| 2020-04-27 | 103.8022 | 103.8022 | 4.7e-12 |
| 2020-04-28 | 104.0876 | 104.0876 | 4.4e-12 |
| 2020-04-29 | 104.3658 | 104.3658 | 4.2e-12 |
| 2020-04-30 | 104.6371 | 104.6371 | 4.0e-12 |
| 2020-05-01 | 104.9015 | 104.9015 | 3.8e-12 |
| 2020-05-02 | 105.1595 | 105.1595 | 3.6e-12 |
| 2020-05-03 | 105.4111 | 105.4111 | 3.4e-12 |
Timing
Median of all measured repetitions.
| Step | Effect Prophet | Python Prophet | Effect Prophet is |
|---|---|---|---|
| Fit | 1.85 ms | 7.74 ms | 4.2× faster |
| Predict | 819 µs | 3.29 ms | 4.0× faster |
| Save model to JSON | 27 µs | 473 µs | 18× faster |
| Load model from JSON | 157 µs | 2.31 ms | 15× faster |
| Load and predict in a new process | 153 ms | 1.57 s | 10× 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": "explicit",
"timestamps": [
"2020-02-08T00:00:00.000Z"
]
},
"changepointPriorScale": 0.05,
"seasonalities": [],
"events": [],
"regressors": []
},
"pythonOptimizer": {
"algorithm": "Auto",
"maxIterations": 10000,
"newtonFallback": true,
"sigFigs": 12
}
}