如何让statsmodels中ARIMA与ARMA构建的AR(1)模型结果一致
问题原因
你用到的两个接口分属statsmodels不同时期的实现:statsmodels.tsa.arima_model.ARMA是已废弃的传统时间序列模型实现,statsmodels.tsa.arima.model.ARIMA是基于状态空间框架重构的新实现,二者默认的估计逻辑、初始值处理、优化路径存在差异,因此同参数配置下结果不一致。
需要调整的配置
要让新接口输出和旧接口对齐,需要修改以下默认参数:
- 显式指定趋势项为常数项
trend='c',和旧接口默认配置保持一致 - 估计方法指定为
css-mle:旧接口fit()默认先以条件和平方计算初始参数,再执行精确极大似然优化,新接口需要手动指定该估计方法 - 状态空间初始值设置为
initialization='conditional':新接口默认使用近似漫初始化,和旧接口的条件初始值逻辑不一致,需要手动修改 - 显式开启平稳性、可逆性约束
enforce_stationarity=True、enforce_invertibility=True,和旧接口默认约束对齐
修改后代码示例
from statsmodels.tsa.arima.model import ARIMA new_model_ar = ARIMA( df['market_value'], order=(1, 0, 0), trend='c', enforce_stationarity=True, enforce_invertibility=True, initialization='conditional' ) new_results_ar = new_model_ar.fit(method='css-mle') new_results_ar.summary()
补充说明
修改后如果仍存在1e-6级别的微小数值差异,属于两个实现优化器迭代终止阈值不同导致的浮点精度误差,不会影响统计推断结论,可忽略。
内容的提问来源于stack exchange,提问作者KND
相关产品推荐
相关产品推荐

