Source code for neurokit2.complexity.information_fishershannon
import numpy as np
import scipy.integrate
from .entropy_power import entropy_power
[docs]
def fishershannon_information(signal, **kwargs):
"""**Fisher-Shannon Information (FSI)**
The :func:`Shannon Entropy Power <entropy_power>` is closely related to another index, the
Fisher Information Measure (FIM). Their combination results in the Fisher-Shannon Information
index.
.. warning::
We are not sure at all about the correct implementation of this function. Please consider
helping us by double-checking the code against the formulas in the references.
Parameters
----------
signal : Union[list, np.array, pd.Series]
The signal (i.e., a time series) in the form of a vector of values.
**kwargs
Other arguments to be passed to :func:`density_bandwidth`.
Returns
-------
fsi : float
The computed FSI.
info : dict
A dictionary containing additional information regarding the parameters used.
See Also
--------
entropy_power
Examples
--------
.. ipython:: python
import neurokit2 as nk
signal = nk.signal_simulate(duration=10, frequency=[10, 12], noise=0.1)
fsi, info = nk.fishershannon_information(signal, method=0.01)
fsi
References
----------
* Guignard, F., Laib, M., Amato, F., & Kanevski, M. (2020). Advanced analysis of temporal data
using Fisher-Shannon information: theoretical development and application in geosciences.
Frontiers in Earth Science, 8, 255.
* Vignat, C., & Bercher, J. F. (2003). Analysis of signals in the Fisher-Shannon information
plane. Physics Letters A, 312(1-2), 27-33.
"""
# Shannon Power Entropy
powen, info = entropy_power(signal, **kwargs)
x_range = info["Values"]
fx = info["Density"]
gx = np.gradient(fx)
# Fisher
fi = gx ** 2 / fx
fi = scipy.integrate.simpson(fi, x=x_range)
info.update({"FI": fi})
# Fisher-Shannon Complexity
fsc = powen * fi
# if fsc < 1:
# warnings.warn(
# "Fisher-Shannon Complexity is lower than 1. The problem could be related to kernel"
# " density estimation, bandwidth selection, or too little data points."
# )
return fsc, info