时间序列分析(二)——平稳性检验

此前篇章:

时间序列分析(一)——基础概念篇


一、相关知识点

为什么要进行平稳性检验?——进行平稳性检验是时间序列分析中的一个重要步骤,主要原因如下:

  • 经典统计模型的前提条件:许多经典的时间序列模型(如ARIMA、ARMA等)都假设数据是平稳的。如果数据不平稳,直接应用这些模型可能会导致模型参数估计不准确、预测结果不可靠。
  • 避免伪回归:在非平稳时间序列中,即使两个序列之间没有实际关系,也可能表现出显著的相关性,这种现象称为伪回归。例如,如果两个非平稳时间序列都具有相同的趋势,它们可能会表现出很高的相关性,但实际上这种相关性是虚假的。

矩:

  • 一阶矩:期望值(E[X]),描述分布的中心,可用于预测和决策。
  • 二阶矩:随机变量平方的期望(E[X2]),用于计算方差。
  • 二阶中心矩:方差,var(X),衡量离散程度,可用于风险评估和质量控制。

自协方差函数与自相关函数:

  • 自协方差函数:衡量时间序列在不同时间点的取值之间的协方差。对于时间序列 {Xt},自协方差函数的定义如下。

特别的,当k=0时,\gamma(0)=var(X_{t}) ,即时间序列的方差。

  • 自相关系数(ACF):自协方差函数的标准化形式,用于衡量时间序列在不同时间点的取值之间的线性相关性。定义如下。

 自协方差函数、自相关函数的应用:

  1. 描述时间序列的内部结构:帮助分析时间序列在不同时间点的取值之间的依赖关系。例如,如果 ρ(k) 在某个滞后 k 处显著不为零,说明时间序列在滞后 k 处存在相关性。
  2. 判断平稳性:对于平稳时间序列,自协方差和自相关只与滞后 k 有关,而与时间 t 无关。
  3. 模型识别、预测参考。

严平稳:严平稳要求时间序列的所有统计性质在时间平移下保持不变。严平稳的条件非常严格,实际中很难验证严平稳性,因为需要知道整个联合分布。 

宽平稳(也叫弱平稳):只要求时间序列的均值和自协方差在时间平移下保持不变。我们在分析时,通常只要求宽平稳,而不是严平稳。

宽平稳的条件,有3个:

  1. 均值恒定,是一个常数
  2. 方差恒定
  3. 自协方差只与时间间隔有关(与滞后k有关,而与t无关)

二、图检验(主观判断)

(一)时序图检验

时序图检验是平稳性检验的一种直观方法,通过绘制时间序列的图形来初步判断其是否平稳。只能靠主观初步判断平稳性。

横轴:时间

纵轴:观测值

判断:

  • 均值是否随时间变化(是否存在趋势)
  • 方差是否发生随时间变化(是否存在波动性变化)
  • 是否存在明显季节性

平稳时的特征:

  • 均值恒定:围绕一条水平线波动
  • 方差恒定:波动幅度大致相同
  • 无明显的趋势或季节性

非平稳时的特征:

  • 存在趋势:呈现明显的上升或下降趋势
  • 存在季节性:呈现周期性波动
  • 方差变化:序列的波动幅度随时间变化

趋势非平稳,图例如下:存在向下递减的趋势,故序列非平稳。

方差非平稳,图例如下:虽然均值大致相同(围绕一条线附近波动),但是波动幅度不一样,随时间推移,波动幅度越大。

季节性非平稳,图例如下: 均值大致相同,但是在数据在固定间隔(如每月或每两周)呈现周期性波动,数值在特定时间点重复上升或下降。

 趋势+季节性非平稳,图例如下 :

平稳,图例如下:序列大致围绕一条线附近波动,波动幅度大致相同,且不存在明显的上升或下降趋势,也不存在明显的季节性(固定间隔无明显周期性波动,比较杂乱),因此可以初步判断序列是平稳的(但不一定平稳,因为图检验方法是主观判断的)

 (二)自相关图检验

平稳序列

  • 如果时间序列是平稳的,自相关系数通常会迅速衰减,尤其是在较大的滞后期时,相关性趋于零。
  • 自相关图显示出大部分自相关系数都位于零附近,且不呈现明显的周期性或趋势。

趋势非平稳

  • 如果时间序列是非平稳的,尤其是具有趋势的非平稳序列,自相关系数通常会在较大的滞后期上仍然较高。这表明数据点之间有较强的依赖关系,序列存在较长时间的相关性。
  • 在具有趋势的序列中,自相关系数往往在滞后期较长时才逐渐衰减,而不是快速趋近于零。

季节性非平稳

  • 如果时间序列具有季节性,通常会看到自相关图在某些滞后期有显著的峰值。例如,如果数据具有年季节性,自相关系数可能会在12个月的滞后期上出现一个显著的周期性波动。

 三、单位跟检验

(一)ADF检验、PP检验

ADF检验是时间序列分析中用于检验平稳性的常用方法,通过构建回归模型来检测单位根,判断序列是否平稳。如果存在单位根,序列是非平稳的;反之,序列是平稳的。

原假设与备择假设

  • 原假设(H₀): 序列存在单位根(非平稳)。

  • 备择假设(H₁): 序列不存在单位根(平稳)。

ADF检验根据模型的形式分为三种(简单看看就行):

  • 无常数项和趋势项:

  •  有常数项,无趋势项:

  •  有常数项和趋势项:

其中:

  • yt:时间序列在时间点 t 的值。

  • Δyt:一阶差分,\Delta y_{t}=y_{t}-y_{t-1}​。

  • α:常数项(截距)。

  • βt:时间趋势项(可选)。

  • γ:滞后项的系数,用于检验单位根。

  • ϕi​:差分滞后项的系数,用于控制序列相关性。

  • ϵt​:误差项。

  • p:滞后阶数。

关键步骤:确定滞后阶数(p)。常用信息准则法(如AIC或BIC),选择使信息准则最小的 p;也可以用自相关函数(ACF)和偏自相关函数(PACF),通过观察ACF和PACF图确定滞后阶数。

关键代码(python):

from statsmodels.tsa.stattools import adfuller

result = adfuller(timeseries, autolag='AIC')  # 使用AIC自动选择滞后阶数

# 输出p值
p_value = result[1]

# 根据p值,是否拒绝原假设(95%置信度)
if result[1] < 0.05:
    print("拒绝原假设:时间序列是平稳的")
else:
    print("不可拒绝原假设:时间序列是非平稳的")

局限性:

  • 对小样本数据敏感
  • 预先假设误差项为正态分布
  • 对滞后长度选择敏感(ADF检验需要选择合适的滞后长度)
  • 对季节性或周期性数据不敏感:可能无法准确判断具有季节性或周期性的时间序列的平稳性

解决方法:结合其他检验方法,比如KPSS检验、pp检验


 PP检验与ADF检验类似,但允许误差项存在自相关和异方差。PP检验通过构建一个包含滞后项和差分的模型,来检验时间序列是否存在单位根。

原假设与备择假设:与ADF检验的假设相同。

关键代码:

from statsmodels.tsa.stattools import adfuller

result = result = pp_test(x)  # 使用AIC自动选择滞后阶数

# 输出p值
p_value = result[1]

# 根据p值,是否拒绝原假设(95%置信度)
if result[1] < 0.05:
    print("拒绝原假设:时间序列是平稳的")
else:
    print("不可拒绝原假设:时间序列是非平稳的")

 PP检验与ADF检验的适用场景:

  • ADF检验:适用于误差项独立同分布的情况。

  • PP检验:适用于误差项存在自相关或异方差的情况。

(二)KPSS检验

与ADF检验不同,KPSS检验的原假设是时间序列是平稳的,而备择假设是时间序列存在单位根(非平稳),当然检验方法也肯定不同。

原假设与备择假设

  • 原假设(H0):时间序列是平稳的。

  • 备择假设(H1):时间序列存在单位根,即非平稳

检验步骤:

  • 计算时间序列的累积偏差序列。

  • 基于累积偏差计算KPSS统计量。

  • 将统计量与临界值进行比较,判断是否拒绝原假设

KPSS检验的类型:

  • 水平KPSS检验:检验时间序列是否围绕一个固定水平波动。适用于检测均值平稳性。

  • 趋势KPSS检验:检验时间序列是否围绕一个线性趋势波动。适用于检测趋势平稳性。

关键代码:

from statsmodels.tsa.stattools import kpss

# 水平KPSS检验。regression用于选择模型。
result = kpss(series, regression='c')    # 'c'表示在KPSS检验中,回归模型包含常数项而无趋势项
print(f"P-Value: {result[1]:.4f}")

# 趋势KPSS检验
result1 = kpss(series, regression='c')    # 'c'表示在KPSS检验中,回归模型包含常数项和趋势项
print(f"P-Value: {result1[1]:.4f}")

# 也是根据p值判断是否拒绝原假设

要点

在进行平稳性检验时,可以先用图检验方法简单地直观判断,再决定是否要用统计方法检验(ADF检验等),进行更准确的判断,还有就是最好将ADF与KPSS检验结合在一起用,提高判断的准确度。

# 文章如有错误,欢迎大家指正。我们下期再见

<think>好的,用户让我详细介绍ES时序预测,也就是指数平滑法在时间序列预测中的应用。首先,我需要确认自己对ES的理解是否正确,以及是否有最新的方法需要补充。 首先,ES(Exponential Smoothing)是一种经典的时间序列预测方法,主要用于消除随机波动,捕捉趋势和季节性。用户可能想了解其基本原理、不同变体、应用场景以及实际操作步骤。可能需要区分一次、次、三次指数平滑,以及如何结合趋势和季节性成分。 接下来,我需要回忆ES的不同模型类型,比如简单指数平滑(SES)、Holt线性趋势模型、Holt-Winters季节性模型等。每个模型的适用情况不同,比如是否有趋势、是否有季节性因素。需要解释每个模型的公式,并确保使用正确的LaTeX格式,如用户要求的行内公式用$...$,独立公式用$$...$$。 用户提到需要结构清晰的回答,所以可能需要分步骤讲解,比如从模型原理到参数选择,再到实现步骤和优缺点。同时,要确保用中文,避免专业术语过于晦涩,必要时举例说明。 还要注意,用户可能关心实际应用中的问题,比如参数alpha的选择,如何初始化,模型评估指标(如MAE、RMSE)等。是否需要提到与ARIMA、Prophet等模型的对比?可能用户有对比的需求,但根据问题描述,重点在ES本身,所以可能简要带过即可。 另外,需要检查LaTeX语法的正确性,比如积分例子是否正确,但用户的问题是关于ES的,所以可能不需要涉及积分,但之前的例子可能有误导,需要专注于时间序列相关的公式。 可能的误区:ES和ARIMA的关系,比如ETS模型与ARIMA的对应关系。是否需要提及?可能对深入理解有帮助,但根据用户的问题,可能基础介绍更为合适。 最后,总结ES的优缺点,帮助用户判断何时使用ES比较合适。比如数据量小、趋势和季节性明显时,ES是一个轻量有效的选择,而复杂情况可能需要更复杂的模型。 现在需要组织这些思路,按照用户的要求分步骤详细说明,确保每个部分清晰,公式正确,语言准确。</think>### ES(指数平滑法)时序预测详解 #### 一、基本概念 **指数平滑法(Exponential Smoothing, ES)** 是一种基于加权平均的时间序列预测方法,其核心思想是**近期数据权重更高,远期数据权重按指数衰减**。适用于具有趋势或季节性的序列,且计算高效,适合短期预测。 --- #### 、核心模型分类 1. **简单指数平滑(Simple Exponential Smoothing, SES)** - **适用场景**:无趋势、无季节性的平稳序列。 - **公式**: $$ \hat{y}_{t+1} = \alpha y_t + (1-\alpha)\hat{y}_t $$ - $\alpha$(平滑系数,$0 \leq \alpha \leq 1$)控制历史权重衰减速度。 2. **Holt线性趋势模型(次指数平滑)** - **适用场景**:含线性趋势但无季节性的序列。 - **公式**: - 水平分量:$ \ell_t = \alpha y_t + (1-\alpha)(\ell_{t-1} + b_{t-1}) $ - 趋势分量:$ b_t = \beta (\ell_t - \ell_{t-1}) + (1-\beta)b_{t-1} $ - 预测:$ \hat{y}_{t+h} = \ell_t + h \cdot b_t $ - $\alpha$控制水平,$\beta$控制趋势。 3. **Holt-Winters季节性模型(三次指数平滑)** - **适用场景**:含趋势和季节性的序列。 - **加法模型**(季节性波动恒定): $$ \hat{y}_{t+h} = \ell_t + h \cdot b_t + s_{t+h-m(k+1)} $$ - **乘法模型**(季节性波动随趋势放大): $$ \hat{y}_{t+h} = (\ell_t + h \cdot b_t) \cdot s_{t+h-m(k+1)} $$ - $m$为季节周期长度,$s_t$为季节分量。 --- #### 三、参数选择与优化 1. **平滑系数($\alpha, \beta, \gamma$)** - 通过最小化预测误差(如MSE、MAE)优化。 - $\alpha$接近1:更重视近期数据;接近0:依赖历史数据。 2. **初始化方法** - 水平初始化:$\ell_1 = y_1$ - 趋势初始化:$b_1 = y_2 - y_1$ - 季节初始化:取首个周期的平均值。 --- #### 四、实现步骤 1. **数据预处理**:处理缺失值、异常值,必要时平稳化(如差分)。 2. **模型选择**: - 检验序列是否含趋势(ADF检验)或季节性(自相关图)。 3. **参数估计**: - 网格搜索法或优化算法(如L-BFGS-B)求解最优参数。 4. **模型评估**: - 使用交叉验证,计算RMSE、MAE等指标。 5. **预测与调优**: - 滚动预测并监控残差是否随机。 --- #### 五、优缺点分析 - **优点**: - 计算效率高,适合实时预测。 - 可解释性强,参数物理意义明确。 - 灵活支持趋势和季节性建模。 - **缺点**: - 对非线性趋势或复杂季节模式效果有限。 - 长期预测误差累积显著。 --- #### 六、应用场景 - **典型领域**:销售预测、库存管理、电力负荷预测。 - **数据要求**:序列长度≥2个周期,噪声适中。 --- #### 七、工具实现 - **Python**:`statsmodels`库(`ExponentialSmoothing`类) ```python from statsmodels.tsa.holtwinters import ExponentialSmoothing model = ExponentialSmoothing(data, trend='add', seasonal='mul', seasonal_periods=12) result = model.fit() forecast = result.forecast(steps=6) ``` --- #### 八、扩展:ETS模型 ES的统计框架扩展为**ETS(Error, Trend, Seasonality)**,涵盖15种组合(如`ETS(A,A,A)`为加法模型),提供更严格的统计推断。 --- **总结**:ES是轻量级时序预测的基石方法,理解其原理和变体可帮助快速应对业务需求,但在复杂场景下需结合深度学习(如LSTM)或集成模型(如Prophet)。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值