Aja*_*jax 62 python r time-series forecasting statsmodels
我试图使用ARMA ARIMA模型预测每周销售额.我找不到调整顺序(p,d,q)的函数statsmodels.目前R具有forecast::auto.arima()调整(p,d,q)参数的功能.
如何为我的模型选择正确的订单?为此目的,python中是否有可用的库?
beh*_*uri 59
您可以实施多种方法:
ARIMAResults包括aic和bic.根据他们的定义(参见此处和此处),这些标准会对模型中的参数数量进行惩罚.因此,您可以使用这些数字来比较模型.还有scipy optimize.brute在指定的参数空间上进行网格搜索.所以像这样的工作流应该有效:
def objfunc(order, exog, endog):
from statsmodels.tsa.arima_model import ARIMA
fit = ARIMA(endog, order, exog).fit()
return fit.aic()
from scipy.optimize import brute
grid = (slice(1, 3, 1), slice(1, 3, 1), slice(1, 3, 1))
brute(objfunc, grid, args=(exog, endog), finish=None)
Run Code Online (Sandbox Code Playgroud)
确保你打电话brute跟finish=None.
您可能获得pvalues从ARIMAResults.因此,一种逐步转发算法易于实现,其中模型的程度在整个维度上增加,其获得所添加参数的最低p值.
使用ARIMAResults.predict交叉验证的替代机型.最好的方法是保持时间序列的尾部(比如最近5%的数据),并使用这些点来获得拟合模型的测试误差.
小智 16
现在有一个适当的python包来做auto-arima.https://github.com/tgsmith61591/pyramid
用法示例:https://github.com/tgsmith61591/pyramid/blob/master/examples/quick_start_example.ipynb
| 归档时间: |
|
| 查看次数: |
46860 次 |
| 最近记录: |