jakobrunge / tigramite

Tigramite is a python package for causal inference with a focus on time series data. The Tigramite documentation is at
https://jakobrunge.github.io/tigramite/
GNU General Public License v3.0
1.32k stars 276 forks source link

Impact of negative feedback loops #94

Closed augo92 closed 3 years ago

augo92 commented 3 years ago

Hello, I tried developing a simple three node causal model with a negative feedback loop to keep the model relatively stationary. That is, node_A has a positive cause on node_B, which has a positive cause on node_C, which has a negative cause on node_A. Each cause has a time lag of 1 time step. When I ran PCMCI+ on the time series generated from this model, it did not find any significant causes. Are there any assumptions this model is violating? The mode is clearly cyclic, but I was hoping that the fact that it was time lagged would enable PCMCI+ to estimate it (e.g., no faithfulness violation). Is this an appropriate assumption in general?

Other details in case useful: I tried both linear and nonlinear causes:

Note: I would like to generate many possible models (e.g., different nodes and edges). If anyone knows of code for an existing model generator that should work well for testing causal discovery methods like PCMCI+ on a variety of cases, please let me know!

Thanks, Augo92

jakobrunge commented 3 years ago

PCMCI is asymptotically consistent and will hence estimate the causal structure if:

If any of these is violated, there are no guarantees, but it could still work.

The latest Tigramite release has a very flexible model generator function called structural_causal_process(links, T, noises=None, seed=None)`

I hope this helps.