Algorithms for network inference¶
Multivariate Transfer Entropy (mTE)¶
- class idtxl.multivariate_te.MultivariateTE[source]
Perform network inference using multivariate transfer entropy.
Perform network inference using multivariate transfer entropy (TE). To perform network inference call analyse_network() on the whole network or a set of nodes or call analyse_single_target() to estimate TE for a single target. See docstrings of the two functions for more information.
References:
Schreiber, T. (2000). Measuring Information Transfer. Phys Rev Lett, 85(2), 461–464. http://doi.org/10.1103/PhysRevLett.85.461
Vicente, R., Wibral, M., Lindner, M., & Pipa, G. (2011). Transfer entropy-a model-free measure of effective connectivity for the neurosciences. J Comp Neurosci, 30(1), 45–67. http://doi.org/10.1007/s10827-010-0262-3
Lizier, J. T., & Rubinov, M. (2012). Multivariate construction of effective computational networks from observational data. Max Planck Institute: Preprint. Retrieved from http://www.mis.mpg.de/preprints/2012/preprint2012_25.pdf
Faes, L., Nollo, G., & Porta, A. (2011). Information-based detection of nonlinear Granger causality in multivariate processes via a nonuniform embedding technique. Phys Rev E, 83, 1–15. http://doi.org/10.1103/PhysRevE.83.051112
- Attributes:
- source_setlist
indices of source processes tested for their influence on the target
- targetlist
index of target process
- settingsdict
analysis settings
- current_valuetuple
index of the current value in TE estimation, (idx process, idx sample)
- selected_vars_fulllist of tuples
samples in the full conditional set, (idx process, idx sample)
- selected_vars_sourceslist of tuples
source samples in the conditional set, (idx process, idx sample)
- selected_vars_targetlist of tuples
target samples in the conditional set, (idx process, idx sample)
- pvalue_omnibusfloat
p-value of the omnibus test
- pvalues_sign_sourcesnumpy array
array of p-values for TE from individual sources to the target
- statistic_omnibusfloat
joint TE from all sources to the target
- statistic_sign_sourcesnumpy array
raw TE values from individual sources to the target
- sign_ominbusbool
statistical significance of the over-all TE
- analyse_network(settings, data, targets='all', sources='all')[source]
Find multivariate transfer entropy between all nodes in the network.
Estimate multivariate transfer entropy (TE) between all nodes in the network or between selected sources and targets.
- Note:
For a detailed description of the algorithm and settings see documentation of the analyse_single_target() method and references in the class docstring.
- Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag_sources': 5, >>> 'min_lag_sources': 2 >>> } >>> network_analysis = MultivariateTE() >>> results = network_analysis.analyse_network(settings, data)
- Args:
- settingsdict
parameters for estimation and statistical testing, see documentation of analyse_single_target() for details, settings can further contain
verbose : bool [optional] - toggle console output (default=True)
fdr_correction : bool [optional] - correct results on the network level, see documentation of stats.network_fdr() for details (default=True)
- dataData instance
raw data for analysis
- targetslist of int | ‘all’ [optional]
index of target processes (default=’all’)
- sourceslist of int | list of list | ‘all’ [optional]
indices of source processes for each target (default=’all’); if ‘all’, all network nodes excluding the target node are considered as potential sources and tested; if list of int, the source specified by each int is tested as a potential source for the target with the same index or a single target; if list of list, sources specified in each inner list are tested for the target with the same index
- Returns:
- ResultsNetworkInference instance
results of network inference, see documentation of ResultsNetworkInference()
- analyse_single_target(settings, data, target, sources='all')[source]
Find multivariate transfer entropy between sources and a target.
Find multivariate transfer entropy (TE) between all source processes and the target process. Uses multivariate, non-uniform embedding found through information maximisation. Multivariate TE is calculated in four steps:
find all relevant variables in the target processes’ own past, by iteratively adding candidate variables that have significant conditional mutual information (CMI) with the current value (conditional on all variables that were added previously)
find all relevant variables in the source processes’ pasts (again by finding all candidates with significant CMI)
prune the final conditional set by testing the CMI between each variable in the final set and the current value, conditional on all other variables in the final set
statistics on the final set of sources (test for over-all transfer between the final conditional set and the current value, and for significant transfer of all individual variables in the set)
- Note:
For a further description of the algorithm see references in the class docstring.
Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag_sources': 5, >>> 'min_lag_sources': 2 >>> } >>> target = 0 >>> sources = [1, 2, 3] >>> network_analysis = MultivariateTE() >>> results = network_analysis.analyse_single_target(settings, >>> data, target, >>> sources)
- Args:
- settingsdict
parameters for estimation and statistical testing:
cmi_estimator : str - estimator to be used for CMI calculation (for estimator settings see the documentation in the estimators_* modules)
max_lag_sources : int - maximum temporal search depth for candidates in the sources’ past in samples
min_lag_sources : int - minimum temporal search depth for candidates in the sources’ past in samples
max_lag_target : int [optional] - maximum temporal search depth for candidates in the target’s past in samples (default=same as max_lag_sources)
tau_sources : int [optional] - spacing between candidates in the sources’ past in samples (default=1)
tau_target : int [optional] - spacing between candidates in the target’s past in samples (default=1)
n_perm_* : int [optional] - number of permutations, where * can be ‘max_stat’, ‘min_stat’, ‘omnibus’, and ‘max_seq’ (default=500)
alpha_* : float [optional] - critical alpha level for statistical significance, where * can be ‘max_stats’, ‘min_stats’, ‘omnibus’, and ‘max_seq’ (default=0.05)
add_conditionals : list of tuples | str [optional] - force the estimator to add these conditionals when estimating TE; can either be a list of variables, where each variable is described as (idx process, lag wrt to current value) or can be a string: ‘faes’ for Faes-Method (see references)
permute_in_time : bool [optional] - force surrogate creation by shuffling realisations in time instead of shuffling replications; see documentation of Data.permute_samples() for further settings (default=False)
verbose : bool [optional] - toggle console output (default=True)
write_ckp : bool [optional] - enable checkpointing, writes analysis state to disk every time a variable is selected; resume crashed analysis using network_analysis.resume_checkpoint() (default=False)
filename_ckp : str [optional] - checkpoint file name (without extension) (default=’./idtxl_checkpoint’)
- dataData instance
raw data for analysis
- targetint
index of target process
- sourceslist of int | int | ‘all’ [optional]
single index or list of indices of source processes (default=’all’), if ‘all’, all network nodes excluding the target node are considered as potential sources
- Returns:
- ResultsNetworkInference instance
results of network inference, see documentation of ResultsNetworkInference()
Bivariate Transfer Entropy (bTE)¶
- class idtxl.bivariate_te.BivariateTE[source]
Perform network inference using bivariate transfer entropy.
Perform network inference using bivariate transfer entropy (TE). To perform network inference call analyse_network() on the whole network or a set of nodes or call analyse_single_target() to estimate TE for a single target. See docstrings of the two functions for more information.
References:
Schreiber, T. (2000). Measuring Information Transfer. Phys Rev Lett, 85(2), 461–464. http://doi.org/10.1103/PhysRevLett.85.461
Vicente, R., Wibral, M., Lindner, M., & Pipa, G. (2011). Transfer entropy-a model-free measure of effective connectivity for the neurosciences. J Comp Neurosci, 30(1), 45–67. http://doi.org/10.1007/s10827-010-0262-3
Lizier, J. T., & Rubinov, M. (2012). Multivariate construction of effective computational networks from observational data. Max Planck Institute: Preprint. Retrieved from http://www.mis.mpg.de/preprints/2012/preprint2012_25.pdf
Faes, L., Nollo, G., & Porta, A. (2011). Information-based detection of nonlinear Granger causality in multivariate processes via a nonuniform embedding technique. Phys Rev E, 83, 1–15. http://doi.org/10.1103/PhysRevE.83.051112
- Attributes:
- source_setlist
indices of source processes tested for their influence on the target
- targetlist
index of target process
- settingsdict
analysis settings
- current_valuetuple
index of the current value in TE estimation, (idx process, idx sample)
- selected_vars_fulllist of tuples
samples in the full conditional set, (idx process, idx sample)
- selected_vars_sourceslist of tuples
source samples in the conditional set, (idx process, idx sample)
- selected_vars_targetlist of tuples
target samples in the conditional set, (idx process, idx sample)
- pvalue_omnibusfloat
p-value of the omnibus test
- pvalues_sign_sourcesnumpy array
array of p-values for TE from individual sources to the target
- statistic_omnibusfloat
joint TE from all sources to the target
- statistic_sign_sourcesnumpy array
raw TE values from individual sources to the target
- sign_ominbusbool
statistical significance of the over-all TE
- analyse_network(settings, data, targets='all', sources='all')[source]
Find bivariate transfer entropy between all nodes in the network.
Estimate bivariate transfer entropy (TE) between all nodes in the network or between selected sources and targets.
- Note:
For a detailed description of the algorithm and settings see documentation of the analyse_single_target() method and references in the class docstring.
Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag': 5, >>> 'min_lag': 4 >>> } >>> network_analysis = BivariateTE() >>> results = network_analysis.analyse_network(settings, data)
- Args:
- settingsdict
parameters for estimation and statistical testing, see documentation of analyse_single_target() for details, settings can further contain
verbose : bool [optional] - toggle console output (default=True)
- dataData instance
raw data for analysis
- targetslist of int | ‘all’ [optional]
index of target processes (default=’all’)
- sourceslist of int | list of list | ‘all’ [optional]
indices of source processes for each target (default=’all’); if ‘all’, all network nodes excluding the target node are considered as potential sources and tested; if list of int, the source specified by each int is tested as a potential source for the target with the same index or a single target; if list of list, sources specified in each inner list are tested for the target with the same index
- Returns:
- ResultsNetworkInference instance
results of network inference, see documentation of ResultsNetworkInference()
- analyse_single_target(settings, data, target, sources='all')[source]
Find bivariate transfer entropy between sources and a target.
Find bivariate transfer entropy (TE) between all potential source processes and the target process. Uses bivariate, non-uniform embedding found through information maximisation.
Bivariate TE is calculated in four steps:
find all relevant variables in the target processes’ own past, by iteratively adding candidate variables that have significant conditional mutual information (CMI) with the current value (conditional on all variables that were added previously)
find all relevant variables in the single source processes’ pasts (again by finding all candidates with significant CMI); treat each potential source process separately, i.e., the CMI is calculated with respect to already selected variables from the target’s past and from the current processes’ past only
prune the final conditional set for each link (i.e., each process-target pairing): test the CMI between each variable in the final set and the current value, conditional on all other variables in the final set of the current link
statistics on the final set of sources (test for over-all transfer between the final conditional set and the current value, and for significant transfer of all individual variables in the set)
- Note:
For a further description of the algorithm see references in the class docstring.
Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag': 5, >>> 'min_lag': 4 >>> } >>> target = 0 >>> sources = [1, 2, 3] >>> network_analysis = BivariateTE() >>> results = network_analysis.analyse_single_target(settings, >>> data, target, >>> sources)
- Args:
- settingsdict
parameters for estimation and statistical testing:
cmi_estimator : str - estimator to be used for CMI calculation (for estimator settings see the documentation in the estimators_* modules)
max_lag_sources : int - maximum temporal search depth for candidates in the sources’ past in samples
min_lag_sources : int - minimum temporal search depth for candidates in the sources’ past in samples
max_lag_target : int [optional] - maximum temporal search depth for candidates in the target’s past in samples (default=same as max_lag_sources)
tau_sources : int [optional] - spacing between candidates in the sources’ past in samples (default=1)
tau_target : int [optional] - spacing between candidates in the target’s past in samples (default=1)
n_perm_* : int - number of permutations, where * can be ‘max_stat’, ‘min_stat’, ‘omnibus’, and ‘max_seq’ (default=500)
alpha_* : float - critical alpha level for statistical significance, where * can be ‘max_stats’, ‘min_stats’, and ‘omnibus’ (default=0.05)
add_conditionals : list of tuples | str [optional] - force the estimator to add these conditionals when estimating TE; can either be a list of variables, where each variable is described as (idx process, lag wrt to current value) or can be a string: ‘faes’ for Faes-Method (see references)
permute_in_time : bool [optional] - force surrogate creation by shuffling realisations in time instead of shuffling replications; see documentation of Data.permute_samples() for further settings (default=False)
verbose : bool [optional] - toggle console output (default=True)
write_ckp : bool [optional] - enable checkpointing, writes analysis state to disk every time a variable is selected; resume crashed analysis using network_analysis.resume_checkpoint() (default=False)
filename_ckp : str [optional] - checkpoint file name (without extension) (default=’./idtxl_checkpoint’)
- dataData instance
raw data for analysis
- targetint
index of target process
- sourceslist of int | int | ‘all’ [optional]
single index or list of indices of source processes (default=’all’), if ‘all’, all network nodes excluding the target node are considered as potential sources
- Returns:
- ResultsNetworkInference instance
results of network inference, see documentation of ResultsNetworkInference()
Multivariate Mutual Information (mMI)¶
- class idtxl.multivariate_mi.MultivariateMI[source]
Perform network inference using multivariate mutual information.
Perform network inference using multivariate mutual information (MI). To perform network inference call analyse_network() on the whole network or a set of nodes or call analyse_single_target() to estimate MI for a single target. See docstrings of the two functions for more information.
References:
Lizier, J. T., & Rubinov, M. (2012). Multivariate construction of effective computational networks from observational data. Max Planck Institute: Preprint. Retrieved from http://www.mis.mpg.de/preprints/2012/preprint2012_25.pdf
Faes, L., Nollo, G., & Porta, A. (2011). Information-based detection of nonlinear Granger causality in multivariate processes via a nonuniform embedding technique. Phys Rev E, 83, 1–15. http://doi.org/10.1103/PhysRevE.83.051112
- Attributes:
- source_setlist
indices of source processes tested for their influence on the target
- targetlist
index of target process
- settingsdict
analysis settings
- current_valuetuple
index of the current value in MI estimation, (idx process, idx sample)
- selected_vars_fulllist of tuples
samples in the full conditional set, (idx process, idx sample)
- selected_vars_sourceslist of tuples
source samples in the conditional set, (idx process, idx sample)
- pvalue_omnibusfloat
p-value of the omnibus test
- pvalues_sign_sourcesnumpy array
array of p-values for MI from individual sources to the target
- mi_omnibusfloat
joint MI from all sources to the target
- mi_sign_sourcesnumpy array
raw MI values from individual sources to the target
- sign_ominbusbool
statistical significance of the over-all MI
- analyse_network(settings, data, targets='all', sources='all')[source]
Find multivariate mutual information between nodes in the network.
Estimate multivariate mutual information (MI) between all nodes in the network or between selected sources and targets.
- Note:
For a detailed description of the algorithm and settings see documentation of the analyse_single_target() method and references in the class docstring.
Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> # The algorithm uses a conditional mutual information to >>> # construct a non-uniform embedding, hence a CMI- not MI- >>> # estimator has to be specified: >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag_sources': 5, >>> 'min_lag_sources': 2 >>> } >>> network_analysis = MultivariateMI() >>> results = network_analysis.analyse_network(settings, data)
- Args:
- settingsdict
parameters for estimation and statistical testing, see documentation of analyse_single_target() for details, settings can further contain
verbose : bool [optional] - toggle console output (default=True)
fdr_correction : bool [optional] - correct results on the network level, see documentation of stats.network_fdr() for details (default=True)
- dataData instance
raw data for analysis
- targetslist of int | ‘all’ [optional]
index of target processes (default=’all’)
- sourceslist of int | list of list | ‘all’ [optional]
indices of source processes for each target (default=’all’); if ‘all’, all network nodes excluding the target node are considered as potential sources and tested; if list of int, the source specified by each int is tested as a potential source for the target with the same index or a single target; if list of list, sources specified in each inner list are tested for the target with the same index
- Returns:
- dict
results for each target, see documentation of analyse_single_target(); results FDR-corrected, see documentation of stats.network_fdr()
- analyse_single_target(settings, data, target, sources='all')[source]
Find multivariate mutual information between sources and a target.
Find multivariate mutual information (MI) between all source processes and the target process. Uses multivariate, non-uniform embedding found through information maximisation .
Multivariate MI is calculated in four steps (see Lizier and Faes for details):
- Note:
For a further description of the algorithm see references in the class docstring.
Find all relevant samples in the source processes’ past, by iteratively adding candidate samples that have significant conditional mutual information (CMI) with the current value (conditional on all samples that were added previously)
Prune the final conditional set by testing the CMI between each sample in the final set and the current value, conditional on all other samples in the final set
Statistics on the final set of sources (test for over-all transfer between the final conditional set and the current value, and for significant transfer of all individual samples in the set)
Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> # The algorithm uses a conditional mutual information to >>> # construct a non-uniform embedding, hence a CMI- not MI- >>> # estimator has to be specified: >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag_sources': 5, >>> 'min_lag_sources': 2 >>> } >>> target = 0 >>> sources = [1, 2, 3] >>> network_analysis = MultivariateMI() >>> results = network_analysis.analyse_single_target(settings, >>> data, target, >>> sources)
- Args:
- settingsdict
parameters for estimation and statistical testing:
cmi_estimator : str - estimator to be used for CMI calculation (for estimator settings see the documentation in the estimators_* modules)
max_lag_sources : int - maximum temporal search depth for candidates in the sources’ past in samples
min_lag_sources : int - minimum temporal search depth for candidates in the sources’ past in samples
tau_sources : int [optional] - spacing between candidates in the sources’ past in samples (default=1)
n_perm_* : int [optional] - number of permutations, where * can be ‘max_stat’, ‘min_stat’, ‘omnibus’, and ‘max_seq’ (default=500)
alpha_* : float [optional] - critical alpha level for statistical significance, where * can be ‘max_stats’, ‘min_stats’, ‘omnibus’, and ‘max_seq’ (default=0.05)
add_conditionals : list of tuples | str [optional] - force the estimator to add these conditionals when estimating MI; can either be a list of variables, where each variable is described as (idx process, lag wrt to current value) or can be a string: ‘faes’ for Faes-Method (see references)
permute_in_time : bool [optional] - force surrogate creation by shuffling realisations in time instead of shuffling replications; see documentation of Data.permute_samples() for further settings (default=False)
verbose : bool [optional] - toggle console output (default=True)
write_ckp : bool [optional] - enable checkpointing, writes analysis state to disk every time a variable is selected; resume crashed analysis using network_analysis.resume_checkpoint() (default=False)
filename_ckp : str [optional] - checkpoint file name (without extension) (default=’./idtxl_checkpoint’)
- dataData instance
raw data for analysis
- targetint
index of target process
- sourceslist of int | int | ‘all’ [optional]
single index or list of indices of source processes (default=’all’), if ‘all’, all network nodes excluding the target node are considered as potential sources
- Returns:
- dict
results consisting of sets of selected variables as (full set, variables from the sources’ past), pvalues and MI for each selected variable, the current value for this analysis, results for omnibus test (joint MI between all selected source variables and the target, omnibus MI, p-value, and significance); NOTE that all variables are listed as tuples (process, lag wrt. current value)
Bivariate Mutual Information (bMI)¶
- class idtxl.bivariate_mi.BivariateMI[source]
Perform network inference using bivariate mutual information.
Perform network inference using bivariate mutual information (MI). To perform network inference call analyse_network() on the whole network or a set of nodes or call analyse_single_target() to estimate MI for a single target. See docstrings of the two functions for more information.
References:
Lizier, J. T., & Rubinov, M. (2012). Multivariate construction of effective computational networks from observational data. Max Planck Institute: Preprint. Retrieved from http://www.mis.mpg.de/preprints/2012/preprint2012_25.pdf
Faes, L., Nollo, G., & Porta, A. (2011). Information-based detection of nonlinear Granger causality in multivariate processes via a nonuniform embedding technique. Phys Rev E, 83, 1–15. http://doi.org/10.1103/PhysRevE.83.051112
- Attributes:
- source_setlist
indices of source processes tested for their influence on the target
- targetlist
index of target process
- settingsdict
analysis settings
- current_valuetuple
index of the current value in MI estimation, (idx process, idx sample)
- selected_vars_fulllist of tuples
samples in the full conditional set, (idx process, idx sample)
- selected_vars_sourceslist of tuples
source samples in the conditional set, (idx process, idx sample)
- selected_vars_targetlist of tuples
target samples in the conditional set, (idx process, idx sample)
- pvalue_omnibusfloat
p-value of the omnibus test
- pvalues_sign_sourcesnumpy array
array of p-values for MI from individual sources to the target
- mi_omnibusfloat
joint MI from all sources to the target
- mi_sign_sourcesnumpy array
raw MI values from individual sources to the target
- sign_ominbusbool
statistical significance of the over-all MI
- analyse_network(settings, data, targets='all', sources='all')[source]
Find bivariate mutual information between all nodes in the network.
Estimate bivariate mutual information (MI) between all nodes in the network or between selected sources and targets.
- Note:
For a detailed description of the algorithm and settings see documentation of the analyse_single_target() method and references in the class docstring.
Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> # The algorithm uses a conditional mutual information to >>> # construct a non-uniform embedding, hence a CMI- not MI- >>> # estimator has to be specified: >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag': 5, >>> 'min_lag': 4 >>> } >>> network_analysis = BivariateMI() >>> results = network_analysis.analyse_network(settings, data)
- Args:
- settingsdict
parameters for estimation and statistical testing, see documentation of analyse_single_target() for details, settings can further contain
verbose : bool [optional] - toggle console output (default=True)
- dataData instance
raw data for analysis
- targetslist of int | ‘all’ [optional]
index of target processes (default=’all’)
- sourceslist of int | list of list | ‘all’ [optional]
indices of source processes for each target (default=’all’); if ‘all’, all network nodes excluding the target node are considered as potential sources and tested; if list of int, the source specified by each int is tested as a potential source for the target with the same index or a single target; if list of list, sources specified in each inner list are tested for the target with the same index
- Returns:
- dict
results for each target, see documentation of analyse_single_target()
- analyse_single_target(settings, data, target, sources='all')[source]
Find bivariate mutual information between sources and a target.
Find bivariate mutual information (MI) between all potential source processes and the target process. Uses bivariate, non-uniform embedding found through information maximisation
MI is calculated in three steps:
find all relevant variables in a single source processes’ past, by iteratively adding candidate variables that have significant conditional mutual information (CMI) with the current value (conditional on all variables that were added previously)
prune the final conditional set for each link (i.e., each process-target pairing): test the CMI between each variable in the final set and the current value, conditional on all other variables in the final set of the current link; treat each potential source process separately, i.e., the CMI is calculated with respect to already selected variables the current processes’ past only
statistics on the final set of sources (test for over-all transfer between the final conditional set and the current value, and for significant transfer of all individual variables in the set)
- Note:
For a further description of the algorithm see references in the class docstring.
Example:
>>> data = Data() >>> data.generate_mute_data(100, 5) >>> # The algorithm uses a conditional mutual information to >>> # construct a non-uniform embedding, hence a CMI- not MI- >>> # estimator has to be specified: >>> settings = { >>> 'cmi_estimator': 'JidtKraskovCMI', >>> 'n_perm_max_stat': 200, >>> 'n_perm_min_stat': 200, >>> 'n_perm_omnibus': 500, >>> 'n_perm_max_seq': 500, >>> 'max_lag': 5, >>> 'min_lag': 4 >>> } >>> target = 0 >>> sources = [1, 2, 3] >>> network_analysis = BivariateMI() >>> results = network_analysis.analyse_single_target(settings, >>> data, target, >>> sources)
- Args:
- settingsdict
parameters for estimation and statistical testing:
cmi_estimator : str - estimator to be used for CMI calculation (for estimator settings see the documentation in the estimators_* modules)
max_lag_sources : int - maximum temporal search depth for candidates in the sources’ past in samples
min_lag_sources : int - minimum temporal search depth for candidates in the sources’ past in samples
tau_sources : int [optional] - spacing between candidates in the sources’ past in samples (default=1)
n_perm_* : int - number of permutations, where * can be ‘max_stat’, ‘min_stat’, ‘omnibus’, and ‘max_seq’ (default=500)
alpha_* : float - critical alpha level for statistical significance, where * can be ‘max_stats’, ‘min_stats’, and ‘omnibus’ (default=0.05)
add_conditionals : list of tuples | str [optional] - force the estimator to add these conditionals when estimating MI; can either be a list of variables, where each variable is described as (idx process, lag wrt to current value) or can be a string: ‘faes’ for Faes-Method (see references)
permute_in_time : bool [optional] - force surrogate creation by shuffling realisations in time instead of shuffling replications; see documentation of Data.permute_samples() for further settings (default=False)
verbose : bool [optional] - toggle console output (default=True)
write_ckp : bool [optional] - enable checkpointing, writes analysis state to disk every time a variable is selected; resume crashed analysis using network_analysis.resume_checkpoint() (default=False)
filename_ckp : str [optional] - checkpoint file name (without extension) (default=’./idtxl_checkpoint’)
- dataData instance
raw data for analysis
- targetint
index of target process
- sourceslist of int | int | ‘all’ [optional]
single index or list of indices of source processes (default=’all’), if ‘all’, all network nodes excluding the target node are considered as potential sources
- Returns:
- dict
results consisting of sets of selected variables as (full set, variables from the sources’ past), pvalues and MI for each selected variable, the current value for this analysis, results for omnibus test (joint MI between all selected source variables and the target, omnibus MI, p-value, and significance); NOTE that all variables are listed as tuples (process, lag wrt. current value)