Four regressors
match ← All linear growth benchmarks256 daily rows with a yes/no regressor and three numeric ones, each standardized differently.
Input
benchmark/inputs/v1/map-regressors-medium.json: 256 history rows and 64 forecast rows.
Output
Largest difference: 0.0031 (0.0032% of the input's range).
Every forecast row from both libraries.
| Date | Effect Prophet | Python Prophet | Difference |
|---|---|---|---|
| 2020-09-13 | 107.1354 | 107.1342 | 0.0012 |
| 2020-09-14 | 107.5535 | 107.5522 | 0.0012 |
| 2020-09-15 | 107.9570 | 107.9558 | 0.0013 |
| 2020-09-16 | 108.3460 | 108.3447 | 0.0013 |
| 2020-09-17 | 107.8285 | 107.8272 | 0.0014 |
| 2020-09-18 | 110.0130 | 110.0115 | 0.0015 |
| 2020-09-19 | 110.3634 | 110.3619 | 0.0015 |
| 2020-09-20 | 110.7044 | 110.7029 | 0.0015 |
| 2020-09-21 | 109.6794 | 109.6779 | 0.0015 |
| 2020-09-22 | 110.0100 | 110.0085 | 0.0015 |
| 2020-09-23 | 110.3402 | 110.3387 | 0.0015 |
| 2020-09-24 | 110.6733 | 110.6718 | 0.0015 |
| 2020-09-25 | 111.4763 | 111.4748 | 0.0015 |
| 2020-09-26 | 111.8259 | 111.8244 | 0.0015 |
| 2020-09-27 | 114.0115 | 114.0099 | 0.0016 |
| 2020-09-28 | 114.3908 | 114.3891 | 0.0017 |
| 2020-09-29 | 115.2523 | 115.2507 | 0.0017 |
| 2020-09-30 | 112.4933 | 112.4917 | 0.0017 |
| 2020-10-01 | 112.9354 | 112.9337 | 0.0017 |
| 2020-10-02 | 113.4012 | 113.3995 | 0.0017 |
| 2020-10-03 | 114.3544 | 114.3527 | 0.0018 |
| 2020-10-04 | 114.8682 | 114.8664 | 0.0018 |
| 2020-10-05 | 115.4048 | 115.4030 | 0.0018 |
| 2020-10-06 | 117.7855 | 117.7836 | 0.0020 |
| 2020-10-07 | 118.8262 | 118.8243 | 0.0020 |
| 2020-10-08 | 119.4204 | 119.4184 | 0.0020 |
| 2020-10-09 | 118.2057 | 118.2038 | 0.0020 |
| 2020-10-10 | 118.8245 | 118.8225 | 0.0020 |
| 2020-10-11 | 119.9141 | 119.9120 | 0.0020 |
| 2020-10-12 | 120.5443 | 120.5422 | 0.0021 |
| 2020-10-13 | 119.8197 | 119.8175 | 0.0022 |
| 2020-10-14 | 120.4484 | 120.4462 | 0.0022 |
| 2020-10-15 | 123.3581 | 123.3557 | 0.0023 |
| 2020-10-16 | 123.9741 | 123.9718 | 0.0024 |
| 2020-10-17 | 124.5807 | 124.5783 | 0.0024 |
| 2020-10-18 | 123.3537 | 123.3514 | 0.0023 |
| 2020-10-19 | 124.4009 | 124.3986 | 0.0023 |
| 2020-10-20 | 124.9726 | 124.9702 | 0.0024 |
| 2020-10-21 | 125.5322 | 125.5298 | 0.0024 |
| 2020-10-22 | 126.0805 | 126.0781 | 0.0024 |
| 2020-10-23 | 127.0819 | 127.0795 | 0.0024 |
| 2020-10-24 | 129.4339 | 129.4315 | 0.0025 |
| 2020-10-25 | 129.9563 | 129.9538 | 0.0025 |
| 2020-10-26 | 129.1181 | 129.1155 | 0.0026 |
| 2020-10-27 | 128.2732 | 128.2707 | 0.0025 |
| 2020-10-28 | 128.7867 | 128.7842 | 0.0025 |
| 2020-10-29 | 129.3011 | 129.2986 | 0.0025 |
| 2020-10-30 | 129.8182 | 129.8157 | 0.0025 |
| 2020-10-31 | 130.8025 | 130.8000 | 0.0025 |
| 2020-11-01 | 131.3285 | 131.3259 | 0.0025 |
| 2020-11-02 | 133.6825 | 133.6799 | 0.0026 |
| 2020-11-03 | 134.2193 | 134.2166 | 0.0027 |
| 2020-11-04 | 135.2244 | 135.2217 | 0.0027 |
| 2020-11-05 | 133.9474 | 133.9448 | 0.0026 |
| 2020-11-06 | 134.4957 | 134.4931 | 0.0027 |
| 2020-11-07 | 135.0448 | 135.0421 | 0.0027 |
| 2020-11-08 | 134.7001 | 134.6973 | 0.0028 |
| 2020-11-09 | 135.2439 | 135.2410 | 0.0029 |
| 2020-11-10 | 135.7811 | 135.7782 | 0.0029 |
| 2020-11-11 | 138.1320 | 138.1290 | 0.0030 |
| 2020-11-12 | 139.1118 | 139.1087 | 0.0031 |
| 2020-11-13 | 139.6142 | 139.6111 | 0.0031 |
| 2020-11-14 | 138.2776 | 138.2745 | 0.0031 |
| 2020-11-15 | 138.7457 | 138.7426 | 0.0031 |
Timing
Median of all measured repetitions.
| Step | Effect Prophet | Python Prophet | Effect Prophet is |
|---|---|---|---|
| Convert input rows | 89 µs | 660 µs | 7.4× faster |
| Fit | 2.96 ms | 10.3 ms | 3.5× faster |
| Predict | 473 µs | 3.52 ms | 7.4× faster |
| Fit and predict | 2.96 ms | 13.6 ms | 4.6× faster |
| Convert, fit and predict | 2.69 ms | 15.1 ms | 5.6× faster |
| First forecast in a new process | 170 ms | 1.43 s | 8.4× faster |
| Save model to JSON | 24 µs | 718 µs | 30× faster |
| Load model from JSON | 107 µs | 2.97 ms | 28× faster |
| Load and predict in a new process | 165 ms | 1.45 s | 8.8× faster |
Settings
The case declaration both libraries ran.
json
{
"kind": "linear-map",
"comparison": {
"kind": "equivalent-objective",
"evidenceId": "linear-output-first-v4"
},
"configuration": {
"effectMap": "explicit",
"changepoints": {
"mode": "explicit",
"timestamps": [
"2020-03-21T00:00:00.000Z",
"2020-06-29T00:00:00.000Z"
]
},
"changepointPriorScale": 0.2,
"seasonalities": [],
"events": [],
"regressors": [
{
"name": "binary-auto",
"priorScale": 10,
"standardization": "auto"
},
{
"name": "numeric-auto",
"priorScale": 10,
"standardization": "auto"
},
{
"name": "numeric-always",
"priorScale": 7,
"standardization": "always"
},
{
"name": "numeric-never",
"priorScale": 5,
"standardization": "never"
}
]
},
"effectOptimizer": {
"algorithm": "auto",
"maxIterations": 10000,
"fallback": "newton",
"lbfgs": {
"historySize": 5,
"initAlpha": 0.001,
"tolObj": 1e-12,
"tolRelObj": 10000,
"tolGrad": 1e-8,
"tolRelGrad": 10000000,
"tolParam": 1e-8
}
},
"pythonOptimizer": {
"algorithm": "Auto",
"maxIterations": 10000,
"newtonFallback": true,
"sigFigs": 12
}
}