【时间序列】时间序列基本概念总结

article/2025/8/18 21:01:01

最近一直在接触时间序列,所以打算写一些有关时间序列的文章,预测部分会从规则开始、到传统模型、到机器学习、再到深度学习,此外也会介绍一些时间序列的基本概念,包括自相关、平稳性、滞后性、季节性等。

1.基本概念

1.1 时间序列预测

预测是商业中的常见统计任务,它可以为生产、运输和人员安排等决策提供信息,并为长期战略规划提供指导。预测是指在考虑到所有可用信息的前提下,包括历史数据和可以影响预测的任何未来事件的知识,尽可能准确地预言。

而时间序列预测是指按照时间顺序观察事物的变换。通常会利用同一变量的历史值预测未来值,或者也可以加入一些预测因子来预测未来值。前者称为单变量时间序列预测,后者称为多变量时间序列预测。

通常我们指的时间序列预测都是考虑定期观察的时间序列(如每分、每小时、每天、每周等)。比较经典的案例有:降水量预测、销售预测、流量预测等。

1.2 时间序列成分

时间序列包含很多特征中包含诸多成分,有:

  • 趋势:指时间序列在较长一段时间内呈现出来的持续向上或者持续向下的变动;

  • 季节性:指时间序列在一年内重复出现的周期性波动,如气候条件、生产条件、节假日等;

  • 残差:也称为不规则波动,指除去趋势、季节性、周期性外的随机波动。不规则波动通常总是夹杂在时间序列中,致使时间序列产生一种波浪形或震荡式的变动。只含有随机波动的序列也称为平稳序列。

下图展示了一个时间序列被分解的过程,第一张图是所观察的时间序列,第二张图是趋势、第三张图是季节性,第四张图是残差:

(以上序列并不存在周期性,这里只是举个例子)

1.3 平稳性

1.3.1 类别

平稳性分为弱平稳和严平稳,我们分别给出定义:

  • 「弱平稳」:若序列 存在有限二阶矩。且满足

    则称序列 为弱平稳序列。

    • 与 t 无关;

    • 与 t 无关;

    • 与 t 无关;

  • 「严平稳」:对于所有可能的 n,所有可能的 ,和所有可能的 k,当 的联合分布与 的联合分布相同时,则序列是强平稳。

值得注意的是,「两种平稳过程并没有包含关系」,即弱平稳不一定是严平稳,严平稳也不一定是弱平稳。(感兴趣的可以自己查资料证明,这里不过多介绍)

由于严平稳的要求过于苛刻,所以我们所说的大部分时间序列预测都是弱平稳的时间序列。

1.3.2 为什么需要平稳性

那么我们为什么要关注序列的平稳性呢?

这是因为有些预测统计方法是以平稳序列为假设前提而进行设计的,比如自回归模型。其假设是变量的历史与现状呈现出基本特性,并在未来阶段的一个时间里会维持不变。

更具体的说,自回归预测模型的本质是“利用序列的滞后阶数(lags)作为自变量”的线性回归模型,比如 lags=2 表示使用变量的 t-1 和 t-2 时刻的值作为自变量来预测 t 时刻的值。那么通过在历史序列上训练模型后,得到的这个线性回归模型的各自变量的系数就代表了各滞后时刻的值与下一时刻值的相关性,如果时间序列接近平稳,这些相关性在未来一段时间内都不会有太大的变化,那么预测未来就成为了可能。

1.3.3 非平稳序列如何预测

对于非平稳时间序列的预测,我们需要将其变换为平稳时间序列,常用的方法有:

  • 差分(一阶/n 阶);

  • 取 log;

  • 开根号;

  • 时间序列分解。

一般来说,做个一阶差分就可以得到接近平稳的时间序列了,如果方差随时间变化较大,那么可以先取 log 再做一阶差分。如下图所示:上面两张图为非平稳的时间序列,经过一阶差分后便得到了相对平稳的时间序列。当然,经过二阶差分后,其效果会更好。

1.3.4 如何测试平稳性

判断一个序列是否是平稳的,除了通过肉眼判断和上面提到的定义外,还有两种比较科学的基于单位根检验的方法:

  • Augmented Dickey Fuller test (ADF Test):其零假设为序列有单位根,是非平稳的,P-Value如果小于显著级别(0.05),则可以拒绝零假设;

  • Kwiatkowski-Phillips-Schmidt-Shin – KPSS test (trend stationary):与 ADF 正好相反,零假设为序列是平稳的。另外,在 Python 中,可以通过指定 regression='ct' 参数来让 kps 把“确定性趋势(deterministic trend)”的序列认为是平稳的。

1.4 滞后算子

先给出定义:如果算子运算是将一个时间序列的前一期值转化为当期值,则称此算子为滞后算子,记做 L。即对任意时间序列 ,滞后算子满足:

类似也可以定义高阶滞后算子,例如二阶滞后算子为

高阶滞后算子有:

1.5 自相关函数

首先,我们先来介绍下相关系数,公式:

根据样本的估计得到公式:

可以看到,相关系数其实就是计算了向量空间中两个向量的夹角,而协方差是去均值后两个向量的内积。

如果两个向量平行,相关系数等于 1 或者 -1,垂直则为 0。

相关系数度量了两个向量的线性相关性,而在平稳时间序列 中,我们有时候很想知道, 与它的过去值 的线性相关性。这时候我们便把相关系数的概念推广到自相关系数。

的相关系数称为 的间隔为 l 的自相关系数,通常记为 。具体的:

这里用到了弱平稳序列的性质:

对一个平稳的时间序列的样本 ,1≤t≤T,则间隔为 l 的样本自相关系数的估计为:

则函数 称为 的样本自相关函数(ACF)。

假设现在有这样一个时间序列:

其自相关图为:

  • 自相关系数值随着滞后阶数增加而缓慢降低,是因为原时间序列中具有趋势变化;

  • 图中的“圆齿状”形状是来源于原时间序列中的季节性变化;

  • 蓝色虚线之内的区域自相关性可近似看做0。

1.6 白噪声

如果弱平稳序列额 满足 为白噪声序列。

如果随机变量序列 独立且期望和方差不随时间而变,则称 为独立白噪声。

如果独立白噪声还是同分布的,称为独立同分布白噪声。

简单来说“白噪声”是一个对所有时间其自相关系数为零的随机过程。下图展示了白噪声的例子:

其自相关系数为:

对于白噪声而言,我们期望它的自相关值接近 0。但是由于随机扰动的存在,自相关值并不会精确地等于 0。对于一个长度为 T 的白噪声序列而言,我们期望在 0.95 的置信度下,它的自相关值处于 之间。我们可以很容易的画出 ACF 的边界值(图中蓝色虚线)。如果一个序列中有较多的自相关值处于边界之外,那么该序列很可能不是白噪声序列。

在上例中,序列长度 T=50,边界为 。所有的自相关值均落在边界之内,证明序列是白噪声。

2.规则

在介绍模型之前,我们可以先简单了解一些时间序列的规则,一来可以快速上手作为 baseline,二来规则本身也可以作为模型的特征使用。

2.1 简单预测方法

  • 均值法:均值法很简单,即字面意思,利用历史的均值作为未来的预测值;

  • 季节性均值法:利用历史同期均值作为未来的预测值,一般效果会比均值法好很多;

  • 朴素法:即将最后一次观测值作为未来的预测值;

  • 季节性朴素法:利用同期最后一次观测值作为未来同期的预测值;

  • 漂移法:在起始观测值和最后一次观测值之间画一条连接线,延伸到预测时间点,作为预测值。

2.2 变换和调整

  • 「日历调整」:季节性数据中的某些变化可能是来自简单的日历效应。这种情况下,在拟合预测模型之前消除这些变化因素往往会使预测更简单。如每个月的牛奶产量,产量会随着季节性进行变化,但也会随着天数发生变化:

可以看到,日均产量图的季节性模式比月均产量图更简洁明了。日均产量图有效消除了不同月份天数不同造成的影响。简单的模式往往更易于建立模型并得出更精确的预测结果。对于交易天数随着月份改变的销售数据,我们可以做相似的调整。在这种情况下,可以用每个交易日的销量而非每月的总销量来建立模型。

  • 「人口调整」:任何受人口数量影响的数据都可以调整为人均数据,换句话说,考虑每人(或每千人,或每百万人)而非所有人。比如说研究医院的床位数随时间的变化,通过采用人均数据来消除人口数量变化的情况;

  • 「通膨调整」:受货币价值影响的数据在建立模型之前经过最好经过通胀调整;

  • 「数学变换」:数据波动范围会随着数据数值范围的变换而变大或者变小,此时可以进行些数学变换。一个比较经典方法是取对数。对数变换之所以有用,是因为其数值的变化与原始值的变化成正比,且幅度更小;此外也可以用幂变换。Box-Cox 变换既包含对数变换,又包含幂变换的依赖于参数 的变换族,定义如下:

Box-cox 变换中的对数变换通常以自然对数 e 为底,因此如果 λ=0,则进行自然对数变换,否则会进行幂变换,然后简单缩放。下图为某一事件序列:

时,整个时间序列范围内的周期性变化大小差不多相同,因此会让预测更加简单:

选择好变换后,我们还需要利用逆变换得到原始测度上的预测值,逆 Box-Cox 变换如下表示:

  • 「偏差调整」:使用 Box-Cox 变换来调整数据分布,其问题在于逆变换后得到的预测值不是预测分布的平均值,而是预测分布的中位数。很多情况下这可以接受,但有时的的确确需要预测均值。此时,就需要调整一下逆变换,以得到逆变换的均值:

是 h 步预测方差,预测方差越大,均值和中位数之间的差异越大。

简单逆变换和逆变换的均值之间的差异,我们称之为偏差(Bias)。当我们需要用均值而非中位数时,称预测点是经过“偏差调整”(Bias-adjusted)的。下图展示了两者的区别:

其中,蓝线表示预测值中位数,红色线表示预测值均值,

2.3 周期因子法

这里主要想着重介绍一下周期因子法。

周期因子法很简单,我们先来看一段数据:

可以看到起明显具有周期性。而预测的核心任务便是尽可能准确的提取这种周期性。所以我们:

  • 首先除以周均值得到一个比值;

  • 然后按列去中位数,得到一组鲁棒的周期因子。

做预测时只需要将周期因子乘以一个 base,便可作为下一周的预测。比如我们取最后一周的平均客流量 100 作为 base,那么我们直接乘上周期因子,就得到下一周的预测:

这里只拿了三周来举例。实际应用当然要取更长的时段啦。具体取几周以测试集的效果来确定。

按列提取中位数是一种简单而有效的提取周期因子的方法。中位数十分鲁棒,不受极端值的影响。但中位数损失了很多信息。实践中,可以在此基础上进一步优化。比如可以提取一个均值和一个中位数,然后将均值和中位数融合。融合的比例按照测试集的表现来确定。也可以根据与预测周的时间距离来赋予不同的权重。

除了对周期因子进行优化外,我们还可以针对 Base 进行优化。

直接用最后一周的平均客流量作为base并不一定是最好的方法。也许最后三天或最后五天的均值能更好的反映最新的情况。但是,我们不能直接对最后三天客流量取均值(最后三天是周末,这样取的base就偏大了)。需要去掉周期性因素后,再取平均。具体做法,就是用客流量除以周期因子。

这样我们就可以取最后三天的平均,(108+91.4+120)/3=106.5,作为 base。具体取多少天的,也要通过测试集的表现来确定。当然也可以按某些函数形式来给每天赋予不同的权重。

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步


http://chatgpt.dhexx.cn/article/jL1ec2xh.shtml

相关文章

备战数学建模35-时间序列预测模型

目录 一、时间序列概念与分解模型 1-时间序列数据与基本概念 2-时间序列分解 二、SPSS中七种指数平滑模型 1-七种指数平滑模型简介 2-七种指数平滑模型具体分析 三、ARIMA模型相关的知识点 四、时间序列模型经典案例 1-时间序列建模思路介绍 2-案例1销售数据预测 3-…

【时间序列】最完整的时间序列分析和预测(含实例及代码)

时间序列 在生产和科学研究中,对某一个或者一组变量 进行观察测量,将在一系列时刻所得到的离散数字组成的序列集合,称之为时间序列。 pandas生成时间序列过滤数据重采样插值滑窗数据平稳性与差分法 pandas生成时间序列 时间戳(ti…

UCF 2021 Qualifying - H . Time to Eat + UCF HSPT 2020 - E . Use Giant Fans to Deal With Hurricanes?

题目: H . Time to Eat [ 问题 8933 ] [ 讨论 ] Description The UCF Programming Team has made it to the World Contest Finals (WF), thanks to the great team members and coaches. Fortunately for Dr. Orooji (Team Faculty Advisor), WF is in a city wit…

MTU

MTU 是出接口方向的MTU值,跟入接口方向无关。 MTU 是双方向的,也就是说两个方向的数据流可以有不同的MTU值。 在实施中遇到这么个问题: 用户在BigIP的VLAN设置中修改了MTU值,并保存。但系统重启后,这个值又恢复为原来的默认值了。 有兄弟遇到过么?望指点一二。 [ 本帖最…

Mahout学习

Mahout学习 Mahout学习(主要学习内容是Mahout中推荐部分的ItemCF、UserCF、Hadoop集群部署运行) 1、Mahout是什么? Mahout是一个算法库,集成了很多算法。 Apache Mahout 是 Apache Software Foundation(ASF)旗下的…

metahuman 简介

目录 metahuman 简介 metahuman是什么登陆metahuman人物导出 metahuman 简介 metahuman是什么 是一个像游戏的捏脸软件,是云端的。在开始之前我们需要注册一个epic的账号 epic是一个白嫖游戏的网页,引擎,商城,metahuman都是他们做…

CTFHub | .htaccess

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

C++手敲基于梯度图和像素数量数组的OTSU阈值分割

一、OTSU算法原理 ➢OTSU法(最大类间方差法,有时也称之为大津算法) ➢ 使用聚类的思想,把图像的灰度数按灰度级分成2个部分, 使得两个部分之间的灰度值差异最大,每个部分之间的灰 度差异最小 ➢ 通过方差…

Otsu图像分割

opencv自带Otsu算法,只需要在分割时将参数选择为“cv2.THRESH_OTSU”即可 #coding:utf-8 import cv2 import numpy as np from matplotlib import pyplot as pltimage cv2.imread(E:/shale10053.bmp) grayimage cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) gray c…

OpenCV中图像的自适应处理、Otsu方法讲解与实战(附Python源码)

需要源码请点赞关注收藏后评论区留言私信~~~ 一、自适应处理 很多时候图像色彩是不均衡的,如果只使用一种阈值处理类型,就无法得到清晰有效的结果 下面使用五种常用的阈值处理类型对色彩不均衡的图像进行处理 代码如下 import cv2image cv2.imread(&…

图像分割 - 阈值处理 - 多阈值处理(OTSU)

目录 1. 多阈值处理介绍 2. 代码讲解 3. 完整代码 1. 多阈值处理介绍 之前介绍的都是全局单个阈值对图像的分割。固定阈值法,阈值是人工根据灰度直方图的波谷进行设置的。全局阈值法,根据不停的迭代两个区域间的平均灰度进行分割。OUST最大类间方差法…

otsu算法详细推导、实现及Multi Level OTSU算法实现

otsu算法详细推导、实现及Multi Level OTSU算法实现 微信公众号:幼儿园的学霸 目录 文章目录 otsu算法详细推导、实现及Multi Level OTSU算法实现目录简介推导及实现常规推导算法步骤及实现步骤实现 从概率的角度解释推导实现 扩展-MultiLevel OTSU延伸思考算法评价…

OTSU算法及其改进算法学习

这篇文章还是来自斯坦福课后作业hw2_3,主要是结合一个例子介绍otsu算法【亦称为大律算法,小日本】及其改进算法。 本文将先介绍老外的题目、解题思路及maltab解答,然后分析otsu算法步骤,末了给出opencv实现。 老外的题目&#xff…

Otsu Thresholding

1. Otsu Thresholding Explained Otsu对image中的所有像素都假定为阈值,然后根据此值将image分为前景物体和背景;遍历所有像素值 计算类内方差,最小的类内方差对应的threshold即为最优阈值; 以6阶灰度图像为例 A 6-level greys…

Otsu算法原理及实现

在图像处理中Otsu方法,是以 Nobuyuki otsu 的名字命名的(日本人,大津展之),常用于基于图像分割的聚类。该算法的理论依据是:假定图像包含两类像素(前景像素和背景像素),直…

10 Otsu 算法

文章目录 前言一、Otsu 是什么?二、算法实验1.使用第三方库2.不使用第三方库 前言 Otsu 是一种利用图像的灰度特征自动计算二值化阈值的方法,常被称为 Otsu 自动阈值法。 使用 Otsu 方法可以避免主观性和繁琐性的阈值选取操作,并能够在一定…

OTSU(最大类间方差法、大津算法)

OTSU是阈值分割中一种常用的算法,它可以根据图像自动生成最佳分割阈值。OTSU的核心思想是类间方差最大化。 import cv2 import numpy as np from matplotlib import pyplot as pltimage cv2.imread("2.bmp") gray cv2.cvtColor(image, cv2.COLOR_BGR2G…

Bootstrap模态框里 再弹模态框

Bootstrap模态框里 再弹模态框 后端代码点击编辑 按钮 将参数赋值隐藏 input 中 , 便于修改 获取对应id修改模态框详情模态框 后端代码 /*** 财务审核使用详情** param request* param id* return*/RequestMapping(params "getUseDatil")ResponseBodypublic JSONAr…

新增模态框

平时我们在VS中也常常会用到模态框,今天我们就来聊聊模态框,但是我要说的是新增模态框,而不是修改模态框喔。在书写模态框代码时,我们还要引用一个插件: 然后就可以进行对代码进行书写了。 我们先说说模态框插件的用法&#xff0c…

html模态框常见问题,模态框无法弹出的问题

问题起因: 昨晚写到了一个模态框,用到了bootstrap和jquery,依赖的js已经复制到项目中,并在Jsp页面上进行了引用,最初的引用如下: 问题描述: 模态框无法正常弹出,使用浏览器查看资源看…