Skip to content

Empirical Dynamic Modeling (EDM)

logo

Welcome to the home of Empirical Dynamic Modeling (EDM) — a suite of statistical software packages for causal analysis of time series data using modern nonlinear techniques like Convergent Cross Mapping (CCM).

These packages are available in:

📘 Stata 🐍 Python 📊 R

All three are built on a shared high-performance C++ backend, ensuring consistent behavior across platforms.


🧠 What is EDM?

EDM is a framework for modeling complex dynamic systems directly from data — no need for linear assumptions or fixed model structures. Instead, it reconstructs system dynamics using time-delay embeddings and evaluates causal links using tools like CCM.

For the theoretical background and methods, we recommend:


🚀 Installation

You can install each package using the instructions below:

Stata
ssc install edm, replace
edm update, development replace
Python
pip install 'fastEDM @ git+https://github.com/EDM-Developers/fastEDM-python'
R
# install.packages("devtools")
devtools::install_github("EDM-Developers/fastEDM-r")

🔍 Where to Learn More?

Each language has its own documentation site:

  • Stata package: Most comprehensive, includes GPU support and multiple distance functions.
  • Python package: Simple to use, minimal interface.
  • R package: R-native wrapper around the same backend.

The Stata package currently offers the most complete feature set, so we recommend starting there if you're new to EDM.


📚 Citation

If you use any of these packages, please cite the following paper:

@article{edm-stata,
  title={Beyond linearity, stability, and equilibrium: The edm package for empirical dynamic modeling and convergent cross-mapping in {S}tata},
  author={Li, Jinjing and Zyphur, Michael J and Sugihara, George and Laub, Patrick J},
  journal={The Stata Journal},
  volume={21},
  number={1},
  pages={220--258},
  year={2021},
}