如何解决为什么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
本质上是SARIMAX
和this notebook provides a good introduction的特例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。