Pre-processing before Granger Causality/DTF

Dear Mike,

It is really helpful to be able to look up different methods in your book!

Here, I have looked at Granger causality and looked at studies on the derived types (directed transfer function, partial directed coherence) and I was thinking to apply this on resting state EEG data. However, I was wondering what you would recommend of the different types (Granger, DTF, PDC)?

I have tried to run DTF using the HERMES toolbox but the values for the same electrodes i.e. Fp1 - Fp1 is not 1 but instead something like 0.96. Can this be correct?

Furthermore, as noted in the literature, there seems to be some requirements for pre-processing the data when applying Granger causality. What are your recommendations? So far, I have only high-passed filtered at 1 Hz using the filtfilt function, used cleanline for line noise, epoched the data, and removed bad epochs.

Thanks a lot,


Hi Eric. Granger causality, directed transfer function, and partial directed coherence are all closely related methods, so it shouldn’t matter too much which method you use.

I’m not familiar with the HERMES toolbox; my guess is that it’s outputting non-normalized units, and therefore perfect synchronization wouldn’t have to be 1. Also, a normalized causal measure of connectivity should actually be zero for the same electrode. With Granger causality, for example, the two error terms would be the same, thus leading to an error ratio of 1, and the log of that is 0. Anyway, it’s probably best to contact the toolbox authors.

As for pre-processing, high- and low-pass filtering (or high-pass and notch) are good ideas (but not narrowband filtering), standard cleaning, etc. Downsampling might also be good, to reduce the model order (should lead to better fits of the autoregressive model to the data). There are other specific procedures that might be appropriate, for example subtracting the ERP if you are looking for connectivity in the evoked response time window.


Hi Mike,

Thanks a lot for your help!

For preprocessing, I have used a basic FIR filter but I’m not sure what the filter order should be. Do you have any recommendations?

Is it appropriate to use ICA for removing blink artefact before calculating Granger Causality?



Nothing special about the FIR filters for Granger/etc. Whatever is a good filter in general will work here. You can use whatever filter method is implemented in your analysis package. Or write your own, as you like. ICA cleaning is also definitely a good idea.

Thanks a lot Mike! Always a big help!