Source code for teaspoon.parameter_selection.autocorrelation

"""
This function implements Auto-Correlation (AC) for the selection of the delay tau for permutation entropy. 
Additionally, it only requires a single time series and has a fast computation time. 
However, this method is only designed for linear system.
"""


[docs]def autoCorrelation_tau(ts, cutoff=0.36788, AC_method='spearman', plotting=False): """This function takes a time series and uses AC to find the optimum delay based on the correlation being less than a specified cutoff (default is 1/e, which is approximately 0.36788). Args: ts (array): Time series (1d). cutoff (float): value for which correlation is considered insignificant (default is 1/e). method (string): either 'spearman' or 'pearson'. default is 'spearman'. Kwargs: plotting (bool): Plotting for user interpretation. defaut is False. Returns: (int): tau, The embedding delay for permutation formation. """ import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy.stats import spearmanr tau = 0 tau_a = [] R = 1 R_a = [] while R > cutoff: tau = tau+1 ts_d = ts[tau:len(ts)] ts_o = ts[:len(ts)-tau] ts_o = pd.Series(ts_o) ts_d = pd.Series(ts_d) if AC_method == 'pearson': R = ts_o.corr(ts_d, method='pearson') if AC_method == 'spearman': R, p_value = spearmanr(ts_o, ts_d) if plotting == True: tau_a.append(tau) R_a.append(R) if plotting == True: TextSize = 18 plt.xticks(size=TextSize) plt.yticks(size=TextSize) plt.xlabel(r'Delay $\tau$', size=TextSize) plt.ylabel('Correlation Value', size=TextSize) plt.plot(tau_a, R_a, 'k') plt.plot(tau_a, R_a, 'r.') plt.plot([0, tau+5], [cutoff, cutoff], 'b--', label='Cutoff') plt.legend(loc='upper right', fontsize=TextSize) plt.show() return tau - 1
# In[ ]: if __name__ == '__main__': from teaspoon.parameter_selection.autocorrelation import autoCorrelation_tau import numpy as np fs = 10 t = np.linspace(0, 100, fs*100) ts = np.sin(t) + np.sin((1/np.pi)*t) tau = autoCorrelation_tau(ts, cutoff=1/np.exp(1), AC_method='pearson', plotting=True) print('Delay from AC: ', tau)