Learning graphical models from time series
Also, causal discovery, structure discovery in time series
September 20, 2017 — November 28, 2023
Suppose I measure a time series of vectors, and I think that some of the components of the vector cause other components of the vector, but I have no idea which causes which. Then I might want to do graphical model discovery from time series and find out which components cause which other components.
Does this setup feel contrived to you? It does to me; I have never found a use for it. The setup looks provocative (“learn the world from observations!”) but in practice AFAICT we do not usually wish to do it this way. We never have a phenomenon that we are capable of collecting a huge amount of data about but about which we have no ideas regarding the causal structure. If it is a system that is so complicated that the causal structure might be muddy (educational attainments in children, the weather systems) then it is not so much that we have no idea what causes what, but rather that we cannot measure the causal factors of interest, because of questions of scale or difficulty, but we might hope that somehow some aggregate quantities of interest are measurable…? I guess that is why we might think this way, but it seems to lead to bizarre and contrived answers for ill-posed questions about convenience samples (“Does education cause wealth or does wealth cause education? Does moisture cause rain or does rain cause moisture?”).
It seems popular though, and some smart people have spent time on it, so maybe there is something interesting there.
If we are really convinced that there are some latent parameters of interest but that they are not measurable, we might want to think about causality between observables and observables, which sounds very much like a koopman operator setup. Probably someone has made that work, but I have not seen it yet.
1 Granger causality
a.k.a linear-Gaussian “causality”. Requires mentioning, usually not what is required. Generalised form that is probably also not what is required: transfer entropy.
2 PCMCI
Not sure yet. Looks popular.
3 Tooling
3.1 Tigramite
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