Guesstimation
Fermi calculations, calculation hacks, principled estimates, informed guesses
April 9, 2024 — April 15, 2024
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.