建模季节性的技术2025年7月14日 | 阅读10分钟 季节性是时间序列统计中一种常见的模式,通常由自然或人为活动驱动。准确地建模和考虑季节性对于提高金融、零售、医疗保健、天气科学等行业的预测和分析至关重要。季节性可以出现在各种时间尺度上,包括每日、每周、每月或每年,捕捉这些模式可以实现更精确的预测。在本文中,我们将探讨用于建模季节性的各种技术,从简单的分解到先进的机器学习方法。 1. 分解技术分解是一种分析时间序列数据的重要方法。它包括将时间序列分解为其核心组成部分——趋势、季节性和残差(或噪声)。这有助于分离和理解数据的基本结构,使其更容易建模和预测未来值。分解技术在处理季节性数据时特别有用,季节性数据中的周期性模式会随着时间重复出现。 主要的分解模型是加法模型和乘法模型,每种模型都根据季节性变化的性质来应用。让我们详细探讨这两种模型,以及一种称为 STL 分解的先进方法。 1)加法分解在加法分解中,时间序列的组成部分是相加的。当季节性变化随时间保持稳定时,该模型效果最佳,即波动的幅度不会随着数据水平的显著变化而变化。加法分解方法可以写为: Y(t) = Trend(t) + Seasonality(t) + Residual(t) 加法分解步骤
加法分解的优点
局限性 不适用于季节性波动幅度随时间增大或减小的情况。 2)乘法分解乘法模型假设季节性变化随趋势水平成比例变化。它适用于季节性模式随序列整体水平的增加而变得更加明显的时序数据。该模型表示为: Y(t) = Trend(t) × Seasonality(t) × Residual(t) 乘法分解步骤
乘法分解的优点
局限性 不适用于季节性影响恒定的序列(此时加法分解效果更好)。 3)STL 分解(使用 LOESS 的季节性趋势分解)STL 分解是一种更高级、更灵活的方法,可以处理加法和乘法季节性。STL 使用 LOESS(局部估计散点图平滑)来估计趋势和季节性分量。它对于具有传统分解技术可能难以处理的复杂时间序列数据特别鲁棒和适应性强。 STL 的主要特点
STL 分解步骤
STL 的优点
局限性 计算密集:与简单的加法或乘法分解方法相比,更复杂,需要更多的计算资源。 何时使用加法、乘法和 STL 分解
2. 季节性自回归积分移动平均模型 (SARIMA)季节性自回归积分移动平均模型 (SARIMA) 是流行的 ARIMA(自回归积分移动平均)模型的扩展,它将季节性纳入时间序列预测方法。虽然 ARIMA 在对时间序列数据中的非季节性趋势和模式进行建模方面非常有效,但它本身不考虑季节性波动。SARIMA 通过向 ARIMA 框架添加季节性项来解决此问题,使其成为具有季节性模式的时间序列数据的强大工具。 SARIMA 在数据显示周期性模式的场景中特别有用,例如零售销售在假期高峰期达到顶峰,夏季用电量增加,或一周内网站流量波动。在本文中,我们将深入探讨 SARIMA 的工作原理、其组成部分以及如何有效地应用它。 SARIMA 的组成部分SARIMA 将非季节性 ARIMA 模型与附加项相结合,以考虑季节性。SARIMA 的标准表示法为: SARIMA(p, d, q) (P, D, Q)s
构建和应用 SARIMA 的步骤步骤 1:使序列平稳 任何基于 ARIMA 的模型的第一步都是确保时间序列是平稳的,即它随时间具有恒定的均值、方差和自相关性。这可以通过以下方式实现:
步骤 2:识别模型参数 (p, d, q, P, D, Q) 下一步是为模型选择合适的参数。p、q、P 和 Q 的值可以从自相关函数 (ACF) 和偏自相关函数 (PACF) 图推断出来。
通过分析这些图,您可以确定 AR 和 MA 项中应包含多少个滞后。 步骤 3:拟合模型 确定参数后,就可以将 SARIMA 模型拟合到数据中。在 Python 中,可以使用 statsmodels 库中的 SARIMAX 等函数来实现。 步骤 4:验证模型 拟合模型后,通过以下方式测试其性能:
步骤 5:进行预测 模型验证后,可以用于预测未来值,同时考虑非季节性和季节性模式。 SARIMA 的优点
SARIMA 的局限性
3. 傅里叶变换傅里叶变换是一种强大的数学方法,用于将时间序列分解为其组成频率。它在分析周期性或循环模式方面非常强大,使其成为对时间序列数据中的季节性进行建模的理想工具。本质上,傅里叶变换允许我们将时间序列中复杂的重复模式表示为简单正弦和余弦波的总和,每个波都与特定的频率相关。 通过使用傅里叶变换,我们可以识别数据中主要的季节性周期,并捕获它们以实现更好的预测和分析。此技术对于具有多个季节性或季节性模式不完全规律的时间序列特别有用。 什么是傅里叶变换?傅里叶变换是一种数学函数,它将时域信号(如时间序列)转换为频域表示。在时间序列分析的背景下,它表征了构成数据周期性行为的频率分量。简单来说,它帮助您了解数据中存在哪些周期(季节性模式)以及这些周期的强度。 对于离散时间序列数据,我们使用离散傅里叶变换 (DFT),它对有限的采样数据而不是连续函数进行操作。 傅里叶变换如何捕获季节性时间序列数据中的季节性是指周期性模式或周期。这些模式在特定周期(例如,每日、每月、每年)内重复出现,而傅里叶变换在识别这些重复频率方面非常出色。通过将时间序列从时域转换为频域,傅里叶变换识别出数据中最突出的频率(周期)。 使用傅里叶变换对季节性进行建模的步骤
滞后特征 滞后特征是指使用目标变量的过去值作为预测变量。例如,如果数据中存在已知的 12 个月季节性,您可以创建滞后特征,如 Yt-12 或 Yt-24,其中 Yt-12 表示前一年同一时期。此技术在使用机器学习模型时特别有用,例如:
通过创建滞后特征,这些模型可以有效地捕获周期性模式(季节性),而无需依赖领域知识。 4. 状态空间模型状态空间模型为对具有随时间演变的潜在状态变量的时间序列进行建模提供了一个灵活的框架。两个常见的类型包括:
这些模型在处理具有多个季节性成分或其他结构复杂性的时间序列方面非常灵活和强大。 5. ProphetProphet 由 Facebook 开发,是一个开源预测工具,专门用于处理具有强季节性模式的时间序列。它易于使用,并且对异常值和缺失数据具有鲁棒性。Prophet 自动检测并考虑多个季节性,包括:
Prophet 很灵活,并允许用户添加自定义季节性,这对于需要对复杂季节性模式进行建模的业务应用很有用。 6. 高斯过程 (GP)高斯过程 (GPs) 是非参数模型,可以通过定义周期性核函数(如 RBF(径向基函数)或周期核)来捕获复杂的季节性。GPs 适用于较小的数据集,并允许预测中的不确定性估计。 它们非常灵活,允许处理非线性和时变的季节性模式。但是,与较简单的模型相比,它们需要更多的计算资源,尤其是在数据集不断增长的情况下。 7. 神经网络神经网络,尤其是循环架构,是时间序列预测的强大工具。一些常见模型包括:
这些模型在捕获顺序依赖性(如季节性)方面表现出色。当季节性是非线性或复杂的时,神经网络可以从大型数据集中学习较简单模型可能会遗漏的模式。但是,它们通常需要大量数据和计算资源才能有效训练。 8. TBATS 和 BATS 模型TBATS 和 BATS 模型专门用于处理复杂的季节性。
这些模型在存在多个或复杂季节性周期(例如,每周和年度周期)的情况下特别有效,并且它们为季节性时间序列预测提供了一种自动化解决方案。 下一主题 |
我们请求您订阅我们的新闻通讯以获取最新更新。