Revealing causal links in complex systems: New algorithm shows hidden influences
techxplore.com
techxplore.com
> The method, in the form of an algorithm, takes in data that have been collected over time, such as the changing populations of different species in a marine environment. From those data, the method measures the interactions between every variable in a system and estimates the degree to which a change in one variable (say, the number of sardines in a region over time) can predict the state of another (such as the population of anchovy in the same region).
I also read the introduction of the paper. Maybe I misunderstood something about causal inference, but I thought from data alone one could only infer correlations or associations (in general). To talk about "causal" links, I thought you need either to assume a particular model of the data generation process, or perform some interventions on the system to be able to decide the direction of the arrows in the "links" in general.
I'm not saying that the paper is wrong or anything, it looks super useful! It's just that one should be careful when writing/reading the word "causal".
With some generic assumptions, or prior knowledge about the system, you can do causal discovery.
For example, just the assumption that there is additive random noise enables discovering causal arrows just by observing the system.
E.g. Granger casusality means that A is typically detected before B and not the other way around (so not mere correlation). It's a moby useful concept.
GitHub link: https://github.com/Computational-Turbulence-Group/SURD
So my compromise is to post the PR, but give the paper link in the first comment
Seen elsewhere: https://github.com/BCG-X-Official/facet, which uses SHAP attributions as inputs:
> The SHAP implementation is used to estimate the shapley vectors which FACET then decomposes into synergy, redundancy, and independence vectors.
But FACET it still about sorting things out in the 'correlation world'.
To get back to SURD: IMHO, when talking about causality one should incorporate some kind of precedence, or order; One thing is the cause of another. Here in SURD they sort of introduce it in a roundabout way by using time's order:
> requiring only pairs of past and future events for analysis
But maybe we could have had fully-fledged custom DAGs, like from here https://github.com/nathanwang000/Shapley-Flow (which don't yet have the redundant/unique/synergistic decomposition)
Also, how do we deal with undetectable "post hoc ergo propter hoc" fallacy, though? (travesting time as causal ordering). How do we deal with confounding? Custom DAGs would have been great.
I'm longing for a SURD/SHAP/FACET/Shapleyflow integration paper. We're so close to it.
Either way, Holland's 'Statistics and Causal Inference' paper (1986) is a nice read on the different frameworks for causality, especially in regards to Granger (&friends) versus do-calculus/Neyman-Rubin.
In case anyone else wants to take a look: