Source code for spectral_connectivity.simulate
"""Functions to simulate processes."""
import numpy as np
[docs]
def simulate_MVAR(
coefficients,
noise_covariance=None,
n_time_samples=100,
n_trials=1,
n_burnin_samples=100,
):
"""
Simulate multivariate autoregressive (MVAR) process.
Parameters
----------
coefficients : array, shape (n_time_samples, n_lags, n_signals, n_signals)
noise_covariance : array, shape (n_signals, n_signals)
Returns
-------
time_series : array, shape (n_time_samples - n_burnin_samples,
n_trials, n_signals)
"""
n_lags, n_signals, _ = coefficients.shape
if noise_covariance is None:
noise_covariance = np.eye(n_signals)
time_series = np.random.multivariate_normal(
np.zeros((n_signals,)),
noise_covariance,
size=(n_time_samples + n_burnin_samples, n_trials),
)
for time_ind in np.arange(n_lags, n_time_samples + n_burnin_samples):
for lag_ind in np.arange(n_lags):
time_series[time_ind, ...] += np.matmul(
coefficients[np.newaxis, np.newaxis, lag_ind, ...],
time_series[time_ind - (lag_ind + 1), ..., np.newaxis],
).squeeze()
return time_series[n_burnin_samples:, ...]