Equatum

Worked example

50 readings of an exponential growth, 1.5·e0.4x plus noise, with one reading shifted by +1.0 — the kind of typo a spreadsheet hides. This is the unedited result.

Run it with your own data
The data as pasted (2 columns, no header)
0.000000 1.460547
0.102041 1.532290
0.204082 1.635777
0.306122 1.688375
0.408163 1.757118
0.510204 1.836631
0.612245 1.923800
0.714286 1.997967
0.816327 2.102720
0.918367 2.139591
1.020408 2.264726
1.122449 2.333984
1.224490 2.421820
1.326531 2.526846
1.428571 2.637451
1.530612 2.784890
1.632653 2.883479
1.734694 3.010339
1.836735 3.122851
1.938776 3.299406
2.040816 4.351414
2.142857 3.516691
2.244898 3.666332
2.346939 3.839499
2.448980 4.003699
2.551020 4.124989
2.653061 4.364569
2.755102 4.517771
2.857143 4.711867
2.959184 4.904914
3.061224 5.107934
3.163265 5.312488
3.265306 5.541624
3.367347 5.827899
3.469388 6.000055
3.571429 6.263820
3.673469 6.527235
3.775510 6.804391
3.877551 7.074070
3.979592 7.359835
4.081633 7.692664
4.183673 7.985576
4.285714 8.372111
4.387755 8.667919
4.489796 9.033332
4.591837 9.428727
4.693878 9.797121
4.795918 10.216069
4.897959 10.637018
5.000000 11.078941

Equation found

It predicts points it was not fitted to with an error of 0.0202 (cross-validated) using 2 parameters; the best polynomial needs 7 terms for 0.0193.

Why this one: equal held-out error within 5 %, fewer parameters (2 vs 7).

1 measurement did not fit and was left out of the final fit — see the rows to check.

The equation

  • Held-out error (cross-validated RMSE)0.02016 ± 0.00379
  • R²0.99995
  • Parameters2
  • Rows used49
1.499067485802664 * exp(0.40025242348258466 * x)

Every digit the engine computed. ln is the natural logarithm.

Also safe in 32-bit floating point (single-precision firmware, many PLCs): on your data the error stays below 0.0001 % of the measured range.

Parameters in normalised units, with standard errors

The engine fits the model in z = (x − mean) / std for each input and predicts y / std_y; the formula above is the same model rewritten in your units.

ParameterValueStandard error
p11.47590.00120907
p70.594780.000699444

Normalised form: (1.4759 * exp((0.59478 * z_x)))

Fit

Show

Rows to check

Line numbers refer to the text you pasted or uploaded. t is the externally studentised residual from the screen; a row is flagged when |t| exceeds 3.54 (Bonferroni-corrected, 5 % family-wise).

Line x y Model t Verdict
21 2.04082 4.35141 3.3929 49.5 Left out of the final fit

Alternatives

Ranked by cross-validated error with a parsimony rule: equations within one standard error of the best count as equally good and the simpler one ranks first. Several near-ties usually mean the data cannot tell those forms apart — choose by domain knowledge.

#Equation (4 digits)ParametersHeld-out errorR²AICc
1 1.499 * exp(0.4003 * x) 2 0.02016 ± 0.00379 0.99995 -485.1
2 2.773 * (267.7 / (x + 266.1))^(-107.8) 3 0.01949 ± 0.00369 0.99996 -487.8
3 0.06489 * (x + 22.95) * exp(0.362 * x) 3 0.0195 ± 0.00369 0.99996 -487.8
4 0.6232 * (ln(x + 16.2) - 0.3961) * exp(0.3801 * x) 3 0.01951 ± 0.0037 0.99996 -487.9
5 1.066 * exp(0.3925 * x) * atan(0.6729 * x + 5.632) 3 0.01953 ± 0.00371 0.99996 -487.9
6 1.493 * exp(0.4027 * x) * exp(-0.0003418 * exp(0.6729 * x)) 3 0.01949 ± 0.00362 0.99996 -487.2
7 -5.883 * exp(0.6729 * x) * atan(-0.2581 * exp(-0.2752 * x)) 3 0.01951 ± 0.00373 0.99996 -488

Polynomial screen

#VariablesDegreeTermsLeave-one-out errorR²
1x670.019340.99996
2x560.019360.99996
3x780.019440.99996
4x450.019930.99996
5x340.023460.99994

Search details

Structures screened167,542
Search strategyexhaustive, simplest first
Operators+ * / ^ exp log sin tan asin atan
Time budget used upyes — a longer search may find more
Polynomial candidates7
Computation time94 s

Notes from the search

  • Screening stopped at the budget (167,542 structures, 85.79 % of the space, simplest structures first); a longer search time or fewer operators gives a fuller search.