Hacker News new | ask | show | jobs
by ozgooen 2733 days ago
I'd definitely agree that correlations can be a really big deal, especially in very large models like that one.

Guesstimate doesn't currently allow for correlations as you're probably thinking of them. However, if two nodes are both functions of a third base node, then they will both be correlated with each other. You can use this to make somewhat hacky correlations in cases where there isn't a straightforward causal relationship.

Implementing non-causal correlations in an interface like this is definitely a significant challenge. It could introduce essentially another layer to the currently 2-dimensional grid. It's probably the feature I'd most like to add, but the cost was too high so far.

I think Guesstimate is really ideal for smaller models, or for the prototyping of larger models. However, if you are making multi-million dollar decisions with hundreds of variables and correlations, I suggest more heavyweight tools (either enterprise Excel plugins or probabilistic programming).

2 comments

Thanks for explaining your thought process, I read your other replies and it's agree that many decisions are being made without any formal probabilistic model at all. There's a lot of value in sitting down and working out how things might be related to each other.

> where there isn't a straightforward causal relationship

One way to interpret a global pairwise correlation is simply that the person building the model is being systematically biased in one direction—either being too pessimistic or optimistic. This is a 'non-causal' relationship but often the biggest contributor to variance between the model and the real world.

Philosophically, this is a bit like the difference between 538's modeling approach and Princeton Election Consortium's for the 2016 election—the former gave Hillary a 2/3 chance of winning, while the latter ascribed a ~99% chance.

The risk of leaving modeling error out is that you'll end up with much more confidence than is called for—it feels very different to come up with a point estimate (I'll save $10k this year) vs. a tight range (I'll save 9k-11k this year), if the true range is much wider.

In the former case you know your point estimate may be very far off, but in the latter you may be tempted to rely on an estimate for variance that too low.

> It could introduce essentially another layer to the currently 2-dimensional grid

You could probably get away with doing almost all of this automatically for the user as long as the decide on what the 'primary' output is:

- For every input, calculate whether it's positively or negatively correlated with the output

- Apply a global rank correlation to all the inputs with all the standard techniques, flipping the signs found above as appropriate

- Report what the output range looks with a significant positive correlation (usually the negative correlation case isn't as interesting)

You can arbitrarily (rank-)correlate any variables of any distribution using copulas as an intermediary.

So basically, draw a multivariate correlated standard normal with the intended correlation. Transform the standard normal draws into quantiles of the standard normal (this works the marginal distributions are also normal). Now you have X and Y quantiles for your target distributions and you can draw from them.

The distributional transformations will slightly attenuate the correlation, and the choppier the distributions the more attenuation you'll get. Additionally, while you can do this for 3+ variables at once, there are constraints on the possible sigma matrix describing n-dimensional correlations.

If the variables have no fixed distribution you can use the eCDF of the actual data, so it's even possible to import e.g. population and income data and produce a permutation that gives you the correlation desired.

I agree that it is fairly difficult to do this if you have arbitrary DGPs with complex interdependencies in them--if you correlate on variables A and B, then it is difficult to guarantee the observed correlation between f(A) and g(B) and vice versa--but still you can provide a lot of utility with the copula method.