Python statsmodels ARIMA预测

kli*_*lib 7 python time-series forecasting statsmodels

我正在尝试使用python statsmodels进行样本预测.我不想仅仅预测训练集末尾的下一个x值,但我想一次预测一个值,并在预测时考虑实际值.换句话说,我想做滚动1期预测,但我不想每次都重新校准模型.我能找到的最近的帖子是:

使用statsmodels进行ARMA样本外预测

但是,这使用ARMA而不是ARIMA.如何使用ARIMA实现这一目标还是有更好的方法?我知道我实际上可以拉动系数并自己应用函数但是在我的代码中我使用的ARIMA模型随着时间的推移是动态的,因此系数和滞后值的使用数量不是恒定的.任何帮助将不胜感激.

ric*_*ini 8

如果我是对的,我有类似的问题:基本上我想把我的时间序列分成训练和测试集,训练模型,然后根据过去的历史任意预测测试集的任何元素.我没有设法使用ARIMA statsmodels类实现它.

这就是我使用statsmodel做的方式:我已经将一阶差异应用于系列以实现平稳性,并计算了一个arma模型:

model = sm.tsa.ARMA(fitting_data, order=(p, q), dates=fitting_dates).fit()
Run Code Online (Sandbox Code Playgroud)

我已经将arma模型转换为纯粹的ar模型:

ar_params = model.arparams
ma_params = model.maparams

ar_coefficients = arma2ar(ar_params, ma_params, nobs=final_ar_coeff)
Run Code Online (Sandbox Code Playgroud)

NOBS参数影响自回归系数,你会得到的数量.我尝试了几个值,增加它直到观察到预测没有显着变化.一旦你得到了不同系列的预测,你想把它们带回原来的系列.我实现了一种方法,在预测之前给出一个或一组预测和最后一个已知元素,计算原始系列中的预测:

def differenced_series_to_original(values, starting_value):

    original_series = [starting_value]
    [original_series.append(original_series[-1]+i) for i in values]

    return original_series[1:]
Run Code Online (Sandbox Code Playgroud)

显然,是您的预测列表,starting_value是最后一个已知元素.希望它有助于解决您的问题.