#python #statistics #time-series #statsmodels
#python #Статистика #временные ряды #statsmodels
Вопрос:
Я сравниваю результаты из arima_model и ar_model. Вот что я не могу понять:
- Почему результирующие коэффициенты отличаются? Это из-за метода оценки? (Разные настройки свойства метода fit() не дают идентичных результатов)
- После получения коэффициентов и обратного тестирования подогнанных результатов я сопоставляю их с AR (1), но не с ARIMA (1). Почему?
- Что ARIMA на самом деле делает в этой простейшей настройке, разве она не должна быть способна воспроизводить AR?
import pandas_datareader as pdr
import datetime
aapl = pdr.get_data_yahoo('AAPL', start=datetime.datetime(2006,1,1), end=datetime.datetime(2020,6,30))
aapl = aapl.resample('M').mean()
aapl['close_pct_change'] = aapl['Close'].pct_change()
from statsmodels.tsa.arima_model import ARIMA
mod = ARIMA(aapl['close_pct_change'][1:], order=(1,0,0))
res1 = mod.fit(method='mle')
print(res1.summary())
from statsmodels.tsa.ar_model import AutoReg, ar_select_order
mod = AutoReg(aapl['close_pct_change'][1:], 1)
res2 = mod.fit()
print(res2.summary())
fitted_check1 = res1.params[0] res1.params[1]*aapl['close_pct_change'][1:].shift(1)
print(fitted_check1[1:] - res1.fittedvalues)
fitted_check2 = res2.params[0] res2.params[1]*aapl['close_pct_change'][1:].shift(1)
print(fitted_check2[1:] - res2.fittedvalues)
Ответ №1:
- Почему результирующие коэффициенты отличаются? Это из-за метода оценки? (Разные настройки свойства метода fit() не дают идентичных результатов)
AutoReg
оценивает параметры с использованием OLS, который является условным (при первом наблюдении) с максимальной вероятностью. ARIMA
реализует полное максимальное правдоподобие и, таким образом, использует доступную информацию из первого наблюдения при оценке параметров. В очень больших выборках коэффициенты должны быть очень близки, и они равны по своему асимптотическому пределу. НА практике они всегда будут отличаться, хотя разница обычно должна быть незначительной.
- После получения коэффициентов и обратного тестирования подогнанных результатов я сопоставляю их с AR (1), но не с ARIMA (1). Почему?
Две модели используют разные представления. AutoReg(1)
модель Y(t) = a b Y(t-1) eps(t)
. ARIMA(1,0,0)
указывается как (Y(t) - c) = b * (Y(t-1) - c) eps(t)
. Если |b|<1
, то в пределе большой выборки c = a / (1-b)
, хотя в конечных выборках это тождество не будет точно выполняться.
- Что ARIMA на самом деле делает в этой простейшей настройке, разве она не должна быть способна воспроизводить AR?
Нет. ARIMA
использует платформу Statespace statsmodels, которая может оценивать широкий спектр моделей с использованием Gaussian MLE.
ARIMA
по сути, это частный случай, SARIMAX
и эта тетрадь обеспечивает хорошее введение.