3. 农业气象时序数据探索性分析

拿到一份逐日气温与降水数据后,直接建模往往为时过早。探索性分析(EDA)的任务是先看清数据“长什么样”:长期趋势是否显著、年内季节波动有多强、是否存在多年周期、序列自身前后是否相关、异常值出现在哪里。本节以某农业气象站 2015—2023 年逐日平均气温(℃)与日降水量(mm)为例(示例数据,用于说明方法),完成一份可复现的探索性分析报告。

一、数据准备与基本检查

逐日数据首先应确认时间轴连续、无重复日期、缺测已标记。气温与降水的统计性质差异很大:气温近似连续、量级稳定,适合直接做分解与自相关;降水为零膨胀序列(大量 0 值)、强偏态,通常先做聚合(如月累计)或变换(如 log1p)再分析。示例中先检查:9 年共 3287 天,气温缺测 12 天,降水缺测 5 天,缺测日用线性插值补齐气温、以 0 补齐降水并单独标记,避免插值掩盖真实干旱信息。

基本统计量用于建立量级直觉:示例气温均值约 14.8 ℃,年较差约 26 ℃(1 月最低、7 月最高);年降水量约 620 mm,其中 6—8 月占全年约 55%。这些数字决定了后续分解的周期参数与图形尺度。

二、趋势、季节性与周期性分解(STL)

STL(Seasonal-Trend decomposition using Loess)把序列拆为三部分:趋势项 T(低频变化)、季节项 S(固定周期内的重复模式)、余项 R(残差,含异常与随机波动),满足 Y = T + S + R。对逐日气温,季节周期取 365;对逐日降水,由于 0 值过多,建议先聚合为月降水再取周期 12,或对 log1p 后的日降水取周期 365。

关键参数有两个:seasonal(季节平滑窗口,需为奇数,日数据常取 365 或 731)与 trend(趋势平滑窗口,常取周期的 1.5~3 倍,如 1095)。窗口越大,曲线越平滑、越能突出长期趋势,但会削弱短期转折。示例中气温取 seasonal=365, trend=1095,用 R 的 stl() 或 Python 的 statsmodels.tsa.seasonal.STL 实现:

from statsmodels.tsa.seasonal import STL
res = STL(temp_series, period=365, seasonal=365, trend=1095, robust=True).fit()
res.trend; res.seasonal; res.resid

robust=True 很重要:它用稳健拟合降低极端高温、寒潮等异常点对趋势项的拉扯。分解后应重点读三件事:趋势项在 9 年间是否单调(示例升温约 0.4 ℃/10 年,属弱升温信号);季节项振幅是否稳定(示例夏冬振幅约 ±13 ℃,年际差异小);余项是否近似零均值白噪声,若余项在某时段连续偏正/偏负,说明趋势窗口设置不当或存在未建模的多年周期。

三、自相关与偏自相关分析

自相关函数 ACF 衡量序列与其滞后 k 期版本的相关程度,偏自相关函数 PACF 则在剔除中间滞后影响后衡量第 k 期的直接相关。对气温日序列,ACF 呈缓慢衰减并伴随约 365 天周期的振荡,说明强记忆性与强季节性;对降水日序列,ACF 在滞后 1 天后迅速接近 0,说明日降水近似无记忆,这正是“气温可平滑、降水难预测”的统计根源。

实操中先做差分再观察:对气温做一阶差分(去趋势)或季节差分(滞后 365),ACF 的缓慢衰减会明显减弱;对月降水做一阶季节差分后,若 ACF 在滞后 12 处仍有显著尖峰,提示存在年周期残留。判断显著性可看 95% 置信带(约 ±1.96/√n),示例日序列 n≈3287,带宽约 ±0.034,超出即视为显著。ACF/PACF 的截尾与拖尾形态,也是后续选择 ARIMA 阶数(p、q、P、Q)的直接依据。

四、可视化方法与结果判读

探索性分析的可视化应“一图一问题”:时序折线看整体走势与异常;STL 分解图看趋势与季节的分离效果;ACF/PACF 图看相关结构;箱线图或热力图看月份/年份的分布差异。下图给出本节分析流程与各环节的判读要点:

逐日气象数据 气温 ℃ / 降水 mm 2015—2023,n≈3287 数据检查 连续性 / 缺测 / 重复 降水零膨胀与偏态 STL 分解 period=365 / 12 robust=True,T+S+R ACF / PACF 差分后观察截尾/拖尾 95% 置信带 ±0.034 STL 分解结构示意(气温示例) 原始序列 Y 波动大 趋势项 T 弱升温 季节项 S 周期 365 余项 R 近白噪声 判读要点 趋势单调性 → 季节振幅稳定性 → 余项是否零均值白噪声 → ACF 衰减速度与周期峰 → 差分后是否消除记忆

读图时注意:趋势项若在末端突然上翘,多半是 STL 端点效应,应结合原始数据核对;季节项振幅若逐年变化,说明季节模式本身在漂移,需考虑动态季节模型;余项中连续同号段往往对应寒潮、干旱等真实事件,不应简单当作噪声剔除。

五、分析结论与报告要点

示例数据的探索性结论可归纳为:气温序列具有强年周期(振幅约 ±13 ℃)与弱升温趋势(约 0.4 ℃/10 年),日尺度 ACF 衰减慢、季节差分后趋于平稳,适合季节 ARIMA 或 STL 残差建模;降水序列零膨胀、日尺度近似无记忆,宜聚合到月尺度分析,月降水 ACF 在滞后 12 处显著,提示年周期主导。报告应同时给出图形与数值证据,并明确标注示例参数与假设,避免把演示结果当作实测结论。

探索性分析不是一次性步骤:建模后若残差 ACF 仍有显著尖峰,应回到本节重新检查周期参数、差分阶数与异常值处理,形成“分解—诊断—修正”的闭环。