---
url: >-
  https://jer-k.github.io/effect-prophet/benchmarks/linear/linear-defaults-irregular.md
---

# Defaults, irregular dates

&#x20; [← All linear growth benchmarks](/benchmarks/linear)

192 rows spread unevenly over 228 days with two real trend breaks.

## Input

[`benchmark/inputs/v1/map-irregular-medium.json`](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/map-irregular-medium.json): 192 history rows and 48 forecast rows.

## Output

Largest difference: **0.079** (0.11% of the input's range).

Every forecast row from both libraries.

| Date | Effect Prophet | Python Prophet | Difference |
| --- | ---: | ---: | ---: |
| 2020-08-17 | 84.4431 | 84.4157 | 0.027 |
| 2020-08-18 | 84.7250 | 84.6951 | 0.030 |
| 2020-08-19 | 85.2959 | 85.2629 | 0.033 |
| 2020-08-20 | 85.8726 | 85.8420 | 0.031 |
| 2020-08-22 | 86.6564 | 86.6283 | 0.028 |
| 2020-08-23 | 87.0704 | 87.0455 | 0.025 |
| 2020-08-24 | 87.4516 | 87.4178 | 0.034 |
| 2020-08-25 | 87.7334 | 87.6971 | 0.036 |
| 2020-08-26 | 88.3044 | 88.2649 | 0.039 |
| 2020-08-27 | 88.8810 | 88.8440 | 0.037 |
| 2020-08-28 | 89.1273 | 89.0906 | 0.037 |
| 2020-08-30 | 90.0789 | 90.0475 | 0.031 |
| 2020-08-31 | 90.4600 | 90.4198 | 0.040 |
| 2020-09-01 | 90.7419 | 90.6991 | 0.043 |
| 2020-09-02 | 91.3128 | 91.2670 | 0.046 |
| 2020-09-03 | 91.8895 | 91.8461 | 0.043 |
| 2020-09-04 | 92.1357 | 92.0926 | 0.043 |
| 2020-09-06 | 93.0873 | 93.0496 | 0.038 |
| 2020-09-08 | 93.7503 | 93.7012 | 0.049 |
| 2020-09-09 | 94.3213 | 94.2690 | 0.052 |
| 2020-09-10 | 94.8980 | 94.8481 | 0.050 |
| 2020-09-11 | 95.1442 | 95.0947 | 0.049 |
| 2020-09-12 | 95.6818 | 95.6344 | 0.047 |
| 2020-09-13 | 96.0958 | 96.0516 | 0.044 |
| 2020-09-14 | 96.4770 | 96.4239 | 0.053 |
| 2020-09-16 | 97.3297 | 97.2710 | 0.059 |
| 2020-09-17 | 97.9064 | 97.8501 | 0.056 |
| 2020-09-18 | 98.1526 | 98.0967 | 0.056 |
| 2020-09-19 | 98.6902 | 98.6365 | 0.054 |
| 2020-09-20 | 99.1043 | 99.0536 | 0.051 |
| 2020-09-21 | 99.4854 | 99.4259 | 0.060 |
| 2020-09-22 | 99.7673 | 99.7052 | 0.062 |
| 2020-09-24 | 100.9149 | 100.8522 | 0.063 |
| 2020-09-25 | 101.1611 | 101.0987 | 0.062 |
| 2020-09-26 | 101.6987 | 101.6385 | 0.060 |
| 2020-09-27 | 102.1127 | 102.0557 | 0.057 |
| 2020-09-29 | 102.7757 | 102.7073 | 0.068 |
| 2020-09-30 | 103.3467 | 103.2751 | 0.072 |
| 2020-10-01 | 103.9233 | 103.8542 | 0.069 |
| 2020-10-03 | 104.7071 | 104.6405 | 0.067 |
| 2020-10-04 | 105.1212 | 105.0577 | 0.063 |
| 2020-10-05 | 105.5023 | 105.4300 | 0.072 |
| 2020-10-06 | 105.7842 | 105.7093 | 0.075 |
| 2020-10-07 | 106.3551 | 106.2771 | 0.078 |
| 2020-10-08 | 106.9318 | 106.8562 | 0.076 |
| 2020-10-09 | 107.1780 | 107.1028 | 0.075 |
| 2020-10-11 | 108.1296 | 108.0597 | 0.070 |
| 2020-10-12 | 108.5108 | 108.4320 | 0.079 |

## Internal fit differences

The forecasts match, so this case passes. Both libraries search for the best-fitting parameters and stop when they are close enough. On this input they stopped at slightly different points, so these internal numbers differ by more than the threshold where we take a closer look.

| Check | Effect Prophet | Python Prophet | Threshold |
| --- | ---: | ---: | ---: |
| Fitting objective (lower is a better fit) | -745.4706 | -744.8759 | 0.01 |

## Timing

Median of all measured repetitions.

| Step | Effect Prophet | Python Prophet | Effect Prophet is |
| --- | ---: | ---: | --- |
| Convert input rows | 31 µs | 556 µs | 18× faster |
| Fit | 6.90 ms | 14.4 ms | 2.1× faster |
| Predict | 247 µs | 3.27 ms | 13× faster |
| Fit and predict | 6.80 ms | 17.1 ms | 2.5× faster |
| Convert, fit and predict | 6.15 ms | 17.7 ms | 2.9× faster |
| First forecast in a new process | 177 ms | 1.45 s | 8.2× faster |
| Save model to JSON | 26 µs | 540 µs | 21× faster |
| Load model from JSON | 135 µs | 2.28 ms | 17× faster |
| Load and predict in a new process | 163 ms | 1.44 s | 8.8× faster |

## Settings

The case declaration both libraries ran.

```json
{
  "kind": "map",
  "comparison": {
    "kind": "equivalent-objective",
    "evidenceId": "linear-output-first-v4"
  },
  "fitRequest": "growth-only",
  "configuration": {
    "growth": "linear",
    "scaling": "absmax",
    "seasonalityMode": "additive",
    "holidaysMode": "additive",
    "changepoints": {
      "mode": "auto",
      "count": 25,
      "range": 0.8
    },
    "changepointPriorScale": 0.05,
    "seasonalities": [
      {
        "name": "weekly",
        "periodDays": 7,
        "fourierOrder": 3,
        "priorScale": 10
      }
    ],
    "events": [],
    "regressors": []
  },
  "pythonOptimizer": {
    "algorithm": "Auto",
    "maxIterations": 10000,
    "newtonFallback": true
  }
}
```
