Вычислить автокорреляцию как функцию лага в Python - PullRequest
2 голосов
/ 07 мая 2019

В python (+ pandas / numpy / scipy / statsmodels) Есть ли функция, которая возвращает автокорреляции с задержкой?Существует ли что-то подобное, готовое в виде библиотечной функции?

Чтобы избежать путаницы, я хочу следующее, просто я не хочу отображать его, но хочу, чтобы оно возвращалось как серия (pd.Series или pd.DataFrame):

import numpy as np
import pandas as pd
from statsmodels.graphics.tsaplots import plot_acf
from matplotlib import pyplot as plt
plt.ion()
s = pd.Series(np.sin(range(1,100))) + pd.Series(np.random.randn(99))
plot_acf(s)

По сути, я хочу получить то, что возвращает pd.Series.autocorr(), но я хочу вернуть серию, а не скаляр, где серия содержит автокорреляцию для различных лагов.

Редактировать:

Один из способов достижения вышеизложенного заключается в следующем:

pd.Series([s.autocorr(i) for i in range(0,s.shape[0]-1)], index=range(0,s.shape[0]-1))

Ответы [ 2 ]

2 голосов
/ 08 мая 2019

Как насчет функции Statsmodels acf?

import statsmodels.api as sm

np.random.seed(1234)
s = pd.Series(np.sin(range(1,100))) + pd.Series(np.random.randn(99))
pd.Series(sm.tsa.acf(s, nlags=5))

выходы

0    1.000000
1    0.033136
2   -0.124275
3   -0.396403
4   -0.248519
5    0.078170
dtype: float64
0 голосов
/ 07 мая 2019

Я могу думать только о том, чтобы ускорить ваш собственный метод vectorize

np.vectorize(s.autocorr)(np.arange(0,len(s)-1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...