  Complex systems, such as brains, markets, and societies, exhibit internal
dynamics influenced by external factors. Disentangling delayed external effects
from internal dynamics within these systems is often challenging. We propose
using a Vector Autoregressive model with eXogenous input (VARX) to capture
delayed interactions between internal and external variables. While this model
aligns with Granger's statistical formalism for testing "causal relations", the
connection between the two is not widely understood. Here, we bridge this gap
by providing fundamental equations, user-friendly code, and demonstrations
using simulated and real-world data from neuroscience, physiology, sociology,
and economics. Our examples illustrate how the model avoids spurious
correlation by factoring out external influences from internal dynamics,
leading to more parsimonious explanations of the systems. We also provide
methods for enhancing model efficiency, such as L2 regularization for limited
data and basis functions to cope with extended delays. Additionally, we analyze
model performance under various scenarios where model assumptions are violated.
MATLAB, Python, and R code are provided for easy adoption:
https://github.com/lcparra/varx
