From 3bb71c3fc5fa4f5c7905ac321126b031d61f3347 Mon Sep 17 00:00:00 2001 From: jakobrunge Date: Sun, 14 Aug 2022 21:35:03 +0200 Subject: [PATCH 1/2] further fixes for multiple dataset functionality --- docs/_build/doctrees/environment.pickle | Bin 882712 -> 881691 bytes docs/_build/doctrees/index.doctree | Bin 1560268 -> 1468781 bytes docs/_build/html/.buildinfo | 2 +- docs/_build/html/_modules/index.html | 7 +- .../_modules/tigramite/causal_effects.html | 13 +- .../_modules/tigramite/data_processing.html | 7 +- .../independence_tests_base.html | 13 +- .../independence_tests/parcorr_mult.html | 13 +- .../html/_modules/tigramite/models.html | 15 +- .../_build/html/_modules/tigramite/pcmci.html | 83 +- .../structural_causal_processes.html | 79 +- docs/_build/html/_sources/index.rst.txt | 1 + docs/_build/html/genindex.html | 7 +- docs/_build/html/index.html | 711 +++++++++--------- docs/_build/html/py-modindex.html | 7 +- docs/_build/html/search.html | 5 +- docs/_build/html/searchindex.js | 2 +- docs/_modules/index.html | 7 +- docs/_modules/tigramite/causal_effects.html | 13 +- docs/_modules/tigramite/data_processing.html | 7 +- .../independence_tests_base.html | 13 +- .../independence_tests/parcorr_mult.html | 13 +- docs/_modules/tigramite/models.html | 15 +- docs/_modules/tigramite/pcmci.html | 83 +- .../structural_causal_processes.html | 79 +- docs/_sources/index.rst.txt | 1 + docs/genindex.html | 7 +- docs/index.html | 711 +++++++++--------- docs/index.rst | 1 + docs/py-modindex.html | 7 +- docs/search.html | 5 +- docs/searchindex.js | 2 +- release_on_pip.sh | 2 +- setup.py | 2 +- tigramite/data_processing.py | 81 +- tigramite/plotting.py | 2 +- ...ite_tutorial_explaining_correlations.ipynb | 37 +- tutorials/tigramite_tutorial_prediction.ipynb | 93 ++- 38 files changed, 1061 insertions(+), 1085 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 3972c96fdbb905ec35ac67af4037474e593643cc..9b6a22daffe15ba126f0b8035f6b3ce12b821c13 100644 GIT binary patch delta 20573 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

7aJo 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

Quick search

- +
@@ -87,7 +88,7 @@

Navigation

\ No newline at end of file diff --git a/docs/_build/html/_modules/tigramite/causal_effects.html b/docs/_build/html/_modules/tigramite/causal_effects.html index 3339536b..580971f3 100644 --- a/docs/_build/html/_modules/tigramite/causal_effects.html +++ b/docs/_build/html/_modules/tigramite/causal_effects.html @@ -1,16 +1,17 @@ - + - tigramite.causal_effects — Tigramite 5.0 documentation + tigramite.causal_effects — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

Navigation

  • modules |
  • - + @@ -2695,7 +2696,7 @@

    Quick search

    - +
    @@ -2709,14 +2710,14 @@

    Navigation

  • modules |
  • - + \ No newline at end of file diff --git a/docs/_build/html/_modules/tigramite/data_processing.html b/docs/_build/html/_modules/tigramite/data_processing.html index 9794e3a1..53c58376 100644 --- a/docs/_build/html/_modules/tigramite/data_processing.html +++ b/docs/_build/html/_modules/tigramite/data_processing.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -1426,7 +1427,7 @@

    Quick search

    - +
    @@ -1447,7 +1448,7 @@

    Navigation

    \ No newline at end of file diff --git a/docs/_build/html/_modules/tigramite/independence_tests/independence_tests_base.html b/docs/_build/html/_modules/tigramite/independence_tests/independence_tests_base.html index 60a9bd35..0facb7a0 100644 --- a/docs/_build/html/_modules/tigramite/independence_tests/independence_tests_base.html +++ b/docs/_build/html/_modules/tigramite/independence_tests/independence_tests_base.html @@ -1,16 +1,17 @@ - + - tigramite.independence_tests.independence_tests_base — Tigramite 5.0 documentation + tigramite.independence_tests.independence_tests_base — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

    Navigation

  • modules |
  • - + @@ -1067,7 +1068,7 @@

    Quick search

    - +
    @@ -1081,14 +1082,14 @@

    Navigation

  • modules |
  • - + \ No newline at end of file diff --git a/docs/_build/html/_modules/tigramite/independence_tests/parcorr_mult.html b/docs/_build/html/_modules/tigramite/independence_tests/parcorr_mult.html index 806be44b..6a2abc21 100644 --- a/docs/_build/html/_modules/tigramite/independence_tests/parcorr_mult.html +++ b/docs/_build/html/_modules/tigramite/independence_tests/parcorr_mult.html @@ -1,16 +1,17 @@ - + - tigramite.independence_tests.parcorr_mult — Tigramite 5.0 documentation + tigramite.independence_tests.parcorr_mult — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

    Navigation

  • modules |
  • - + @@ -370,7 +371,7 @@

    Quick search

    - +
    @@ -384,14 +385,14 @@

    Navigation

  • modules |
  • - + \ No newline at end of file diff --git a/docs/_build/html/_modules/tigramite/models.html b/docs/_build/html/_modules/tigramite/models.html index d2caefb7..07a526db 100644 --- a/docs/_build/html/_modules/tigramite/models.html +++ b/docs/_build/html/_modules/tigramite/models.html @@ -1,16 +1,17 @@ - + - tigramite.models — Tigramite 5.0 documentation + tigramite.models — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

    Navigation

  • modules |
  • - + @@ -1268,7 +1269,7 @@

    Source code for tigramite.models

     
             # Default value for the mask
             if dataframe.mask is not None:
    -            mask = dataframe.mask[0]
    +            mask = {0: dataframe.mask[0]}
             else:
                 mask = {0: np.zeros(dataframe.values[0].shape, dtype='bool')}
             # Get the dataframe shape
    @@ -1600,7 +1601,7 @@ 

    Quick search

    - +
    @@ -1614,14 +1615,14 @@

    Navigation

  • modules |
  • - + \ No newline at end of file diff --git a/docs/_build/html/_modules/tigramite/pcmci.html b/docs/_build/html/_modules/tigramite/pcmci.html index 158944eb..7ee83962 100644 --- a/docs/_build/html/_modules/tigramite/pcmci.html +++ b/docs/_build/html/_modules/tigramite/pcmci.html @@ -1,18 +1,18 @@ - + - + - - - tigramite.pcmci — Tigramite 5.0 documentation - - - - - - + + + tigramite.pcmci — Tigramite 5.1 documentation + + + + + + + @@ -25,26 +25,11 @@

    Navigation

  • modules |
  • - - + + + - - +
    @@ -58,11 +43,11 @@

    Source code for tigramite.pcmci

     #
     # License: GNU General Public License v3.0
     
    -from __future__ import print_function
    +from __future__ import print_function
     import warnings
     import itertools
    -from collections import defaultdict
    -from copy import deepcopy
    +from collections import defaultdict
    +from copy import deepcopy
     import numpy as np
     import scipy.stats
     
    @@ -195,7 +180,7 @@ 

    Source code for tigramite.pcmci

             Time series sample length of dataset(s).
         """
     
    -    def __init__(self, dataframe,
    +    def __init__(self, dataframe,
                      cond_ind_test,
                      selected_variables=None,
                      verbosity=0):
    @@ -4135,11 +4120,11 @@ 

    Source code for tigramite.pcmci

     
     
     if __name__ == '__main__':
    -    from tigramite.independence_tests import ParCorr, CMIknn, ParCorrMult
    +    from tigramite.independence_tests import ParCorr, CMIknn, ParCorrMult
         import tigramite.data_processing_vector as pp
    -    from tigramite.toymodels import structural_causal_processes as toys
    +    from tigramite.toymodels import structural_causal_processes as toys
         import tigramite.plotting as tp
    -    from matplotlib import pyplot as plt
    +    from matplotlib import pyplot as plt
         np.random.seed(43)
     
         # Example process to play around with
    @@ -4171,9 +4156,24 @@ 

    Source code for tigramite.pcmci

     
     
    +
    +
    \ No newline at end of file diff --git a/docs/_build/html/_modules/tigramite/toymodels/structural_causal_processes.html b/docs/_build/html/_modules/tigramite/toymodels/structural_causal_processes.html index 4bbbea64..4a294553 100644 --- a/docs/_build/html/_modules/tigramite/toymodels/structural_causal_processes.html +++ b/docs/_build/html/_modules/tigramite/toymodels/structural_causal_processes.html @@ -1,18 +1,18 @@ - + - + - - - tigramite.toymodels.structural_causal_processes — Tigramite 5.0 documentation - - - - - - + + + tigramite.toymodels.structural_causal_processes — Tigramite 5.1 documentation + + + + + + + @@ -25,26 +25,11 @@

    Navigation

  • modules |
  • - - + + + -
    - +
    @@ -57,8 +42,8 @@

    Source code for tigramite.toymodels.structural_causal_processes

    # Author: Jakob Runge <jakob@jakob-runge.com> # # License: GNU General Public License v3.0 -from __future__ import print_function -from collections import defaultdict, OrderedDict +from __future__ import print_function +from collections import defaultdict, OrderedDict import sys import warnings import copy @@ -66,7 +51,7 @@

    Source code for tigramite.toymodels.structural_causal_processes

    import numpy as np import scipy.sparse import scipy.sparse.linalg -from numba import jit +from numba import jit def _generate_noise(covar_matrix, time=1000, use_inverse=False): """ @@ -568,7 +553,7 @@

    Source code for tigramite.toymodels.structural_causal_processes

    vertices : list List of nodes. """ - def __init__(self,vertices): + def __init__(self,vertices): self.graph = defaultdict(list) self.V = vertices @@ -918,7 +903,7 @@

    Source code for tigramite.toymodels.structural_causal_processes

    class _Logger(object): """Class to append print output to a string which can be saved""" - def __init__(self): + def __init__(self): self.terminal = sys.stdout self.log = "" # open("log.dat", "a") @@ -950,9 +935,24 @@

    Source code for tigramite.toymodels.structural_causal_processes

    print(links_to_graph(links))
    +
    +
    \ No newline at end of file diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt index f2da5d6a..fa71eaf6 100644 --- a/docs/_build/html/_sources/index.rst.txt +++ b/docs/_build/html/_sources/index.rst.txt @@ -145,6 +145,7 @@ Derived classes: .. automodule:: tigramite.plotting :members: + Indices and tables ================== diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index 618bb57d..8c45ac6d 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -605,7 +606,7 @@

    Quick search

    - +
    @@ -625,7 +626,7 @@

    Navigation

    \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index 2b130d50..42206c34 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -1,10 +1,10 @@ - + - + TIGRAMITE — Tigramite 5.1 documentation @@ -12,6 +12,7 @@ + @@ -36,7 +37,7 @@

    Navigation

    -

    TIGRAMITE¶

    +

    TIGRAMITE¶

    Github repo

    Tigramite is a causal time series analysis python package. It allows to efficiently estimate causal graphs from high-dimensional time series datasets (causal discovery) and to use these graphs for robust forecasting and the estimation and prediction of direct, total, and mediated effects. Causal discovery is based on linear as well as non-parametric conditional independence tests applicable to discrete or continuously-valued time series. Also includes functions for high-quality plots of the results. Please cite the following papers depending on which method you use:

      @@ -52,11 +53,7 @@

      TIGRAMITE

    - ---- +
    @@ -110,16 +107,16 @@

    TIGRAMITE -

    tigramite.pcmci: PCMCI¶

    +

    tigramite.pcmci: PCMCI¶

    class tigramite.pcmci.PCMCI(dataframe, cond_ind_test, selected_variables=None, verbosity=0)[source]¶

    PCMCI causal discovery for time series datasets.

    PCMCI is a causal discovery framework for large-scale time series datasets. This class contains several methods. The standard PCMCI method -addresses time-lagged causal discovery and is described in 1 where +addresses time-lagged causal discovery and is described in [1] where also further sub-variants are discussed. Lagged as well as contemporaneous -causal discovery is addressed with PCMCIplus and described in 5. See the +causal discovery is addressed with PCMCIplus and described in [5]. See the tutorials for guidance in applying these methods.

    PCMCI has:

      @@ -153,22 +150,24 @@

      hypothetical interventions, you may better look at the causal effect estimation functionality of Tigramite.

      References

      -
      -
      1(1,2,3,4,5,6,7,8,9,10)
      -

      J. Runge, P. Nowack, M. Kretschmer, S. Flaxman, D. Sejdinovic, +

      -
      5(1,2,3,4,5)
      -

      J. Runge, + +

      -
      +
      -
      Parameters
      +
      Parameters:
      • dataframe (data object) – This is the Tigramite dataframe object. Among others, it has the attributes dataframe.values yielding a numpy array of shape ( @@ -188,7 +187,7 @@

        Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing the conditioning-parents estimated with PC algorithm.

        -
        Type
        +
        Type:

        dictionary

        @@ -201,7 +200,7 @@

        containing the minimum test statistic value for each link estimated in the PC algorithm.

        -
        Type
        +
        Type:

        dictionary

        @@ -213,7 +212,7 @@

        Dictionary of form pval_max[j][(i, -tau)] = float containing the maximum p-value for each link estimated in the PC algorithm.

        -
        Type
        +
        Type:

        dictionary

        @@ -224,7 +223,7 @@

        iterations¶

        Dictionary containing further information on algorithm steps.

        -
        Type
        +
        Type:

        dictionary

        @@ -235,7 +234,7 @@

        N¶

        Number of variables.

        -
        Type
        +
        Type:

        int

        @@ -246,7 +245,7 @@

        T¶

        Time series sample length of dataset(s).

        -
        Type
        +
        Type:

        dict

        @@ -258,13 +257,13 @@

        Converts the 0,1-based graph returned by PCMCI to a string array with links ‘–>’.

        -
        Parameters
        +
        Parameters:

        graph_bool (array) – 0,1-based graph array output by PCMCI.

        -
        Returns
        +
        Returns:

        graph – graph as string array with links ‘–>’.

        -
        Return type
        +
        Return type:

        array

        @@ -278,7 +277,7 @@

        method. Correction is performed either among all links if exclude_contemporaneous==False, or only among lagged links.

        -
        Parameters
        +
        Parameters:
        • p_matrix (array-like) – Matrix of p-values. Must be of shape (N, N, tau_max + 1).

        • tau_min (int, default: 0) – Minimum time lag. Only used as consistency check of selected_links.

        • @@ -292,10 +291,10 @@

        • exclude_contemporaneous (bool, optional (default: True)) – Whether to include contemporaneous links in correction.

        -
        Returns
        +
        Returns:

        q_matrix – Matrix of shape (N, N, tau_max + 1) containing corrected p-values.

        -
        Return type
        +
        Return type:

        array-like

        @@ -307,7 +306,7 @@

        Construct graph from thresholding the p_matrix at an alpha-level.

        Allows to take into account selected_links.

        -
        Parameters
        +
        Parameters:
        • p_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of p-values, optionally adjusted if fdr_method is not ‘none’.

        • @@ -320,10 +319,10 @@

          passed, all links are tested.

        -
        Returns
        +
        Returns:

        graph – Causal graph, see description above for interpretation.

        -
        Return type
        +
        Return type:

        array of shape [N, N, tau_max+1]

        @@ -338,7 +337,7 @@

        p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

        -
        Parameters
        +
        Parameters:
        • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -352,7 +351,7 @@

          False Discovery Rate method (‘fdr_bh’).

        -
        Returns
        +
        Returns:

        • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

        • @@ -372,7 +371,7 @@

          print_results(return_dict, alpha_level=0.05)[source]¶

          Prints significant parents from output of MCI or PCMCI algorithms.

          -
          Parameters
          +
          Parameters:
          • return_dict (dict) –

            Dictionary of return values, containing keys
              @@ -396,7 +395,7 @@

              Used for output of PCMCI and PCMCIplus. For the latter also information on ambiguous links and conflicts is returned.

              -
              Parameters
              +
              Parameters:
              • alpha_level (float, optional (default: 0.05)) – Significance level.

              • p_matrix (array-like) – Must be of shape (N, N, tau_max + 1).

              • @@ -416,7 +415,7 @@

                If parents are unclear (link with o or x), then no parent is returned.

                -
                Parameters
                +
                Parameters:
                • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                • val_matrix (array-like) – Matrix of test statistic values. Must be of shape (N, N, tau_max + @@ -425,11 +424,11 @@

                  zero.

                -
                Returns
                +
                Returns:

                parents_dict – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing estimated parents.

                -
                Return type
                +
                Return type:

                dict

                @@ -446,12 +445,12 @@

                run_bivci(selected_links=None, tau_min=0, tau_max=1, val_only=False, alpha_level=0.05, fdr_method='none')[source]¶

                BivCI conditional independence tests.

                -

                Implements the BivCI test (see 1).

                +

                Implements the BivCI test (see [1]).

                Returns the matrices of test statistic values, (optionally corrected) p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

                -
                Parameters
                +
                Parameters:
                • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -465,7 +464,7 @@

                  False Discovery Rate method.

                -
                Returns
                +
                Returns:

                • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                • @@ -484,12 +483,12 @@

                  run_fullci(selected_links=None, tau_min=0, tau_max=1, val_only=False, alpha_level=0.05, fdr_method='none')[source]¶

                  FullCI conditional independence tests.

                  -

                  Implements the FullCI test (see 1).

                  +

                  Implements the FullCI test (see [1]).

                  Returns the matrices of test statistic values, (optionally corrected) p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

                  -
                  Parameters
                  +
                  Parameters:
                  • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -503,7 +502,7 @@

                    False Discovery Rate method (‘fdr_bh’).

                  -
                  Returns
                  +
                  Returns:

                  • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                  • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                  • @@ -522,12 +521,12 @@

                    run_mci(selected_links=None, tau_min=0, tau_max=1, parents=None, max_conds_py=None, max_conds_px=None, val_only=False, alpha_level=0.05, fdr_method='none')[source]¶

                    MCI conditional independence tests.

                    -

                    Implements the MCI test (Algorithm 2 in 1).

                    +

                    Implements the MCI test (Algorithm 2 in [1]).

                    Returns the matrices of test statistic values, (optionally corrected) p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

                    -
                    Parameters
                    +
                    Parameters:
                    • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -548,7 +547,7 @@

                      False Discovery Rate method (‘fdr_bh’).

                    -
                    Returns
                    +
                    Returns:

                    • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                    • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                    • @@ -569,7 +568,7 @@

                      Lagged PC algorithm for estimating lagged parents of all variables.

                      Parents are made available as self.all_parents

                      -
                      Parameters
                      +
                      Parameters:
                      • selected_links (dict or None) – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -589,11 +588,11 @@

                        a larger number, such as 10, can be used.

                      -
                      Returns
                      +
                      Returns:

                      all_parents – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing estimated parents.

                      -
                      Return type
                      +
                      Return type:

                      dict

                      @@ -605,10 +604,10 @@

                      Runs PC algorithm for time-lagged and contemporaneous causal discovery for time series.

                      For mode='contemp_conds' this implements Steps 2-4 of the -PCMCIplus method described in 5. For mode='standard' this +PCMCIplus method described in [5]. For mode='standard' this implements the standard PC algorithm adapted to time series.

                      -
                      Parameters
                      +
                      Parameters:
                      • selected_links (dict or None) – Dictionary of form {0: [(3, 0), (0, -1), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -640,7 +639,7 @@

                        tests. If None is passed, this number is equal to max_conds_px.

                      -
                      Returns
                      +
                      Returns:

                      • graph (array of shape [N, N, tau_max+1]) – Resulting causal graph, see description above for interpretation.

                      • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values regarding adjacencies.

                      • @@ -661,7 +660,7 @@

                        Simply calls run_pcalg with tau_min = tau_max = 0. Removes lags from ouput dictionaries.

                        -
                        Parameters
                        +
                        Parameters:
                        • pc_alpha (float, optional (default: 0.01)) – Significance level.

                        • contemp_collider_rule ({'majority', 'conservative', 'none'}) – Rule for collider phase to use. See the paper for details. Only @@ -675,7 +674,7 @@

                          to test.

                        -
                        Returns
                        +
                        Returns:

                        • graph (array of shape [N, N, 1]) – Resulting causal graph, see description above for interpretation.

                        • val_matrix (array of shape [N, N, 1]) – Estimated matrix of test statistic values regarding adjacencies.

                        • @@ -738,7 +737,7 @@

                          list of values is given or pc_alpha=None, \alpha is optimized using model selection criteria implemented in the respective tigramite.independence_tests.

                          -

                          Further optional parameters are discussed in 1.

                          +

                          Further optional parameters are discussed in [1].

                          Examples

                          >>> import numpy
                           >>> from tigramite.pcmci import PCMCI
                          @@ -779,7 +778,7 @@ 

                        -
                        Parameters
                        +
                        Parameters:
                        • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -803,7 +802,7 @@

                          False Discovery Rate method.

                        -
                        Returns
                        +
                        Returns:

                        • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                        • @@ -823,10 +822,10 @@

                          run_pcmciplus(selected_links=None, tau_min=0, tau_max=1, pc_alpha=0.01, contemp_collider_rule='majority', conflict_resolution=True, reset_lagged_links=False, max_conds_dim=None, max_conds_py=None, max_conds_px=None, max_conds_px_lagged=None, fdr_method='none')[source]¶

                          Runs PCMCIplus time-lagged and contemporaneous causal discovery for time series.

                          -

                          Method described in 5: +

                          Method described in [5]: http://www.auai.org/~w-auai/uai2020/proceedings/579_main_paper.pdf

                          Notes

                          -

                          The PCMCIplus causal discovery method is described in 5, where +

                          The PCMCIplus causal discovery method is described in [5], where also analytical and numerical results are presented. In contrast to PCMCI, PCMCIplus can identify the full, lagged and contemporaneous, causal graph (up to the Markov equivalence class for contemporaneous @@ -906,7 +905,7 @@

                          reset_lagged_links=True, all lagged links are considered again, which improves detection power for lagged links, but also leads to larger runtimes.

                          -

                          Further optional parameters are discussed in 5.

                          +

                          Further optional parameters are discussed in [5].

                          Examples

                          >>> import numpy as np
                           >>> from tigramite.pcmci import PCMCI
                          @@ -951,7 +950,7 @@ 

                        -
                        Parameters
                        +
                        Parameters:
                        • selected_links (dict or None) – Dictionary of form {0: [(3, 0), (0, -1), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -984,7 +983,7 @@

                          Rate method.

                        -
                        Returns
                        +
                        Returns:

                        • graph (array of shape [N, N, tau_max+1]) – Resulting causal graph, see description above for interpretation.

                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values regarding adjacencies.

                        • @@ -1011,7 +1010,7 @@

                          containing the occurence frequency of the most frequent link outcome, are returned.

                          -
                          Parameters
                          +
                          Parameters:
                          • method (str) – Chosen method among valid functions in PCMCI.

                          • method_args (dict) – Arguments passed to method.

                          • @@ -1020,7 +1019,7 @@

                          • conf_lev (float, optional (default: 0.9)) – Two-sided confidence interval for summary results.

                          -
                          Return type
                          +
                          Return type:

                          Dictionary of results for every sliding window.

                          @@ -1034,7 +1033,7 @@

                        -
                        Parameters
                        +
                        Parameters:
                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                        • p_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of p-values. Set to 1 if val_only=True.

                        • @@ -1046,7 +1045,7 @@

                          passed, all links are tested.

                        -
                        Returns
                        +
                        Returns:

                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                        • p_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of p-values. Set to 1 if val_only=True.

                        • @@ -1063,7 +1062,7 @@

                          -

                          tigramite.lpcmci: LPCMCI¶

                          +

                          tigramite.lpcmci: LPCMCI¶

                          class tigramite.lpcmci.LPCMCI(dataframe, cond_ind_test, verbosity=0)[source]¶
                          @@ -1267,7 +1266,7 @@

                          -

                          tigramite.independence_tests: Conditional independence tests¶

                          +

                          tigramite.independence_tests: Conditional independence tests¶

                          Base class:

                          @@ -1277,7 +1276,7 @@

                          shuffle significance testing and bootstrap confidence estimation. Also handles masked samples. Other test classes can inherit from this class.

                          -
                          Parameters
                          +
                          Parameters:
                          • seed (int, optional(default = 42)) – Seed for RandomState (default_rng)

                          • mask_type (str, optional (default = None)) – Must be in {None, ‘y’,’x’,’z’,’xy’,’xz’,’yz’,’xyz’} @@ -1291,14 +1290,14 @@

                          • sig_samples (int, optional (default: 1000)) – Number of samples for shuffle significance test.

                          • sig_blocklength (int, optional (default: None)) – Block length for block-shuffle significance test. If None, the block length is determined from the decay of the autocovariance as -explained in 1.

                          • +explained in [1].

                          • confidence (str, optional (default: None)) – Specify type of confidence estimation. If False, numpy.nan is returned. ‘bootstrap’ can be used with any test, for ParCorr also ‘analytic’ is implemented.

                          • conf_lev (float, optional (default: 0.9)) – Two-sided confidence interval.

                          • conf_samples (int, optional (default: 100)) – Number of samples for bootstrap.

                          • conf_blocklength (int, optional (default: None)) – Block length for block-bootstrap. If None, the block length is -determined from the decay of the autocovariance as explained in 1.

                          • +determined from the decay of the autocovariance as explained in [1].

                          • recycle_residuals (bool, optional (default: False)) – Specifies whether residuals should be stored. This may be faster, but can cost considerable memory.

                          • verbosity (int, optional (default: 0)) – Level of verbosity.

                          • @@ -1325,7 +1324,7 @@

                            Perform bootstrap confidence interval estimation.

                            With conf_blocklength > 1 or None a block-bootstrap is performed.

                            -
                            Parameters
                            +
                            Parameters:
                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                            • @@ -1335,14 +1334,14 @@

                            • conf_samples (int, optional (default: 100)) – Number of samples for bootstrap.

                            • conf_blocklength (int, optional (default: None)) – Block length for block-bootstrap. If None, the block length is determined from the decay of the autocovariance as explained in -1.

                            • +[1].

                            • verbosity (int, optional (default: 0)) – Level of verbosity.

                            -
                            Returns
                            +
                            Returns:

                            (conf_lower, conf_upper) – Upper and lower confidence bound of confidence interval.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1357,7 +1356,7 @@

                            get_analytic_confidence or get_bootstrap_confidence. If confidence is False, (numpy.nan, numpy.nan) is returned.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index and tau the time lag.

                            • @@ -1369,10 +1368,10 @@

                              different lags in X, Z, all have the same sample size.

                            -
                            Returns
                            +
                            Returns:

                            (conf_lower, conf_upper) – Upper and lower confidence bound of confidence interval.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1390,17 +1389,17 @@

                            Returns signficance for thresholding test.

                            Returns 0 if numpy.abs(value) is smaller than fixed_thres and 1 else.

                            -
                            Parameters
                            +
                            Parameters:
                            • value (number) – Value of test statistic for unshuffled estimate.

                            • fixed_thres (number) – Fixed threshold, is made positive.

                            -
                            Returns
                            +
                            Returns:

                            pval – Returns 0 if numpy.abs(value) is smaller than fixed_thres and 1 else.

                            -
                            Return type
                            +
                            Return type:

                            bool

                            @@ -1413,7 +1412,7 @@

                            Calls the dependence measure function. The child classes must specify a function get_dependence_measure.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index and tau the time lag.

                            • @@ -1425,10 +1424,10 @@

                              different lags in X, Z, all have the same sample size.

                            -
                            Returns
                            +
                            Returns:

                            val – The test statistic value.

                            -
                            Return type
                            +
                            Return type:

                            float

                            @@ -1455,7 +1454,7 @@

                            for this test. If an override is used, then it will call a different function then specified by self.significance

                            -
                            Parameters
                            +
                            Parameters:
                            • val (float) – Test statistic value.

                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                            • @@ -1465,10 +1464,10 @@

                            • sig_override (string) – Must be in ‘analytic’, ‘shuffle_test’, ‘fixed_thres’

                            -
                            Returns
                            +
                            Returns:

                            pval – P-value.

                            -
                            Return type
                            +
                            Return type:

                            float or numpy.nan

                            @@ -1496,7 +1495,7 @@

                            If recycle_residuals is True, also _get_single_residuals must be available.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index and tau the time lag.

                            • @@ -1514,10 +1513,10 @@

                              ‘max_lag’ uses as much samples as possible.

                            -
                            Returns
                            +
                            Returns:

                            val, pval – The test statistic value and the p-value.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1531,17 +1530,17 @@

                            classes must specify a function get_dependence_measure and either or both functions get_analytic_significance and get_shuffle_significance.

                            -
                            Parameters
                            +
                            Parameters:
                            • x (arrays) – x,y,z are of the form (samples, dimension).

                            • y (arrays) – x,y,z are of the form (samples, dimension).

                            • z (arrays) – x,y,z are of the form (samples, dimension).

                            -
                            Returns
                            +
                            Returns:

                            val, pval – The test statistic value and the p-value.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1552,7 +1551,7 @@

                            set_dataframe(dataframe)[source]¶

                          Initialize and check the dataframe.

                          -
                          Parameters
                          +
                          Parameters:

                          dataframe (data object) – Set tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and optionally a mask of the same shape and a missing @@ -1567,7 +1566,7 @@

                          Setter for mask type to ensure that this option does not clash with recycle_residuals.

                          -
                          Parameters
                          +
                          Parameters:

                          mask_type (str) – Must be in {None, ‘y’,’x’,’z’,’xy’,’xz’,’yz’,’xyz’} Masking mode: Indicators for which variables in the dependence measure I(X; Y | Z) the samples should be masked. If None, the mask is not used. @@ -1599,7 +1598,7 @@

                          For the significance='analytic' Student’s-t distribution with T-D_Z-2 degrees of freedom is implemented.

                          -
                          Parameters
                          +
                          Parameters:

                          **kwargs – Arguments passed on to Parent class CondIndTest.

                          @@ -1609,17 +1608,17 @@

                          Returns analytic confidence interval for correlation coefficient.

                          Based on Student’s t-distribution.

                          -
                          Parameters
                          +
                          Parameters:
                          • value (float) – Test statistic value.

                          • df (int) – degrees of freedom of the test

                          • conf_lev (float) – Confidence interval, eg, 0.9

                          -
                          Returns
                          +
                          Returns:

                          (conf_lower, conf_upper) – Upper and lower confidence bound of confidence interval.

                          -
                          Return type
                          +
                          Return type:

                          Tuple of floats

                          @@ -1633,17 +1632,17 @@

                          Assumes two-sided correlation. If the degrees of freedom are less than 1, numpy.nan is returned.

                          -
                          Parameters
                          +
                          Parameters:
                          • value (float) – Test statistic value.

                          • T (int) – Sample length

                          • dim (int) – Dimensionality, ie, number of features.

                          -
                          Returns
                          +
                          Returns:

                          pval – P-value.

                          -
                          Return type
                          +
                          Return type:

                          float or numpy.nan

                          @@ -1656,16 +1655,16 @@

                          Estimated as the Pearson correlation of the residuals of a linear OLS regression.

                          -
                          Parameters
                          +
                          Parameters:
                          • array (array-like) – data array with X, Y, Z in rows and observations in columns

                          • xyz (array of ints) – XYZ identifier array of shape (dim,).

                          -
                          Returns
                          +
                          Returns:

                          val – Partial correlation coefficient.

                          -
                          Return type
                          +
                          Return type:

                          float

                          @@ -1680,7 +1679,7 @@

                          AIC for ordinary linear regression models. Here used to determine optimal hyperparameters in PCMCI, in particular the pc_alpha value.

                          -
                          Parameters
                          +
                          Parameters:
                          • j (int) – Index of target variable in data array.

                          • parents (list) – List of form [(0, -1), (3, -2), …] containing parents.

                          • @@ -1699,17 +1698,17 @@

                            Returns p-value for shuffle significance test.

                            For residual-based test statistics only the residuals are shuffled.

                            -
                            Parameters
                            +
                            Parameters:
                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                            • value (number) – Value of test statistic for unshuffled estimate.

                            -
                            Returns
                            +
                            Returns:

                            pval – p-value

                            -
                            Return type
                            +
                            Return type:

                            float

                            @@ -1728,7 +1727,7 @@

                            class tigramite.independence_tests.GPDC(null_dist_filename=None, gp_params=None, **kwargs)[source]¶

                            GPDC conditional independence test based on Gaussian processes and distance correlation.

                            GPDC is based on a Gaussian process (GP) regression and a distance -correlation test on the residuals 2. GP is estimated with scikit-learn +correlation test on the residuals [2]. GP is estimated with scikit-learn and allows to flexibly specify kernels and hyperparameters or let them be optimized automatically. The distance correlation test is implemented with cython. Here the null distribution is not analytically available, but can be @@ -1738,7 +1737,7 @@

                            Notes

                            GPDC is based on a Gaussian process (GP) regression and a distance correlation test on the residuals. Distance correlation is described in -2. To test X \perp Y | Z, first Z is regressed out from +[2]. To test X \perp Y | Z, first Z is regressed out from X and Y assuming the model

                            X & =  f_X(Z) + \epsilon_{X} \\
@@ -1752,15 +1751,15 @@ <h1><code class=

                            The null distribution of the distance correlation should be pre-computed. Otherwise it is computed during runtime.

                            References

                            -
                            -
                            2(1,2,3,4)
                            -

                            Gabor J. Szekely, Maria L. Rizzo, and Nail K. Bakirov: Measuring and +

                            -
                            +
                            -
                            Parameters
                            +
                            Parameters:
                            • null_dist_filename (str, otional (default: None)) – Path to file containing null distribution.

                            • gp_params (dictionary, optional (default: None)) – Dictionary with parameters for GaussianProcessRegressor.

                            • @@ -1778,7 +1777,7 @@

                              self.null_dist_filename.npz. Also adds the null distributions to self.gauss_pr.null_dists.

                              -
                              Parameters
                              +
                              Parameters:
                              • sample_sizes (list) – List of sample sizes.

                              • null_dist_filename (str) – Name to save file containing null distributions.

                              • @@ -1796,17 +1795,17 @@

                                available in class and generates self.sig_samples random samples. Adds the null distributions to self.gauss_pr.null_dists.

                                -
                                Parameters
                                +
                                Parameters:
                                • df (int) – Degrees of freedom / sample size to generate null distribution for.

                                • add_to_null_dists (bool, optional (default: True)) – Whether to add the null dist to the dictionary of null dists or just return it.

                                -
                                Returns
                                +
                                Returns:

                                null_dist – Only returned,if add_to_null_dists is False.

                                -
                                Return type
                                +
                                Return type:

                                array of shape [df,]

                                @@ -1824,17 +1823,17 @@

                                is one-sided. If the degrees of freedom are less than 1, numpy.nan is returned.

                                -
                                Parameters
                                +
                                Parameters:
                                • value (float) – Test statistic value.

                                • T (int) – Sample length

                                • dim (int) – Dimensionality, ie, number of features.

                                -
                                Returns
                                +
                                Returns:

                                pval – p-value.

                                -
                                Return type
                                +
                                Return type:

                                float or numpy.nan

                                @@ -1847,16 +1846,16 @@

                                Estimated as the distance correlation of the residuals of a GP regression.

                                -
                                Parameters
                                +
                                Parameters:
                                • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                -
                                Returns
                                +
                                Returns:

                                val – GPDC test statistic.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -1870,7 +1869,7 @@

                                log marginal likelihood as a model selection score. Is used to determine optimal hyperparameters in PCMCI, in particular the pc_alpha value.

                                -
                                Parameters
                                +
                                Parameters:
                                • j (int) – Index of target variable in data array.

                                • parents (list) – List of form [(0, -1), (3, -2), …] containing parents.

                                • @@ -1889,17 +1888,17 @@

                                  Returns p-value for shuffle significance test.

                                  For residual-based test statistics only the residuals are shuffled.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                  • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                  • value (number) – Value of test statistic for unshuffled estimate.

                                  -
                                  Returns
                                  +
                                  Returns:

                                  pval – p-value

                                  -
                                  Return type
                                  +
                                  Return type:

                                  float

                                  @@ -1918,7 +1917,7 @@

                                  class tigramite.independence_tests.GPDCtorch(null_dist_filename=None, **kwargs)[source]¶

                                  GPDC conditional independence test based on Gaussian processes and distance correlation. Here with gpytorch implementation.

                                  GPDC is based on a Gaussian process (GP) regression and a distance -correlation test on the residuals 2. GP is estimated with gpytorch. +correlation test on the residuals [2]. GP is estimated with gpytorch. The distance correlation test is implemented with the dcor package available from pip. Here the null distribution is not analytically available, but can be precomputed with the function generate_and_save_nulldists(…) which saves a @@ -1927,7 +1926,7 @@

                                  Notes

                                  GPDC is based on a Gaussian process (GP) regression and a distance correlation test on the residuals. Distance correlation is described in -2. To test X \perp Y | Z, first Z is regressed out from +[2]. To test X \perp Y | Z, first Z is regressed out from X and Y assuming the model

                                  X & =  f_X(Z) + \epsilon_{X} \\
@@ -1941,7 +1940,7 @@ <h1><code class=

                                  The null distribution of the distance correlation should be pre-computed. Otherwise it is computed during runtime.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • null_dist_filename (str, otional (default: None)) – Path to file containing null distribution.

                                  • **kwargs – Arguments passed on to parent class GaussProcRegTorch.

                                  • @@ -1958,7 +1957,7 @@

                                    self.null_dist_filename.npz. Also adds the null distributions to self.gauss_pr.null_dists.

                                    -
                                    Parameters
                                    +
                                    Parameters:
                                    • sample_sizes (list) – List of sample sizes.

                                    • null_dist_filename (str) – Name to save file containing null distributions.

                                    • @@ -1976,17 +1975,17 @@

                                      available in class and generates self.sig_samples random samples. Adds the null distributions to self.gauss_pr.null_dists.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • df (int) – Degrees of freedom / sample size to generate null distribution for.

                                      • add_to_null_dists (bool, optional (default: True)) – Whether to add the null dist to the dictionary of null dists or just return it.

                                      -
                                      Returns
                                      +
                                      Returns:

                                      null_dist – Only returned,if add_to_null_dists is False.

                                      -
                                      Return type
                                      +
                                      Return type:

                                      array of shape [df,]

                                      @@ -2004,17 +2003,17 @@

                                      is one-sided. If the degrees of freedom are less than 1, numpy.nan is returned.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • value (float) – Test statistic value.

                                      • T (int) – Sample length

                                      • dim (int) – Dimensionality, ie, number of features.

                                      -
                                      Returns
                                      +
                                      Returns:

                                      pval – p-value.

                                      -
                                      Return type
                                      +
                                      Return type:

                                      float or numpy.nan

                                      @@ -2027,16 +2026,16 @@

                                      Estimated as the distance correlation of the residuals of a GP regression.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                      • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                      -
                                      Returns
                                      +
                                      Returns:

                                      val – GPDC test statistic.

                                      -
                                      Return type
                                      +
                                      Return type:

                                      float

                                      @@ -2050,7 +2049,7 @@

                                      log marginal likelihood as a model selection score. Is used to determine optimal hyperparameters in PCMCI, in particular the pc_alpha value.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • j (int) – Index of target variable in data array.

                                      • parents (list) – List of form [(0, -1), (3, -2), …] containing parents.

                                      • @@ -2069,17 +2068,17 @@

                                        Returns p-value for shuffle significance test.

                                        For residual-based test statistics only the residuals are shuffled.

                                        -
                                        Parameters
                                        +
                                        Parameters:
                                        • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                        • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                        • value (number) – Value of test statistic for unshuffled estimate.

                                        -
                                        Returns
                                        +
                                        Returns:

                                        pval – p-value

                                        -
                                        Return type
                                        +
                                        Return type:

                                        float

                                        @@ -2103,7 +2102,7 @@

                                        joint density. The test here is based on the estimator in S. Frenzel and B. Pompe, Phys. Rev. Lett. 99, 204101 (2007), combined with a shuffle test to generate the distribution under the null hypothesis of independence first -used in 3. The knn-estimator is suitable only for variables taking a +used in [3]. The knn-estimator is suitable only for variables taking a continuous range of values. For discrete variables use the CMIsymb class.

                                        Notes

                                        CMI is given by

                                        @@ -2127,17 +2126,16 @@

                                        negative quantity.

                                        This method requires the scipy.spatial.cKDTree package.

                                        References

                                        -
                                        -
                                        3
                                        -

                                        J. Runge (2018): Conditional Independence Testing Based on a +

                                        -
                                        +
                                        -
                                        Parameters
                                        +
                                        Parameters:
                                        • knn (int or float, optional (default: 0.2)) – Number of nearest-neighbors which determines the size of hyper-cubes around each (high-dimensional) sample point. If smaller than 1, this is @@ -2162,17 +2160,17 @@

                                          get_conditional_entropy(array, xyz)[source]¶

                                          Returns the nearest-neighbor conditional entropy estimate of H(X|Y).

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • array (array-like) – data array with X, Y in rows and observations in columns

                                          • xyz (array of ints) – XYZ identifier array of shape (dim,). Here only uses 0 for X and 1 for Y.

                                          -
                                          Returns
                                          +
                                          Returns:

                                          val – Entropy estimate.

                                          -
                                          Return type
                                          +
                                          Return type:

                                          float

                                          @@ -2183,16 +2181,16 @@

                                          get_dependence_measure(array, xyz)[source]¶

                                          Returns CMI estimate as described in Frenzel and Pompe PRL (2007).

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                          • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                          -
                                          Returns
                                          +
                                          Returns:

                                          val – Conditional mutual information estimate.

                                          -
                                          Return type
                                          +
                                          Return type:

                                          float

                                          @@ -2209,17 +2207,17 @@

                                          z_j is among the nearest niehgbors of z_i. If Z is empty, the block-shuffle test is used.

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                          • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                          • value (number) – Value of test statistic for unshuffled estimate.

                                          -
                                          Returns
                                          +
                                          Returns:

                                          pval – p-value

                                          -
                                          Return type
                                          +
                                          Return type:

                                          float

                                          @@ -2252,7 +2250,7 @@

                                          I(X;Y|Z) &= \sum p(z)  \sum \sum  p(x,y|z) \log
 \frac{ p(x,y |z)}{p(x|z)\cdot p(y |z)} \,dx dy dz

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • n_symbs (int, optional (default: None)) – Number of symbols in input data. Should be at least as large as the maximum array entry + 1. If None, n_symbs is based on the @@ -2270,16 +2268,16 @@

                                            get_dependence_measure(array, xyz)[source]¶

                                            Returns CMI estimate based on bincount histogram.

                                            -
                                            Parameters
                                            +
                                            Parameters:
                                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                            -
                                            Returns
                                            +
                                            Returns:

                                            val – Conditional mutual information estimate.

                                            -
                                            Return type
                                            +
                                            Return type:

                                            float

                                            @@ -2291,17 +2289,17 @@

                                            Returns p-value for shuffle significance test.

                                            For residual-based test statistics only the residuals are shuffled.

                                            -
                                            Parameters
                                            +
                                            Parameters:
                                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                            • value (number) – Value of test statistic for unshuffled estimate.

                                            -
                                            Returns
                                            +
                                            Returns:

                                            pval – p-value

                                            -
                                            Return type
                                            +
                                            Return type:

                                            float

                                            @@ -2324,7 +2322,7 @@

                                            Class can be used just like a Tigramite conditional independence class (e.g., ParCorr). The main use is for unit testing of PCMCI methods.

                                            -
                                            Parameters
                                            +
                                            Parameters:
                                            • graph (array of shape [N, N, tau_max+1]) – Causal graph.

                                            • links (dict) – Dictionary of form {0:[(0, -1), …], 1:[…], …}. @@ -2358,7 +2356,7 @@

                                              and makes available the ancestors up to max_lag of X, Y, Z. This may take a very long time, however.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • X (list of tuples) – List of variables chosen for testing paths.

                                              • Y (list of tuples) – List of variables chosen for testing paths.

                                              • @@ -2372,10 +2370,10 @@

                                              • ends_with ({None, 'tail', 'arrohead'}) – Whether to only consider paths ending with particular mark at Y.

                                              -
                                              Returns
                                              +
                                              Returns:

                                              path – Returns path or False if no path exists.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              list or False

                                              @@ -2386,7 +2384,7 @@

                                              get_confidence(X, Y, Z=None, tau_max=0)[source]¶

                                              For compatibility with PCMCI.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              None

                                              @@ -2419,7 +2417,7 @@

                                              Returns dependence measure.

                                              Returns 0 if X and Y are d-separated given Z in the graph and 1 else.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index in the observed_vars and tau the time lag.

                                              • @@ -2431,10 +2429,10 @@

                                                different lags in X, Z, all have the same sample size.

                                              -
                                              Returns
                                              +
                                              Returns:

                                              val – The test statistic value.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              float

                                              @@ -2459,7 +2457,7 @@

                                              Perform oracle conditional independence test.

                                              Calls the d-separation function.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index in the observed_vars and tau the time lag.

                                              • @@ -2471,10 +2469,10 @@

                                              • cut_off ({'2xtau_max', 'max_lag', 'max_lag_or_tau_max'}) – Not used here.

                                              -
                                              Returns
                                              +
                                              Returns:

                                              val, pval – The test statistic value and the p-value.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              Tuple of floats

                                              @@ -2504,7 +2502,7 @@

                                              can be used. Currently only a test for zero correlation on the maximum of the residuals’ correlation is performed.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • correlation_type ({'max_corr'}) – Which dependency measure to use on residuals.

                                              • **kwargs – Arguments passed on to Parent class CondIndTest.

                                              • @@ -2525,17 +2523,17 @@

                                                If the degrees of freedom are less than 1, numpy.nan is returned.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • value (float) – Test statistic value.

                                                • T (int) – Sample length

                                                • dim (int) – Dimensionality, ie, number of features.

                                                -
                                                Returns
                                                +
                                                Returns:

                                                pval – P-value.

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float or numpy.nan

                                                @@ -2548,16 +2546,16 @@

                                                Estimated as some dependency measure on the residuals of a linear OLS regression.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                                -
                                                Returns
                                                +
                                                Returns:

                                                val – Partial correlation coefficient.

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float

                                                @@ -2576,17 +2574,17 @@

                                                Returns p-value for shuffle significance test.

                                                For residual-based test statistics only the residuals are shuffled.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                                • value (number) – Value of test statistic for unshuffled estimate.

                                                -
                                                Returns
                                                +
                                                Returns:

                                                pval – p-value

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float

                                                @@ -2603,7 +2601,7 @@

                                                mult_corr(array, xyz, standardize=True)[source]¶

                                                Return multivariate dependency measure.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • array (array-like) – data array with X, Y in rows and observations in columns

                                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                                • @@ -2611,10 +2609,10 @@

                                                  partial correlation.

                                                -
                                                Returns
                                                +
                                                Returns:

                                                val – Multivariate dependency measure.

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float

                                                @@ -2624,7 +2622,7 @@

                          -

                          tigramite.causal_effects: Causal Effect analysis¶

                          +

                          tigramite.causal_effects: Causal Effect analysis¶

                          class tigramite.causal_effects.CausalEffects(graph, graph_type, X, Y, S=None, hidden_variables=None, check_SM_overlap=True, verbosity=0)[source]¶
                          @@ -2637,20 +2635,19 @@

                          linear case without hidden variables also an efficient estimation based on Wright’s path coefficients is available. This estimator also allows to estimate mediation effects.

                          -

                          See the corresponding paper 6 and tigramite tutorial for an +

                          See the corresponding paper [6] and tigramite tutorial for an in-depth introduction.

                          References

                          -
                          -
                          6
                          -

                          J. Runge, Necessary and sufficient graphical conditions for +

                          -
                          +
                          -
                          Parameters
                          +
                          Parameters:
                          • graph (array of either shape [N, N], [N, N, tau_max+1], or [N, N, tau_max+1, tau_max+1]) – Different graph types are supported, see tutorial.

                          • X (list of tuples) – List of tuples [(i, -tau), …] containing cause variables.

                          • @@ -2669,10 +2666,10 @@

                            check_XYS_paths()[source]¶

                            Check whether one can remove nodes from X and Y with no proper causal paths.

                            -
                            Returns
                            +
                            Returns:

                            X, Y

                            -
                            Return type
                            +
                            Return type:

                            cleaned lists of X and Y with irrelevant nodes removed.

                            @@ -2683,10 +2680,10 @@

                            check_optimality()[source]¶

                            Check whether optimal adjustment set exists according to Thm. 3 in Runge NeurIPS 2021.

                            -
                            Returns
                            +
                            Returns:

                            optimality – Returns True if an optimal adjustment set exists, otherwise False.

                            -
                            Return type
                            +
                            Return type:

                            bool

                            @@ -2703,7 +2700,7 @@

                            This function fits the models, predict_bootstrap_of can then be used to get confidence intervals for the effect of interventions.

                            -
                            Parameters
                            +
                            Parameters:
                            • method (str) – Chosen method among valid functions in this class.

                            • method_args (dict) – Arguments passed to method.

                            • @@ -2723,7 +2720,7 @@

                            -
                            Parameters
                            +
                            Parameters:
                            • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -2754,7 +2751,7 @@

                            -
                            Parameters
                            +
                            Parameters:
                            • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -2782,17 +2779,17 @@

                              static get_graph_from_dict(links, tau_max=None)[source]¶

                              Helper function to convert dictionary of links to graph array format.

                              -
                              Parameters
                              +
                              Parameters:
                              • links (dict) – Dictionary of form {0:[((0, -1), coeff, func), …], 1:[…], …}. Also format {0:[(0, -1), …], 1:[…], …} is allowed.

                              • tau_max (int or None) – Maximum lag. If None, the maximum lag in links is used.

                              -
                              Returns
                              +
                              Returns:

                              graph – Matrix format of graph with 1 for true links and 0 else.

                              -
                              Return type
                              +
                              Return type:

                              array of shape (N, N, tau_max+1)

                              @@ -2803,16 +2800,16 @@

                              get_mediators(start, end)[source]¶

                              Returns mediator variables on proper causal paths.

                              -
                              Parameters
                              +
                              Parameters:
                              • start (set) – Set of start nodes.

                              • end (set) – Set of end nodes.

                              -
                              Returns
                              +
                              Returns:

                              mediators – Mediators on causal paths from start to end.

                              -
                              Return type
                              +
                              Return type:

                              set

                              @@ -2824,7 +2821,7 @@

                              Returns optimal adjustment set.

                              See Runge NeurIPS 2021.

                              -
                              Parameters
                              +
                              Parameters:
                              • alternative_conditions (set of tuples) – Used only internally in optimality theorem. If None, self.S is used.

                              • minimize ({False, True, 'colliders_only'}) – Minimize optimal set. If True, minimize such that no subset @@ -2833,10 +2830,10 @@

                              • return_separate_sets (bool) – Whether to return tuple of parents, colliders, collider_parents, and S.

                              -
                              Returns
                              +
                              Returns:

                              Oset_S – Returns optimal adjustment set if a valid set exists, otherwise False.

                              -
                              Return type
                              +
                              Return type:

                              False or list or tuple of lists

                              @@ -2849,7 +2846,7 @@

                              To be used after fitting with fit_bootstrap_of. Only uses the expected values of the predict function, not potential other output.

                              -
                              Parameters
                              +
                              Parameters:
                              • method (str) – Chosen method among valid functions in this class.

                              • method_args (dict) – Arguments passed to method.

                              • @@ -2857,10 +2854,10 @@

                              • return_individual_bootstrap_results (bool) – Returns the individual bootstrap predictions.

                              -
                              Returns
                              +
                              Returns:

                              confidence_intervals

                              -
                              Return type
                              +
                              Return type:

                              numpy array of

                              @@ -2872,7 +2869,7 @@

                              Predict effect of intervention with fitted model.

                              Uses the model.predict() function of the sklearn model.

                              -
                              Parameters
                              +
                              Parameters:
                              • intervention_data (numpy array) – Numpy array of shape (time, len(X)) that contains the do(X) values.

                              • conditions_data (data object, optional) – Numpy array of shape (time, len(S)) that contains the S=s values.

                              • @@ -2881,7 +2878,7 @@

                                the entire results can be returned.

                              -
                              Returns
                              +
                              Returns:

                              • Results from prediction (an array of shape (time, len(Y)).)

                              • If estimate_confidence = True, then a tuple is returned.

                              • @@ -2896,16 +2893,16 @@

                                predict_wright_effect(intervention_data, pred_params=None)[source]¶

                                Predict linear effect of intervention with fitted Wright-model.

                                -
                                Parameters
                                +
                                Parameters:
                                • intervention_data (numpy array) – Numpy array of shape (time, len(X)) that contains the do(X) values.

                                • pred_params (dict, optional) – Optional parameters passed on to sklearn prediction function.

                                -
                                Returns
                                +
                                Returns:

                                Results from prediction

                                -
                                Return type
                                +
                                Return type:

                                an array of shape (time, len(Y)).

                                @@ -2915,7 +2912,7 @@

                          -

                          tigramite.models: Time series modeling, mediation, and prediction¶

                          +

                          tigramite.models: Time series modeling, mediation, and prediction¶

                          Base class:

                          @@ -2924,7 +2921,7 @@

                          Allows to fit any model from sklearn to the parents of a target variable. Also takes care of missing values, masking and preprocessing.

                          -
                          Parameters
                          +
                          Parameters:
                          • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -2950,11 +2947,11 @@

                            Returns dictionary of coefficients for linear models.

                            Only for models from sklearn.linear_model

                            -
                            Returns
                            +
                            Returns:

                            coeffs – Dictionary of dictionaries for each variable with keys given by the parents and the regression coefficients as values.

                            -
                            Return type
                            +
                            Return type:

                            dictionary

                            @@ -2968,7 +2965,7 @@

                            with y given by the target variable, and X given by its parents. The fitted model class is returned for later use.

                            -
                            Parameters
                            +
                            Parameters:
                            • all_parents (dictionary) – Dictionary of form {0:[(0, -1), (3, 0), …], 1:[], …} containing the parents estimated with PCMCI.

                            • @@ -2984,11 +2981,11 @@

                            • return_data (bool, optional (default: False)) – Whether to save the data array.

                            -
                            Returns
                            +
                            Returns:

                            fit_results – Returns the sklearn model after fitting. Also returns the data transformation parameters.

                            -
                            Return type
                            +
                            Return type:

                            dictionary of sklearn model objects for each variable

                            @@ -3002,7 +2999,7 @@

                            with y given by the target variable, and X given by its parents. The fitted model class is returned for later use.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (lists of tuples) – List of variables for estimating model Y = f(X,Z)

                            • Y (lists of tuples) – List of variables for estimating model Y = f(X,Z)

                            • @@ -3018,11 +3015,11 @@

                            • return_data (bool, optional (default: False)) – Whether to save the data array.

                            -
                            Returns
                            +
                            Returns:

                            fit_results – Returns the sklearn model after fitting. Also returns the data transformation parameters.

                            -
                            Return type
                            +
                            Return type:

                            dictionary of sklearn model objects for each variable

                            @@ -3034,7 +3031,7 @@

                            Predict effect of intervention with fitted model.

                            Uses the model.predict() function of the sklearn model.

                            -
                            Parameters
                            +
                            Parameters:
                            • intervention_data (numpy array) – Numpy array of shape (time, len(X)) that contains the do(X) values.

                            • conditions_data (data object, optional) – Numpy array of shape (time, len(S)) that contains the S=s values.

                            • @@ -3043,7 +3040,7 @@

                              the entire results can be returned.

                            -
                            Return type
                            +
                            Return type:

                            Results from prediction.

                            @@ -3056,10 +3053,10 @@

                            Requires fit_model() before. An entry val_matrix[i,j,tau] gives the coefficient of the link from i to j at lag tau, including tau=0.

                            -
                            Returns
                            +
                            Returns:

                            val_matrix – Array of coefficients for each time lag, including lag-zero.

                            -
                            Return type
                            +
                            Return type:

                            array-like, shape (N, N, tau_max + 1)

                            @@ -3074,12 +3071,12 @@

                            Linear mediation analysis for time series models.

                            Fits linear model to parents and provides functions to return measures such as causal effect, mediated causal effect, average causal effect, etc. as -described in 4.

                            +described in [4].

                            For general nonlinear, lagged and contemporaneous causal effect analysis, use the CausalEffects class.

                            Notes

                            This class implements the following causal mediation measures introduced in -4:

                            +[4]:

                            • causal effect (CE)

                            • @@ -3122,15 +3119,15 @@

                            References

                            -
                            -
                            4(1,2,3)
                            -

                            J. Runge et al. (2015): Identifying causal gateways and mediators in +

                            -
                            +
                            -
                            Parameters
                            +
                            Parameters:
                            • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -3152,10 +3149,10 @@

                              Fit linear time series model.

                              Fits a sklearn.linear_model.LinearRegression model to the parents of each variable and computes the coefficient matrices \Phi and -\Psi as described in 4. Does not accepted +\Psi as described in [4]. Does not accepted contemporaneous links.

                              -
                              Parameters
                              +
                              Parameters:
                              • all_parents (dictionary) – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing the parents estimated with PCMCI.

                              • @@ -3173,7 +3170,7 @@

                                other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only @@ -3182,10 +3179,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                ace – Average Causal Effect.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3199,7 +3196,7 @@

                                from any other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • j (int) – Index of variable.

                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only @@ -3208,10 +3205,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                acs – Average Causal Susceptibility.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3225,7 +3222,7 @@

                                other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only at the lag of maximum absolute causal effect.

                                • @@ -3233,10 +3230,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                ace – Average Causal Effect for each variable.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N,)

                                @@ -3250,7 +3247,7 @@

                                any other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only at the lag of maximum absolute causal effect.

                                • @@ -3258,10 +3255,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                acs – Average Causal Susceptibility.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N,)

                                @@ -3275,7 +3272,7 @@

                                With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only at the lag of maximum absolute causal effect.

                                • @@ -3284,10 +3281,10 @@

                                • exclude_self_effects (bool, optional (default: True)) – Whether to exclude causal self effects of variables on themselves.

                                -
                                Returns
                                +
                                Returns:

                                amce – Average Mediated Causal Effect.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N,)

                                @@ -3301,7 +3298,7 @@

                                With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • k (int) – Index of variable.

                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only @@ -3311,10 +3308,10 @@

                                • exclude_self_effects (bool, optional (default: True)) – Whether to exclude causal self effects of variables on themselves.

                                -
                                Returns
                                +
                                Returns:

                                amce – Average Mediated Causal Effect.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3326,17 +3323,17 @@

                                Returns the causal effect.

                                This is the causal effect for (i, tau) – –> j.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • j (int) – Index of effect variable.

                                -
                                Returns
                                +
                                Returns:

                                ce

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3348,16 +3345,16 @@

                                Returns the causal effect.

                                This is the maximum absolute causal effect for i –> j across all lags.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • j (int) – Index of effect variable.

                                -
                                Returns
                                +
                                Returns:

                                ce

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3369,17 +3366,17 @@

                                Returns link coefficient.

                                This is the direct causal effect for a particular link (i, tau) –> j.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • j (int) – Index of effect variable.

                                -
                                Returns
                                +
                                Returns:

                                coeff

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3392,7 +3389,7 @@

                                This is the causal effect for i –> j minus the causal effect not going through k.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • @@ -3400,10 +3397,10 @@

                                • k (int) – Index of mediator variable.

                                -
                                Returns
                                +
                                Returns:

                                mce

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3419,7 +3416,7 @@

                                path_node_array the MCE values. tsg_path_val_matrix contains the corresponding values in the time series graph format.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • @@ -3427,10 +3424,10 @@

                                • include_neighbors (bool, optional (default: False)) – Whether to include causal paths emanating from neighbors of i

                                -
                                Returns
                                +
                                Returns:

                                graph_data – Dictionary of matrices for coloring mediation graph plots.

                                -
                                Return type
                                +
                                Return type:

                                dictionary

                                @@ -3444,7 +3441,7 @@

                                This matrix can be used for plotting the time series graph and analyzing causal pathways.

                                -
                                Parameters
                                +
                                Parameters:
                                • link_matrix (bool array-like, optional (default: None)) – Matrix of significant links. Must be of same shape as val_matrix. Either sig_thres or link_matrix has to be provided.

                                • @@ -3452,10 +3449,10 @@

                                • include_neighbors (bool, optional (default: False)) – Whether to include causal paths emanating from neighbors of i

                                -
                                Returns
                                +
                                Returns:

                                tsg – Time series graph matrix.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N*tau_max, N*tau_max)

                                @@ -3470,10 +3467,10 @@

                                to zero for LinearMediation, use Models class for contemporaneous models.

                                -
                                Returns
                                +
                                Returns:

                                val_matrix – Matrix of linear coefficients, shape (N, N, tau_max + 1).

                                -
                                Return type
                                +
                                Return type:

                                array

                                @@ -3501,7 +3498,7 @@

                                be estimated using PCMCI. Also takes care of missing values, masking and preprocessing.

                                -
                                Parameters
                                +
                                Parameters:
                                • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -3528,7 +3525,7 @@

                                  by the target variable, and X given by its predictors. The fitted model class is returned for later use.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • target_predictors (dictionary) – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing the predictors estimated with PCMCI.

                                  • @@ -3539,10 +3536,10 @@

                                  • return_data (bool, optional (default: False)) – Whether to save the data array.

                                  -
                                  Returns
                                  +
                                  Returns:

                                  self

                                  -
                                  Return type
                                  +
                                  Return type:

                                  instance of self

                                  @@ -3555,7 +3552,7 @@

                                  Wrapper around PCMCI.run_pc_stable that estimates causal predictors. The lead time can be specified by steps_ahead.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • selected_targets (list of ints, optional (default: None)) – List of variables to estimate predictors of. If None, predictors of all variables are estimated.

                                  • @@ -3575,11 +3572,11 @@

                                    a larger number, such as 10, can be used.

                                  -
                                  Returns
                                  +
                                  Returns:

                                  predictors – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing estimated predictors.

                                  -
                                  Return type
                                  +
                                  Return type:

                                  dict

                                  @@ -3607,7 +3604,7 @@

                                  If the list of integers equals range(N), then an array of shape (T, N) of the predicted series is returned.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • target (int or list of integers) – Index or indices of target variable(s).

                                  • new_data (data object, optional) – New Tigramite dataframe object with optional new mask.

                                  • @@ -3620,7 +3617,7 @@

                                    ‘max_lag’ uses as much samples as possible.

                                  -
                                  Return type
                                  +
                                  Return type:

                                  Results from prediction.

                                  @@ -3630,7 +3627,7 @@

                          -

                          tigramite.data_processing: Data processing functions¶

                          +

                          tigramite.data_processing: Data processing functions¶

                          Tigramite data processing functions.

                          @@ -3638,7 +3635,7 @@

                          Data object containing single or multiple time series arrays and optional mask.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array-like) –

                            if analysis_mode == ‘single’:

                            1) Numpy array of shape (observations T, variables N) @@ -3662,7 +3659,7 @@

                            remove_missing_upto_maxlag=True also flags samples for all lags up to 2*tau_max (more precisely, this depends on the cut_off argument in self.construct_array(), see further below). -This avoids biases, see section on masking in Supplement of 1.

                          • +This avoids biases, see section on masking in Supplement of [1].

                          • var_names (list of strings, optional (default: range(N))) – Names of variables, must match the number of variables. If None is passed, variables are enumerated as [0, 1, …]

                          • datatime (array-like, optional (default: None)) – Timelabel array. If None, range(T) is used.

                          • @@ -3704,7 +3701,7 @@

                            Specifies the data format in which data was given at instantiation. Possible values: ‘2d numpy array’, ‘3d numpy array’, ‘dict’.

                            -
                            Type
                            +
                            Type:

                            string

                            @@ -3734,7 +3731,7 @@

                          -
                          Type
                          +
                          Type:

                          dictionary

                          @@ -3746,7 +3743,7 @@

                          List of the keys identifiying the multiple datasets, i.e., list(self.values.keys())

                          -
                          Type
                          +
                          Type:

                          list

                          @@ -3758,7 +3755,7 @@

                          Mask internally mapped to a dictionary representation in the same way as data is mapped to self.values

                          -
                          Type
                          +
                          Type:

                          dictionary

                          @@ -3786,7 +3783,7 @@

                          self.datatime¶

                          Time axis for each of the multiple datasets.

                          -
                          Type
                          +
                          Type:

                          dictionary

                          @@ -3797,7 +3794,7 @@

                          self.analysis_mode¶

                          Is analysis_mode

                          -
                          Type
                          +
                          Type:

                          string

                          @@ -3814,7 +3811,7 @@

                          -
                          Type
                          +
                          Type:

                          array-like

                          @@ -3830,7 +3827,7 @@

                        -
                        Type
                        +
                        Type:

                        dictionary

                        @@ -3841,7 +3838,7 @@

                        self.M¶

                        Number of datasets

                        -
                        Type
                        +
                        Type:

                        int

                        @@ -3852,7 +3849,7 @@

                        self.N¶

                        Number of variables (constant across datasets)

                        -
                        Type
                        +
                        Type:

                        int

                        @@ -3864,7 +3861,7 @@

                        Dictionary {key(m): T(m), …}, where T(m) is the time length of datasets m and key(m) its identifier as in self.values

                        -
                        Type
                        +
                        Type:

                        dictionary

                        @@ -3877,7 +3874,7 @@

                        time step relative to the shared time axis for which at least one observation exists in the dataset.

                        -
                        Type
                        +
                        Type:

                        int

                        @@ -3889,7 +3886,7 @@

                        Whether to use bootstrap. Must be a dictionary with keys random_state, boot_samples, and boot_blocklength.

                        -
                        Type
                        +
                        Type:

                        dictionary

                        @@ -3903,7 +3900,7 @@

                        time series length and N the number of variables, and of (n_ens, T, N) if analysis_mode == ‘multiple’.

                        -
                        Parameters
                        +
                        Parameters:
                        • X (list of tuples) – For a dependence measure I(X;Y|Z), X, Y, Z can be multivariate of the form [(var1, -lag), (var2, -lag), …]. At least one varlag in Y @@ -3992,14 +3989,14 @@

                        • verbosity (int, optional (default: 0)) – Level of verbosity.

                        -
                        Returns
                        +
                        Returns:

                        array, xyz [,XYZ] – xyz identifier array of shape (dim,) identifying which row in array corresponds to X, Y, and Z. For example:: X = [(0, -1)], Y = [(1, 0)], Z = [(1, -1), (0, -2)] yields an array of shape (4, n_samples) and xyz is xyz = numpy.array([0,1,2,2]). If return_cleaned_xyz is True, also outputs the cleaned XYZ lists.

                        -
                        Return type
                        +
                        Return type:

                        Tuple of data array of shape (dim, n_samples) and

                        @@ -4010,7 +4007,7 @@

                        print_array_info(array, X, Y, Z, missing_flag, mask_type, extraZ=None)[source]¶

                        Print info about the constructed array

                        -
                        Parameters
                        +
                        Parameters:
                        • array (Data array of shape (dim, T)) – Data array.

                        • X (list of tuples) – For a dependence measure I(X;Y|Z), Y is of the form [(varY, 0)], @@ -4032,7 +4029,7 @@

                        • missing_flag (number, optional (default: None)) – Flag for missing values. Dismisses all time slices of samples where missing values occur in any variable and also flags samples for all lags up to 2*tau_max. This avoids biases, see section on masking in -Supplement of 1.

                        • +Supplement of [1].

                        • mask_type ({'y','x','z','xy','xz','yz','xyz'}) – Masking mode: Indicators for which variables in the dependence measure I(X; Y | Z) the samples should be masked. If None, the mask is not used. Explained in tutorial on masking and missing values.

                        • @@ -4050,17 +4047,17 @@

                          This function applies a linear filter twice, once forward and once backwards. The combined filter has linear phase.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • cutperiod (int) – Period of cutoff.

                          • pass_periods (str, optional (default: 'low')) – Either ‘low’ or ‘high’ to act as a low- or high-pass filter

                          -
                          Returns
                          +
                          Returns:

                          data – Filtered data array.

                          -
                          Return type
                          +
                          Return type:

                          array

                          @@ -4078,7 +4075,7 @@

                          a coupling measure of time series. Phys. Rev. E, 83(5), 1-12. doi:10.1103/PhysRevE.83.051122

                          -
                          Parameters
                          +
                          Parameters:
                          • array (array-like) – Data array of shape (time, variables).

                          • array_mask (bool array) – Data mask where True labels masked samples.

                          • @@ -4088,10 +4085,10 @@

                          • verbosity (int, optional (default: 0)) – Level of verbosity.

                          -
                          Returns
                          +
                          Returns:

                          patt, patt_mask [, patt_time] – Tuple of converted pattern array and new length

                          -
                          Return type
                          +
                          Return type:

                          tuple of arrays

                          @@ -4102,16 +4099,16 @@

                          tigramite.data_processing.quantile_bin_array(data, bins=6)[source]¶

                          Returns symbolified array with equal-quantile binning.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • bins (int, optional (default: 6)) – Number of bins.

                          -
                          Returns
                          +
                          Returns:

                          symb_array – Converted data of integer type.

                          -
                          Return type
                          +
                          Return type:

                          array

                          @@ -4128,7 +4125,7 @@

                          :rtype: array :returns: smoothed/residual data

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • smooth_width (float) – Window width of smoothing, 2*sigma for a gaussian.

                          • @@ -4137,10 +4134,10 @@

                          • residuals (bool, optional (default: False)) – True if residuals should be returned instead of smoothed data.

                          -
                          Returns
                          +
                          Returns:

                          data – Smoothed/residual data.

                          -
                          Return type
                          +
                          Return type:

                          array-like

                          @@ -4159,17 +4156,17 @@

                          tigramite.data_processing.time_bin_with_mask(data, time_bin_length, mask=None)[source]¶

                          Returns time binned data where only about non-masked values is averaged.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • time_bin_length (int) – Length of time bin.

                          • mask (bool array, optional (default: None)) – Data mask where True labels masked samples.

                          -
                          Returns
                          +
                          Returns:

                          (bindata, T) – Tuple of time-binned data array and new length of array.

                          -
                          Return type
                          +
                          Return type:

                          tuple of array and int

                          @@ -4188,17 +4185,17 @@

                          tigramite.data_processing.weighted_avg_and_std(values, axis, weights)[source]¶

                          Returns the weighted average and standard deviation.

                          -
                          Parameters
                          +
                          Parameters:
                          • values (array) – Data array of shape (time, variables).

                          • axis (int) – Axis to average/std about

                          • weights (array) – Weight array of shape (time, variables).

                          -
                          Returns
                          +
                          Returns:

                          (average, std) – Tuple of weighted average and standard deviation along axis.

                          -
                          Return type
                          +
                          Return type:

                          tuple of arrays

                          @@ -4206,20 +4203,20 @@

                          -

                          tigramite.toymodels: Toy model generators¶

                          +

                          tigramite.toymodels: Toy model generators¶

                          Tigramite toymodels.

                          Helper function to convert DAG graph to dictionary of parents.

                          -
                          Parameters
                          +
                          Parameters:

                          dag (array of shape (N, N, tau_max+1)) – Matrix format of graph in string format. Must be DAG.

                          -
                          Returns
                          +
                          Returns:

                          parents – Dictionary of form {0:[(0, -1), …], 1:[…], …}.

                          -
                          Return type
                          +
                          Return type:

                          dict

                          @@ -4230,17 +4227,17 @@

                          tigramite.toymodels.structural_causal_processes.links_to_graph(links, tau_max=None)[source]¶

                          Helper function to convert dictionary of links to graph array format.

                          -
                          Parameters
                          +
                          Parameters:
                          • links (dict) – Dictionary of form {0:[((0, -1), coeff, func), …], 1:[…], …}. Also format {0:[(0, -1), …], 1:[…], …} is allowed.

                          • tau_max (int or None) – Maximum lag. If None, the maximum lag in links is used.

                          -
                          Returns
                          +
                          Returns:

                          graph – Matrix format of graph with 1 for true links and 0 else.

                          -
                          Return type
                          +
                          Return type:

                          array of shape (N, N, tau_max+1)

                          @@ -4266,7 +4263,7 @@

                          Through the parameters intervention and intervention_type the model can also be generated with intervened variables.

                          -
                          Parameters
                          +
                          Parameters:
                          • links (dict) – Dictionary of format: {0:[((i, -tau), coeff, func),…], 1:[…], …} for all variables where i must be in [0..N-1] and tau >= 0 with @@ -4287,7 +4284,7 @@

                          • seed (int, optional (default: None)) – Random seed.

                          -
                          Returns
                          +
                          Returns:

                          • data (array-like) – Data generated from this process, shape (T, N).

                          • nonstationary (bool) – Indicates whether data has NaNs or infinities.

                          • @@ -4303,7 +4300,7 @@

                            Returns a vector-autoregressive process with correlated innovations.

                            Wrapper around var_network with possibly more user-friendly input options.

                            -
                            Parameters
                            +
                            Parameters:
                            • parents_neighbors_coeffs (dict) – Dictionary of format: {…, j:[((var1, lag1), coef1), ((var2, lag2), coef2), …], …} for all variables where vars must be in [0..N-1] @@ -4319,7 +4316,7 @@

                            • initial_values (array, optional (default: None)) – Initial values for each node. Shape must be (N, max_delay+1)

                            -
                            Returns
                            +
                            Returns:

                            • data (array-like) – Data generated from this process

                            • true_parent_neighbor (dict) – Dictionary of lists of tuples. The dictionary is keyed by node ID, the @@ -4332,10 +4329,10 @@

                          -

                          tigramite.plotting: Plotting functions¶

                          +

                          tigramite.plotting: Plotting functions¶

                          -

                          Indices and tables¶

                          +

                          Indices and tables¶

                          • Index

                          • Module Index

                          • @@ -4382,7 +4379,7 @@

                            Quick search

                            - +
                            @@ -4402,7 +4399,7 @@

                            Navigation

                            \ No newline at end of file diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html index 54004923..dace0e45 100644 --- a/docs/_build/html/py-modindex.html +++ b/docs/_build/html/py-modindex.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -82,7 +83,7 @@

                            Quick search

                            - +
                            @@ -102,7 +103,7 @@

                            Navigation

                            \ No newline at end of file diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html index 75f4f7a2..daba3322 100644 --- a/docs/_build/html/search.html +++ b/docs/_build/html/search.html @@ -1,7 +1,7 @@ - + @@ -12,6 +12,7 @@ + @@ -96,7 +97,7 @@

                            Navigation

                            \ No newline at end of file diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 10c145e8..6373c81d 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst"],objects:{"tigramite.causal_effects":[[0,0,1,"","CausalEffects"]],"tigramite.causal_effects.CausalEffects":[[0,1,1,"","check_XYS_paths"],[0,1,1,"","check_optimality"],[0,1,1,"","fit_bootstrap_of"],[0,1,1,"","fit_total_effect"],[0,1,1,"","fit_wright_effect"],[0,1,1,"","get_graph_from_dict"],[0,1,1,"","get_mediators"],[0,1,1,"","get_optimal_set"],[0,1,1,"","predict_bootstrap_of"],[0,1,1,"","predict_total_effect"],[0,1,1,"","predict_wright_effect"]],"tigramite.data_processing":[[0,0,1,"","DataFrame"],[0,4,1,"","lowhighpass_filter"],[0,4,1,"","ordinal_patt_array"],[0,4,1,"","quantile_bin_array"],[0,4,1,"","smooth"],[0,4,1,"","structural_causal_process"],[0,4,1,"","time_bin_with_mask"],[0,4,1,"","var_process"],[0,4,1,"","weighted_avg_and_std"]],"tigramite.data_processing.DataFrame":[[0,1,1,"","construct_array"],[0,1,1,"","print_array_info"]],"tigramite.data_processing.DataFrame.self":[[0,3,1,"","M"],[0,3,1,"","N"],[0,3,1,"","T"],[0,3,1,"","_initialized_from"],[0,3,1,"","analysis_mode"],[0,3,1,"","bootstrap"],[0,3,1,"","datasets"],[0,3,1,"","datatime"],[0,3,1,"","largest_time_step"],[0,3,1,"","mask"],[0,3,1,"","missing_flag"],[0,3,1,"","reference_points"],[0,3,1,"","time_offsets"],[0,3,1,"","values"],[0,3,1,"","var_names"]],"tigramite.independence_tests":[[0,0,1,"","CMIknn"],[0,0,1,"","CMIsymb"],[0,0,1,"","CondIndTest"],[0,0,1,"","GPDC"],[0,0,1,"","GPDCtorch"],[0,0,1,"","OracleCI"],[0,0,1,"","ParCorr"],[0,0,1,"","ParCorrMult"]],"tigramite.independence_tests.CMIknn":[[0,1,1,"","get_conditional_entropy"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.CMIsymb":[[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.CondIndTest":[[0,1,1,"","get_analytic_confidence"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_bootstrap_confidence"],[0,1,1,"","get_confidence"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_fixed_thres_significance"],[0,1,1,"","get_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,1,1,"","get_significance"],[0,5,1,"","measure"],[0,1,1,"","print_info"],[0,1,1,"","run_test"],[0,1,1,"","run_test_raw"],[0,1,1,"","set_dataframe"],[0,1,1,"","set_mask_type"]],"tigramite.independence_tests.GPDC":[[0,1,1,"","generate_and_save_nulldists"],[0,1,1,"","generate_nulldist"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.GPDCtorch":[[0,1,1,"","generate_and_save_nulldists"],[0,1,1,"","generate_nulldist"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.OracleCI":[[0,1,1,"","check_shortest_path"],[0,1,1,"","get_confidence"],[0,1,1,"","get_graph_from_links"],[0,1,1,"","get_links_from_graph"],[0,1,1,"","get_measure"],[0,1,1,"","get_model_selection_criterion"],[0,5,1,"","measure"],[0,1,1,"","run_test"],[0,1,1,"","set_dataframe"]],"tigramite.independence_tests.ParCorr":[[0,1,1,"","get_analytic_confidence"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.ParCorrMult":[[0,1,1,"","get_analytic_confidence"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"],[0,1,1,"","mult_corr"]],"tigramite.lpcmci":[[0,0,1,"","LPCMCI"]],"tigramite.lpcmci.LPCMCI":[[0,1,1,"","run_lpcmci"]],"tigramite.models":[[0,0,1,"","LinearMediation"],[0,0,1,"","Models"],[0,0,1,"","Prediction"]],"tigramite.models.LinearMediation":[[0,1,1,"","fit_model"],[0,1,1,"","get_ace"],[0,1,1,"","get_acs"],[0,1,1,"","get_all_ace"],[0,1,1,"","get_all_acs"],[0,1,1,"","get_all_amce"],[0,1,1,"","get_amce"],[0,1,1,"","get_ce"],[0,1,1,"","get_ce_max"],[0,1,1,"","get_coeff"],[0,1,1,"","get_mce"],[0,1,1,"","get_mediation_graph_data"],[0,1,1,"","get_tsg"],[0,1,1,"","get_val_matrix"],[0,1,1,"","net_to_tsg"],[0,1,1,"","tsg_to_net"]],"tigramite.models.Models":[[0,1,1,"","get_coefs"],[0,1,1,"","get_fit"],[0,1,1,"","get_general_fitted_model"],[0,1,1,"","get_general_prediction"],[0,1,1,"","get_val_matrix"]],"tigramite.models.Prediction":[[0,1,1,"","fit"],[0,1,1,"","get_predictors"],[0,1,1,"","get_test_array"],[0,1,1,"","get_train_array"],[0,1,1,"","predict"]],"tigramite.pcmci":[[0,0,1,"","PCMCI"]],"tigramite.pcmci.PCMCI":[[0,3,1,"","N"],[0,3,1,"","T"],[0,3,1,"","all_parents"],[0,1,1,"","convert_to_string_graph"],[0,1,1,"","get_corrected_pvalues"],[0,1,1,"","get_graph_from_pmatrix"],[0,1,1,"","get_lagged_dependencies"],[0,3,1,"","iterations"],[0,1,1,"","print_results"],[0,1,1,"","print_significant_links"],[0,3,1,"","pval_max"],[0,1,1,"","return_parents_dict"],[0,1,1,"","return_significant_links"],[0,1,1,"","run_bivci"],[0,1,1,"","run_fullci"],[0,1,1,"","run_mci"],[0,1,1,"","run_pc_stable"],[0,1,1,"","run_pcalg"],[0,1,1,"","run_pcalg_non_timeseries_data"],[0,1,1,"","run_pcmci"],[0,1,1,"","run_pcmciplus"],[0,1,1,"","run_sliding_window_of"],[0,1,1,"","symmetrize_p_and_val_matrix"],[0,3,1,"","val_min"]],"tigramite.toymodels":[[0,2,0,"-","structural_causal_processes"]],"tigramite.toymodels.structural_causal_processes":[[0,4,1,"","dag_to_links"],[0,4,1,"","links_to_graph"],[0,4,1,"","structural_causal_process"],[0,4,1,"","var_process"]],tigramite:[[0,2,0,"-","data_processing"]]},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","module","Python module"],"3":["py","attribute","Python attribute"],"4":["py","function","Python function"],"5":["py","property","Python property"]},objtypes:{"0":"py:class","1":"py:method","2":"py:module","3":"py:attribute","4":"py:function","5":"py:property"},terms:{"0":0,"00000":0,"001":0,"005":0,"01":0,"019":0,"025":0,"05":0,"051122":0,"062829":0,"075310":0,"0803":0,"1":0,"10":0,"100":0,"1000":0,"10105":0,"1038":0,"1063":0,"11":0,"1103":0,"12":0,"12532404":0,"18":0,"1d":0,"2":0,"2002":0,"2007":0,"2009":0,"2011":0,"2015":0,"2018":0,"2019":0,"2020":0,"2021":0,"204101":0,"21st":0,"22":0,"24365041":0,"25":0,"250648072987":0,"25718002":0,"28":0,"2d":0,"2xtau_max":0,"2xtau_max_futur":0,"3":0,"33":0,"34":0,"36897445":0,"36th":0,"37":0,"38250406":0,"3d":0,"4":0,"4101":0,"42":0,"447":0,"449":0,"466":0,"486":0,"499":0,"5":0,"5025050":0,"524":0,"579_main_pap":0,"588":0,"599":0,"6":0,"602":0,"606":0,"618":0,"62829":0,"676":0,"7":0,"8":0,"83":0,"8485ae387a981d783f8764e508151cd9":0,"8502":0,"9":0,"92":0,"94e70705efae423efda1088614128d0b":0,"95":0,"99":0,"abstract":0,"boolean":0,"break":0,"case":0,"class":0,"default":0,"do":0,"float":0,"import":0,"int":0,"long":0,"new":0,"null":0,"return":0,"static":0,"transient":0,"true":0,"var":0,"while":0,A:0,As:0,At:0,For:0,If:0,In:0,Is:0,It:0,Its:0,Not:0,OR:0,TO:[],The:0,Then:0,There:0,These:0,To:0,Will:0,With:0,_:0,_get_single_residu:0,_initialized_from:0,_run_ancestral_removal_phas:0,_run_dsep_removal_phas:0,_run_non_ancestral_removal_phas:0,_t:0,ab:0,about:0,abov:0,absent:0,absmax:0,absolut:0,ac:0,accept:0,accord:0,account:0,across:0,act:0,actual:0,ad:0,adapt:0,add:0,add_to_null_dist:0,addit:0,address:0,adj:0,adjac:0,adjust:0,adjustment_set:0,admg:0,adv:0,advanc:0,affect:0,after:0,again:0,agre:0,ahead:0,aic:0,aip:0,akaik:0,al:0,algorithm:0,align:0,all:0,all_lag:0,all_par:0,all_result:0,allow:0,along:0,alpha:0,alpha_level:0,alreadi:0,also:0,altern:0,alternative_condit:0,although:0,alwai:0,ambigu:0,ambiguous_tripl:0,amc:0,among:0,an:0,analysis_mod:0,analyt:0,analyz:0,anc_all_i:0,anc_all_x:0,anc_all_z:0,ancestor:0,ancestr:0,ani:0,anoth:0,apds_t:0,appli:0,applic:0,appropri:0,apr:0,ar:0,arbitrari:0,argument:0,around:0,arrai:0,array_lik:0,array_mask:0,arrohead:0,articl:0,artifici:0,arxiv:0,assess:0,assign:0,associ:0,assum:0,assumpt:0,ast:0,asymptot:0,attribut:0,au_i:0,au_j:0,auai:0,auto_first:0,autocorrel:0,autocovari:0,autodepend:0,automat:0,autoregress:0,avail:0,averag:0,avoid:0,axi:0,b:0,backdoor:0,backward:0,bakirov:0,bandwidth:0,base:0,been:0,befor:0,beforehand:0,begin:0,being:0,below:0,benjamini:0,best:0,beta_i:0,beta_x:0,better:0,between:0,bia:0,bias:0,bigger:0,bin:0,bincount:0,bindata:0,bivci:0,block:0,blue:0,bold:0,bool:0,boot_blocklength:0,boot_sampl:0,bootsrap:0,bootstrap:0,both:0,bound:0,box:0,breadth:0,break_once_separ:0,briefli:0,butterworth:0,c:0,call:0,callabl:0,can:0,canada:0,canon:0,cardin:0,care:0,caus:0,causaleffect:0,cc:0,cdot:0,ce:0,certain:0,chain:0,chao:0,check:0,check_optim:0,check_optimality_cond:0,check_shortest_path:0,check_sm_overlap:0,check_xys_path:0,child:0,choic:0,chosen:0,ci:0,cite:0,ckdtree:0,clash:0,clean:0,cmi:0,cmiknn:0,cmisymb:0,coef1:0,coef2:0,coeff:0,coeffici:0,collid:0,collider_par:0,colliders_minimized_optim:0,colliders_onli:0,color:0,column:0,com:0,combin:0,come:0,command:0,common:0,commun:0,compar:0,compat:0,complex:0,complic:0,comprehens:0,comput:0,compute_ancestor:0,concret:0,cond_ind_test:0,condindtest:0,conditional_estim:0,conditional_model:0,conditions_data:0,conduct:0,conf_blocklength:0,conf_lev:0,conf_low:0,conf_matrix:0,conf_sampl:0,conf_upp:0,confer:0,confid:0,confidence_interv:0,conflict:0,conflict_resolut:0,confound:0,conserv:0,consid:0,consider:0,considerd:0,consist:0,constant:0,constrain:0,construct:0,construct_arrai:0,constructor:0,contain:0,contemp_collider_rul:0,contemp_cond:0,contemporan:0,content:0,continu:0,contrast:0,control:0,conveni:0,convert:0,convert_to_string_graph:0,correct:0,corrected_a:0,correl:0,correlation_typ:0,correspond:0,cost:0,could:0,coupl:0,covari:0,creat:0,criteria:0,criterion:0,cross:0,cube:0,current:0,cut:0,cut_off:0,cutoff:0,cutperiod:0,cython:0,d:0,d_z:0,dag:0,dag_to_link:0,data_transform:0,datafram:0,dataset:0,datatim:0,dcor:0,debug:0,decai:0,def:0,default_rng:0,defin:0,definin:0,degre:0,delai:0,denot:0,densiti:0,depend:0,dependence_measur:0,deprec:0,depth:0,deriv:0,describ:0,descript:0,detail:0,detect:0,determin:0,deviat:0,df:0,dict:0,dictionari:0,differ:0,digamma:0,digest:0,dim:0,dimens:0,dimension:0,direct:0,direction:0,directli:0,disabl:0,discov:0,discoveri:0,discret:0,discuss:0,disk:0,dismiss:0,dist:0,distanc:0,distribut:0,do_check:0,doe:0,doi:0,dpag:0,draw:0,drawn:0,driver:0,due:0,dummi:0,duplic:0,dure:0,dx:0,dy:0,dz:0,e:0,eaau4996:0,each:0,easi:0,edg:0,effici:0,eg:0,either:0,element:0,els:0,eman:0,embed:0,empti:0,end:0,ends_with:0,ensur:0,entir:0,entri:0,entropi:0,enumer:0,epsilon_:0,equal:0,equival:0,error:0,estim:0,estimate_confid:0,et:0,eta:0,etc:0,evalu:0,even:0,everi:0,exampl:0,except:0,exclud:0,exclude_contemporan:0,exclude_i:0,exclude_j:0,exclude_k:0,exclude_self_effect:0,execut:0,exist:0,expect:0,experi:0,experiment:0,explain:0,extern:0,extraz:0,f:0,f_x:0,f_y:0,factor:0,faculti:0,faith:0,fals:0,faster:0,fdr:0,fdr_bh:0,fdr_method:0,featur:0,feedback:0,figur:0,file:0,filter:0,fine:0,first:0,fit:0,fit_bootstrap_of:0,fit_model:0,fit_result:0,fit_total_effect:0,fit_wright_effect:0,fix:0,fix_all_edges_before_final_orient:0,fixed_thr:0,flag:0,flaxman:0,flexibl:0,follow:0,forbidden_nod:0,forc:0,forecast:0,form:0,format:0,forward:0,found:0,four:0,frac:0,fraction:0,framework:0,free:0,freedom:0,frenzel:0,frequenc:0,frequent:0,friendli:0,from:0,full:0,fullci:0,fulli:0,func:0,further:0,futur:0,g:0,gabor:0,gatewai:0,gauss_pr:0,gaussian:0,gaussianprocessregressor:0,gaussprocreg:0,gaussprocregtorch:0,generate_and_save_nulldist:0,generate_nulldist:0,gerhardu:0,get:0,get_ac:0,get_all_ac:0,get_all_amc:0,get_amc:0,get_analytic_confid:0,get_analytic_signific:0,get_bootstrap_confid:0,get_c:0,get_ce_max:0,get_coef:0,get_coeff:0,get_conditional_entropi:0,get_confid:0,get_corrected_pvalu:0,get_dependence_measur:0,get_fit:0,get_fixed_thres_signific:0,get_general_fitted_model:0,get_general_predict:0,get_graph_from_dict:0,get_graph_from_link:0,get_graph_from_pmatrix:0,get_lagged_depend:0,get_links_from_graph:0,get_mc:0,get_measur:0,get_medi:0,get_mediation_graph_data:0,get_model_selection_criterion:0,get_optimal_set:0,get_predictor:0,get_shuffle_signific:0,get_signific:0,get_test_arrai:0,get_train_arrai:0,get_tsg:0,get_val_matrix:0,github:0,give:0,given:0,go:0,gp:0,gp_param:0,gpdc:0,gpdctorch:0,gpytorch:0,graph:0,graph_bool:0,graph_data:0,graph_is_mag:0,graph_typ:0,graphic:0,greater:0,ground:0,guarante:0,guidanc:0,h:0,ha:0,handl:0,hard:0,has_path:0,hash:0,have:0,heavisid:0,helper:0,henc:0,here:0,hidden:0,hidden_vari:0,high:0,higher:0,histogram:0,hochberg:0,hold:0,how:0,howev:0,html:0,http:0,hyper:0,hyperparamet:0,hypothesi:0,hypothet:0,i:0,i_:0,id:0,identifi:0,identifii:0,ie:0,ignor:0,iint:0,implement:0,impli:0,importantli:0,improv:0,includ:0,include_lagzero_link:0,include_lagzero_par:0,include_neighbor:0,incom:0,index:0,indirect:0,individu:0,inf:0,infin:0,info:0,inform:0,inherit:0,initi:0,initial_valu:0,inno_cov:0,innov:0,input:0,instanc:0,instanti:0,instead:0,instruct:0,integ:0,intellig:0,interdisciplinari:0,interest:0,intern:0,interpret:0,interv:0,interven:0,intervent:0,intervention_data:0,intervention_typ:0,introduc:0,introduct:0,inv_inno_cov:0,invalid:0,invers:0,inverse_transform:0,invit:0,irrelev:0,iter:0,its:0,itself:0,j:0,j_:0,j_t:0,joint:0,journal:0,just:0,k:0,k_:0,kei:0,kernel:0,kind:0,knn:0,kretschmer:0,kwarg:0,l:0,label:0,lag1:0,lag2:0,lag:0,lag_mod:0,lagged_par:0,larg:0,larger:0,largest:0,largest_time_step:0,last:0,latent:0,later:0,latest:0,latter:0,lead:0,learn:0,least:0,leav:0,left:0,len:0,length:0,less:0,let:0,lett:0,level:0,like:0,likelihood:0,lin_f:0,line:0,linear:0,linear_model:0,linearmedi:0,linearregress:0,link:0,link_coeff:0,link_frequ:0,link_matrix:0,links_coeff:0,links_to_graph:0,list:0,load:0,log:0,look:0,low:0,lower:0,lowhighpass_filt:0,m:0,made:0,mag:0,mai:0,main:0,major:0,make:0,mani:0,map:0,margin:0,maria:0,mark:0,markov:0,mask:0,mask_typ:0,match:0,mathcal:0,matric:0,matrix:0,matter:0,max:0,max_:0,max_combin:0,max_cond_px:0,max_conds_dim:0,max_conds_pi:0,max_conds_px:0,max_conds_px_lag:0,max_corr:0,max_delai:0,max_lag:0,max_lag_or_tau_max:0,max_p_glob:0,max_p_non_ancestr:0,max_pds_set:0,max_q_glob:0,maximum:0,mce:0,mci:0,mean:0,measur:0,med:0,member:0,memori:0,method:0,method_arg:0,middl:0,might:0,minim:0,minimized_optim:0,minimum:0,minu:0,miss:0,missing_flag:0,mlr:0,mmr:0,mode:0,model_param:0,modul:0,modulo:0,momentari:0,more:0,most:0,most_frequent_link:0,mostli:0,motif:0,much:0,mult_corr:0,multi:0,multipl:0,multivari:0,must:0,mutual:0,n:0,n_en:0,n_preliminary_iter:0,n_sampl:0,n_symb:0,nail:0,name:0,nan:0,napds_t:0,natur:0,ncomms9502:0,nearest:0,necessari:0,need:0,neg:0,neighbor:0,nest:0,net_to_tsg:0,network:0,neural:0,neurip:0,never:0,nevertheless:0,new_data:0,niehgbor:0,no_apr:0,no_nois:0,no_non_ancestral_phas:0,node:0,nois:0,non:0,non_rep:0,none:0,nonlinear:0,nonstat:0,nonstationari:0,nonzero:0,normal:0,note:0,nowack:0,np:0,npz:0,null_dist:0,null_dist_filenam:0,nulldist:0,number:0,numer:0,numpi:0,o:0,object:0,observ:0,observed_var:0,occur:0,off:0,offset:0,ol:0,onc:0,one:0,onli:0,only_non_causal_path:0,oper:0,opposit:0,optim:0,optimality_cond_des_ym:0,optimality_cond_i:0,optimz:0,option:0,oracl:0,oracleci:0,order:0,ordin:0,ordinal_patt_arrai:0,ordinari:0,org:0,orient:0,orient_comtemp:0,orient_contemp:0,origin:0,oset:0,oset_:0,other:0,otherwis:0,otion:0,ouput:0,out:0,outcom:0,output:0,over:0,overlap:0,overrid:0,overwrit:0,p:0,p_matrix:0,pa:0,packag:0,page:0,pair:0,pairwis:0,paper:0,parallel:0,paramet:0,parametr:0,parcorr:0,parcorrmult:0,parent:0,parent_node_id:0,parents_dict:0,parents_neighbors_coeff:0,parents_of_lag:0,part:0,partial:0,particular:0,pass:0,pass_period:0,path:0,path_node_arrai:0,path_val_matrix:0,pathwai:0,patt:0,patt_mask:0,patt_tim:0,pattern:0,pc1:0,pc:0,pc_1:0,pc_alpha:0,pcmciplu:0,pdf:0,peak:0,pearl:0,pearson:0,percentag:0,percentil:0,perform:0,period:0,permut:0,perp:0,perspect:0,phase:0,phi:0,phy:0,physrev:0,pip:0,plai:0,pleas:0,point:0,pomp:0,posit:0,possibl:0,post:0,potenti:0,power:0,pp:0,pq_matrix:0,practic:0,pre:0,precis:0,precomput:0,pred_param:0,predict_bootstrap_of:0,predict_total_effect:0,predict_wright_effect:0,prediction_model:0,predictor:0,prelim_onli:0,prelim_rul:0,prelim_with_collider_rul:0,preliminari:0,preprocess:0,present:0,preserv:0,press:0,previou:0,prime:0,principl:0,print:0,print_array_info:0,print_info:0,print_result:0,print_significant_link:0,prior:0,priorit:0,prl:0,procedur:0,proceed:0,processor:0,project:0,proper:0,properti:0,provid:0,pseudcod:0,pseudoc:0,pseudocod:0,psi:0,purpos:0,pval:0,pval_max:0,python:0,q_matrix:0,qualiti:0,quantifi:0,quantil:0,quantile_bin_arrai:0,quantiti:0,r10:0,r9:0,r:0,r_x:0,r_y:0,rais:0,randn:0,random:0,random_st:0,randomst:0,rang:0,rank:0,rate:0,rather:0,re:0,realiz:0,recal:0,recommend:0,reconstruct:0,recycle_residu:0,red:0,reduc:0,refer:0,reference_point:0,regard:0,regress:0,regular:0,rel:0,relat:0,relationship:0,relev:0,remain:0,remember_only_par:0,remov:0,remove_missing_upto_maxlag:0,remove_overlap:0,repeat:0,replac:0,repo:0,repres:0,represent:0,requir:0,reset_lagged_link:0,residu:0,respect:0,restrict:0,result:0,return_cleaned_xyz:0,return_data:0,return_dict:0,return_further_pred_result:0,return_individual_bootstrap_result:0,return_null_dist:0,return_parents_dict:0,return_path:0,return_separate_set:0,return_significant_link:0,rev:0,rho:0,richardson:0,right:0,rizzo:0,robust:0,role:0,row:0,rtype:0,rule:0,run:0,run_bivci:0,run_fullci:0,run_lpcmci:0,run_mci:0,run_pc_stabl:0,run_pcalg:0,run_pcalg_non_timeseries_data:0,run_pcmci:0,run_pcmciplu:0,run_sliding_window_of:0,run_test:0,run_test_raw:0,rung:0,runge18a:0,runtim:0,s2:0,s3:0,s41467:0,s:0,same:0,sampl:0,sample_s:0,saniti:0,save:0,save_iter:0,scale:0,sci:0,scienc:0,sciencemag:0,scikit:0,scipi:0,scitat:0,score:0,script:0,search:0,second:0,section:0,see:0,seed:0,seen:0,sejdinov:0,select:0,selected_link:0,selected_target:0,selected_vari:0,selection_var:0,self:0,separ:0,sepset:0,set:0,set_datafram:0,set_mask_typ:0,setter:0,sever:0,shape:0,share:0,shift:0,shorter:0,should:0,shown:0,shuffl:0,shuffle_neighbor:0,shuffle_test:0,side:0,sig_blocklength:0,sig_overrid:0,sig_sampl:0,sig_thr:0,sigma:0,signfic:0,signficic:0,signific:0,sim:0,simpl:0,simpli:0,sinc:0,singl:0,size:0,skeleton:0,sklearn:0,slice:0,slide:0,slightli:0,smaller:0,smooth:0,smooth_width:0,soft:0,some:0,sort:0,sound:0,sourc:0,spatial:0,spatio:0,specif:0,specifi:0,spirt:0,squar:0,standard:0,standardscal:0,star:0,start:0,starts_with:0,stationar:0,statist:0,std:0,step:0,steps_ahead:0,still:0,stop:0,store:0,str:0,strength:0,string:0,structur:0,structural_causal_process:0,student:0,sub:0,subset:0,subspac:0,suffici:0,suitabl:0,sum:0,sum_:0,summar:0,summari:0,summary_result:0,superset:0,supplement:0,suppli:0,support:0,sure:0,surrog:0,suscept:0,symb_arrai:0,symbol:0,symbolifi:0,symmetr:0,symmetrize_p_and_val_matrix:0,system:0,szeke:0,t:0,t_i:0,t_max:0,t_miss:0,tail:0,take:0,taken:0,target:0,target_predictor:0,tau:0,tau_:0,tau_max:0,tau_min:0,tau_mix:0,taumax:0,techniqu:0,tempor:0,termin:0,test_indic:0,than:0,thei:0,them:0,themselv:0,theorem:0,theoret:0,thi:0,thm:0,those:0,threshold:0,through:0,tild:0,time_bin_length:0,time_bin_with_mask:0,time_lag:0,time_offset:0,timelabel:0,togeth:0,toronto:0,total:0,toward:0,train:0,train_indic:0,transfer:0,transform:0,transient_fract:0,translat:0,tripl:0,true_par:0,true_parent_neighbor:0,truncat:0,truth:0,tsg:0,tsg_path_val_matrix:0,tsg_to_net:0,tune:0,tupl:0,tutori:0,twice:0,two:0,type:0,typic:0,uai2020:0,uai:0,un:0,uncertainti:0,unclear:0,uncondit:0,undecid:0,under:0,underli:0,undirect:0,uniform:0,uniqu:0,unit:0,unlik:0,unori:0,unrestrict:0,unshield:0,unshuffl:0,up:0,update_middle_mark:0,upper:0,us:0,use_a_pds_t_for_major:0,user:0,v84:0,val:0,val_matrix:0,val_matrix_interv:0,val_matrix_mean:0,val_min:0,val_onli:0,valid:0,valu:0,var1:0,var2:0,var_nam:0,var_network:0,var_process:0,vari:0,variabl:0,varianc:0,variant:0,variou:0,varlag:0,varx:0,vector:0,vector_var:0,verbos:0,veri:0,view:0,w:0,wa:0,wai:0,we:0,weight:0,weighted_avg_and_std:0,well:0,when:0,where:0,whether:0,which:0,whichev:0,whose:0,wide:0,widehat:0,width:0,wildcard:0,window:0,window_length:0,window_step:0,within:0,without:0,work:0,worker:0,would:0,wrapper:0,wright:0,www:0,x:0,x_:0,x_i:0,x_j:0,x_t:0,xy:0,xyz:0,xz:0,y:0,y_:0,y_t:0,yield:0,you:0,yz:0,z:0,z_i:0,z_j:0,z_t:0,zero:0},titles:["TIGRAMITE"],titleterms:{"function":0,analysi:0,causal:0,causal_effect:0,condit:0,data:0,data_process:0,effect:0,gener:0,independ:0,independence_test:0,indic:0,lpcmci:0,mediat:0,model:0,pcmci:0,plot:0,predict:0,process:0,seri:0,tabl:0,test:0,tigramit:0,time:0,toi:0,toymodel:0}}) \ No newline at end of file +Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["TIGRAMITE"], "terms": {"github": 0, "repo": 0, "python": 0, "packag": 0, "It": 0, "allow": 0, "effici": 0, "estim": 0, "graph": 0, "from": 0, "high": 0, "dimension": 0, "dataset": 0, "discoveri": 0, "us": 0, "robust": 0, "forecast": 0, "direct": 0, "total": 0, "base": 0, "linear": 0, "well": 0, "non": 0, "parametr": 0, "applic": 0, "discret": 0, "continu": 0, "valu": 0, "also": 0, "includ": 0, "qualiti": 0, "result": 0, "pleas": 0, "cite": 0, "follow": 0, "paper": 0, "depend": 0, "which": 0, "method": 0, "you": 0, "j": 0, "rung": 0, "p": 0, "nowack": 0, "m": 0, "kretschmer": 0, "s": 0, "flaxman": 0, "d": 0, "sejdinov": 0, "detect": 0, "quantifi": 0, "associ": 0, "larg": 0, "nonlinear": 0, "sci": 0, "adv": 0, "5": 0, "eaau4996": 0, "2019": 0, "http": 0, "advanc": 0, "sciencemag": 0, "org": 0, "content": 0, "11": 0, "2020": 0, "discov": 0, "contemporan": 0, "lag": 0, "relat": 0, "autocorrel": 0, "proceed": 0, "36th": 0, "confer": 0, "uncertainti": 0, "artifici": 0, "intellig": 0, "uai": 0, "toronto": 0, "canada": 0, "auai": 0, "press": 0, "uai2020": 0, "579_main_pap": 0, "pdf": 0, "gerhardu": 0, "A": 0, "recal": 0, "latent": 0, "confound": 0, "neural": 0, "inform": 0, "system": 0, "33": 0, "neurip": 0, "cc": 0, "hash": 0, "94e70705efae423efda1088614128d0b": 0, "abstract": 0, "html": 0, "2018": 0, "network": 0, "reconstruct": 0, "theoret": 0, "assumpt": 0, "practic": 0, "chao": 0, "an": 0, "interdisciplinari": 0, "journal": 0, "scienc": 0, "28": 0, "7": 0, "075310": 0, "aip": 0, "scitat": 0, "doi": 0, "10": 0, "1063": 0, "1": 0, "5025050": 0, "natur": 0, "commun": 0, "perspect": 0, "www": 0, "com": 0, "articl": 0, "s41467": 0, "019": 0, "10105": 0, "3": 0, "necessari": 0, "suffici": 0, "graphic": 0, "optim": 0, "adjust": 0, "set": 0, "hidden": 0, "variabl": 0, "2021": 0, "34": 0, "class": 0, "et": 0, "al": 0, "2015": 0, "identifi": 0, "gatewai": 0, "complex": 0, "spatio": 0, "tempor": 0, "6": 0, "8502": 0, "1038": 0, "ncomms9502": 0, "transfer": 0, "along": 0, "pathwai": 0, "phy": 0, "rev": 0, "e": 0, "92": 0, "62829": 0, "1103": 0, "physrev": 0, "062829": 0, "cmiknn": 0, "nearest": 0, "neighbor": 0, "mutual": 0, "In": 0, "21st": 0, "intern": 0, "statist": 0, "mlr": 0, "v84": 0, "runge18a": 0, "datafram": 0, "cond_ind_test": 0, "selected_vari": 0, "none": 0, "verbos": 0, "0": 0, "sourc": 0, "framework": 0, "scale": 0, "thi": 0, "contain": 0, "sever": 0, "The": 0, "standard": 0, "address": 0, "describ": 0, "where": 0, "further": 0, "sub": 0, "variant": 0, "ar": 0, "discuss": 0, "pcmciplu": 0, "see": 0, "tutori": 0, "guidanc": 0, "appli": 0, "ha": 0, "differ": 0, "adapt": 0, "implement": 0, "mostli": 0, "hyperparamet": 0, "easi": 0, "parallel": 0, "separ": 0, "script": 0, "handl": 0, "mask": 0, "fals": 0, "control": 0, "confid": 0, "interv": 0, "note": 0, "structur": 0, "repres": 0, "shown": 0, "figur": 0, "node": 0, "defin": 0, "link": 0, "can": 0, "interpret": 0, "under": 0, "certain": 0, "assum": 0, "stationar": 0, "repeat": 0, "parent": 0, "mathcal": 0, "all": 0, "toward": 0, "blue": 0, "red": 0, "box": 0, "iter": 0, "flexibl": 0, "combin": 0, "ani": 0, "kind": 0, "its": 0, "type": 0, "These": 0, "avail": 0, "mci": 0, "particular": 0, "measur": 0, "strength": 0, "For": 0, "exampl": 0, "parcorr": 0, "normal": 0, "between": 0, "howev": 0, "interest": 0, "i": 0, "hypothet": 0, "intervent": 0, "mai": 0, "better": 0, "look": 0, "refer": 0, "w": 0, "paramet": 0, "object": 0, "among": 0, "other": 0, "attribut": 0, "yield": 0, "numpi": 0, "arrai": 0, "shape": 0, "observ": 0, "t": 0, "n": 0, "option": 0, "same": 0, "extern": 0, "pass": 0, "callabl": 0, "condindtest": 0, "list": 0, "deprec": 0, "just": 0, "here": 0, "rais": 0, "error": 0, "int": 0, "default": 0, "level": 0, "all_par": 0, "dictionari": 0, "form": 0, "2": 0, "pc": 0, "algorithm": 0, "val_min": 0, "tau": 0, "float": 0, "minimum": 0, "each": 0, "pval_max": 0, "maximum": 0, "step": 0, "number": 0, "sampl": 0, "length": 0, "dict": 0, "convert_to_string_graph": 0, "graph_bool": 0, "convert": 0, "return": 0, "string": 0, "output": 0, "get_corrected_pvalu": 0, "p_matrix": 0, "fdr_method": 0, "fdr_bh": 0, "exclude_contemporan": 0, "true": 0, "tau_min": 0, "tau_max": 0, "selected_link": 0, "correct": 0, "multipl": 0, "current": 0, "benjamini": 0, "hochberg": 0, "rate": 0, "perform": 0, "either": 0, "onli": 0, "like": 0, "matrix": 0, "must": 0, "consist": 0, "check": 0, "larger": 0, "equal": 0, "specifi": 0, "whether": 0, "select": 0, "should": 0, "If": 0, "str": 0, "bool": 0, "q_matrix": 0, "get_graph_from_pmatrix": 0, "alpha_level": 0, "construct": 0, "threshold": 0, "alpha": 0, "take": 0, "account": 0, "05": 0, "signific": 0, "get": 0, "tau_mix": 0, "delai": 0, "descript": 0, "abov": 0, "get_lagged_depend": 0, "val_onli": 0, "uncondit": 0, "_": 0, "matric": 0, "new": 0, "4": 0, "fdr": 0, "zero": 0, "undirect": 0, "comput": 0, "val_matrix": 0, "conf_matrix": 0, "percentil": 0, "print_result": 0, "return_dict": 0, "print": 0, "kei": 0, "print_significant_link": 0, "ambiguous_tripl": 0, "latter": 0, "ambigu": 0, "conflict": 0, "tripl": 0, "return_parents_dict": 0, "include_lagzero_par": 0, "sort": 0, "unclear": 0, "o": 0, "x": 0, "parents_dict": 0, "return_significant_link": 0, "pq_matrix": 0, "include_lagzero_link": 0, "boolean": 0, "Will": 0, "remov": 0, "futur": 0, "run_bivci": 0, "bivci": 0, "run_fullci": 0, "fullci": 0, "run_mci": 0, "max_conds_pi": 0, "max_conds_px": 0, "y": 0, "unrestrict": 0, "z": 0, "run_pc_stabl": 0, "save_iter": 0, "pc_alpha": 0, "max_conds_dim": 0, "max_combin": 0, "made": 0, "self": 0, "multi": 0, "ahead": 0, "greater": 0, "save": 0, "everi": 0, "across": 0, "given": 0, "score": 0, "get_model_selection_criterion": 0, "cardin": 0, "pc_1": 0, "origin": 0, "run_pcalg": 0, "01": 0, "lagged_par": 0, "max_conds_px_lag": 0, "mode": 0, "contemp_collider_rul": 0, "major": 0, "conflict_resolut": 0, "run": 0, "contemp_cond": 0, "addit": 0, "ci": 0, "As": 0, "part": 0, "superset": 0, "pc1": 0, "conserv": 0, "rule": 0, "collid": 0, "phase": 0, "detail": 0, "lead": 0, "order": 0, "mark": 0, "orient": 0, "when": 0, "regard": 0, "adjac": 0, "sepset": 0, "relev": 0, "run_pcalg_non_timeseries_data": 0, "simpli": 0, "call": 0, "ouput": 0, "run_pcmci": 0, "wrapper": 0, "around": 0, "comprehens": 0, "analyt": 0, "numer": 0, "present": 0, "we": 0, "briefli": 0, "summar": 0, "two": 0, "procedur": 0, "tild": 0, "j_t": 0, "reduc": 0, "avoid": 0, "irrelev": 0, "momentari": 0, "i_": 0, "perp": 0, "j_": 0, "common": 0, "driver": 0, "indirect": 0, "main": 0, "free": 0, "tau_": 0, "max": 0, "chosen": 0, "accord": 0, "expect": 0, "recommend": 0, "rather": 0, "choic": 0, "peak": 0, "seen": 0, "sinc": 0, "hypothesi": 0, "do": 0, "precis": 0, "assess": 0, "role": 0, "regular": 0, "techniqu": 0, "criteria": 0, "respect": 0, "import": 0, "pp": 0, "structural_causal_process": 0, "random": 0, "seed": 0, "plai": 0, "incom": 0, "suppli": 0, "format": 0, "coeff": 0, "links_coeff": 0, "8": 0, "var_process": 0, "1000": 0, "pval": 0, "00000": 0, "val": 0, "588": 0, "606": 0, "447": 0, "618": 0, "499": 0, "run_pcmciplu": 0, "reset_lagged_link": 0, "contrast": 0, "full": 0, "up": 0, "markov": 0, "equival": 0, "faith": 0, "four": 0, "widehat": 0, "b": 0, "_t": 0, "skeleton": 0, "through": 0, "subset": 0, "conduct": 0, "motif": 0, "unshield": 0, "remain": 0, "Its": 0, "entri": 0, "denot": 0, "unori": 0, "could": 0, "direction": 0, "undecid": 0, "due": 0, "importantli": 0, "alwai": 0, "dag": 0, "first": 0, "one": 0, "member": 0, "averag": 0, "over": 0, "fit": 0, "anoth": 0, "togeth": 0, "fulli": 0, "mean": 0, "doe": 0, "matter": 0, "last": 0, "restrict": 0, "found": 0, "consid": 0, "again": 0, "improv": 0, "power": 0, "runtim": 0, "np": 0, "var": 0, "def": 0, "lin_f": 0, "9": 0, "nonstat": 0, "676": 0, "602": 0, "599": 0, "486": 0, "466": 0, "524": 0, "449": 0, "001": 0, "005": 0, "025": 0, "run_sliding_window_of": 0, "method_arg": 0, "window_step": 0, "window_length": 0, "conf_lev": 0, "95": 0, "slide": 0, "window": 0, "taken": 0, "summary_result": 0, "all_result": 0, "individu": 0, "val_matrix_mean": 0, "val_matrix_interv": 0, "bound": 0, "most_frequent_link": 0, "most": 0, "frequent": 0, "outcom": 0, "specif": 0, "link_frequ": 0, "occur": 0, "frequenc": 0, "valid": 0, "argument": 0, "side": 0, "summari": 0, "symmetrize_p_and_val_matrix": 0, "symmetr": 0, "learn": 0, "relationship": 0, "introduc": 0, "explain": 0, "still": 0, "experiment": 0, "being": 0, "fine": 0, "tune": 0, "actual": 0, "invit": 0, "feedback": 0, "work": 0, "best": 0, "experi": 0, "run_lpcmci": 0, "constructor": 0, "bold": 0, "some": 0, "might": 0, "potenti": 0, "absent": 0, "smaller": 0, "than": 0, "dpag": 0, "taumax": 0, "underli": 0, "n_preliminary_iter": 0, "determin": 0, "preliminari": 0, "correspond": 0, "k": 0, "max_cond_px": 0, "pair": 0, "s2": 0, "_run_ancestral_removal_phas": 0, "apds_t": 0, "c": 0, "g": 0, "higher": 0, "s3": 0, "_run_non_ancestral_removal_phas": 0, "napds_t": 0, "max_p_glob": 0, "max_p_non_ancestr": 0, "second": 0, "_run_dsep_removal_phas": 0, "max_q_glob": 0, "mani": 0, "sum": 0, "more": 0, "max_pds_set": 0, "element": 0, "opposit": 0, "prelim_with_collider_rul": 0, "pseudocod": 0, "line": 0, "22": 0, "replac": 0, "18": 0, "directli": 0, "befor": 0, "parents_of_lag": 0, "pa": 0, "prelim_onli": 0, "stop": 0, "after": 0, "break_once_separ": 0, "break": 0, "command": 0, "no_non_ancestral_phas": 0, "execut": 0, "use_a_pds_t_for_major": 0, "search": 0, "instruct": 0, "adj": 0, "orient_contemp": 0, "orient_comtemp": 0, "update_middle_mark": 0, "pseudoc": 0, "mmr": 0, "prelim_rul": 0, "exclud": 0, "r9": 0, "prime": 0, "r10": 0, "fix_all_edges_before_final_orient": 0, "inf": 0, "termin": 0, "although": 0, "middl": 0, "empti": 0, "nevertheless": 0, "sound": 0, "appropri": 0, "forc": 0, "auto_first": 0, "pseudcod": 0, "autodepend": 0, "priorit": 0, "even": 0, "remember_only_par": 0, "been": 0, "ancestor": 0, "point": 0, "wa": 0, "later": 0, "initi": 0, "tail": 0, "re": 0, "no_apr": 0, "apr": 0, "except": 0, "never": 0, "conveni": 0, "have": 0, "post": 0, "purpos": 0, "wildcard": 0, "ast": 0, "edg": 0, "star": 0, "42": 0, "mask_typ": 0, "fixed_thr": 0, "sig_sampl": 0, "sig_blocklength": 0, "conf_sampl": 0, "100": 0, "conf_blocklength": 0, "recycle_residu": 0, "provid": 0, "shuffl": 0, "bootstrap": 0, "inherit": 0, "randomst": 0, "default_rng": 0, "xy": 0, "xz": 0, "yz": 0, "xyz": 0, "miss": 0, "shuffle_test": 0, "absolut": 0, "block": 0, "decai": 0, "autocovari": 0, "nan": 0, "residu": 0, "store": 0, "faster": 0, "cost": 0, "consider": 0, "memori": 0, "get_analytic_confid": 0, "df": 0, "concret": 0, "overrid": 0, "possibl": 0, "get_analytic_signific": 0, "dim": 0, "get_bootstrap_confid": 0, "dependence_measur": 0, "With": 0, "row": 0, "column": 0, "get_dependence_measur": 0, "conf_low": 0, "conf_upp": 0, "upper": 0, "lower": 0, "tupl": 0, "get_confid": 0, "child": 0, "index": 0, "make": 0, "sure": 0, "size": 0, "instanti": 0, "get_fixed_thres_signific": 0, "signfic": 0, "ab": 0, "els": 0, "unshuffl": 0, "fix": 0, "posit": 0, "get_measur": 0, "get_shuffle_signific": 0, "return_null_dist": 0, "get_signific": 0, "sig_overrid": 0, "whichev": 0, "ie": 0, "featur": 0, "properti": 0, "print_info": 0, "about": 0, "run_test": 0, "cut_off": 0, "2xtau_max": 0, "signficic": 0, "both": 0, "_get_single_residu": 0, "max_lag": 0, "max_lag_or_tau_max": 0, "how": 0, "cutoff": 0, "begin": 0, "guarante": 0, "compar": 0, "much": 0, "run_test_raw": 0, "input": 0, "dimens": 0, "set_datafram": 0, "flag": 0, "set_mask_typ": 0, "setter": 0, "ensur": 0, "clash": 0, "kwarg": 0, "partial": 0, "correl": 0, "ordinari": 0, "least": 0, "squar": 0, "ol": 0, "regress": 0, "pearson": 0, "To": 0, "out": 0, "beta_x": 0, "epsilon_": 0, "beta_i": 0, "Then": 0, "rho": 0, "left": 0, "r_x": 0, "r_y": 0, "right": 0, "student": 0, "distribut": 0, "d_z": 0, "degre": 0, "freedom": 0, "coeffici": 0, "eg": 0, "less": 0, "corrected_a": 0, "akaik": 0, "criterion": 0, "modulo": 0, "constant": 0, "leav": 0, "cross": 0, "asymptot": 0, "aic": 0, "target": 0, "gpdc": 0, "null_dist_filenam": 0, "gp_param": 0, "gaussian": 0, "distanc": 0, "gp": 0, "scikit": 0, "kernel": 0, "let": 0, "them": 0, "automat": 0, "cython": 0, "null": 0, "precomput": 0, "generate_and_save_nulldist": 0, "npz": 0, "file": 0, "f_x": 0, "f_y": 0, "sim": 0, "sigma": 0, "bandwidth": 0, "optimz": 0, "sklearn": 0, "transform": 0, "uniform": 0, "margin": 0, "r": 0, "pre": 0, "otherwis": 0, "dure": 0, "gabor": 0, "szeke": 0, "maria": 0, "l": 0, "rizzo": 0, "nail": 0, "bakirov": 0, "arxiv": 0, "0803": 0, "4101": 0, "otion": 0, "path": 0, "gaussianprocessregressor": 0, "gaussprocreg": 0, "sample_s": 0, "pairwis": 0, "generate_nulldist": 0, "dist": 0, "disk": 0, "add": 0, "gauss_pr": 0, "null_dist": 0, "name": 0, "add_to_null_dist": 0, "load": 0, "nulldist": 0, "wide": 0, "rang": 0, "beforehand": 0, "log": 0, "likelihood": 0, "neg": 0, "Is": 0, "gpdctorch": 0, "gpytorch": 0, "dcor": 0, "pip": 0, "gaussprocregtorch": 0, "knn": 0, "shuffle_neighbor": 0, "rank": 0, "worker": 0, "come": 0, "joint": 0, "densiti": 0, "frenzel": 0, "pomp": 0, "lett": 0, "99": 0, "204101": 0, "2007": 0, "suitabl": 0, "cmisymb": 0, "cmi": 0, "iint": 0, "frac": 0, "cdot": 0, "dx": 0, "dy": 0, "dz": 0, "psi": 0, "sum_": 0, "k_": 0, "digamma": 0, "hyper": 0, "cube": 0, "subspac": 0, "view": 0, "smooth": 0, "unlik": 0, "bia": 0, "varianc": 0, "slightli": 0, "while": 0, "quantiti": 0, "requir": 0, "scipi": 0, "spatial": 0, "ckdtree": 0, "fraction": 0, "henc": 0, "within": 0, "surrog": 0, "processor": 0, "get_conditional_entropi": 0, "entropi": 0, "h": 0, "prl": 0, "overwrit": 0, "preserv": 0, "permut": 0, "those": 0, "x_i": 0, "x_j": 0, "z_j": 0, "niehgbor": 0, "z_i": 0, "n_symb": 0, "symbol": 0, "bincount": 0, "histogram": 0, "oracleci": 0, "observed_var": 0, "selection_var": 0, "graph_is_mag": 0, "oracl": 0, "link_coeff": 0, "ground": 0, "truth": 0, "unit": 0, "altern": 0, "digest": 0, "func": 0, "definin": 0, "check_shortest_path": 0, "starts_with": 0, "ends_with": 0, "forbidden_nod": 0, "only_non_causal_path": 0, "check_optimality_cond": 0, "optimality_cond_des_ym": 0, "optimality_cond_i": 0, "return_path": 0, "non_rep": 0, "au_i": 0, "au_j": 0, "alreadi": 0, "truncat": 0, "breadth": 0, "start": 0, "end": 0, "veri": 0, "long": 0, "constrain": 0, "has_path": 0, "instead": 0, "ancestr": 0, "compute_ancestor": 0, "anc_all_x": 0, "anc_all_i": 0, "anc_all_z": 0, "arrohead": 0, "exist": 0, "compat": 0, "get_graph_from_link": 0, "mag": 0, "admg": 0, "project": 0, "oper": 0, "pearl": 0, "2009": 0, "get_links_from_graph": 0, "case": 0, "ad": 0, "canon": 0, "richardson": 0, "spirt": 0, "2002": 0, "support": 0, "evalu": 0, "Not": 0, "dummi": 0, "parcorrmult": 0, "correlation_typ": 0, "max_corr": 0, "multivari": 0, "mult_corr": 0, "causaleffect": 0, "graph_typ": 0, "hidden_vari": 0, "check_sm_overlap": 0, "backdoor": 0, "variou": 0, "without": 0, "wright": 0, "depth": 0, "introduct": 0, "8485ae387a981d783f8764e508151cd9": 0, "caus": 0, "overlap": 0, "check_xys_path": 0, "proper": 0, "clean": 0, "check_optim": 0, "thm": 0, "fit_bootstrap_of": 0, "boot_sampl": 0, "boot_blocklength": 0, "drawn": 0, "construct_arrai": 0, "shift": 0, "bootsrap": 0, "predict_bootstrap_of": 0, "draw": 0, "fit_total_effect": 0, "adjustment_set": 0, "conditional_estim": 0, "data_transform": 0, "linear_model": 0, "linearregress": 0, "oset": 0, "minimized_optim": 0, "minim": 0, "colliders_minimized_optim": 0, "nest": 0, "preprocess": 0, "prior": 0, "standardscal": 0, "simpl": 0, "fit_wright_effect": 0, "considerd": 0, "complic": 0, "static": 0, "get_graph_from_dict": 0, "helper": 0, "get_medi": 0, "get_optimal_set": 0, "alternative_condit": 0, "return_separate_set": 0, "theorem": 0, "colliders_onli": 0, "invalid": 0, "collider_par": 0, "oset_": 0, "return_individual_bootstrap_result": 0, "confidence_interv": 0, "predict_total_effect": 0, "intervention_data": 0, "conditions_data": 0, "pred_param": 0, "return_further_pred_result": 0, "len": 0, "predictor": 0, "entir": 0, "estimate_confid": 0, "predict_wright_effect": 0, "conditional_model": 0, "care": 0, "inverse_transform": 0, "get_coef": 0, "get_fit": 0, "return_data": 0, "integ": 0, "fit_result": 0, "get_general_fitted_model": 0, "f": 0, "get_general_predict": 0, "get_val_matrix": 0, "fit_model": 0, "give": 0, "deriv": 0, "linearmedi": 0, "model_param": 0, "etc": 0, "ce": 0, "mce": 0, "ac": 0, "suscept": 0, "amc": 0, "chain": 0, "x_t": 0, "eta": 0, "y_t": 0, "x_": 0, "z_t": 0, "y_": 0, "25": 0, "impli": 0, "37": 0, "true_par": 0, "med": 0, "get_coeff": 0, "get_c": 0, "get_mc": 0, "get_all_ac": 0, "get_all_amc": 0, "250648072987": 0, "36897445": 0, "25718002": 0, "24365041": 0, "38250406": 0, "12532404": 0, "phi": 0, "accept": 0, "get_ac": 0, "lag_mod": 0, "absmax": 0, "exclude_i": 0, "eman": 0, "all_lag": 0, "itself": 0, "exclude_j": 0, "affect": 0, "previou": 0, "exclude_k": 0, "exclude_self_effect": 0, "themselv": 0, "get_amc": 0, "get_ce_max": 0, "minu": 0, "go": 0, "get_mediation_graph_data": 0, "include_neighbor": 0, "weight": 0, "path_val_matrix": 0, "path_node_arrai": 0, "tsg_path_val_matrix": 0, "graph_data": 0, "color": 0, "get_tsg": 0, "link_matrix": 0, "analyz": 0, "sig_thr": 0, "array_lik": 0, "tsg": 0, "net_to_tsg": 0, "translat": 0, "tsg_to_net": 0, "train_indic": 0, "test_indic": 0, "prediction_model": 0, "train": 0, "need": 0, "target_predictor": 0, "selected_target": 0, "instanc": 0, "get_predictor": 0, "steps_ahead": 0, "get_test_arrai": 0, "get_train_arrai": 0, "new_data": 0, "missing_flag": 0, "vector_var": 0, "var_nam": 0, "datatim": 0, "analysis_mod": 0, "singl": 0, "reference_point": 0, "time_offset": 0, "remove_missing_upto_maxlag": 0, "OR": 0, "whose": 0, "t_i": 0, "vari": 0, "dismiss": 0, "slice": 0, "below": 0, "bias": 0, "section": 0, "supplement": 0, "match": 0, "enumer": 0, "timelabel": 0, "1d": 0, "rel": 0, "share": 0, "axi": 0, "creat": 0, "t_max": 0, "largest_time_step": 0, "bigger": 0, "ignor": 0, "At": 0, "align": 0, "agre": 0, "offset": 0, "_initialized_from": 0, "2d": 0, "3d": 0, "hold": 0, "map": 0, "represent": 0, "identifii": 0, "wai": 0, "max_": 0, "largest": 0, "latest": 0, "random_st": 0, "extraz": 0, "return_cleaned_xyz": 0, "do_check": 0, "remove_overlap": 0, "n_en": 0, "var1": 0, "var2": 0, "varlag": 0, "assign": 0, "duplic": 0, "saniti": 0, "thei": 0, "2xtau_max_futur": 0, "cut": 0, "off": 0, "t_miss": 0, "principl": 0, "would": 0, "n_sampl": 0, "print_array_info": 0, "info": 0, "typic": 0, "varx": 0, "lowhighpass_filt": 0, "cutperiod": 0, "pass_period": 0, "low": 0, "butterworth": 0, "filter": 0, "twice": 0, "onc": 0, "forward": 0, "backward": 0, "period": 0, "act": 0, "ordinal_patt_arrai": 0, "array_mask": 0, "symbolifi": 0, "ordin": 0, "pattern": 0, "vector": 0, "uniqu": 0, "There": 0, "faculti": 0, "symb_arrai": 0, "shorter": 0, "2011": 0, "coupl": 0, "83": 0, "12": 0, "051122": 0, "label": 0, "embed": 0, "patt": 0, "patt_mask": 0, "patt_tim": 0, "quantile_bin_arrai": 0, "bin": 0, "quantil": 0, "smooth_width": 0, "width": 0, "heavisid": 0, "rtype": 0, "nois": 0, "intervention_typ": 0, "hard": 0, "time_bin_with_mask": 0, "time_bin_length": 0, "bindata": 0, "parents_neighbors_coeff": 0, "inv_inno_cov": 0, "initial_valu": 0, "autoregress": 0, "innov": 0, "var_network": 0, "user": 0, "friendli": 0, "weighted_avg_and_std": 0, "deviat": 0, "std": 0, "dag_to_link": 0, "links_to_graph": 0, "transient_fract": 0, "interven": 0, "arbitrari": 0, "factor": 0, "randn": 0, "un": 0, "soft": 0, "percentag": 0, "transient": 0, "realiz": 0, "nonstationari": 0, "infin": 0, "lag1": 0, "coef1": 0, "lag2": 0, "coef2": 0, "nonzero": 0, "covari": 0, "invers": 0, "inno_cov": 0, "debug": 0, "no_nois": 0, "disabl": 0, "max_delai": 0, "true_parent_neighbor": 0, "id": 0, "parent_node_id": 0, "time_lag": 0, "modul": 0, "page": 0}, "objects": {"tigramite.causal_effects": [[0, 0, 1, "", "CausalEffects"]], "tigramite.causal_effects.CausalEffects": [[0, 1, 1, "", "check_XYS_paths"], [0, 1, 1, "", "check_optimality"], [0, 1, 1, "", "fit_bootstrap_of"], [0, 1, 1, "", "fit_total_effect"], [0, 1, 1, "", "fit_wright_effect"], [0, 1, 1, "", "get_graph_from_dict"], [0, 1, 1, "", "get_mediators"], [0, 1, 1, "", "get_optimal_set"], [0, 1, 1, "", "predict_bootstrap_of"], [0, 1, 1, "", "predict_total_effect"], [0, 1, 1, "", "predict_wright_effect"]], "tigramite": [[0, 2, 0, "-", "data_processing"]], "tigramite.data_processing": [[0, 0, 1, "", "DataFrame"], [0, 4, 1, "", "lowhighpass_filter"], [0, 4, 1, "", "ordinal_patt_array"], [0, 4, 1, "", "quantile_bin_array"], [0, 4, 1, "", "smooth"], [0, 4, 1, "", "structural_causal_process"], [0, 4, 1, "", "time_bin_with_mask"], [0, 4, 1, "", "var_process"], [0, 4, 1, "", "weighted_avg_and_std"]], "tigramite.data_processing.DataFrame": [[0, 1, 1, "", "construct_array"], [0, 1, 1, "", "print_array_info"]], "tigramite.data_processing.DataFrame.self": [[0, 3, 1, "", "M"], [0, 3, 1, "", "N"], [0, 3, 1, "", "T"], [0, 3, 1, "", "_initialized_from"], [0, 3, 1, "", "analysis_mode"], [0, 3, 1, "", "bootstrap"], [0, 3, 1, "", "datasets"], [0, 3, 1, "", "datatime"], [0, 3, 1, "", "largest_time_step"], [0, 3, 1, "", "mask"], [0, 3, 1, "", "missing_flag"], [0, 3, 1, "", "reference_points"], [0, 3, 1, "", "time_offsets"], [0, 3, 1, "", "values"], [0, 3, 1, "", "var_names"]], "tigramite.independence_tests": [[0, 0, 1, "", "CMIknn"], [0, 0, 1, "", "CMIsymb"], [0, 0, 1, "", "CondIndTest"], [0, 0, 1, "", "GPDC"], [0, 0, 1, "", "GPDCtorch"], [0, 0, 1, "", "OracleCI"], [0, 0, 1, "", "ParCorr"], [0, 0, 1, "", "ParCorrMult"]], "tigramite.independence_tests.CMIknn": [[0, 1, 1, "", "get_conditional_entropy"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.CMIsymb": [[0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.CondIndTest": [[0, 1, 1, "", "get_analytic_confidence"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_bootstrap_confidence"], [0, 1, 1, "", "get_confidence"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_fixed_thres_significance"], [0, 1, 1, "", "get_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 1, 1, "", "get_significance"], [0, 5, 1, "", "measure"], [0, 1, 1, "", "print_info"], [0, 1, 1, "", "run_test"], [0, 1, 1, "", "run_test_raw"], [0, 1, 1, "", "set_dataframe"], [0, 1, 1, "", "set_mask_type"]], "tigramite.independence_tests.GPDC": [[0, 1, 1, "", "generate_and_save_nulldists"], [0, 1, 1, "", "generate_nulldist"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.GPDCtorch": [[0, 1, 1, "", "generate_and_save_nulldists"], [0, 1, 1, "", "generate_nulldist"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.OracleCI": [[0, 1, 1, "", "check_shortest_path"], [0, 1, 1, "", "get_confidence"], [0, 1, 1, "", "get_graph_from_links"], [0, 1, 1, "", "get_links_from_graph"], [0, 1, 1, "", "get_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 5, 1, "", "measure"], [0, 1, 1, "", "run_test"], [0, 1, 1, "", "set_dataframe"]], "tigramite.independence_tests.ParCorr": [[0, 1, 1, "", "get_analytic_confidence"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.ParCorrMult": [[0, 1, 1, "", "get_analytic_confidence"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"], [0, 1, 1, "", "mult_corr"]], "tigramite.lpcmci": [[0, 0, 1, "", "LPCMCI"]], "tigramite.lpcmci.LPCMCI": [[0, 1, 1, "", "run_lpcmci"]], "tigramite.models": [[0, 0, 1, "", "LinearMediation"], [0, 0, 1, "", "Models"], [0, 0, 1, "", "Prediction"]], "tigramite.models.LinearMediation": [[0, 1, 1, "", "fit_model"], [0, 1, 1, "", "get_ace"], [0, 1, 1, "", "get_acs"], [0, 1, 1, "", "get_all_ace"], [0, 1, 1, "", "get_all_acs"], [0, 1, 1, "", "get_all_amce"], [0, 1, 1, "", "get_amce"], [0, 1, 1, "", "get_ce"], [0, 1, 1, "", "get_ce_max"], [0, 1, 1, "", "get_coeff"], [0, 1, 1, "", "get_mce"], [0, 1, 1, "", "get_mediation_graph_data"], [0, 1, 1, "", "get_tsg"], [0, 1, 1, "", "get_val_matrix"], [0, 1, 1, "", "net_to_tsg"], [0, 1, 1, "", "tsg_to_net"]], "tigramite.models.Models": [[0, 1, 1, "", "get_coefs"], [0, 1, 1, "", "get_fit"], [0, 1, 1, "", "get_general_fitted_model"], [0, 1, 1, "", "get_general_prediction"], [0, 1, 1, "", "get_val_matrix"]], "tigramite.models.Prediction": [[0, 1, 1, "", "fit"], [0, 1, 1, "", "get_predictors"], [0, 1, 1, "", "get_test_array"], [0, 1, 1, "", "get_train_array"], [0, 1, 1, "", "predict"]], "tigramite.pcmci": [[0, 0, 1, "", "PCMCI"]], "tigramite.pcmci.PCMCI": [[0, 3, 1, "", "N"], [0, 3, 1, "", "T"], [0, 3, 1, "", "all_parents"], [0, 1, 1, "", "convert_to_string_graph"], [0, 1, 1, "", "get_corrected_pvalues"], [0, 1, 1, "", "get_graph_from_pmatrix"], [0, 1, 1, "", "get_lagged_dependencies"], [0, 3, 1, "", "iterations"], [0, 1, 1, "", "print_results"], [0, 1, 1, "", "print_significant_links"], [0, 3, 1, "", "pval_max"], [0, 1, 1, "", "return_parents_dict"], [0, 1, 1, "", "return_significant_links"], [0, 1, 1, "", "run_bivci"], [0, 1, 1, "", "run_fullci"], [0, 1, 1, "", "run_mci"], [0, 1, 1, "", "run_pc_stable"], [0, 1, 1, "", "run_pcalg"], [0, 1, 1, "", "run_pcalg_non_timeseries_data"], [0, 1, 1, "", "run_pcmci"], [0, 1, 1, "", "run_pcmciplus"], [0, 1, 1, "", "run_sliding_window_of"], [0, 1, 1, "", "symmetrize_p_and_val_matrix"], [0, 3, 1, "", "val_min"]], "tigramite.toymodels": [[0, 2, 0, "-", "structural_causal_processes"]], "tigramite.toymodels.structural_causal_processes": [[0, 4, 1, "", "dag_to_links"], [0, 4, 1, "", "links_to_graph"], [0, 4, 1, "", "structural_causal_process"], [0, 4, 1, "", "var_process"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:module", "3": "py:attribute", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "module", "Python module"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"tigramit": 0, "pcmci": 0, "lpcmci": 0, "independence_test": 0, "condit": 0, "independ": 0, "test": 0, "causal_effect": 0, "causal": 0, "effect": 0, "analysi": 0, "model": 0, "time": 0, "seri": 0, "mediat": 0, "predict": 0, "data_process": 0, "data": 0, "process": 0, "function": 0, "toymodel": 0, "toi": 0, "gener": 0, "plot": 0, "indic": 0, "tabl": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 56}}) \ No newline at end of file diff --git a/docs/_modules/index.html b/docs/_modules/index.html index 38cd99d1..275b47ec 100644 --- a/docs/_modules/index.html +++ b/docs/_modules/index.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -67,7 +68,7 @@

                            Quick search

                            - +
                            @@ -87,7 +88,7 @@

                            Navigation

                            \ No newline at end of file diff --git a/docs/_modules/tigramite/causal_effects.html b/docs/_modules/tigramite/causal_effects.html index 3339536b..580971f3 100644 --- a/docs/_modules/tigramite/causal_effects.html +++ b/docs/_modules/tigramite/causal_effects.html @@ -1,16 +1,17 @@ - + - tigramite.causal_effects — Tigramite 5.0 documentation + tigramite.causal_effects — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

                            Navigation

                          • modules |
                          • - +
                          @@ -2695,7 +2696,7 @@

                          Quick search

                          - +
                          @@ -2709,14 +2710,14 @@

                          Navigation

                        • modules |
                        • - +

                        \ No newline at end of file diff --git a/docs/_modules/tigramite/data_processing.html b/docs/_modules/tigramite/data_processing.html index 9794e3a1..53c58376 100644 --- a/docs/_modules/tigramite/data_processing.html +++ b/docs/_modules/tigramite/data_processing.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -1426,7 +1427,7 @@

                        Quick search

                        - +
                        @@ -1447,7 +1448,7 @@

                        Navigation

                        \ No newline at end of file diff --git a/docs/_modules/tigramite/independence_tests/independence_tests_base.html b/docs/_modules/tigramite/independence_tests/independence_tests_base.html index 60a9bd35..0facb7a0 100644 --- a/docs/_modules/tigramite/independence_tests/independence_tests_base.html +++ b/docs/_modules/tigramite/independence_tests/independence_tests_base.html @@ -1,16 +1,17 @@ - + - tigramite.independence_tests.independence_tests_base — Tigramite 5.0 documentation + tigramite.independence_tests.independence_tests_base — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

                        Navigation

                      • modules |
                      • - +

                      @@ -1067,7 +1068,7 @@

                      Quick search

                      - +
                      @@ -1081,14 +1082,14 @@

                      Navigation

                    • modules |
                    • - +

                    \ No newline at end of file diff --git a/docs/_modules/tigramite/independence_tests/parcorr_mult.html b/docs/_modules/tigramite/independence_tests/parcorr_mult.html index 806be44b..6a2abc21 100644 --- a/docs/_modules/tigramite/independence_tests/parcorr_mult.html +++ b/docs/_modules/tigramite/independence_tests/parcorr_mult.html @@ -1,16 +1,17 @@ - + - tigramite.independence_tests.parcorr_mult — Tigramite 5.0 documentation + tigramite.independence_tests.parcorr_mult — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

                    Navigation

                  • modules |
                  • - +

                  @@ -370,7 +371,7 @@

                  Quick search

                  - +
                  @@ -384,14 +385,14 @@

                  Navigation

                • modules |
                • - +

                \ No newline at end of file diff --git a/docs/_modules/tigramite/models.html b/docs/_modules/tigramite/models.html index d2caefb7..07a526db 100644 --- a/docs/_modules/tigramite/models.html +++ b/docs/_modules/tigramite/models.html @@ -1,16 +1,17 @@ - + - tigramite.models — Tigramite 5.0 documentation + tigramite.models — Tigramite 5.1 documentation + @@ -24,7 +25,7 @@

                Navigation

              • modules |
              • - +

              @@ -1268,7 +1269,7 @@

              Source code for tigramite.models

               
                       # Default value for the mask
                       if dataframe.mask is not None:
              -            mask = dataframe.mask[0]
              +            mask = {0: dataframe.mask[0]}
                       else:
                           mask = {0: np.zeros(dataframe.values[0].shape, dtype='bool')}
                       # Get the dataframe shape
              @@ -1600,7 +1601,7 @@ 

              Quick search

              - +
              @@ -1614,14 +1615,14 @@

              Navigation

            • modules |
            • - +

            \ No newline at end of file diff --git a/docs/_modules/tigramite/pcmci.html b/docs/_modules/tigramite/pcmci.html index 158944eb..7ee83962 100644 --- a/docs/_modules/tigramite/pcmci.html +++ b/docs/_modules/tigramite/pcmci.html @@ -1,18 +1,18 @@ - + - + - - - tigramite.pcmci — Tigramite 5.0 documentation - - - - - - + + + tigramite.pcmci — Tigramite 5.1 documentation + + + + + + + @@ -25,26 +25,11 @@

            Navigation

          • modules |
          • - - + + +
          - - +
          @@ -58,11 +43,11 @@

          Source code for tigramite.pcmci

           #
           # License: GNU General Public License v3.0
           
          -from __future__ import print_function
          +from __future__ import print_function
           import warnings
           import itertools
          -from collections import defaultdict
          -from copy import deepcopy
          +from collections import defaultdict
          +from copy import deepcopy
           import numpy as np
           import scipy.stats
           
          @@ -195,7 +180,7 @@ 

          Source code for tigramite.pcmci

                   Time series sample length of dataset(s).
               """
           
          -    def __init__(self, dataframe,
          +    def __init__(self, dataframe,
                            cond_ind_test,
                            selected_variables=None,
                            verbosity=0):
          @@ -4135,11 +4120,11 @@ 

          Source code for tigramite.pcmci

           
           
           if __name__ == '__main__':
          -    from tigramite.independence_tests import ParCorr, CMIknn, ParCorrMult
          +    from tigramite.independence_tests import ParCorr, CMIknn, ParCorrMult
               import tigramite.data_processing_vector as pp
          -    from tigramite.toymodels import structural_causal_processes as toys
          +    from tigramite.toymodels import structural_causal_processes as toys
               import tigramite.plotting as tp
          -    from matplotlib import pyplot as plt
          +    from matplotlib import pyplot as plt
               np.random.seed(43)
           
               # Example process to play around with
          @@ -4171,9 +4156,24 @@ 

          Source code for tigramite.pcmci

           
           
          +
          +

        \ No newline at end of file diff --git a/docs/_modules/tigramite/toymodels/structural_causal_processes.html b/docs/_modules/tigramite/toymodels/structural_causal_processes.html index 4bbbea64..4a294553 100644 --- a/docs/_modules/tigramite/toymodels/structural_causal_processes.html +++ b/docs/_modules/tigramite/toymodels/structural_causal_processes.html @@ -1,18 +1,18 @@ - + - + - - - tigramite.toymodels.structural_causal_processes — Tigramite 5.0 documentation - - - - - - + + + tigramite.toymodels.structural_causal_processes — Tigramite 5.1 documentation + + + + + + + @@ -25,26 +25,11 @@

        Navigation

      • modules |
      • - - + + +

      - - +
      @@ -57,8 +42,8 @@

      Source code for tigramite.toymodels.structural_causal_processes

      # Author: Jakob Runge <jakob@jakob-runge.com> # # License: GNU General Public License v3.0 -from __future__ import print_function -from collections import defaultdict, OrderedDict +from __future__ import print_function +from collections import defaultdict, OrderedDict import sys import warnings import copy @@ -66,7 +51,7 @@

      Source code for tigramite.toymodels.structural_causal_processes

      import numpy as np import scipy.sparse import scipy.sparse.linalg -from numba import jit +from numba import jit def _generate_noise(covar_matrix, time=1000, use_inverse=False): """ @@ -568,7 +553,7 @@

      Source code for tigramite.toymodels.structural_causal_processes

      vertices : list List of nodes. """ - def __init__(self,vertices): + def __init__(self,vertices): self.graph = defaultdict(list) self.V = vertices @@ -918,7 +903,7 @@

      Source code for tigramite.toymodels.structural_causal_processes

      class _Logger(object): """Class to append print output to a string which can be saved""" - def __init__(self): + def __init__(self): self.terminal = sys.stdout self.log = "" # open("log.dat", "a") @@ -950,9 +935,24 @@

      Source code for tigramite.toymodels.structural_causal_processes

      print(links_to_graph(links))
      +
      +

    \ No newline at end of file diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt index f2da5d6a..fa71eaf6 100644 --- a/docs/_sources/index.rst.txt +++ b/docs/_sources/index.rst.txt @@ -145,6 +145,7 @@ Derived classes: .. automodule:: tigramite.plotting :members: + Indices and tables ================== diff --git a/docs/genindex.html b/docs/genindex.html index 618bb57d..8c45ac6d 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -605,7 +606,7 @@

    Quick search

    - +
    @@ -625,7 +626,7 @@

    Navigation

    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 2b130d50..42206c34 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,10 +1,10 @@ - + - + TIGRAMITE — Tigramite 5.1 documentation @@ -12,6 +12,7 @@ + @@ -36,7 +37,7 @@

    Navigation

    -

    TIGRAMITE¶

    +

    TIGRAMITE¶

    Github repo

    Tigramite is a causal time series analysis python package. It allows to efficiently estimate causal graphs from high-dimensional time series datasets (causal discovery) and to use these graphs for robust forecasting and the estimation and prediction of direct, total, and mediated effects. Causal discovery is based on linear as well as non-parametric conditional independence tests applicable to discrete or continuously-valued time series. Also includes functions for high-quality plots of the results. Please cite the following papers depending on which method you use:

      @@ -52,11 +53,7 @@

      TIGRAMITE

    -

    tigramite.pcmci.PCMCI(dataframe, cond_ind_test)

    PCMCI causal discovery for time series datasets.

    ---- +
    @@ -110,16 +107,16 @@

    TIGRAMITE -

    tigramite.pcmci: PCMCI¶

    +

    tigramite.pcmci: PCMCI¶

    class tigramite.pcmci.PCMCI(dataframe, cond_ind_test, selected_variables=None, verbosity=0)[source]¶

    PCMCI causal discovery for time series datasets.

    PCMCI is a causal discovery framework for large-scale time series datasets. This class contains several methods. The standard PCMCI method -addresses time-lagged causal discovery and is described in 1 where +addresses time-lagged causal discovery and is described in [1] where also further sub-variants are discussed. Lagged as well as contemporaneous -causal discovery is addressed with PCMCIplus and described in 5. See the +causal discovery is addressed with PCMCIplus and described in [5]. See the tutorials for guidance in applying these methods.

    PCMCI has:

      @@ -153,22 +150,24 @@

      hypothetical interventions, you may better look at the causal effect estimation functionality of Tigramite.

      References

      -
      -
      1(1,2,3,4,5,6,7,8,9,10)
      -

      J. Runge, P. Nowack, M. Kretschmer, S. Flaxman, D. Sejdinovic, +

      -
      5(1,2,3,4,5)
      -

      J. Runge, + +

      -
      +
      -
      Parameters
      +
      Parameters:
      • dataframe (data object) – This is the Tigramite dataframe object. Among others, it has the attributes dataframe.values yielding a numpy array of shape ( @@ -188,7 +187,7 @@

        Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing the conditioning-parents estimated with PC algorithm.

        -
        Type
        +
        Type:

        dictionary

        @@ -201,7 +200,7 @@

        containing the minimum test statistic value for each link estimated in the PC algorithm.

        -
        Type
        +
        Type:

        dictionary

        @@ -213,7 +212,7 @@

        Dictionary of form pval_max[j][(i, -tau)] = float containing the maximum p-value for each link estimated in the PC algorithm.

        -
        Type
        +
        Type:

        dictionary

        @@ -224,7 +223,7 @@

        iterations¶

        Dictionary containing further information on algorithm steps.

        -
        Type
        +
        Type:

        dictionary

        @@ -235,7 +234,7 @@

        N¶

        Number of variables.

        -
        Type
        +
        Type:

        int

        @@ -246,7 +245,7 @@

        T¶

        Time series sample length of dataset(s).

        -
        Type
        +
        Type:

        dict

        @@ -258,13 +257,13 @@

        Converts the 0,1-based graph returned by PCMCI to a string array with links ‘–>’.

        -
        Parameters
        +
        Parameters:

        graph_bool (array) – 0,1-based graph array output by PCMCI.

        -
        Returns
        +
        Returns:

        graph – graph as string array with links ‘–>’.

        -
        Return type
        +
        Return type:

        array

        @@ -278,7 +277,7 @@

        method. Correction is performed either among all links if exclude_contemporaneous==False, or only among lagged links.

        -
        Parameters
        +
        Parameters:
        • p_matrix (array-like) – Matrix of p-values. Must be of shape (N, N, tau_max + 1).

        • tau_min (int, default: 0) – Minimum time lag. Only used as consistency check of selected_links.

        • @@ -292,10 +291,10 @@

        • exclude_contemporaneous (bool, optional (default: True)) – Whether to include contemporaneous links in correction.

        -
        Returns
        +
        Returns:

        q_matrix – Matrix of shape (N, N, tau_max + 1) containing corrected p-values.

        -
        Return type
        +
        Return type:

        array-like

        @@ -307,7 +306,7 @@

        Construct graph from thresholding the p_matrix at an alpha-level.

        Allows to take into account selected_links.

        -
        Parameters
        +
        Parameters:
        • p_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of p-values, optionally adjusted if fdr_method is not ‘none’.

        • @@ -320,10 +319,10 @@

          passed, all links are tested.

        -
        Returns
        +
        Returns:

        graph – Causal graph, see description above for interpretation.

        -
        Return type
        +
        Return type:

        array of shape [N, N, tau_max+1]

        @@ -338,7 +337,7 @@

        p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

        -
        Parameters
        +
        Parameters:
        • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -352,7 +351,7 @@

          False Discovery Rate method (‘fdr_bh’).

        -
        Returns
        +
        Returns:

        • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

        • @@ -372,7 +371,7 @@

          print_results(return_dict, alpha_level=0.05)[source]¶

          Prints significant parents from output of MCI or PCMCI algorithms.

          -
          Parameters
          +
          Parameters:
          • return_dict (dict) –

            Dictionary of return values, containing keys
              @@ -396,7 +395,7 @@

              Used for output of PCMCI and PCMCIplus. For the latter also information on ambiguous links and conflicts is returned.

              -
              Parameters
              +
              Parameters:
              • alpha_level (float, optional (default: 0.05)) – Significance level.

              • p_matrix (array-like) – Must be of shape (N, N, tau_max + 1).

              • @@ -416,7 +415,7 @@

                If parents are unclear (link with o or x), then no parent is returned.

                -
                Parameters
                +
                Parameters:
                • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                • val_matrix (array-like) – Matrix of test statistic values. Must be of shape (N, N, tau_max + @@ -425,11 +424,11 @@

                  zero.

                -
                Returns
                +
                Returns:

                parents_dict – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing estimated parents.

                -
                Return type
                +
                Return type:

                dict

                @@ -446,12 +445,12 @@

                run_bivci(selected_links=None, tau_min=0, tau_max=1, val_only=False, alpha_level=0.05, fdr_method='none')[source]¶

                BivCI conditional independence tests.

                -

                Implements the BivCI test (see 1).

                +

                Implements the BivCI test (see [1]).

                Returns the matrices of test statistic values, (optionally corrected) p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

                -
                Parameters
                +
                Parameters:
                • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -465,7 +464,7 @@

                  False Discovery Rate method.

                -
                Returns
                +
                Returns:

                • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                • @@ -484,12 +483,12 @@

                  run_fullci(selected_links=None, tau_min=0, tau_max=1, val_only=False, alpha_level=0.05, fdr_method='none')[source]¶

                  FullCI conditional independence tests.

                  -

                  Implements the FullCI test (see 1).

                  +

                  Implements the FullCI test (see [1]).

                  Returns the matrices of test statistic values, (optionally corrected) p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

                  -
                  Parameters
                  +
                  Parameters:
                  • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -503,7 +502,7 @@

                    False Discovery Rate method (‘fdr_bh’).

                  -
                  Returns
                  +
                  Returns:

                  • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                  • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                  • @@ -522,12 +521,12 @@

                    run_mci(selected_links=None, tau_min=0, tau_max=1, parents=None, max_conds_py=None, max_conds_px=None, val_only=False, alpha_level=0.05, fdr_method='none')[source]¶

                    MCI conditional independence tests.

                    -

                    Implements the MCI test (Algorithm 2 in 1).

                    +

                    Implements the MCI test (Algorithm 2 in [1]).

                    Returns the matrices of test statistic values, (optionally corrected) p-values, and (optionally) confidence intervals. Also (new in 4.3) returns graph based on alpha_level (and optional FDR-correction).

                    -
                    Parameters
                    +
                    Parameters:
                    • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -548,7 +547,7 @@

                      False Discovery Rate method (‘fdr_bh’).

                    -
                    Returns
                    +
                    Returns:

                    • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                    • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                    • @@ -569,7 +568,7 @@

                      Lagged PC algorithm for estimating lagged parents of all variables.

                      Parents are made available as self.all_parents

                      -
                      Parameters
                      +
                      Parameters:
                      • selected_links (dict or None) – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -589,11 +588,11 @@

                        a larger number, such as 10, can be used.

                      -
                      Returns
                      +
                      Returns:

                      all_parents – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing estimated parents.

                      -
                      Return type
                      +
                      Return type:

                      dict

                      @@ -605,10 +604,10 @@

                      Runs PC algorithm for time-lagged and contemporaneous causal discovery for time series.

                      For mode='contemp_conds' this implements Steps 2-4 of the -PCMCIplus method described in 5. For mode='standard' this +PCMCIplus method described in [5]. For mode='standard' this implements the standard PC algorithm adapted to time series.

                      -
                      Parameters
                      +
                      Parameters:
                      • selected_links (dict or None) – Dictionary of form {0: [(3, 0), (0, -1), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -640,7 +639,7 @@

                        tests. If None is passed, this number is equal to max_conds_px.

                      -
                      Returns
                      +
                      Returns:

                      • graph (array of shape [N, N, tau_max+1]) – Resulting causal graph, see description above for interpretation.

                      • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values regarding adjacencies.

                      • @@ -661,7 +660,7 @@

                        Simply calls run_pcalg with tau_min = tau_max = 0. Removes lags from ouput dictionaries.

                        -
                        Parameters
                        +
                        Parameters:
                        • pc_alpha (float, optional (default: 0.01)) – Significance level.

                        • contemp_collider_rule ({'majority', 'conservative', 'none'}) – Rule for collider phase to use. See the paper for details. Only @@ -675,7 +674,7 @@

                          to test.

                        -
                        Returns
                        +
                        Returns:

                        • graph (array of shape [N, N, 1]) – Resulting causal graph, see description above for interpretation.

                        • val_matrix (array of shape [N, N, 1]) – Estimated matrix of test statistic values regarding adjacencies.

                        • @@ -738,7 +737,7 @@

                          list of values is given or pc_alpha=None, \alpha is optimized using model selection criteria implemented in the respective tigramite.independence_tests.

                          -

                          Further optional parameters are discussed in 1.

                          +

                          Further optional parameters are discussed in [1].

                          Examples

                          >>> import numpy
                           >>> from tigramite.pcmci import PCMCI
                          @@ -779,7 +778,7 @@ 

                        -
                        Parameters
                        +
                        Parameters:
                        • selected_links (dict or None) – Dictionary of form {0: [(3, -2), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -803,7 +802,7 @@

                          False Discovery Rate method.

                        -
                        Returns
                        +
                        Returns:

                        • graph (array of shape [N, N, tau_max+1]) – Causal graph, see description above for interpretation.

                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                        • @@ -823,10 +822,10 @@

                          run_pcmciplus(selected_links=None, tau_min=0, tau_max=1, pc_alpha=0.01, contemp_collider_rule='majority', conflict_resolution=True, reset_lagged_links=False, max_conds_dim=None, max_conds_py=None, max_conds_px=None, max_conds_px_lagged=None, fdr_method='none')[source]¶

                          Runs PCMCIplus time-lagged and contemporaneous causal discovery for time series.

                          -

                          Method described in 5: +

                          Method described in [5]: http://www.auai.org/~w-auai/uai2020/proceedings/579_main_paper.pdf

                          Notes

                          -

                          The PCMCIplus causal discovery method is described in 5, where +

                          The PCMCIplus causal discovery method is described in [5], where also analytical and numerical results are presented. In contrast to PCMCI, PCMCIplus can identify the full, lagged and contemporaneous, causal graph (up to the Markov equivalence class for contemporaneous @@ -906,7 +905,7 @@

                          reset_lagged_links=True, all lagged links are considered again, which improves detection power for lagged links, but also leads to larger runtimes.

                          -

                          Further optional parameters are discussed in 5.

                          +

                          Further optional parameters are discussed in [5].

                          Examples

                          >>> import numpy as np
                           >>> from tigramite.pcmci import PCMCI
                          @@ -951,7 +950,7 @@ 

                        -
                        Parameters
                        +
                        Parameters:
                        • selected_links (dict or None) – Dictionary of form {0: [(3, 0), (0, -1), …], 1:[], …} specifying whether only selected links should be tested. If None is @@ -984,7 +983,7 @@

                          Rate method.

                        -
                        Returns
                        +
                        Returns:

                        • graph (array of shape [N, N, tau_max+1]) – Resulting causal graph, see description above for interpretation.

                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values regarding adjacencies.

                        • @@ -1011,7 +1010,7 @@

                          containing the occurence frequency of the most frequent link outcome, are returned.

                          -
                          Parameters
                          +
                          Parameters:
                          • method (str) – Chosen method among valid functions in PCMCI.

                          • method_args (dict) – Arguments passed to method.

                          • @@ -1020,7 +1019,7 @@

                          • conf_lev (float, optional (default: 0.9)) – Two-sided confidence interval for summary results.

                          -
                          Return type
                          +
                          Return type:

                          Dictionary of results for every sliding window.

                          @@ -1034,7 +1033,7 @@

                        -
                        Parameters
                        +
                        Parameters:
                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                        • p_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of p-values. Set to 1 if val_only=True.

                        • @@ -1046,7 +1045,7 @@

                          passed, all links are tested.

                        -
                        Returns
                        +
                        Returns:

                        • val_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of test statistic values.

                        • p_matrix (array of shape [N, N, tau_max+1]) – Estimated matrix of p-values. Set to 1 if val_only=True.

                        • @@ -1063,7 +1062,7 @@

                          -

                          tigramite.lpcmci: LPCMCI¶

                          +

                          tigramite.lpcmci: LPCMCI¶

                          class tigramite.lpcmci.LPCMCI(dataframe, cond_ind_test, verbosity=0)[source]¶
                          @@ -1267,7 +1266,7 @@

                          -

                          tigramite.independence_tests: Conditional independence tests¶

                          +

                          tigramite.independence_tests: Conditional independence tests¶

                          Base class:

                          @@ -1277,7 +1276,7 @@

                          shuffle significance testing and bootstrap confidence estimation. Also handles masked samples. Other test classes can inherit from this class.

                          -
                          Parameters
                          +
                          Parameters:
                          • seed (int, optional(default = 42)) – Seed for RandomState (default_rng)

                          • mask_type (str, optional (default = None)) – Must be in {None, ‘y’,’x’,’z’,’xy’,’xz’,’yz’,’xyz’} @@ -1291,14 +1290,14 @@

                          • sig_samples (int, optional (default: 1000)) – Number of samples for shuffle significance test.

                          • sig_blocklength (int, optional (default: None)) – Block length for block-shuffle significance test. If None, the block length is determined from the decay of the autocovariance as -explained in 1.

                          • +explained in [1].

                          • confidence (str, optional (default: None)) – Specify type of confidence estimation. If False, numpy.nan is returned. ‘bootstrap’ can be used with any test, for ParCorr also ‘analytic’ is implemented.

                          • conf_lev (float, optional (default: 0.9)) – Two-sided confidence interval.

                          • conf_samples (int, optional (default: 100)) – Number of samples for bootstrap.

                          • conf_blocklength (int, optional (default: None)) – Block length for block-bootstrap. If None, the block length is -determined from the decay of the autocovariance as explained in 1.

                          • +determined from the decay of the autocovariance as explained in [1].

                          • recycle_residuals (bool, optional (default: False)) – Specifies whether residuals should be stored. This may be faster, but can cost considerable memory.

                          • verbosity (int, optional (default: 0)) – Level of verbosity.

                          • @@ -1325,7 +1324,7 @@

                            Perform bootstrap confidence interval estimation.

                            With conf_blocklength > 1 or None a block-bootstrap is performed.

                            -
                            Parameters
                            +
                            Parameters:
                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                            • @@ -1335,14 +1334,14 @@

                            • conf_samples (int, optional (default: 100)) – Number of samples for bootstrap.

                            • conf_blocklength (int, optional (default: None)) – Block length for block-bootstrap. If None, the block length is determined from the decay of the autocovariance as explained in -1.

                            • +[1].

                            • verbosity (int, optional (default: 0)) – Level of verbosity.

                            -
                            Returns
                            +
                            Returns:

                            (conf_lower, conf_upper) – Upper and lower confidence bound of confidence interval.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1357,7 +1356,7 @@

                            get_analytic_confidence or get_bootstrap_confidence. If confidence is False, (numpy.nan, numpy.nan) is returned.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index and tau the time lag.

                            • @@ -1369,10 +1368,10 @@

                              different lags in X, Z, all have the same sample size.

                            -
                            Returns
                            +
                            Returns:

                            (conf_lower, conf_upper) – Upper and lower confidence bound of confidence interval.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1390,17 +1389,17 @@

                            Returns signficance for thresholding test.

                            Returns 0 if numpy.abs(value) is smaller than fixed_thres and 1 else.

                            -
                            Parameters
                            +
                            Parameters:
                            • value (number) – Value of test statistic for unshuffled estimate.

                            • fixed_thres (number) – Fixed threshold, is made positive.

                            -
                            Returns
                            +
                            Returns:

                            pval – Returns 0 if numpy.abs(value) is smaller than fixed_thres and 1 else.

                            -
                            Return type
                            +
                            Return type:

                            bool

                            @@ -1413,7 +1412,7 @@

                            Calls the dependence measure function. The child classes must specify a function get_dependence_measure.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index and tau the time lag.

                            • @@ -1425,10 +1424,10 @@

                              different lags in X, Z, all have the same sample size.

                            -
                            Returns
                            +
                            Returns:

                            val – The test statistic value.

                            -
                            Return type
                            +
                            Return type:

                            float

                            @@ -1455,7 +1454,7 @@

                            for this test. If an override is used, then it will call a different function then specified by self.significance

                            -
                            Parameters
                            +
                            Parameters:
                            • val (float) – Test statistic value.

                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                            • @@ -1465,10 +1464,10 @@

                            • sig_override (string) – Must be in ‘analytic’, ‘shuffle_test’, ‘fixed_thres’

                            -
                            Returns
                            +
                            Returns:

                            pval – P-value.

                            -
                            Return type
                            +
                            Return type:

                            float or numpy.nan

                            @@ -1496,7 +1495,7 @@

                            If recycle_residuals is True, also _get_single_residuals must be available.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index and tau the time lag.

                            • @@ -1514,10 +1513,10 @@

                              ‘max_lag’ uses as much samples as possible.

                            -
                            Returns
                            +
                            Returns:

                            val, pval – The test statistic value and the p-value.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1531,17 +1530,17 @@

                            classes must specify a function get_dependence_measure and either or both functions get_analytic_significance and get_shuffle_significance.

                            -
                            Parameters
                            +
                            Parameters:
                            • x (arrays) – x,y,z are of the form (samples, dimension).

                            • y (arrays) – x,y,z are of the form (samples, dimension).

                            • z (arrays) – x,y,z are of the form (samples, dimension).

                            -
                            Returns
                            +
                            Returns:

                            val, pval – The test statistic value and the p-value.

                            -
                            Return type
                            +
                            Return type:

                            Tuple of floats

                            @@ -1552,7 +1551,7 @@

                            set_dataframe(dataframe)[source]¶

                          Initialize and check the dataframe.

                          -
                          Parameters
                          +
                          Parameters:

                          dataframe (data object) – Set tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and optionally a mask of the same shape and a missing @@ -1567,7 +1566,7 @@

                          Setter for mask type to ensure that this option does not clash with recycle_residuals.

                          -
                          Parameters
                          +
                          Parameters:

                          mask_type (str) – Must be in {None, ‘y’,’x’,’z’,’xy’,’xz’,’yz’,’xyz’} Masking mode: Indicators for which variables in the dependence measure I(X; Y | Z) the samples should be masked. If None, the mask is not used. @@ -1599,7 +1598,7 @@

                          For the significance='analytic' Student’s-t distribution with T-D_Z-2 degrees of freedom is implemented.

                          -
                          Parameters
                          +
                          Parameters:

                          **kwargs – Arguments passed on to Parent class CondIndTest.

                          @@ -1609,17 +1608,17 @@

                          Returns analytic confidence interval for correlation coefficient.

                          Based on Student’s t-distribution.

                          -
                          Parameters
                          +
                          Parameters:
                          • value (float) – Test statistic value.

                          • df (int) – degrees of freedom of the test

                          • conf_lev (float) – Confidence interval, eg, 0.9

                          -
                          Returns
                          +
                          Returns:

                          (conf_lower, conf_upper) – Upper and lower confidence bound of confidence interval.

                          -
                          Return type
                          +
                          Return type:

                          Tuple of floats

                          @@ -1633,17 +1632,17 @@

                          Assumes two-sided correlation. If the degrees of freedom are less than 1, numpy.nan is returned.

                          -
                          Parameters
                          +
                          Parameters:
                          • value (float) – Test statistic value.

                          • T (int) – Sample length

                          • dim (int) – Dimensionality, ie, number of features.

                          -
                          Returns
                          +
                          Returns:

                          pval – P-value.

                          -
                          Return type
                          +
                          Return type:

                          float or numpy.nan

                          @@ -1656,16 +1655,16 @@

                          Estimated as the Pearson correlation of the residuals of a linear OLS regression.

                          -
                          Parameters
                          +
                          Parameters:
                          • array (array-like) – data array with X, Y, Z in rows and observations in columns

                          • xyz (array of ints) – XYZ identifier array of shape (dim,).

                          -
                          Returns
                          +
                          Returns:

                          val – Partial correlation coefficient.

                          -
                          Return type
                          +
                          Return type:

                          float

                          @@ -1680,7 +1679,7 @@

                          AIC for ordinary linear regression models. Here used to determine optimal hyperparameters in PCMCI, in particular the pc_alpha value.

                          -
                          Parameters
                          +
                          Parameters:
                          • j (int) – Index of target variable in data array.

                          • parents (list) – List of form [(0, -1), (3, -2), …] containing parents.

                          • @@ -1699,17 +1698,17 @@

                            Returns p-value for shuffle significance test.

                            For residual-based test statistics only the residuals are shuffled.

                            -
                            Parameters
                            +
                            Parameters:
                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                            • value (number) – Value of test statistic for unshuffled estimate.

                            -
                            Returns
                            +
                            Returns:

                            pval – p-value

                            -
                            Return type
                            +
                            Return type:

                            float

                            @@ -1728,7 +1727,7 @@

                            class tigramite.independence_tests.GPDC(null_dist_filename=None, gp_params=None, **kwargs)[source]¶

                            GPDC conditional independence test based on Gaussian processes and distance correlation.

                            GPDC is based on a Gaussian process (GP) regression and a distance -correlation test on the residuals 2. GP is estimated with scikit-learn +correlation test on the residuals [2]. GP is estimated with scikit-learn and allows to flexibly specify kernels and hyperparameters or let them be optimized automatically. The distance correlation test is implemented with cython. Here the null distribution is not analytically available, but can be @@ -1738,7 +1737,7 @@

                            Notes

                            GPDC is based on a Gaussian process (GP) regression and a distance correlation test on the residuals. Distance correlation is described in -2. To test X \perp Y | Z, first Z is regressed out from +[2]. To test X \perp Y | Z, first Z is regressed out from X and Y assuming the model

                            X & =  f_X(Z) + \epsilon_{X} \\
@@ -1752,15 +1751,15 @@ <h1><code class=

                            The null distribution of the distance correlation should be pre-computed. Otherwise it is computed during runtime.

                            References

                            -
                            -
                            2(1,2,3,4)
                            -

                            Gabor J. Szekely, Maria L. Rizzo, and Nail K. Bakirov: Measuring and +

                            -
                            +
                            -
                            Parameters
                            +
                            Parameters:
                            • null_dist_filename (str, otional (default: None)) – Path to file containing null distribution.

                            • gp_params (dictionary, optional (default: None)) – Dictionary with parameters for GaussianProcessRegressor.

                            • @@ -1778,7 +1777,7 @@

                              self.null_dist_filename.npz. Also adds the null distributions to self.gauss_pr.null_dists.

                              -
                              Parameters
                              +
                              Parameters:
                              • sample_sizes (list) – List of sample sizes.

                              • null_dist_filename (str) – Name to save file containing null distributions.

                              • @@ -1796,17 +1795,17 @@

                                available in class and generates self.sig_samples random samples. Adds the null distributions to self.gauss_pr.null_dists.

                                -
                                Parameters
                                +
                                Parameters:
                                • df (int) – Degrees of freedom / sample size to generate null distribution for.

                                • add_to_null_dists (bool, optional (default: True)) – Whether to add the null dist to the dictionary of null dists or just return it.

                                -
                                Returns
                                +
                                Returns:

                                null_dist – Only returned,if add_to_null_dists is False.

                                -
                                Return type
                                +
                                Return type:

                                array of shape [df,]

                                @@ -1824,17 +1823,17 @@

                                is one-sided. If the degrees of freedom are less than 1, numpy.nan is returned.

                                -
                                Parameters
                                +
                                Parameters:
                                • value (float) – Test statistic value.

                                • T (int) – Sample length

                                • dim (int) – Dimensionality, ie, number of features.

                                -
                                Returns
                                +
                                Returns:

                                pval – p-value.

                                -
                                Return type
                                +
                                Return type:

                                float or numpy.nan

                                @@ -1847,16 +1846,16 @@

                                Estimated as the distance correlation of the residuals of a GP regression.

                                -
                                Parameters
                                +
                                Parameters:
                                • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                -
                                Returns
                                +
                                Returns:

                                val – GPDC test statistic.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -1870,7 +1869,7 @@

                                log marginal likelihood as a model selection score. Is used to determine optimal hyperparameters in PCMCI, in particular the pc_alpha value.

                                -
                                Parameters
                                +
                                Parameters:
                                • j (int) – Index of target variable in data array.

                                • parents (list) – List of form [(0, -1), (3, -2), …] containing parents.

                                • @@ -1889,17 +1888,17 @@

                                  Returns p-value for shuffle significance test.

                                  For residual-based test statistics only the residuals are shuffled.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                  • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                  • value (number) – Value of test statistic for unshuffled estimate.

                                  -
                                  Returns
                                  +
                                  Returns:

                                  pval – p-value

                                  -
                                  Return type
                                  +
                                  Return type:

                                  float

                                  @@ -1918,7 +1917,7 @@

                                  class tigramite.independence_tests.GPDCtorch(null_dist_filename=None, **kwargs)[source]¶

                                  GPDC conditional independence test based on Gaussian processes and distance correlation. Here with gpytorch implementation.

                                  GPDC is based on a Gaussian process (GP) regression and a distance -correlation test on the residuals 2. GP is estimated with gpytorch. +correlation test on the residuals [2]. GP is estimated with gpytorch. The distance correlation test is implemented with the dcor package available from pip. Here the null distribution is not analytically available, but can be precomputed with the function generate_and_save_nulldists(…) which saves a @@ -1927,7 +1926,7 @@

                                  Notes

                                  GPDC is based on a Gaussian process (GP) regression and a distance correlation test on the residuals. Distance correlation is described in -2. To test X \perp Y | Z, first Z is regressed out from +[2]. To test X \perp Y | Z, first Z is regressed out from X and Y assuming the model

                                  X & =  f_X(Z) + \epsilon_{X} \\
@@ -1941,7 +1940,7 @@ <h1><code class=

                                  The null distribution of the distance correlation should be pre-computed. Otherwise it is computed during runtime.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • null_dist_filename (str, otional (default: None)) – Path to file containing null distribution.

                                  • **kwargs – Arguments passed on to parent class GaussProcRegTorch.

                                  • @@ -1958,7 +1957,7 @@

                                    self.null_dist_filename.npz. Also adds the null distributions to self.gauss_pr.null_dists.

                                    -
                                    Parameters
                                    +
                                    Parameters:
                                    • sample_sizes (list) – List of sample sizes.

                                    • null_dist_filename (str) – Name to save file containing null distributions.

                                    • @@ -1976,17 +1975,17 @@

                                      available in class and generates self.sig_samples random samples. Adds the null distributions to self.gauss_pr.null_dists.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • df (int) – Degrees of freedom / sample size to generate null distribution for.

                                      • add_to_null_dists (bool, optional (default: True)) – Whether to add the null dist to the dictionary of null dists or just return it.

                                      -
                                      Returns
                                      +
                                      Returns:

                                      null_dist – Only returned,if add_to_null_dists is False.

                                      -
                                      Return type
                                      +
                                      Return type:

                                      array of shape [df,]

                                      @@ -2004,17 +2003,17 @@

                                      is one-sided. If the degrees of freedom are less than 1, numpy.nan is returned.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • value (float) – Test statistic value.

                                      • T (int) – Sample length

                                      • dim (int) – Dimensionality, ie, number of features.

                                      -
                                      Returns
                                      +
                                      Returns:

                                      pval – p-value.

                                      -
                                      Return type
                                      +
                                      Return type:

                                      float or numpy.nan

                                      @@ -2027,16 +2026,16 @@

                                      Estimated as the distance correlation of the residuals of a GP regression.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                      • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                      -
                                      Returns
                                      +
                                      Returns:

                                      val – GPDC test statistic.

                                      -
                                      Return type
                                      +
                                      Return type:

                                      float

                                      @@ -2050,7 +2049,7 @@

                                      log marginal likelihood as a model selection score. Is used to determine optimal hyperparameters in PCMCI, in particular the pc_alpha value.

                                      -
                                      Parameters
                                      +
                                      Parameters:
                                      • j (int) – Index of target variable in data array.

                                      • parents (list) – List of form [(0, -1), (3, -2), …] containing parents.

                                      • @@ -2069,17 +2068,17 @@

                                        Returns p-value for shuffle significance test.

                                        For residual-based test statistics only the residuals are shuffled.

                                        -
                                        Parameters
                                        +
                                        Parameters:
                                        • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                        • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                        • value (number) – Value of test statistic for unshuffled estimate.

                                        -
                                        Returns
                                        +
                                        Returns:

                                        pval – p-value

                                        -
                                        Return type
                                        +
                                        Return type:

                                        float

                                        @@ -2103,7 +2102,7 @@

                                        joint density. The test here is based on the estimator in S. Frenzel and B. Pompe, Phys. Rev. Lett. 99, 204101 (2007), combined with a shuffle test to generate the distribution under the null hypothesis of independence first -used in 3. The knn-estimator is suitable only for variables taking a +used in [3]. The knn-estimator is suitable only for variables taking a continuous range of values. For discrete variables use the CMIsymb class.

                                        Notes

                                        CMI is given by

                                        @@ -2127,17 +2126,16 @@

                                        negative quantity.

                                        This method requires the scipy.spatial.cKDTree package.

                                        References

                                        -
                                        -
                                        3
                                        -

                                        J. Runge (2018): Conditional Independence Testing Based on a +

                                        -
                                        +
                                        -
                                        Parameters
                                        +
                                        Parameters:
                                        • knn (int or float, optional (default: 0.2)) – Number of nearest-neighbors which determines the size of hyper-cubes around each (high-dimensional) sample point. If smaller than 1, this is @@ -2162,17 +2160,17 @@

                                          get_conditional_entropy(array, xyz)[source]¶

                                          Returns the nearest-neighbor conditional entropy estimate of H(X|Y).

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • array (array-like) – data array with X, Y in rows and observations in columns

                                          • xyz (array of ints) – XYZ identifier array of shape (dim,). Here only uses 0 for X and 1 for Y.

                                          -
                                          Returns
                                          +
                                          Returns:

                                          val – Entropy estimate.

                                          -
                                          Return type
                                          +
                                          Return type:

                                          float

                                          @@ -2183,16 +2181,16 @@

                                          get_dependence_measure(array, xyz)[source]¶

                                          Returns CMI estimate as described in Frenzel and Pompe PRL (2007).

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                          • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                          -
                                          Returns
                                          +
                                          Returns:

                                          val – Conditional mutual information estimate.

                                          -
                                          Return type
                                          +
                                          Return type:

                                          float

                                          @@ -2209,17 +2207,17 @@

                                          z_j is among the nearest niehgbors of z_i. If Z is empty, the block-shuffle test is used.

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                          • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                          • value (number) – Value of test statistic for unshuffled estimate.

                                          -
                                          Returns
                                          +
                                          Returns:

                                          pval – p-value

                                          -
                                          Return type
                                          +
                                          Return type:

                                          float

                                          @@ -2252,7 +2250,7 @@

                                          I(X;Y|Z) &= \sum p(z)  \sum \sum  p(x,y|z) \log
 \frac{ p(x,y |z)}{p(x|z)\cdot p(y |z)} \,dx dy dz

                                          -
                                          Parameters
                                          +
                                          Parameters:
                                          • n_symbs (int, optional (default: None)) – Number of symbols in input data. Should be at least as large as the maximum array entry + 1. If None, n_symbs is based on the @@ -2270,16 +2268,16 @@

                                            get_dependence_measure(array, xyz)[source]¶

                                            Returns CMI estimate based on bincount histogram.

                                            -
                                            Parameters
                                            +
                                            Parameters:
                                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                            -
                                            Returns
                                            +
                                            Returns:

                                            val – Conditional mutual information estimate.

                                            -
                                            Return type
                                            +
                                            Return type:

                                            float

                                            @@ -2291,17 +2289,17 @@

                                            Returns p-value for shuffle significance test.

                                            For residual-based test statistics only the residuals are shuffled.

                                            -
                                            Parameters
                                            +
                                            Parameters:
                                            • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                            • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                            • value (number) – Value of test statistic for unshuffled estimate.

                                            -
                                            Returns
                                            +
                                            Returns:

                                            pval – p-value

                                            -
                                            Return type
                                            +
                                            Return type:

                                            float

                                            @@ -2324,7 +2322,7 @@

                                            Class can be used just like a Tigramite conditional independence class (e.g., ParCorr). The main use is for unit testing of PCMCI methods.

                                            -
                                            Parameters
                                            +
                                            Parameters:
                                            • graph (array of shape [N, N, tau_max+1]) – Causal graph.

                                            • links (dict) – Dictionary of form {0:[(0, -1), …], 1:[…], …}. @@ -2358,7 +2356,7 @@

                                              and makes available the ancestors up to max_lag of X, Y, Z. This may take a very long time, however.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • X (list of tuples) – List of variables chosen for testing paths.

                                              • Y (list of tuples) – List of variables chosen for testing paths.

                                              • @@ -2372,10 +2370,10 @@

                                              • ends_with ({None, 'tail', 'arrohead'}) – Whether to only consider paths ending with particular mark at Y.

                                              -
                                              Returns
                                              +
                                              Returns:

                                              path – Returns path or False if no path exists.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              list or False

                                              @@ -2386,7 +2384,7 @@

                                              get_confidence(X, Y, Z=None, tau_max=0)[source]¶

                                              For compatibility with PCMCI.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              None

                                              @@ -2419,7 +2417,7 @@

                                              Returns dependence measure.

                                              Returns 0 if X and Y are d-separated given Z in the graph and 1 else.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index in the observed_vars and tau the time lag.

                                              • @@ -2431,10 +2429,10 @@

                                                different lags in X, Z, all have the same sample size.

                                              -
                                              Returns
                                              +
                                              Returns:

                                              val – The test statistic value.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              float

                                              @@ -2459,7 +2457,7 @@

                                              Perform oracle conditional independence test.

                                              Calls the d-separation function.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • X (list of tuples) – X,Y,Z are of the form [(var, -tau)], where var specifies the variable index in the observed_vars and tau the time lag.

                                              • @@ -2471,10 +2469,10 @@

                                              • cut_off ({'2xtau_max', 'max_lag', 'max_lag_or_tau_max'}) – Not used here.

                                              -
                                              Returns
                                              +
                                              Returns:

                                              val, pval – The test statistic value and the p-value.

                                              -
                                              Return type
                                              +
                                              Return type:

                                              Tuple of floats

                                              @@ -2504,7 +2502,7 @@

                                              can be used. Currently only a test for zero correlation on the maximum of the residuals’ correlation is performed.

                                              -
                                              Parameters
                                              +
                                              Parameters:
                                              • correlation_type ({'max_corr'}) – Which dependency measure to use on residuals.

                                              • **kwargs – Arguments passed on to Parent class CondIndTest.

                                              • @@ -2525,17 +2523,17 @@

                                                If the degrees of freedom are less than 1, numpy.nan is returned.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • value (float) – Test statistic value.

                                                • T (int) – Sample length

                                                • dim (int) – Dimensionality, ie, number of features.

                                                -
                                                Returns
                                                +
                                                Returns:

                                                pval – P-value.

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float or numpy.nan

                                                @@ -2548,16 +2546,16 @@

                                                Estimated as some dependency measure on the residuals of a linear OLS regression.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                                -
                                                Returns
                                                +
                                                Returns:

                                                val – Partial correlation coefficient.

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float

                                                @@ -2576,17 +2574,17 @@

                                                Returns p-value for shuffle significance test.

                                                For residual-based test statistics only the residuals are shuffled.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • array (array-like) – data array with X, Y, Z in rows and observations in columns

                                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                                • value (number) – Value of test statistic for unshuffled estimate.

                                                -
                                                Returns
                                                +
                                                Returns:

                                                pval – p-value

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float

                                                @@ -2603,7 +2601,7 @@

                                                mult_corr(array, xyz, standardize=True)[source]¶

                                                Return multivariate dependency measure.

                                                -
                                                Parameters
                                                +
                                                Parameters:
                                                • array (array-like) – data array with X, Y in rows and observations in columns

                                                • xyz (array of ints) – XYZ identifier array of shape (dim,).

                                                • @@ -2611,10 +2609,10 @@

                                                  partial correlation.

                                                -
                                                Returns
                                                +
                                                Returns:

                                                val – Multivariate dependency measure.

                                                -
                                                Return type
                                                +
                                                Return type:

                                                float

                                                @@ -2624,7 +2622,7 @@

                          -

                          tigramite.causal_effects: Causal Effect analysis¶

                          +

                          tigramite.causal_effects: Causal Effect analysis¶

                          class tigramite.causal_effects.CausalEffects(graph, graph_type, X, Y, S=None, hidden_variables=None, check_SM_overlap=True, verbosity=0)[source]¶
                          @@ -2637,20 +2635,19 @@

                          linear case without hidden variables also an efficient estimation based on Wright’s path coefficients is available. This estimator also allows to estimate mediation effects.

                          -

                          See the corresponding paper 6 and tigramite tutorial for an +

                          See the corresponding paper [6] and tigramite tutorial for an in-depth introduction.

                          References

                          -
                          -
                          6
                          -

                          J. Runge, Necessary and sufficient graphical conditions for +

                          -
                          +
                          -
                          Parameters
                          +
                          Parameters:
                          • graph (array of either shape [N, N], [N, N, tau_max+1], or [N, N, tau_max+1, tau_max+1]) – Different graph types are supported, see tutorial.

                          • X (list of tuples) – List of tuples [(i, -tau), …] containing cause variables.

                          • @@ -2669,10 +2666,10 @@

                            check_XYS_paths()[source]¶

                            Check whether one can remove nodes from X and Y with no proper causal paths.

                            -
                            Returns
                            +
                            Returns:

                            X, Y

                            -
                            Return type
                            +
                            Return type:

                            cleaned lists of X and Y with irrelevant nodes removed.

                            @@ -2683,10 +2680,10 @@

                            check_optimality()[source]¶

                            Check whether optimal adjustment set exists according to Thm. 3 in Runge NeurIPS 2021.

                            -
                            Returns
                            +
                            Returns:

                            optimality – Returns True if an optimal adjustment set exists, otherwise False.

                            -
                            Return type
                            +
                            Return type:

                            bool

                            @@ -2703,7 +2700,7 @@

                            This function fits the models, predict_bootstrap_of can then be used to get confidence intervals for the effect of interventions.

                            -
                            Parameters
                            +
                            Parameters:
                            • method (str) – Chosen method among valid functions in this class.

                            • method_args (dict) – Arguments passed to method.

                            • @@ -2723,7 +2720,7 @@

                            -
                            Parameters
                            +
                            Parameters:
                            • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -2754,7 +2751,7 @@

                            -
                            Parameters
                            +
                            Parameters:
                            • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -2782,17 +2779,17 @@

                              static get_graph_from_dict(links, tau_max=None)[source]¶

                              Helper function to convert dictionary of links to graph array format.

                              -
                              Parameters
                              +
                              Parameters:
                              • links (dict) – Dictionary of form {0:[((0, -1), coeff, func), …], 1:[…], …}. Also format {0:[(0, -1), …], 1:[…], …} is allowed.

                              • tau_max (int or None) – Maximum lag. If None, the maximum lag in links is used.

                              -
                              Returns
                              +
                              Returns:

                              graph – Matrix format of graph with 1 for true links and 0 else.

                              -
                              Return type
                              +
                              Return type:

                              array of shape (N, N, tau_max+1)

                              @@ -2803,16 +2800,16 @@

                              get_mediators(start, end)[source]¶

                              Returns mediator variables on proper causal paths.

                              -
                              Parameters
                              +
                              Parameters:
                              • start (set) – Set of start nodes.

                              • end (set) – Set of end nodes.

                              -
                              Returns
                              +
                              Returns:

                              mediators – Mediators on causal paths from start to end.

                              -
                              Return type
                              +
                              Return type:

                              set

                              @@ -2824,7 +2821,7 @@

                              Returns optimal adjustment set.

                              See Runge NeurIPS 2021.

                              -
                              Parameters
                              +
                              Parameters:
                              • alternative_conditions (set of tuples) – Used only internally in optimality theorem. If None, self.S is used.

                              • minimize ({False, True, 'colliders_only'}) – Minimize optimal set. If True, minimize such that no subset @@ -2833,10 +2830,10 @@

                              • return_separate_sets (bool) – Whether to return tuple of parents, colliders, collider_parents, and S.

                              -
                              Returns
                              +
                              Returns:

                              Oset_S – Returns optimal adjustment set if a valid set exists, otherwise False.

                              -
                              Return type
                              +
                              Return type:

                              False or list or tuple of lists

                              @@ -2849,7 +2846,7 @@

                              To be used after fitting with fit_bootstrap_of. Only uses the expected values of the predict function, not potential other output.

                              -
                              Parameters
                              +
                              Parameters:
                              • method (str) – Chosen method among valid functions in this class.

                              • method_args (dict) – Arguments passed to method.

                              • @@ -2857,10 +2854,10 @@

                              • return_individual_bootstrap_results (bool) – Returns the individual bootstrap predictions.

                              -
                              Returns
                              +
                              Returns:

                              confidence_intervals

                              -
                              Return type
                              +
                              Return type:

                              numpy array of

                              @@ -2872,7 +2869,7 @@

                              Predict effect of intervention with fitted model.

                              Uses the model.predict() function of the sklearn model.

                              -
                              Parameters
                              +
                              Parameters:
                              • intervention_data (numpy array) – Numpy array of shape (time, len(X)) that contains the do(X) values.

                              • conditions_data (data object, optional) – Numpy array of shape (time, len(S)) that contains the S=s values.

                              • @@ -2881,7 +2878,7 @@

                                the entire results can be returned.

                              -
                              Returns
                              +
                              Returns:

                              • Results from prediction (an array of shape (time, len(Y)).)

                              • If estimate_confidence = True, then a tuple is returned.

                              • @@ -2896,16 +2893,16 @@

                                predict_wright_effect(intervention_data, pred_params=None)[source]¶

                                Predict linear effect of intervention with fitted Wright-model.

                                -
                                Parameters
                                +
                                Parameters:
                                • intervention_data (numpy array) – Numpy array of shape (time, len(X)) that contains the do(X) values.

                                • pred_params (dict, optional) – Optional parameters passed on to sklearn prediction function.

                                -
                                Returns
                                +
                                Returns:

                                Results from prediction

                                -
                                Return type
                                +
                                Return type:

                                an array of shape (time, len(Y)).

                                @@ -2915,7 +2912,7 @@

                          -

                          tigramite.models: Time series modeling, mediation, and prediction¶

                          +

                          tigramite.models: Time series modeling, mediation, and prediction¶

                          Base class:

                          @@ -2924,7 +2921,7 @@

                          Allows to fit any model from sklearn to the parents of a target variable. Also takes care of missing values, masking and preprocessing.

                          -
                          Parameters
                          +
                          Parameters:
                          • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -2950,11 +2947,11 @@

                            Returns dictionary of coefficients for linear models.

                            Only for models from sklearn.linear_model

                            -
                            Returns
                            +
                            Returns:

                            coeffs – Dictionary of dictionaries for each variable with keys given by the parents and the regression coefficients as values.

                            -
                            Return type
                            +
                            Return type:

                            dictionary

                            @@ -2968,7 +2965,7 @@

                            with y given by the target variable, and X given by its parents. The fitted model class is returned for later use.

                            -
                            Parameters
                            +
                            Parameters:
                            • all_parents (dictionary) – Dictionary of form {0:[(0, -1), (3, 0), …], 1:[], …} containing the parents estimated with PCMCI.

                            • @@ -2984,11 +2981,11 @@

                            • return_data (bool, optional (default: False)) – Whether to save the data array.

                            -
                            Returns
                            +
                            Returns:

                            fit_results – Returns the sklearn model after fitting. Also returns the data transformation parameters.

                            -
                            Return type
                            +
                            Return type:

                            dictionary of sklearn model objects for each variable

                            @@ -3002,7 +2999,7 @@

                            with y given by the target variable, and X given by its parents. The fitted model class is returned for later use.

                            -
                            Parameters
                            +
                            Parameters:
                            • X (lists of tuples) – List of variables for estimating model Y = f(X,Z)

                            • Y (lists of tuples) – List of variables for estimating model Y = f(X,Z)

                            • @@ -3018,11 +3015,11 @@

                            • return_data (bool, optional (default: False)) – Whether to save the data array.

                            -
                            Returns
                            +
                            Returns:

                            fit_results – Returns the sklearn model after fitting. Also returns the data transformation parameters.

                            -
                            Return type
                            +
                            Return type:

                            dictionary of sklearn model objects for each variable

                            @@ -3034,7 +3031,7 @@

                            Predict effect of intervention with fitted model.

                            Uses the model.predict() function of the sklearn model.

                            -
                            Parameters
                            +
                            Parameters:
                            • intervention_data (numpy array) – Numpy array of shape (time, len(X)) that contains the do(X) values.

                            • conditions_data (data object, optional) – Numpy array of shape (time, len(S)) that contains the S=s values.

                            • @@ -3043,7 +3040,7 @@

                              the entire results can be returned.

                            -
                            Return type
                            +
                            Return type:

                            Results from prediction.

                            @@ -3056,10 +3053,10 @@

                            Requires fit_model() before. An entry val_matrix[i,j,tau] gives the coefficient of the link from i to j at lag tau, including tau=0.

                            -
                            Returns
                            +
                            Returns:

                            val_matrix – Array of coefficients for each time lag, including lag-zero.

                            -
                            Return type
                            +
                            Return type:

                            array-like, shape (N, N, tau_max + 1)

                            @@ -3074,12 +3071,12 @@

                            Linear mediation analysis for time series models.

                            Fits linear model to parents and provides functions to return measures such as causal effect, mediated causal effect, average causal effect, etc. as -described in 4.

                            +described in [4].

                            For general nonlinear, lagged and contemporaneous causal effect analysis, use the CausalEffects class.

                            Notes

                            This class implements the following causal mediation measures introduced in -4:

                            +[4]:

                            • causal effect (CE)

                            • @@ -3122,15 +3119,15 @@

                            References

                            -
                            -
                            4(1,2,3)
                            -

                            J. Runge et al. (2015): Identifying causal gateways and mediators in +

                            -
                            +
                            -
                            Parameters
                            +
                            Parameters:
                            • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -3152,10 +3149,10 @@

                              Fit linear time series model.

                              Fits a sklearn.linear_model.LinearRegression model to the parents of each variable and computes the coefficient matrices \Phi and -\Psi as described in 4. Does not accepted +\Psi as described in [4]. Does not accepted contemporaneous links.

                              -
                              Parameters
                              +
                              Parameters:
                              • all_parents (dictionary) – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing the parents estimated with PCMCI.

                              • @@ -3173,7 +3170,7 @@

                                other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only @@ -3182,10 +3179,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                ace – Average Causal Effect.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3199,7 +3196,7 @@

                                from any other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • j (int) – Index of variable.

                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only @@ -3208,10 +3205,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                acs – Average Causal Susceptibility.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3225,7 +3222,7 @@

                                other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only at the lag of maximum absolute causal effect.

                                • @@ -3233,10 +3230,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                ace – Average Causal Effect for each variable.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N,)

                                @@ -3250,7 +3247,7 @@

                                any other variable. With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only at the lag of maximum absolute causal effect.

                                • @@ -3258,10 +3255,10 @@

                                  lags.

                                -
                                Returns
                                +
                                Returns:

                                acs – Average Causal Susceptibility.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N,)

                                @@ -3275,7 +3272,7 @@

                                With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only at the lag of maximum absolute causal effect.

                                • @@ -3284,10 +3281,10 @@

                                • exclude_self_effects (bool, optional (default: True)) – Whether to exclude causal self effects of variables on themselves.

                                -
                                Returns
                                +
                                Returns:

                                amce – Average Mediated Causal Effect.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N,)

                                @@ -3301,7 +3298,7 @@

                                With lag_mode=’absmax’ this is based on the lag of maximum CE for each pair.

                                -
                                Parameters
                                +
                                Parameters:
                                • k (int) – Index of variable.

                                • lag_mode ({'absmax', 'all_lags'}) – Lag mode. Either average across all lags between each pair or only @@ -3311,10 +3308,10 @@

                                • exclude_self_effects (bool, optional (default: True)) – Whether to exclude causal self effects of variables on themselves.

                                -
                                Returns
                                +
                                Returns:

                                amce – Average Mediated Causal Effect.

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3326,17 +3323,17 @@

                                Returns the causal effect.

                                This is the causal effect for (i, tau) – –> j.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • j (int) – Index of effect variable.

                                -
                                Returns
                                +
                                Returns:

                                ce

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3348,16 +3345,16 @@

                                Returns the causal effect.

                                This is the maximum absolute causal effect for i –> j across all lags.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • j (int) – Index of effect variable.

                                -
                                Returns
                                +
                                Returns:

                                ce

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3369,17 +3366,17 @@

                                Returns link coefficient.

                                This is the direct causal effect for a particular link (i, tau) –> j.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • j (int) – Index of effect variable.

                                -
                                Returns
                                +
                                Returns:

                                coeff

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3392,7 +3389,7 @@

                                This is the causal effect for i –> j minus the causal effect not going through k.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • @@ -3400,10 +3397,10 @@

                                • k (int) – Index of mediator variable.

                                -
                                Returns
                                +
                                Returns:

                                mce

                                -
                                Return type
                                +
                                Return type:

                                float

                                @@ -3419,7 +3416,7 @@

                                path_node_array the MCE values. tsg_path_val_matrix contains the corresponding values in the time series graph format.

                                -
                                Parameters
                                +
                                Parameters:
                                • i (int) – Index of cause variable.

                                • tau (int) – Lag of cause variable.

                                • @@ -3427,10 +3424,10 @@

                                • include_neighbors (bool, optional (default: False)) – Whether to include causal paths emanating from neighbors of i

                                -
                                Returns
                                +
                                Returns:

                                graph_data – Dictionary of matrices for coloring mediation graph plots.

                                -
                                Return type
                                +
                                Return type:

                                dictionary

                                @@ -3444,7 +3441,7 @@

                                This matrix can be used for plotting the time series graph and analyzing causal pathways.

                                -
                                Parameters
                                +
                                Parameters:
                                • link_matrix (bool array-like, optional (default: None)) – Matrix of significant links. Must be of same shape as val_matrix. Either sig_thres or link_matrix has to be provided.

                                • @@ -3452,10 +3449,10 @@

                                • include_neighbors (bool, optional (default: False)) – Whether to include causal paths emanating from neighbors of i

                                -
                                Returns
                                +
                                Returns:

                                tsg – Time series graph matrix.

                                -
                                Return type
                                +
                                Return type:

                                array of shape (N*tau_max, N*tau_max)

                                @@ -3470,10 +3467,10 @@

                                to zero for LinearMediation, use Models class for contemporaneous models.

                                -
                                Returns
                                +
                                Returns:

                                val_matrix – Matrix of linear coefficients, shape (N, N, tau_max + 1).

                                -
                                Return type
                                +
                                Return type:

                                array

                                @@ -3501,7 +3498,7 @@

                                be estimated using PCMCI. Also takes care of missing values, masking and preprocessing.

                                -
                                Parameters
                                +
                                Parameters:
                                • dataframe (data object) – Tigramite dataframe object. It must have the attributes dataframe.values yielding a numpy array of shape (observations T, variables N) and @@ -3528,7 +3525,7 @@

                                  by the target variable, and X given by its predictors. The fitted model class is returned for later use.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • target_predictors (dictionary) – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing the predictors estimated with PCMCI.

                                  • @@ -3539,10 +3536,10 @@

                                  • return_data (bool, optional (default: False)) – Whether to save the data array.

                                  -
                                  Returns
                                  +
                                  Returns:

                                  self

                                  -
                                  Return type
                                  +
                                  Return type:

                                  instance of self

                                  @@ -3555,7 +3552,7 @@

                                  Wrapper around PCMCI.run_pc_stable that estimates causal predictors. The lead time can be specified by steps_ahead.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • selected_targets (list of ints, optional (default: None)) – List of variables to estimate predictors of. If None, predictors of all variables are estimated.

                                  • @@ -3575,11 +3572,11 @@

                                    a larger number, such as 10, can be used.

                                  -
                                  Returns
                                  +
                                  Returns:

                                  predictors – Dictionary of form {0:[(0, -1), (3, -2), …], 1:[], …} containing estimated predictors.

                                  -
                                  Return type
                                  +
                                  Return type:

                                  dict

                                  @@ -3607,7 +3604,7 @@

                                  If the list of integers equals range(N), then an array of shape (T, N) of the predicted series is returned.

                                  -
                                  Parameters
                                  +
                                  Parameters:
                                  • target (int or list of integers) – Index or indices of target variable(s).

                                  • new_data (data object, optional) – New Tigramite dataframe object with optional new mask.

                                  • @@ -3620,7 +3617,7 @@

                                    ‘max_lag’ uses as much samples as possible.

                                  -
                                  Return type
                                  +
                                  Return type:

                                  Results from prediction.

                                  @@ -3630,7 +3627,7 @@

                          -

                          tigramite.data_processing: Data processing functions¶

                          +

                          tigramite.data_processing: Data processing functions¶

                          Tigramite data processing functions.

                          @@ -3638,7 +3635,7 @@

                          Data object containing single or multiple time series arrays and optional mask.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array-like) –

                            if analysis_mode == ‘single’:

                            1) Numpy array of shape (observations T, variables N) @@ -3662,7 +3659,7 @@

                            remove_missing_upto_maxlag=True also flags samples for all lags up to 2*tau_max (more precisely, this depends on the cut_off argument in self.construct_array(), see further below). -This avoids biases, see section on masking in Supplement of 1.

                          • +This avoids biases, see section on masking in Supplement of [1].

                          • var_names (list of strings, optional (default: range(N))) – Names of variables, must match the number of variables. If None is passed, variables are enumerated as [0, 1, …]

                          • datatime (array-like, optional (default: None)) – Timelabel array. If None, range(T) is used.

                          • @@ -3704,7 +3701,7 @@

                            Specifies the data format in which data was given at instantiation. Possible values: ‘2d numpy array’, ‘3d numpy array’, ‘dict’.

                            -
                            Type
                            +
                            Type:

                            string

                            @@ -3734,7 +3731,7 @@

                          -
                          Type
                          +
                          Type:

                          dictionary

                          @@ -3746,7 +3743,7 @@

                          List of the keys identifiying the multiple datasets, i.e., list(self.values.keys())

                          -
                          Type
                          +
                          Type:

                          list

                          @@ -3758,7 +3755,7 @@

                          Mask internally mapped to a dictionary representation in the same way as data is mapped to self.values

                          -
                          Type
                          +
                          Type:

                          dictionary

                          @@ -3786,7 +3783,7 @@

                          self.datatime¶

                          Time axis for each of the multiple datasets.

                          -
                          Type
                          +
                          Type:

                          dictionary

                          @@ -3797,7 +3794,7 @@

                          self.analysis_mode¶

                          Is analysis_mode

                          -
                          Type
                          +
                          Type:

                          string

                          @@ -3814,7 +3811,7 @@

                          -
                          Type
                          +
                          Type:

                          array-like

                          @@ -3830,7 +3827,7 @@

                        -
                        Type
                        +
                        Type:

                        dictionary

                        @@ -3841,7 +3838,7 @@

                        self.M¶

                        Number of datasets

                        -
                        Type
                        +
                        Type:

                        int

                        @@ -3852,7 +3849,7 @@

                        self.N¶

                        Number of variables (constant across datasets)

                        -
                        Type
                        +
                        Type:

                        int

                        @@ -3864,7 +3861,7 @@

                        Dictionary {key(m): T(m), …}, where T(m) is the time length of datasets m and key(m) its identifier as in self.values

                        -
                        Type
                        +
                        Type:

                        dictionary

                        @@ -3877,7 +3874,7 @@

                        time step relative to the shared time axis for which at least one observation exists in the dataset.

                        -
                        Type
                        +
                        Type:

                        int

                        @@ -3889,7 +3886,7 @@

                        Whether to use bootstrap. Must be a dictionary with keys random_state, boot_samples, and boot_blocklength.

                        -
                        Type
                        +
                        Type:

                        dictionary

                        @@ -3903,7 +3900,7 @@

                        time series length and N the number of variables, and of (n_ens, T, N) if analysis_mode == ‘multiple’.

                        -
                        Parameters
                        +
                        Parameters:
                        • X (list of tuples) – For a dependence measure I(X;Y|Z), X, Y, Z can be multivariate of the form [(var1, -lag), (var2, -lag), …]. At least one varlag in Y @@ -3992,14 +3989,14 @@

                        • verbosity (int, optional (default: 0)) – Level of verbosity.

                        -
                        Returns
                        +
                        Returns:

                        array, xyz [,XYZ] – xyz identifier array of shape (dim,) identifying which row in array corresponds to X, Y, and Z. For example:: X = [(0, -1)], Y = [(1, 0)], Z = [(1, -1), (0, -2)] yields an array of shape (4, n_samples) and xyz is xyz = numpy.array([0,1,2,2]). If return_cleaned_xyz is True, also outputs the cleaned XYZ lists.

                        -
                        Return type
                        +
                        Return type:

                        Tuple of data array of shape (dim, n_samples) and

                        @@ -4010,7 +4007,7 @@

                        print_array_info(array, X, Y, Z, missing_flag, mask_type, extraZ=None)[source]¶

                        Print info about the constructed array

                        -
                        Parameters
                        +
                        Parameters:
                        • array (Data array of shape (dim, T)) – Data array.

                        • X (list of tuples) – For a dependence measure I(X;Y|Z), Y is of the form [(varY, 0)], @@ -4032,7 +4029,7 @@

                        • missing_flag (number, optional (default: None)) – Flag for missing values. Dismisses all time slices of samples where missing values occur in any variable and also flags samples for all lags up to 2*tau_max. This avoids biases, see section on masking in -Supplement of 1.

                        • +Supplement of [1].

                        • mask_type ({'y','x','z','xy','xz','yz','xyz'}) – Masking mode: Indicators for which variables in the dependence measure I(X; Y | Z) the samples should be masked. If None, the mask is not used. Explained in tutorial on masking and missing values.

                        • @@ -4050,17 +4047,17 @@

                          This function applies a linear filter twice, once forward and once backwards. The combined filter has linear phase.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • cutperiod (int) – Period of cutoff.

                          • pass_periods (str, optional (default: 'low')) – Either ‘low’ or ‘high’ to act as a low- or high-pass filter

                          -
                          Returns
                          +
                          Returns:

                          data – Filtered data array.

                          -
                          Return type
                          +
                          Return type:

                          array

                          @@ -4078,7 +4075,7 @@

                          a coupling measure of time series. Phys. Rev. E, 83(5), 1-12. doi:10.1103/PhysRevE.83.051122

                          -
                          Parameters
                          +
                          Parameters:
                          • array (array-like) – Data array of shape (time, variables).

                          • array_mask (bool array) – Data mask where True labels masked samples.

                          • @@ -4088,10 +4085,10 @@

                          • verbosity (int, optional (default: 0)) – Level of verbosity.

                          -
                          Returns
                          +
                          Returns:

                          patt, patt_mask [, patt_time] – Tuple of converted pattern array and new length

                          -
                          Return type
                          +
                          Return type:

                          tuple of arrays

                          @@ -4102,16 +4099,16 @@

                          tigramite.data_processing.quantile_bin_array(data, bins=6)[source]¶

                          Returns symbolified array with equal-quantile binning.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • bins (int, optional (default: 6)) – Number of bins.

                          -
                          Returns
                          +
                          Returns:

                          symb_array – Converted data of integer type.

                          -
                          Return type
                          +
                          Return type:

                          array

                          @@ -4128,7 +4125,7 @@

                          :rtype: array :returns: smoothed/residual data

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • smooth_width (float) – Window width of smoothing, 2*sigma for a gaussian.

                          • @@ -4137,10 +4134,10 @@

                          • residuals (bool, optional (default: False)) – True if residuals should be returned instead of smoothed data.

                          -
                          Returns
                          +
                          Returns:

                          data – Smoothed/residual data.

                          -
                          Return type
                          +
                          Return type:

                          array-like

                          @@ -4159,17 +4156,17 @@

                          tigramite.data_processing.time_bin_with_mask(data, time_bin_length, mask=None)[source]¶

                          Returns time binned data where only about non-masked values is averaged.

                          -
                          Parameters
                          +
                          Parameters:
                          • data (array) – Data array of shape (time, variables).

                          • time_bin_length (int) – Length of time bin.

                          • mask (bool array, optional (default: None)) – Data mask where True labels masked samples.

                          -
                          Returns
                          +
                          Returns:

                          (bindata, T) – Tuple of time-binned data array and new length of array.

                          -
                          Return type
                          +
                          Return type:

                          tuple of array and int

                          @@ -4188,17 +4185,17 @@

                          tigramite.data_processing.weighted_avg_and_std(values, axis, weights)[source]¶

                          Returns the weighted average and standard deviation.

                          -
                          Parameters
                          +
                          Parameters:
                          • values (array) – Data array of shape (time, variables).

                          • axis (int) – Axis to average/std about

                          • weights (array) – Weight array of shape (time, variables).

                          -
                          Returns
                          +
                          Returns:

                          (average, std) – Tuple of weighted average and standard deviation along axis.

                          -
                          Return type
                          +
                          Return type:

                          tuple of arrays

                          @@ -4206,20 +4203,20 @@

                          -

                          tigramite.toymodels: Toy model generators¶

                          +

                          tigramite.toymodels: Toy model generators¶

                          Tigramite toymodels.

                          Helper function to convert DAG graph to dictionary of parents.

                          -
                          Parameters
                          +
                          Parameters:

                          dag (array of shape (N, N, tau_max+1)) – Matrix format of graph in string format. Must be DAG.

                          -
                          Returns
                          +
                          Returns:

                          parents – Dictionary of form {0:[(0, -1), …], 1:[…], …}.

                          -
                          Return type
                          +
                          Return type:

                          dict

                          @@ -4230,17 +4227,17 @@

                          tigramite.toymodels.structural_causal_processes.links_to_graph(links, tau_max=None)[source]¶

                          Helper function to convert dictionary of links to graph array format.

                          -
                          Parameters
                          +
                          Parameters:
                          • links (dict) – Dictionary of form {0:[((0, -1), coeff, func), …], 1:[…], …}. Also format {0:[(0, -1), …], 1:[…], …} is allowed.

                          • tau_max (int or None) – Maximum lag. If None, the maximum lag in links is used.

                          -
                          Returns
                          +
                          Returns:

                          graph – Matrix format of graph with 1 for true links and 0 else.

                          -
                          Return type
                          +
                          Return type:

                          array of shape (N, N, tau_max+1)

                          @@ -4266,7 +4263,7 @@

                          Through the parameters intervention and intervention_type the model can also be generated with intervened variables.

                          -
                          Parameters
                          +
                          Parameters:
                          • links (dict) – Dictionary of format: {0:[((i, -tau), coeff, func),…], 1:[…], …} for all variables where i must be in [0..N-1] and tau >= 0 with @@ -4287,7 +4284,7 @@

                          • seed (int, optional (default: None)) – Random seed.

                          -
                          Returns
                          +
                          Returns:

                          • data (array-like) – Data generated from this process, shape (T, N).

                          • nonstationary (bool) – Indicates whether data has NaNs or infinities.

                          • @@ -4303,7 +4300,7 @@

                            Returns a vector-autoregressive process with correlated innovations.

                            Wrapper around var_network with possibly more user-friendly input options.

                            -
                            Parameters
                            +
                            Parameters:
                            • parents_neighbors_coeffs (dict) – Dictionary of format: {…, j:[((var1, lag1), coef1), ((var2, lag2), coef2), …], …} for all variables where vars must be in [0..N-1] @@ -4319,7 +4316,7 @@

                            • initial_values (array, optional (default: None)) – Initial values for each node. Shape must be (N, max_delay+1)

                            -
                            Returns
                            +
                            Returns:

                            • data (array-like) – Data generated from this process

                            • true_parent_neighbor (dict) – Dictionary of lists of tuples. The dictionary is keyed by node ID, the @@ -4332,10 +4329,10 @@

                          -

                          tigramite.plotting: Plotting functions¶

                          +

                          tigramite.plotting: Plotting functions¶

                          -

                          Indices and tables¶

                          +

                          Indices and tables¶

                          • Index

                          • Module Index

                          • @@ -4382,7 +4379,7 @@

                            Quick search

                            - +
                            @@ -4402,7 +4399,7 @@

                            Navigation

                            \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index f2da5d6a..fa71eaf6 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -145,6 +145,7 @@ Derived classes: .. automodule:: tigramite.plotting :members: + Indices and tables ================== diff --git a/docs/py-modindex.html b/docs/py-modindex.html index 54004923..dace0e45 100644 --- a/docs/py-modindex.html +++ b/docs/py-modindex.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -82,7 +83,7 @@

                            Quick search

                            - +
                            @@ -102,7 +103,7 @@

                            Navigation

                            \ No newline at end of file diff --git a/docs/search.html b/docs/search.html index 75f4f7a2..daba3322 100644 --- a/docs/search.html +++ b/docs/search.html @@ -1,7 +1,7 @@ - + @@ -12,6 +12,7 @@ + @@ -96,7 +97,7 @@

                            Navigation

                            \ No newline at end of file diff --git a/docs/searchindex.js b/docs/searchindex.js index 10c145e8..6373c81d 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst"],objects:{"tigramite.causal_effects":[[0,0,1,"","CausalEffects"]],"tigramite.causal_effects.CausalEffects":[[0,1,1,"","check_XYS_paths"],[0,1,1,"","check_optimality"],[0,1,1,"","fit_bootstrap_of"],[0,1,1,"","fit_total_effect"],[0,1,1,"","fit_wright_effect"],[0,1,1,"","get_graph_from_dict"],[0,1,1,"","get_mediators"],[0,1,1,"","get_optimal_set"],[0,1,1,"","predict_bootstrap_of"],[0,1,1,"","predict_total_effect"],[0,1,1,"","predict_wright_effect"]],"tigramite.data_processing":[[0,0,1,"","DataFrame"],[0,4,1,"","lowhighpass_filter"],[0,4,1,"","ordinal_patt_array"],[0,4,1,"","quantile_bin_array"],[0,4,1,"","smooth"],[0,4,1,"","structural_causal_process"],[0,4,1,"","time_bin_with_mask"],[0,4,1,"","var_process"],[0,4,1,"","weighted_avg_and_std"]],"tigramite.data_processing.DataFrame":[[0,1,1,"","construct_array"],[0,1,1,"","print_array_info"]],"tigramite.data_processing.DataFrame.self":[[0,3,1,"","M"],[0,3,1,"","N"],[0,3,1,"","T"],[0,3,1,"","_initialized_from"],[0,3,1,"","analysis_mode"],[0,3,1,"","bootstrap"],[0,3,1,"","datasets"],[0,3,1,"","datatime"],[0,3,1,"","largest_time_step"],[0,3,1,"","mask"],[0,3,1,"","missing_flag"],[0,3,1,"","reference_points"],[0,3,1,"","time_offsets"],[0,3,1,"","values"],[0,3,1,"","var_names"]],"tigramite.independence_tests":[[0,0,1,"","CMIknn"],[0,0,1,"","CMIsymb"],[0,0,1,"","CondIndTest"],[0,0,1,"","GPDC"],[0,0,1,"","GPDCtorch"],[0,0,1,"","OracleCI"],[0,0,1,"","ParCorr"],[0,0,1,"","ParCorrMult"]],"tigramite.independence_tests.CMIknn":[[0,1,1,"","get_conditional_entropy"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.CMIsymb":[[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.CondIndTest":[[0,1,1,"","get_analytic_confidence"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_bootstrap_confidence"],[0,1,1,"","get_confidence"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_fixed_thres_significance"],[0,1,1,"","get_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,1,1,"","get_significance"],[0,5,1,"","measure"],[0,1,1,"","print_info"],[0,1,1,"","run_test"],[0,1,1,"","run_test_raw"],[0,1,1,"","set_dataframe"],[0,1,1,"","set_mask_type"]],"tigramite.independence_tests.GPDC":[[0,1,1,"","generate_and_save_nulldists"],[0,1,1,"","generate_nulldist"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.GPDCtorch":[[0,1,1,"","generate_and_save_nulldists"],[0,1,1,"","generate_nulldist"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.OracleCI":[[0,1,1,"","check_shortest_path"],[0,1,1,"","get_confidence"],[0,1,1,"","get_graph_from_links"],[0,1,1,"","get_links_from_graph"],[0,1,1,"","get_measure"],[0,1,1,"","get_model_selection_criterion"],[0,5,1,"","measure"],[0,1,1,"","run_test"],[0,1,1,"","set_dataframe"]],"tigramite.independence_tests.ParCorr":[[0,1,1,"","get_analytic_confidence"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"]],"tigramite.independence_tests.ParCorrMult":[[0,1,1,"","get_analytic_confidence"],[0,1,1,"","get_analytic_significance"],[0,1,1,"","get_dependence_measure"],[0,1,1,"","get_model_selection_criterion"],[0,1,1,"","get_shuffle_significance"],[0,5,1,"","measure"],[0,1,1,"","mult_corr"]],"tigramite.lpcmci":[[0,0,1,"","LPCMCI"]],"tigramite.lpcmci.LPCMCI":[[0,1,1,"","run_lpcmci"]],"tigramite.models":[[0,0,1,"","LinearMediation"],[0,0,1,"","Models"],[0,0,1,"","Prediction"]],"tigramite.models.LinearMediation":[[0,1,1,"","fit_model"],[0,1,1,"","get_ace"],[0,1,1,"","get_acs"],[0,1,1,"","get_all_ace"],[0,1,1,"","get_all_acs"],[0,1,1,"","get_all_amce"],[0,1,1,"","get_amce"],[0,1,1,"","get_ce"],[0,1,1,"","get_ce_max"],[0,1,1,"","get_coeff"],[0,1,1,"","get_mce"],[0,1,1,"","get_mediation_graph_data"],[0,1,1,"","get_tsg"],[0,1,1,"","get_val_matrix"],[0,1,1,"","net_to_tsg"],[0,1,1,"","tsg_to_net"]],"tigramite.models.Models":[[0,1,1,"","get_coefs"],[0,1,1,"","get_fit"],[0,1,1,"","get_general_fitted_model"],[0,1,1,"","get_general_prediction"],[0,1,1,"","get_val_matrix"]],"tigramite.models.Prediction":[[0,1,1,"","fit"],[0,1,1,"","get_predictors"],[0,1,1,"","get_test_array"],[0,1,1,"","get_train_array"],[0,1,1,"","predict"]],"tigramite.pcmci":[[0,0,1,"","PCMCI"]],"tigramite.pcmci.PCMCI":[[0,3,1,"","N"],[0,3,1,"","T"],[0,3,1,"","all_parents"],[0,1,1,"","convert_to_string_graph"],[0,1,1,"","get_corrected_pvalues"],[0,1,1,"","get_graph_from_pmatrix"],[0,1,1,"","get_lagged_dependencies"],[0,3,1,"","iterations"],[0,1,1,"","print_results"],[0,1,1,"","print_significant_links"],[0,3,1,"","pval_max"],[0,1,1,"","return_parents_dict"],[0,1,1,"","return_significant_links"],[0,1,1,"","run_bivci"],[0,1,1,"","run_fullci"],[0,1,1,"","run_mci"],[0,1,1,"","run_pc_stable"],[0,1,1,"","run_pcalg"],[0,1,1,"","run_pcalg_non_timeseries_data"],[0,1,1,"","run_pcmci"],[0,1,1,"","run_pcmciplus"],[0,1,1,"","run_sliding_window_of"],[0,1,1,"","symmetrize_p_and_val_matrix"],[0,3,1,"","val_min"]],"tigramite.toymodels":[[0,2,0,"-","structural_causal_processes"]],"tigramite.toymodels.structural_causal_processes":[[0,4,1,"","dag_to_links"],[0,4,1,"","links_to_graph"],[0,4,1,"","structural_causal_process"],[0,4,1,"","var_process"]],tigramite:[[0,2,0,"-","data_processing"]]},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","module","Python module"],"3":["py","attribute","Python attribute"],"4":["py","function","Python function"],"5":["py","property","Python property"]},objtypes:{"0":"py:class","1":"py:method","2":"py:module","3":"py:attribute","4":"py:function","5":"py:property"},terms:{"0":0,"00000":0,"001":0,"005":0,"01":0,"019":0,"025":0,"05":0,"051122":0,"062829":0,"075310":0,"0803":0,"1":0,"10":0,"100":0,"1000":0,"10105":0,"1038":0,"1063":0,"11":0,"1103":0,"12":0,"12532404":0,"18":0,"1d":0,"2":0,"2002":0,"2007":0,"2009":0,"2011":0,"2015":0,"2018":0,"2019":0,"2020":0,"2021":0,"204101":0,"21st":0,"22":0,"24365041":0,"25":0,"250648072987":0,"25718002":0,"28":0,"2d":0,"2xtau_max":0,"2xtau_max_futur":0,"3":0,"33":0,"34":0,"36897445":0,"36th":0,"37":0,"38250406":0,"3d":0,"4":0,"4101":0,"42":0,"447":0,"449":0,"466":0,"486":0,"499":0,"5":0,"5025050":0,"524":0,"579_main_pap":0,"588":0,"599":0,"6":0,"602":0,"606":0,"618":0,"62829":0,"676":0,"7":0,"8":0,"83":0,"8485ae387a981d783f8764e508151cd9":0,"8502":0,"9":0,"92":0,"94e70705efae423efda1088614128d0b":0,"95":0,"99":0,"abstract":0,"boolean":0,"break":0,"case":0,"class":0,"default":0,"do":0,"float":0,"import":0,"int":0,"long":0,"new":0,"null":0,"return":0,"static":0,"transient":0,"true":0,"var":0,"while":0,A:0,As:0,At:0,For:0,If:0,In:0,Is:0,It:0,Its:0,Not:0,OR:0,TO:[],The:0,Then:0,There:0,These:0,To:0,Will:0,With:0,_:0,_get_single_residu:0,_initialized_from:0,_run_ancestral_removal_phas:0,_run_dsep_removal_phas:0,_run_non_ancestral_removal_phas:0,_t:0,ab:0,about:0,abov:0,absent:0,absmax:0,absolut:0,ac:0,accept:0,accord:0,account:0,across:0,act:0,actual:0,ad:0,adapt:0,add:0,add_to_null_dist:0,addit:0,address:0,adj:0,adjac:0,adjust:0,adjustment_set:0,admg:0,adv:0,advanc:0,affect:0,after:0,again:0,agre:0,ahead:0,aic:0,aip:0,akaik:0,al:0,algorithm:0,align:0,all:0,all_lag:0,all_par:0,all_result:0,allow:0,along:0,alpha:0,alpha_level:0,alreadi:0,also:0,altern:0,alternative_condit:0,although:0,alwai:0,ambigu:0,ambiguous_tripl:0,amc:0,among:0,an:0,analysis_mod:0,analyt:0,analyz:0,anc_all_i:0,anc_all_x:0,anc_all_z:0,ancestor:0,ancestr:0,ani:0,anoth:0,apds_t:0,appli:0,applic:0,appropri:0,apr:0,ar:0,arbitrari:0,argument:0,around:0,arrai:0,array_lik:0,array_mask:0,arrohead:0,articl:0,artifici:0,arxiv:0,assess:0,assign:0,associ:0,assum:0,assumpt:0,ast:0,asymptot:0,attribut:0,au_i:0,au_j:0,auai:0,auto_first:0,autocorrel:0,autocovari:0,autodepend:0,automat:0,autoregress:0,avail:0,averag:0,avoid:0,axi:0,b:0,backdoor:0,backward:0,bakirov:0,bandwidth:0,base:0,been:0,befor:0,beforehand:0,begin:0,being:0,below:0,benjamini:0,best:0,beta_i:0,beta_x:0,better:0,between:0,bia:0,bias:0,bigger:0,bin:0,bincount:0,bindata:0,bivci:0,block:0,blue:0,bold:0,bool:0,boot_blocklength:0,boot_sampl:0,bootsrap:0,bootstrap:0,both:0,bound:0,box:0,breadth:0,break_once_separ:0,briefli:0,butterworth:0,c:0,call:0,callabl:0,can:0,canada:0,canon:0,cardin:0,care:0,caus:0,causaleffect:0,cc:0,cdot:0,ce:0,certain:0,chain:0,chao:0,check:0,check_optim:0,check_optimality_cond:0,check_shortest_path:0,check_sm_overlap:0,check_xys_path:0,child:0,choic:0,chosen:0,ci:0,cite:0,ckdtree:0,clash:0,clean:0,cmi:0,cmiknn:0,cmisymb:0,coef1:0,coef2:0,coeff:0,coeffici:0,collid:0,collider_par:0,colliders_minimized_optim:0,colliders_onli:0,color:0,column:0,com:0,combin:0,come:0,command:0,common:0,commun:0,compar:0,compat:0,complex:0,complic:0,comprehens:0,comput:0,compute_ancestor:0,concret:0,cond_ind_test:0,condindtest:0,conditional_estim:0,conditional_model:0,conditions_data:0,conduct:0,conf_blocklength:0,conf_lev:0,conf_low:0,conf_matrix:0,conf_sampl:0,conf_upp:0,confer:0,confid:0,confidence_interv:0,conflict:0,conflict_resolut:0,confound:0,conserv:0,consid:0,consider:0,considerd:0,consist:0,constant:0,constrain:0,construct:0,construct_arrai:0,constructor:0,contain:0,contemp_collider_rul:0,contemp_cond:0,contemporan:0,content:0,continu:0,contrast:0,control:0,conveni:0,convert:0,convert_to_string_graph:0,correct:0,corrected_a:0,correl:0,correlation_typ:0,correspond:0,cost:0,could:0,coupl:0,covari:0,creat:0,criteria:0,criterion:0,cross:0,cube:0,current:0,cut:0,cut_off:0,cutoff:0,cutperiod:0,cython:0,d:0,d_z:0,dag:0,dag_to_link:0,data_transform:0,datafram:0,dataset:0,datatim:0,dcor:0,debug:0,decai:0,def:0,default_rng:0,defin:0,definin:0,degre:0,delai:0,denot:0,densiti:0,depend:0,dependence_measur:0,deprec:0,depth:0,deriv:0,describ:0,descript:0,detail:0,detect:0,determin:0,deviat:0,df:0,dict:0,dictionari:0,differ:0,digamma:0,digest:0,dim:0,dimens:0,dimension:0,direct:0,direction:0,directli:0,disabl:0,discov:0,discoveri:0,discret:0,discuss:0,disk:0,dismiss:0,dist:0,distanc:0,distribut:0,do_check:0,doe:0,doi:0,dpag:0,draw:0,drawn:0,driver:0,due:0,dummi:0,duplic:0,dure:0,dx:0,dy:0,dz:0,e:0,eaau4996:0,each:0,easi:0,edg:0,effici:0,eg:0,either:0,element:0,els:0,eman:0,embed:0,empti:0,end:0,ends_with:0,ensur:0,entir:0,entri:0,entropi:0,enumer:0,epsilon_:0,equal:0,equival:0,error:0,estim:0,estimate_confid:0,et:0,eta:0,etc:0,evalu:0,even:0,everi:0,exampl:0,except:0,exclud:0,exclude_contemporan:0,exclude_i:0,exclude_j:0,exclude_k:0,exclude_self_effect:0,execut:0,exist:0,expect:0,experi:0,experiment:0,explain:0,extern:0,extraz:0,f:0,f_x:0,f_y:0,factor:0,faculti:0,faith:0,fals:0,faster:0,fdr:0,fdr_bh:0,fdr_method:0,featur:0,feedback:0,figur:0,file:0,filter:0,fine:0,first:0,fit:0,fit_bootstrap_of:0,fit_model:0,fit_result:0,fit_total_effect:0,fit_wright_effect:0,fix:0,fix_all_edges_before_final_orient:0,fixed_thr:0,flag:0,flaxman:0,flexibl:0,follow:0,forbidden_nod:0,forc:0,forecast:0,form:0,format:0,forward:0,found:0,four:0,frac:0,fraction:0,framework:0,free:0,freedom:0,frenzel:0,frequenc:0,frequent:0,friendli:0,from:0,full:0,fullci:0,fulli:0,func:0,further:0,futur:0,g:0,gabor:0,gatewai:0,gauss_pr:0,gaussian:0,gaussianprocessregressor:0,gaussprocreg:0,gaussprocregtorch:0,generate_and_save_nulldist:0,generate_nulldist:0,gerhardu:0,get:0,get_ac:0,get_all_ac:0,get_all_amc:0,get_amc:0,get_analytic_confid:0,get_analytic_signific:0,get_bootstrap_confid:0,get_c:0,get_ce_max:0,get_coef:0,get_coeff:0,get_conditional_entropi:0,get_confid:0,get_corrected_pvalu:0,get_dependence_measur:0,get_fit:0,get_fixed_thres_signific:0,get_general_fitted_model:0,get_general_predict:0,get_graph_from_dict:0,get_graph_from_link:0,get_graph_from_pmatrix:0,get_lagged_depend:0,get_links_from_graph:0,get_mc:0,get_measur:0,get_medi:0,get_mediation_graph_data:0,get_model_selection_criterion:0,get_optimal_set:0,get_predictor:0,get_shuffle_signific:0,get_signific:0,get_test_arrai:0,get_train_arrai:0,get_tsg:0,get_val_matrix:0,github:0,give:0,given:0,go:0,gp:0,gp_param:0,gpdc:0,gpdctorch:0,gpytorch:0,graph:0,graph_bool:0,graph_data:0,graph_is_mag:0,graph_typ:0,graphic:0,greater:0,ground:0,guarante:0,guidanc:0,h:0,ha:0,handl:0,hard:0,has_path:0,hash:0,have:0,heavisid:0,helper:0,henc:0,here:0,hidden:0,hidden_vari:0,high:0,higher:0,histogram:0,hochberg:0,hold:0,how:0,howev:0,html:0,http:0,hyper:0,hyperparamet:0,hypothesi:0,hypothet:0,i:0,i_:0,id:0,identifi:0,identifii:0,ie:0,ignor:0,iint:0,implement:0,impli:0,importantli:0,improv:0,includ:0,include_lagzero_link:0,include_lagzero_par:0,include_neighbor:0,incom:0,index:0,indirect:0,individu:0,inf:0,infin:0,info:0,inform:0,inherit:0,initi:0,initial_valu:0,inno_cov:0,innov:0,input:0,instanc:0,instanti:0,instead:0,instruct:0,integ:0,intellig:0,interdisciplinari:0,interest:0,intern:0,interpret:0,interv:0,interven:0,intervent:0,intervention_data:0,intervention_typ:0,introduc:0,introduct:0,inv_inno_cov:0,invalid:0,invers:0,inverse_transform:0,invit:0,irrelev:0,iter:0,its:0,itself:0,j:0,j_:0,j_t:0,joint:0,journal:0,just:0,k:0,k_:0,kei:0,kernel:0,kind:0,knn:0,kretschmer:0,kwarg:0,l:0,label:0,lag1:0,lag2:0,lag:0,lag_mod:0,lagged_par:0,larg:0,larger:0,largest:0,largest_time_step:0,last:0,latent:0,later:0,latest:0,latter:0,lead:0,learn:0,least:0,leav:0,left:0,len:0,length:0,less:0,let:0,lett:0,level:0,like:0,likelihood:0,lin_f:0,line:0,linear:0,linear_model:0,linearmedi:0,linearregress:0,link:0,link_coeff:0,link_frequ:0,link_matrix:0,links_coeff:0,links_to_graph:0,list:0,load:0,log:0,look:0,low:0,lower:0,lowhighpass_filt:0,m:0,made:0,mag:0,mai:0,main:0,major:0,make:0,mani:0,map:0,margin:0,maria:0,mark:0,markov:0,mask:0,mask_typ:0,match:0,mathcal:0,matric:0,matrix:0,matter:0,max:0,max_:0,max_combin:0,max_cond_px:0,max_conds_dim:0,max_conds_pi:0,max_conds_px:0,max_conds_px_lag:0,max_corr:0,max_delai:0,max_lag:0,max_lag_or_tau_max:0,max_p_glob:0,max_p_non_ancestr:0,max_pds_set:0,max_q_glob:0,maximum:0,mce:0,mci:0,mean:0,measur:0,med:0,member:0,memori:0,method:0,method_arg:0,middl:0,might:0,minim:0,minimized_optim:0,minimum:0,minu:0,miss:0,missing_flag:0,mlr:0,mmr:0,mode:0,model_param:0,modul:0,modulo:0,momentari:0,more:0,most:0,most_frequent_link:0,mostli:0,motif:0,much:0,mult_corr:0,multi:0,multipl:0,multivari:0,must:0,mutual:0,n:0,n_en:0,n_preliminary_iter:0,n_sampl:0,n_symb:0,nail:0,name:0,nan:0,napds_t:0,natur:0,ncomms9502:0,nearest:0,necessari:0,need:0,neg:0,neighbor:0,nest:0,net_to_tsg:0,network:0,neural:0,neurip:0,never:0,nevertheless:0,new_data:0,niehgbor:0,no_apr:0,no_nois:0,no_non_ancestral_phas:0,node:0,nois:0,non:0,non_rep:0,none:0,nonlinear:0,nonstat:0,nonstationari:0,nonzero:0,normal:0,note:0,nowack:0,np:0,npz:0,null_dist:0,null_dist_filenam:0,nulldist:0,number:0,numer:0,numpi:0,o:0,object:0,observ:0,observed_var:0,occur:0,off:0,offset:0,ol:0,onc:0,one:0,onli:0,only_non_causal_path:0,oper:0,opposit:0,optim:0,optimality_cond_des_ym:0,optimality_cond_i:0,optimz:0,option:0,oracl:0,oracleci:0,order:0,ordin:0,ordinal_patt_arrai:0,ordinari:0,org:0,orient:0,orient_comtemp:0,orient_contemp:0,origin:0,oset:0,oset_:0,other:0,otherwis:0,otion:0,ouput:0,out:0,outcom:0,output:0,over:0,overlap:0,overrid:0,overwrit:0,p:0,p_matrix:0,pa:0,packag:0,page:0,pair:0,pairwis:0,paper:0,parallel:0,paramet:0,parametr:0,parcorr:0,parcorrmult:0,parent:0,parent_node_id:0,parents_dict:0,parents_neighbors_coeff:0,parents_of_lag:0,part:0,partial:0,particular:0,pass:0,pass_period:0,path:0,path_node_arrai:0,path_val_matrix:0,pathwai:0,patt:0,patt_mask:0,patt_tim:0,pattern:0,pc1:0,pc:0,pc_1:0,pc_alpha:0,pcmciplu:0,pdf:0,peak:0,pearl:0,pearson:0,percentag:0,percentil:0,perform:0,period:0,permut:0,perp:0,perspect:0,phase:0,phi:0,phy:0,physrev:0,pip:0,plai:0,pleas:0,point:0,pomp:0,posit:0,possibl:0,post:0,potenti:0,power:0,pp:0,pq_matrix:0,practic:0,pre:0,precis:0,precomput:0,pred_param:0,predict_bootstrap_of:0,predict_total_effect:0,predict_wright_effect:0,prediction_model:0,predictor:0,prelim_onli:0,prelim_rul:0,prelim_with_collider_rul:0,preliminari:0,preprocess:0,present:0,preserv:0,press:0,previou:0,prime:0,principl:0,print:0,print_array_info:0,print_info:0,print_result:0,print_significant_link:0,prior:0,priorit:0,prl:0,procedur:0,proceed:0,processor:0,project:0,proper:0,properti:0,provid:0,pseudcod:0,pseudoc:0,pseudocod:0,psi:0,purpos:0,pval:0,pval_max:0,python:0,q_matrix:0,qualiti:0,quantifi:0,quantil:0,quantile_bin_arrai:0,quantiti:0,r10:0,r9:0,r:0,r_x:0,r_y:0,rais:0,randn:0,random:0,random_st:0,randomst:0,rang:0,rank:0,rate:0,rather:0,re:0,realiz:0,recal:0,recommend:0,reconstruct:0,recycle_residu:0,red:0,reduc:0,refer:0,reference_point:0,regard:0,regress:0,regular:0,rel:0,relat:0,relationship:0,relev:0,remain:0,remember_only_par:0,remov:0,remove_missing_upto_maxlag:0,remove_overlap:0,repeat:0,replac:0,repo:0,repres:0,represent:0,requir:0,reset_lagged_link:0,residu:0,respect:0,restrict:0,result:0,return_cleaned_xyz:0,return_data:0,return_dict:0,return_further_pred_result:0,return_individual_bootstrap_result:0,return_null_dist:0,return_parents_dict:0,return_path:0,return_separate_set:0,return_significant_link:0,rev:0,rho:0,richardson:0,right:0,rizzo:0,robust:0,role:0,row:0,rtype:0,rule:0,run:0,run_bivci:0,run_fullci:0,run_lpcmci:0,run_mci:0,run_pc_stabl:0,run_pcalg:0,run_pcalg_non_timeseries_data:0,run_pcmci:0,run_pcmciplu:0,run_sliding_window_of:0,run_test:0,run_test_raw:0,rung:0,runge18a:0,runtim:0,s2:0,s3:0,s41467:0,s:0,same:0,sampl:0,sample_s:0,saniti:0,save:0,save_iter:0,scale:0,sci:0,scienc:0,sciencemag:0,scikit:0,scipi:0,scitat:0,score:0,script:0,search:0,second:0,section:0,see:0,seed:0,seen:0,sejdinov:0,select:0,selected_link:0,selected_target:0,selected_vari:0,selection_var:0,self:0,separ:0,sepset:0,set:0,set_datafram:0,set_mask_typ:0,setter:0,sever:0,shape:0,share:0,shift:0,shorter:0,should:0,shown:0,shuffl:0,shuffle_neighbor:0,shuffle_test:0,side:0,sig_blocklength:0,sig_overrid:0,sig_sampl:0,sig_thr:0,sigma:0,signfic:0,signficic:0,signific:0,sim:0,simpl:0,simpli:0,sinc:0,singl:0,size:0,skeleton:0,sklearn:0,slice:0,slide:0,slightli:0,smaller:0,smooth:0,smooth_width:0,soft:0,some:0,sort:0,sound:0,sourc:0,spatial:0,spatio:0,specif:0,specifi:0,spirt:0,squar:0,standard:0,standardscal:0,star:0,start:0,starts_with:0,stationar:0,statist:0,std:0,step:0,steps_ahead:0,still:0,stop:0,store:0,str:0,strength:0,string:0,structur:0,structural_causal_process:0,student:0,sub:0,subset:0,subspac:0,suffici:0,suitabl:0,sum:0,sum_:0,summar:0,summari:0,summary_result:0,superset:0,supplement:0,suppli:0,support:0,sure:0,surrog:0,suscept:0,symb_arrai:0,symbol:0,symbolifi:0,symmetr:0,symmetrize_p_and_val_matrix:0,system:0,szeke:0,t:0,t_i:0,t_max:0,t_miss:0,tail:0,take:0,taken:0,target:0,target_predictor:0,tau:0,tau_:0,tau_max:0,tau_min:0,tau_mix:0,taumax:0,techniqu:0,tempor:0,termin:0,test_indic:0,than:0,thei:0,them:0,themselv:0,theorem:0,theoret:0,thi:0,thm:0,those:0,threshold:0,through:0,tild:0,time_bin_length:0,time_bin_with_mask:0,time_lag:0,time_offset:0,timelabel:0,togeth:0,toronto:0,total:0,toward:0,train:0,train_indic:0,transfer:0,transform:0,transient_fract:0,translat:0,tripl:0,true_par:0,true_parent_neighbor:0,truncat:0,truth:0,tsg:0,tsg_path_val_matrix:0,tsg_to_net:0,tune:0,tupl:0,tutori:0,twice:0,two:0,type:0,typic:0,uai2020:0,uai:0,un:0,uncertainti:0,unclear:0,uncondit:0,undecid:0,under:0,underli:0,undirect:0,uniform:0,uniqu:0,unit:0,unlik:0,unori:0,unrestrict:0,unshield:0,unshuffl:0,up:0,update_middle_mark:0,upper:0,us:0,use_a_pds_t_for_major:0,user:0,v84:0,val:0,val_matrix:0,val_matrix_interv:0,val_matrix_mean:0,val_min:0,val_onli:0,valid:0,valu:0,var1:0,var2:0,var_nam:0,var_network:0,var_process:0,vari:0,variabl:0,varianc:0,variant:0,variou:0,varlag:0,varx:0,vector:0,vector_var:0,verbos:0,veri:0,view:0,w:0,wa:0,wai:0,we:0,weight:0,weighted_avg_and_std:0,well:0,when:0,where:0,whether:0,which:0,whichev:0,whose:0,wide:0,widehat:0,width:0,wildcard:0,window:0,window_length:0,window_step:0,within:0,without:0,work:0,worker:0,would:0,wrapper:0,wright:0,www:0,x:0,x_:0,x_i:0,x_j:0,x_t:0,xy:0,xyz:0,xz:0,y:0,y_:0,y_t:0,yield:0,you:0,yz:0,z:0,z_i:0,z_j:0,z_t:0,zero:0},titles:["TIGRAMITE"],titleterms:{"function":0,analysi:0,causal:0,causal_effect:0,condit:0,data:0,data_process:0,effect:0,gener:0,independ:0,independence_test:0,indic:0,lpcmci:0,mediat:0,model:0,pcmci:0,plot:0,predict:0,process:0,seri:0,tabl:0,test:0,tigramit:0,time:0,toi:0,toymodel:0}}) \ No newline at end of file +Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["TIGRAMITE"], "terms": {"github": 0, "repo": 0, "python": 0, "packag": 0, "It": 0, "allow": 0, "effici": 0, "estim": 0, "graph": 0, "from": 0, "high": 0, "dimension": 0, "dataset": 0, "discoveri": 0, "us": 0, "robust": 0, "forecast": 0, "direct": 0, "total": 0, "base": 0, "linear": 0, "well": 0, "non": 0, "parametr": 0, "applic": 0, "discret": 0, "continu": 0, "valu": 0, "also": 0, "includ": 0, "qualiti": 0, "result": 0, "pleas": 0, "cite": 0, "follow": 0, "paper": 0, "depend": 0, "which": 0, "method": 0, "you": 0, "j": 0, "rung": 0, "p": 0, "nowack": 0, "m": 0, "kretschmer": 0, "s": 0, "flaxman": 0, "d": 0, "sejdinov": 0, "detect": 0, "quantifi": 0, "associ": 0, "larg": 0, "nonlinear": 0, "sci": 0, "adv": 0, "5": 0, "eaau4996": 0, "2019": 0, "http": 0, "advanc": 0, "sciencemag": 0, "org": 0, "content": 0, "11": 0, "2020": 0, "discov": 0, "contemporan": 0, "lag": 0, "relat": 0, "autocorrel": 0, "proceed": 0, "36th": 0, "confer": 0, "uncertainti": 0, "artifici": 0, "intellig": 0, "uai": 0, "toronto": 0, "canada": 0, "auai": 0, "press": 0, "uai2020": 0, "579_main_pap": 0, "pdf": 0, "gerhardu": 0, "A": 0, "recal": 0, "latent": 0, "confound": 0, "neural": 0, "inform": 0, "system": 0, "33": 0, "neurip": 0, "cc": 0, "hash": 0, "94e70705efae423efda1088614128d0b": 0, "abstract": 0, "html": 0, "2018": 0, "network": 0, "reconstruct": 0, "theoret": 0, "assumpt": 0, "practic": 0, "chao": 0, "an": 0, "interdisciplinari": 0, "journal": 0, "scienc": 0, "28": 0, "7": 0, "075310": 0, "aip": 0, "scitat": 0, "doi": 0, "10": 0, "1063": 0, "1": 0, "5025050": 0, "natur": 0, "commun": 0, "perspect": 0, "www": 0, "com": 0, "articl": 0, "s41467": 0, "019": 0, "10105": 0, "3": 0, "necessari": 0, "suffici": 0, "graphic": 0, "optim": 0, "adjust": 0, "set": 0, "hidden": 0, "variabl": 0, "2021": 0, "34": 0, "class": 0, "et": 0, "al": 0, "2015": 0, "identifi": 0, "gatewai": 0, "complex": 0, "spatio": 0, "tempor": 0, "6": 0, "8502": 0, "1038": 0, "ncomms9502": 0, "transfer": 0, "along": 0, "pathwai": 0, "phy": 0, "rev": 0, "e": 0, "92": 0, "62829": 0, "1103": 0, "physrev": 0, "062829": 0, "cmiknn": 0, "nearest": 0, "neighbor": 0, "mutual": 0, "In": 0, "21st": 0, "intern": 0, "statist": 0, "mlr": 0, "v84": 0, "runge18a": 0, "datafram": 0, "cond_ind_test": 0, "selected_vari": 0, "none": 0, "verbos": 0, "0": 0, "sourc": 0, "framework": 0, "scale": 0, "thi": 0, "contain": 0, "sever": 0, "The": 0, "standard": 0, "address": 0, "describ": 0, "where": 0, "further": 0, "sub": 0, "variant": 0, "ar": 0, "discuss": 0, "pcmciplu": 0, "see": 0, "tutori": 0, "guidanc": 0, "appli": 0, "ha": 0, "differ": 0, "adapt": 0, "implement": 0, "mostli": 0, "hyperparamet": 0, "easi": 0, "parallel": 0, "separ": 0, "script": 0, "handl": 0, "mask": 0, "fals": 0, "control": 0, "confid": 0, "interv": 0, "note": 0, "structur": 0, "repres": 0, "shown": 0, "figur": 0, "node": 0, "defin": 0, "link": 0, "can": 0, "interpret": 0, "under": 0, "certain": 0, "assum": 0, "stationar": 0, "repeat": 0, "parent": 0, "mathcal": 0, "all": 0, "toward": 0, "blue": 0, "red": 0, "box": 0, "iter": 0, "flexibl": 0, "combin": 0, "ani": 0, "kind": 0, "its": 0, "type": 0, "These": 0, "avail": 0, "mci": 0, "particular": 0, "measur": 0, "strength": 0, "For": 0, "exampl": 0, "parcorr": 0, "normal": 0, "between": 0, "howev": 0, "interest": 0, "i": 0, "hypothet": 0, "intervent": 0, "mai": 0, "better": 0, "look": 0, "refer": 0, "w": 0, "paramet": 0, "object": 0, "among": 0, "other": 0, "attribut": 0, "yield": 0, "numpi": 0, "arrai": 0, "shape": 0, "observ": 0, "t": 0, "n": 0, "option": 0, "same": 0, "extern": 0, "pass": 0, "callabl": 0, "condindtest": 0, "list": 0, "deprec": 0, "just": 0, "here": 0, "rais": 0, "error": 0, "int": 0, "default": 0, "level": 0, "all_par": 0, "dictionari": 0, "form": 0, "2": 0, "pc": 0, "algorithm": 0, "val_min": 0, "tau": 0, "float": 0, "minimum": 0, "each": 0, "pval_max": 0, "maximum": 0, "step": 0, "number": 0, "sampl": 0, "length": 0, "dict": 0, "convert_to_string_graph": 0, "graph_bool": 0, "convert": 0, "return": 0, "string": 0, "output": 0, "get_corrected_pvalu": 0, "p_matrix": 0, "fdr_method": 0, "fdr_bh": 0, "exclude_contemporan": 0, "true": 0, "tau_min": 0, "tau_max": 0, "selected_link": 0, "correct": 0, "multipl": 0, "current": 0, "benjamini": 0, "hochberg": 0, "rate": 0, "perform": 0, "either": 0, "onli": 0, "like": 0, "matrix": 0, "must": 0, "consist": 0, "check": 0, "larger": 0, "equal": 0, "specifi": 0, "whether": 0, "select": 0, "should": 0, "If": 0, "str": 0, "bool": 0, "q_matrix": 0, "get_graph_from_pmatrix": 0, "alpha_level": 0, "construct": 0, "threshold": 0, "alpha": 0, "take": 0, "account": 0, "05": 0, "signific": 0, "get": 0, "tau_mix": 0, "delai": 0, "descript": 0, "abov": 0, "get_lagged_depend": 0, "val_onli": 0, "uncondit": 0, "_": 0, "matric": 0, "new": 0, "4": 0, "fdr": 0, "zero": 0, "undirect": 0, "comput": 0, "val_matrix": 0, "conf_matrix": 0, "percentil": 0, "print_result": 0, "return_dict": 0, "print": 0, "kei": 0, "print_significant_link": 0, "ambiguous_tripl": 0, "latter": 0, "ambigu": 0, "conflict": 0, "tripl": 0, "return_parents_dict": 0, "include_lagzero_par": 0, "sort": 0, "unclear": 0, "o": 0, "x": 0, "parents_dict": 0, "return_significant_link": 0, "pq_matrix": 0, "include_lagzero_link": 0, "boolean": 0, "Will": 0, "remov": 0, "futur": 0, "run_bivci": 0, "bivci": 0, "run_fullci": 0, "fullci": 0, "run_mci": 0, "max_conds_pi": 0, "max_conds_px": 0, "y": 0, "unrestrict": 0, "z": 0, "run_pc_stabl": 0, "save_iter": 0, "pc_alpha": 0, "max_conds_dim": 0, "max_combin": 0, "made": 0, "self": 0, "multi": 0, "ahead": 0, "greater": 0, "save": 0, "everi": 0, "across": 0, "given": 0, "score": 0, "get_model_selection_criterion": 0, "cardin": 0, "pc_1": 0, "origin": 0, "run_pcalg": 0, "01": 0, "lagged_par": 0, "max_conds_px_lag": 0, "mode": 0, "contemp_collider_rul": 0, "major": 0, "conflict_resolut": 0, "run": 0, "contemp_cond": 0, "addit": 0, "ci": 0, "As": 0, "part": 0, "superset": 0, "pc1": 0, "conserv": 0, "rule": 0, "collid": 0, "phase": 0, "detail": 0, "lead": 0, "order": 0, "mark": 0, "orient": 0, "when": 0, "regard": 0, "adjac": 0, "sepset": 0, "relev": 0, "run_pcalg_non_timeseries_data": 0, "simpli": 0, "call": 0, "ouput": 0, "run_pcmci": 0, "wrapper": 0, "around": 0, "comprehens": 0, "analyt": 0, "numer": 0, "present": 0, "we": 0, "briefli": 0, "summar": 0, "two": 0, "procedur": 0, "tild": 0, "j_t": 0, "reduc": 0, "avoid": 0, "irrelev": 0, "momentari": 0, "i_": 0, "perp": 0, "j_": 0, "common": 0, "driver": 0, "indirect": 0, "main": 0, "free": 0, "tau_": 0, "max": 0, "chosen": 0, "accord": 0, "expect": 0, "recommend": 0, "rather": 0, "choic": 0, "peak": 0, "seen": 0, "sinc": 0, "hypothesi": 0, "do": 0, "precis": 0, "assess": 0, "role": 0, "regular": 0, "techniqu": 0, "criteria": 0, "respect": 0, "import": 0, "pp": 0, "structural_causal_process": 0, "random": 0, "seed": 0, "plai": 0, "incom": 0, "suppli": 0, "format": 0, "coeff": 0, "links_coeff": 0, "8": 0, "var_process": 0, "1000": 0, "pval": 0, "00000": 0, "val": 0, "588": 0, "606": 0, "447": 0, "618": 0, "499": 0, "run_pcmciplu": 0, "reset_lagged_link": 0, "contrast": 0, "full": 0, "up": 0, "markov": 0, "equival": 0, "faith": 0, "four": 0, "widehat": 0, "b": 0, "_t": 0, "skeleton": 0, "through": 0, "subset": 0, "conduct": 0, "motif": 0, "unshield": 0, "remain": 0, "Its": 0, "entri": 0, "denot": 0, "unori": 0, "could": 0, "direction": 0, "undecid": 0, "due": 0, "importantli": 0, "alwai": 0, "dag": 0, "first": 0, "one": 0, "member": 0, "averag": 0, "over": 0, "fit": 0, "anoth": 0, "togeth": 0, "fulli": 0, "mean": 0, "doe": 0, "matter": 0, "last": 0, "restrict": 0, "found": 0, "consid": 0, "again": 0, "improv": 0, "power": 0, "runtim": 0, "np": 0, "var": 0, "def": 0, "lin_f": 0, "9": 0, "nonstat": 0, "676": 0, "602": 0, "599": 0, "486": 0, "466": 0, "524": 0, "449": 0, "001": 0, "005": 0, "025": 0, "run_sliding_window_of": 0, "method_arg": 0, "window_step": 0, "window_length": 0, "conf_lev": 0, "95": 0, "slide": 0, "window": 0, "taken": 0, "summary_result": 0, "all_result": 0, "individu": 0, "val_matrix_mean": 0, "val_matrix_interv": 0, "bound": 0, "most_frequent_link": 0, "most": 0, "frequent": 0, "outcom": 0, "specif": 0, "link_frequ": 0, "occur": 0, "frequenc": 0, "valid": 0, "argument": 0, "side": 0, "summari": 0, "symmetrize_p_and_val_matrix": 0, "symmetr": 0, "learn": 0, "relationship": 0, "introduc": 0, "explain": 0, "still": 0, "experiment": 0, "being": 0, "fine": 0, "tune": 0, "actual": 0, "invit": 0, "feedback": 0, "work": 0, "best": 0, "experi": 0, "run_lpcmci": 0, "constructor": 0, "bold": 0, "some": 0, "might": 0, "potenti": 0, "absent": 0, "smaller": 0, "than": 0, "dpag": 0, "taumax": 0, "underli": 0, "n_preliminary_iter": 0, "determin": 0, "preliminari": 0, "correspond": 0, "k": 0, "max_cond_px": 0, "pair": 0, "s2": 0, "_run_ancestral_removal_phas": 0, "apds_t": 0, "c": 0, "g": 0, "higher": 0, "s3": 0, "_run_non_ancestral_removal_phas": 0, "napds_t": 0, "max_p_glob": 0, "max_p_non_ancestr": 0, "second": 0, "_run_dsep_removal_phas": 0, "max_q_glob": 0, "mani": 0, "sum": 0, "more": 0, "max_pds_set": 0, "element": 0, "opposit": 0, "prelim_with_collider_rul": 0, "pseudocod": 0, "line": 0, "22": 0, "replac": 0, "18": 0, "directli": 0, "befor": 0, "parents_of_lag": 0, "pa": 0, "prelim_onli": 0, "stop": 0, "after": 0, "break_once_separ": 0, "break": 0, "command": 0, "no_non_ancestral_phas": 0, "execut": 0, "use_a_pds_t_for_major": 0, "search": 0, "instruct": 0, "adj": 0, "orient_contemp": 0, "orient_comtemp": 0, "update_middle_mark": 0, "pseudoc": 0, "mmr": 0, "prelim_rul": 0, "exclud": 0, "r9": 0, "prime": 0, "r10": 0, "fix_all_edges_before_final_orient": 0, "inf": 0, "termin": 0, "although": 0, "middl": 0, "empti": 0, "nevertheless": 0, "sound": 0, "appropri": 0, "forc": 0, "auto_first": 0, "pseudcod": 0, "autodepend": 0, "priorit": 0, "even": 0, "remember_only_par": 0, "been": 0, "ancestor": 0, "point": 0, "wa": 0, "later": 0, "initi": 0, "tail": 0, "re": 0, "no_apr": 0, "apr": 0, "except": 0, "never": 0, "conveni": 0, "have": 0, "post": 0, "purpos": 0, "wildcard": 0, "ast": 0, "edg": 0, "star": 0, "42": 0, "mask_typ": 0, "fixed_thr": 0, "sig_sampl": 0, "sig_blocklength": 0, "conf_sampl": 0, "100": 0, "conf_blocklength": 0, "recycle_residu": 0, "provid": 0, "shuffl": 0, "bootstrap": 0, "inherit": 0, "randomst": 0, "default_rng": 0, "xy": 0, "xz": 0, "yz": 0, "xyz": 0, "miss": 0, "shuffle_test": 0, "absolut": 0, "block": 0, "decai": 0, "autocovari": 0, "nan": 0, "residu": 0, "store": 0, "faster": 0, "cost": 0, "consider": 0, "memori": 0, "get_analytic_confid": 0, "df": 0, "concret": 0, "overrid": 0, "possibl": 0, "get_analytic_signific": 0, "dim": 0, "get_bootstrap_confid": 0, "dependence_measur": 0, "With": 0, "row": 0, "column": 0, "get_dependence_measur": 0, "conf_low": 0, "conf_upp": 0, "upper": 0, "lower": 0, "tupl": 0, "get_confid": 0, "child": 0, "index": 0, "make": 0, "sure": 0, "size": 0, "instanti": 0, "get_fixed_thres_signific": 0, "signfic": 0, "ab": 0, "els": 0, "unshuffl": 0, "fix": 0, "posit": 0, "get_measur": 0, "get_shuffle_signific": 0, "return_null_dist": 0, "get_signific": 0, "sig_overrid": 0, "whichev": 0, "ie": 0, "featur": 0, "properti": 0, "print_info": 0, "about": 0, "run_test": 0, "cut_off": 0, "2xtau_max": 0, "signficic": 0, "both": 0, "_get_single_residu": 0, "max_lag": 0, "max_lag_or_tau_max": 0, "how": 0, "cutoff": 0, "begin": 0, "guarante": 0, "compar": 0, "much": 0, "run_test_raw": 0, "input": 0, "dimens": 0, "set_datafram": 0, "flag": 0, "set_mask_typ": 0, "setter": 0, "ensur": 0, "clash": 0, "kwarg": 0, "partial": 0, "correl": 0, "ordinari": 0, "least": 0, "squar": 0, "ol": 0, "regress": 0, "pearson": 0, "To": 0, "out": 0, "beta_x": 0, "epsilon_": 0, "beta_i": 0, "Then": 0, "rho": 0, "left": 0, "r_x": 0, "r_y": 0, "right": 0, "student": 0, "distribut": 0, "d_z": 0, "degre": 0, "freedom": 0, "coeffici": 0, "eg": 0, "less": 0, "corrected_a": 0, "akaik": 0, "criterion": 0, "modulo": 0, "constant": 0, "leav": 0, "cross": 0, "asymptot": 0, "aic": 0, "target": 0, "gpdc": 0, "null_dist_filenam": 0, "gp_param": 0, "gaussian": 0, "distanc": 0, "gp": 0, "scikit": 0, "kernel": 0, "let": 0, "them": 0, "automat": 0, "cython": 0, "null": 0, "precomput": 0, "generate_and_save_nulldist": 0, "npz": 0, "file": 0, "f_x": 0, "f_y": 0, "sim": 0, "sigma": 0, "bandwidth": 0, "optimz": 0, "sklearn": 0, "transform": 0, "uniform": 0, "margin": 0, "r": 0, "pre": 0, "otherwis": 0, "dure": 0, "gabor": 0, "szeke": 0, "maria": 0, "l": 0, "rizzo": 0, "nail": 0, "bakirov": 0, "arxiv": 0, "0803": 0, "4101": 0, "otion": 0, "path": 0, "gaussianprocessregressor": 0, "gaussprocreg": 0, "sample_s": 0, "pairwis": 0, "generate_nulldist": 0, "dist": 0, "disk": 0, "add": 0, "gauss_pr": 0, "null_dist": 0, "name": 0, "add_to_null_dist": 0, "load": 0, "nulldist": 0, "wide": 0, "rang": 0, "beforehand": 0, "log": 0, "likelihood": 0, "neg": 0, "Is": 0, "gpdctorch": 0, "gpytorch": 0, "dcor": 0, "pip": 0, "gaussprocregtorch": 0, "knn": 0, "shuffle_neighbor": 0, "rank": 0, "worker": 0, "come": 0, "joint": 0, "densiti": 0, "frenzel": 0, "pomp": 0, "lett": 0, "99": 0, "204101": 0, "2007": 0, "suitabl": 0, "cmisymb": 0, "cmi": 0, "iint": 0, "frac": 0, "cdot": 0, "dx": 0, "dy": 0, "dz": 0, "psi": 0, "sum_": 0, "k_": 0, "digamma": 0, "hyper": 0, "cube": 0, "subspac": 0, "view": 0, "smooth": 0, "unlik": 0, "bia": 0, "varianc": 0, "slightli": 0, "while": 0, "quantiti": 0, "requir": 0, "scipi": 0, "spatial": 0, "ckdtree": 0, "fraction": 0, "henc": 0, "within": 0, "surrog": 0, "processor": 0, "get_conditional_entropi": 0, "entropi": 0, "h": 0, "prl": 0, "overwrit": 0, "preserv": 0, "permut": 0, "those": 0, "x_i": 0, "x_j": 0, "z_j": 0, "niehgbor": 0, "z_i": 0, "n_symb": 0, "symbol": 0, "bincount": 0, "histogram": 0, "oracleci": 0, "observed_var": 0, "selection_var": 0, "graph_is_mag": 0, "oracl": 0, "link_coeff": 0, "ground": 0, "truth": 0, "unit": 0, "altern": 0, "digest": 0, "func": 0, "definin": 0, "check_shortest_path": 0, "starts_with": 0, "ends_with": 0, "forbidden_nod": 0, "only_non_causal_path": 0, "check_optimality_cond": 0, "optimality_cond_des_ym": 0, "optimality_cond_i": 0, "return_path": 0, "non_rep": 0, "au_i": 0, "au_j": 0, "alreadi": 0, "truncat": 0, "breadth": 0, "start": 0, "end": 0, "veri": 0, "long": 0, "constrain": 0, "has_path": 0, "instead": 0, "ancestr": 0, "compute_ancestor": 0, "anc_all_x": 0, "anc_all_i": 0, "anc_all_z": 0, "arrohead": 0, "exist": 0, "compat": 0, "get_graph_from_link": 0, "mag": 0, "admg": 0, "project": 0, "oper": 0, "pearl": 0, "2009": 0, "get_links_from_graph": 0, "case": 0, "ad": 0, "canon": 0, "richardson": 0, "spirt": 0, "2002": 0, "support": 0, "evalu": 0, "Not": 0, "dummi": 0, "parcorrmult": 0, "correlation_typ": 0, "max_corr": 0, "multivari": 0, "mult_corr": 0, "causaleffect": 0, "graph_typ": 0, "hidden_vari": 0, "check_sm_overlap": 0, "backdoor": 0, "variou": 0, "without": 0, "wright": 0, "depth": 0, "introduct": 0, "8485ae387a981d783f8764e508151cd9": 0, "caus": 0, "overlap": 0, "check_xys_path": 0, "proper": 0, "clean": 0, "check_optim": 0, "thm": 0, "fit_bootstrap_of": 0, "boot_sampl": 0, "boot_blocklength": 0, "drawn": 0, "construct_arrai": 0, "shift": 0, "bootsrap": 0, "predict_bootstrap_of": 0, "draw": 0, "fit_total_effect": 0, "adjustment_set": 0, "conditional_estim": 0, "data_transform": 0, "linear_model": 0, "linearregress": 0, "oset": 0, "minimized_optim": 0, "minim": 0, "colliders_minimized_optim": 0, "nest": 0, "preprocess": 0, "prior": 0, "standardscal": 0, "simpl": 0, "fit_wright_effect": 0, "considerd": 0, "complic": 0, "static": 0, "get_graph_from_dict": 0, "helper": 0, "get_medi": 0, "get_optimal_set": 0, "alternative_condit": 0, "return_separate_set": 0, "theorem": 0, "colliders_onli": 0, "invalid": 0, "collider_par": 0, "oset_": 0, "return_individual_bootstrap_result": 0, "confidence_interv": 0, "predict_total_effect": 0, "intervention_data": 0, "conditions_data": 0, "pred_param": 0, "return_further_pred_result": 0, "len": 0, "predictor": 0, "entir": 0, "estimate_confid": 0, "predict_wright_effect": 0, "conditional_model": 0, "care": 0, "inverse_transform": 0, "get_coef": 0, "get_fit": 0, "return_data": 0, "integ": 0, "fit_result": 0, "get_general_fitted_model": 0, "f": 0, "get_general_predict": 0, "get_val_matrix": 0, "fit_model": 0, "give": 0, "deriv": 0, "linearmedi": 0, "model_param": 0, "etc": 0, "ce": 0, "mce": 0, "ac": 0, "suscept": 0, "amc": 0, "chain": 0, "x_t": 0, "eta": 0, "y_t": 0, "x_": 0, "z_t": 0, "y_": 0, "25": 0, "impli": 0, "37": 0, "true_par": 0, "med": 0, "get_coeff": 0, "get_c": 0, "get_mc": 0, "get_all_ac": 0, "get_all_amc": 0, "250648072987": 0, "36897445": 0, "25718002": 0, "24365041": 0, "38250406": 0, "12532404": 0, "phi": 0, "accept": 0, "get_ac": 0, "lag_mod": 0, "absmax": 0, "exclude_i": 0, "eman": 0, "all_lag": 0, "itself": 0, "exclude_j": 0, "affect": 0, "previou": 0, "exclude_k": 0, "exclude_self_effect": 0, "themselv": 0, "get_amc": 0, "get_ce_max": 0, "minu": 0, "go": 0, "get_mediation_graph_data": 0, "include_neighbor": 0, "weight": 0, "path_val_matrix": 0, "path_node_arrai": 0, "tsg_path_val_matrix": 0, "graph_data": 0, "color": 0, "get_tsg": 0, "link_matrix": 0, "analyz": 0, "sig_thr": 0, "array_lik": 0, "tsg": 0, "net_to_tsg": 0, "translat": 0, "tsg_to_net": 0, "train_indic": 0, "test_indic": 0, "prediction_model": 0, "train": 0, "need": 0, "target_predictor": 0, "selected_target": 0, "instanc": 0, "get_predictor": 0, "steps_ahead": 0, "get_test_arrai": 0, "get_train_arrai": 0, "new_data": 0, "missing_flag": 0, "vector_var": 0, "var_nam": 0, "datatim": 0, "analysis_mod": 0, "singl": 0, "reference_point": 0, "time_offset": 0, "remove_missing_upto_maxlag": 0, "OR": 0, "whose": 0, "t_i": 0, "vari": 0, "dismiss": 0, "slice": 0, "below": 0, "bias": 0, "section": 0, "supplement": 0, "match": 0, "enumer": 0, "timelabel": 0, "1d": 0, "rel": 0, "share": 0, "axi": 0, "creat": 0, "t_max": 0, "largest_time_step": 0, "bigger": 0, "ignor": 0, "At": 0, "align": 0, "agre": 0, "offset": 0, "_initialized_from": 0, "2d": 0, "3d": 0, "hold": 0, "map": 0, "represent": 0, "identifii": 0, "wai": 0, "max_": 0, "largest": 0, "latest": 0, "random_st": 0, "extraz": 0, "return_cleaned_xyz": 0, "do_check": 0, "remove_overlap": 0, "n_en": 0, "var1": 0, "var2": 0, "varlag": 0, "assign": 0, "duplic": 0, "saniti": 0, "thei": 0, "2xtau_max_futur": 0, "cut": 0, "off": 0, "t_miss": 0, "principl": 0, "would": 0, "n_sampl": 0, "print_array_info": 0, "info": 0, "typic": 0, "varx": 0, "lowhighpass_filt": 0, "cutperiod": 0, "pass_period": 0, "low": 0, "butterworth": 0, "filter": 0, "twice": 0, "onc": 0, "forward": 0, "backward": 0, "period": 0, "act": 0, "ordinal_patt_arrai": 0, "array_mask": 0, "symbolifi": 0, "ordin": 0, "pattern": 0, "vector": 0, "uniqu": 0, "There": 0, "faculti": 0, "symb_arrai": 0, "shorter": 0, "2011": 0, "coupl": 0, "83": 0, "12": 0, "051122": 0, "label": 0, "embed": 0, "patt": 0, "patt_mask": 0, "patt_tim": 0, "quantile_bin_arrai": 0, "bin": 0, "quantil": 0, "smooth_width": 0, "width": 0, "heavisid": 0, "rtype": 0, "nois": 0, "intervention_typ": 0, "hard": 0, "time_bin_with_mask": 0, "time_bin_length": 0, "bindata": 0, "parents_neighbors_coeff": 0, "inv_inno_cov": 0, "initial_valu": 0, "autoregress": 0, "innov": 0, "var_network": 0, "user": 0, "friendli": 0, "weighted_avg_and_std": 0, "deviat": 0, "std": 0, "dag_to_link": 0, "links_to_graph": 0, "transient_fract": 0, "interven": 0, "arbitrari": 0, "factor": 0, "randn": 0, "un": 0, "soft": 0, "percentag": 0, "transient": 0, "realiz": 0, "nonstationari": 0, "infin": 0, "lag1": 0, "coef1": 0, "lag2": 0, "coef2": 0, "nonzero": 0, "covari": 0, "invers": 0, "inno_cov": 0, "debug": 0, "no_nois": 0, "disabl": 0, "max_delai": 0, "true_parent_neighbor": 0, "id": 0, "parent_node_id": 0, "time_lag": 0, "modul": 0, "page": 0}, "objects": {"tigramite.causal_effects": [[0, 0, 1, "", "CausalEffects"]], "tigramite.causal_effects.CausalEffects": [[0, 1, 1, "", "check_XYS_paths"], [0, 1, 1, "", "check_optimality"], [0, 1, 1, "", "fit_bootstrap_of"], [0, 1, 1, "", "fit_total_effect"], [0, 1, 1, "", "fit_wright_effect"], [0, 1, 1, "", "get_graph_from_dict"], [0, 1, 1, "", "get_mediators"], [0, 1, 1, "", "get_optimal_set"], [0, 1, 1, "", "predict_bootstrap_of"], [0, 1, 1, "", "predict_total_effect"], [0, 1, 1, "", "predict_wright_effect"]], "tigramite": [[0, 2, 0, "-", "data_processing"]], "tigramite.data_processing": [[0, 0, 1, "", "DataFrame"], [0, 4, 1, "", "lowhighpass_filter"], [0, 4, 1, "", "ordinal_patt_array"], [0, 4, 1, "", "quantile_bin_array"], [0, 4, 1, "", "smooth"], [0, 4, 1, "", "structural_causal_process"], [0, 4, 1, "", "time_bin_with_mask"], [0, 4, 1, "", "var_process"], [0, 4, 1, "", "weighted_avg_and_std"]], "tigramite.data_processing.DataFrame": [[0, 1, 1, "", "construct_array"], [0, 1, 1, "", "print_array_info"]], "tigramite.data_processing.DataFrame.self": [[0, 3, 1, "", "M"], [0, 3, 1, "", "N"], [0, 3, 1, "", "T"], [0, 3, 1, "", "_initialized_from"], [0, 3, 1, "", "analysis_mode"], [0, 3, 1, "", "bootstrap"], [0, 3, 1, "", "datasets"], [0, 3, 1, "", "datatime"], [0, 3, 1, "", "largest_time_step"], [0, 3, 1, "", "mask"], [0, 3, 1, "", "missing_flag"], [0, 3, 1, "", "reference_points"], [0, 3, 1, "", "time_offsets"], [0, 3, 1, "", "values"], [0, 3, 1, "", "var_names"]], "tigramite.independence_tests": [[0, 0, 1, "", "CMIknn"], [0, 0, 1, "", "CMIsymb"], [0, 0, 1, "", "CondIndTest"], [0, 0, 1, "", "GPDC"], [0, 0, 1, "", "GPDCtorch"], [0, 0, 1, "", "OracleCI"], [0, 0, 1, "", "ParCorr"], [0, 0, 1, "", "ParCorrMult"]], "tigramite.independence_tests.CMIknn": [[0, 1, 1, "", "get_conditional_entropy"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.CMIsymb": [[0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.CondIndTest": [[0, 1, 1, "", "get_analytic_confidence"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_bootstrap_confidence"], [0, 1, 1, "", "get_confidence"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_fixed_thres_significance"], [0, 1, 1, "", "get_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 1, 1, "", "get_significance"], [0, 5, 1, "", "measure"], [0, 1, 1, "", "print_info"], [0, 1, 1, "", "run_test"], [0, 1, 1, "", "run_test_raw"], [0, 1, 1, "", "set_dataframe"], [0, 1, 1, "", "set_mask_type"]], "tigramite.independence_tests.GPDC": [[0, 1, 1, "", "generate_and_save_nulldists"], [0, 1, 1, "", "generate_nulldist"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.GPDCtorch": [[0, 1, 1, "", "generate_and_save_nulldists"], [0, 1, 1, "", "generate_nulldist"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.OracleCI": [[0, 1, 1, "", "check_shortest_path"], [0, 1, 1, "", "get_confidence"], [0, 1, 1, "", "get_graph_from_links"], [0, 1, 1, "", "get_links_from_graph"], [0, 1, 1, "", "get_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 5, 1, "", "measure"], [0, 1, 1, "", "run_test"], [0, 1, 1, "", "set_dataframe"]], "tigramite.independence_tests.ParCorr": [[0, 1, 1, "", "get_analytic_confidence"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"]], "tigramite.independence_tests.ParCorrMult": [[0, 1, 1, "", "get_analytic_confidence"], [0, 1, 1, "", "get_analytic_significance"], [0, 1, 1, "", "get_dependence_measure"], [0, 1, 1, "", "get_model_selection_criterion"], [0, 1, 1, "", "get_shuffle_significance"], [0, 5, 1, "", "measure"], [0, 1, 1, "", "mult_corr"]], "tigramite.lpcmci": [[0, 0, 1, "", "LPCMCI"]], "tigramite.lpcmci.LPCMCI": [[0, 1, 1, "", "run_lpcmci"]], "tigramite.models": [[0, 0, 1, "", "LinearMediation"], [0, 0, 1, "", "Models"], [0, 0, 1, "", "Prediction"]], "tigramite.models.LinearMediation": [[0, 1, 1, "", "fit_model"], [0, 1, 1, "", "get_ace"], [0, 1, 1, "", "get_acs"], [0, 1, 1, "", "get_all_ace"], [0, 1, 1, "", "get_all_acs"], [0, 1, 1, "", "get_all_amce"], [0, 1, 1, "", "get_amce"], [0, 1, 1, "", "get_ce"], [0, 1, 1, "", "get_ce_max"], [0, 1, 1, "", "get_coeff"], [0, 1, 1, "", "get_mce"], [0, 1, 1, "", "get_mediation_graph_data"], [0, 1, 1, "", "get_tsg"], [0, 1, 1, "", "get_val_matrix"], [0, 1, 1, "", "net_to_tsg"], [0, 1, 1, "", "tsg_to_net"]], "tigramite.models.Models": [[0, 1, 1, "", "get_coefs"], [0, 1, 1, "", "get_fit"], [0, 1, 1, "", "get_general_fitted_model"], [0, 1, 1, "", "get_general_prediction"], [0, 1, 1, "", "get_val_matrix"]], "tigramite.models.Prediction": [[0, 1, 1, "", "fit"], [0, 1, 1, "", "get_predictors"], [0, 1, 1, "", "get_test_array"], [0, 1, 1, "", "get_train_array"], [0, 1, 1, "", "predict"]], "tigramite.pcmci": [[0, 0, 1, "", "PCMCI"]], "tigramite.pcmci.PCMCI": [[0, 3, 1, "", "N"], [0, 3, 1, "", "T"], [0, 3, 1, "", "all_parents"], [0, 1, 1, "", "convert_to_string_graph"], [0, 1, 1, "", "get_corrected_pvalues"], [0, 1, 1, "", "get_graph_from_pmatrix"], [0, 1, 1, "", "get_lagged_dependencies"], [0, 3, 1, "", "iterations"], [0, 1, 1, "", "print_results"], [0, 1, 1, "", "print_significant_links"], [0, 3, 1, "", "pval_max"], [0, 1, 1, "", "return_parents_dict"], [0, 1, 1, "", "return_significant_links"], [0, 1, 1, "", "run_bivci"], [0, 1, 1, "", "run_fullci"], [0, 1, 1, "", "run_mci"], [0, 1, 1, "", "run_pc_stable"], [0, 1, 1, "", "run_pcalg"], [0, 1, 1, "", "run_pcalg_non_timeseries_data"], [0, 1, 1, "", "run_pcmci"], [0, 1, 1, "", "run_pcmciplus"], [0, 1, 1, "", "run_sliding_window_of"], [0, 1, 1, "", "symmetrize_p_and_val_matrix"], [0, 3, 1, "", "val_min"]], "tigramite.toymodels": [[0, 2, 0, "-", "structural_causal_processes"]], "tigramite.toymodels.structural_causal_processes": [[0, 4, 1, "", "dag_to_links"], [0, 4, 1, "", "links_to_graph"], [0, 4, 1, "", "structural_causal_process"], [0, 4, 1, "", "var_process"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:module", "3": "py:attribute", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "module", "Python module"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"tigramit": 0, "pcmci": 0, "lpcmci": 0, "independence_test": 0, "condit": 0, "independ": 0, "test": 0, "causal_effect": 0, "causal": 0, "effect": 0, "analysi": 0, "model": 0, "time": 0, "seri": 0, "mediat": 0, "predict": 0, "data_process": 0, "data": 0, "process": 0, "function": 0, "toymodel": 0, "toi": 0, "gener": 0, "plot": 0, "indic": 0, "tabl": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 56}}) \ No newline at end of file diff --git a/release_on_pip.sh b/release_on_pip.sh index 4271b31f..3737a07b 100755 --- a/release_on_pip.sh +++ b/release_on_pip.sh @@ -1,7 +1,7 @@ #!/bin/bash homename="jakobrunge" -version="51000" +version="51020" # Steps to move from github to pip # (Make sure pypi token exists) diff --git a/setup.py b/setup.py index 1244b89f..0db5ff6c 100644 --- a/setup.py +++ b/setup.py @@ -63,7 +63,7 @@ def run(self): # Run the setup setup( name="tigramite", - version="5.1.0.2", + version="5.1.0.3", packages=["tigramite", "tigramite.independence_tests", "tigramite.toymodels"], license="GNU General Public License v3.0", description="Tigramite causal discovery for time series", diff --git a/tigramite/data_processing.py b/tigramite/data_processing.py index 36072747..d553a072 100644 --- a/tigramite/data_processing.py +++ b/tigramite/data_processing.py @@ -356,71 +356,44 @@ def _check_mask(self, mask=None, require_mask=False): if require_mask and _use_mask is None: raise ValueError("Expected a mask, but got nothing!") - # ######################################################################## - # ## HACK: - # # (needed for compatibility with pcmci.py) - # # (unsure about compatibility with models.py) - # if _use_mask is self.mask: - # return _use_mask - ######################################################################## - # If we have a mask, check it if _use_mask is not None: # Check data type and generic format of 'mask', map to multiple datasets mode # dictionary representation - if self._initialized_from == "2d numpy array": - if isinstance(_use_mask, np.ndarray): - if len(_use_mask.shape) == 2: - _use_mask_dict = {0: _use_mask} + if isinstance(_use_mask, np.ndarray): + if len(_use_mask.shape) == 2: + _use_mask_dict = {0: _use_mask} + elif len(_use_mask.shape) == 3: + if _use_mask.shape[0] == self.M: + _use_mask_dict = {i: _use_mask[i, :, :] for i in range(self.M)} else: - raise TypeError("'data' given as 2d np.ndarray. "\ - "'mask' is np.ndarray of shape {}, must be of "\ - "shape (T, N).".format(_use_mask.shape)) + raise ValueError("Shape mismatch: {} datasets "\ + " in 'data' but {} in 'mask', must be "\ + "identical.".format(self.M, _use_mask.shape[0])) else: - raise TypeError("'data' given as np.ndarray. 'mask' is of "\ - "type {}, must also be np.ndarray.".format( - type(_use_mask))) - - elif self._initialized_from == "3d numpy array": - if isinstance(_use_mask, np.ndarray): - if len(_use_mask.shape) == 3: - if _use_mask.shape[0] == self.M: - _use_mask_dict = {i: _use_mask[i, :, :] for i in range(self.M)} - else: - raise ValueError("Shape mismatch: {} datasets "\ - " in 'data' but {} in 'mask', must be "\ - "identical.".format(self.M, _use_mask.shape[0])) + raise TypeError("'data' given as 3d np.ndarray. "\ + "'mask' is np.ndarray of shape {}, must be of "\ + "shape (M, T, N).".format(_use_mask.shape)) - else: - raise TypeError("'data' given as 3d np.ndarray. "\ - "'mask' is np.ndarray of shape {}, must be of "\ - "shape (M, T, N).".format(_use_mask.shape)) + elif isinstance(_use_mask, dict): + if len(_use_mask) == self.M: + for ens_member_key in self.values.keys(): + if _use_mask.get(ens_member_key) is None: + raise ValueError("'data' has key {} (type {}) "\ + "but 'mask' does not, keys must be "\ + "identical.".format(ens_member_key, + type(ens_member_key))) - else: - raise TypeError("'data' given as np.ndarray. 'mask' is of "\ - "type {}, must also be np.ndarray.".format( - type(_use_mask))) - - elif self._initialized_from == "dict": - if isinstance(_use_mask, dict): - if len(_use_mask) == self.M: - for ens_member_key in self.values.keys(): - if _use_mask.get(ens_member_key) is None: - raise ValueError("'data' has key {} (type {}) "\ - "but 'mask' does not, keys must be "\ - "identical.".format(ens_member_key, - type(ens_member_key))) - - _use_mask_dict = _use_mask + _use_mask_dict = _use_mask - else: - raise ValueError("Shape mismatch: {} datasets "\ - "in 'data' but {} in 'mask', must be "\ - "identical.".format(self.M, len(_use_mask))) else: - raise TypeError("'data' given as dict. 'mask' is of type "\ - "{}, must also be dict.".format(type(_use_mask))) + raise ValueError("Shape mismatch: {} datasets "\ + "in 'data' but {} in 'mask', must be "\ + "identical.".format(self.M, len(_use_mask))) + else: + raise TypeError("'mask' is of type "\ + "{}, must be dict or array.".format(type(_use_mask))) # Check for consistency with shape of 'self.values' and for NaNs for ens_member_key, ens_member_data in self.values.items(): diff --git a/tigramite/plotting.py b/tigramite/plotting.py index 3222322d..1db24a2d 100644 --- a/tigramite/plotting.py +++ b/tigramite/plotting.py @@ -1,6 +1,6 @@ """Tigramite plotting package.""" -# Author: Jakob Runge +# Author: Jakob Runge # # License: GNU General Public License v3.0 diff --git a/tutorials/tigramite_tutorial_explaining_correlations.ipynb b/tutorials/tigramite_tutorial_explaining_correlations.ipynb index e2a6facf..7f737fb1 100644 --- a/tutorials/tigramite_tutorial_explaining_correlations.ipynb +++ b/tutorials/tigramite_tutorial_explaining_correlations.ipynb @@ -25,13 +25,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/plotting.py:26: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/../versions.py'\n", - " warnings.warn(str(e))\n", - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/gpdc.py:27: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/../../versions.py'\n", - " warnings.warn(str(e))\n", - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/gpdc_torch.py:33: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/../../versions.py'\n", - " warnings.warn(str(e))\n", - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/models.py:29: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/../versions.py'\n", + "/home/jakobrunge/work/code/python_code/tigramite/tigramite_v4/tigramite/tigramite/independence_tests/gpdc_torch.py:33: UserWarning: ('Version mismatch. Installed version of torch', '1.10.2', 'Please install torch>=', '1.11.0')\n", " warnings.warn(str(e))\n" ] } @@ -100,8 +94,9 @@ "T, N = data.shape\n", "\n", "# For generality, we include some masking\n", - "mask = np.zeros(data.shape, dtype='int')\n", + "# mask = np.zeros(data.shape, dtype='int')\n", "# mask[:int(T/2)] = True\n", + "mask=None\n", "\n", "# Initialize dataframe object, specify time axis and variable names\n", "var_names = [r'$X^0$', r'$X^1$', r'$X^2$', r'$X^3$', r'$X^4$']\n", @@ -141,7 +136,9 @@ ], "source": [ "tau_max = 10\n", - "parcorr = ParCorr(significance='analytic')\n", + "parcorr = ParCorr(significance='analytic', \n", + "# mask_type='y'\n", + " )\n", "pcmci = PCMCI(\n", " dataframe=dataframe, \n", " cond_ind_test=parcorr,\n", @@ -238,20 +235,9 @@ "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(200, 5)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "dataframe.mask[0].shape" + "# dataframe.mask[0].shape" ] }, { @@ -264,7 +250,7 @@ "output_type": "stream", "text": [ "{0: [(0, -1)], 1: [(0, -1), (1, -1)], 2: [(0, -2), (2, -1)], 3: [], 4: [(3, 0)]}\n", - "{0: [((0, -1), 0.6896332, at 0x7fc5f06c19d0>)], 1: [((0, -1), 0.26275086, at 0x7fc5f06c19d0>), ((1, -1), 0.8297497, at 0x7fc5f06c19d0>)], 2: [((0, -2), -0.5753384, at 0x7fc5f06c19d0>), ((2, -1), 0.45272297, at 0x7fc5f06c19d0>)], 3: [], 4: [((3, 0), 0.37086916, at 0x7fc5f06c19d0>)]}\n" + "{0: [((0, -1), 0.6896332, at 0x7fd69c339940>)], 1: [((0, -1), 0.26275086, at 0x7fd69c339940>), ((1, -1), 0.8297497, at 0x7fd69c339940>)], 2: [((0, -2), -0.5753384, at 0x7fd69c339940>), ((2, -1), 0.45272297, at 0x7fd69c339940>)], 3: [], 4: [((3, 0), 0.37086916, at 0x7fd69c339940>)]}\n" ] } ], @@ -363,7 +349,8 @@ "import math\n", "transient_fraction = 0.2\n", "realizations = 100\n", - "T = np.sum(mask[:,0]==False) # need to adjust this to mask\n", + "T = data.shape[0]\n", + "# T = np.sum(mask[:,0]==False) # need to adjust this to mask\n", "datasets = {}\n", "for r in range(realizations):\n", " noise = np.random.multivariate_normal(mean=mean, cov=cov, size=(T + int(math.floor(transient_fraction*T))))\n", @@ -389,7 +376,7 @@ "for r in range(realizations):\n", " pcmci = PCMCI(\n", " dataframe=pp.DataFrame(datasets[r]), \n", - " cond_ind_test=parcorr,\n", + " cond_ind_test=ParCorr(),\n", " verbosity=0)\n", " correlations[r] = pcmci.get_lagged_dependencies(tau_max=tau_max, val_only=True)['val_matrix']" ] diff --git a/tutorials/tigramite_tutorial_prediction.ipynb b/tutorials/tigramite_tutorial_prediction.ipynb index a423e1a0..31874b7d 100644 --- a/tutorials/tigramite_tutorial_prediction.ipynb +++ b/tutorials/tigramite_tutorial_prediction.ipynb @@ -31,16 +31,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/plotting.py:26: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/../versions.py'\n", + "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/plotting.py:26: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/../versions.py'\n", " warnings.warn(str(e))\n", - "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n", - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/independence_tests/gpdc.py:27: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/independence_tests/../../versions.py'\n", + "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/gpdc.py:27: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/../../versions.py'\n", " warnings.warn(str(e))\n", - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n", - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/independence_tests/gpdc_torch.py:33: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/independence_tests/../../versions.py'\n", + "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/gpdc_torch.py:33: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/independence_tests/../../versions.py'\n", " warnings.warn(str(e))\n", - "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/models.py:29: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.0.1.18-py3.9.egg/tigramite/../versions.py'\n", + "/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/models.py:29: UserWarning: [Errno 2] No such file or directory: '/home/jakobrunge/anaconda3/envs/py39/lib/python3.9/site-packages/tigramite-5.1.0.1-py3.9.egg/tigramite/../versions.py'\n", " warnings.warn(str(e))\n" ] } @@ -148,24 +145,24 @@ "\n", "## Resulting lagged parent (super)sets:\n", "\n", - " Variable 0 has 1 link(s):\n", + " Variable $X^0$ has 1 link(s):\n", " [pc_alpha = 0.05]\n", - " (0 -1): max_pval = 0.00000, min_val = 0.546\n", + " ($X^0$ -1): max_pval = 0.00000, min_val = 0.546\n", "\n", - " Variable 1 has 3 link(s):\n", + " Variable $X^1$ has 3 link(s):\n", " [pc_alpha = 0.2]\n", - " (1 -1): max_pval = 0.00000, min_val = 0.754\n", - " (0 -1): max_pval = 0.00000, min_val = 0.625\n", - " (0 -2): max_pval = 0.12148, min_val = -0.132\n", + " ($X^1$ -1): max_pval = 0.00000, min_val = 0.754\n", + " ($X^0$ -1): max_pval = 0.00000, min_val = 0.625\n", + " ($X^0$ -2): max_pval = 0.12148, min_val = -0.132\n", "\n", - " Variable 2 has 6 link(s):\n", + " Variable $X^2$ has 6 link(s):\n", " [pc_alpha = 0.4]\n", - " (2 -1): max_pval = 0.00000, min_val = 0.507\n", - " (1 -1): max_pval = 0.00000, min_val = 0.403\n", - " (1 -2): max_pval = 0.08692, min_val = 0.147\n", - " (0 -4): max_pval = 0.26551, min_val = 0.095\n", - " (0 -2): max_pval = 0.27640, min_val = 0.093\n", - " (2 -5): max_pval = 0.30547, min_val = -0.088\n" + " ($X^2$ -1): max_pval = 0.00000, min_val = 0.507\n", + " ($X^1$ -1): max_pval = 0.00000, min_val = 0.403\n", + " ($X^1$ -2): max_pval = 0.08692, min_val = 0.147\n", + " ($X^0$ -4): max_pval = 0.26551, min_val = 0.095\n", + " ($X^0$ -2): max_pval = 0.27640, min_val = 0.093\n", + " ($X^2$ -5): max_pval = 0.30547, min_val = -0.088\n" ] }, { @@ -239,38 +236,38 @@ "\n", "## Resulting lagged parent (super)sets:\n", "\n", - " Variable 0 has 8 link(s):\n", + " Variable $X^0$ has 8 link(s):\n", " [pc_alpha = 0.5]\n", - " (0 -26): max_pval = 0.01818, min_val = -0.251\n", - " (2 -3): max_pval = 0.02260, min_val = -0.243\n", - " (0 -18): max_pval = 0.10072, min_val = -0.177\n", - " (2 -30): max_pval = 0.12855, min_val = -0.165\n", - " (2 -17): max_pval = 0.22215, min_val = 0.133\n", - " (0 -10): max_pval = 0.39462, min_val = -0.095\n", - " (1 -7): max_pval = 0.44621, min_val = -0.085\n", - " (0 -20): max_pval = 0.45186, min_val = 0.084\n", + " ($X^0$ -26): max_pval = 0.01818, min_val = -0.251\n", + " ($X^2$ -3): max_pval = 0.02260, min_val = -0.243\n", + " ($X^0$ -18): max_pval = 0.10072, min_val = -0.177\n", + " ($X^2$ -30): max_pval = 0.12855, min_val = -0.165\n", + " ($X^2$ -17): max_pval = 0.22215, min_val = 0.133\n", + " ($X^0$ -10): max_pval = 0.39462, min_val = -0.095\n", + " ($X^1$ -7): max_pval = 0.44621, min_val = -0.085\n", + " ($X^0$ -20): max_pval = 0.45186, min_val = 0.084\n", "\n", - " Variable 1 has 7 link(s):\n", + " Variable $X^1$ has 7 link(s):\n", " [pc_alpha = 0.4]\n", - " (0 -2): max_pval = 0.00000, min_val = 0.496\n", - " (1 -2): max_pval = 0.04169, min_val = 0.218\n", - " (2 -18): max_pval = 0.16378, min_val = 0.151\n", - " (0 -27): max_pval = 0.18579, min_val = -0.142\n", - " (0 -22): max_pval = 0.22776, min_val = 0.133\n", - " (2 -19): max_pval = 0.28515, min_val = -0.118\n", - " (1 -8): max_pval = 0.35694, min_val = -0.101\n", + " ($X^0$ -2): max_pval = 0.00000, min_val = 0.496\n", + " ($X^1$ -2): max_pval = 0.04169, min_val = 0.218\n", + " ($X^2$ -18): max_pval = 0.16378, min_val = 0.151\n", + " ($X^0$ -27): max_pval = 0.18579, min_val = -0.142\n", + " ($X^0$ -22): max_pval = 0.22776, min_val = 0.133\n", + " ($X^2$ -19): max_pval = 0.28515, min_val = -0.118\n", + " ($X^1$ -8): max_pval = 0.35694, min_val = -0.101\n", "\n", - " Variable 2 has 9 link(s):\n", + " Variable $X^2$ has 9 link(s):\n", " [pc_alpha = 0.5]\n", - " (1 -2): max_pval = 0.00000, min_val = 0.638\n", - " (0 -2): max_pval = 0.00305, min_val = 0.311\n", - " (2 -2): max_pval = 0.01827, min_val = 0.253\n", - " (0 -28): max_pval = 0.13195, min_val = -0.162\n", - " (2 -4): max_pval = 0.29880, min_val = 0.113\n", - " (1 -10): max_pval = 0.35810, min_val = 0.102\n", - " (1 -21): max_pval = 0.34480, min_val = 0.101\n", - " (0 -17): max_pval = 0.39829, min_val = -0.090\n", - " (0 -4): max_pval = 0.42521, min_val = -0.086\n" + " ($X^1$ -2): max_pval = 0.00000, min_val = 0.638\n", + " ($X^0$ -2): max_pval = 0.00305, min_val = 0.311\n", + " ($X^2$ -2): max_pval = 0.01827, min_val = 0.253\n", + " ($X^0$ -28): max_pval = 0.13195, min_val = -0.162\n", + " ($X^2$ -4): max_pval = 0.29880, min_val = 0.113\n", + " ($X^1$ -10): max_pval = 0.35810, min_val = 0.102\n", + " ($X^1$ -21): max_pval = 0.34480, min_val = 0.101\n", + " ($X^0$ -17): max_pval = 0.39829, min_val = -0.090\n", + " ($X^0$ -4): max_pval = 0.42521, min_val = -0.086\n" ] }, { @@ -330,7 +327,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 6, From ff919c67b99e3aa87bf6de253c84716793d67dfb Mon Sep 17 00:00:00 2001 From: jakobrunge Date: Sun, 14 Aug 2022 21:36:20 +0200 Subject: [PATCH 2/2] further fixes for multiple dataset functionality --- release_on_pip.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_on_pip.sh b/release_on_pip.sh index 3737a07b..b0b2c600 100755 --- a/release_on_pip.sh +++ b/release_on_pip.sh @@ -1,7 +1,7 @@ #!/bin/bash homename="jakobrunge" -version="51020" +version="51030" # Steps to move from github to pip # (Make sure pypi token exists)

    tigramite.pcmci.PCMCI(dataframe, cond_ind_test)

    PCMCI causal discovery for time series datasets.

    qWmPv!f3Tnt5F&w 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 Gk{$q&0AyzX diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index 855ff63a..ac065a3a 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: d7d8db5202111ae4eeb42e502c13babb +config: c2e58b712235d3560567310ce66d08a6 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_modules/index.html b/docs/_build/html/_modules/index.html index 38cd99d1..275b47ec 100644 --- a/docs/_build/html/_modules/index.html +++ b/docs/_build/html/_modules/index.html @@ -1,7 +1,7 @@ - + @@ -11,6 +11,7 @@ + @@ -67,7 +68,7 @@