4、探索性数据分析(EDA):时间序列可视化、趋势与季节分解、相关性分析、自相关与偏自相关图、平稳性检验(ADF、KPSS)
探索性数据分析(EDA)是旅游需求预测建模的“体检报告”。在构建任何复杂模型(如SARIMA、Prophet或LSTM)之前,分析师必须通过可视化与统计检验,彻底理解历史预订量、游客到达数或酒店入住率的底层结构。旅游数据通常具有明显的年度季节性(如暑期高峰、春节黄金周)、趋势性(如目的地热度逐年上升)以及节假日脉冲效应。本章将系统讲解如何通过五类核心工具——时间序列可视化、趋势与季节分解、相关性分析、自相关/偏自相关图、平稳性检验——来识别这些特征,并为后续模型选择提供量化依据。
上图展示了EDA在旅游需求预测中的完整分析链路。从原始数据出发,先通过可视化与分解识别宏观特征,再通过相关性分析与ACF/PACF图挖掘变量间关系及序列内部动态结构,最后通过平稳性检验确定建模前提。整个过程并非一次性完成,而是需要根据检验结果反复迭代——例如,若ADF检验显示非平稳,则需要差分后再重新绘制ACF/PACF图。
4.1 核心原理:为什么旅游数据必须做EDA?
旅游需求数据具有三重复杂性:强季节性(寒暑假、黄金周)、趋势漂移(目的地生命周期)、外部冲击(疫情、天气、大型活动)。若跳过EDA直接建模,极易出现以下问题:
- 伪回归:非平稳序列之间可能呈现虚假的高相关性,导致回归模型R²虚高但预测失效。
- 阶数误判:无法确定SARIMA模型中的p、d、q及季节性周期P、D、Q。
- 特征冗余:未识别出与旅游需求高度相关的搜索指数、天气变量,或错误纳入共线性特征。
EDA的核心目标可归纳为:识别结构(趋势+季节+周期)、诊断噪声(异常点、缺失模式)、量化依赖(自相关、外生变量相关)、验证前提(平稳性)。
4.2 时间序列可视化:第一眼就要看出“故事”
可视化不是简单画折线图,而是要有目的地观察。对于旅游数据,建议按以下步骤操作:
- 多粒度绘制:分别绘制日、周、月粒度的游客量曲线,观察不同时间尺度的形态。日数据看节假日脉冲,月数据看年度季节轮廓。
- 叠加日历热力图:用热力图展示“年份×月份”或“星期×月份”的游客量矩阵,快速定位旺季月份与周末效应。
- 标注外部事件:在时间轴上用垂直线标记大型演唱会、体育赛事、疫情封控等事件,观察其影响幅度与恢复时长。
4.3 趋势与季节分解:拆解序列的隐藏组件
使用STL(Seasonal-Trend decomposition using Loess)或经典加法/乘法分解,将序列拆分为趋势项、季节项、残差项。旅游数据通常采用乘法模型(因为季节性波动幅度随趋势水平变化,如旺季游客量100万时波动±30%,淡季10万时波动±10%)。
| 分解方法 | 适用场景 | 输出组件 | 旅游数据注意点 |
|---|---|---|---|
| 加法分解 | 季节波动幅度恒定 | Y = T + S + R | 较少使用,旅游数据波动幅度通常随水平变化 |
| 乘法分解 | 季节波动随趋势变化 | Y = T × S × R | 常用,需先取对数转换为加法形式 |
| STL分解 | 鲁棒性强,处理异常值 | T、S、R(可加性) | 推荐,可控制季节平滑度,处理节假日效应 |
分解后的残差项是重点分析对象:若残差呈现明显模式(如周期性波动),说明分解不充分;若残差存在孤立尖峰,则对应异常事件(如台风导致景区关闭)。
4.4 相关性分析:寻找旅游需求的外生驱动力
旅游需求不仅依赖历史数据,还受搜索热度、航班运力、酒店价格、天气状况等外生变量影响。相关性分析需区分同期相关与滞后相关:
- 同期相关:计算游客量与当日天气、当日搜索指数的Pearson相关系数。注意:高相关不代表因果,需结合业务逻辑。
- 滞后相关:计算游客量与提前7天、14天、30天的搜索指数相关性。通常“提前搜索→后续预订”存在3-4周的领先-滞后关系。
4.5 自相关与偏自相关图:识别序列内部记忆
ACF(自相关函数)衡量序列与其滞后版本的相关性,PACF(偏自相关函数)则控制中间滞后项的影响。这两张图是ARIMA模型定阶的核心工具:
| 图形特征 | ACF表现 | PACF表现 | 模型判断 |
|---|---|---|---|
| AR(p)过程 | 拖尾(指数衰减或正弦波动) | p阶后截尾 | AR(2) 则 PACF在滞后2后突降为0 |
| MA(q)过程 | q阶后截尾 | 拖尾 | MA(1) 则 ACF在滞后1后突降为0 |
| ARMA(p,q) | 拖尾 | 拖尾 | 需结合信息准则(AIC/BIC)比较 |
| 季节性 | 在季节周期处(如12、24)出现显著峰值 | 季节滞后处显著 | 需引入季节性差分或SARIMA项 |
绘制ACF/PACF时,需注意置信区间(通常为±1.96/√N)。若某滞后阶的相关系数超出蓝线,则视为显著。旅游数据常呈现“日数据ACF在滞后7、14、21处显著为正”,提示存在周内季节效应。
4.6 平稳性检验:ADF与KPSS的互补使用
平稳性是经典时间序列建模的前提。严格平稳要求联合分布不随时间平移变化,实际中通常只需弱平稳(均值、方差恒定,自协方差仅与滞后阶数相关)。
ADF检验(Augmented Dickey-Fuller):原假设H₀为“序列存在单位根(非平稳)”。若p值<0.05,拒绝原假设,认为序列平稳。ADF对长滞后相关敏感,需手动指定最大滞后阶数。
KPSS检验(Kwiatkowski-Phillips-Schmidt-Shin):原假设H₀为“序列平稳(趋势平稳)”。若p值<0.05,拒绝原假设,认为序列非平稳。KPSS对趋势性更敏感。
| ADF结果 | KPSS结果 | 结论 | 处理方式 |
|---|---|---|---|
| 拒绝H₀(平稳) | 不拒绝H₀(平稳) | 平稳序列 | 直接建模 |
| 不拒绝H₀(非平稳) | 拒绝H₀(非平稳) | 非平稳 | 一阶差分后重新检验 |
| 拒绝H₀(平稳) | 拒绝H₀(非平稳) | 矛盾 | 可能为趋势平稳,需去趋势后检验 |
| 不拒绝H₀(非平稳) | 不拒绝H₀(平稳) | 矛盾 | 样本量不足或存在结构突变 |
旅游数据通常是非平稳的,因为存在长期增长趋势。但需注意:季节平稳与水平平稳不同。若序列围绕固定均值波动但具有年度季节性,则可通过季节差分(如12阶差分)实现平稳。
4.7 案例拆解:某主题公园月度游客量EDA全流程
背景与约束:某华东主题公园提供2018年1月至2023年12月共72个月度游客量数据(单位:万人次)。业务方希望预测未来12个月游客量,以规划淡季促销与人员排班。数据存在两个已知干扰:2020年2-4月因疫情闭园,2022年12月因新园区开业游客量激增。
初始现象:时间序列图显示明显的上升趋势(年均增长约8%),且每年7-8月出现高峰,1-2月为低谷。2020年3月数据为0(闭园),2022年12月数据为45万,远高于历史同期均值(25万)。
分析过程:
- 可视化:绘制月度曲线,标注疫情闭园期与新园区开业点。发现2020年缺失值需处理(不直接填充0,而是视为干预事件)。
- STL分解:采用乘法分解,趋势项显示2020年断崖后快速恢复,2022年底跳升;季节项显示8月为最高峰(季节因子1.35),1月最低(0.62)。残差项在2020年3月出现极端负值(-3.2),确认为异常干预。
- 相关性分析:引入当地天气温度、百度搜索指数“主题公园”作为外生变量。同期相关显示温度与游客量相关系数0.71,搜索指数(滞后30天)与游客量相关系数0.58。但偏相关分析控制温度后,搜索指数偏相关系数降至0.21,说明其增量解释力有限。
- ACF/PACF:对原始序列绘制ACF,显示在滞后12、24、36处有显著正峰值(季节效应),且衰减缓慢(趋势非平稳)。对一阶差分后序列绘制ACF,滞后12处仍显著(季节非平稳),故进行12阶季节差分。最终对“一阶差分+12阶季节差分”序列绘制ACF/PACF,ACF在滞后1处截尾,PACF在滞后1和12处显著,初步判断为SARIMA(1,1,0)(1,1,0)₁₂。
- 平稳性检验:原始序列ADF检验p=0.32(非平稳),KPSS p=0.01(非平稳)。一阶差分后ADF p=0.01(平稳),KPSS p=0.10(平稳)。季节差分后ADF p=0.001,KPSS p=0.5,确认序列平稳。
操作步骤与结果:基于上述EDA结论,构建SARIMA(1,1,0)(1,1,0)₁₂模型,并加入“疫情干预虚拟变量”(2020年2-4月=1,其余=0)和“新园区开业虚拟变量”(2022年12月及以后=1)。模型AIC=412.3,残差Ljung-Box检验p=0.28(无自相关)。预测2024年1-12月游客量,MAPE为9.7%,优于未做EDA的基准模型(MAPE=15.2%)。
风险与代价:干预变量的设置依赖业务判断,若未来出现类似“极端天气闭园”事件,模型无法自动识别。此外,新园区开业后的长期增长斜率是否持续,需要至少6个月新数据验证。
复盘经验:EDA的价值不仅在于定阶,更在于发现“2020年闭园”和“2022年新园区”两个关键干预点。若直接使用原始数据建模,模型会试图用季节项解释疫情低谷,导致季节因子被严重扭曲。
4.8 常见误区与总结复盘
误区2:对日粒度旅游数据直接做ACF/PACF,忽略“星期季节效应”。日数据需先检验滞后7、14、21的ACF,若显著,应使用SARIMA(...,7)或加入星期虚拟变量。
误区3:将缺失值直接填充为0或均值。旅游数据缺失通常对应闭园、系统故障等事件,应使用干预分析或插补法(如线性插值+事件标记)。
误区4:忽视相关性分析中的“共线性”。例如同时纳入“最高温度”和“平均温度”作为特征,会导致回归模型系数不稳定。
总结:EDA是旅游需求预测的“地基工程”。通过可视化建立直觉,通过分解分离结构,通过相关性筛选外生变量,通过ACF/PACF识别序列内部动态,通过ADF/KPSS确认平稳性——这五步环环相扣,缺一不可。建议分析师将EDA结果整理为一份“数据体检报告”,包含关键图表、检验统计量、干预事件清单,作为模型构建与业务沟通的共同依据。