Closed zemlyansky closed 4 years ago
Hi @zemlyansky thank you for your question.
In short: causalnex does not find causal relationships. causalnex allows data scientists to collaborate with domain experts, to define a causal structure, and then draw causal insights from it.
You are correct that Bayesian Networks can equivalently encode dependencies as you describe. However, one of these equivalencies may be causal, and others will not. For example, if we replace a, b, c with age, height, and reach, then we can say that:
However, we cannot equivalently say:
So, to your question "What helps causalnex find causal relationships and does it really do that?". No, Causalnex does not find causal relationships. However, causalnex does "help data scientists to infer causation", "in the case where BNs are causal".
How does it do this? By encouraging the workflow of StructureModel
-> BayesianNetwork
-> InferenceEngine
.
StructureModel
, which is not causal.StructureModel
with domain experts, who can amend the structure to reflect known causal relationships (cross referencing literature, expertise, etc).BayesianNetwork
from the causal StructureModel
, and use the InferenceEngine
to create insights.The important step here is the collaboration between data scientists and domain experts. Ideally, a domain expert could look at our variables, and tell us the structure. In practice this is too time consuming for such a valuable resource, and so structure learning algorithms can help make this iterative process significantly faster.
It is our intention to use GitHub Issues to track development related issues for causalnex. As such, I will close this Issue. However, please do get in contact if you would like to discuss this in more detail.
Ben
In the lib repo you write:
In docs:
Also:
A bayesian network can equivalently encode dependency between variables as a -> b -> c and a <- b <- c. https://en.wikipedia.org/wiki/Bayesian_network#Causal_networks. What helps causalnex find causal relationships and does it really do that? Thanks