4. 海洋时间序列的平稳性与自相关分析
在海洋数据时间序列分析中,平稳性是一个绕不开的前提概念。所谓平稳,直观地说,就是序列的统计特征不随时间整体漂移:均值大致恒定、方差不随时间放大或收缩、自协方差只与时间间隔有关而与具体时刻无关。海平面异常(Sea Level Anomaly, SLA)序列往往同时叠加了季节性信号、长期趋势和低频振荡,直接送入ARIMA模型前,必须先判断它是否满足平稳性要求,否则模型阶数估计和预测区间都会失真。
需要强调的是,平稳性检验不是“做一次就完事”的步骤,而是决定后续建模路径的分岔点。若序列非平稳,通常先做差分;差分阶数 d 的确定,正是ARIMA中 d 参数的来源。因此本节把平稳性检验、ACF/PACF 计算和阶数判断放在同一条分析链上讲解。
一、两类检验:ADF 与 KPSS 的分工
ADF检验(Augmented Dickey-Fuller)的原假设是“序列存在单位根,即非平稳”。它的备择假设是序列平稳。因此 ADF 的 p 值越小,越倾向于拒绝非平稳,认为序列平稳。KPSS检验则相反,原假设是“序列平稳(趋势平稳或水平平稳)”,p 值越小越倾向于拒绝平稳。两者原假设方向相反,配合使用能有效避免单一检验的误判。
实际操作中常见的四种组合判断如下:ADF 拒绝且 KPSS 不拒绝,判为平稳;ADF 不拒绝且 KPSS 拒绝,判为非平稳,需要差分;两者都拒绝,说明序列可能含趋势或结构变化,需先去除趋势再检验;两者都不拒绝,样本信息不足,应结合图形和业务背景谨慎判断。这个判断逻辑是本节最值得先建立起来的框架。
二、用 Python 完成检验与 ACF/PACF 计算
下面以一段模拟的 SLA 月均序列为例(示例数据,非实测),演示完整流程。数据构造为“线性上升趋势 + 年周期正弦 + 噪声”,便于观察非平稳到平稳的变化。
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller, kpss
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
rng = np.random.default_rng(42)
t = np.arange(360) # 30 年 × 12 月
trend = 0.0025 * t # 缓慢上升趋势
season = 0.04 * np.sin(2 * np.pi * t / 12)
noise = rng.normal(0, 0.015, size=360)
sla = pd.Series(trend + season + noise,
index=pd.date_range("1993-01", periods=360, freq="MS"))
def report(x, name):
a_p = adfuller(x, autolag="AIC")[1]
k_p = kpss(x, regression="c", nlags="auto")[1]
print(f"{name}: ADF p={a_p:.4f}, KPSS p={k_p:.4f}")
report(sla, "原始序列")
report(sla.diff().dropna(), "一阶差分")
示例运行结果大致为:原始序列 ADF p≈0.62、KPSS p≈0.01,属于“ADF 不拒绝 + KPSS 拒绝”,判为非平稳;一阶差分后 ADF p≈0.001、KPSS p≈0.10,转为平稳,故取 d=1。注意 KPSS 的 p 值在超出查表范围时会被截断显示,解读时应结合统计量而非只看 p 值。
三、从 ACF/PACF 形态读阶数
对差分后的平稳序列绘制 ACF 与 PACF。经验判读规则是:ACF 在 q 阶后截尾、PACF 拖尾,提示 MA(q);PACF 在 p 阶后截尾、ACF 拖尾,提示 AR(p);两者都拖尾则考虑 ARMA。海洋SLA序列常因年周期残留而出现滞后12、24处的显著峰,这提示可在模型中引入季节项,或先做季节差分再判断。
d1 = sla.diff().dropna()
plot_acf(d1, lags=36)
plot_pacf(d1, lags=36, method="ywm")
若示例中 ACF 在滞后1处显著、随后快速衰减,PACF 在滞后1–2处显著后截断,则可初选 p=1~2、q=1,结合 d=1 得到 ARIMA(1,1,1) 或 ARIMA(2,1,1) 作为候选,再用 AIC/BIC 比较择优。需要提醒:ACF/PACF 只是初选工具,最终阶数应通过信息准则和残差白噪声检验确认,避免仅凭图形主观定阶。
把上述步骤串起来,本节的核心产出就是一张可复用的判断表:检验结论决定 d,ACF/PACF 形态给出 p、q 的初值,三者共同构成 ARIMA 阶数的起点。后续建模与诊断,都建立在这一步判断是否可靠之上。