Source code for neurokit2.complexity.complexity_relativeroughness

import numpy as np
import pandas as pd

from ..signal import signal_autocor


[docs] def complexity_relativeroughness(signal, **kwargs): """**Relative Roughness (RR)** Relative Roughness is a ratio of local variance (autocovariance at lag-1) to global variance (autocovariance at lag-0) that can be used to classify different 'noises' (see `Hasselman, 2019 <https://complexity-methods.github.io/book/relative-roughness.html>`_). It can also be used as an index to test for the applicability of fractal analysis (see `Marmelat et al., 2012 <https://doi.org/10.3389/fphys.2012.00208>`_). Parameters ---------- signal : Union[list, np.array, pd.Series] The signal (i.e., a time series) in the form of a vector of values. **kwargs : optional Other arguments to be passed to ``nk.signal_autocor()``. Returns -------- rr : float The RR value. info : dict A dictionary containing additional information regarding the parameters used to compute RR. Examples -------- .. ipython:: python import neurokit2 as nk signal = [1, 2, 3, 4, 5] rr, _ = nk.complexity_relativeroughness(signal) rr References ---------- * Marmelat, V., Torre, K., & Delignieres, D. (2012). Relative roughness: an index for testing the suitability of the monofractal model. Frontiers in Physiology, 3, 208. """ # Sanity checks if isinstance(signal, (np.ndarray, pd.DataFrame)) and signal.ndim > 1: raise ValueError( "Multidimensional inputs (e.g., matrices or multichannel data) are not supported yet." ) _, acov = signal_autocor(signal, **kwargs) # Retrieve the dict acov = acov["ACov"][0:2] # Extract cov at lag 0 and 1 # RR formula return 2 * (1 - acov[1] / acov[0]), {"ACov": acov}