Guesstimation

Fermi calculations, calculation hacks, principled estimates, informed guesses

April 9, 2024 — April 15, 2024

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.