statsmodels 如何计算 AR 模型中的样本内预测?

How does statsmodels calculate in-sample predictions in AR models?

我对时间序列建模和 statsmodels 非常陌生,并试图了解 statsmodels 中的 AR 模型。假设我有一个包含 1000 个样本的数据记录 y,并且我在 y 上拟合了一个 AR (1) 模型。然后我从该模型生成样本内预测为 y_pred。我这样做是因为

from statsmodels.tsa.ar_model import AutoReg
model = AutoReg(y,1).fit()
y_pred = model.predict()

我使用model.params获取模型的参数。

我想知道,在估计模型参数后,statsmodels如何计算样本内预测?对于前。 y_pred[10] 是如何计算的?

对不起,如果问题太基础了,谢谢你的帮助。

根据 Wikipedia:

The autoregressive model specifies that the output variable depends linearly on its own previous values and on a stochastic term (an imperfectly predictable term).

在您的模型示例中,您有一个预测变量 - y 的滞后值。在这个简单的例子中,.predict() 方法将每个滞后值乘以该预测变量的估计线性斜率参数值,并加上该直线截距的估计值。因此 y_pred[10] 将等于拟合斜率参数与 y[9] 的乘积,加上截距估计值。

这是一个例子:

from statsmodels.tsa.ar_model import AutoReg

y = [1, 2, 3, 6, 2, 9, 1]

model = AutoReg(y,1).fit()
model.params
# array([ 5.72953737, -0.49466192])

params数组中的第一个值是估计的截距参数,第二个值是估计的线性(斜率)参数。

y_pred = model.predict()
y_pred
# array([5.23487544, 4.74021352, 4.2455516 , 2.76156584, 4.74021352, 1.27758007])

y_pred 数组中的第一个值是 y 数组中第二个值的预测值。计算方式为:

-0.49466192 * 1 + 5.72953737 = 5.23487544

y_pred 数组中的第二个值计算为:

-0.49466192 * 2 + 5.72953737 = 4.74021353

等等...