我已经存储了截距的系数,ar,ma of StatsModel软件包的Arima模型
x = df_sku
x_train = x['Weekly_Volume_Sales']
x_train_log = np.log(x_train)
x_train_log[x_train_log == -np.inf] = 0
x_train_mat = x_train_log.as_matrix()
model = ARIMA(x_train_mat, order=(1,1,1))
model_fit = model.fit(disp=0)
res = model_fit.predict(start=1, end=137, exog=None, dynamic=False)
print(res)
params = model_fit.params
但是我找不到有关STATSMODEL的任何文档,使我可以将模型参数重新介绍到一组新数据并预测N步骤中。
是否有人能够完成改装模型并预测时间样本?
我正在尝试完成类似于R的事情:
# Refit the old model with testData
new_model <- Arima(as.ts(testData.zoo), model = old_model)
这是您可以使用的代码:
def ARIMAForecasting(data, best_pdq, start_params, step):
model = ARIMA(data, order=best_pdq)
model_fit = model.fit(start_params = start_params)
prediction = model_fit.forecast(steps=step)[0]
#This returns only last step
return prediction[-1], model_fit.params
#Get the starting parameters on train data
best_pdq = (3,1,3) #It is fixed, but you can search for the best parameters
model = ARIMA(train_data, best_pdq)
model_fit = model.fit()
start_params = model_fit.params
data = train_data
predictions = list()
for t in range(len(test_data)):
real_value = data[t]
prediction = ARIMAForecasting(data, best_pdq, start_params, step)
predictions.append(prediction)
data.append(real_value)
#After you can compare test_data with predictions
详细信息您可以在此处检查:https://www.statsmodels.org/dev/generated/statsmodels.tsa.arima_model.arima.arima.fit.html#statsmodels.tsa.arima_model.arima.arima.arima.arima.arima.fit
很棒的问题。我找到了这样的例子:https://alkaline-ml.com/pmdarima/develop/auto_examples/arima/arima/example_add_new_samples.html
简短:
import pmdarima as pmd
...
### split data as train/test:
train, test = ...
### fit initial model on `train` data:
arima = pmd.auto_arima(train)
...
### update initial fit with `test` data:
arima.update(test)
...
### create forecast using updated fit for N steps:
new_preds = arima.predict(n_periods=10)