Source code for neurodsp.aperiodic.autocorr
"""Autocorrelation analyses of time series."""
import numpy as np
###################################################################################################
###################################################################################################
[docs]def compute_autocorr(sig, max_lag=1000, lag_step=1, demean=True):
"""Compute the signal autocorrelation (lagged correlation).
Parameters
----------
sig : array 1D
Time series to compute autocorrelation over.
max_lag : int, optional, default: 1000
Maximum delay to compute autocorrelations for, in samples.
lag_step : int, optional, default: 1
Step size (lag advance) for computing autocorrelations.
demean : bool, optional, default: True
Whether to demean the signal before computing autocorrelations.
Returns
-------
timepoints : 1d array
Time points, in samples, at which autocorrelations are computed.
autocorrs : 1d array
Autocorrelation values, for across time lags.
Examples
--------
Compute the autocorrelation of a simulated pink noise signal:
>>> from neurodsp.sim import sim_powerlaw
>>> sig = sim_powerlaw(n_seconds=10, fs=500, exponent=-1)
>>> timepoints, autocorrs = compute_autocorr(sig)
"""
if demean:
sig = sig - sig.mean()
autocorrs = np.correlate(sig, sig, "full")[len(sig)-1:]
autocorrs = autocorrs[:max_lag+1] / autocorrs[0]
autocorrs = autocorrs[::lag_step]
timepoints = np.arange(0, max_lag+1, lag_step)
return timepoints, autocorrs