Skip to main content

GrangerCausality

Namespace: CONNECTIVITYLIB  ·  Library: Connectivity Library

Python equivalent

mne_connectivity.spectral_connectivity_epochs (method='gc') in MNE-Python.

#include <connectivity/granger_causality.h>

class CONNECTIVITYLIB::GrangerCausality

Spectral Granger Causality estimator (Geweke 1982 formulation).

For every ordered channel pair (j -> i) the estimator fits an MVAR model to the trial-concatenated time series via MvarModel and evaluates the log ratio of the unconditional and conditional spectra of X_i, GC_{j->i}(f) = ln( S_{ii}(f) / ( S_{ii}(f) - (Sigma_{jj} - Sigma_{ij}^2 / Sigma_{ii}) * |H_{ij}(f)|^2 ) ). The resulting Network is directional and stores the band-averaged GC value as edge weight.

Spectral Granger Causality estimator; directional, MVAR-based.

src/examples/ex_connectivity_metrics/main.cpp
Network granger = GrangerCausality::calculate(settings); // edge j -> i: j Granger-causes i

Inheritance​


Public Methods​

GrangerCausality()​

Constructs a GrangerCausality object.


Static Methods​

calculate(connectivitySettings)​

Calculates spectral Granger causality between all channel pairs.

Parameters:

Returns:

  • Network — The connectivity information in form of a network structure.

Example​

Used in examples​

ex_connectivity_metrics​

Connectivity metrics on synthetic data with a known coupling.

src/examples/ex_connectivity_metrics/main.cpp, line 263
Network granger = GrangerCausality::calculate(settings); // edge j -> i: j Granger-causes i
Network dtf = DirectedTransferFunction::calculate(settings);
Network pdc = PartialDirectedCoherence::calculate(settings);
for (const Network* network : {&granger, &dtf, &pdc}) {
const double forward = edgeWeight(*network, 0, 1);
const double backward = edgeWeight(*network, 1, 0);
ok &= expect(forward > 2.0 * backward,
QString("%1 0->1 %2 > 2 x 1->0 %3").arg(network->getConnectivityMethod()).arg(forward).arg(backward));
}

Authors of this file​