Daniel Malinsky and David Danks. Causal discovery algorithms: A practical guide. *Philosophy Compass*, 13(1): e12470, 2018. doi: https://doi.org/10.1111/phc3.12470. e12470 10.1111/phc3.12470.

Daniel Malinsky and Peter Spirtes. Causal structure learning from multivariate time series in settings with unmeasured confounding. In *Proceedings of 2018 ACM SIGKDD workshop on causal discovery*, pages 23–47. PMLR, 2018.

Andrew Meci, Florence Breuil, Ana-Maria Vilcu, Thibaud Pitel, Caroline Guerrisi, Quentin Robard, Clément Turbelin, Thomas Hanslik, Rossignol Louise, Cécile Souty, and Thierry Blanchon. The sentiworld project: Global mapping of sentinel surveillance networks in general practice. *BMC Primary Care*, 23, 07 2022. doi: 10.1186/s12875-022-01776-x.

Christopher Meek. Causal inference and causal explanation with background knowledge. In *Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence*, UAI’95, page 403–410, San Francisco, CA, USA, 1995. Morgan Kaufmann Publishers Inc. ISBN 1558603859.

Joris M. Mooij, Sara Magliacane, and Tom Claassen. Joint causal inference from multiple contexts. *Journal of Machine Learning Research*, 21(99):1–108, 2020.

Clémence Moreau, Marine Roux, Jérémie Riou, Clémence M. Canivet, Etienne Audureau, Clovis Lusivika-Nzinga, Pierre Nahon, Fabrice Carrat, Jérôme Boursier, and the ANRS CO12 CirVir group and the ANRS CO22 HEP-ATHER group. Dynamic personalized prediction of the individual liver-related risk after sustained viral response in hcv patients. *Journal of Viral Hepatitis*, 30(6):567–577, 2023. doi: https://doi.org/10.1111/jvh.13830.

Mohammad Amin Morid, Olivia R Liu Sheng, and Joseph Dunbar. Time series prediction using deep learning methods in healthcare. *ACM Transactions on Management Information Systems*, 14(1):1–29, 2023.

Juan Miguel Ogarrio, Peter Spirtes, and Joe Ramsey. A hybrid causal search algorithm for latent variable models. In *Conference on probabilistic graphical models*, pages 368–379. PMLR, 2016.

Roxana Pamfil, Nisara Sriwattanaworachai, Shaan Desai, Philip Pilgerstorfer, Konstantinos Georgatzis, Paul Beaumont, and Bryon Aragam. Dynotears: Structure learning from time-series data. In Silvia Chiappa and Roberto Calandra, editors, *Proceedings of the Twenty Third International Conference on Artificial Intelligence and Statistics*, volume 108 of *Proceedings of Machine Learning Research*, pages 1595–1605. PMLR, 26–28 Aug 2020.

Keith Paton. An algorithm for finding a fundamental set of cycles of a graph. *Commun. ACM*, 12(9):514–518, sep 1969. ISSN 0001-0782. doi: 10.1145/363219.363232.

Judea Pearl. *Causality: Models, Reasoning, and Inference*. Cambridge University Press, New York, NY, USA, 2000. ISBN 0-521-77362-8.

Jonas Peters, Joris M. Mooij, Dominik Janzing, and Bernhard Schölkopf. Identifiability of causal graphs using functional models. In *Proceedings of the Twenty-Seventh Conference on Uncertainty in Artificial Intelligence*, UAI’11, page 589–598, Arlington, Virginia, USA, 2011. AUAI Press. ISBN 9780974903972.

Jonas Peters, Dominik Janzing, and Bernhard Schölkopf. Causal inference on time series using restricted structural equation models. In *Advances in Neural Information Processing Systems 26*, pages 154–162, 2013.

Jonas Peters, Joris M. Mooij, Dominik Janzing, and Bernhard Schölkopf. Causal discovery with continuous additive noise models. *Journal of Machine Learning Research*, 15(58):2009–2053, 2014.

Jonas Peters, Dominik Janzing, and Bernhard Schölkopf. *Elements of Causal Inference: Foundations and Learning Algorithms*. The MIT Press, 2017. ISBN 0262037319.

Giovanni Poggiato, Jérémy Andréoletti, Laura Shirley, and Wilfried Thuiller. Integrating food webs in species distribution models improves ecological niche estimation and predictions. *nov 2022*. doi: 10.22541/au.166853394.45823739/v1.

Joseph Ramsey, Peter Spirtes, and Jiji Zhang. Adjacency-faithfulness and conservative causal inference. In *Proceedings of the Twenty-Second Conference on Uncertainty in Artificial Intelligence*, UAI’06, page 401–408, Arlington, Virginia, USA, 2006. AUAI Press. ISBN 0974903922.

Joseph D Ramsey. Scaling up greedy causal search for continuous variables. *arXiv preprint arXiv:1507.07749*, 2015.

Jakob Runge. Discovering contemporaneous and lagged causal relations in autocorrelated nonlinear time series datasets. In Jonas Peters and David Sontag, editors, *Proceedings of the 36th Conference on Uncertainty in Artificial Intelligence (UAI)*, volume 124 of *Proceedings of Machine Learning Research*, pages 1388–1397. PMLR, 03–06 Aug 2020.

Jakob Runge, Peer Nowack, Marlene Kretschmer, Seth Flaxman, and Dino Sejdinovic. Detecting and quantifying causal associations in large nonlinear time series datasets. *Science advances*, 5(11):eaau4996, 2019.
Daniel Malinsky and David Danks. Causal discovery algorithms: A practical guide. *Philosophy Compass*, 13(1): e12470, 2018. doi: https://doi.org/10.1111/phc3.12470. e12470 10.1111/phc3.12470.

Daniel Malinsky and Peter Spirtes. Causal structure learning from multivariate time series in settings with unmeasured confounding. In *Proceedings of 2018 ACM SIGKDD workshop on causal discovery*, pages 23–47. PMLR, 2018.

Andrew Meci, Florence Breuil, Ana-Maria Vilcu, Thibaud Pitel, Caroline Guerrisi, Quentin Robard, Clément Turbelin, Thomas Hanslik, Rossignol Louise, Cécile Souty, and Thierry Blanchon. The sentiworld project: Global mapping of sentinel surveillance networks in general practice. *BMC Primary Care*, 23, 07 2022. doi: 10.1186/s12875-022-01776-x.

Christopher Meek. Causal inference and causal explanation with background knowledge. In *Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence*, UAI’95, page 403–410, San Francisco, CA, USA, 1995. Morgan Kaufmann Publishers Inc. ISBN 1558603859.

Joris M. Mooij, Sara Magliacane, and Tom Claassen. Joint causal inference from multiple contexts. *Journal of Machine Learning Research*, 21(99):1–108, 2020.

Clémence Moreau, Marine Roux, Jérémie Riou, Clémence M. Canivet, Etienne Audureau, Clovis Lusivika-Nzinga, Pierre Nahon, Fabrice Carrat, Jérôme Boursier, and the ANRS CO12 CirVir group and the ANRS CO22 HEP-ATHER group. Dynamic personalized prediction of the individual liver-related risk after sustained viral response in hcv patients. *Journal of Viral Hepatitis*, 30(6):567–577, 2023. doi: https://doi.org/10.1111/jvh.13830.

Mohammad Amin Morid, Olivia R Liu Sheng, and Joseph Dunbar. Time series prediction using deep learning methods in healthcare. *ACM Transactions on Management Information Systems*, 14(1):1–29, 2023.

Juan Miguel Ogarrio, Peter Spirtes, and Joe Ramsey. A hybrid causal search algorithm for latent variable models. In *Conference on probabilistic graphical models*, pages 368–379. PMLR, 2016.

Roxana Pamfil, Nisara Sriwattanaworachai, Shaan Desai, Philip Pilgerstorfer, Konstantinos Georgatzis, Paul Beaumont, and Bryon Aragam. Dynotears: Structure learning from time-series data. In Silvia Chiappa and Roberto Calandra, editors, *Proceedings of the Twenty Third International Conference on Artificial Intelligence and Statistics*, volume 108 of *Proceedings of Machine Learning Research*, pages 1595–1605. PMLR, 26–28 Aug 2020.

Keith Paton. An algorithm for finding a fundamental set of cycles of a graph. *Commun. ACM*, 12(9):514–518, sep 1969. ISSN 0001-0782. doi: 10.1145/363219.363232.

Judea Pearl. *Causality: Models, Reasoning, and Inference*. Cambridge University Press, New York, NY, USA, 2000. ISBN 0-521-77362-8.

Jonas Peters, Joris M. Mooij, Dominik Janzing, and Bernhard Schölkopf. Identifiability of causal graphs using functional models. In *Proceedings of the Twenty-Seventh Conference on Uncertainty in Artificial Intelligence*, UAI’11, page 589–598, Arlington, Virginia, USA, 2011. AUAI Press. ISBN 9780974903972.

Jonas Peters, Dominik Janzing, and Bernhard Schölkopf. Causal inference on time series using restricted structural equation models. In *Advances in Neural Information Processing Systems 26*, pages 154–162, 2013.

Jonas Peters, Joris M. Mooij, Dominik Janzing, and Bernhard Schölkopf. Causal discovery with continuous additive noise models. *Journal of Machine Learning Research*, 15(58):2009–2053, 2014.

Jonas Peters, Dominik Janzing, and Bernhard Schölkopf. *Elements of Causal Inference: Foundations and Learning Algorithms*. The MIT Press, 2017. ISBN 0262037319.

Giovanni Poggiato, Jérémy Andréoletti, Laura Shirley, and Wilfried Thuiller. Integrating food webs in species distribution models improves ecological niche estimation and predictions. *nov 2022*. doi: 10.22541/au.166853394.45823739/v1.

Joseph Ramsey, Peter Spirtes, and Jiji Zhang. Adjacency-faithfulness and conservative causal inference. In *Proceedings of the Twenty-Second Conference on Uncertainty in Artificial Intelligence*, UAI’06, page 401–408, Arlington, Virginia, USA, 2006. AUAI Press. ISBN 0974903922.

Joseph D Ramsey. Scaling up greedy causal search for continuous variables. *arXiv preprint arXiv:1507.07749*, 2015.

Jakob Runge. Discovering contemporaneous and lagged causal relations in autocorrelated nonlinear time series datasets. In Jonas Peters and David Sontag, editors, *Proceedings of the 36th Conference on Uncertainty in Artificial Intelligence (UAI)*, volume 124 of *Proceedings of Machine Learning Research*, pages 1388–1397. PMLR, 03–06 Aug 2020.

Jakob Runge, Peer Nowack, Marlene Kretschmer, Seth Flaxman, and Dino Sejdinovic. Detecting and quantifying causal associations in large nonlinear time series datasets. *Science advances*, 5(11):eaau4996, 2019.
Elena Saggioro, Jana de Wiljes, Marlene Kretschmer, and Jakob Runge. Reconstructing regime-dependent causal relationships from observational time series. *Chaos: An Interdisciplinary Journal of Nonlinear Science*, 30(11): 113115, 11 2020. ISSN 1054-1500. doi: 10.1063/5.0020538.

Shohei Shimizu, Patrik O. Hoyer, Aapo Hyvärinen, and Antti Kerminen. A linear non-gaussian acyclic model for causal discovery. *Journal of Machine Learning Research*, 7(72):2003–2030, 2006.

Shohei Shimizu, Takanori Inazumi, Yasuhiro Sogawa, Aapo Hyvärinen, Yoshinobu Kawahara, Takashi Washio, Patrik O. Hoyer, and Kenneth Bollen. Directlingam: A direct method for learning a linear non-gaussian structural equation model. *Journal of Machine Learning Research*, 12(33):1225–1248, 2011.

Peter Spirtes. Directed cyclic graphical representations of feedback models. In *Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence*, UAI’95, page 491–498, San Francisco, CA, USA, 1995. Morgan Kaufmann Publishers Inc. ISBN 1558603859.

Peter Spirtes, Clark Glymour, and Richard Scheines. *Causation, Prediction, and Search*. MIT press, 2nd edition, 2000.

George Sugihara, Robert May, Hao Ye, Chih hao Hsieh, Ethan Deyle, Michael Fogarty, and Stephan Munch. Detecting causality in complex ecosystems. *Science*, 338(6106):496–500, 2012. doi: 10.1126/science.1227079.

Damian A. Tamburri, Marco Miglierina, and Elisabetta Di Nitto. Cloud applications monitoring: An industrial study. *Information and Software Technology*, 127:106376, 2020. ISSN 0950-5849. doi: https://doi.org/10.1016/j.infsof.2020.106376.

Ioannis Tsamardinos, Laura E Brown, and Constantin F Aliferis. The max-min hill-climbing bayesian network structure learning algorithm. *Machine learning*, 65:31–78, 2006.

Brendan G. Veilleux. An analysis of the predatory interaction between paramecium and didinium. *The Journal of Animal Ecology*, pages 787–803, 1979.

Thomas Verma and Judea Pearl. Equivalence and synthesis of causal models. In *Proceedings of the Sixth Annual Conference on Uncertainty in Artificial Intelligence*, UAI ’90, page 255–270, USA, 1990. Elsevier Science Inc. ISBN 0444892648.

Lei Zan, Anouar Meynaoui, Charles K. Assaad, Emilie Devijver, and Eric Gaussier. A conditional mutual information estimator for mixed data and an associated conditional independence test. *Entropy*, 24(9), 2022. ISSN 1099-4300. doi: 10.3390/e24091234.

Zhalama, Jiji Zhang, and Wolfgang Mayer. Weakening faithfulness: some heuristic causal discovery algorithms. *International Journal of Data Science and Analytics*, 3:93–104, 2016.

Xun Zheng, Bryon Aragam, Pradeep K Ravikumar, and Eric P Xing. Dags with no tears: Continuous optimization for structure learning. In S. Bengio, H. Wallach, H. Larochelle, K. Grauman, N. Cesa-Bianchi, and R. Garnett, editors, *Advances in Neural Information Processing Systems*, volume 31. Curran Associates, Inc., 2018.
Elena Saggioro, Jana de Wiljes, Marlene Kretschmer, and Jakob Runge. Reconstructing regime-dependent causal relationships from observational time series. *Chaos: An Interdisciplinary Journal of Nonlinear Science*, 30(11): 113115, 11 2020. ISSN 1054-1500. doi: 10.1063/5.0020538.

Shohei Shimizu, Patrik O. Hoyer, Aapo Hyvärinen, and Antti Kerminen. A linear non-gaussian acyclic model for causal discovery. *Journal of Machine Learning Research*, 7(72):2003–2030, 2006.

Shohei Shimizu, Takanori Inazumi, Yasuhiro Sogawa, Aapo Hyvärinen, Yoshinobu Kawahara, Takashi Washio, Patrik O. Hoyer, and Kenneth Bollen. Directlingam: A direct method for learning a linear non-gaussian structural equation model. *Journal of Machine Learning Research*, 12(33):1225–1248, 2011.

Peter Spirtes. Directed cyclic graphical representations of feedback models. In *Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence*, UAI'95, page 491–498, San Francisco, CA, USA, 1995. Morgan Kaufmann Publishers Inc. ISBN 1558603859.

Peter Spirtes, Clark Glymour, and Richard Scheines. *Causation, Prediction, and Search*. MIT press, 2nd edition, 2000.

George Sugihara, Robert May, Hao Ye, Chih hao Hsieh, Ethan Deyle, Michael Fogarty, and Stephan Munch. Detecting causality in complex ecosystems. *Science*, 338(6106):496–500, 2012. doi: 10.1126/science.1227079.

Damian A. Tamburri, Marco Miglierina, and Elisabetta Di Nitto. Cloud applications monitoring: An industrial study. *Information and Software Technology*, 127:106376, 2020. ISSN 0950-5849. doi: https://doi.org/10.1016/j.infsof.2020.106376.

Ioannis Tsamardinos, Laura E Brown, and Constantin F Aliferis. The max-min hill-climbing bayesian network structure learning algorithm. *Machine learning*, 65:31–78, 2006.

Brendan G. Veilleux. An analysis of the predatory interaction between paramecium and didinium. *The Journal of Animal Ecology*, pages 787–803, 1979.

Thomas Verma and Judea Pearl. Equivalence and synthesis of causal models. In *Proceedings of the Sixth Annual Conference on Uncertainty in Artificial Intelligence*, UAI '90, page 255–270, USA, 1990. Elsevier Science Inc. ISBN 0444892648.

Lei Zan, Anouar Meynaoui, Charles K. Assaad, Emilie Devijver, and Eric Gaussier. A conditional mutual information estimator for mixed data and an associated conditional independence test. *Entropy*, 24(9), 2022. ISSN 1099-4300. doi: 10.3390/e24091234.

Zhalama, Jiji Zhang, and Wolfgang Mayer. Weakening faithfulness: some heuristic causal discovery algorithms. *International Journal of Data Science and Analytics*, 3:93–104, 2016.

Xun Zheng, Bryon Aragam, Pradeep K Ravikumar, and Eric P Xing. Dags with no tears: Continuous optimization for structure learning. In S. Bengio, H. Wallach, H. Larochelle, K. Grauman, N. Cesa-Bianchi, and R. Garnett, editors, *Advances in Neural Information Processing Systems*, volume 31. Curran Associates, Inc., 2018.
A Proofs

We recall the definition of blocked paths, backdoor paths, and the backdoor criterion.

**Definition 7 (Blocked path, Pearl, 2000).** A path is said to be blocked by a set of nodes $\mathcal{S} \subset \mathcal{V}$ if it contains an intermediate cause or a common cause $X$ such that $X \in \mathcal{S}$ and if it contains a collider $X$ such that $X \notin \mathcal{S}$ and no descendant of $X$ is in $\mathcal{S}$.

Note that a path that is not blocked is said to be active.

**Definition 8 (Backdoor path, Pearl, 2000).** A path between an ordered pair $(X, Y)$ is said to be a backdoor path between $X$ and $Y$ if it contains an arrow into $X$.

Note that blocking all backdoor paths between two nodes eliminates confounding bias [Pearl, 2000].

**Theorem 1.** Let $\mathcal{G}^f = (\mathcal{V}^f, \mathcal{E}^f)$ be an FTCG. Under Assumptions 1, 2, 3, 4, 5 and given perfect conditional independence information about all pairs of variables in $\mathcal{V}^f$, any algorithm in the NBCB class returns the correct WCG or the correct ECG compatible with $\mathcal{G}^f$.

*Proof.* This proof is similar to the proof of Theorem 4 in Assaad et al. [2021] for NBCB<sup>acyclic</sup>. Given the Assumption 4 and causal sufficiency and assuming NB1 is consistent with Assumption 4, NB1 would infer the correct causal order $\hat{\pi}$. Given the causal order $\hat{\pi}$ and temporal priority, we can orient all edges in a fully connected graph, which represents a super graph that contains the true graph. Given Assumptions 1, 2, 3, 5 and assuming that the constraint-based algorithm on which CB1' is based on is sound and complete, if we do not consider the causal order, CB1 would prune all unnecessary edges by removing edges between two nodes that are conditionally independent given a subset $\mathcal{S}$ adjacent to one of these two nodes and yield the correct skeleton. Given the causal order $\hat{\pi}$, the subset $\mathcal{S}$ can be reduced by containing only parents (instead of adjacencies). Thus, again by Assumptions 1, 2, 3, removing all edges between the conditionally independent nodes, the only edges that will be left with are causal, and so the graph would be correct. □

**Proposition 1 (Violation of Assumption 3).** Under Assumptions 1, 2, 5, given that the SCM is a restrictive additive noise model [Peters et al., 2014], and given a correct causal order between instantaneous nodes, the NBCB class would give a WCG or an ECG such that, for each pair of nodes $X_{t*}$ and $Y_t$, one of the following possibilities holds true:

(1) The causal relationship between $X_{t*}$ and $Y_t$ is correctly identified.

(2) $X_{t*}$ and $Y_t$ are not adjacent in the inferred graph, but they are adjacent in the true graph.

(3) $X_{t*}$ and $Y_t$ are adjacent in the inferred graph, but they are not adjacent in the true graph.

*Proof.* Given that the noise-based algorithm on which the NB1 step is based on is correct, the NB1 step would give the correct causal order. Thus, having correct causal order for the instantaneous nodes and using orientation by time, the NB1 step would give the fully connected oriented graph, such that each edge that is present in the true graph is correctly oriented. The second step involves the CB1' step for pruning the edges. Since we consider that adjacency faithfulness is violated, we can have one of the following cases:

* If a pair of nodes $X_{t*}$ and $Y_t$ is adjacent in the true graph there are two possible cases:

(a) there exist set $\mathcal{S}$ such that $X_{t*} \perp Y_t | \mathcal{S}$. In this case, CB1' would erroneously remove the edge between $X_{t*}$ and $Y_t$ in the inferred graph and we obtain case (2) in the proposition

(b) there exists no set $\mathcal{S}$ such that $X_{t*} \perp Y_t | \mathcal{S}$, in this case, the CB1' would keep this edge and orientation of this edge is correct (given step NB1), this edge corresponds to correctly inferred causal relationship case (1)

* If a pair of nodes $X_{t*}$ and $Y_t$ is not adjacent in the true graph but they are connected by an active path $u = (X_{t*}, V_{t_2}^2, \dots, V_{t_{n-1}}^{n-1}, Y_t)$ of size $n > 2$. Suppose that due to violation of adjacency faithfulness, the step CB1' removes the edge $X_{t*} - V_{t_2}^2$ and the edge $V_{t_{n-1}}^{n-1} - Y_t$. If $n = 3$, then CB1' will never test if $X_{t*} \perp Y_t | \mathcal{S}$, such that $V_{t_2}^2 \in \mathcal{S}$ therefore it will not remove the edge between $X_{t*}$ and $Y_t$ in the inferred graph. If $n > 3$ and if CB1' removes all possible edges between $X_{t*}$ and each node in $\{V_{t_3}^3, \dots, V_{t_{n-1}}^{n-1}\}$ and all possible edges between $Y_t$ and each node in $\{V_{t_2}^2, \dots, V_{t_{n-2}}^{n-2}\}$ in the inferred graph (due to a some specific
A Proofs

We recall the definition of blocked paths, backdoor paths, and the backdoor criterion.

**Definition 7 (Blocked path, Pearl, 2000).** A path is said to be blocked by a set of nodes $\mathcal{S} \subset \mathcal{V}$ if it contains an intermediate cause or a common cause $X$ such that $X \in \mathcal{S}$ and if it contains a collider $X$ such that $X \notin \mathcal{S}$ and no descendant of $X$ is in $\mathcal{S}$.

Note that a path that is not blocked is said to be active.

**Definition 8 (Backdoor path, Pearl, 2000).** A path between an ordered pair $(X, Y)$ is said to be a backdoor path between $X$ and $Y$ if it contains an arrow into $X$.

Note that blocking all backdoor paths between two nodes eliminates confounding bias [Pearl, 2000].

**Theorem 1.** Let $\mathcal{G}^f = (\mathcal{V}^f, \mathbb{E}^f)$ be an FTCG. Under Assumptions 1, 2, 3, 4, 5 and given perfect conditional independence information about all pairs of variables in $\mathcal{V}^f$, any algorithm in the NBCB class returns the correct WCG or the correct ECG compatible with $\mathcal{G}^f$.

*Proof.* This proof is similar to the proof of Theorem 4 in Assaad et al. [2021] for NBCB<sup>acyclic</sup>. Given the Assumption 4 and causal sufficiency and assuming NB1 is consistent with Assumption 4, NB1 would infer the correct causal order $\hat{\pi}$. Given the causal order $\hat{\pi}$ and temporal priority, we can orient all edges in a fully connected graph, which represents a super graph that contains the true graph. Given Assumptions 1, 2, 3, 5 and assuming that the constraint-based algorithm on which CB1' is based on is sound and complete, if we do not consider the causal order, CB1 would prune all unnecessary edges by removing edges between two nodes that are conditionally independent given a subset $\mathcal{S}$ adjacent to one of these two nodes and yield the correct skeleton. Given the causal order $\hat{\pi}$, the subset $\mathcal{S}$ can be reduced by containing only parents (instead of adjacencies). Thus, again by Assumptions 1, 2, 3, removing all edges between the conditionally independent nodes, the only edges that will be left with are causal, and so the graph would be correct. □

**Proposition 1 (Violation of Assumption 3).** Under Assumptions 1, 2, 5, given that the SCM is a restrictive additive noise model [Peters et al., 2014], and given a correct causal order between instantaneous nodes, the NBCB class would give a WCG or an ECG such that, for each pair of nodes $X_{t*}$ and $Y_t$, one of the following possibilities holds true:

(1) The causal relationship between $X_{t*}$ and $Y_t$ is correctly identified.

(2) $X_{t*}$ and $Y_t$ are not adjacent in the inferred graph, but they are adjacent in the true graph.

(3) $X_{t*}$ and $Y_t$ are adjacent in the inferred graph, but they are not adjacent in the true graph.

*Proof.* Given that the noise-based algorithm on which the NB1 step is based on is correct, the NB1 step would give the correct causal order. Thus, having correct causal order for the instantaneous nodes and using orientation by time, the NB1 step would give the fully connected oriented graph, such that each edge that is present in the true graph is correctly oriented. The second step involves the CB1' step for pruning the edges. Since we consider that adjacency faithfulness is violated, we can have one of the following cases:

* If a pair of nodes $X_{t*}$ and $Y_t$ is adjacent in the true graph there are two possible cases:

(a) there exist set $\mathcal{S}$ such that $X_{t*} \perp Y_t | \mathcal{S}$. In this case, CB1' would erroneously remove the edge between $X_{t*}$ and $Y_t$ in the inferred graph and we obtain case (2) in the proposition

(b) there exists no set $\mathcal{S}$ such that $X_{t*} \perp Y_t | \mathcal{S}$, in this case, the CB1' would keep this edge and orientation of this edge is correct (given step NB1), this edge corresponds to correctly inferred causal relationship case (1)

* If a pair of nodes $X_{t*}$ and $Y_t$ is not adjacent in the true graph but they are connected by an active path $u = (X_{t*}, V_{t_2}^2, \dots, V_{t_{n-1}}^{n-1}, Y_t)$ of size $n > 2$. Suppose that due to violation of adjacency faithfulness, the step CB1' removes the edge $X_{t*} - V_{t_2}^2$ and the edge $V_{t_{n-1}}^{n-1} - Y_t$. If $n = 3$, then CB1' will never test if $X_{t*} \perp Y_t | \mathcal{S}$, such that $V_{t_2}^2 \in \mathcal{S}$ therefore it will not remove the edge between $X_{t*}$ and $Y_t$ in the inferred graph. If $n > 3$ and if CB1' removes all possible edges between $X_{t*}$ and each node in $\{V_{t_3}^3, \dots, V_{t_{n-1}}^{n-1}\}$ and all possible edges between $Y_t$ and each node in $\{V_{t_2}^2, \dots, V_{t_{n-2}}^{n-2}\}$ in the inferred graph (due to a some specific
configuration of the parameters that violates faithfulness but not adjacency faithfulness). Then, in this case, CB1' will never test if $X_{t*} \perp Y_t | \mathcal{S}$, such that $\{V_{t_2}^2, \dots, V_{t_{n-1}}^{n-1}\} \cap \mathcal{S} = \emptyset$ therefore it will not remove the edge between $X_{t*}$ and $Y_t$ in the inferred graph.

<figure><img src="image_17.png" /></figure>

**Theorem 2.** Let $\mathcal{G}^f = (\mathcal{V}^f, \mathcal{E}^f)$ be an FTCG. Under Assumptions 1, 2, 3, 4, 5 and given perfect conditional independence information about all pairs of variables in $\mathcal{V}^f$, any algorithm in the CBNB class returns the correct WCG or the correct ECG compatible with $\mathcal{G}^f$.

*Proof.* Without any given causal order, CB1 uses the first two steps of the constraint-based algorithm (omitting the orientation step). Using the full constraint-based algorithm under Assumptions 1, 2 and 3, we obtain correct partially complete partially oriented WCG or ECG $\hat{\mathcal{G}}^*$, i.e., correct skeleton, all instantaneous relations are not oriented and all lagged relations are oriented. So, having $\hat{\mathcal{G}}^*$, what is left to prove is that applying NB1' on the nodes $\mathbb{I}_t$ that belong to each of undirected cycle group $\mathbb{C}$ given the past parents $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t) \setminus \mathcal{V}_t$ is free of confounding bias.

To obtain the correct causal order $\pi$ between nodes $\mathbb{I}_t$, we need to verify that in the subgraph of $\hat{\mathcal{G}}^*$ containing the nodes $\mathbb{I}_t \cup Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ (which is by definition acyclic) for every two adjacent nodes $X_t, Y_t \in \mathbb{I}_t$, there exists a set $\mathcal{S} \subseteq \mathbb{I}_t \setminus \{X_t, Y_t\} \cup Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$, such that $\mathcal{S}$ blocks all backdoor paths between $X_t$ and $Y_t$ (if there is no edge between nodes $X_t$ and $Y_t$, then there is no orientation to be determined by NB1'). Suppose $X_t \to Y_t$ in the true graph (but in the output of CB1 this edge is unoriented) and there exists some active backdoor path $u$ between $X_t$ and $Y_t$, we consider two cases:

(a) Suppose all nodes in path $u$ belong to $\mathcal{V}_t$. By definition of an undirected cycle group $\mathbb{C}$, all nodes in $u$ are also in $\mathbb{I}_t$, which means that the common cause (common ancestor) on the path is also in $\mathbb{I}_t$, i.e., causal sufficiency is satisfied. This means, that $u$ can be blocked by a node in $\mathbb{I}_t$. Thus there exists $\mathcal{S} \subseteq \mathbb{I}_t \setminus \{X_t, Y_t\}$ such that all backdoor paths between $X_t$ and $Y_t$ are blocked.

(b) Suppose that some nodes in $u$ belong to $\mathcal{V}^* \setminus \mathcal{V}_t$. In this case, conditioning on $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ blocks $u$ since $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ are the parents of $\mathbb{I}_t$ and none of the nodes in $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ are colliders of any two nodes in $\mathbb{I}_t$. Thus all backdoor paths between $X_t$ and $Y_t$ passing by $\mathcal{V}^* \setminus \mathcal{V}_t$ can be blocked by $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ and all the backdoor paths that are left are the ones discussed in (a).

<figure><img src="image_18.png" /></figure>

**Proposition 2 (Violation of Assumption 4).** Under Assumptions 1, 2, 3, 5 and given perfect conditional independence information about all pairs of variables, CBNB is guaranteed to find the correct skeleton of the WCG or the ECG.

*Proof.* Given that the CB algorithm used for the CBNB method is correct under Assumptions 1 and 2, the result of the first step CB1 would give the correct skeleton under the Assumption 3. □

For example, if the PCMCI$^+$ method is used for the CBNB method, then the correctness of the skeleton comes from Theorem 1 in Runge [2020]. In case when CB1 is based on PCGCE algorithm, the correctness of the skeleton is shown in Theorem 1 in Assaad et al. [2022c].

# B Pseudo-code algorithms

In our experimental section, we used an NB1 and an NB1' steps based on the VarLiNGAM algorithm (NB1 in NBCB-w and NBCB-e and NB1' in CBNB-w and CBNB-e) and we used respectively a CB1 and a CB1' steps based on the PCMCI$^+$ algorithm (CB1 in CBNB-w and CB1' in NBCB-w) and on the PCGCE algorithm (CB1 in CBNB-e and CB1' in NBCB-e). Since NB1' and CB1' steps require more modifications compared to NB1 and CB1 steps starting from the initial methods, in the following, we provide the pseudo-codes of each NB' and CB' steps that we used. But first, we start by briefly recalling VarLiNGAM, PCMCI$^+$, and PCGCE algorithms which all assume causal sufficiency (Assumption 1) while pointing out either their NB1 or CB1 step.

VarLiNGAM [Hyvärinen et al., 2008] is a noise-based causal discovery algorithm for time series data that constructs a WCG. First, it estimates a classic autoregressive model for the data using any conventional implementation of a least-squares method. It then computes the residuals and then performs the LiNGAM analysis [Shimizu et al., 2006,
configuration of the parameters that violates faithfulness but not adjacency faithfulness). Then, in this case, CB1' will never test if $X_{t*} \perp Y_t | \mathcal{S}$, such that $\{V_{t_2}^2, \dots, V_{t_{n-1}}^{n-1}\} \cap \mathcal{S} = \emptyset$ therefore it will not remove the edge between $X_{t*}$ and $Y_t$ in the inferred graph.

□

**Theorem 2.** Let $\mathcal{G}^f = (\mathcal{V}^f, \mathcal{E}^f)$ be an FTCG. Under Assumptions 1, 2, 3, 4, 5 and given perfect conditional independence information about all pairs of variables in $\mathcal{V}^f$, any algorithm in the CBNB class returns the correct WCG or the correct ECG compatible with $\mathcal{G}^f$.

*Proof.* Without any given causal order, CB1 uses the first two steps of the constraint-based algorithm (omitting the orientation step). Using the full constraint-based algorithm under Assumptions 1, 2 and 3, we obtain correct partially complete partially oriented WCG or ECG $\hat{\mathcal{G}}^*$, i.e., correct skeleton, all instantaneous relations are not oriented and all lagged relations are oriented. So, having $\hat{\mathcal{G}}^*$, what is left to prove is that applying NB1' on the nodes $\mathbb{I}_t$ that belong to each of undirected cycle group $\mathbb{C}$ given the past parents $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t) \setminus \mathcal{V}_t$ is free of confounding bias.

To obtain the correct causal order $\hat{\pi}$ between nodes $\mathbb{I}_t$, we need to verify that in the subgraph of $\hat{\mathcal{G}}^*$ containing the nodes $\mathbb{I}_t \cup Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ (which is by definition acyclic) for every two adjacent nodes $X_t, Y_t \in \mathbb{I}_t$, there exists a set $\mathcal{S} \subseteq \mathbb{I}_t \setminus \{X_t, Y_t\} \cup Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$, such that $\mathcal{S}$ blocks all backdoor paths between $X_t$ and $Y_t$ (if there is no edge between nodes $X_t$ and $Y_t$, then there is no orientation to be determined by NB1'). Suppose $X_t \to Y_t$ in the true graph (but in the output of CB1 this edge is unoriented) and there exists some active backdoor path $u$ between $X_t$ and $Y_t$, we consider two cases:

(a) Suppose all nodes in path $u$ belong to $\mathcal{V}_t$. By definition of an undirected cycle group $\mathbb{C}$, all nodes in $u$ are also in $\mathbb{I}_t$, which means that the common cause (common ancestor) on the path is also in $\mathbb{I}_t$, i.e., causal sufficiency is satisfied. This means, that $u$ can be blocked by a node in $\mathbb{I}_t$. Thus there exists $\mathcal{S} \subseteq \mathbb{I}_t \setminus \{X_t, Y_t\}$ such that all backdoor paths between $X_t$ and $Y_t$ are blocked.

(b) Suppose that some nodes in $u$ belong to $\mathcal{V}^* \setminus \mathcal{V}_t$. In this case, conditioning on $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ blocks $u$ since $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ are the parents of $\mathbb{I}_t$ and none of the nodes in $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ are colliders of any two nodes in $\mathbb{I}_t$. Thus all backdoor paths between $X_t$ and $Y_t$ passing by $\mathcal{V}^* \setminus \mathcal{V}_t$ can be blocked by $Pa_{\hat{\mathcal{G}}^*}(\mathbb{I}_t)$ and all the backdoor paths that are left are the ones discussed in (a).

□

**Proposition 2** (Violation of Assumption 4). Under Assumptions 1, 2, 3, 5 and given perfect conditional independence information about all pairs of variables, CBNB is guaranteed to find the correct skeleton of the WCG or the ECG.

*Proof.* Given that the CB algorithm used for the CBNB method is correct under Assumptions 1 and 2, the result of the first step CB1 would give the correct skeleton under the Assumption 3. □

For example, if the PCMCI$^+$ method is used for the CBNB method, then the correctness of the skeleton comes from Theorem 1 in Runge [2020]. In case when CB1 is based on PCGCE algorithm, the correctness of the skeleton is shown in Theorem 1 in Assaad et al. [2022c].

## B Pseudo-code algorithms

In our experimental section, we used an NB1 and an NB1' steps based on the VarLiNGAM algorithm (NB1 in NBCB-w and NBCB-e and NB1' in CBNB-w and CBNB-e) and we used respectively a CB1 and a CB1' steps based on the PCMCI$^+$ algorithm (CB1 in CBNB-w and CB1' in NBCB-w) and on the PCGCE algorithm (CB1 in CBNB-e and CB1' in NBCB-e). Since NB1' and CB1' steps require more modifications compared to NB1 and CB1 steps starting from the initial methods, in the following, we provide the pseudo-codes of each NB' and CB' steps that we used. But first, we start by briefly recalling VarLiNGAM, PCMCI$^+$, and PCGCE algorithms which all assume causal sufficiency (Assumption 1) while pointing out either their NB1 or CB1 step.

VarLiNGAM [Hyvärinen et al., 2008] is a noise-based causal discovery algorithm for time series data that constructs a WCG. First, it estimates a classic autoregressive model for the data using any conventional implementation of a least-squares method. It then computes the residuals and then performs the LiNGAM analysis [Shimizu et al., 2006,
2011] on the residuals. Note that the LiNGAM analysis can be either done using the ICALiNGAM [Shimizu et al., 2006] or DirectLiNGAM [Shimizu et al., 2011], in this work, we use DirectLiNGAM. This step, which we refer to as NB1, gives the causal order and the estimate of the instantaneous causal effects. After that, it computes the estimates of lagged causal effects. Finally, it estimates redundant directed edges to find the underlying WCG.

PCMCI$^+$ [Runge, 2020] is a constraint-based causal discovery algorithm for time series data that constructs a WCG. First, the PC1 lagged phase infers a superset of the lagged parents together with the parents of instantaneous ancestors. Next, the MCI instantaneous phase starts with links found in the previous step and all possible instantaneous links, then it conducts momentary conditional independence (MCI) with a modified conditioning set learned in the previous step to increase detection power. This step, which we refer to as CB1, gives a partially oriented graph where lagged relations are oriented and where instantaneous are non-oriented. Finally, it orients edges using the same rules used in the PC-algorithm [Spirtes et al., 2000, Meek, 1995].

Similarly, PCGCE [Assaad et al., 2022c] is also a constraint-based causal discovery algorithm for time series data, but that constructs an ECG without passing by a WCG. It also consists of two steps. First, it searches for the skeleton of the ECG using a procedure similar to the PC-algorithm that is order-independent by using a conditional independence test between either two nodes in the present slice or one node in the present slice and one node in the past slice, which can be multidimensional. Similarly to the case of PCMCI$^+$, this step, which we refer to as CB1, gives a partially oriented graph where lagged relations are oriented and where instantaneous are non-oriented. Then it orients edges using the same rules used in the PC-algorithm [Spirtes et al., 2000, Meek, 1995].

In the following, we present the pseudo-codes of NB1' based on VarLiNGAM, CB1' based on PCMCI$^+$ and CB1' based on PCGCE. We colour in orange the parts that are different from the initial algorithms. Remark that the orange colour indicates that the corresponding parts are added or modified compared to the initial algorithms, but they do not indicate parts of the initial algorithms that were deleted.

## B.1 NB1' based on VarLiNGAM (Algorithm 3)

The NB1' step based on VarLiNGAM is almost identical to the NB1 step based on VarLiNGAM. As NB1, NB1' starts by computing the residuals of all instantaneous nodes by regressing them on their past. However, unlike NB1, NB1' focuses only on a subset of instantaneous nodes $I_t \subseteq V_t$. Note that also unlike NB1, NB1' takes as input a partially oriented graph $\hat{G}^*$ (the output of CB1 step which has the correct skeleton) and that $I_t \cup Pa_{\hat{G}^*}(I_t)$ should satisfy causal sufficiency. By construction, causal sufficiency is satisfied when $I_t$ is an undirected cycle group as defined in Definition 6. The pseudo-code of NB1' is provided in Algorithm 3.

## B.2 CB1' based on PCMCI$^+$ (Algorithm 4)

CB1 and CB1' based on the PCMCI$^+$ algorithm use conditional independence test CI() that returns at the same time the p-value and the statistic of the test. The main differences between the CB1' and the CB1 step based on PCMCI$^+$ is that CB1' takes a causal order as input, and therefore, it starts with a fully-oriented graph, in addition in the MCI instantaneous phase, it conditions only using parents (PCMCI$^+$ condition also on instantaneous adjacencies).

## B.3 CB1' based on PCGCE (Algorithm 5)

CB1 and CB1' based on the PCGCE algorithm use conditional independence test CI() that returns either the p-value of the test or the statistic without computing the p-value. The main difference between the CB1' and the CB1 step based on the PCGCE algorithm is that CB1' takes a causal order as input, and therefore, it starts with a fully-oriented graph and in addition, it conditions only using parents (PCGCE condition on adjacencies).

# C Experimental setup

Time series in monitoring systems are not always exactly aligned together and come in different sampling rates as the timestamps depend on when the data was collected. In the following, we present two pre-processing strategies that we considered for aligning time series:

* Strategy 1: Time series are analyzed in terms of sampling rates and the lowest one is chosen. Afterwards, all the time series are re-sampled according to this lowest sampling rate with the closest value to the timestamp
2011] on the residuals. Note that the LiNGAM analysis can be either done using the ICALiNGAM [Shimizu et al., 2006] or DirectLiNGAM [Shimizu et al., 2011], in this work, we use DirectLiNGAM. This step, which we refer to as NB1, gives the causal order and the estimate of the instantaneous causal effects. After that, it computes the estimates of lagged causal effects. Finally, it estimates redundant directed edges to find the underlying WCG.

PCMCI$^+$ [Runge, 2020] is a constraint-based causal discovery algorithm for time series data that constructs a WCG. First, the PC1 lagged phase infers a superset of the lagged parents together with the parents of instantaneous ancestors. Next, the MCI instantaneous phase starts with links found in the previous step and all possible instantaneous links, then it conducts momentary conditional independence (MCI) with a modified conditioning set learned in the previous step to increase detection power. This step, which we refer to as CB1, gives a partially oriented graph where lagged relations are oriented and where instantaneous are non-oriented. Finally, it orients edges using the same rules used in the PC-algorithm [Spirtes et al., 2000, Meek, 1995].

Similarly, PCGCE [Assaad et al., 2022c] is also a constraint-based causal discovery algorithm for time series data, but that constructs an ECG without passing by a WCG. It also consists of two steps. First, it searches for the skeleton of the ECG using a procedure similar to the PC-algorithm that is order-independent by using a conditional independence test between either two nodes in the present slice or one node in the present slice and one node in the past slice, which can be multidimensional. Similarly to the case of PCMCI$^+$, this step, which we refer to as CB1, gives a partially oriented graph where lagged relations are oriented and where instantaneous are non-oriented. Then it orients edges using the same rules used in the PC-algorithm [Spirtes et al., 2000, Meek, 1995].

In the following, we present the pseudo-codes of NB1' based on VarLiNGAM, CB1' based on PCMCI$^+$ and CB1' based on PCGCE. We colour in orange the parts that are different from the initial algorithms. Remark that the orange colour indicates that the corresponding parts are added or modified compared to the initial algorithms, but they do not indicate parts of the initial algorithms that were deleted.

## B.1 NB1' based on VarLiNGAM (Algorithm 3)

The NB1' step based on VarLiNGAM is almost identical to the NB1 step based on VarLiNGAM. As NB1, NB1' starts by computing the residuals of all instantaneous nodes by regressing them on their past. However, unlike NB1, NB1' focuses only on a subset of instantaneous nodes $I_t \subseteq V_t$. Note that also unlike NB1, NB1' takes as input a partially oriented graph $\hat{G}^*$ (the output of CB1 step which has the correct skeleton) and that $I_t \cup Pa_{\hat{G}^*}(I_t)$ should satisfy causal sufficiency. By construction, causal sufficiency is satisfied when $I_t$ is an undirected cycle group as defined in Definition 6. The pseudo-code of NB1' is provided in Algorithm 3.

## B.2 CB1' based on PCMCI$^+$ (Algorithm 4)

CB1 and CB1' based on the PCMCI$^+$ algorithm use conditional independence test CI() that returns at the same time the p-value and the statistic of the test. The main differences between the CB1' and the CB1 step based on PCMCI$^+$ is that CB1' takes a causal order as input, and therefore, it starts with a fully-oriented graph, in addition in the MCI instantaneous phase, it conditions only using parents (PCMCI$^+$ condition also on instantaneous adjacencies).

## B.3 CB1' based on PCGCE (Algorithm 5)

CB1 and CB1' based on the PCGCE algorithm use conditional independence test CI() that returns either the p-value of the test or the statistic without computing the p-value. The main difference between the CB1' and the CB1 step based on the PCGCE algorithm is that CB1' takes a causal order as input, and therefore, it starts with a fully-oriented graph and in addition, it conditions only using parents (PCGCE condition on adjacencies).

# C Experimental setup

Time series in monitoring systems are not always exactly aligned together and come in different sampling rates as the timestamps depend on when the data was collected. In the following, we present two pre-processing strategies that we considered for aligning time series:

* Strategy 1: Time series are analyzed in terms of sampling rates and the lowest one is chosen. Afterwards, all the time series are re-sampled according to this lowest sampling rate with the closest value to the timestamp
**Algorithm 3:** NB1' based on VarLiNGAM (parts in orange are different from the initial algorithms)

**Input:** A multivariate time series, a maximal temporal lag $\gamma$, a significance threshold $\alpha$, an independence measure $I()$, the output of the CB1 step $\hat{G}^*$ (partially oriented), and instantaneous nodes of interest $I_t \subseteq V_t$

**Result:** $\hat{G}^*$ (fully oriented)

if $\hat{G}^*$ is an ECG then

Construct a WCG $G^w = (\mathbb{E}^w, \mathbb{V}^w = \{V_{t-\gamma}, \dots, V_t\})$ s.t. $\forall X_{t-} \in V_{t-}, Y_t \in V_t$, if $X_{t-} \to Y_t \in \mathbb{E}^e$ then
$\forall \ell \in \{1, \dots, \gamma\}, X_{t-\ell} \to Y_t \in \mathbb{E}^w$ and $\forall X_t, Y_t \in V_t$ if $X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^e$ then $X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^w$;

else

$\hat{G}^w = \hat{G}^*$;

for $Y_t \in I_t$ do

Estimate a classic autoregressive model for the data

$$Y_t = \sum_{X_{t-\ell} \in Pa_{\hat{G}^w}(I_t)} a_{xy\ell}X_{t-\ell} + \xi_t^y$$

using any conventional implementation of a least-squares method. Note that here $\ell > 0$, so it is really a classic AR model;

Compute the residuals, that is, estimates of $\xi_t^y$;

$$\hat{\xi}_t^y = Y_t - \sum_{X_{t-\ell} \in Pa_{\hat{G}^w}(I_t)} \hat{a}_{xy\ell}X_{t-\ell}$$

Initialize a bijective mapping function $\pi$;

$i = 1$,

Initialize a list $\mathbb{S}$ containing all nodes in $I_t$;

while size($\mathbb{S}$) > 1 do

Initialize an empty list $\mathbb{H}$;

for $X_t \in \mathbb{S}$ do

for $Y_t \in \mathbb{S} \setminus \{X_t\}$ do

Perform least squares regressions of $\hat{\xi}_t^x$ on $\hat{\xi}_t^y$ and compute the residuals:

$$\hat{e}^Y_t = \hat{\xi}_t^y - \frac{\operatorname{cov}(\hat{\xi}_t^x, \hat{\xi}_t^y)}{\operatorname{var}(\hat{\xi}_t^x)}$$

Estimate the dependence between the total residuals and $X_t$:

$$h = \sum_{Y_t \in \mathbb{S} \setminus \{X_t\}} I(\hat{\xi}_t^x, \hat{e}^Y_t)$$

Append $h$ to the end of $\mathbb{H}$;

Find the node $X_t$ corresponding to $\hat{\xi}_t^x$ that is most independent of its residuals in $\mathbb{H}$;

$\pi(X_t) = i$;

$i = i + 1$;

Remove $X_t$ from $\mathbb{S}$;

$\pi(X_t) = i$ where $X_t$ is the remaining instantaneous node in $\mathbb{S}$;

Orient $\hat{G}^*$ s.t. $\forall X_t - Y_t \in \mathbb{E}^*$, $X_t \to Y_t \in \mathbb{E}^*$ if $\pi(X_t) < \pi(Y_t)$;
**Algorithm 3:** NB1' based on VarLiNGAM (parts in orange are different from the initial algorithms)

**Input:** A multivariate time series, a maximal temporal lag $\gamma$, a significance threshold $\alpha$, an independence measure $I()$, the output of the CB1 step $\hat{G}^*$ (partially oriented), and instantaneous nodes of interest $I_t \subseteq V_t$

**Result:** $\hat{G}^*$ (fully oriented)

if $\hat{G}^*$ is an ECG then

Construct a WCG $G^w = (\mathbb{E}^w, \mathbb{V}^w = \{V_{t-\gamma}, \dots, V_t\})$ s.t. $\forall X_{t-} \in V_{t-}, Y_t \in V_t$, if $X_{t-} \to Y_t \in \mathbb{E}^e$ then $\forall \ell \in \{1, \dots, \gamma\}, X_{t-\ell} \to Y_t \in \mathbb{E}^w$ and $\forall X_t, Y_t \in V_t$ if $X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^e$ then $X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^w$;

else

$\hat{G}^w = \hat{G}^*$;

for $Y_t \in I_t$ do

Estimate a classic autoregressive model for the data

$$Y_t = \sum_{X_{t-\ell} \in Pa_{\hat{G}^w}(I_t)} a_{xy\ell}X_{t-\ell} + \xi_t^y$$

using any conventional implementation of a least-squares method. Note that here $\ell > 0$, so it is really a classic AR model;

Compute the residuals, that is, estimates of $\xi_t^y$;

$$\hat{\xi}_t^y = Y_t - \sum_{X_{t-\ell} \in Pa_{\hat{G}^w}(I_t)} \hat{a}_{xy\ell}X_{t-\ell}$$

Initialize a bijective mapping function $\pi$;

$i = 1$,

Initialize a list $\mathbb{S}$ containing all nodes in $I_t$;

while size($\mathbb{S}$) > 1 do

Initialize an empty list $\mathbb{H}$;

for $X_t \in \mathbb{S}$ do

for $Y_t \in \mathbb{S} \setminus \{X_t\}$ do

Perform least squares regressions of $\hat{\xi}_t^x$ on $\hat{\xi}_t^y$ and compute the residuals:

$$\hat{e}^Y_t = \hat{\xi}_t^y - \frac{\text{cov}(\hat{\xi}_t^x, \hat{\xi}_t^y)}{\text{var}(\hat{\xi}_t^x)}$$

Estimate the dependence between the total residuals and $X_t$:

$$h = \sum_{Y_t \in \mathbb{S} \setminus \{X_t\}} I(\hat{\xi}_t^x, \hat{e}^Y_t)$$

Append $h$ to the end of $\mathbb{H}$;

Find the node $X_t$ corresponding to $\hat{\xi}_t^x$ that is most independent of its residuals in $\mathbb{H}$;

$\pi(X_t) = i$;

$i = i + 1$;

Remove $X_t$ from $\mathbb{S}$;

$\pi(X_t) = i$ where $X_t$ is the remaining instantaneous node in $\mathbb{S}$;

Orient $\hat{G}^*$ s.t. $\forall X_t - Y_t \in \mathbb{E}^*$, $X_t \to Y_t \in \mathbb{E}^*$ if $\pi(X_t) < \pi(Y_t)$;
**Algorithm 4:** CB1' based on PCMCI⁺ (parts in **orange** are different from the initial algorithms)

**Input:** A multivariate time series, a maximal temporal lag $\gamma$ and a significance threshold $\alpha$, a conditional independence test CI(), and a **causal order** $\pi$

**Result:** $\mathcal{G}^w$ (WCG)

Construct an fully-connected WCG $\mathcal{G}^w = (\mathbb{E}^w, \mathbb{V}^w = \{\mathbb{V}_{t-\gamma}, \dots, \mathbb{V}_t\})$ s.t.
$\forall X_{t-\ell} \in \{\mathbb{V}_{t-\gamma}, \dots, \mathbb{V}_{t-1}\}, Y_t \in \mathbb{V}_t, X_{t-\ell} \to Y_t \in \mathbb{E}^w$ and $\forall X_t, Y_t \in \mathbb{V}_t$ s.t. $X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^w$ if
$\pi(X_t) < \pi(Y_t)$;

**for** $Y_t \in \mathbb{V}_t$ **do**

Initialize $\hat{B}_t(Y_t) = \mathbb{V}^w \setminus \mathbb{V}_t$;

Initialize $I^{\min}(X_{t-\ell}, Y_y) = \infty$ $\forall X_{t-\ell} \in \hat{B}_t(Y_t)$;
$n = 0$;

**while** $\exists X_{t-\ell} \in \hat{B}_t(Y_t)$ s.t. $\text{size}(\hat{B}_t(Y_t)) \ge n$ **do**

**for** $X_{t-\ell} \in \mathbb{V}^w \setminus \mathbb{V}_t$ s.t. $\text{size}(\hat{B}_t(Y_t)) \ge n$ **do**

$\mathcal{S}$ = first $n$ nodes in $\hat{B}_t(Y_t)$;

$p, h = CI(X_{t-\ell}, Y_t | \mathcal{S})$;

$I^{\min}(X_{t-\ell}, Y_t) = \min(|h|, I^{\min}(X_{t-\ell}, Y_t))$;

**if** $p > \alpha$ **then**

mark $X_{t-\ell}$ for removal

$\forall X_{t-\ell}$ marked for removal, remove $X_{t-\ell} \to Y_t$ from $\mathbb{E}^w$;

Sort $\hat{B}_t(Y_t)$ by $I^{\min}(X_{t-\ell}, Y_y)$ from largest to smallest;
$n = n + 1$;

Initialize $I^{\min}(X_{t-\ell}, Y_y) = \infty$ $\forall X_{t-\ell} \in \hat{B}_t(Y_t)$;
$n = 0$;

**while** $\exists X_{t-\ell} - Y_t \in \mathbb{E}^w$ $\forall \ell \ge 0$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}) \ge n$ **do**

**for** $X_{t-\ell} - Y_t \in \mathbb{E}^w$ $\forall \ell \ge 0$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}) \ge n$ **do**

**while** $\exists X_{t-\ell} - Y_t \in \mathbb{E}^w$ and not all $\mathcal{S} \in Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}$ with $\text{size}(\mathcal{S}) = n$ have been considered

**do**

**for** $\mathcal{S} \in Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}$ s.t. $\text{size}(\mathcal{S}) = n$ **do**

$p, h = CI(Y_t, X_{t-\ell} | \mathcal{S}, \hat{B}_t(Y_t) \setminus \{X_{t-\ell}\}, \hat{B}_{t-\ell}(X_{t-\ell}))$;

$I^{\min}(X_{t-\ell}, Y_t) = \min(|h|, I^{\min}(X_{t-\ell}, Y_t))$;

**if** $p > \alpha$ **then**

Remove $X_{t-\ell} \to Y_t$ from $\mathbb{E}^w$ or $X_{t-\ell} - Y_t$ from $\mathbb{E}^w$;
$n = n + 1$;

Sort $Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t$ by $I^{\min}(X_{t-\ell}, Y_y)$ from largest to smallest;

taken as the new value. Upon re-sampling, missing values can be clearly observed. If missing values are detected, they are filled using simple linear interpolation of Pandas data frames<fnref n="7" />.

* Strategy 2: Each raw value $x_i$ is converted into integral value $s_i$ at each point $i$ as follows: $s_i = x_i(t_i - t_{i-1}) + s_{i-1}$. Then all time series are re-sampled such that each re-sampled value $x_j$ at every $n$ (the lowest sampling rate) steps is calculated as follows: $x_j = \frac{s_i - s_{i-n}}{t_i - t_{i-n}}$. The time $t_i$ (of value $s_i$) is the time that is after the corresponding time to $x_j$.

# D Links to datasets

**Temperature.** Available at https://webdav.tuebingen.mpg.de/cause-effect/.

**Veilleux.** Available at http://robjhyndman.com/tsdldata/data/veilleux.dat.

<footnote n="7">⁷https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html</footnote>
**Algorithm 4:** CB1' based on PCMCI⁺ (parts in **orange** are different from the initial algorithms)

**Input:** A multivariate time series, a maximal temporal lag $\gamma$ and a significance threshold $\alpha$, a conditional independence test CI(), and a **causal order** $\pi$

**Result:** $\mathcal{G}^w$ (WCG)

Construct an fully-connected WCG $\mathcal{G}^w = (\mathbb{E}^w, \mathbb{V}^w = \{\mathbb{V}_{t-\gamma}, \dots, \mathbb{V}_t\})$ s.t.

$\forall X_{t-\ell} \in \{\mathbb{V}_{t-\gamma}, \dots, \mathbb{V}_{t-1}\}, Y_t \in \mathbb{V}_t, X_{t-\ell} \to Y_t \in \mathbb{E}^w \text{ and } \forall X_t, Y_t \in \mathbb{V}_t \text{ s.t. } X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^w \text{ if } \pi(X_t) < \pi(Y_t)$;

**for** $Y_t \in \mathbb{V}_t$ **do**

Initialize $\hat{B}_t(Y_t) = \mathbb{V}^w \setminus \mathbb{V}_t$;

Initialize $I^{\min}(X_{t-\ell}, Y_y) = \infty$ $\forall X_{t-\ell} \in \hat{B}_t(Y_t)$; 
$n = 0$;

**while** $\exists X_{t-\ell} \in \hat{B}_t(Y_t)$ s.t. $\text{size}(\hat{B}_t(Y_t)) \ge n$ **do**

**for** $X_{t-\ell} \in \mathbb{V}^w \setminus \mathbb{V}_t$ s.t. $\text{size}(\hat{B}_t(Y_t)) \ge n$ **do**

$\mathcal{S}$ = first $n$ nodes in $\hat{B}_t(Y_t)$;

$p, h = CI(X_{t-\ell}, Y_t | \mathcal{S})$;

$I^{\min}(X_{t-\ell}, Y_t) = \min(|h|, I^{\min}(X_{t-\ell}, Y_t))$;

**if** $p > \alpha$ **then**

mark $X_{t-\ell}$ for removal

$\forall X_{t-\ell}$ marked for removal, remove $X_{t-\ell} \to Y_t$ from $\mathbb{E}^w$;

Sort $\hat{B}_t(Y_t)$ by $I^{\min}(X_{t-\ell}, Y_y)$ from largest to smallest; 
$n = n + 1$;

Initialize $I^{\min}(X_{t-\ell}, Y_y) = \infty$ $\forall X_{t-\ell} \in \hat{B}_t(Y_t)$; 
$n = 0$;

**while** $\exists X_{t-\ell} - Y_t \in \mathbb{E}^w \forall \ell \ge 0$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}) \ge n$ **do**

**for** $X_{t-\ell} - Y_t \in \mathbb{E}^w \forall \ell \ge 0$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}) \ge n$ **do**

while $\exists X_{t-\ell} - Y_t \in \mathbb{E}^w$ and not all $\mathcal{S} \in Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}$ with $\text{size}(\mathcal{S}) = n$ have been considered **do**

**for** $\mathcal{S} \in Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t \setminus \{X_{t-\ell}\}$ s.t. $\text{size}(\mathcal{S}) = n$ **do**

$p, h = CI(Y_t, X_{t-\ell} | \mathcal{S}, \hat{B}_t(Y_t) \setminus \{X_{t-\ell}\}, \hat{B}_{t-\ell}(X_{t-\ell}))$;

$I^{\min}(X_{t-\ell}, Y_t) = \min(|h|, I^{\min}(X_{t-\ell}, Y_t))$;

**if** $p > \alpha$ **then**

Remove $X_{t-\ell} \to Y_t$ from $\mathbb{E}^w$ or $X_{t-\ell} - Y_t$ from $\mathbb{E}^w$; 
$n = n + 1$;

Sort $Pa_{\hat{\mathcal{G}}^w}(Y_t) \cap \mathbb{V}_t$ by $I^{\min}(X_{t-\ell}, Y_y)$ from largest to smallest;

taken as the new value. Upon re-sampling, missing values can be clearly observed. If missing values are detected, they are filled using simple linear interpolation of Pandas data frames<fnref n="7" />.

* Strategy 2: Each raw value $x_i$ is converted into integral value $s_i$ at each point $i$ as follows: $s_i = x_i(t_i - t_{i-1}) + s_{i-1}$. Then all time series are re-sampled such that each re-sampled value $x_j$ at every $n$ (the lowest sampling rate) steps is calculated as follows: $x_j = \frac{s_i - s_{i-n}}{t_i - t_{i-n}}$. The time $t_i$ (of value $s_i$) is the time that is after the corresponding time to $x_j$.

## D Links to datasets

**Temperature.** Available at https://webdav.tuebingen.mpg.de/cause-effect/.

**Veilleux.** Available at http://robjhyndman.com/tsdldata/data/veilleux.dat.

<footnote n="7">⁷https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html</footnote>
**Algorithm 5:** CB1' based on PCGCE (parts in orange are different from the initial algorithms)

**Input:** A multivariate time series, a maximal temporal lag $\gamma$ and a significance threshold $\alpha$, a conditional independence test CI(), and a causal order $\pi$

**Result:** $\mathcal{G}^e$ (ECG)

Construct an fully-connected ECG $\mathcal{G}^e = (\mathbb{E}^e, \mathbb{V}^e = \{\mathbb{V}_{t-}, \mathbb{V}_t\})$ s.t. $\forall X_{t-} \in \mathbb{V}_{t-}, Y_t \in \mathbb{V}_t, X_{t-} \to Y_t \in \mathbb{E}^e$ and $\forall X_t, Y_t \in \mathbb{V}_t$ s.t. $X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^e$ if $\pi(X_t) < \pi(Y_t)$; $n = 0$;

while $\exists X_{t*} - Y_t \in \mathbb{E}^e \forall t* \in \{t, t-\}$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^e}(Y_t)\{X_{t*}\}) \ge n$ do

Initialize $\mathbb{D}$ and $\mathbb{H}$ as empty lists;

for $X_{t*} - Y_t \in \mathbb{E}^e \forall t* \in \{t, t-\}$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^e}(Y_t)\{X_{t*}\}) = n$ do

while $\exists X_{t*} - Y_t \in \mathbb{E}^e$ and not all $\mathbb{S} \in Pa_{\hat{\mathcal{G}}^e}(Y_t)\{X_{t*}\}$ with $\text{size}(\mathbb{S}) = n$ have been considered do

for $\mathbb{S} \subset Pa_{\hat{\mathcal{G}}^e}(Y_t) \{X_{t*}\}$ s.t. $\text{size}(\mathbb{S}) = n$ do

$-, h = CI(X_{t*}, Y_t | \mathbb{S})$;

Save $(X_{t*}, Y_t, \mathbb{S})$ in $\mathbb{D}$ and $h$ in $\mathbb{H}$

Sort $\mathbb{D}$ and $\mathbb{H}$ by $\mathbb{H}$ from smallest to largest;

for $X_{t*}, Y_t, \mathbb{S} \in \mathbb{D}$ s.t. $\mathbb{S} \subset Pa_{\hat{\mathcal{G}}^e}(Y_t)$ do

$p, - = CI(X_{t*}, Y_t | \mathbb{S})$;

if $p > \alpha$ then

Remove $X_{t*} \to Y_t$ from $\mathbb{E}^e$ or $X_{t*} - Y_t$ from $\mathbb{E}^e$;

$n = n + 1$;

**Diary.** Available at http://future.aae.wisc.edu.

**Ingestion mini.** Available at https://easyvista2015-my.sharepoint.com/personal/aait-bachir_easyvista_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Faait%2Dbachir%5Feasyvista%5Fcom%2FDocuments%2FLab%2FPublicData&ga=1.

**Web.** Available at https://easyvista2015-my.sharepoint.com/personal/aait-bachir_easyvista_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Faait%2Dbachir%5Feasyvista%5Fcom%2FDocuments%2FLab%2FPublicData&ga=1.

**Antivirus.** Available at https://easyvista2015-my.sharepoint.com/personal/aait-bachir_easyvista_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Faait%2Dbachir%5Feasyvista%5Fcom%2FDocuments%2FLab%2FPublicData&ga=1.

## E Additional experiments

In Table 6 we provide F1 score on the adjacencies. In contrast to Table 1 in the main text, this Table shows the performance of the algorithms on skeleton recovery which allows to illustrate the robustness of CBNB class to Assumption 4.
**Algorithm 5:** CB1' based on PCGCE (parts in orange are different from the initial algorithms)

**Input:** A multivariate time series, a maximal temporal lag $\gamma$ and a significance threshold $\alpha$, a conditional independence test CI(), and a causal order $\pi$

**Result:** $\mathcal{G}^e$ (ECG)

Construct an fully-connected ECG $\mathcal{G}^e = (\mathbb{E}^e, \mathbb{V}^e = \{\mathbb{V}_{t-}, \mathbb{V}_t\})$ s.t. $\forall X_{t-} \in \mathbb{V}_{t-}, Y_t \in \mathbb{V}_t, X_{t-} \to Y_t \in \mathbb{E}^e$ and $\forall X_t, Y_t \in \mathbb{V}_t$ s.t. $X_t \neq Y_t, X_t \to Y_t \in \mathbb{E}^e$ if $\pi(X_t) < \pi(Y_t)$; $n = 0$;

while $\exists X_{t*} - Y_t \in \mathbb{E}^e \forall t* \in \{t, t-\}$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^e}(Y_t)\setminus\{X_{t*}\}) \ge n$ do

Initialize $\mathbb{D}$ and $\mathbb{H}$ as empty lists;

for $X_{t*} - Y_t \in \mathbb{E}^e \forall t* \in \{t, t-\}$ s.t. $\text{size}(Pa_{\hat{\mathcal{G}}^e}(Y_t)\setminus\{X_{t*}\}) = n$ do

while $\exists X_{t*} - Y_t \in \mathbb{E}^e$ and not all $\mathbb{S} \in Pa_{\hat{\mathcal{G}}^e}(Y_t)\setminus\{X_{t*}\}$ with $\text{size}(\mathbb{S}) = n$ have been considered do

for $\mathbb{S} \subset Pa_{\hat{\mathcal{G}}^e}(Y_t) \setminus \{X_{t*}\}$ s.t. $\text{size}(\mathbb{S}) = n$ do

$-, h = CI(X_{t*}, Y_t | \mathbb{S})$;

Save $(X_{t*}, Y_t, \mathbb{S})$ in $\mathbb{D}$ and $h$ in $\mathbb{H}$

Sort $\mathbb{D}$ and $\mathbb{H}$ by $\mathbb{H}$ from smallest to largest;

for $X_{t*}, Y_t, \mathbb{S} \in \mathbb{D}$ s.t. $\mathbb{S} \subset Pa_{\hat{\mathcal{G}}^e}(Y_t)$ do

$p, - = CI(X_{t*}, Y_t | \mathbb{S})$;

if $p > \alpha$ then

Remove $X_{t*} \to Y_t$ from $\mathbb{E}^e$ or $X_{t*} - Y_t$ from $\mathbb{E}^e$;

$n = n + 1$;

**Diary.** Available at http://future.aae.wisc.edu.

**Ingestion mini.** Available at https://easyvista2015-my.sharepoint.com/personal/aait-bachir_easyvista_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Faait%2Dbachir%5Feasyvista%5Fcom%2FDocuments%2FLab%2FPublicData&ga=1.

**Web.** Available at https://easyvista2015-my.sharepoint.com/personal/aait-bachir_easyvista_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Faait%2Dbachir%5Feasyvista%5Fcom%2FDocuments%2FLab%2FPublicData&ga=1.

**Antivirus.** Available at https://easyvista2015-my.sharepoint.com/personal/aait-bachir_easyvista_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Faait%2Dbachir%5Feasyvista%5Fcom%2FDocuments%2FLab%2FPublicData&ga=1.

# E Additional experiments

In Table 6 we provide F1 score on the adjacencies. In contrast to Table 1 in the main text, this Table shows the performance of the algorithms on skeleton recovery which allows to illustrate the robustness of CBNB class to Assumption 4.
<table><caption>Table 6: Results obtained on the simulated data of Section 5.2 for the different structures with 1000 observations with non-Gaussian noise (top panel) and with Gaussian noise (bottom panel). We report the mean and the standard deviation of the F1 score on adjacencies. The best results are in blue bold and the second best results are in green bold.</caption><thead><tr><th></th><th>Diamond</th><th>Cyclic Diamond</th><th>Unf. Diamond</th><th>Adj. Unf. Diamond</th></tr></thead><tbody><tr><td colspan="5" style="text-align: center; font-weight: bold;">Non-Gaussian noise</td></tr><tr><td>NBCB-w</td><td><strong>0.95</strong> ± 0.01</td><td>0.95 ± 0.01</td><td>0.94 ± 0.01</td><td><strong>0.88</strong> ± 0.01</td></tr><tr><td>CBNB-w</td><td><strong>0.95</strong> ± 0.01</td><td><strong>0.96</strong> ± 0.01</td><td>0.95 ± 0.01</td><td><strong>0.88</strong> ± 0.01</td></tr><tr><td>NBCB-e</td><td>0.86 ± 0.01</td><td>0.85 ± 0.01</td><td><strong>0.97</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>CBNB-e</td><td>0.85 ± 0.01</td><td>0.86 ± 0.01</td><td><strong>0.97</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>GCMVL</td><td>0.87 ± 0.01</td><td>0.92 ± 0.01</td><td>0.07 ± 0.01</td><td>0.06 ± 0.02</td></tr><tr><td>PCMCI<sup>+</sup></td><td><strong>0.95</strong> ± 0.01</td><td><strong>0.96</strong> ± 0.01</td><td>0.95 ± 0.04</td><td><strong>0.88</strong> ± 0.01</td></tr><tr><td>PCGCE</td><td>0.85 ± 0.01</td><td>0.86 ± 0.01</td><td><strong>0.97</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>Dynotears</td><td>0.09 ± 0.03</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td></tr><tr><td>VarLiNGAM</td><td><strong>0.99</strong> ± 0.01</td><td><strong>0.97</strong> ± 0.01</td><td><strong>0.98</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td colspan="5" style="text-align: center; font-weight: bold;">Gaussian noise</td></tr><tr><td>NBCB-w</td><td><strong>0.93</strong> ± 0.01</td><td><strong>0.93</strong> ± 0.01</td><td>0.90 ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>CBNB-w</td><td><strong>0.96</strong> ± 0.01</td><td><strong>0.96</strong> ± 0.01</td><td><strong>0.94</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>NBCB-e</td><td>0.83 ± 0.01</td><td>0.83 ± 0.01</td><td>0.93 ± 0.01</td><td><strong>0.85</strong> ± 0.01</td></tr><tr><td>CBNB-e</td><td>0.85 ± 0.01</td><td>0.84 ± 0.01</td><td><strong>0.97</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>GCMVL</td><td>0.88 ± 0.01</td><td>0.91 ± 0.01</td><td>0.02 ± 0.01</td><td>0.03 ± 0.01</td></tr><tr><td>PCMCI<sup>+</sup></td><td><strong>0.96</strong> ± 0.01</td><td><strong>0.96</strong> ± 0.01</td><td><strong>0.94</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>PCGCE</td><td>0.85 ± 0.01</td><td>0.84 ± 0.01</td><td><strong>0.97</strong> ± 0.01</td><td><strong>0.87</strong> ± 0.01</td></tr><tr><td>Dynotears</td><td>0.13 ± 0.05</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td></tr><tr><td>VarLiNGAM</td><td>0.91 ± 0.01</td><td>0.92 ± 0.01</td><td>0.93 ± 0.01</td><td>0.84 ± 0.01</td></tr></tbody></table>
<table><caption>Table 6: Results obtained on the simulated data of Section 5.2 for the different structures with 1000 observations with non-Gaussian noise (top panel) and with Gaussian noise (bottom panel). We report the mean and the standard deviation of the F1 score on adjacencies. The best results are in blue bold and the second best results are in green bold.</caption><thead><tr><th></th><th>Diamond</th><th>Cyclic Diamond</th><th>Unf. Diamond</th><th>Adj. Unf. Diamond</th></tr></thead><tbody><tr><td colspan="5" style="text-align: center;">Non-Gaussian noise</td></tr><tr><td>NBCB-w</td><td>0.95 ± 0.01</td><td>0.95 ± 0.01</td><td>0.94 ± 0.01</td><td>0.88 ± 0.01</td></tr><tr><td>CBNB-w</td><td>0.95 ± 0.01</td><td>0.96 ± 0.01</td><td>0.95 ± 0.01</td><td>0.88 ± 0.01</td></tr><tr><td>NBCB-e</td><td>0.86 ± 0.01</td><td>0.85 ± 0.01</td><td>0.97 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>CBNB-e</td><td>0.85 ± 0.01</td><td>0.86 ± 0.01</td><td>0.97 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>GCMVL</td><td>0.87 ± 0.01</td><td>0.92 ± 0.01</td><td>0.07 ± 0.01</td><td>0.06 ± 0.02</td></tr><tr><td>PCMCI<sup>+</sup></td><td>0.95 ± 0.01</td><td>0.96 ± 0.01</td><td>0.95 ± 0.04</td><td>0.88 ± 0.01</td></tr><tr><td>PCGCE</td><td>0.85 ± 0.01</td><td>0.86 ± 0.01</td><td>0.97 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>Dynotears</td><td>0.09 ± 0.03</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td></tr><tr><td>VarLiNGAM</td><td>0.99 ± 0.01</td><td>0.97 ± 0.01</td><td>0.98 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td colspan="5" style="text-align: center;">Gaussian noise</td></tr><tr><td>NBCB-w</td><td>0.93 ± 0.01</td><td>0.93 ± 0.01</td><td>0.90 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>CBNB-w</td><td>0.96 ± 0.01</td><td>0.96 ± 0.01</td><td>0.94 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>NBCB-e</td><td>0.83 ± 0.01</td><td>0.83 ± 0.01</td><td>0.93 ± 0.01</td><td>0.85 ± 0.01</td></tr><tr><td>CBNB-e</td><td>0.85 ± 0.01</td><td>0.84 ± 0.01</td><td>0.97 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>GCMVL</td><td>0.88 ± 0.01</td><td>0.91 ± 0.01</td><td>0.02 ± 0.01</td><td>0.03 ± 0.01</td></tr><tr><td>PCMCI<sup>+</sup></td><td>0.96 ± 0.01</td><td>0.96 ± 0.01</td><td>0.94 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>PCGCE</td><td>0.85 ± 0.01</td><td>0.84 ± 0.01</td><td>0.97 ± 0.01</td><td>0.87 ± 0.01</td></tr><tr><td>Dynotears</td><td>0.13 ± 0.05</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td><td>0.0 ± 0.0</td></tr><tr><td>VarLiNGAM</td><td>0.91 ± 0.01</td><td>0.92 ± 0.01</td><td>0.93 ± 0.01</td><td>0.84 ± 0.01</td></tr></tbody></table>