我statsmodels.tsa.arima_model.ARMAResults.predict
用来确定 ARIMA 模型的预测值。当我使用训练数据中的起始索引调用该函数时,该函数返回正确的值数组。但是,如果我使用训练数据之外的起始索引,则返回的数组由于某种原因是完全不正确的。
原始代码,带有start=1000
和end=1481
。r
是ARMAResult
来自先前拟合的具有 481 个数据点的模型。
注意:这end-1
是因为调用 predict 返回一个数组,其中包含 的索引处的预测end
。
p = r.predict(start, end-1)
print(end-start)
print(len(p))
从这段代码中,我得到以下输出:
481
1000
我通过使用此代码切片列表来解决问题。
p = r.predict(0, end)[start:end]
print(end-start)
print(len(p))
输出:
481
481
我的问题是,为什么会发生这种情况?我end
可以超出原始数据集的长度并predict
完美返回,但即使start
索引是数据集长度之外的第一个数字,返回的数组也太长并且数字不同。我的猜测是它与数据如何需要在下一个值之前计算先前的值有关,但是这些值已经是ARMAResult
对象的一部分,我完全被卡住了。