Tigramite 5.2 contains many new features and improvements, hence the change in the main version number. The major new features are:
- Dataframe
- now supports multiple time series arrays to learn one joint graph. Together with sliding_windows this allows to estimate graphs for every time step (or range) if multiple datasets for each time step are available. See Tutorial.
- new data_type to indicate categorical/numerical data, used e.g. for CI tests
- Expanded CI test suite:
- Implementation of Gsquared for categorical data with asymptotic null distribution
- Improved (now multivariate) CMIsymb for categorical data with local permutation test. Uses joblib to parallelize permutations across cpu-cores for null distribution generation.
- RegressionCI (linear dependencies) for mixed data sets (arbitrary mix of continuous and categorical data)
- RobustParCorr - Robust partial correlation test based on non-paranormal models.
- ParCorrWLS - Weighted partial correlation test that accounts for heteroskedastic noises.
- ParCorrMult - Partial correlation test for multivariate X and Y
- Causal discovery functions:
- Sliding window function can now be combined with MultiData functionality and LPCMCI
- link_assumptions replaces selected_links. The existence, absence, and orientation can now be encoded - New function return_summary_results to aggregate results from multiple PCMCI/PCMCIplus/... analyses. Also available for LPCMCI.
- New function to generate random structural causal processes for benchmarking
- New function 'surrogate generator' can generate multiple realizations from a model fitted on data
- Implementation of Regime-PCMCI to learn causal regimes from multivariate time series
- Causal effects:
- CausalEffects class now supports hidden variables in stationary time series graphs
- CausalEffects now runs also with logistic regression
- added aggregation_func to aggregate over prediction
- improved bootstrap confidence inkl block-length selection for all functions
- models.py now handles empty sets of predictors by user-specified function, default is mean(y).
- LinearMediation
- can now handle contemporaneous links
- now has bootstrap confidence inkl block-length selection for all functions via get_bootstrap_of
- get_conditional_mce to estimate paths that cross through certain nodes, but not through others
- Plotting:
- Pairwise scatter plots and density plots in plotting.py can now be used to visualize dependencies and choose an appropriate conditional independence (CI) test.
- plot_graph can now show auto-dependency-links by show_autodependency_lags=True.
- Improved graph objects, now returned as axes in order to integrate them into subplots.
- New transform-parameter to draw graphs onto maps using, eg, node_pos['transform']=ccrs.PlateCarree()
- new write_csv() function in plotting.py to write all links of a graph in a file.
- toy models:
- new function generate_structural_causal_process to generate random time-dependent models with flexible functional relations and options to generate interventional data
- Tutorials:
- new folder structure
- "basic" tutorial now called "overview"
- new tutorial on "explaining_lag_functions" which can be helpful to validate causal models.
- tutorial for Regime-PCMCI
- Package demands:
- environment_py3.yml for conda only installs the necessary barebone packages. The optional packages are to be installed according to your needs. See Readme and setup.py for optional packages and the recommended version numbers.
Installation
- Option 1: Install via "pip install tigramite"
- Option 2: Pull new version from master branch, install via python setup.py install
Breaking Changes
- Specific conditional independence tests are now called with the syntax - from tigramite.independence_tests.<independence_test>.py import .
Example: from tigramite.independence_tests.parcorr import ParCorr instead of from tigramite.independence_tests import ParCorr.
Refer to tigramite_tutorial_conditional_independence_tests.ipynb for import syntax to all CI tests. - Shuffle test now uses fewer surrogates by default to speed it up: sig_samples = 500 instead of 1000.
- run_sliding_windows now has default conf_lev=0.9
- seaborn package required for density plots
Bug Fixes
- fixed bug with method='links_coeffs' in fit_wright_effect in CausalEffects
- Small fixes in pcmci.py and plotting.py
- Sphinx generated documentation for plotting.py
- pairwise scatter_plot for auto-dependency corrected.
- fixed bug in CausalEffects regarding '+*>' links
Improvements
- Comprehensive test suite expanded
- Take a look at the new tutorials to see all functionality
- plot_graph can now also displays auto-dependencies at the nodes with the flag show_autodependecies=True
- scatter plot and density plots can show auto-dependency joint kernel density plots along the diagonal with the flag show_marginal_densities_on_diagonal = False
- Colorbars in plot_graph for nodes and links now both have the same default range
- Adapted to the new way of using numpy's random functions using Generators.
- Nicer arrows and colorbars, new argument tick_label_size
- Further improvements throughout plotting.py and data_processing.py
What's Changed
- Developer by @jakobrunge in #91
- updated docs for 4.2.1.0 by @jakobrunge in #92
- Developer by @jakobrunge in #98
- fixed cython issue for pip by @jakobrunge in #99
- fixed cython issue for pip by @jakobrunge in #100
- Small bugs fixed. by @jakobrunge in #106
- Developer by @jakobrunge in #115
- Developer by @jakobrunge in #117
- Developer by @jakobrunge in #121
- update readme by @jakobrunge in #122
- Developer by @jakobrunge in #175
- fixed bug in causal_effects.py by @jakobrunge in #177
- Developer by @jakobrunge in #178
- Developer by @jakobrunge in #180
- fix bug regarding causal_effects.py and masking by @jakobrunge in #181
- fix bug regarding causal_effects.py and masking by @jakobrunge in #182
- fix bug regarding causal_effects.py and masking by @jakobrunge in #183
- Developer by @jakobrunge in #185
- removed ValueError for constants in arrays by @jakobrunge in #186
- removed ValueError for constants in arrays by @jakobrunge in #187
- Developer by @jakobrunge in #188
- fixed bug regarding missing values and imported package version checks by @jakobrunge in #191
- Developer by @jakobrunge in #192
- Developer by @jakobrunge in #193
- updated docs by @jakobrunge in #194
- Developer by @jakobrunge in #195
- Developer by @jakobrunge in #196
- Developer by @jakobrunge in #197
- added confidence interval estimation for causal effects by @jakobrunge in #199
- Developer by @jakobrunge in #200
- fixed bug in causal effects by @jakobrunge in #202
- added plot_scatterplots by @jakobrunge in #203
- added plot_scatterplots by @jakobrunge in #204
- Developer by @jakobrunge in #205
- Developer by @jakobrunge in #206
- fixed bug in causal effects regarding Wright and data_transform by @jakobrunge in #207
- fixed bug in causal effects regarding Wright and data_transform by @jakobrunge in #209
- updated readme and LPCMCI tutorial by @jakobrunge in #210
- Developer by @jakobrunge in #211
- added full bootstrap results returning by @jakobrunge in #217
- typos in docstring by @jakobrunge in #218
- cmisymb now issues warning if non-int array is passed instead of erro… by @jakobrunge in #219
- Developer by @jakobrunge in #224
- further fixes for multiple dataset functionality by @jakobrunge in #225
- further fixes for multiple dataset functionality by @jakobrunge in #233
- Developer by @jakobrunge in #235
- Developer by @jakobrunge in #238
- Developer by @jakobrunge in #243
- Developer by @jakobrunge in #288
- updated docs by @jakobrunge in #289
- updated docs by @jakobrunge in #290
Full Changelog: 4.2...5.2