Source code for neurokit2.eda.eda_autocor
# -*- coding: utf-8 -*-
import pandas as pd
from ..signal import signal_autocor
[docs]
def eda_autocor(eda_cleaned, sampling_rate=1000, lag=4):
"""**EDA Autocorrelation**
Compute the autocorrelation measure of raw EDA signal i.e., the correlation between the time
series data and a specified time-lagged version of itself.
Parameters
----------
eda_cleaned : Union[list, np.array, pd.Series]
The cleaned EDA signal.
sampling_rate : int
The sampling frequency of raw EDA signal (in Hz, i.e., samples/second). Defaults to 1000Hz.
lag : int
Time lag in seconds. Defaults to 4 seconds to avoid autoregressive
correlations approaching 1, as recommended by Halem et al. (2020).
Returns
-------
float
Autocorrelation index of the eda signal.
See Also
--------
eda_simulate, eda_clean
Examples
---------
.. ipython:: python
import neurokit2 as nk
# Simulate EDA signal
eda_signal = nk.eda_simulate(duration=5, scr_number=5, drift=0.1)
eda_cleaned = nk.eda_clean(eda_signal)
cor = nk.eda_autocor(eda_cleaned)
cor
References
-----------
* van Halem, S., Van Roekel, E., Kroencke, L., Kuper, N., & Denissen, J. (2020). Moments that
matter? On the complexity of using triggers based on skin conductance to sample arousing
events within an experience sampling framework. European Journal of Personality, 34(5),
794-807.
"""
# Sanity checks
if isinstance(eda_cleaned, pd.DataFrame):
colnames = eda_cleaned.columns.values
if len([i for i in colnames if "EDA_Clean" in i]) == 0:
raise ValueError(
"NeuroKit error: eda_autocor(): Your input does not contain the cleaned EDA signal."
)
else:
eda_cleaned = eda_cleaned["EDA_Clean"]
if isinstance(eda_cleaned, pd.Series):
eda_cleaned = eda_cleaned.values
# Autocorrelation
lag_samples = lag * sampling_rate
if lag_samples > len(eda_cleaned):
raise ValueError(
"NeuroKit error: eda_autocor(): The time lag "
"exceeds the duration of the EDA signal. "
"Consider using a longer duration of the EDA signal."
)
cor, _ = signal_autocor(eda_cleaned, lag=lag_samples)
return cor