我对 statsmodels ARIMA 如何计算拟合值感到困惑。考虑一个适合随机生成的序列的简单 AR(1) 过程
series = array([ 1.76405235, 0.40015721, 0.97873798, 2.2408932 , 1.86755799,
-0.97727788, 0.95008842, -0.15135721, -0.10321885, 0.4105985 ])
我们可以拟合模型:
model = sm.tsa.ARIMA(series, order = (1,0,0)).fit()
获取参数的估计:
parameters = model.params
并获得拟合值:
fitted_values = model.fittedvalues
这些fitting_values是如何计算的(根据初始数据和模型估计的参数)?
-- 我尝试了
model.params[0] + model.params[1]*series[i-1]
,但没有成功。
--我也不知道为什么
model.fittedvalues[0]
与model.params[0]
相同。
我还发现 statsmodels 上的自回归模型令人困惑。
首先,看起来 ARIMA 模型位于
sm.tsa.arima.model.ARIMA
而不是代码中的 sm.tsa.ARIMA
。
这里的问题是,这三个参数是什么:
>>> model.params
array([0.73930757, 0.0181879 , 0.93490084])
找出答案的一种方法是打印模型拟合结果的摘要:
>>> model.summary()
SARIMAX Results
==============================================================================
Dep. Variable: y No. Observations: 10
Model: ARIMA(1, 0, 0) Log Likelihood -13.853
Date: Sun, 25 Feb 2024 AIC 33.706
Time: 19:27:30 BIC 34.614
Sample: 0 HQIC 32.710
- 10
Covariance Type: opg
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
const 0.7393 0.401 1.842 0.065 -0.047 1.526
ar.L1 0.0182 0.461 0.039 0.969 -0.886 0.922
sigma2 0.9349 0.624 1.499 0.134 -0.288 2.158
===================================================================================
Ljung-Box (L1) (Q): 0.00 Jarque-Bera (JB): 0.40
Prob(Q): 1.00 Prob(JB): 0.82
Heteroskedasticity (H): 1.28 Skew: -0.08
Prob(H) (two-sided): 0.85 Kurtosis: 2.04
===================================================================================
Warnings:
[1] Covariance matrix calculated using the outer product of gradients (complex-step).
在上面,您可以看到三个参数(按顺序)是'const','ar.L1'和'sigma2'
要弄清楚这些是什么,您必须进入文档,您可以在其中找到此模型定义:
虽然没有明确引用名称“const”、“ar.L1”和“sigma2”,但我最好的猜测是:
至于如何计算这些,我假设它使用的是普通最小二乘法(OLS)。有关更多详细信息,请参阅有关
fit
方法的文档