Guesstimation

Fermi calculations, calculation hacks, principled estimates, informed guesses

2024-04-09 — 2024-04-15

Wherein back-of-envelope Fermi methods are treated alongside probabilistic spreadsheets, Monte Carlo error estimation is employed, and an embeddable Squiggle language for JavaScript is described.

computers are awful
faster pussycat
Monte Carlo
number crunching
office
UI
Figure 1

Tools for back-of-envelope calculations under uncertainty, but principled. Some of these are essentially probabilistic spreadsheets.

1 Entry level: Fermi calculations

Fermi calculations are rough estimates, named after the physicist Enrico Fermi. The Wikipedia page is a portal of sorts to the whole field.

Many people have written fun guides to Fermi calculations. (Harte 1988; Mahajan 2010; Swartz 2003).

Relatively few address the problem of uncertainty in the inputs, but Hubbard (2014) does, and I recommend it highly.

2 Guesstimate

Guesstimate is a probabilistic spreadsheet, which does Monte Carlo error estimation. (source, Blog post).

For a good worked example, see Elizabeth’s blog.

3 Squiggle

3.1 What Squiggle Is

  • A simple programming language for doing math with probability distributions.
  • An embeddable language that can be used in Javascript applications.
  • A tool to encode functions as forecasts that can be embedded in other applications.

3.2 What Squiggle Is Not

  • A complete replacement for enterprise Risk Analysis tools.[…]
  • A probabilistic programming language. Squiggle does not support Bayesian inference.
  • A tool for substantial data analysis. (See programming languages like Python or Julia)
  • A programming language for anything other than estimation.
  • A visually-driven tool. (See Guesstimate and Causal)

The listed strengths are:

  • Simple and readable syntax, especially for dealing with probabilistic math.…
  • Optimized for using some numeric and symbolic approaches, not just Monte Carlo.
  • Embeddable in Javascript.

The last one sounds useful.

It looks like this:

//Here, you’re expressing a 90% confidence that the value is between 8.1 and 8.4 Million.
populationOfNewYork2022 = 8.1M to 8.4M

proportionOfPopulationWithPianos = {
  // This is a block.
  percentage = 0.2 to 1 // Block body can declare local variables.
  percentToRatio = 0.01
  percentage * percentToRatio // Final expression of a block is the block’s value.
}

pianoTunersPerPiano = {
  pianosPerPianoTuner = 2k to 50k
  1 / pianosPerPianoTuner
}

totalTunersIn2022 = populationOfNewYork2022 * proportionOfPopulationWithPianos *
pianoTunersPerPiano

3.3 Enterprise probabilistic spreadsheets

Enterprise versions of guesstimate. I have not used these.

4 References

Harte. 1988. Consider a Spherical Cow: A Course in Environmental Problem Solving.
Hubbard. 2014. How to Measure Anything: Finding the Value of Intangibles in Business.
Mahajan. 2010. Street-Fighting Mathematics: The Art of Educated Guessing and Opportunistic Problem Solving.
Swartz. 2003. Back-of-the-Envelope Physics.