我有一个值为 192.405 的风扇速度 (RPM) 数据集(训练+测试值)。我正在训练 ARIMA 模型,并尝试预测数据集的其余未来值并比较结果。
在测试数据中拟合模型时,我得到了直线预测
from sklearn.model_selection import train_test_split
from statsmodels.tsa.arima_model import ARIMA
dfx = df[(df['Tarih']>'2020-07-23') & (df['Tarih']<'2020-10-23')]
X_train = dfx[:int(dfx.shape[0]*0.8)] #2 months
X_test = dfx[int(dfx.shape[0]*0.8):] # rest, 1 months
model = ARIMA(X_train.Value, order=(4,1,4))
model_fit = model.fit(disp=0)
print(model_fit.summary())
test = X_test
train = X_train
我现在能做什么?
您的 ARIMA 模型使用最后 4 个观测值来进行预测。第一个预测将基于最后四个已知的数据点。第二次预测将基于第一次预测和最后三个已知数据点。第三次预测将基于第一次和第二次预测以及最后两个已知数据点,依此类推。您的第五个预测将完全基于预测值。第一百次预测将根据预测值根据预测值根据预测值……每次预测都会与实际值略有偏差。这些预测误差会随着时间的推移而累积。当您尝试预测如此大的范围时,这通常会导致 ARIMA 简单地预测一条直线。
如果您的模型使用由
q
参数表示的 MA 组件,那么您只能预测未来的 q
步。这意味着您的模型只能预测接下来的四个数据点,之后预测将收敛为一条直线。
这种方法(训练模型多次)是否会使模型的计算成本昂贵?因为如果您进行 100 次预测,例如 100 次,则必须训练模型;如果一次进行 4 次预测,则必须训练 25 次