平稳性:为什么历史均值对你的预测有危险

发布: (2026年1月5日 GMT+8 05:18)
6 min read
原文: Dev.to

Source: Dev.to

摘要

在本文中,我们探讨了时间序列中的平稳性概念,如何使用扩展迪基‑富勒(ADF)检验来诊断随机趋势,以及如何在SARIMAX中设置积分参数(d)以避免全局均值偏差。

介绍

在商业世界中,人们对“平均值”有着强烈的吸引力。当一组利益相关者要求对2026年的预测时,许多分析师的第一直觉是计算2024/2025的平均值并向前投射。

如果你从事金融或电子商务的时间序列分析,这种做法通常是错误的。

原因在于 平稳性。如果一个指标具有强趋势(无论是上升还是下降),其均值和方差在时间上并不是常数。对具有趋势的序列使用全局平均进行预测会导致严重的预测误差。

在本文中,我展示了如何使用 Augmented Dickey‑Fuller (ADF) 检验在电子商务数据中诊断此问题,以及如何在 SARIMAX 模型中通过数学方式纠正它。

概念:单位根与平稳性

为了让 ARIMA 系列的预测模型表现良好,时间序列理想情况下需要是平稳的。

什么是平稳性?

当一个序列的统计属性——均值方差自相关——随时间保持不变时,该序列就是平稳的。它围绕一个固定值波动。

单位根问题

许多业务指标(如收入或价格)都具有我们所说的单位根。简而言之,这意味着序列具有强记忆性:今天的数值在很大程度上取决于昨天的数值,加上一个随机冲击。这种依赖性产生了一种随机趋势,使得序列会“漂移”(drift)远离历史均值。

如果你试图在具有单位根的序列上强行设定固定均值,你的模型将始终在“追赶”趋势,导致系统性错误。

O Diagnóstico: Teste Augmented Dickey‑Fuller (ADF)

Não confiamos apenas no “olhômetro”. Para validar se uma série é estacionária, usamos o teste ADF.

Como interpretar o teste

HipóteseDescrição
(H_0)序列具有单位根(平稳)。
(H_1)序列是平稳的。

Regra de decisão: 如果 p‑valor > 0.05,则不拒绝 (H_0)(序列非平稳)。如果 p‑valor ≤ 0.05,则拒绝 (H_0)(序列平稳)。

Exemplo de saída do teste:

Estatística ADF: -2.552426
p‑valor: 0.103234

[Image: Sessões – gráfico da série]

解决方案:SARIMAX 中的差分

一旦确定 p‑值 > 0.05,必须进行的技术修正是 差分(积分)

我们不是对绝对值 (Y_t) 建模,而是对当前值与前一个值的差进行建模:

[ \Delta Y_t = Y_t - Y_{t-1} ]

这将把具有趋势的序列转换为“变化”的平稳序列。

SARIMAX 实现

在 Python 中,无需手动创建差分列。SARIMAX 算法具有参数 order=(p, d, q),其中 d 是积分阶数。

基于上述 ADF 检验,我们定义建模策略:

from statsmodels.tsa.statespace.sarimax import SARIMAX

# Ticket Médio (não estacionário, p‑valor = 0.76) → d = 1
model_ticket = SARIMAX(
    df_main['ticket_medio'],
    order=(1, 1, 1),          # (p, d, q) – aqui d=1
    seasonal_order=(0, 0, 0, 0),
    enforce_stationarity=False,
    enforce_invertibility=False
)

result_ticket = model_ticket.fit(disp=False)
print(result_ticket.summary())

注: 根据自相关和偏自相关(ACF/PACF)分析,调整 pq(如有必要,还要调整 seasonal_order)的取值。

结论

  • 平稳性是 ARIMA 系列模型的基本前提。
  • ADF 检验可以快速诊断序列是否存在单位根。
  • 当序列不平稳时,差分(在 SARIMAX 中设置 d > 0)将序列转化为模型能够稳健学习的形式。

在电商指标上应用此流程,可避免全局均值的偏差,构建更可靠的未来预测。

model_ticket = SARIMAX(
    df_main['ticket_medio'],
    order=(1, 1, 1),                # (AR, Integração, MA)
    seasonal_order=(1, 1, 1, 52)    # Sazonalidade anual
)
  • 运行 ADF 检验:这是统计上稳健的方式来检查你的指标是否“被固定”在某个均值上或在漂移。
  • 查看 p 值:如果 p > 0.05,则你的序列 平稳。
  • 使用差分 (d=1):配置你的 ARIMA/SARIMAX 模型来预测变化,从而捕捉真实趋势。

进行应用数据科学就是确保模型的数学能够反映业务的经济现实。忽视非平稳性相当于用过去的静态照片来规划未来。

参考文献与书目

  • Introduction to Time Series and Forecasting (Brockwell & Davis) – 平稳性数学基础。
  • Statsmodels 文档 – Augmented Dickey‑Fuller。
  • Practical Statistics for Data Scientists (Bruce & Bruce) – 在数据科学中的统计概念实践应用。
Back to Blog

相关文章

阅读更多 »

第35天提升我的Data Science技能

最近,我注意到我的学习方式有些变化。我不再仅仅因为某件事能运行而感到兴奋。我更感兴趣的是它为什么能工作,以及会出现什么问题……

SEO 解释

!SEO 解释的封面图片https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazo...