spectral_connectivity.simulate.simulate_MVAR#

simulate_MVAR(coefficients: ndarray[tuple[int, ...], dtype[floating]], noise_covariance: ndarray[tuple[int, ...], dtype[floating]] | None = None, n_time_samples: int = 100, n_trials: int = 1, n_burnin_samples: int = 100, random_state: int | Generator | None = None) ndarray[tuple[int, ...], dtype[floating]][source]#

Simulate multivariate autoregressive (MVAR) process.

Generates time series data following the MVAR model: X(t) = sum(A_k * X(t-k)) + E(t), where A_k are coefficient matrices and E(t) is multivariate Gaussian noise.

Parameters:
  • coefficients (NDArray[floating], shape (n_lags, n_signals, n_signals)) – MVAR coefficient matrices for each lag. Each A_k matrix defines the linear influence of signals at lag k.

  • noise_covariance (NDArray[floating], shape (n_signals, n_signals), optional) – Covariance matrix of the noise process. If None, uses identity matrix (independent unit-variance noise).

  • n_time_samples (int, default=100) – Number of time samples to generate (after burn-in).

  • n_trials (int, default=1) – Number of independent trials to simulate.

  • n_burnin_samples (int, default=100) – Number of initial samples to discard for equilibrium.

  • random_state (int, np.random.Generator, or None, optional) – Random number generator seed or instance for reproducible results.

Returns:

time_series – Simulated time series data with specified MVAR dynamics.

Return type:

NDArray[floating], shape (n_time_samples, n_trials, n_signals)

Examples

>>> import numpy as np
>>> # Simple 2-signal VAR(1) with coupling
>>> coefficients = np.array([[[0.5, 0.3], [0.2, 0.6]]])
>>> data = simulate_MVAR(coefficients, n_time_samples=1000, n_trials=5)
>>> data.shape
(1000, 5, 2)

Notes

The simulation uses a burn-in period to reach statistical equilibrium before collecting the requested samples.