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): """Computes 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 --------- >>> 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 #doctest: +SKIP References ----------- - 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. """ # 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 warning: 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