Show HN: Excel Sensitivity Analysis Tool
causal.app
causal.app
If you have a spreadsheet model, it lets you answer questions like "Which variable in my model is the most important?" and "If I underestimate X by 10%, what's the effect on Y?".
Most models are built on assumptions and estimates — if you run a company, your financial model will probably include an assumption around your customer growth rate in the future. If you use this model to make decisions — "How many people can we hire in Q4?" — then it's important to understand how sensitive these decisions are to your assumptions. It may turn out that overestimating your growth rate by 10% means you can only hire half as many people, in which case you'll probably want to hire a bit more conservatively. This analysis is pretty cumbersome to do in spreadsheets.
More broadly, we think there should be a better way than Excel to crunch numbers and do modelling, and we're trying to build it (https://causal.app). Would love to chat if this sounds interesting: taimur@causal.app :)
[1]https://www.sciencedirect.com/science/article/pii/S095183201... [2]https://www.sciencedirect.com/science/article/pii/S001046551... [3]https://www.sciencedirect.com/science/article/pii/S095183201...
I am not aware of any software package that implements these algorithms, although I am working towards creating or contributing to a python library that does. Ideally I'd publish a paper in a few months showing how the results (e.g, ranking of importance) differs from the independent case on particular datasets.
Edit: It turns out SAlib recently added some of this functionality. I'll check it out!
Thanks for making this.
I will ask the obvious question: how is this different from the sensitivity analysis provided in the built in data table functionality?
I'll say a little more: I've seen people typically take a datatable and run it over a range of variables and then make some tornado plots.
I just googled around and there is a lot of noise but this one seems to have a clear explanation of what I mean:
https://www.f1f9.com/wp-content/uploads/2019/05/F1F9_Tornado...
- Do you really want to be using important models in such an error-prone and difficult to test environment as Excel? There's a whole Spreadsheet Risks Interest Group (http://www.eusprig.org/horror-stories.htm) that collects tales of billion-dollar errors that are attributable to (poor use of) Excel.
- A simple sensitivity analysis such as a tornado plot (while clearly much better than the common practice of reporting nothing on sensitivity of uncertain model inputs) is a local approach: it's telling you which variables are important around one specific point in the input space (generally the median for each input). A global sensitivity analysis method such as implemented here gives you information on the entire input space (which can be quite different if your input model has non-linear features).
- A tornado plot corresponds to a "one-at-a-time" sensitivity analysis (modifying each input variable individually), whereas a global method varies all inputs simultaneously and can reveal potential interactions between inputs, potentially very important if your model is non-linear.
Some background material on these points from a course that I run: https://risk-engineering.org/sensitivity-analysis/
Relevant to understanding causality in systems: https://en.wikipedia.org/wiki/Twelve_leverage_points
@RISK is pretty cool and does a lot of important things that spreadsheets alone don't do, like working with distributions + monte carlo instead of single values, and sensitivity analysis. It has a pretty steep learning curve, though, and inherits all the issues of the spreadsheet paradigm.
It looks like your tool is closer to TopRank from Palisade in it's functionality?
This tool is a standalone thing, and you're right — it's similar to TopRank. Our actual product, Causal (https://causal.app) has aspects of @RISK, but packaged in our own (non-spreadsheet) modelling paradigm.
A previous comment mentions you are using SALib in Python, which can (even if it's not documented) use normal probability distributions for the inputs: here's a notebook with an example: https://risk-engineering.org/notebook/sensitivity-analysis.h...
I tried sending an email the the address given in your website, but my message bounced back with an error:
"<hi@casual.app>: Host or domain name not found. Name service error for name=casual.app type=A: Host not found"