[FieldTrip] Any insight about Transfer Entropy?

Patricia Wollstadt Patricia.Wollstadt at gmx.de
Fri Jan 31 20:05:09 CET 2014


Hello,

I tried to answer your questions regarding the TRENTOOL parameters 
below. We will soon provide a user manual for the current TRENTOOL 
version on the website (www.trentool.de), which should also help with 
some of the questions raised in your email.

cfgTEP.toi = [min(data.time{1,1})  max(data.time{1,1})] --> Basically 
from trial start to trial end.
PW: This is correct, you should use as much data as possible.

cfgTEP.predicttimemin_u= 10;
cfgTEP.predicttimemax_u= 240;  --> I am not sure where and how these min 
and max were used in TEragwitz calculation in TEprepare.m. VW_ds fixed 1 
as a prediction horizon. I'm not sure if it's good to predict just next 
time sample point for SSVEP + noisy data?

PW: TRENTOOL allows you to reconstruct the delays of an interaction (see 
Wibral, 2013, /Measuring Information Transfer Delays/). Interaction 
delays are reconstructed by scanning over a range of assumed interaction 
delays u, specified by the parameters 'predicttimemin_u', 
'predicttimemax_u', and 'predicttimestepsize'. TRENTOOL will actually 
run the TE estimation for each assumed u, i.e. TE will be estimated 
between all pairs of channels for each prediction time u. The Ragwitz 
criterion will be used for each estimation to determine the respective 
embedding parameters. In a second step, TRENTOOL will reconstruct the 
interaction delay by finding the value for u for which TE becomes maximal.
Note, that you also have to provide the step size in 
'cfgTEP.predicttimestepsize'. TRENTOOL will build a vector 
[cfgTEP.predicttimemin_u:cfgTEP.predicttimestepsize:cfgTEP.predicttimemax_u] 
to estimate TE for each u. You have specified a rather broad range of 
interaction delays to be scanned here. This will result in a very long 
running time. Maybe you could reconsider the values for u that you want 
to scan (i.e. use assumed interaction delays that are biologically 
plausible)?

cfgTEP.actthrvalue = 100;   --> I don't know the reason why this 
autocorrelation time value needs to be set by hand cause I thought 
embedding delay time gets automatically decided by autocorrelation. Is 
there a special logic behind setting this by hand? For particular two 
channels, their ACT values were 54 sample points, etc. Max ACT was 134 
or something. Is this due to noise? If I have strong oscillatory 
activities, am I not supposed to see ACT values close to oscillatory 
period?

PW: This is only a threshold value. If the actual ACT is higher for 
individual trials, these trials will be excluded from the analysis. The 
value you put here should be based on the filtering of the data prior to 
TE analysis. E.g. if you highpass filter your data at 10 Hz and have a 
sampling rate of 1200Hz, you shouldn't find any autocorrelation above 
120 samples. Thus, you may use 120 as a threshold here.

cfgTEP.maxlag      = 1000;  --> 1000 is default. What will be a good lag 
number to see autocorrelation? Should I use a half of total sample 
points of data (2880/2 = 1440)?
PW: Half the number of sample points is fine.

cfgTEP.minnrtrials = 7;  --> Does this mean if trial selection rule by 
ACT value rejects more than 13 trials out of total 20 trials, program 
won't run? What is a good number for this when I have 20 trials?
PW: This is correct, if you end up with less than the number of trials 
specified here, the analysis will not run. Because of the permutation 
statistics used later, this value should be set to at least 12.

For main parameters for TEragwitz,

cfgTEP.optimizemethod ='ragwitz';
cfgTEP.ragdim         = 1:10;  --> I just chose all possible embedding 
dimension from 1 to 10. Should I try to put more than 10? But TE 
analysis always says, embedding dimension maybe 2, which sounds about 
right for pure sine waves like SSVEPs. But with 0.1Hz~500hz bandpass, I 
have tons of non-stimulus locked low and high noisy activities. But when 
I chose Cao's method, it says, 5 or 6.
PW: 1:10 is alright here. Ragwitz is the recommended method for 
parameter estimation.

cfgTEP.ragtaurange    = [0.1 2]; --> For delay time, I chose this range. 
But Ragwitz always chose the smallest value. If I put this range from [1 
2], then it chooses 1. If it was [0.5 3], it chose 0.5. So I'd really 
like to know what kind of values I should put here.
PW: The values you provided here are ok ('ragtaurange' determines the 
embedding delay). The values, that are returned by Ragwitz' optimization 
(tau = 0.1, dim = 2), indicate that there are a lot of fast dynamics in 
your data. This may indicate a lot of high frequency noise. Consider 
filtering (forward only!) in the range were you expect neural activity 
(e.g. 0.5 to 300 Hz or similar).

cfgTEP.ragtausteps    = 15;         % steps for ragwitz tau steps 15

cfgTEP.repPred        = 600;  --> I just chose this. I could vary this. 
Depending on what I put here, final significance of TE changes too.
PW: This parameter determines how many data points are used for 
optimization of the embedding parameters by the Ragwitz criterion. Here, 
TRENTOOL will use the first 600 points in each trial to optimize 
embedding parameters. This number should be as high as possible 
(depending on the values you chose for cfgTEP.actthrvalue, fgTEP.ragdim, 
cfgTEP.ragtaurange).

cfgTEP.flagNei = 'Mass' ;           %neigbour analyse type

cfgTEP.sizeNei = 4;  --> Ideally I guess I might have to vary size of 
neighborhood in phase space
PW: 4 is fine here (default).

For Surrogate analysis,

cfgTESS.optdimusage = 'indivdim';
cfgTGAA.select_opt_u     = 'product_evidence'; % 'max_TEdiff'; --> I 
just chose 'product_evidence' because help file of 
InteractionDelayReconstruction_analyze.m says 'max_TEdiff' could be 
problematic in certain case. Which one is normal to use?
PW: We recommend the use of 'max_TEdiff' . We will change the help text 
in a future release.

cfgTGAA.select_opt_u_pos = 'shortest'; --> Also for this, I don't know 
which one is normal to use.
PW: 'shortest' is fine here.


I hope this helps,

best regards

Patricia



Am 30/01/2014 19:38, schrieb woun zoo:
> How are you?
>
> I'd like to get some insight from you for transfer entropy analysis of 
> my ECoG data before I run all possible parameters. I know this message 
> doesn't exactly fit in fieldtrip email list cause question is not 
> exactly about fieldtrip. But there are a few connectivity methods in 
> fieldtrip. So I'd like to get my questions to reach some of experts in 
> this causality analysis field. Besides, I don't know if there is 
> nonlinear time series analysis discussion list out there or not.
>
> I'd like to establish some connectivity (functional or effective) 
> between frontal and visual channels in ECoG recording.  However, in 
> our data, there is a very strong driven component, namely, steady 
> state visually evoked potentials.  SSVEPs in our data appear at 
> several frequencies that are harmonics of the input frequencies and 
> their sum and difference frequencies So our data has a completely 
> deterministic (SSVEPs) dynamics and the rest of background activities.
>
> Data has 20 trials in total. Each trial lasts 2.4sec. Sampling rate is 
> 1200hz. Raw data were bandpass filtered from 0.1Hz to 500hz.
>
> In order to find an effective connectivity, I chose to use TRENTOOL 
> box that can be incorporated with fieldtrip. I chose Ragwitz method to 
> determine delay time and embedding dimension. This is where I'd like 
> to get some good insight for choosing parameters. I attached a script 
> that I'm using now. I wrote my questions in blue text down below. I 
> really wish to get some good insight from you because I don't know if 
> my input parameters are garbage or not.
>
> cfgTEP.toi = [min(data.time{1,1})  max(data.time{1,1})] --> Basically 
> from trial start to trial end.
>
> cfgTEP.predicttimemin_u= 10;
> cfgTEP.predicttimemax_u= 240; --> For these prediction horizon values, 
> I don't know where and how these min and max were used in TEragwitz.m 
> calculation in TEprepare.m. Transfer Entropy calculation method 
> (VW_ds) fixed 1 as a prediction horizon. I can't find where this min 
> or max of predicttime goes inside TEragwitz calculation. VW_ds seems 
> to try to predict one time sample point ahead from the current time 
> sample point. Is this proper to determine embedding dimension and 
> delay time for SSVEP + background activities?
>
> cfgTEP.actthrvalue = 100; --> I don't know the reason why this 
> autocorrelation time value needs to be set by hand. I know with this 
> threshold value, you can selectively choose trials. In my data, 
> particular channels' autocorrelation values were 54 (sample points), 
> etc. Max autocorrelation was 134 or something. Is this due to noise? 
> If I have strong oscillatory activities at the driving frequencies, am 
> I not supposed to see autocorrelation values close to oscillatory period?
>
> cfgTEP.maxlag      = 1000; --> What will be a good lag number? Isn't 
> it better to use whole trial length?
>
> cfgTEP.minnrtrials = 7; --> What is a good number for this when there 
> are 20 trials?
>
> For main parameters for TEragwitz,
>
> cfgTEP.optimizemethod ='ragwitz';
> cfgTEP.ragdim         = 1:10; --> I just chose all possible embedding 
> dimension from 1 to 10. Should I try go more than 10? But TE analysis 
> always says, embedding dimension maybe 2, which sounds about right for 
> pure sine waves like my SSVEP. But with 0.1Hz~500hz bandpass, I have 
> tons of non-stimulus locked high background activities. I'd like to 
> know if 2 is really good estimation or not for my data. Also when I 
> chose Cao's method, it says, 5 or 6.
>
> cfgTEP.ragtaurange    = [0.1 2]; --> For delay time as an initial 
> guess, I chose this range. But Ragwitz always chose the smallest 
> value. If I put this range from [1 2], then it chooses 1. If it was 
> [0.5 3], it chose 0.5. Whatever minimum value I put will be chosen as 
> its delay time, which makes me wonder about what kind of values I 
> should put here.
>
> cfgTEP.ragtausteps    = 15;         % steps for ragwitz tau steps 15
>
> cfgTEP.repPred        = 600; --> I just chose this. Depending on what 
> I put here, final significance of TE changes too.
>
> cfgTEP.flagNei = 'Mass' ;           %neigbour analyse type
>
> cfgTEP.sizeNei = 4; --> It follows the results of Kraskov (2004) 
> paper. I think this range is between [embedding dimension 2*embedding 
> dimension]. But should I vary this too? For example, should I try 15, 
> 30, 50 etc?
>
>
> For Surrogate analysisin the below, I don't know which options are 
> common to use for non-parametric statistical analysis.
>
> cfgTESS.optdimusage = 'indivdim';
> cfgTGAA.select_opt_u = 'product_evidence'; % 'max_TEdiff';
> cfgTGAA.select_opt_u_pos = 'shortest';
>
> I'm sorry if these questions are not exactly relevant to fieldtrip 
> community. If there is nonlinear time series analysis community, I'd 
> like to post this message over there. But I really appreciate if you 
> could give me some good insight about playing with parameters for ECoG 
> steady-state visual evoked potential data.
>
> Thank you very much.
> Have a nice day.
>
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140131/abd5d7b6/attachment.html>


More information about the fieldtrip mailing list