为什么statsmodels的ARIMA1,0,0不等于AutoReg1?

问题描述

我正在比较arima_model和ar_model的结果。这是我无法理解的:

  • 为什么得出的系数不同?是因为有估算方法吗? (fit()的method属性的不同设置不会给出相同的结果)
  • 获取系数并回测拟合结果后,我匹配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))
    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)

解决方法

  • 为什么最终的系数不同?是因为有估算方法吗? (fit()的method属性的不同设置不会给出相同的结果)

AutoReg使用OLS估计参数,该条件是(在第一次观察时)最大似然条件。 ARIMA实现了最大可能性,因此在估计参数时会在第一次观察中使用可用信息。在非常大的样本中,系数应该非常接近,并且它们的渐近极限相等。实际上,它们总是会有所不同,尽管通常应该很小。

  • 获取系数并回测拟合结果后,我匹配AR(1)的结果,但不匹配ARIMA(1)的结果。为什么?

两个模型使用不同的表示形式。 AutoReg(1)的模型为Y(t) = a + b Y(t-1) + eps(t)ARIMA(1,0)被指定为(Y(t) - c) = b * (Y(t-1) - c) + eps(t)。如果为|b|<1,则在较大的样本限制c = a / (1-b)中,尽管在有限的样本中,该身份将不完全成立。

  • 在这种最简单的设置下ARIMA到底在做什么?难道它应该能够再现AR吗?

不。 ARIMA使用statsmodels Statespace框架,该框架可以使用高斯MLE估计各种模型。

ARIMA本质上是SARIMAXthis notebook provides a good introduction的特例。