From 32b4c03815fd2cf78dd29d95518c4ed2daf62b5b Mon Sep 17 00:00:00 2001 From: FlorentijnD Date: Fri, 3 Jun 2022 00:04:09 +0200 Subject: [PATCH] Port causality from internal quick-tips repo to open-source GitHub --- .../2022_06_02_causality/README.md | 98 + .../figs/PCMCI_visual.png | Bin 0 -> 93466 bytes .../figs/causality_vs_correlation.png | Bin 0 -> 183081 bytes .../figs/conditional_causality.png | Bin 0 -> 12232 bytes .../2022_06_02_causality/requirements.txt | 88 + .../src/Example notebook.ipynb | 1714 +++++++++++++++++ .../2022_06_02_causality/src/data.pickle | Bin 0 -> 97673 bytes .../2022_06_02_causality/src/helpers/pcmci.py | 97 + .../src/helpers/stationarity.py | 144 ++ .../src/helpers/transfer_entropy.py | 43 + .../src/transfer_entropy/README.md | 5 + .../src/transfer_entropy/__init__.py | 0 .../transfer_entropy/pycausality/__init__.py | 0 .../src/transfer_entropy/pycausality/src.py | 1226 ++++++++++++ .../transfer_entropy_wrapper.py | 169 ++ 15 files changed, 3584 insertions(+) create mode 100644 structured_data/2022_06_02_causality/README.md create mode 100644 structured_data/2022_06_02_causality/figs/PCMCI_visual.png create mode 100644 structured_data/2022_06_02_causality/figs/causality_vs_correlation.png create mode 100644 structured_data/2022_06_02_causality/figs/conditional_causality.png create mode 100644 structured_data/2022_06_02_causality/requirements.txt create mode 100644 structured_data/2022_06_02_causality/src/Example notebook.ipynb create mode 100644 structured_data/2022_06_02_causality/src/data.pickle create mode 100644 structured_data/2022_06_02_causality/src/helpers/pcmci.py create mode 100644 structured_data/2022_06_02_causality/src/helpers/stationarity.py create mode 100644 structured_data/2022_06_02_causality/src/helpers/transfer_entropy.py create mode 100644 structured_data/2022_06_02_causality/src/transfer_entropy/README.md create mode 100644 structured_data/2022_06_02_causality/src/transfer_entropy/__init__.py create mode 100644 structured_data/2022_06_02_causality/src/transfer_entropy/pycausality/__init__.py create mode 100644 structured_data/2022_06_02_causality/src/transfer_entropy/pycausality/src.py create mode 100644 structured_data/2022_06_02_causality/src/transfer_entropy/transfer_entropy_wrapper.py diff --git a/structured_data/2022_06_02_causality/README.md b/structured_data/2022_06_02_causality/README.md new file mode 100644 index 0000000..d22e638 --- /dev/null +++ b/structured_data/2022_06_02_causality/README.md @@ -0,0 +1,98 @@ +# Causality + +## What is causality? +Causality in time series is a tricky thing. You want to find out which variables cause others. +The notion itself is very subtle and at the same time very strong. + +It's in essence a stronger way of looking at dynamics between variables than the well known correlation metric. +Why? Well.. Let's prove it intuitively. +In the figure below you can expect that our three (time-series) variables are strongly correlated with each other. +It makes sense to say that having your skin burned has a strong correlation with the amount of ice creams you might eat on a given day. +However, this does not necessarily mean that eating ice cream causes skin burns! +Using causality analysis techniques, we can better model and find the _causal_ links between variables. +If our analysis was successful, we'd conclude that sunshine causes us to eat lots of ice cream and also causes our skin to burn. +The analysis would also show that there is no causal relationship between eating ice cream and getting your skin burnt, or vice versa. +Note that causality is a directional way of working, whereas correlation is not! + +![causality vs correlation example](figs/causality_vs_correlation.png) + +## Causality analysis as a guidance. +Keep in mind that causality analyses are in essence unsupervised techniques. +There is really no way to check whether the results make sense at all. + +In a experimental setting, people create toy datasets of which they determined the dynamics (linear and non-linear mathematical equations) upfront. Examples: + +- [this towardsdatascience article](https://towardsdatascience.com/causality-931372313a1c) +- [the original paper of PCMCI](https://advances.sciencemag.org/content/5/11/eaau4996) +- [this paper which compares causality techniques](https://arxiv.org/pdf/2104.08043v1.pdf) + +Typically, the internal dynamics are unknown or too hard to try to model (think about complex physical processes). In such cases, causality is merely a tool to represent the dynamics of the system. +That's why results of causality analysis should be checked with the knowledge of experts. Try to make sure you are close to this expertise in your causality projects! + +## Context + +The notion of causality is not new and can be traced back to the [Vedic period]{https://en.wikipedia.org/wiki/Vedic_period#:~:text=The%20Vedic%20period%2C%20or%20the,%2C%20including%20the%20Vedas%20(ca.} which also brought about the well known concept of Karma. Next to a concept, causality nowadays has a practical and theoretical framework. Establishing this framework is possbile due to advanced mathematical and statistical sciences, coupled with an increase in computational power and our ability to capture digital data, and thereby, processes around us. + +## Approaches +The earliest notion of this theoretical causality in time series is **granger causality**, put forward by [Granger in 1969](https://en.wikipedia.org/wiki/Granger_causality. +We say that a variable *X* that evolves over time *Granger-causes* another evolving variable *Y* if predictions of the value of *Y* based on its own past values *and* on the past values of *X* are better than predictions of *Y* based only on *Y'*s own past values. + +> Just like with all other approaches mentioned in this section, the time series must be made stationary first! We provide [code](../2021_02_08_timeseries_getting_started/time_series_getting_started.ipynb) that automatically checks for stationarity and by differencing tries to make the time series stationary if that's not the case already. + +Granger causality works fine when you want to check for two variables whether one causes the other in a _linear_ way. There exist methods (non-parametric ways) to also look out for _non-linear_ causal interactions. We advocate to use these at all times, except if you're certain that the underlying complexity is linear by nature. + +Enter **Transfer Entropy**! [This article](https://towardsdatascience.com/causality-931372313a1c) gives a good overview of the differences and the similarities between Transfer Entropy (developed in 2000) and Granger Causality. In short, Transfer Entropy is the non-linear variant of granger causality and has proven to be the most intuitive and performant (quality and consistency of results) method in our current toolbox. We advocate [this python implementation](https://pypi.org/project/PyCausality/). The code itself is not maintained anymore but still works well. As the pip package is unstable, it's easier to just copy the source code and go off from there, which we already did for you :-). Check out the [code](./src/transfer_entropy/transfer_entropy_wrapper.py)! + +A more recent (2015) approach to causality is [PCMCI](https://github.com/jakobrunge/tigramite/). It was originally developed to find causal interactions in highly dimensional time series. This package is also able to _condition out_ variables. + +> **What does conditioning out mean in this context?** When a variable A is causing a variable B, and variable B causes variable C, then A is causing C to some degree as well. If B is not adding extra significant information to C, compared to A, then PCMCI will not end up showing the causal link between B and C, but will only output that A causes C. + +![conditional cuasality](figs/conditional_causality.png) + +**PCMCI** is a two phased approach: + +1. PC: condition selection algorithm (finds relevant parents to target variables) + This first removes the variables that are not even conditionally dependent by independence testing. + Then, the conditional dependence for the strongest dependent variables are checked + → This is done iteratively, until convergence + + → Ending up with a list of relevant conditions (=relevant variables at a certain lag) + +2. MCI: “Momentary conditional independence” + + ​ → false positive control for highly-interdependent time series + + ​ → Also Identifies causal strength of a causal relationship + +This two - phased approach is the skeleton of how PCMCI works. You have to instantiate PCMCI with a conditional independence test as well. Here, you have 5 options (see `tigramite.independence_tests` in the [documentation](https://jakobrunge.github.io/tigramite/)). Let's highlight some: + +1. [`tigramite.independence_tests.CondIndTest`](https://jakobrunge.github.io/tigramite/#tigramite.independence_tests.CondIndTest) : This is the base class on which all actual independence tests are built. + +2. [`tigramite.independence_tests.ParCorr`](https://jakobrunge.github.io/tigramite/#tigramite.independence_tests.ParCorr) : This test is based on correlation and works well for linear causal effects + +3. [`tigramite.independence_tests.CMIknn`](https://jakobrunge.github.io/tigramite/#tigramite.independence_tests.CMIknn) : This test is a non-parametric test for continuous data that's based on KNN as the name suggests. It works well for + + - Non-linear dependencies + + - Additive *and* multiplicative noise + + It's computationally the most expensive option though. If you want more information, have a look at the [paper](https://core.ac.uk/download/pdf/211564416.pdf). + +One of the most important parameters is alpha, denoting the “degree of conservativity”. The higher alpha, the quicker PCMCI will identify causal links higher risk for false positives. This value typically lies between 0.05 and 0.5. From our experiments, we've seen that that statement is correct most of the times (so not always). Running PCMCI with different values for alpha (e.g. [0.05, 0.1, 0.2, 0.4]) is a good idea! + +> Note that this alpha hyperparameter can be tuned automatically when alpha is set to `None` . That's at least what the documentation says, and that is correct for ParCorr, but not for other independence tests. See [this issue](https://github.com/jakobrunge/tigramite/issues/49) for more information. + + + +One last thing! PCMCI has really nice visuals as output. You can see an example below. + + ![PCMCI visual](figs/PCMCI_visual.png) + + The cross-MCI denotes how strong the causal link is between different variables. The auto-MCI scale denotes how strong the causal link is between current and past values (lags) for one specific variable (denoted as a node in the graph). The numbers denote the lags for which a causal link was found. + +#### Try it out yourself! +Have a look in this repo to find out how TE and PCMCI can help you in your use-case! You can find [an example notebook](./src/Example%20notebook.ipynb) in the `src/` folder! + +> Extra remark 1: In 2020, the creator of PCMCI has come up with an extension of PCMCI, named PCMCI+. From our projects and experiments, we have seen that PCMCI+ shows inconsistent results over different runs. Although PCMCI can (not in every case though) suffer from the same problem, it feels much more reliable. We therefore advocate not to use PCMCI+, except when your use-case has the need to check contemporaneous links, i.e. check whether A causes B, for both historic as well as current time steps instead of only historic time steps (see [PCMCI+ paper](http://proceedings.mlr.press/v124/runge20a.html)). + +> Extra remark 2: In the PCMCI+ paper, the authors state that highly autocorrelated time series are challenging for most time series causality approaches and hints that that is also the case for (regular) PCMCI. You might want to keep this in mind when using PCMCI. \ No newline at end of file diff --git a/structured_data/2022_06_02_causality/figs/PCMCI_visual.png b/structured_data/2022_06_02_causality/figs/PCMCI_visual.png new file mode 100644 index 0000000000000000000000000000000000000000..8795fe602952f28d142e903503c92390fe558c76 GIT binary patch literal 93466 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%0DDKr;F4M_(daB3~ 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 Nfv2mV%Q~loCIG2pYZm|j literal 0 HcmV?d00001 diff --git a/structured_data/2022_06_02_causality/figs/causality_vs_correlation.png b/structured_data/2022_06_02_causality/figs/causality_vs_correlation.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd4ed36808bea0e1cf06be2b8181d2f1fbaabee GIT binary patch literal 183081 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 z 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⪚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 )CR$eJoz6|v`GeC*aD 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 awucDm(|K;IYDu9_t6$MnDY|TN|9=7Odmd~6 literal 0 HcmV?d00001 diff --git a/structured_data/2022_06_02_causality/requirements.txt b/structured_data/2022_06_02_causality/requirements.txt new file mode 100644 index 0000000..61b8788 --- /dev/null +++ b/structured_data/2022_06_02_causality/requirements.txt @@ -0,0 +1,88 @@ +argon2-cffi==21.3.0 +argon2-cffi-bindings==21.2.0 +asttokens==2.0.5 +async-generator==1.10 +attrs==21.4.0 +backcall==0.2.0 +beautifulsoup4==4.11.1 +bleach==5.0.0 +certifi==2022.5.18.1 +cffi==1.15.0 +cycler==0.11.0 +debugpy==1.6.0 +decorator==5.1.1 +defusedxml==0.7.1 +dill==0.3.5.1 +entrypoints==0.4 +executing==0.8.3 +fastjsonschema==2.15.3 +fonttools==4.33.3 +ipykernel==6.13.0 +ipython==8.4.0 +ipython-genutils==0.2.0 +ipywidgets==7.7.0 +jedi==0.18.1 +Jinja2==3.1.2 +joblib==1.1.0 +jsonschema==4.6.0 +jupyter==1.0.0 +jupyter-client==7.3.1 +jupyter-console==6.4.3 +jupyter-core==4.10.0 +jupyterlab-pygments==0.2.2 +jupyterlab-widgets==1.1.0 +kiwisolver==1.4.2 +llvmlite==0.38.1 +MarkupSafe==2.1.1 +matplotlib==3.5.2 +matplotlib-inline==0.1.3 +mistune==0.8.4 +nbclient==0.6.4 +nbconvert==6.5.0 +nbformat==5.4.0 +nest-asyncio==1.5.5 +networkx==2.8.2 +notebook==6.4.11 +numba==0.55.2 +numpy==1.22.4 +packaging==21.3 +pandas==1.4.2 +pandocfilters==1.5.0 +parso==0.8.3 +patsy==0.5.2 +pexpect==4.8.0 +pickleshare==0.7.5 +Pillow==9.1.1 +prometheus-client==0.14.1 +prompt-toolkit==3.0.29 +psutil==5.9.1 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pycparser==2.21 +Pygments==2.12.0 +pyparsing==3.0.9 +pyrsistent==0.18.1 +python-dateutil==2.8.2 +pytz==2022.1 +pyzmq==23.1.0 +qtconsole==5.3.0 +QtPy==2.1.0 +scikit-learn==1.1.1 +scipy==1.8.1 +seaborn==0.11.2 +Send2Trash==1.8.0 +six==1.16.0 +sklearn==0.0 +soupsieve==2.3.2.post1 +stack-data==0.2.0 +statsmodels==0.13.2 +terminado==0.15.0 +testpath==0.6.0 +threadpoolctl==3.1.0 +tigramite==5.0.0.3 +tinycss2==1.1.1 +tornado==6.1 +traitlets==5.2.2.post1 +wcwidth==0.2.5 +webencodings==0.5.1 +widgetsnbextension==3.6.0 diff --git a/structured_data/2022_06_02_causality/src/Example notebook.ipynb b/structured_data/2022_06_02_causality/src/Example notebook.ipynb new file mode 100644 index 0000000..b118184 --- /dev/null +++ b/structured_data/2022_06_02_causality/src/Example notebook.ipynb @@ -0,0 +1,1714 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1df7c4f1", + "metadata": {}, + "source": [ + "## Get the data ready" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "58b4a264", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "# imports\n", + "from datetime import datetime, timedelta\n", + "\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import dill as pickle\n", + "\n", + "from helpers.stationarity import remove_trend_and_diff" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "dried-genetics", + "metadata": {}, + "outputs": [], + "source": [ + "## Load in the data ##\n", + "# This data corresponds with one of the experiments carried out in this paper : \n", + "# https://arxiv.org/pdf/2104.08043v1.pdf\n", + "# More specifically, this data is the first of the 200 data samples used in \n", + "# the Causal Sufficiency experiment, with one latent variable.\n", + "# See https://github.com/causalens/cdml-neurips2020 for more information.\n", + "\n", + "filename = 'data.pickle'\n", + "\n", + "with open(filename, 'rb') as f:\n", + " # the pickle file contains a pandas dataframe as well as the causal\n", + " # graph that was generated by the authors of the paper, which we don't need\n", + " df, _ = pickle.load(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8bcd194a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tackling new col X1\n", + " --> (KPSS & ADF) Time-series IS stationary for X1 (after 0 differencing operations)!\n", + "\n", + "tackling new col X10\n", + " --> (KPSS & ADF) Time-series IS stationary for X10 (after 0 differencing operations)!\n", + "\n", + "tackling new col X2\n", + " --> (KPSS & ADF) Time-series IS stationary for X2 (after 0 differencing operations)!\n", + "\n", + "tackling new col X3\n", + " --> (KPSS & ADF) Time-series IS stationary for X3 (after 0 differencing operations)!\n", + "\n", + "tackling new col X4\n", + " --> (KPSS & ADF) Time-series IS stationary for X4 (after 0 differencing operations)!\n", + "\n", + "tackling new col X5\n", + " --> (KPSS & ADF) Time-series IS stationary for X5 (after 0 differencing operations)!\n", + "\n", + "tackling new col X6\n", + " --> (KPSS & ADF) Time-series IS stationary for X6 (after 0 differencing operations)!\n", + "\n", + "tackling new col X7\n", + " --> (KPSS & ADF) Time-series IS stationary for X7 (after 0 differencing operations)!\n", + "\n", + "tackling new col X8\n", + " --> (KPSS & ADF) Time-series IS stationary for X8 (after 0 differencing operations)!\n", + "\n", + "tackling new col X9\n", + " --> (KPSS & ADF) Time-series IS stationary for X9 (after 0 differencing operations)!\n", + "\n", + "(Maximum number of differencing operations performed was 1)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
X1X10X2X3X4X5X6X7X8X9
2019-09-06 23:45:32.296715-1.667105-0.6471290.580980-0.9436760.475631-0.298541-0.5627680.5113421.176538-0.137143
2019-09-07 23:45:32.2967150.2240830.5083400.5212880.4050350.918387-0.6118662.306102-0.6588710.179594-0.455267
2019-09-08 23:45:32.296715-1.0866410.201047-2.9899570.466461-0.292212-0.9605430.697460-0.6824880.6923191.161958
2019-09-09 23:45:32.296715-0.4219860.9933650.662050-0.896384-0.4305991.7645460.3702392.4183680.616185-0.104601
2019-09-10 23:45:32.296715-0.109283-0.413054-1.2224581.193096-0.220662-0.8315290.723627-0.5442370.502862-1.117350
\n", + "
" + ], + "text/plain": [ + " X1 X10 X2 X3 X4 \\\n", + "2019-09-06 23:45:32.296715 -1.667105 -0.647129 0.580980 -0.943676 0.475631 \n", + "2019-09-07 23:45:32.296715 0.224083 0.508340 0.521288 0.405035 0.918387 \n", + "2019-09-08 23:45:32.296715 -1.086641 0.201047 -2.989957 0.466461 -0.292212 \n", + "2019-09-09 23:45:32.296715 -0.421986 0.993365 0.662050 -0.896384 -0.430599 \n", + "2019-09-10 23:45:32.296715 -0.109283 -0.413054 -1.222458 1.193096 -0.220662 \n", + "\n", + " X5 X6 X7 X8 X9 \n", + "2019-09-06 23:45:32.296715 -0.298541 -0.562768 0.511342 1.176538 -0.137143 \n", + "2019-09-07 23:45:32.296715 -0.611866 2.306102 -0.658871 0.179594 -0.455267 \n", + "2019-09-08 23:45:32.296715 -0.960543 0.697460 -0.682488 0.692319 1.161958 \n", + "2019-09-09 23:45:32.296715 1.764546 0.370239 2.418368 0.616185 -0.104601 \n", + "2019-09-10 23:45:32.296715 -0.831529 0.723627 -0.544237 0.502862 -1.117350 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Process data\n", + "df.index = pd.date_range(datetime.today() - timedelta(days = len(df)), \n", + " periods=len(df))\n", + "df_stat = remove_trend_and_diff(df.resample('W-MON').mean(), \n", + " debug=False)\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "67b0df31", + "metadata": {}, + "source": [ + "### Cool! Apparently, our dataset was completely stationary already. Let's start the analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "00ee028a", + "metadata": {}, + "outputs": [], + "source": [ + "# determine min and max lags\n", + "tau_min=0\n", + "tau_max=4" + ] + }, + { + "cell_type": "markdown", + "id": "fcab33b7", + "metadata": {}, + "source": [ + "# 1. Transfer entropy" + ] + }, + { + "cell_type": "markdown", + "id": "d8f98149", + "metadata": {}, + "source": [ + "## Run TE" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fb6973c9", + "metadata": {}, + "outputs": [], + "source": [ + "# imports\n", + "from transfer_entropy.transfer_entropy_wrapper import average_transfer_entropy\n", + "from helpers.transfer_entropy import export_as_df" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ab448ec2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "lag(0)\n", + "X1 -> X10\n", + "X2 -> X10\n", + "X3 -> X10\n", + "X4 -> X10\n", + "X5 -> X10\n", + "X6 -> X10\n", + "X7 -> X10\n", + "X8 -> X10\n", + "X9 -> X10\n", + "took 15.5995512008667 seconds\n", + "\n", + "lag(1)\n", + "X1 -> X10\n", + "X2 -> X10\n", + "X3 -> X10\n", + "X4 -> X10\n", + "X5 -> X10\n", + "X6 -> X10\n", + "X7 -> X10\n", + "X8 -> X10\n", + "X9 -> X10\n", + "took 14.241465091705322 seconds\n", + "\n", + "lag(2)\n", + "X1 -> X10\n", + "X2 -> X10\n", + "X3 -> X10\n", + "X4 -> X10\n", + "X5 -> X10\n", + "X6 -> X10\n", + "X7 -> X10\n", + "X8 -> X10\n", + "X9 -> X10\n", + "took 13.998454570770264 seconds\n", + "\n", + "lag(3)\n", + "X1 -> X10\n", + "X2 -> X10\n", + "X3 -> X10\n", + "X4 -> X10\n", + "X5 -> X10\n", + "X6 -> X10\n", + "X7 -> X10\n", + "X8 -> X10\n", + "X9 -> X10\n", + "took 13.934021949768066 seconds\n", + "\n", + "lag(4)\n", + "X1 -> X10\n", + "X2 -> X10\n", + "X3 -> X10\n", + "X4 -> X10\n", + "X5 -> X10\n", + "X6 -> X10\n", + "X7 -> X10\n", + "X8 -> X10\n", + "X9 -> X10\n", + "took 13.63166069984436 seconds\n" + ] + } + ], + "source": [ + "# Number of shuffles to perform to determine the results' significance.\n", + "n_shuffles = 50 \n", + "# Whether or not to calculate the effective Transfer Entropy.\n", + "effective = False\n", + "# Whether or not to show intermediate results.\n", + "debug = False\n", + "\n", + "# Function execution\n", + "# !Make sure the first column in your dataframe is the target column you want to find causality for!\n", + "# In our case, we want to check causality with respect to X10, which we then define as the target var\n", + "def bring_col_to_front(df, column):\n", + " return df[[column] + [col for col in df.columns if col != column]]\n", + "df_stat = bring_col_to_front(df_stat, \"X10\")\n", + "\n", + "avg_nonlin_te = average_transfer_entropy(df_stat, \n", + " linear=False, \n", + " effective=effective, \n", + " tau_min=tau_min, \n", + " tau_max=tau_max,\n", + " n_shuffles=n_shuffles, \n", + " debug=debug)\n", + "avg_nonlin_te_arr = np.array(avg_nonlin_te)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "285d2a66", + "metadata": {}, + "outputs": [], + "source": [ + "# Parse output as pandas dataframe\n", + "avg_nonlin_te_df = export_as_df(avg_nonlin_te_arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c578e5c1", + "metadata": {}, + "outputs": [], + "source": [ + "# Remember that the parsed output of TE contains p-values\n", + "# To draw conclusions from these statistical notions, we have to \n", + "# arbitrarily pick an alpha (cut-off) value. Based on that value, we \n", + "# determine for which links there seems enough statistical evidence to conclude causality\n", + "threshold = 0.01\n", + "booldf = avg_nonlin_te_df.iloc[:,:]" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "viz_df_raw(avg_nonlin_te_df, booldf, threshold)" + ] + }, + { + "cell_type": "markdown", + "id": "6e19f278", + "metadata": {}, + "source": [ + "#### Graph explanations\n", + "The lineplots show the actual p-values for a given link between the target Variable (X10) and the explanatory variable at a given lag. Based on the cut-off value that we chose, we then also plot blue bars. These blue bars are popping up for the p values that are below the theshold. In essence these denote the combination of lags and variables that show a causal link for with regard to the target variable (X10 in this case)." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5dbd0993", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# clear matplotlib buffer to be able to make figures for pcmci\n", + "plt.clf()" + ] + }, + { + "cell_type": "markdown", + "id": "3679674f", + "metadata": {}, + "source": [ + "# 2. PCMCI" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5f488872", + "metadata": {}, + "outputs": [], + "source": [ + "# imports\n", + "from tigramite import data_processing as pp\n", + "from tigramite import plotting as tp\n", + "from tigramite.pcmci import PCMCI\n", + "from tigramite.independence_tests import CMIknn\n", + "\n", + "from helpers.pcmci import get_selected_links, process_and_visualize_results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d69a441d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "##\n", + "## Step 1: PC1 algorithm with lagged conditions\n", + "##\n", + "\n", + "Parameters:\n", + "selected_links = {0: [(1, -1), (1, -2), (1, -3), (1, -4), (2, -1), (2, -2), (2, -3), (2, -4), (3, -1), (3, -2), (3, -3), (3, -4), (4, -1), (4, -2), (4, -3), (4, -4), (5, -1), (5, -2), (5, -3), (5, -4), (6, -1), (6, -2), (6, -3), (6, -4), (7, -1), (7, -2), (7, -3), (7, -4), (8, -1), (8, -2), (8, -3), (8, -4), (9, -1), (9, -2), (9, -3), (9, -4)], 1: [(1, -1), (1, -2), (1, -3), (1, -4), (2, -1), (2, -2), (2, -3), (2, -4), (3, -1), (3, -2), (3, -3), (3, -4), (4, -1), (4, -2), (4, -3), (4, -4), (5, -1), (5, -2), (5, -3), (5, -4), (6, -1), (6, -2), (6, -3), (6, -4), (7, -1), (7, -2), (7, -3), (7, -4), (8, -1), (8, -2), (8, -3), (8, -4), (9, -1), (9, -2), (9, -3), (9, -4)], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 9: []}\n", + "independence test = cmi_knn\n", + "tau_min = 1\n", + "tau_max = 4\n", + "pc_alpha = [0.25]\n", + "max_conds_dim = None\n", + "max_combinations = 1\n", + "\n", + "\n", + "\n", + "## Variable X10\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Testing condition sets of dimension 0:\n", + "\n", + " Link (X1 -1) --> X10 (1/36):\n", + " Subset 0: () gives pval = 0.22200 / val = 0.028\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X1 -2) --> X10 (2/36):\n", + " Subset 0: () gives pval = 0.20000 / val = 0.032\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X1 -3) --> X10 (3/36):\n", + " Subset 0: () gives pval = 0.49700 / val = 0.018\n", + " Non-significance detected.\n", + "\n", + " Link (X1 -4) --> X10 (4/36):\n", + " Subset 0: () gives pval = 0.94000 / val = -0.002\n", + " Non-significance detected.\n", + "\n", + " Link (X2 -1) --> X10 (5/36):\n", + " Subset 0: () gives pval = 0.00600 / val = 0.060\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X2 -2) --> X10 (6/36):\n", + " Subset 0: () gives pval = 0.33300 / val = 0.020\n", + " Non-significance detected.\n", + "\n", + " Link (X2 -3) --> X10 (7/36):\n", + " Subset 0: () gives pval = 0.34600 / val = 0.020\n", + " Non-significance detected.\n", + "\n", + " Link (X2 -4) --> X10 (8/36):\n", + " Subset 0: () gives pval = 0.14900 / val = 0.032\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X3 -1) --> X10 (9/36):\n", + " Subset 0: () gives pval = 1.00000 / val = -0.019\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -2) --> X10 (10/36):\n", + " Subset 0: () gives pval = 0.20500 / val = 0.028\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X3 -3) --> X10 (11/36):\n", + " Subset 0: () gives pval = 0.50100 / val = 0.014\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -4) --> X10 (12/36):\n", + " Subset 0: () gives pval = 0.18900 / val = 0.028\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X4 -1) --> X10 (13/36):\n", + " Subset 0: () gives pval = 0.21200 / val = 0.028\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X4 -2) --> X10 (14/36):\n", + " Subset 0: () gives pval = 0.66300 / val = 0.010\n", + " Non-significance detected.\n", + "\n", + " Link (X4 -3) --> X10 (15/36):\n", + " Subset 0: () gives pval = 0.48000 / val = 0.016\n", + " Non-significance detected.\n", + "\n", + " Link (X4 -4) --> X10 (16/36):\n", + " Subset 0: () gives pval = 0.07700 / val = 0.038\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X5 -1) --> X10 (17/36):\n", + " Subset 0: () gives pval = 0.21900 / val = 0.023\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X5 -2) --> X10 (18/36):\n", + " Subset 0: () gives pval = 0.93400 / val = -0.000\n", + " Non-significance detected.\n", + "\n", + " Link (X5 -3) --> X10 (19/36):\n", + " Subset 0: () gives pval = 0.03600 / val = 0.049\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X5 -4) --> X10 (20/36):\n", + " Subset 0: () gives pval = 0.21900 / val = 0.026\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X6 -1) --> X10 (21/36):\n", + " Subset 0: () gives pval = 0.37800 / val = 0.018\n", + " Non-significance detected.\n", + "\n", + " Link (X6 -2) --> X10 (22/36):\n", + " Subset 0: () gives pval = 0.81100 / val = 0.004\n", + " Non-significance detected.\n", + "\n", + " Link (X6 -3) --> X10 (23/36):\n", + " Subset 0: () gives pval = 0.31300 / val = 0.021\n", + " Non-significance detected.\n", + "\n", + " Link (X6 -4) --> X10 (24/36):\n", + " Subset 0: () gives pval = 0.37900 / val = 0.019\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -1) --> X10 (25/36):\n", + " Subset 0: () gives pval = 0.75500 / val = 0.008\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -2) --> X10 (26/36):\n", + " Subset 0: () gives pval = 0.82700 / val = 0.004\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -3) --> X10 (27/36):\n", + " Subset 0: () gives pval = 0.81400 / val = 0.004\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -4) --> X10 (28/36):\n", + " Subset 0: () gives pval = 0.85500 / val = 0.003\n", + " Non-significance detected.\n", + "\n", + " Link (X8 -1) --> X10 (29/36):\n", + " Subset 0: () gives pval = 0.33000 / val = 0.020\n", + " Non-significance detected.\n", + "\n", + " Link (X8 -2) --> X10 (30/36):\n", + " Subset 0: () gives pval = 0.62600 / val = 0.010\n", + " Non-significance detected.\n", + "\n", + " Link (X8 -3) --> X10 (31/36):\n", + " Subset 0: () gives pval = 0.83800 / val = 0.004\n", + " Non-significance detected.\n", + "\n", + " Link (X8 -4) --> X10 (32/36):\n", + " Subset 0: () gives pval = 0.52500 / val = 0.014\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -1) --> X10 (33/36):\n", + " Subset 0: () gives pval = 0.05100 / val = 0.046\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X9 -2) --> X10 (34/36):\n", + " Subset 0: () gives pval = 0.66600 / val = 0.009\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -3) --> X10 (35/36):\n", + " Subset 0: () gives pval = 0.40800 / val = 0.020\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -4) --> X10 (36/36):\n", + " Subset 0: () gives pval = 0.29700 / val = 0.023\n", + " Non-significance detected.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X10 has 12 link(s):\n", + " (X2 -1): max_pval = 0.00600, min_val = 0.060\n", + " (X5 -3): max_pval = 0.03600, min_val = 0.049\n", + " (X9 -1): max_pval = 0.05100, min_val = 0.046\n", + " (X4 -4): max_pval = 0.07700, min_val = 0.038\n", + " (X2 -4): max_pval = 0.14900, min_val = 0.032\n", + " (X1 -2): max_pval = 0.20000, min_val = 0.032\n", + " (X3 -4): max_pval = 0.18900, min_val = 0.028\n", + " (X3 -2): max_pval = 0.20500, min_val = 0.028\n", + " (X1 -1): max_pval = 0.22200, min_val = 0.028\n", + " (X4 -1): max_pval = 0.21200, min_val = 0.028\n", + " (X5 -4): max_pval = 0.21900, min_val = 0.026\n", + " (X5 -1): max_pval = 0.21900, min_val = 0.023\n", + "\n", + "Testing condition sets of dimension 1:\n", + "\n", + " Link (X2 -1) --> X10 (1/12):\n", + " Subset 0: (X5 -3) gives pval = 0.22300 / val = 0.029\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X5 -3) --> X10 (2/12):\n", + " Subset 0: (X2 -1) gives pval = 0.39700 / val = 0.022\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -1) --> X10 (3/12):\n", + " Subset 0: (X2 -1) gives pval = 0.03700 / val = 0.041\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X4 -4) --> X10 (4/12):\n", + " Subset 0: (X2 -1) gives pval = 0.08100 / val = 0.040\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X2 -4) --> X10 (5/12):\n", + " Subset 0: (X2 -1) gives pval = 0.20900 / val = 0.027\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X1 -2) --> X10 (6/12):\n", + " Subset 0: (X2 -1) gives pval = 0.62200 / val = 0.011\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -4) --> X10 (7/12):\n", + " Subset 0: (X2 -1) gives pval = 0.42100 / val = 0.023\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -2) --> X10 (8/12):\n", + " Subset 0: (X2 -1) gives pval = 0.17700 / val = 0.030\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X1 -1) --> X10 (9/12):\n", + " Subset 0: (X2 -1) gives pval = 0.19200 / val = 0.029\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X4 -1) --> X10 (10/12):\n", + " Subset 0: (X2 -1) gives pval = 0.13000 / val = 0.031\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X5 -4) --> X10 (11/12):\n", + " Subset 0: (X2 -1) gives pval = 0.10400 / val = 0.032\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X5 -1) --> X10 (12/12):\n", + " Subset 0: (X2 -1) gives pval = 0.21400 / val = 0.026\n", + " No conditions of dimension 1 left.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X10 has 9 link(s):\n", + " (X9 -1): max_pval = 0.05100, min_val = 0.041\n", + " (X4 -4): max_pval = 0.08100, min_val = 0.038\n", + " (X2 -1): max_pval = 0.22300, min_val = 0.029\n", + " (X3 -2): max_pval = 0.20500, min_val = 0.028\n", + " (X1 -1): max_pval = 0.22200, min_val = 0.028\n", + " (X4 -1): max_pval = 0.21200, min_val = 0.028\n", + " (X2 -4): max_pval = 0.20900, min_val = 0.027\n", + " (X5 -4): max_pval = 0.21900, min_val = 0.026\n", + " (X5 -1): max_pval = 0.21900, min_val = 0.023\n", + "\n", + "Testing condition sets of dimension 2:\n", + "\n", + " Link (X9 -1) --> X10 (1/9):\n", + " Subset 0: (X4 -4) (X2 -1) gives pval = 0.03900 / val = 0.037\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Link (X4 -4) --> X10 (2/9):\n", + " Subset 0: (X9 -1) (X2 -1) gives pval = 0.01800 / val = 0.047\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Link (X2 -1) --> X10 (3/9):\n", + " Subset 0: (X9 -1) (X4 -4) gives pval = 0.00800 / val = 0.042\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Link (X3 -2) --> X10 (4/9):\n", + " Subset 0: (X9 -1) (X4 -4) gives pval = 0.30300 / val = 0.028\n", + " Non-significance detected.\n", + "\n", + " Link (X1 -1) --> X10 (5/9):\n", + " Subset 0: (X9 -1) (X4 -4) gives pval = 0.25700 / val = 0.032\n", + " Non-significance detected.\n", + "\n", + " Link (X4 -1) --> X10 (6/9):\n", + " Subset 0: (X9 -1) (X4 -4) gives pval = 0.15400 / val = 0.030\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Link (X2 -4) --> X10 (7/9):\n", + " Subset 0: (X9 -1) (X4 -4) gives pval = 0.84300 / val = 0.014\n", + " Non-significance detected.\n", + "\n", + " Link (X5 -4) --> X10 (8/9):\n", + " Subset 0: (X9 -1) (X4 -4) gives pval = 0.05200 / val = 0.036\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Link (X5 -1) --> X10 (9/9):\n", + " Subset 0: (X9 -1) (X4 -4) gives pval = 0.33800 / val = 0.027\n", + " Non-significance detected.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X10 has 5 link(s):\n", + " (X4 -4): max_pval = 0.08100, min_val = 0.038\n", + " (X9 -1): max_pval = 0.05100, min_val = 0.037\n", + " (X2 -1): max_pval = 0.22300, min_val = 0.029\n", + " (X4 -1): max_pval = 0.21200, min_val = 0.028\n", + " (X5 -4): max_pval = 0.21900, min_val = 0.026\n", + "\n", + "Testing condition sets of dimension 3:\n", + "\n", + " Link (X4 -4) --> X10 (1/5):\n", + " Subset 0: (X9 -1) (X2 -1) (X4 -1) gives pval = 0.00700 / val = 0.044\n", + " Still subsets of dimension 3 left, but q_max = 1 reached.\n", + "\n", + " Link (X9 -1) --> X10 (2/5):\n", + " Subset 0: (X4 -4) (X2 -1) (X4 -1) gives pval = 0.11400 / val = 0.034\n", + " Still subsets of dimension 3 left, but q_max = 1 reached.\n", + "\n", + " Link (X2 -1) --> X10 (3/5):\n", + " Subset 0: (X4 -4) (X9 -1) (X4 -1) gives pval = 0.02800 / val = 0.040\n", + " Still subsets of dimension 3 left, but q_max = 1 reached.\n", + "\n", + " Link (X4 -1) --> X10 (4/5):\n", + " Subset 0: (X4 -4) (X9 -1) (X2 -1) gives pval = 0.03600 / val = 0.035\n", + " Still subsets of dimension 3 left, but q_max = 1 reached.\n", + "\n", + " Link (X5 -4) --> X10 (5/5):\n", + " Subset 0: (X4 -4) (X9 -1) (X2 -1) gives pval = 0.10300 / val = 0.035\n", + " Still subsets of dimension 3 left, but q_max = 1 reached.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X10 has 5 link(s):\n", + " (X4 -4): max_pval = 0.08100, min_val = 0.038\n", + " (X9 -1): max_pval = 0.11400, min_val = 0.034\n", + " (X2 -1): max_pval = 0.22300, min_val = 0.029\n", + " (X4 -1): max_pval = 0.21200, min_val = 0.028\n", + " (X5 -4): max_pval = 0.21900, min_val = 0.026\n", + "\n", + "Testing condition sets of dimension 4:\n", + "\n", + " Link (X4 -4) --> X10 (1/5):\n", + " Subset 0: (X9 -1) (X2 -1) (X4 -1) (X5 -4) gives pval = 0.00800 / val = 0.041\n", + " Still subsets of dimension 4 left, but q_max = 1 reached.\n", + "\n", + " Link (X9 -1) --> X10 (2/5):\n", + " Subset 0: (X4 -4) (X2 -1) (X4 -1) (X5 -4) gives pval = 0.07300 / val = 0.036\n", + " Still subsets of dimension 4 left, but q_max = 1 reached.\n", + "\n", + " Link (X2 -1) --> X10 (3/5):\n", + " Subset 0: (X4 -4) (X9 -1) (X4 -1) (X5 -4) gives pval = 0.00400 / val = 0.043\n", + " Still subsets of dimension 4 left, but q_max = 1 reached.\n", + "\n", + " Link (X4 -1) --> X10 (4/5):\n", + " Subset 0: (X4 -4) (X9 -1) (X2 -1) (X5 -4) gives pval = 0.35500 / val = 0.025\n", + " Non-significance detected.\n", + "\n", + " Link (X5 -4) --> X10 (5/5):\n", + " Subset 0: (X4 -4) (X9 -1) (X2 -1) (X4 -1) gives pval = 0.19700 / val = 0.032\n", + " Still subsets of dimension 4 left, but q_max = 1 reached.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X10 has 4 link(s):\n", + " (X4 -4): max_pval = 0.08100, min_val = 0.038\n", + " (X9 -1): max_pval = 0.11400, min_val = 0.034\n", + " (X2 -1): max_pval = 0.22300, min_val = 0.029\n", + " (X5 -4): max_pval = 0.21900, min_val = 0.026\n", + "\n", + "Algorithm converged for variable X10\n", + "\n", + "## Variable X1\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Testing condition sets of dimension 0:\n", + "\n", + " Link (X1 -1) --> X1 (1/36):\n", + " Subset 0: () gives pval = 0.91800 / val = -0.000\n", + " Non-significance detected.\n", + "\n", + " Link (X1 -2) --> X1 (2/36):\n", + " Subset 0: () gives pval = 0.03800 / val = 0.047\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X1 -3) --> X1 (3/36):\n", + " Subset 0: () gives pval = 0.87700 / val = 0.002\n", + " Non-significance detected.\n", + "\n", + " Link (X1 -4) --> X1 (4/36):\n", + " Subset 0: () gives pval = 0.16500 / val = 0.033\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X2 -1) --> X1 (5/36):\n", + " Subset 0: () gives pval = 0.29500 / val = 0.023\n", + " Non-significance detected.\n", + "\n", + " Link (X2 -2) --> X1 (6/36):\n", + " Subset 0: () gives pval = 0.55500 / val = 0.012\n", + " Non-significance detected.\n", + "\n", + " Link (X2 -3) --> X1 (7/36):\n", + " Subset 0: () gives pval = 0.45000 / val = 0.016\n", + " Non-significance detected.\n", + "\n", + " Link (X2 -4) --> X1 (8/36):\n", + " Subset 0: () gives pval = 0.43700 / val = 0.018\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -1) --> X1 (9/36):\n", + " Subset 0: () gives pval = 0.47700 / val = 0.016\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -2) --> X1 (10/36):\n", + " Subset 0: () gives pval = 0.94600 / val = -0.001\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -3) --> X1 (11/36):\n", + " Subset 0: () gives pval = 0.38500 / val = 0.020\n", + " Non-significance detected.\n", + "\n", + " Link (X3 -4) --> X1 (12/36):\n", + " Subset 0: () gives pval = 0.59100 / val = 0.013\n", + " Non-significance detected.\n", + "\n", + " Link (X4 -1) --> X1 (13/36):\n", + " Subset 0: () gives pval = 0.29600 / val = 0.023\n", + " Non-significance detected.\n", + "\n", + " Link (X4 -2) --> X1 (14/36):\n", + " Subset 0: () gives pval = 0.38900 / val = 0.019\n", + " Non-significance detected.\n", + "\n", + " Link (X4 -3) --> X1 (15/36):\n", + " Subset 0: () gives pval = 0.22400 / val = 0.024\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X4 -4) --> X1 (16/36):\n", + " Subset 0: () gives pval = 0.45500 / val = 0.017\n", + " Non-significance detected.\n", + "\n", + " Link (X5 -1) --> X1 (17/36):\n", + " Subset 0: () gives pval = 0.00500 / val = 0.069\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X5 -2) --> X1 (18/36):\n", + " Subset 0: () gives pval = 0.08000 / val = 0.039\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X5 -3) --> X1 (19/36):\n", + " Subset 0: () gives pval = 0.42100 / val = 0.014\n", + " Non-significance detected.\n", + "\n", + " Link (X5 -4) --> X1 (20/36):\n", + " Subset 0: () gives pval = 0.82300 / val = 0.007\n", + " Non-significance detected.\n", + "\n", + " Link (X6 -1) --> X1 (21/36):\n", + " Subset 0: () gives pval = 0.39000 / val = 0.019\n", + " Non-significance detected.\n", + "\n", + " Link (X6 -2) --> X1 (22/36):\n", + " Subset 0: () gives pval = 0.70200 / val = 0.008\n", + " Non-significance detected.\n", + "\n", + " Link (X6 -3) --> X1 (23/36):\n", + " Subset 0: () gives pval = 0.25800 / val = 0.027\n", + " Non-significance detected.\n", + "\n", + " Link (X6 -4) --> X1 (24/36):\n", + " Subset 0: () gives pval = 0.69000 / val = 0.009\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -1) --> X1 (25/36):\n", + " Subset 0: () gives pval = 0.52200 / val = 0.012\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -2) --> X1 (26/36):\n", + " Subset 0: () gives pval = 0.28900 / val = 0.022\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -3) --> X1 (27/36):\n", + " Subset 0: () gives pval = 0.24000 / val = 0.025\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X7 -4) --> X1 (28/36):\n", + " Subset 0: () gives pval = 0.29900 / val = 0.022\n", + " Non-significance detected.\n", + "\n", + " Link (X8 -1) --> X1 (29/36):\n", + " Subset 0: () gives pval = 0.06100 / val = 0.041\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X8 -2) --> X1 (30/36):\n", + " Subset 0: () gives pval = 0.19800 / val = 0.028\n", + " No conditions of dimension 0 left.\n", + "\n", + " Link (X8 -3) --> X1 (31/36):\n", + " Subset 0: () gives pval = 0.75200 / val = 0.006\n", + " Non-significance detected.\n", + "\n", + " Link (X8 -4) --> X1 (32/36):\n", + " Subset 0: () gives pval = 0.34700 / val = 0.020\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -1) --> X1 (33/36):\n", + " Subset 0: () gives pval = 0.85200 / val = 0.003\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -2) --> X1 (34/36):\n", + " Subset 0: () gives pval = 0.94600 / val = -0.002\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -3) --> X1 (35/36):\n", + " Subset 0: () gives pval = 0.75700 / val = 0.007\n", + " Non-significance detected.\n", + "\n", + " Link (X9 -4) --> X1 (36/36):\n", + " Subset 0: () gives pval = 0.85700 / val = 0.001\n", + " Non-significance detected.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X1 has 8 link(s):\n", + " (X5 -1): max_pval = 0.00500, min_val = 0.069\n", + " (X1 -2): max_pval = 0.03800, min_val = 0.047\n", + " (X8 -1): max_pval = 0.06100, min_val = 0.041\n", + " (X5 -2): max_pval = 0.08000, min_val = 0.039\n", + " (X1 -4): max_pval = 0.16500, min_val = 0.033\n", + " (X8 -2): max_pval = 0.19800, min_val = 0.028\n", + " (X7 -3): max_pval = 0.24000, min_val = 0.025\n", + " (X4 -3): max_pval = 0.22400, min_val = 0.024\n", + "\n", + "Testing condition sets of dimension 1:\n", + "\n", + " Link (X5 -1) --> X1 (1/8):\n", + " Subset 0: (X1 -2) gives pval = 0.56400 / val = 0.015\n", + " Non-significance detected.\n", + "\n", + " Link (X1 -2) --> X1 (2/8):\n", + " Subset 0: (X5 -1) gives pval = 0.03900 / val = 0.036\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X8 -1) --> X1 (3/8):\n", + " Subset 0: (X5 -1) gives pval = 0.41700 / val = 0.022\n", + " Non-significance detected.\n", + "\n", + " Link (X5 -2) --> X1 (4/8):\n", + " Subset 0: (X5 -1) gives pval = 0.03400 / val = 0.038\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X1 -4) --> X1 (5/8):\n", + " Subset 0: (X5 -1) gives pval = 0.46400 / val = 0.015\n", + " Non-significance detected.\n", + "\n", + " Link (X8 -2) --> X1 (6/8):\n", + " Subset 0: (X5 -1) gives pval = 0.74200 / val = 0.011\n", + " Non-significance detected.\n", + "\n", + " Link (X7 -3) --> X1 (7/8):\n", + " Subset 0: (X5 -1) gives pval = 0.09700 / val = 0.025\n", + " No conditions of dimension 1 left.\n", + "\n", + " Link (X4 -3) --> X1 (8/8):\n", + " Subset 0: (X5 -1) gives pval = 0.20400 / val = 0.024\n", + " No conditions of dimension 1 left.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X1 has 4 link(s):\n", + " (X5 -2): max_pval = 0.08000, min_val = 0.038\n", + " (X1 -2): max_pval = 0.03900, min_val = 0.036\n", + " (X7 -3): max_pval = 0.24000, min_val = 0.025\n", + " (X4 -3): max_pval = 0.22400, min_val = 0.024\n", + "\n", + "Testing condition sets of dimension 2:\n", + "\n", + " Link (X5 -2) --> X1 (1/4):\n", + " Subset 0: (X1 -2) (X7 -3) gives pval = 0.10800 / val = 0.032\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Link (X1 -2) --> X1 (2/4):\n", + " Subset 0: (X5 -2) (X7 -3) gives pval = 0.00000 / val = 0.049\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Link (X7 -3) --> X1 (3/4):\n", + " Subset 0: (X5 -2) (X1 -2) gives pval = 0.27800 / val = 0.024\n", + " Non-significance detected.\n", + "\n", + " Link (X4 -3) --> X1 (4/4):\n", + " Subset 0: (X5 -2) (X1 -2) gives pval = 0.16000 / val = 0.030\n", + " Still subsets of dimension 2 left, but q_max = 1 reached.\n", + "\n", + " Sorting parents in decreasing order with \n", + " weight(i-tau->j) = min_{iterations} |val_{ij}(tau)| \n", + "\n", + "Updating parents:\n", + "\n", + " Variable X1 has 3 link(s):\n", + " (X1 -2): max_pval = 0.03900, min_val = 0.036\n", + " (X5 -2): max_pval = 0.10800, min_val = 0.032\n", + " (X4 -3): max_pval = 0.22400, min_val = 0.024\n", + "\n", + "Algorithm converged for variable X1\n", + "\n", + "## Variable X2\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X2\n", + "\n", + "## Variable X3\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X3\n", + "\n", + "## Variable X4\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X4\n", + "\n", + "## Variable X5\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X5\n", + "\n", + "## Variable X6\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X6\n", + "\n", + "## Variable X7\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X7\n", + "\n", + "## Variable X8\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X8\n", + "\n", + "## Variable X9\n", + "\n", + "Iterating through pc_alpha = [0.25]:\n", + "\n", + "# pc_alpha = 0.25 (1/1):\n", + "\n", + "Algorithm converged for variable X9\n", + "\n", + "## Resulting lagged parent (super)sets:\n", + "\n", + " Variable X10 has 4 link(s):\n", + " (X4 -4): max_pval = 0.08100, min_val = 0.040\n", + " (X9 -1): max_pval = 0.11400, min_val = 0.034\n", + " (X2 -1): max_pval = 0.22300, min_val = 0.029\n", + " (X5 -4): max_pval = 0.21900, min_val = 0.026\n", + "\n", + " Variable X1 has 3 link(s):\n", + " (X1 -2): max_pval = 0.03900, min_val = 0.036\n", + " (X5 -2): max_pval = 0.10800, min_val = 0.032\n", + " (X4 -3): max_pval = 0.22400, min_val = 0.024\n", + "\n", + " Variable X2 has 0 link(s):\n", + "\n", + " Variable X3 has 0 link(s):\n", + "\n", + " Variable X4 has 0 link(s):\n", + "\n", + " Variable X5 has 0 link(s):\n", + "\n", + " Variable X6 has 0 link(s):\n", + "\n", + " Variable X7 has 0 link(s):\n", + "\n", + " Variable X8 has 0 link(s):\n", + "\n", + " Variable X9 has 0 link(s):\n", + "\n", + "##\n", + "## Step 2: MCI algorithm\n", + "##\n", + "\n", + "Parameters:\n", + "\n", + "independence test = cmi_knn\n", + "tau_min = 0\n", + "tau_max = 4\n", + "max_conds_py = None\n", + "max_conds_px = None\n", + "\n", + " link (X1 -1) --> X10 (1/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ (X1 -3) (X5 -3) (X4 -4) ]\n", + "\n", + " link (X1 -2) --> X10 (2/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ (X1 -4) (X5 -4) (X4 -5) ]\n", + "\n", + " link (X1 -3) --> X10 (3/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ (X1 -5) (X5 -5) (X4 -6) ]\n", + "\n", + " link (X1 -4) --> X10 (4/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ (X1 -6) (X5 -6) (X4 -7) ]\n", + "\n", + " link (X2 -1) --> X10 (5/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X2 -2) --> X10 (6/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X2 -3) --> X10 (7/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X2 -4) --> X10 (8/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -1) --> X10 (9/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -2) --> X10 (10/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -3) --> X10 (11/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -4) --> X10 (12/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -1) --> X10 (13/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -2) --> X10 (14/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -3) --> X10 (15/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -4) --> X10 (16/36):\n", + " with conds_y = [ (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -1) --> X10 (17/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -2) --> X10 (18/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -3) --> X10 (19/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -4) --> X10 (20/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -1) --> X10 (21/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -2) --> X10 (22/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -3) --> X10 (23/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -4) --> X10 (24/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -1) --> X10 (25/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -2) --> X10 (26/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -3) --> X10 (27/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -4) --> X10 (28/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -1) --> X10 (29/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -2) --> X10 (30/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -3) --> X10 (31/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -4) --> X10 (32/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -1) --> X10 (33/36):\n", + " with conds_y = [ (X4 -4) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -2) --> X10 (34/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -3) --> X10 (35/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -4) --> X10 (36/36):\n", + " with conds_y = [ (X4 -4) (X9 -1) (X2 -1) (X5 -4) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X1 -1) --> X1 (1/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ (X1 -3) (X5 -3) (X4 -4) ]\n", + "\n", + " link (X1 -2) --> X1 (2/36):\n", + " with conds_y = [ (X5 -2) (X4 -3) ]\n", + " with conds_x = [ (X1 -4) (X5 -4) (X4 -5) ]\n", + "\n", + " link (X1 -3) --> X1 (3/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ (X1 -5) (X5 -5) (X4 -6) ]\n", + "\n", + " link (X1 -4) --> X1 (4/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ (X1 -6) (X5 -6) (X4 -7) ]\n", + "\n", + " link (X2 -1) --> X1 (5/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X2 -2) --> X1 (6/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X2 -3) --> X1 (7/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X2 -4) --> X1 (8/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -1) --> X1 (9/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -2) --> X1 (10/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -3) --> X1 (11/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X3 -4) --> X1 (12/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -1) --> X1 (13/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -2) --> X1 (14/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -3) --> X1 (15/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X4 -4) --> X1 (16/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -1) --> X1 (17/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -2) --> X1 (18/36):\n", + " with conds_y = [ (X1 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -3) --> X1 (19/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X5 -4) --> X1 (20/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -1) --> X1 (21/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -2) --> X1 (22/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -3) --> X1 (23/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X6 -4) --> X1 (24/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -1) --> X1 (25/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -2) --> X1 (26/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -3) --> X1 (27/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X7 -4) --> X1 (28/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -1) --> X1 (29/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -2) --> X1 (30/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -3) --> X1 (31/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X8 -4) --> X1 (32/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -1) --> X1 (33/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -2) --> X1 (34/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -3) --> X1 (35/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + " link (X9 -4) --> X1 (36/36):\n", + " with conds_y = [ (X1 -2) (X5 -2) (X4 -3) ]\n", + " with conds_x = [ ]\n", + "\n", + "## Significant links at alpha = 0.05:\n", + "\n", + " Variable X10 has 3 link(s):\n", + " (X4 -4): pval = 0.01600 | val = 0.040\n", + " (X2 -1): pval = 0.00900 | val = 0.039\n", + " (X9 -1): pval = 0.02600 | val = 0.039\n", + "\n", + " Variable X1 has 4 link(s):\n", + " (X3 -3): pval = 0.00100 | val = 0.050\n", + " (X1 -2): pval = 0.00900 | val = 0.039\n", + " (X1 -3): pval = 0.03900 | val = 0.035\n", + " (X5 -2): pval = 0.02200 | val = 0.032\n", + "\n", + " Variable X2 has 0 link(s):\n", + "\n", + " Variable X3 has 0 link(s):\n", + "\n", + " Variable X4 has 0 link(s):\n", + "\n", + " Variable X5 has 0 link(s):\n", + "\n", + " Variable X6 has 0 link(s):\n", + "\n", + " Variable X7 has 0 link(s):\n", + "\n", + " Variable X8 has 0 link(s):\n", + "\n", + " Variable X9 has 0 link(s):\n" + ] + } + ], + "source": [ + "# convert to pp dataframe\n", + "dataframe = pp.DataFrame(df_stat.to_numpy(),\n", + " datatime = np.arange(len(df_stat)), \n", + " var_names=df_stat.columns)\n", + "\n", + "# CMIknn as independence test\n", + "cmi_knn = CMIknn(significance='shuffle_test', shuffle_neighbors=5, transform='ranks')\n", + "\n", + "# Configure the links that you want to causal-check with PCMCI\n", + "target_column_indices = [0,1]\n", + "selected_links = get_selected_links(df_stat, \n", + " tau_min=tau_min, \n", + " tau_max=tau_max, \n", + " selected_columns_indices=target_column_indices)\n", + "\n", + "# Instantiate PCMCI\n", + "pcmci_cmi_knn = PCMCI(\n", + " dataframe=dataframe, \n", + " cond_ind_test=cmi_knn,\n", + " verbosity=2)\n", + "\n", + "# Run PCMCI algorithm with a given alpha\n", + "# in this example, the value is taken very high (not really conservative) to be sure we have results.\n", + "# Remember that we are working with a toy dataset! IRL, the alpha value should be lower ([0.05-0.4]).\n", + "# Note that running this function takes a lot of compute and therefor time!\n", + "alpha = 0.25\n", + "results = pcmci_cmi_knn.run_pcmci(selected_links=selected_links, \n", + " tau_min=tau_min, \n", + " tau_max=tau_max, \n", + " pc_alpha=alpha)" + ] + }, + { + "cell_type": "markdown", + "id": "a66ca3d3", + "metadata": {}, + "source": [ + "## Visualize results PCMCI" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "02066fad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "## Significant links at alpha = 0.01:\n", + "\n", + " Variable X10 has 1 link(s):\n", + " (X2 -1): pval = 0.00900 | val = 0.039\n", + "\n", + " Variable X1 has 2 link(s):\n", + " (X3 -3): pval = 0.00100 | val = 0.050\n", + " (X1 -2): pval = 0.00900 | val = 0.039\n", + "\n", + " Variable X2 has 0 link(s):\n", + "\n", + " Variable X3 has 0 link(s):\n", + "\n", + " Variable X4 has 0 link(s):\n", + "\n", + " Variable X5 has 0 link(s):\n", + "\n", + " Variable X6 has 0 link(s):\n", + "\n", + " Variable X7 has 0 link(s):\n", + "\n", + " Variable X8 has 0 link(s):\n", + "\n", + " Variable X9 has 0 link(s):\n", + "X10\n", + "X1\n", + "X2\n", + "X3\n", + "X4\n", + "X5\n", + "X9\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "process_and_visualize_results(results, pcmci_cmi_knn, df_stat.columns, target_column_indices)" + ] + }, + { + "cell_type": "markdown", + "id": "2f0722ec", + "metadata": {}, + "source": [ + "Have a look for yourself! Do the results for TE and PCMCI match? \n", + "- No? Well, then you've probably not found very strong evidence for the presence of the causal links!\n", + "- Yes? This is an indication that the results are consistent and make a lot of sense!\n", + "\n", + "Please note that this is a toy dataset, of which the causal links are unknown and very weak\n", + "\n", + "Make sure to look deeper into the hyperparameters of PCMCI and TE to have them suit your data better. Good luck and have fun :)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" + }, + "kernelspec": { + "display_name": "Python 3.10.4 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/structured_data/2022_06_02_causality/src/data.pickle b/structured_data/2022_06_02_causality/src/data.pickle new file mode 100644 index 0000000000000000000000000000000000000000..efa01a38d16f0decb5052254ba6e9140e37713c3 GIT binary patch literal 97673 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%0AtC@&Wa9{sy4l>ZA3$II@9?r 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�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 and lag>0] + + if col not in selected_columns_indices: + # Do not consider causality between channels + selected_links[col] = [] # only need first col as ref + + return selected_links + +def process_and_visualize_results(results, pcmci, cols, target_indices, controlFDR = False): + """ + Process and visualize the results of PCMCI. + + Arguments: + - results (list): Output of PCMCI run. + - pcmci (tigramite.pcmci.PCMCI): PCMCI object + - cols (list): column names + - target_indices (list): indices of target columns + - controlFDR (bool): whether to use the q_matrix, which involves a transformation + of the p_values to account for amount of statistical tests done. + Recommended if you checked many links using PCMCI. + See the following link for more information: + https://github.com/jakobrunge/tigramite/blob/master/tutorials/tigramite_tutorial_basics.ipynb + """ + + + if not controlFDR: + pcmci.print_significant_links( + p_matrix = results['p_matrix'], + val_matrix = results['val_matrix'], + alpha_level = 0.01) + + else: + q_matrix = pcmci.get_corrected_pvalues(p_matrix=results['p_matrix'], + fdr_method='fdr_bh', + exclude_contemporaneous = False) + + pcmci.print_significant_links( + p_matrix = results['p_matrix'], + q_matrix = q_matrix, + val_matrix = results['val_matrix'], + alpha_level = 0.01) + + column_indices = set(target_indices) + + for ind, i in enumerate(results['graph']): + if not set(i.flatten()) == set(['']): + column_indices.add(ind) + + + tmp_results_val_matrix = np.array([i[list(column_indices)] for ind, i in enumerate(results['val_matrix']) if ind in list(column_indices)]) + + graph_small = np.array([i[list(column_indices)] for ind, i in enumerate(results['graph']) if ind in list(column_indices)]) + + var_names_small = [] + for i in column_indices: + print(cols[i]) + for i in column_indices: + var_names_small.append(cols[i]) + + tp.plot_graph( + val_matrix=tmp_results_val_matrix, + graph=graph_small, + var_names=var_names_small, + ) + + # Plot time series graph + tp.plot_time_series_graph( + figsize=(6, 4), + val_matrix=tmp_results_val_matrix, + graph=graph_small, + var_names=var_names_small, + link_colorbar_label='MCI', + ) \ No newline at end of file diff --git a/structured_data/2022_06_02_causality/src/helpers/stationarity.py b/structured_data/2022_06_02_causality/src/helpers/stationarity.py new file mode 100644 index 0000000..aa05469 --- /dev/null +++ b/structured_data/2022_06_02_causality/src/helpers/stationarity.py @@ -0,0 +1,144 @@ +""" +Functions for determining if a time series is stationary and for making it stationary +in case it is not. +""" +# Import standard library modules +import math +from typing import Tuple, List +import warnings + +# Import third party modules +from matplotlib import pyplot as plt +import pandas as pd + +import statsmodels.api as sm +from statsmodels.tools.sm_exceptions import InterpolationWarning +from statsmodels.tsa.stattools import adfuller, kpss + +def perform_kpss_test(df: pd.DataFrame, col: str, debug: bool=False) -> Tuple[bool, float]: + """Perform the Kwiatkowski-Phillips-Schmidt-Shin (KPSS) test for the null + hypothesis that x is level or trend stationary. + + Arguments: + - df (pd.DataFrame): Dataframe for which to check for stationarity. + - col (str): Name of column within dataframe to check stationarity for. + - debug (bool): Whether or not to print intermediate results. + + Returns: + - bool: Whether or not the column of the dataframe is stationary. + - float: Significance with which conclusion is made. + """ + # Select `col` column from argument `df` dataframe + df_col = df[[col]] + + # Perform KPSS test (hyp: stationary) while catching InterpolationWarning messages + with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + kpss_test = kpss(df_col, nlags='legacy') # regression='c'|'ct' + + if len(w) == 1 and issubclass(w[-1].category, InterpolationWarning): + p_value_oob = True + else: + p_value_oob = False + + kpss_output = pd.Series(kpss_test[0:3], + index=['test_statistic', 'p_value', 'lags']) + for key, value in kpss_test[3].items(): + kpss_output['Critical Value (%s)'%key] = value + + p_value = kpss_output['p_value'] + stationary = p_value >= 0.05 # Stationary if null-hyp. cannot be rejected. + + if debug or not stationary: + print(f'\t(KPSS) Time-series IS {"" if stationary else "NOT "}trend-stationary (p{">" if p_value_oob else "="}{p_value})!') + return stationary, p_value + + +def perform_adf_test(df: pd.DataFrame, col: str, debug: bool=False) -> Tuple[bool, float]: + """Perform Augmented Dickey-Fuller (ADF) unit root test for a unit root in a + univariate process in the presence of serial correlation. + + Arguments: + - df (pd.DataFrame): Dataframe for which to check for stationarity. + - col (str): Name of column within dataframe to check stationarity for. + - debug (bool): Whether or not to print intermediate results. + + Returns: + - bool: Whether or not the column of the dataframe is stationary. + - float: Significance with which conclusion is made. + """ + # Select `col` column from argument `df` dataframe + df_col = df[[col]] + + # Difference column values + df_col = df_col[col].diff() + df_col = df_col.fillna(0) # Remove first month of differenced data + + # Perform ADF unit root test + adf_test = adfuller(df_col, autolag='AIC') + adf_output = pd.Series(adf_test[0:4], index=['test_statistic','p_value','lags','observations']) + for key,value in adf_test[4].items(): + adf_output['Critical Value (%s)'%key] = value + + p_value = adf_output['p_value'] + stationary = p_value < 0.05 # Stationary if null-hyp. is rejected! + + if debug or not stationary: + print(f'\t(ADF) Time-series IS {"" if stationary else "NOT "}difference stationary (p={p_value})!') + + return stationary, p_value + + +def remove_trend_and_diff(df: pd.DataFrame, debug: bool=False) -> pd.DataFrame: + """Perform Seasonal-Trend decomposition using LOESS (STL) to remove trend + and seasonality and difference residuals as much as necessary to make + time-series stationary. + + Arguments: + - df (pd.DataFrame): Dataframe of which stationarity must be checked and + guaranteed. + - debug (bool): Whether or not to print intermediate results (for + debugging purposed). + + Result: + - pd.DataFrame: Stationary dataframe. + """ + # Keep track of number of differencing operations to omit NaN values at start of dataframe + max_diff = 1 + + # Initialize differenced dataframe + df_diff = df.copy() + + + # Make every column of dataframe stationary by... + for col in df_diff.columns: + print("tackling new col", col) + periods = 0 + kpss_stat, kpss_p = perform_kpss_test(df_diff[periods:], col, debug=debug) + adf_stat, adf_p = perform_adf_test(df_diff[periods:], col, debug=debug) + + while not (kpss_stat and adf_stat): + print(f" iteration {periods}") + + # Log number of differencing operations + periods += 1 + print(f'\tDifferencing results over {periods} period{"s" if periods - 1 else ""}...') + + # Difference signal + df_diff[col] = df_diff[col].diff() + df_diff = df_diff.fillna(0) + + # Check for stationarity + kpss_stat, kpss_p = perform_kpss_test(df_diff[periods:], col, debug=debug) + adf_stat, adf_p = perform_adf_test(df_diff[periods:], col, debug=debug) + + # Print if stationarity is obtained + print(f' --> (KPSS & ADF) Time-series IS stationary for {col} (after {periods} differencing operations)!') + + # Break up print statements between columns + print('') + + print(f'(Maximum number of differencing operations performed was {max_diff})') + # Return detrended (and possibly differenced) dataframe + return df_diff[max_diff:] \ No newline at end of file diff --git a/structured_data/2022_06_02_causality/src/helpers/transfer_entropy.py b/structured_data/2022_06_02_causality/src/helpers/transfer_entropy.py new file mode 100644 index 0000000..224cb52 --- /dev/null +++ b/structured_data/2022_06_02_causality/src/helpers/transfer_entropy.py @@ -0,0 +1,43 @@ +import matplotlib.pyplot as plt +import pandas as pd + +def export_as_df(te_output): + """Transform the output of transfer entropy to a pandas dataframe. + + Args: + te_output (list): output of a transfer entropy analysis. + + Returns: + pd.DataFrame: dataframe including the p values. + """ + df = pd.DataFrame() + for index, info in enumerate(te_output[0]): + col_name, *_ = info + data = [] + for lag in te_output: + data.append(lag[index][1]["p_value_XY"].iloc[0]) + df[col_name] = pd.Series(data) + return df + + +def viz_df_raw(df, booldf, threshold): + """Vizualize results of a Transfer Entropy analysis. + + Args: + df (pd.DataFrame): input data with raw p values. + booldf (pd.DataFrame): input data after thresholding containing booleans. + threshold (float): threshold used. + """ + fs, fs_ax = plt.subplots(len(df.columns), 1, figsize=(10,len(df.columns)*2)) + + for ind, col in enumerate(df.columns): + print(col) + df[col].astype(float).plot(kind='line', ax=fs_ax[ind], legend = col) + booldf[col].astype(float).plot(kind='bar', ax=fs_ax[ind], stacked=False, alpha=0.3) + fs_ax[ind].set_ylim([0,1]) + if ind==0: + fs_ax[ind].set_title(f"Causal relationships found - Transfer Entropy with significance level = {threshold}") + if ind == len(df.columns)-1: + fs_ax[ind].set_xlabel("lags") + fs.tight_layout() + fs.subplots_adjust(hspace=0.4, wspace=0) diff --git a/structured_data/2022_06_02_causality/src/transfer_entropy/README.md b/structured_data/2022_06_02_causality/src/transfer_entropy/README.md new file mode 100644 index 0000000..43fc7ef --- /dev/null +++ b/structured_data/2022_06_02_causality/src/transfer_entropy/README.md @@ -0,0 +1,5 @@ +## Purpose of this folder +We advocate to use the [PyCausality](https://pypi.org/project/PyCausality/) package when working with Transfer Entropy. +The code itself is not maintained anymore but still works well. +Because the pip package might become/is unstable, we copied the source code and created a wrapper around it. +See [the example notebook](./../Example%20notebook.ipynb) for inspiration to integrate this code in your own project! \ No newline at end of file diff --git a/structured_data/2022_06_02_causality/src/transfer_entropy/__init__.py b/structured_data/2022_06_02_causality/src/transfer_entropy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/structured_data/2022_06_02_causality/src/transfer_entropy/pycausality/__init__.py b/structured_data/2022_06_02_causality/src/transfer_entropy/pycausality/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/structured_data/2022_06_02_causality/src/transfer_entropy/pycausality/src.py b/structured_data/2022_06_02_causality/src/transfer_entropy/pycausality/src.py new file mode 100644 index 0000000..6cf2f5a --- /dev/null +++ b/structured_data/2022_06_02_causality/src/transfer_entropy/pycausality/src.py @@ -0,0 +1,1226 @@ +import pandas as pd +import statsmodels.api as sm +import numpy as np + +from numpy import ma, atleast_2d, pi, sqrt, sum +from scipy import stats, linalg +from scipy.special import gammaln +from six import string_types +from scipy.stats.mstats import mquantiles + +from copy import deepcopy + +import matplotlib.pyplot as plt +import matplotlib.cm as cm + +from dateutil.relativedelta import relativedelta + +import warnings +import sys + + +class LaggedTimeSeries(): + """ + Custom wrapper class for pandas DataFrames for performing predictive analysis. + Generates lagged time series and performs custom windowing over datetime indexes + """ + + def __init__(self, df, endog, lag=None, max_lag_only=True, window_size=None, window_stride=None): + """ + Args: + df - Pandas DataFrame object of N columns. Must be indexed as an increasing + time series (i.e. past-to-future), with equal timesteps between each row + lags - The number of steps to be included. Each increase in Lags will result + in N additional columns, where N is the number of columns in the original + dataframe. It will also remove the first N rows. + max_lag_only - Defines whether the returned dataframe contains all lagged timeseries up to + and including the defined lag, or only the time series equal to this lag value + window_size - Dict containing key-value pairs only from within: {'YS':0,'MS':0,'D':0,'H':0,'min':0,'S':0,'ms':0} + Describes the desired size of each window, provided the data is indexed with datetime type. Leave as + None for no windowing. Units follow http://pandas.pydata.org/pandas-docs/stable/timeseries.html#timeseries-offset-aliases + window_stride - Dict containing key-value pairs only from within: {'YS':0,'MS':0,'D':0,'H':0,'min':0,'S':0,'ms':0} + Describes the size of the step between consecutive windows, provided the data is indexed with datetime type. Leave as + None for no windowing. Units follow http://pandas.pydata.org/pandas-docs/stable/timeseries.html#timeseries-offset-aliases + + Returns: - n/a + """ + self.df = sanitise(df) + self.endog = endog + self.axes = list(self.df.columns.values) # Variable names + + self.max_lag_only = max_lag_only + if lag is not None: + self.t = lag + self.df = self.__apply_lags__() + + if window_size is not None and window_stride is not None: + self.has_windows = True + self. __apply_windows__(window_size, window_stride) + else: + self.has_windows = False + + def __apply_lags__(self): + """ + Args: + n/a + Returns: + new_df.iloc[self.t:] - This is a new dataframe containing the original columns and + all lagged columns. Note that the first few rows (equal to self.lag) will + be removed from the top, since lagged values are of coursenot available + for these indexes. + """ + # Create a new dataframe to maintain the new data, dropping rows with NaN + new_df = self.df.copy(deep=True).dropna() + + # Create new column with lagged timeseries for each variable + col_names = self.df.columns.values.tolist() + + # If the user wants to only consider the time series lagged by the + # maximum number specified or by every series up to an including the maximum lag: + if self.max_lag_only == True: + for col_name in col_names: + new_df[col_name + '_lag' + + str(self.t)] = self.df[col_name].shift(self.t) + + elif self.max_lag_only == False: + for col_name in col_names: + for t in range(1, self.t+1): + new_df[col_name + '_lag' + + str(t)] = self.df[col_name].shift(t) + else: + raise ValueError('Error') + + # Drop the first t rows, which now contain NaN + return new_df.iloc[self.t:] + + def __apply_windows__(self, window_size, window_stride): + """ + Args: + window_size - Dict passed from self.__init__ + window_stride - Dict passed from self.__init__ + Returns: + n/a - Sets the daterange for the self.windows property to iterate along + """ + self.window_size = {'YS': 0, 'MS': 0, 'D': 0, + 'H': 0, 'min': 0, 'S': 0, 'ms': 0} + self.window_stride = {'YS': 0, 'MS': 0, + 'D': 0, 'H': 0, 'min': 0, 'S': 0, 'ms': 0} + + self.window_stride.update(window_stride) + self.window_size.update(window_size) + freq = '' + daterangefreq = freq.join( + [str(v)+str(k) for (k, v) in self.window_stride.items() if v != 0]) + self.daterange = pd.date_range( + self.df.index.min(), self.df.index.max(), freq=daterangefreq) + + def date_diff(self, window_size): + """ + Args: + window_size - Dict passed from self.windows function + Returns: + start_date - The start date of the proposed window + end_date - The end date of the proposed window + + This function is TBC - proposed due to possible duplication of the relativedelta usage in self.windows and self.headstart + """ + pass + + @property + def windows(self): + """ + Args: + n/a + Returns: + windows - Generator defining a pandas DataFrame for each window of the data. + Usage like: [window for window in LaggedTimeSeries.windows] + """ + if self.has_windows == False: + return self.df + # Loop Over TimeSeries Range + for i, dt in enumerate(self.daterange): + + # Ensure Each Division Contains Required Number of Months + if dt-relativedelta(years=self.window_size['YS'], + months=self.window_size['MS'], + days=self.window_size['D'], + hours=self.window_size['H'], + minutes=self.window_size['min'], + seconds=self.window_size['S'], + microseconds=self.window_size['ms'] + ) >= self.df.index.min(): + + # Create Window + yield self.df.loc[(dt-relativedelta(years=self.window_size['YS'], + months=self.window_size['MS'], + days=self.window_size['D'], + hours=self.window_size['H'], + minutes=self.window_size['min'], + seconds=self.window_size['S'], + microseconds=self.window_size['ms'] + )): dt] + + @property + def headstart(self): + """ + Args: + n/a + Returns: + len(windows) - The number of windows which would have start dates before the desired date range. + Used in TransferEntropy class to slice off incomplete windows. + + """ + windows = [i for i, dt in enumerate(self.daterange) + if dt-relativedelta(years=self.window_size['YS'], + months=self.window_size['MS'], + days=self.window_size['D'], + hours=self.window_size['H'], + minutes=self.window_size['min'], + seconds=self.window_size['S'], + microseconds=self.window_size['ms'] + ) < self.df.index.min()] + # i.e. count from the first window which falls entirely after the earliest date + return len(windows) + + +class TransferEntropy(): + """ + Functional class to calculate Transfer Entropy between time series, to detect causal signals. + Currently accepts two series: X(t) and Y(t). Future extensions planned to accept additional endogenous + series: X1(t), X2(t), X3(t) etc. + """ + + def __init__(self, DF, endog, exog, lag=None, window_size=None, window_stride=None): + """ + Args: + DF - (DataFrame) Time series data for X and Y (NOT including lagged variables) + endog - (string) Fieldname for endogenous (dependent) variable Y + exog - (string) Fieldname for exogenous (independent) variable X + lag - (integer) Number of periods (rows) by which to lag timeseries data + window_size - (Dict) Must contain key-value pairs only from within: {'YS':0,'MS':0,'D':0,'H':0,'min':0,'S':0,'ms':0} + Describes the desired size of each window, provided the data is indexed with datetime type. Leave as + None for no windowing. Units follow http://pandas.pydata.org/pandas-docs/stable/timeseries.html#timeseries-offset-aliases + window_stride - (Dict) Must contain key-value pairs only from within: {'YS':0,'MS':0,'D':0,'H':0,'min':0,'S':0,'ms':0} + Describes the size of the step between consecutive windows, provided the data is indexed with datetime type. Leave as + None for no windowing. Units follow http://pandas.pydata.org/pandas-docs/stable/timeseries.html#timeseries-offset-aliases + Returns: + n/a + """ + self.lts = LaggedTimeSeries(df=sanitise(DF), + endog=endog, + lag=lag, + window_size=window_size, + window_stride=window_stride) + + if self.lts.has_windows is True: + self.df = self.lts.windows + self.date_index = self.lts.daterange[self.lts.headstart:] + self.results = pd.DataFrame(index=self.date_index) + self.results.index.name = "windows_ending_on" + else: + self.df = [self.lts.df] + self.results = pd.DataFrame(index=[0]) + self.max_lag_only = True + self.endog = endog # Dependent Variable Y + self.exog = exog # Independent Variable X + self.lag = lag + + """ If using KDE, this ensures the covariance matrices are calculated once over all data, rather + than for each window. This saves computational time and provides a fair point for comparison.""" + self.covars = [[], []] + + for i, (X, Y) in enumerate({self.exog: self.endog, self.endog: self.exog}.items()): + X_lagged = X+'_lag'+str(self.lag) + Y_lagged = Y+'_lag'+str(self.lag) + + self.covars[i] = [np.cov(self.lts.df[[Y, Y_lagged, X_lagged]].values.T), + np.cov( + self.lts.df[[X_lagged, Y_lagged]].values.T), + np.cov(self.lts.df[[Y, Y_lagged]].values.T), + np.ones(shape=(1, 1)) * self.lts.df[Y_lagged].std()**2] + + # Account for equal signals in case of lag 0 by adding identity matrix to covariance matrices + if lag == 0: + for j, c_j in enumerate(self.covars[i]): + if j % 2 == 0: + self.covars[i][j] += 1e-10 * np.eye(*c_j.shape) + + def linear_TE(self, df=None, n_shuffles=0): + """ + Linear Transfer Entropy for directional causal inference + + Defined: G-causality * 0.5, where G-causality described by the reduction in variance of the residuals + when considering side information. + Calculated using: log(var(e_joint)) - log(var(e_independent)) where e_joint and e_independent + represent the residuals from OLS fitting in the joint (X(t),Y(t)) and reduced (Y(t)) cases + + Arguments: + n_shuffles - (integer) Number of times to shuffle the dataframe, destroying the time series temporality, in order to + perform significance testing. + Returns: + transfer_entropies - (list) Directional Linear Transfer Entropies from X(t)->Y(t) and Y(t)->X(t) respectively + """ + # Prepare lists for storing results + TEs = [] + shuffled_TEs = [] + p_values = [] + z_scores = [] + + # Loop over all windows + for i, df in enumerate(self.df): + df = deepcopy(df) + + # Shows user that something is happening + # if self.lts.has_windows is True: + # print("Window ending: ", self.date_index[i]) + + # Initialise list to return TEs + transfer_entropies = [0, 0] + + # Require us to compare information transfer bidirectionally + for i, (X, Y) in enumerate({self.exog: self.endog, self.endog: self.exog}.items()): + + # Note X-t, Y-t + X_lagged = X+'_lag'+str(self.lag) + Y_lagged = Y+'_lag'+str(self.lag) + + # Calculate Residuals after OLS Fitting, for both Independent and Joint Cases + joint_residuals = sm.OLS(df[Y], sm.add_constant( + df[[Y_lagged, X_lagged]])).fit().resid + independent_residuals = sm.OLS( + df[Y], sm.add_constant(df[Y_lagged])).fit().resid + + # Use Geweke's formula for Granger Causality + if np.var(joint_residuals) == 0: + granger_causality = 0 + else: + granger_causality = np.log(np.var(independent_residuals) / + np.var(joint_residuals)) + + # Calculate Linear Transfer Entropy from Granger Causality + transfer_entropies[i] = granger_causality/2 + + TEs.append(transfer_entropies) + + # Calculate Significance of TE during this window + if n_shuffles > 0: + p, z, TE_mean = significance(df=df, + TE=transfer_entropies, + endog=self.endog, + exog=self.exog, + lag=self.lag, + n_shuffles=n_shuffles, + method='linear') + + shuffled_TEs.append(TE_mean) + p_values.append(p) + z_scores.append(z) + + # Store Linear Transfer Entropy from X(t)->Y(t) and from Y(t)->X(t) + self.add_results({'TE_linear_XY': np.array(TEs)[:, 0], + 'TE_linear_YX': np.array(TEs)[:, 1], + 'p_value_linear_XY': None, + 'p_value_linear_YX': None, + 'z_score_linear_XY': 0, + 'z_score_linear_YX': 0 + }) + + if n_shuffles > 0: + # Store Significance Transfer Entropy from X(t)->Y(t) and from Y(t)->X(t) + + self.add_results({'p_value_linear_XY': np.array(p_values)[:, 0], + 'p_value_linear_YX': np.array(p_values)[:, 1], + 'z_score_linear_XY': np.array(z_scores)[:, 0], + 'z_score_linear_YX': np.array(z_scores)[:, 1], + 'Ave_TE_linear_XY': np.array(shuffled_TEs)[:, 0], + 'Ave_TE_linear_YX': np.array(shuffled_TEs)[:, 1] + }) + + return transfer_entropies + + def nonlinear_TE(self, df=None, pdf_estimator='histogram', bins=None, bandwidth=None, gridpoints=20, n_shuffles=0): + """ + NonLinear Transfer Entropy for directional causal inference + + Defined: TE = TE_XY - TE_YX where TE_XY = H(Y|Y-t) - H(Y|Y-t,X-t) + Calculated using: H(Y|Y-t,X-t) = H(Y,Y-t,X-t) - H(Y,Y-t) and finding joint entropy through density estimation + + Arguments: + pdf_estimator - (string) 'Histogram' or 'kernel' Used to define which method is preferred for density estimation + of the distribution - either histogram or KDE + bins - (dict of lists) Optional parameter to provide hard-coded bin-edges. Dict keys + must contain names of variables - including lagged columns! Dict values must be lists + containing bin-edge numerical values. + bandwidth - (float) Optional parameter for custom bandwidth in KDE. This is a scalar multiplier to the covariance + matrix used (see: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gaussian_kde.covariance_factor.html) + gridpoints - (integer) Number of gridpoints (in each dimension) to discretise the probablity space when performing + integration of the kernel density estimate. Increasing this gives more precision, but significantly + increases execution time + n_shuffles - (integer) Number of times to shuffle the dataframe, destroying the time series temporality, in order to + perform significance testing. + + Returns: + transfer_entropies - (list) Directional Transfer Entropies from X(t)->Y(t) and Y(t)->X(t) respectively + + (Also stores TE, Z-score and p-values in self.results - for each window if windows defined.) + """ + # Retrieve user-defined bins + self.bins = bins + if self.bins is None: + self.bins = {self.endog: None} + + # Prepare lists for storing results + TEs = [] + shuffled_TEs = [] + p_values = [] + z_scores = [] + + # Loop over all windows + for j, df in enumerate(self.df): + df = deepcopy(df) + + # Shows user that something is happening + # if self.lts.has_windows is True and debug: + # print("Window ending: ", self.date_index[j]) + + # Initialise list to return TEs + transfer_entropies = [0, 0] + + # Require us to compare information transfer bidirectionally + for i, (X, Y) in enumerate({self.exog: self.endog, self.endog: self.exog}.items()): + # Entropy calculated using Probability Density Estimation: + # Following: https://stat.ethz.ch/education/semesters/SS_2006/CompStat/sk-ch2.pdf + # Also: https://www.cs.cmu.edu/~aarti/Class/10704_Spring15/lecs/lec5.pdf + + # Note Lagged Terms + X_lagged = X+'_lag'+str(self.lag) + Y_lagged = Y+'_lag'+str(self.lag) + + # Estimate PDF using Gaussian Kernels and use H(x) = p(x) log p(x) + # 1. H(Y,Y-t,X-t) + H1 = get_entropy(df=df[[Y, Y_lagged, X_lagged]], + gridpoints=gridpoints, + bandwidth=bandwidth, + estimator=pdf_estimator, + bins={k: v for (k, v) in self.bins.items() + if k in [Y, Y_lagged, X_lagged]}, + covar=self.covars[i][0]) + + # 2. H(Y-t,X-t) + H2 = get_entropy(df=df[[X_lagged, Y_lagged]], + gridpoints=gridpoints, + bandwidth=bandwidth, + estimator=pdf_estimator, + bins={k: v for (k, v) in self.bins.items() + if k in [X_lagged, Y_lagged]}, + covar=self.covars[i][1]) + #print('\t', H2) + # 3. H(Y,Y-t) + H3 = get_entropy(df=df[[Y, Y_lagged]], + gridpoints=gridpoints, + bandwidth=bandwidth, + estimator=pdf_estimator, + bins={k: v for (k, v) in self.bins.items() + if k in [Y, Y_lagged]}, + covar=self.covars[i][2]) + #print('\t', H3) + # 4. H(Y-t) + H4 = get_entropy(df=df[[Y_lagged]], + gridpoints=gridpoints, + bandwidth=bandwidth, + estimator=pdf_estimator, + bins={k: v for (k, v) in self.bins.items() + if k in [Y_lagged]}, + covar=self.covars[i][3]) + + # Calculate Conditonal Entropy using: H(Y|X-t,Y-t) = H(Y,X-t,Y-t) - H(X-t,Y-t) + conditional_entropy_joint = H1 - H2 + + # And Conditional Entropy independent of X(t) H(Y|Y-t) = H(Y,Y-t) - H(Y-t) + conditional_entropy_independent = H3 - H4 + + # Directional Transfer Entropy is the difference between the conditional entropies + transfer_entropies[i] = conditional_entropy_independent - \ + conditional_entropy_joint + + TEs.append(transfer_entropies) + + # Calculate Significance of TE during this window + if n_shuffles > 0: + p, z, TE_mean = significance(df=df, + TE=transfer_entropies, + endog=self.endog, + exog=self.exog, + lag=self.lag, + n_shuffles=n_shuffles, + pdf_estimator=pdf_estimator, + bins=self.bins, + bandwidth=bandwidth, + method='nonlinear') + + shuffled_TEs.append(TE_mean) + p_values.append(p) + z_scores.append(z) + + # Store Transfer Entropy from X(t)->Y(t) and from Y(t)->X(t) + self.add_results({'TE_XY': np.array(TEs)[:, 0], + 'TE_YX': np.array(TEs)[:, 1], + 'p_value_XY': None, + 'p_value_YX': None, + 'z_score_XY': 0, + 'z_score_YX': 0 + }) + if n_shuffles > 0: + # Store Significance Transfer Entropy from X(t)->Y(t) and from Y(t)->X(t) + + self.add_results({'p_value_XY': np.array(p_values)[:, 0], + 'p_value_YX': np.array(p_values)[:, 1], + 'z_score_XY': np.array(z_scores)[:, 0], + 'z_score_YX': np.array(z_scores)[:, 1], + 'Ave_TE_XY': np.array(shuffled_TEs)[:, 0], + 'Ave_TE_YX': np.array(shuffled_TEs)[:, 1] + }) + return transfer_entropies + + def add_results(self, dict): + """ + Args: + dict - JSON-style data to store in existing self.results DataFrame + Returns: + n/a + """ + for (k, v) in dict.items(): + self.results[str(k)] = v + + +def significance(df, TE, endog, exog, lag, n_shuffles, method, pdf_estimator=None, bins=None, bandwidth=None, both=True): + """ + Perform significance analysis on the hypothesis test of statistical causality, for both X(t)->Y(t) + and Y(t)->X(t) directions + + Calculated using: Assuming stationarity, we shuffle the time series to provide the null hypothesis. + The proportion of tests where TE > TE_shuffled gives the p-value significance level. + The amount by which the calculated TE is greater than the average shuffled TE, divided + by the standard deviation of the results, is the z-score significance level. + + Arguments: + TE - (list) Contains the transfer entropy in each direction, i.e. [TE_XY, TE_YX] + endog - (string) The endogenous variable in the TE analysis being significance tested (i.e. X or Y) + exog - (string) The exogenous variable in the TE analysis being significance tested (i.e. X or Y) + pdf_estimator - (string) The pdf_estimator used in the original TE analysis + bins - (Dict of lists) The bins used in the original TE analysis + + n_shuffles - (float) Number of times to shuffle the dataframe, destroyig temporality + both - (Bool) Whether to shuffle both endog and exog variables (z-score) or just exog variables (giving z*-score) + Returns: + p_value - Probablity of observing the result given the null hypothesis + z_score - Number of Standard Deviations result is from mean (normalised) + """ + + # Prepare array for Transfer Entropy of each Shuffle + shuffled_TEs = np.zeros(shape=(2, n_shuffles)) + + ## + if both is True: + pass # TBC + + for i in range(n_shuffles): + # Perform Shuffle + df = shuffle_series(df) + + # Calculate New TE + shuffled_causality = TransferEntropy(DF=df, + endog=endog, + exog=exog, + lag=lag + ) + if method == 'linear': + TE_shuffled = shuffled_causality.linear_TE(df, n_shuffles=0) + else: + TE_shuffled = shuffled_causality.nonlinear_TE( + df, pdf_estimator, bins, bandwidth, n_shuffles=0) + shuffled_TEs[:, i] = TE_shuffled + + # Calculate p-values for each direction + p_values = (np.count_nonzero(TE[0] < shuffled_TEs[0, :]) / n_shuffles, + np.count_nonzero(TE[1] < shuffled_TEs[1, :]) / n_shuffles) + + # Calculate z-scores for each direction + z_scores = ((TE[0] - np.mean(shuffled_TEs[0, :])) / np.std(shuffled_TEs[0, :]), + (TE[1] - np.mean(shuffled_TEs[1, :])) / np.std(shuffled_TEs[1, :])) + + TE_mean = (np.mean(shuffled_TEs[0, :]), + np.mean(shuffled_TEs[1, :])) + + # Return the self.DF value to the unshuffled case + return p_values, z_scores, TE_mean + +############################################################################################################## +# U T I L I T Y C L A S S E S +############################################################################################################## + + +class NDHistogram(): + """ + Custom histogram class wrapping the default numpy implementations (np.histogram, np.histogramdd). + This allows for dimension-agnostic histogram calculations, custom auto-binning and + associated data and methods to be stored for each object (e.g. Probability Density etc.) + """ + + def __init__(self, df, bins=None, max_bins=15): + """ + Arguments: + df - DataFrame passed through from the TransferEntropy class + bins - Bin edges passed through from the TransferEntropy class + max_bins - Number of bins per each dimension passed through from the TransferEntropy class + Returns: + self.pdf - This is an N-dimensional Probability Density Function, stored as a + Numpy histogram, representing the proportion of samples in each bin. + """ + df = sanitise(df) + self.df = df.reindex(columns=sorted(df.columns)) # Sort axes by name + self.max_bins = max_bins + self.axes = list(self.df.columns.values) + self.bins = bins + self.n_dims = len(self.axes) + + # Bins must match number and order of dimensions + if self.bins is None: + AB = AutoBins(self.df) + self.bins = AB.sigma_bins(max_bins=max_bins) + elif set(self.bins.keys()) != set(self.axes): + warnings.warn( + 'Incompatible bins provided - defaulting to sigma bins') + AB = AutoBins(self.df) + self.bins = AB.sigma_bins(max_bins=max_bins) + + ordered_bins = [sorted(self.bins[key]) + for key in sorted(self.bins.keys())] + + # Create ND histogram (np.histogramdd doesn't scale down to 1D) + if self.n_dims == 1: + self.Hist, self.Dedges = np.histogram( + self.df.values, bins=ordered_bins[0], normed=False) + elif self.n_dims > 1: + self.Hist, self.Dedges = np.histogramdd( + self.df.values, bins=ordered_bins, normed=False) + + # Empirical Probability Density Function + if self.Hist.sum() == 0: + print(self.Hist.shape) + + with pd.option_context('display.max_rows', None, 'display.max_columns', 3): + print(self.df.tail(40)) + + sys.exit( + "User-defined histogram is empty. Check bins or increase data points") + else: + self.pdf = self.Hist/self.Hist.sum() + self._set_entropy_(self.pdf) + + def _set_entropy_(self, pdf): + """ + Arguments: + pdf - Probabiiity Density Function; this is calculated using the N-dimensional histogram above. + Returns: + n/a + Sets entropy for marginal distributions: H(X), H(Y) etc. as well as joint entropy H(X,Y) + """ + # Prepare empty dict for marginal entropies along each dimension + self.H = {} + + if self.n_dims > 1: + + # Joint entropy H(X,Y) = -sum(pdf(x,y) * log(pdf(x,y))) + # Use masking to replace log(0) with 0 + self.H_joint = -np.sum(pdf * ma.log2(pdf).filled(0)) + + # Single entropy for each dimension H(X) = -sum(pdf(x) * log(pdf(x))) + for a, axis_name in enumerate(self.axes): + # Use masking to replace log(0) with 0 + self.H[axis_name] = - \ + np.sum(pdf.sum(axis=a) * ma.log2(pdf.sum(axis=a)).filled(0)) + else: + # Joint entropy and single entropy are the same + self.H_joint = -np.sum(pdf * ma.log2(pdf).filled(0)) + self.H[self.df.columns[0]] = self.H_joint + + +class AutoBins(): + """ + Prototyping class for generating data-driven binning. + Handles lagged time series, so only DF[X(t), Y(t)] required. + """ + + def __init__(self, df, lag=None): + """ + Args: + df - (DateFrame) Time series data to classify into bins + lag - (float) Lag for data to provided bins for lagged columns also + Returns: + n/a + """ + # Ensure data is in DataFrame form + self.df = sanitise(df) + self.axes = self.df.columns.values + self.ndims = len(self.axes) + self.N = len(self.df) + self.lag = lag + + def __extend_bins__(self, bins): + """ + Function to generate bins for lagged time series not present in self.df + Args: + bins - (Dict of List) Bins edges calculated by some AutoBins.method() + Returns: + bins - (Dict of lists) Bin edges keyed by column name + """ + self.max_lag_only = True # still temporary until we kill this + + # Handle lagging for bins, and calculate default bins where edges are not provided + if self.max_lag_only == True: + bins.update({fieldname + '_lag' + str(self.lag): edges + for (fieldname, edges) in bins.items()}) + else: + bins.update({fieldname + '_lag' + str(t): edges + for (fieldname, edges) in bins.items() for t in range(self.lag)}) + + return bins + + def MIC_bins(self, max_bins=15): + """ + Method to find optimal bin widths in each dimension, using a naive search to + maximise the mutual information divided by number of bins. Only accepts data + with two dimensions [X(t),Y(t)]. + We increase the n_bins parameter in each dimension, and take the bins which + result in the greatest Maximum Information Coefficient (MIC) + + (Note that this is restricted to equal-width bins only.) + Defined: MIC = I(X,Y)/ max(n_bins) + edges = {Y:[a,b,c,d], Y-t:[a,b,c,d], X-t:[e,f,g]}, + n_bins = [bx,by] + Calculated using: argmax { I(X,Y)/ max(n_bins) } + Args: + max_bins - (int) The maximum allowed bins in each dimension + Returns: + opt_edges - (dict) The optimal bin-edges for pdf estimation + using the histogram method, keyed by df column names + All bins equal-width. + """ + if len(self.df.columns.values) > 2: + raise ValueError( + 'Too many columns provided in DataFrame. MIC_bins only accepts 2 columns (no lagged columns)') + + min_bins = 3 + + # Initialise array to store MIC values + MICs = np.zeros(shape=[1+max_bins-min_bins, 1+max_bins-min_bins]) + + # Loop over each dimension + for b_x in range(min_bins, max_bins+1): + + for b_y in range(min_bins, max_bins+1): + + # Update parameters + n_bins = [b_x, b_y] + + # Update dict of bin edges + edges = {dim: list(np.linspace(self.df[dim].min(), + self.df[dim].max(), + n_bins[i]+1)) + for i, dim in enumerate(self.df.columns.values)} + + # Calculate Maximum Information Coefficient + HDE = NDHistogram(self.df, edges) + + I_xy = sum([H for H in HDE.H.values()]) - HDE.H_joint + + MIC = I_xy / np.log2(np.min(n_bins)) + + MICs[b_x-min_bins][b_y-min_bins] = MIC + + # Get Optimal b_x, b_y values + n_bins[0] = np.where(MICs == np.max(MICs))[0] + min_bins + n_bins[1] = np.where(MICs == np.max(MICs))[1] + min_bins + + bins = {dim: list(np.linspace(self.df[dim].min(), + self.df[dim].max(), + n_bins[i]+1)) + for i, dim in enumerate(self.df.columns.values)} + + if self.lag is not None: + bins = self.__extend_bins__(bins) + # Return the optimal bin-edges + return bins + + def knuth_bins(self, max_bins=15): + """ + Method to find optimal bin widths in each dimension, using a naive search to + maximise the log-likelihood given data. Only accepts data + with two dimensions [X(t),Y(t)]. + Derived from Matlab code provided in Knuth (2013): https://arxiv.org/pdf/physics/0605197.pdf + + (Note that this is restricted to equal-width bins only.) + Args: + max_bins - (int) The maximum allowed bins in each dimension + Returns: + bins - (dict) The optimal bin-edges for pdf estimation + using the histogram method, keyed by df column names + All bins equal-width. + """ + if len(self.df.columns.values) > 2: + raise ValueError( + 'Too many columns provided in DataFrame. knuth_bins only accepts 2 columns (no lagged columns)') + + min_bins = 3 + + # Initialise array to store MIC values + log_probabilities = np.zeros( + shape=[1+max_bins-min_bins, 1+max_bins-min_bins]) + + # Loop over each dimension + for b_x in range(min_bins, max_bins+1): + + for b_y in range(min_bins, max_bins+1): + + # Update parameters + Ms = [b_x, b_y] + + # Update dict of bin edges + bins = {dim: list(np.linspace(self.df[dim].min(), + self.df[dim].max(), + Ms[i]+1)) + for i, dim in enumerate(self.df.columns.values)} + + # Calculate Maximum log Posterior + + # Create N-d histogram to count number per bin + HDE = NDHistogram(self.df, bins) + nk = HDE.Hist + + # M = number of bins in total = Mx * My * Mz ... etc. + M = np.prod(Ms) + + log_prob = (self.N * np.log(M) + + gammaln(0.5 * M) + - M * gammaln(0.5) + - gammaln(self.N + 0.5 * M) + + np.sum(gammaln(nk.ravel() + 0.5))) + + log_probabilities[b_x-min_bins][b_y-min_bins] = log_prob + + # Get Optimal b_x, b_y values + Ms[0] = np.where(log_probabilities == np.max( + log_probabilities))[0] + min_bins + Ms[1] = np.where(log_probabilities == np.max( + log_probabilities))[1] + min_bins + + bins = {dim: list(np.linspace(self.df[dim].min(), + self.df[dim].max(), + Ms[i]+1)) + for i, dim in enumerate(self.df.columns.values)} + + if self.lag is not None: + bins = self.__extend_bins__(bins) + # Return the optimal bin-edges + return bins + + def sigma_bins(self, max_bins=15): + """ + Returns bins for N-dimensional data, using standard deviation binning: each + bin is one S.D in width, with bins centered on the mean. Where outliers exist + beyond the maximum number of SDs dictated by the max_bins parameter, the + bins are extended to minimum/maximum values to ensure all data points are + captured. This may mean larger bins in the tails, and up to two bins + greater than the max_bins parameter suggests in total (in the unlikely case of huge + outliers on both sides). + Args: + max_bins - (int) The maximum allowed bins in each dimension + Returns: + bins - (dict) The optimal bin-edges for pdf estimation + using the histogram method, keyed by df column names + """ + + bins = {k: [np.mean(v)-int(max_bins/2)*np.std(v) + i * np.std(v) for i in range(max_bins+1)] + for (k, v) in self.df.iteritems()} # Note: same as: self.df.to_dict('list').items()} + + # Since some outliers can be missed, extend bins if any points are not yet captured + [bins[k].append(self.df[k].min()) + for k in self.df.keys() if self.df[k].min() < min(bins[k])] + [bins[k].append(self.df[k].max()) + for k in self.df.keys() if self.df[k].max() > max(bins[k])] + + if self.lag is not None: + bins = self.__extend_bins__(bins) + return bins + + def equiprobable_bins(self, max_bins=15): + """ + Returns bins for N-dimensional data, such that each bin should contain equal numbers of + samples. + *** Note that due to SciPy's mquantiles() functional design, the equipartion is not strictly true - + it operates independently on the marginals, and so with large bin numbers there are usually + significant discrepancies from desired behaviour. Fortunately, for TE we find equipartioning is + extremely beneficial, so we find good accuracy with small bin counts *** + Args: + max_bins - (int) The number of bins in each dimension + Returns: + bins - (dict) The calculated bin-edges for pdf estimation + using the histogram method, keyed by df column names + """ + quantiles = np.array([i/max_bins for i in range(0, max_bins+1)]) + bins = dict(zip(self.axes, mquantiles( + a=self.df, prob=quantiles, axis=0).T.tolist())) + + # Remove_duplicates + bins = {k: sorted(set(bins[k])) for (k, v) in bins.items()} + + if self.lag is not None: + bins = self.__extend_bins__(bins) + return bins + + +class _kde_(stats.gaussian_kde): + """ + Subclass of scipy.stats.gaussian_kde. This is to enable the passage of a pre-defined covariance matrix, via the + `covar` parameter. This is handled internally within TransferEntropy class. + The matrix is calculated on the overall dataset, before windowing, which allows for consistency between windows, + and avoiding duplicative computational operations, compared with calculating the covariance each window. + Functions left as much as possible identical to scipi.stats.gaussian_kde; docs available: + https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gaussian_kde.html + """ + + def __init__(self, dataset, bw_method=None, df=None, covar=None): + self.dataset = atleast_2d(dataset) + if not self.dataset.size > 1: + raise ValueError("`dataset` input should have multiple elements.") + + self.d, self.n = self.dataset.shape + self.set_bandwidth(bw_method=bw_method, covar=covar) + + def set_bandwidth(self, bw_method=None, covar=None): + + if bw_method is None: + pass + elif bw_method == 'scott': + self.covariance_factor = self.scotts_factor + elif bw_method == 'silverman': + self.covariance_factor = self.silverman_factor + elif np.isscalar(bw_method) and not isinstance(bw_method, string_types): + self._bw_method = 'use constant' + self.covariance_factor = lambda: bw_method + elif callable(bw_method): + self._bw_method = bw_method + self.covariance_factor = lambda: self._bw_method(self) + else: + msg = "`bw_method` should be 'scott', 'silverman', a scalar " \ + "or a callable." + raise ValueError(msg) + + self._compute_covariance(covar) + + def _compute_covariance(self, covar): + + if covar is not None: + try: + self._data_covariance = covar + self._data_inv_cov = linalg.inv(self._data_covariance) + except Exception as e: + print('\tSingular matrix encountered...') + covar += 10e-6 * np.eye(*covar.shape) + self._data_covariance = covar + self._data_inv_cov = linalg.inv(self._data_covariance) + + self.factor = self.covariance_factor() + # Cache covariance and inverse covariance of the data + if not hasattr(self, '_data_inv_cov'): + self._data_covariance = atleast_2d(np.cov(self.dataset, rowvar=1, + bias=False)) + self._data_inv_cov = linalg.inv(self._data_covariance) + + self.covariance = self._data_covariance * self.factor**2 + self.inv_cov = self._data_inv_cov / self.factor**2 + self._norm_factor = sqrt(linalg.det(2*pi*self.covariance)) * self.n + + +############################################################################################################## +# U T I L I T Y F U N C T I O N S +############################################################################################################## + + +def get_pdf(df, gridpoints=None, bandwidth=None, estimator=None, bins=None, covar=None): + """ + Function for non-parametric density estimation + Args: + df - (DataFrame) Samples over which to estimate density + gridpoints - (int) Number of gridpoints when integrating KDE over + the domain. Used if estimator='kernel' + bandwidth - (float) Bandwidth for KDE (scalar multiple to covariance + matrix). Used if estimator='kernel' + estimator - (string) 'histogram' or 'kernel' + bins - (Dict of lists) Bin edges for NDHistogram. Used if estimator = 'histogram' + covar - (Numpy ndarray) Covariance matrix between dimensions of df. + Used if estimator = 'kernel' + Returns: + pdf - (Numpy ndarray) Probability of a sample being in a specific + bin (technically a probability mass) + """ + DF = sanitise(df) + + if estimator == 'histogram': + pdf = pdf_histogram(DF, bins) + else: + pdf = pdf_kde(DF, gridpoints, bandwidth, covar) + return pdf + + +def pdf_kde(df, gridpoints=None, bandwidth=1, covar=None): + """ + Function for non-parametric density estimation using Kernel Density Estimation + Args: + df - (DataFrame) Samples over which to estimate density + gridpoints - (int) Number of gridpoints when integrating KDE over + the domain. Used if estimator='kernel' + bandwidth - (float) Bandwidth for KDE (scalar multiple to covariance + matrix). + covar - (Numpy ndarray) Covariance matrix between dimensions of df. + If None, these are calculated from df during the + KDE analysis + Returns: + Z/Z.sum() - (Numpy ndarray) Probability of a sample being between + specific gridpoints (technically a probability mass) + """ + # Create Meshgrid to capture data + if gridpoints is None: + gridpoints = 20 + + N = complex(gridpoints) + + slices = [slice(dim.min(), dim.max(), N) + for dimname, dim in df.iteritems()] + grids = np.mgrid[slices] + + # Pass Meshgrid to Scipy Gaussian KDE to Estimate PDF + positions = np.vstack([X.ravel() for X in grids]) + values = df.values.T + kernel = _kde_(values, bw_method=bandwidth, covar=covar) + Z = np.reshape(kernel(positions).T, grids[0].shape) + + # Normalise + return Z/Z.sum() + + +def pdf_histogram(df, bins): + """ + Function for non-parametric density estimation using N-Dimensional Histograms + Args: + df - (DataFrame) Samples over which to estimate density + bins - (Dict of lists) Bin edges for NDHistogram. + Returns: + histogram.pdf - (Numpy ndarray) Probability of a sample being in a specific + bin (technically a probability mass) + """ + histogram = NDHistogram(df=df, bins=bins) + return histogram.pdf + + +def get_entropy(df, gridpoints=15, bandwidth=None, estimator='kernel', bins=None, covar=None): + """ + Function for calculating entropy from a probability mass + + Args: + df - (DataFrame) Samples over which to estimate density + gridpoints - (int) Number of gridpoints when integrating KDE over + the domain. Used if estimator='kernel' + bandwidth - (float) Bandwidth for KDE (scalar multiple to covariance + matrix). Used if estimator='kernel' + estimator - (string) 'histogram' or 'kernel' + bins - (Dict of lists) Bin edges for NDHistogram. Used if estimator + = 'histogram' + covar - (Numpy ndarray) Covariance matrix between dimensions of df. + Used if estimator = 'kernel' + Returns: + entropy - (float) Shannon entropy in bits + """ + pdf = get_pdf(df, gridpoints, bandwidth, estimator, bins, covar) + # log base 2 returns H(X) in bits + return -np.sum(pdf * ma.log2(pdf).filled(0)) + + +def shuffle_series(DF, only=None): + """ + Function to return time series shuffled rowwise along each desired column. + Each column is shuffled independently, removing the temporal relationship. + This is to calculate Z-score and Z*-score. See P. Boba et al (2015) + Calculated using: df.apply(np.random.permutation) + Arguments: + df - (DataFrame) Time series data + only - (list) Fieldnames to shuffle. If none, all columns shuffled + Returns: + df_shuffled - (DataFrame) Time series shuffled along desired columns + """ + if not only == None: + shuffled_DF = DF.copy() + for col in only: + series = DF.loc[:, col].to_frame() + shuffled_DF[col] = series.apply(np.random.permutation) + else: + shuffled_DF = DF.apply(np.random.permutation) + + return shuffled_DF + + +def plot_pdf(df, estimator='kernel', gridpoints=None, bandwidth=None, covar=None, bins=None, show=False, + cmap='inferno', label_fontsize=7): + """ + Wrapper function to plot the pdf of a pandas dataframe + + Args: + df - (DataFrame) Samples over which to estimate density + estimator - (string) 'kernel' or 'histogram' + gridpoints - (int) Number of gridpoints when integrating KDE over + the domain. Used if estimator='kernel' + bandwidth - (float) Bandwidth for KDE (scalar multiple to covariance + matrix). Used if estimator='kernel' + covar - (Numpy ndarray) Covariance matrix between dimensions of df. + bins - (Dict of lists) Bin edges for NDHistogram. Used if estimator = 'histogram' + show - (Boolean) whether or not to plot direclty, or simply return axes for later use + cmap - (string) Colour map (see: https://matplotlib.org/examples/color/colormaps_reference.html) + label_fontsize - (float) Defines the fontsize for the axes labels + Returns: + ax - AxesSubplot object. Can be added to figures to allow multiple plots. + """ + + DF = sanitise(df) + if len(DF.columns) != 2: + print("DataFrame has " + str(len(DF.columns)) + + " dimensions. Only 2D or less can be plotted") + axes = None + else: + # Plot data in Histogram or Kernel form + if estimator == 'histogram': + + if bins is None: + bins = {axis: np.linspace(DF[axis].min(), + DF[axis].max(), + 9) for axis in DF.columns.values} + fig, axes = plot_pdf_histogram(df, bins, cmap) + else: + fig, axes = plot_pdf_kernel(df, gridpoints, bandwidth, covar, cmap) + + # Format plot + axes.set_xlabel(DF.columns.values[0], labelpad=20) + axes.set_ylabel(DF.columns.values[1], labelpad=20) + for label in axes.xaxis.get_majorticklabels(): + label.set_fontsize(label_fontsize) + for label in axes.yaxis.get_majorticklabels(): + label.set_fontsize(label_fontsize) + for label in axes.zaxis.get_majorticklabels(): + label.set_fontsize(label_fontsize) + axes.view_init(10, 45) + if show == True: + plt.show() + plt.close(fig) + + axes.remove() + + return axes + + +def plot_pdf_histogram(df, bins, cmap='inferno'): + """ + Function to plot the pdf of a dataset, estimated via histogram. + + Args: + df - (DataFrame) Samples over which to estimate density + bins - (Dict of lists) Bin edges for NDHistogram. Used if estimator = 'histogram' + Returns: + ax - AxesSubplot object, passed back via to plot_pdf() function + """ + DF = sanitise(df) # in case function called directly + + # Calculate PDF + PDF = get_pdf(df=DF, estimator='histogram', bins=bins) + + # Get x-coords, y-coords for each bar + (x_edges, y_edges) = bins.values() + X, Y = np.meshgrid(x_edges[:-1], y_edges[:-1]) + # Get dx, dy for each bar + dxs, dys = np.meshgrid(np.diff(x_edges), np.diff(y_edges)) + + # Colourmap + cmap = cm.get_cmap(cmap) + rgba = [cmap((p-PDF.flatten().min())/PDF.flatten().max()) + for p in PDF.flatten()] + + # Create subplots + fig = plt.figure() + ax = fig.add_subplot(111, projection='3d') + + ax.bar3d(x=X.flatten(), # x coordinates of each bar + y=Y.flatten(), # y coordinates of each bar + z=0, # z coordinates of each bar + dx=dxs.flatten(), # width of each bar + dy=dys.flatten(), # depth of each bar + dz=PDF.flatten(), # height of each bar + alpha=1, # transparency + color=rgba + ) + ax.set_title("Histogram Probability Distribution", fontsize=10) + + return fig, ax + + +def plot_pdf_kernel(df, gridpoints=None, bandwidth=None, covar=None, cmap='inferno'): + """ + Function to plot the pdf, calculated by KDE, of a dataset + + Args: + df - (DataFrame) Samples over which to estimate density + gridpoints - (int) Number of gridpoints when integrating KDE over + the domain. Used if estimator='kernel' + bandwidth - (float) Bandwidth for KDE (scalar multiple to covariance + matrix). Used if estimator='kernel' + covar - (Numpy ndarray) Covariance matrix between dimensions of df. + + Returns: + ax - AxesSubplot object, passed back via to plot_pdf() function + """ + DF = sanitise(df) + # Estimate the PDF from the data + if gridpoints is None: + gridpoints = 20 + + pdf = get_pdf(DF, gridpoints=gridpoints, bandwidth=bandwidth) + N = complex(gridpoints) + slices = [slice(dim.min(), dim.max(), N) + for dimname, dim in DF.iteritems()] + X, Y = np.mgrid[slices] + + fig = plt.figure() + ax = fig.add_subplot(111, projection='3d') + ax.plot_surface(X, Y, pdf, cmap=cmap) + + ax.set_title("KDE Probability Distribution", fontsize=10) + + return fig, ax + + +def sanitise(df): + """ + Function to convert DataFrame-like objects into pandas DataFrames + + Args: + df - Data in pd.Series or pd.DataFrame format + Returns: + df - Data as pandas DataFrame + """ + # Ensure data is in DataFrame form + if isinstance(df, pd.DataFrame): + df = df + elif isinstance(df, pd.Series): + df = df.to_frame() + else: + raise ValueError( + 'Data passed as %s Please ensure your data is stored as a Pandas DataFrame' % (str(type(df)))) + return df diff --git a/structured_data/2022_06_02_causality/src/transfer_entropy/transfer_entropy_wrapper.py b/structured_data/2022_06_02_causality/src/transfer_entropy/transfer_entropy_wrapper.py new file mode 100644 index 0000000..17421d4 --- /dev/null +++ b/structured_data/2022_06_02_causality/src/transfer_entropy/transfer_entropy_wrapper.py @@ -0,0 +1,169 @@ +""" +Functions for identifying causality. +""" +# Import standard library modules +from typing import List, Tuple, Dict +import warnings + +# Import third party modules +from matplotlib import pyplot as plt +import numpy as np +import pandas as pd + +from transfer_entropy.pycausality.src import TransferEntropy + +warnings.filterwarnings("ignore") + +# Function definitions +def grangers_causation_matrix(df: pd.DataFrame, test: str='ssr_chi2test', max_lag: int=7, verbose=False) -> Tuple[pd.DataFrame, pd.DataFrame]: + """Check Granger Causality of all possible combinations of the Time series. + The rows are the response variable, columns are predictors. The values in the table + are the P-Values. P-Values lesser than the significance level (0.05), implies + the Null Hypothesis that the coefficients of the corresponding past values is + zero, that is, the X does not cause Y can be rejected. + + Arguments: + - df (pd.DataFrame): + - test (str): + - max_lag (int): + - verbose: Whether or not to display intermediate results. + + Results: + - Tuple[pd.DataFrame, pd.DataFrame]: Dataframes containing the minimum p_value (i.e., largest + significance) and corresponding lag for each of the columns of the argument dataframe. + """ + df_gc = pd.DataFrame(np.zeros((1, len(df.columns[1:]))), columns=df.columns[1:], index=[df.columns[0]]) + df_gc_lags = pd.DataFrame(np.zeros((1, len(df.columns[1:]))), columns=df.columns[1:], index=[df.columns[0]]) + + col_res = df.columns[0] + for col_orig in df.columns[1:]: + test_result = grangercausalitytests(df[[col_res, col_orig]], maxlag=max_lag, verbose=False) + p_values = [round(test_result[i+1][0][test][1],4) for i in range(max_lag)] + if verbose: print(f'Y = {r}, X = {c}, P Values = {p_values}') + min_p_value = np.min(p_values) + min_lags = np.argmin(p_values) + df_gc.loc[col_res, col_orig] = min_p_value + df_gc_lags.loc[col_res, col_orig] = min_lags + + df_gc.columns = [col + '_x' for col in df.columns[1:]] + df_gc.index = [df.columns[0]] + + df_gc_lags.columns = [col + '_x' for col in df.columns[1:]] + df_gc_lags.index = [df.columns[0]] + return df_gc, df_gc_lags + + +def calculate_transfer_entropy(df: pd.DataFrame, lag: int, linear: bool=False, effective: bool=False, window_size: Dict={'MS': 6}, window_stride: Dict={'MS': 1}, n_shuffles=100, debug=False) -> List: + """Perform Seasonal-Trend decomposition using LOESS (STL) to remove trend + and seasonality and difference residuals as much as necessary to make + time-series stationary. + + Arguments: + - df (pd.DataFrame): Dataframe for which transfer entropies must be + calculated. + - linear (bool): Whether the required transfer entropies should be linear + (True) or non-linear (False). + - effective (bool): Whether or not to calculate the effective transfer + entropy. Can only be done for `n_shuffles>0`, but has proven to not + give the most reliable results given the size of the dataset. + - window_size (Dict): Dictionary indicating the size of a window, either in 'MS' + (Month Start) or 'D' (Days; to express weeks), e.g., {'MS': 6}. + - window_stride (Dict): Dictionary indicating the stride of a window, either in 'MS' + (Month Start) or 'D' (Days; to express weeks), e.g., {'MS': 1}. + - n_shuffles (int): Number of shuffling operations to do when calculating + the average transfer entropy. Only relevant if the results should be + either the effective entropy or if p-values should be included for + significance. + - debug (bool): Whether or not to print intermediate results (for + debugging purposed). + + Result: + - List[List[str, pd.DataFrame]]: List containing nested lists (pairs) of + the column names and the resulting Pandas dataframe containing the + transfer entropy for each window in the respective column. + """ + + te_results = [] + + col_res = df.columns[0] + col_origs = df.columns[1:] + for col_orig in col_origs: + print(f'{col_orig} -> {col_res}') + + # Initialise Object to Calculate Transfer Entropy + TE = TransferEntropy(DF=df, + endog=col_res, + exog=col_orig, + lag=lag, + window_size=window_size, + window_stride=window_stride + ) + + # Calculate TE using KDE + if linear: + TE.linear_TE(n_shuffles=n_shuffles) + else: + TE.nonlinear_TE(pdf_estimator='kernel', n_shuffles=n_shuffles) + + # Standardize column naming + if (linear): + TE.results = TE.results.rename(mapper=(lambda col: col.replace('linear_', '')), axis=1) + + # Display TE_XY, TE_YX and significance values + if debug: + if n_shuffles and effective: + #print('\t', TE.results[[f'TE_XY', f'Ave_TE_XY', f'p_value_XY']]) + print('\t', f"TE_XY_Eff=({TE.results['TE_XY'].values[0] - TE.results['Ave_TE_XY'].values[0]}), p=({TE.results['p_value_YX'].values[0]})", '\n') + elif n_shuffles: + print('\t', f"TE_XY=({TE.results['TE_XY'].values[0]}), p=({TE.results['p_value_YX'].values[0]})", '\n') + else: + print('\t', f"TE_XY=({TE.results[['TE_XY']]})", '\n') + + # Track results of current link + te_results.append([col_orig, TE.results]) + return te_results + +def average_transfer_entropy(df: pd.DataFrame, linear: bool, effective: bool, tau_min: int=0, tau_max: int=4, n_shuffles=None, debug: bool=False) -> List: + """Wrapper function around `calculate_transfer_entropy` for calculating the + average (non-)linear transfer entropy. + + Arguments: + - df (pd.DataFrame): Dataframe for which transfer entropies must be + calculated. + - linear (bool): Whether the required transfer entropies should be linear + (True) or non-linear (False). + - effective (bool): Whether or not to calculate the effective transfer + entropy. Can only be done for `n_shuffles>0`, but has proven to not + give the most reliable results given the size of the dataset. + - tau_min (int): Minimal lag to calculate transfer entropy for. + - tau_max (int): Maximal lag to calculate transfer entropy for. + - n_shuffles (int): Number of shuffling operations to do when calculating + the average transfer entropy. Only relevant if the results should be + either the effective entropy or if p-values should be included for + significance. + - debug (bool): Whether or not to print intermediate results (for + debugging purposed). + + Result: + - List[List[str, pd.DataFrame]]: List containing nested lists (pairs) of + the column names and the resulting Pandas dataframe containing the + transfer entropy for each window in the respective column. + """ + te_results_arr = [] + for lag in range(tau_min, tau_max+1): + print(f'\nlag({lag})') + import time + t= time.time() + + # Call over-arching Transfer Entropy function + te_results = calculate_transfer_entropy(df, lag=lag, linear=linear, window_size=None, window_stride=None, n_shuffles=n_shuffles, debug=debug) + + # Construct dataframe from results + te_results_df = pd.DataFrame(data=pd.concat(np.array(te_results)[:, 1])) + te_results_df.index = np.array(te_results)[:, 0] + + # Keep track of results + te_results_arr.append(te_results) + print("took", time.time() - t, "seconds") + + return te_results_arr \ No newline at end of file