Open michaeldickens opened 10 months ago
Oh I should also mention, the function sq.numeric
works basically as a drop-in replacement for sq.sample
. I tested this PR on two of Laura Duffy's cost-effectiveness models (https://github.com/rethinkpriorities/risk_model) and it was pretty easy to port over, just had to ctrl-F sq.sample -> sq.numeric plus a couple other changes.
Changes
This PR adds support for representing distributions numerically. The PR includes documentation on how exactly it works, see doc/source/numeric_distributions.rst. So I will just summarize the changes.
When people do cost-effectiveness analyses or other sorts of Fermi estimates, if they incorporate uncertainty at all, they almost always use Monte Carlo sampling. Numerically representing probability distributions as histograms is usually much more accurate at a given level of speed (or, equivalently, much faster at a given level of accuracy), so it kind of bugs me that people hardly ever use numeric methods. But as far as I know, there aren't any good tools for numeric methods, and it's a bit tricky to implement from scratch: not difficult in the grand scheme of things, but more involved than writing a Monte Carlo simulation, which you can do in only a few lines of code. So I decided to extend Squigglepy to support numeric methods.
I hope to reproduce this PR in Squiggle since Squiggle is actively supported and more widely used, but I did it in Squigglepy first because I thought it would be simpler (especially because Python has good numeric libraries).
An overview of supported features:
QA