forecast::accuracy对相同白噪声模型计算结果不一致问题求助
ARIMA(0,0,0)模型精度指标差异问题解答
差异来源
拟合值的计算与对齐逻辑不同
auto.arima()会自动对输入序列做na.omit()处理,仅基于有效数据(非NA部分)拟合模型,生成的拟合值也只对应有效数据的位置;而Arima()强制拟合时,会保留原始序列的长度,拟合值数组开头会对应原始序列的NA位置生成NA。虽然accuracy()会自动剔除NA参与计算,但两者内部记录的训练集元数据(比如序列长度、索引)不同,可能导致部分计算逻辑的细微差异。MASE的基准误差计算差异
MASE的计算依赖于朴素基准模型的误差,auto.arima()使用的是na.omit()后的序列计算基准误差;而Arima()基于原始序列的非NA部分计算,两者的基准误差分母可能因序列对齐方式不同而出现差异,最终导致MASE结果不同。Box-Cox变换的自动应用差异
auto.arima()默认会自动检测是否需要进行Box-Cox变换(lambda=NULL),即使最终选择ARIMA(0,0,0)模型,也可能先对序列做变换后拟合均值,再反变换回原始尺度得到拟合值;而手动调用Arima()时,默认不会自动执行变换,直接拟合原始序列的均值。两种方式得到的拟合值存在差异,自然会导致MPE、MAPE这类依赖拟合值与观测值比值的指标不同。
新精度指标的可信度
当你截取第一个非NA值后的序列重新拟合时:
- 若确保两个函数的参数完全一致(比如关闭自动Box-Cox变换:
lambda=1,关闭近似计算approximation=FALSE,stepwise=FALSE,同时保证allowmean和include.mean均为TRUE),两者的精度指标应该完全一致。 - 若仍有差异,大概率是参数设置不一致导致的,排查参数后即可得到一致结果。
- 重新拟合后的指标是可信的:你使用了完整的有效序列,规避了原始序列缺失值带来的计算歧义,只要参数设置正确,指标能准确反映白噪声模型在你的数据上的拟合效果。
内容的提问来源于stack exchange,提问作者Nino Molin
相关产品推荐
相关产品推荐

