Home - adam-zlatniczki/dimensional_causality GitHub Wiki

Welcome to the Dimensional Causality wiki!

We are constantly working on making this wiki as useful as possible. You can track our progress in the Projects page.

Now, let's get you familiar with what our package is capable of. Let's assume that we have two systems, X and Y (of which we have two time series measurements, x and y). There can be 5 cases of causality:

  • X causes Y (direct causality, denoted by X -> Y)
  • X and Y both have a causal effect on each other (circular causality, denoted by X <-> Y)
  • Y causes X (direct causality, denoted by X <- Y)
  • Both X and Y are caused by a third, hidden system (common cause, denoted by X cc Y)
  • X and Y are independent (denoted by X | Y)

Very roughly speaking, if X causes Y, then if X changes, Y changes accordingly, but not vice versa. This is fundamentally different from correlation, which is an undirected measure of (linear) dependence. The Dimensional Causality method returns the probability of each of the 5 cases of causality (in the order presented above), given the two time-series measured from the two systems. Keep in mind that Dimensional Causality works only with deterministic, stationary systems - if you have observational noise, then you should filter it. If your systems have dynamical noise, then you should rather try different methods, like Granger causality.

If you're eager to try our method visit the installation instructions. You can also find a small random example on how to run the software.

Of course, you're probably interested in analyzing your own data. Your data most likely has to undergo some preprocessing before Dimensional Causality can be effectively applied to it, though. There are also a few parameters that you have to specify. For a guide on these you should read our paper cited below, especially the Workflow chapter in the Supplementary Material. For a smaller, hands-on guide see Choosing parameters.

We also provide a case study where we show step-by-step how one should approach a totally new dataset, apply preprocessing, select parameters and validate the results.

This project contains the implementation of the Dimensional Causality method proposed in Benko, Zlatniczki, Fabo, Solyom, Eross, Telcs & Somogyvari (2018) - Exact Inference of Causal Relation in Dynamical Systems (you can find it at ResearchGate).

The method is available in several programming languages (see the Feature support page). It is quite fast due to being implemented in pure C++ with a lot of optimization and parallelization. Other versions are equally fast, since they rely on the same C++ code.