Как найти автокорреляцию и plot_acf на python, используя данные с неравными временными интервалами?

#python #pandas #statsmodels #autocorrelation

#python #pandas #statsmodels #автокорреляция

Вопрос:

У меня есть следующая серия pandas, где временной интервал не фиксирован. Могу я спросить, как мне найти и построить автокорреляцию за 1/3/5/10 минут? Извините, я новичок в Python… Это торговые данные, в которых цена меняется. Поскольку цена может измениться в любое время, следовательно, данные о времени не имеют фиксированного интервала. Но мне нужно было бы изучить автокорреляцию через 1,3,5 и 10 минут и подумать об использовании plot_acf.

 time                           Price
2019-01-07 07:45:01.064515    152.530
2019-01-07 07:45:01.110072    152.535
2019-01-07 07:45:01.116596    152.535
2019-01-07 07:45:01.116860    152.535
2019-01-07 07:45:01.116905    152.535
  

Это мой код:

 interval = datetime.timedelta(minutes = 10)
series = pd.Series(data_first_session['fair_price'].values, index = data_first_session['time'])
acf = plot_acf(series, lags = interval)
acf.show()
  
 ---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-5307c2c9f4df> in <module>()
      1 interval = datetime.timedelta(minutes = 10)
      2 series = pd.Series(data_first_session['fair_price'].values, index = data_first_session['time'])
----> 3 acf = plot_acf(series, lags = interval)
      4 acf.show()

/usr/local/envs/py3env/lib/python3.5/site-packages/statsmodels/graphics/tsaplots.py in plot_acf(x, ax, lags, alpha, use_vlines, unbiased, fft, title, zero, **kwargs)
    109     fig, ax = utils.create_mpl_ax(ax)
    110 
--> 111     lags, nlags, irregular = _prepare_data_corr_plot(x, lags, zero)
    112 
    113     confint = None

/usr/local/envs/py3env/lib/python3.5/site-packages/statsmodels/graphics/tsaplots.py in _prepare_data_corr_plot(x, lags, zero)
     18     else:
     19         irregular = True
---> 20         lags = np.asanyarray(lags).astype(np.int)
     21     nlags = lags.max(0)
     22 

TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.timedelta'
  

Комментарии:

1. Опечатка в вашем plot_acf методе ..? Должно быть lags , а не lag

2. Я попробую, но могу ли я спросить, правильна ли логика или код? @ChrisA

3. Так не думаю, lags параметр должен быть int или массив ints . Передача timedelta завершится неудачей

4. да, я пробовал, это выдает ошибку относительно параметра lags, который должен быть целым числом… если это так, есть ли у вас какие-либо идеи, как мне к этому подойти?

5. попробуйте выполнить повторную выборку ваших временных рядов с интервалами в 1 минуту и передать с задержками [1, 3, 5, 10] …? так что, может быть series.resample('1min').mean() ..?