Sto calcolando la funzione di autocorrelazione per i rendimenti di un magazzino. Per fare ciò ho testato due funzioni, la funzione autocorr
integrata in Pandas e la funzione acf
fornita da statsmodels.tsa
. Questo viene fatto nel seguente MWE:Qual è la differenza tra pandas ACF e statsmodel ACF?
import pandas as pd
from pandas_datareader import data
import matplotlib.pyplot as plt
import datetime
from dateutil.relativedelta import relativedelta
from statsmodels.tsa.stattools import acf, pacf
ticker = 'AAPL'
time_ago = datetime.datetime.today().date() - relativedelta(months = 6)
ticker_data = data.get_data_yahoo(ticker, time_ago)['Adj Close'].pct_change().dropna()
ticker_data_len = len(ticker_data)
ticker_data_acf_1 = acf(ticker_data)[1:32]
ticker_data_acf_2 = [ticker_data.autocorr(i) for i in range(1,32)]
test_df = pd.DataFrame([ticker_data_acf_1, ticker_data_acf_2]).T
test_df.columns = ['Pandas Autocorr', 'Statsmodels Autocorr']
test_df.index += 1
test_df.plot(kind='bar')
Quello che ho notato è stato i valori avevano previsto non erano identici:
Che cosa rappresenta questa differenza, e quali valori dovrebbero essere utilizzati?
Guardando i documenti i ritardi di default sono '1' per la versione pandas e' 40' per statsmodel – EdChum
Prova 'transparent = True' come opzione per la versione statsmodels. – user333700
Hai invertito le etichette nella trama, penso che 'imparziali = True' dovrebbe rendere più grandi i coefficienti di autocorrelazione. – user333700