Source code for neurokit2.complexity.entropy_quadratic
# -*- coding: utf-8 -*-
import numpy as np
from .entropy_sample import entropy_sample
[docs]
def entropy_quadratic(signal, delay=1, dimension=2, tolerance="sd", **kwargs):
"""**Quadratic Sample Entropy (QSE)**
Compute the quadratic sample entropy (QSE) of a signal. It is essentially a correction of
SampEn introduced by Lake (2005) defined as:
.. math::
QSE = SampEn + ln(2 * tolerannce)
QSE has been described as a more stable measure of entropy than SampEn (Gylling, 2017).
Parameters
----------
signal : Union[list, np.array, pd.Series]
The signal (i.e., a time series) in the form of a vector of values.
delay : int
Time delay (often denoted *Tau* :math:`\\tau`, sometimes referred to as *lag*) in samples.
See :func:`complexity_delay` to estimate the optimal value for this parameter.
dimension : int
Embedding Dimension (*m*, sometimes referred to as *d* or *order*). See
:func:`complexity_dimension` to estimate the optimal value for this parameter.
tolerance : float
Tolerance (often denoted as *r*), distance to consider two data points as similar. If
``"sd"`` (default), will be set to :math:`0.2 * SD_{signal}`. See
:func:`complexity_tolerance` to estimate the optimal value for this parameter.
**kwargs : optional
Other arguments.
See Also
--------
entropy_sample
Returns
----------
qse : float
The uadratic sample entropy of the single time series.
info : dict
A dictionary containing additional information regarding the parameters used
to compute sample entropy.
Examples
----------
.. ipython:: python
import neurokit2 as nk
signal = nk.signal_simulate(duration=2, frequency=5)
qsa, parameters = nk.entropy_quadratic(signal, delay=1, dimension=2)
qsa
References
----------
* Huselius Gylling, K. (2017). Quadratic sample entropy as a measure of burstiness: A study in
how well Rényi entropy rate and quadratic sample entropy can capture the presence of spikes in
time-series data.
* Lake, D. E. (2005). Renyi entropy measures of heart rate Gaussianity. IEEE Transactions on
Biomedical Engineering, 53(1), 21-27.
"""
sampen, info = entropy_sample(
signal,
delay=delay,
dimension=dimension,
tolerance=tolerance,
**kwargs,
)
return sampen + np.log(2 * info["Tolerance"]), info