![]()
系列简介
这是我们一系列原创技术贴,从易到难,每天学习一点。所有内容均为疾控数据分析、科研论文相关,或者说很多和现在的热门监测预警相关,所以我们这个系列就叫“监测预警基础”。
今天是第44节,这算是我们一个小专题吧,大概11讲,我们细化,短篇化,彻底把ARIMA模型搞懂。
今天是学透ARIMA专题第5讲的内容,我们在下一节R实操之前,先搞懂完整步骤。
前面4篇我们把 ARIMA 的核心零件逐个拆解开了:平稳性与差分(参数 d)、自相关与偏自相关(定阶工具)、AR (p) 和 MA (q) 基础模型原理。
很多同行反馈:单个概念都能看懂,但拿到一份真实的传染病监测数据,还是不知道从哪下手,步骤乱、顺序错,最后出来的模型也不知道靠不靠谱。
这一篇我们就把所有知识点串起来,给大家一套标准化的 ARIMA 5 步建模法,全程贴合疾控监测数据场景,按顺序走下来,就能完成一份合格的 ARIMA 模型。
在此之前,我们再次总览ARIMA (p,d,q) 的三个参数,先把三个参数的含义再做一次复盘,做到心里有数:
p:自回归(AR)阶数:代表用前几期的真实观测值预测当期
d:差分阶数:代表让数据平稳需要做几次普通差分
q:移动平均(MA)阶数:代表突发随机冲击的影响持续几期
ARIMA 建模的本质,就是先通过 d 阶差分把非平稳数据变平稳,再给平稳序列拟合一个 ARMA (p,q) 模型,最终组合成 ARIMA (p,d,q)。
![]()
这是所有时间序列分析的第一步,绝对不能跳过,也是新手最容易忽略的一步。
1. 要做什么
把原始监测数据整理成标准的连续时间序列,完成基础清洗,然后画出时序图,肉眼观察数据特征。
2. 疾控数据的清洗要点
第一,保证时间连续无中断:周度数据不能缺周,月度数据不能缺月,法定传染病报告数据要对齐报告周期;
第二,缺失值处理:少量缺失可用线性插值、同期均值填补,缺失超过 1 个周期不建议直接建模;
第三,异常值核对:数值突然暴涨暴跌,先核对是不是暴发疫情、报告迟报、检测量突变等业务原因,不要直接删除;
第四,周期对齐:周度数据注意 53 周的特殊年份,月度数据统一为自然月,保证周期长度一致。
3. 数据量要求
ARIMA 需要足够的历史数据才能拟合规律:普通 ARIMA至少 50 个以上的观测值,比如 2 年以上的周度数据、4 年以上的月度数据。季节性数据需要至少包含 2-3 个完整周期,比如年度季节性数据,最好有 3 年以上的连续数据。
4. 看图看什么
画出原始数据的时序图,先做业务层面的判断:比如有没有明显的上升 / 下降长期趋势?比如有没有固定的年度 / 季度季节性周期?比如波动幅度是不是随时间变化(比如流行高峰一年比一年高)?
这一步既能帮我们初步判断平稳性,也能核对数据是否符合业务常识,避免后面建模出了低级错误都发现不了。![]()
数据平稳是 ARIMA 建模的前提,这一步的目标就是找到最小的差分阶数 d,让数据达到平稳。
1. 操作顺序:先对原始序列做 ADF 单位根检验,同时看时序图;若 P>0.05,判定为不平稳,做一阶差分,再次检验;若一阶差分后仍不平稳,再做二阶差分,再次检验;若数据有强季节性,优先做 1 次季节差分,再做普通差分检验平稳性。
2. 核心判断标准:统计标准就是ADF 检验 P 值≤0.05,拒绝 “序列不平稳” 的原假设,判定为平稳。业务标准是差分后的序列围绕一个固定水平线波动,没有明显趋势和周期。
3. 疾控建模必守原则:宁少勿多,d 最多取 2。绝大多数传染病监测数据,1 阶差分就能达到平稳,极少数曲线趋势的数据用到 2 阶。过度差分会丢失数据本身的有效信息,反而会大幅降低预测精度,绝对不是差分次数越多越好。![]()
数据平稳之后,就可以给平稳序列确定 AR 的阶数 p 和 MA 的阶数 q,有两种方法配合使用:手动看图初步定范围,信息准则筛选最优值。
方法 1:ACF/PACF 图手动定阶(初步参考)
对应我们第三篇讲的定阶规则,看平稳序列的自相关图(ACF)和偏自相关图(PACF):
![]()
提醒:真实疾控监测数据很少有理论上完美的截尾,不用死抠细节,这一步只需要定出 p 和 q 的大致范围(比如 p 可能是 1-3,q 可能是 0-2)就足够了。
方法 2:AIC 信息准则自动定阶(最终标准)
手动定阶有主观性,最终也是实际工作中,我们更多的用AIC(赤池信息准则)筛选最优模型。你不用深究 AIC 的计算公式,只需要记住:AIC 值越小,模型越好—— 它既考虑了模型的拟合精度,也兼顾了模型的简洁度,避免阶数过高导致过拟合。
实操中我们会把初步范围内的 p、q 组合全部试一遍,计算每个模型的 AIC 值,选最小的那个作为最终阶数。后面实操篇会教大家用auto.arima()函数一键完成这个筛选,不用手动逐个试。
![]()
定好 p、d、q 三个参数后,就可以拟合模型,大部分工作也就完成了。
但是,拟合完绝对不能直接用来预测,必须先做残差诊断,其实我们在STL分解中就讲过残差诊断→
1. 为什么必须做残差检验?
模型残差,就是真实值和模型拟合值的差值。
我们做检验的核心目的是:确认残差是白噪声(纯随机波动),如果残差是白噪声,说明序列里所有有用的规律都已经被模型提取干净了,模型是合格的;
如果残差不是白噪声,说明残差里还藏着没被提取的规律,模型拟合不充分,预测结果肯定不准。
2. 怎么检验,两个方法
第一,残差 ACF 图:残差的自相关系数全部落入置信区间内,没有显著的自相关性;第二,Ljung-Box 检验:检验的 P 值 > 0.05,不能拒绝 “残差相互独立” 的原假设,判定为白噪声。
3.检验不通过怎么办?
第一,调整 p 和 q 的阶数,适当增加阶数提取剩余信息; 第二,重新检查数据平稳性,确认差分是否充分; 第三,若数据有强季节性,更换为 SARIMA 季节性模型(后面篇章会讲)。
![]()
通过残差检验的模型,就可以用来做预测了,同时我们需要量化评价模型的预测效果。
1. 预测的核心原则:ARIMA 只适合短期预测
ARIMA 的预测精度会随着预测期数增加快速下降,这是它的固有局限。第一,周度监测数据:建议预测 1-4 周;第二,月度监测数据:建议预测 1-3 个月。不要用 ARIMA 做半年、一年以上的长期预测,结果没有参考价值。
2. 效果评价的正确做法:划分训练集和测试集
很多人只看模型对历史数据的拟合效果,这是典型误区 —— 拟合好不代表预测准。正确做法是:
第一,把数据分成两部分:前面大部分做训练集(用来建模),最后面的 5-10 期做测试集(用来验证预测效果);第二,用训练集拟合模型,预测测试集的时间段,再把预测值和真实值对比,计算误差。
3. 两个常用评价指标
第一是RMSE(均方根误差):预测值和真实值的平均偏差,数值越小越好,和数据单位一致;第二是MAPE(平均绝对百分比误差):百分比误差,数值越小越好,不受数据量级影响,不同模型之间可以直接对比。疾控场景一般认为,MAPE<10% 属于预测效果优秀,10%-20% 属于效果良好。
![]()
新手最容易踩的 3 个坑
第一,跳过第一步,直接建模:数据有缺失、时间不连续,甚至数据导入顺序错了,模型结果完全错误,还找不到原因;
第二,不做残差检验,拟合完就用:模型根本没把规律提取干净,预测结果完全不可靠;
第三,过度追求高阶模型:p 和 q 选到 5、6 阶,拟合效果看着好,实际预测严重过拟合,外推完全不准。疾控场景的绝大多数数据,p 和 q 都在 0-3 之间就足够。
理论流程我们已经全部串起来了,下一篇我们正式进入实操环节,手把手教大家用 R 语言跑通基础 ARIMA 模型。
所有代码逐行注释,适配疾控常用的周度、月度监测数据格式,复制粘贴就能跑出自己的第一个 ARIMA 模型。
参考:
《时间序列分析-基于R》. [M] .王燕.中国人民大学出版社出版
传染病预测预警技术及实践案例分析. [M]. 杨鹏, 王小莉. 人民卫生出版社
![]()
![]()
编辑:普通疾控人 | 审核:诗酒趁年华
文章来源 | 原创
说明 | 转载只为分享,如有侵权联系删除
©版权声明 | 部分信息和图片来自公开网络
转载请注明
再次转载请注明出处
![]()
科普健康 | 宣传疾控
本号为多位疾控机构从业者运营
重点关注国内外健康事件
致力于疾控科普
在做好科普服务大众的同时
做好疾控机构的宣传
让更多的人了解疾控,拥抱健康
欢迎加「小编」微信(cdcjkr126com)
本文具体说明
本文为原创内容,文章为个人理解所学,不涉及疫情信息及内部保密数据,发表的目的为自我总结及给有需求的人士学习使用。如有不妥之处,欢迎联系小编修改、删除。
更多精彩视频,尽在“CDC疾控人”视频号
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.