Я делаю анализ временных рядов и пытаюсь найти периодичность моих временных рядов. Я сделал следующий код и нашел графики (см. В приложении):
# Periodicity of the two trajectories
from statsmodels import api as sm
# convert dataframe to array
np_df= np.asarray(df['Combined'], dtype=float)
# remove mean to create signal oscillating around 0
np_df= np_df- np.mean(np_df)
#get the autocorrelation coefficient
acf= sm.tsa.acf(np_df, nlags=len(np_df))
plt.figure(figsize = (10, 8))
lag = np.arange(len(np_df)) / 2. / 24.
plt.plot(lag, acf)
plt.xlim((0, 120))
plt.xlabel('Lags (days)')
plt.ylabel('Autocorrelation')
plt.figure(figsize = (10, 8))
plt.plot(lag, acf)
plt.xlim((0, 22))
plt.xlabel('Lags (days)')
plt.ylabel('Autocorrelation')
Использование пакета fft для поиска периодичности
from scipy import fftpack
ft_df= fftpack.fft(np_df, axis=0)
freq= fftpack.fftfreq(np_df.shape[0], time[1]-time[0])
periods= 1/freq
plt.figure()
plt.plot(periods, abs(ft_df)*1e-3, 'o')
plt.xlim(0,22)
plt.xlabel('Period')
plt.ylabel('Power ($cdot10^3$)')
plt.show()
Мой вопрос, я думаю, периодичность, из чего я могу интерпретировать это 1 и, возможно, 2,5? Я прав в своем методе и интерпретации?
Заранее спасибо!