0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时间序列分析的定义

数据分析与开发 来源:一个数据人的自留地 作者:数据人创作者联盟 2022-03-16 16:17 次阅读

01

时间序列分析的定义

1.1

概念

首先,时间序列定义为在一定时间间隔内按时间顺序测量的某个数量。时间序列分析是指将历史数据分解为四部分来看——趋势、周期、时期和不稳定因素,然后综合这些因素,提出预测。时间序列分为平稳序列和非平稳序列两大类。平稳序列是不存在趋势只存在随机性的序列,非平稳序列则是包含趋势、季节性和随机性的序列。

从最广泛的形式来说,时间序列分析是关于推断过去一系列数据点发生了什么,并试图预测未来会发生什么。时间序列分析试图了解过去并预测未来。

1.2

分类

通常,时间序列通常包含以下类型:

1、趋势-趋势是时间序列中一致的方向性运动。这些趋势将是确定性的或随机的。时间序列在长时间内呈现出来的长期上升或下降的变动;

2、季节性变化-许多时间序列都包含季节性变化。在代表业务销售或气候水平的系列中尤其如此。我们经常看到商品的季节性变化,特别是那些与生长季节或年度温度变化有关的商品(例如天然气)。

3、序列依赖性-时间序列(尤其是金融序列)最重要的特征之一就是序列相关性。当时间上相互靠近的时间序列观测值倾向于相互关联时,就会发生这种情况。

02

时间序列分析的步骤

时间序列预测的步骤是:

fe4a328e-9752-11ec-952b-dac502259ad0.jpg

在开始平稳性检验步骤之前,我首先想和大家分享的是平稳性检验的目的。平稳性检验为了确定没有随机趋势或确定趋势,否则将会产生“伪回归”问题.伪回归是说,有时数据的高度相关仅仅是因为二者同时随时间有向上或向下的变动趋势, 并没有真正联系.这样数据中的趋势项,季节项等无法消除, 从而在残差分析中无法准确进行分析。

2.1

平稳性检验

(一)图示法

平稳性指的是期望不变,方差恒定,协方差不随时间改变,协方差只依赖于K这个时间跨度,不依赖于时间点t本身。

fe63d856-9752-11ec-952b-dac502259ad0.jpgfe70d31c-9752-11ec-952b-dac502259ad0.jpgfe922b8e-9752-11ec-952b-dac502259ad0.jpg

给定这些假设前提的目的是便于后续技术上的处理。根据时序图粗略来判断序列是否平稳,平稳时序图的特征为围绕均值不断波动,而非平稳时序图表现为在不同时间段具有不同的均值。图a为平稳时序图,图b为非平稳时序图。

fea3d15e-9752-11ec-952b-dac502259ad0.jpg

然而仅依靠图像判断时间序列的平稳性,肯定是不精确的,因此需要进行单位根检验(DF检验和ADF检验)进一步判断。

(二)单位根检验

1、DF检验

fecc97ec-9752-11ec-952b-dac502259ad0.png

fee33434-9752-11ec-952b-dac502259ad0.png

(原假设 H0:序存在单位根 ,即参数δ=0)

检验时间序列的平稳性,一般可通过检验带有截距项的一阶自回归模型:

fef8d03c-9752-11ec-952b-dac502259ad0.png

对上式可通过进行普通最小二乘法的t检验完成(t检验的原假设:H0:βj=0。即若P值<0.05,则拒绝原假设,证明δ≠0,序列平稳。

2、ADF检验 因DF检验假设ut为白噪声,序列为一阶自回归的模型,但实际上随机干扰项并非为白噪声序列,且序列并非为一阶自回归生成,因此用普通最小二乘法进行估计的t统计量会受到无关参数的影响,导致DF检验无效。

如果时间序列包含有明显的随时间变化的某种趋势,DF检验必须保证能够剔除这种趋势,否则时间趋势的成分会进入ut,导致ut非白噪声序列,进而偏离了最初的假设。因此形成了ADF检验。ADF检验是由下面3个模型完成:

ff046ff0-9752-11ec-952b-dac502259ad0.png

其中t为时间变量,代表序列随时间变化的趋势。

模型的检验原理同DF检验,即t检验;检验顺序为(3)、(2)、(1);三个模型全部检验通过,才能证明该序列是平稳时间序列。

2.2

时间序列常见的三种模型

序列通过平稳性检验后,就可以建立时间序列模型了,当序列不平稳时,对序列进行差分或者取对数处理。对时序数据进行差分处理,例如在R语言的“diff”函数可确定(P值<0.05,则拒绝原假设,序列不存在单位根,经1阶差分后,序列平稳)。

对一个时间序列预处理后检验出该序列为平稳时间序列说明该模型有提取信息的价值,就要进行下一步的模型建立来拟合该模型然后做出预测。下面介绍拟合时间序列的三个重要模型。

(一)AR(p)模型

自回归模型(Autoregressive model,简称AR模型),用同一变数例如x的之前各期,亦即x1至xt-1来预测本期xt的表现,并假设它们为一次线性关系。因为这是从回归分析中的线性回归发展而来,只是不用x预测y,而是用x预测 x(自己);所以叫做自回归。

AR(p)模型简记形式如下: ff1bf1c0-9752-11ec-952b-dac502259ad0.png 其中p为自回归阶数。Φ0=0称为中心化AR(p)模型。p阶自回归模型的自相关系数拖尾,偏自相关系数p阶截尾。

(二)MA(q)模型 MA模型(moving average model)移动平均模型,简记形式如下:

ff37d048-9752-11ec-952b-dac502259ad0.png

其中q为移动平均的阶数。q阶移动平均模型自相关系数q阶截尾,偏自相关系数拖尾。

(三)ARMA(p,q)模型 自回归滑动平均模型(Autoregressive moving average model,简称:ARMA模型)。是研究时间序列的重要方法,由自回归模型(简称AR模型)与移动平均模型(简称MA模型)为基础“混合”构成。它比AR模型法与MA模型法估计更精确,但其参数估算比较繁琐。ARMA(p,q)模型简记形式如下:

ff46686a-9752-11ec-952b-dac502259ad0.png

当q=0时,ARMA(p,q)模型就退化成了AR(p)模型;

当p=0时,ARMA(p,q)模型就退化成了MA(q)模型;

ARMA(p,q)模型具有自相关系数不截尾,偏自相关系数也不截尾的性质。

2.3

模型的选择与定阶

了解了时间序列的三种常见模型后,应该如何选择模型并确定模型的阶数呢?通常使用ACF与PACF图判定法。

说到时间序列分析,一定离不开自相关函数(auto-correlation function,ACF)和偏自相关函数(Partial auto-correlation function,PACF),ACF可以提供具有滞后值的任何序列的自相关值。

简单来说,它描述了该序列的当前值与其过去的值之间的相关程度。时间序列可以包含趋势,季节性,周期性和残差等成分。ACF在寻找相关性时会考虑所有这些成分。直观上来说,ACF 描述了一个观测值和另一个观测值之间的自相关,包括直接和间接的相关性信息。

PACF可以提供残差(在去除了之前的滞后已经解释的影响之后仍然存在)与下一个滞后值的相关性。因此,如果残差中有任何可以由下一个滞后建模的隐藏信息,我们可能会获得良好的相关性,并且在建模时我们会将下一个滞后作为特征。

讨论完两个重要函数后,就成功了一半,接下来就是选择模型和确定阶数了,由此引入两个词:截尾和拖尾。

截尾是指时间序列的自相关函数(ACF)或偏自相关函数(PACF)在大于某个常数k后快速趋于0为k阶截尾;拖尾是ACF或PACF始终有非零取值,不会在k大于某个常数后就恒等于零(或在0附近随机波动)。趋于0在实际分析过程中通常被处理为在2倍标准差之内。

ff5ebab4-9752-11ec-952b-dac502259ad0.png

ff710ac0-9752-11ec-952b-dac502259ad0.png

以上面两张图为例,ACF拖尾,PACF一阶截尾,因此可以选择AR(1)模型进行拟合,说到模型拟合,各位统计学前辈早已为我们总结好以下规律:

ff84bc32-9752-11ec-952b-dac502259ad0.png

2.4

模型的确定与检验

通过以上内容,大家对时间序列的三种模型有了初步了解。那么应该如何确定最优模型呢?通常有以下几点:

(1)同一种模型,在尽可能描述数据信息的前提下选择低阶模型,阶数越高,模型会越复杂

(2)高阶AR(p)、MA(q)模型与较低阶ARMA(p,q)模型之间选择较低阶ARMA(p,q)模型

(3)合适模型的残差应满足均值为零的正态分布,而且任何滞后阶数的残差相关系数都为零。

接下来分享的是残差检验的方法:

方法一:通过绘制正态分布的QQ来检验:图像近似为过原点的一条直线,则残差服从正态分布且均值为零。该步骤可通过R语言的“qqnormt”函数实现。如下图:

ff973e34-9752-11ec-952b-dac502259ad0.jpg

方法二:通过R语言的“Box.test”函数实现该检验,若P>0.05,接受原假设,即任何滞后阶数的残差都不相关,残差检验通过。

03

示例分享

回到开头的例子,当小毛同学拿到数据后首先应该绘制销售额随时间变化的曲线,观察数据的整体趋势,如果有季节性趋势,应该利用差分或者移动平均的方法消除季节因素,接下来在消除增长趋势,然后利用单位根检验来检验数据的平稳性,最后利用数据的ACF和PACF函数确定阶数和模型。

其实在这一步有一种偷懒的办法就是利用R语言中的auto.arima”函数可自动筛选出p,q,但还是希望大家能够了解背后的逻辑。模型确定好之后可以利用R语言中的forecast函数预测未来N期的销量,至此小毛的预测工作终于可以告一段落了。

本次分享到此结束,欢迎大家批评指正~

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 序列
    +关注

    关注

    0

    文章

    70

    浏览量

    19464

原文标题:时间序列分析浅谈

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    时间序列分析的异常检测综述

    时间序列是在不同时点记录一个或多个变量值的数据。例如,每天访问网站的人数、每月城市的 average 温度、每小时的股票价格等。时间序列非常重要,因为它们允许我们
    的头像 发表于 03-11 09:36 246次阅读
    <b class='flag-5'>时间</b><b class='flag-5'>序列</b><b class='flag-5'>分析</b>的异常检测综述

    深度学习在时间序列预测的总结和未来方向分析

    2023年是大语言模型和稳定扩散的一年,时间序列领域虽然没有那么大的成就,但是却有缓慢而稳定的进展。Neurips、ICML和AAAI等会议都有transformer结构(BasisFormer
    的头像 发表于 02-24 08:26 383次阅读
    深度学习在<b class='flag-5'>时间</b><b class='flag-5'>序列</b>预测的总结和未来方向<b class='flag-5'>分析</b>

    脉冲信号和单位采样序列有何区别?

    脉冲信号和单位采样序列有何区别? 脉冲信号和单位采样序列是数字信号处理中两个重要的概念。在本文中,我们将详细介绍这两个概念的定义、特点以及它们之间的区别。 一、脉冲信号的定义和特点 脉
    的头像 发表于 02-06 09:25 474次阅读

    ICLR 2024高分投稿:用于一般时间序列分析的现代纯卷积结构

    这篇是 ICLR 上用 TCN 来做一般的时间序列分析的论文,在 Rebuttal 之后的分数为 888,算得上是时间序列领域相关的论文中最
    的头像 发表于 12-18 16:05 470次阅读
    ICLR 2024高分投稿:用于一般<b class='flag-5'>时间</b><b class='flag-5'>序列</b><b class='flag-5'>分析</b>的现代纯卷积结构

    准确的时间记录在时间序列数据分析中的重要性

    时间序列数据是一系列随时间间隔收集的数据点,使我们能够跟踪时间的变化。时间序列数据可以跟踪从毫秒
    的头像 发表于 11-09 09:18 411次阅读

    序列的z变换为什么会出现一对相互共轭的复数零点?

    。当对一个实序列进行Z变换时,通常会得到频域表示中的一对相互共轭的复数零点。 要理解为什么会在实序列的Z变换中存在一对相互共轭的复数零点,首先需要理解Z变换的定义和一些基本概念。 Z变换是一种将离散
    的头像 发表于 11-08 17:46 1863次阅读

    时间序列分析的四个基本Python库介绍

    在本文中,我们将介绍四个主要的Python库——statmodels、tslearn、tssearch、 tsfresh ——每个库都针对时间序列分析的不同方面进行了定制。这些库为从预测到模式识别
    的头像 发表于 11-03 10:17 351次阅读
    <b class='flag-5'>时间</b><b class='flag-5'>序列</b><b class='flag-5'>分析</b>的四个基本Python库介绍

    时间序列的基础模型像自然语言处理那样存在吗

    时间序列预测领域在最近的几年有着快速的发展,比如N-BEATS、N-HiTS、PatchTST和TimesNet。 大型语言模型(LLM)最近在ChatGPT等应用程序中变得非常流行,因为它们可以
    的头像 发表于 11-03 10:15 333次阅读
    <b class='flag-5'>时间</b><b class='flag-5'>序列</b>的基础模型像自然语言处理那样存在吗

    使用轮廓分数提升时间序列聚类的表现

    我们将使用轮廓分数和一些距离指标来执行时间序列聚类实验,并且进行可视化
    的头像 发表于 10-17 10:35 248次阅读
    使用轮廓分数提升<b class='flag-5'>时间</b><b class='flag-5'>序列</b>聚类的表现

    Python比较两个时间序列在图形上是否相似

    和谷值比较:通过比较两个时间序列中的峰值和谷值来进行比较。可以比较它们的幅度和位置。 相关性分析:计算两个时间序列之间的相关系数,从而确定它
    的头像 发表于 10-16 11:33 270次阅读

    如何使用Serde进行序列化和反序列

    Serde 是一个用于序列化和反序列化 Rust 数据结构的库。它支持 JSON、BSON、YAML 等多种格式,并且可以自定义序列化和反序列
    的头像 发表于 09-30 17:09 875次阅读

    如何使用SBC ToolBox云平台进行时间序列分析

    使用SBC ToolBox云平台时间序列分析模块探索基因集在不同时间点的表达趋势,使用c-means算法对基因集进行聚类分群,寻找出表达趋势一致的基因集。
    的头像 发表于 09-20 16:52 703次阅读
    如何使用SBC ToolBox云平台进行<b class='flag-5'>时间</b><b class='flag-5'>序列</b><b class='flag-5'>分析</b>?

    什么是序列化 为什么要序列

    什么是序列化? “序列化”(Serialization )的意思是将一个对象转化为字节流。 这里说的对象可以理解为“面向对象”里的那个对象,具体的就是存储在内存中的对象数据。 与之相反的过程是“反序列
    的头像 发表于 09-14 17:22 1568次阅读
    什么是<b class='flag-5'>序列</b>化 为什么要<b class='flag-5'>序列</b>化

    使用GPIO模拟ARGB2 LED时间序列并产生LED彩虹波效果

    : M251_M252_M254_M256_M258_Series_BSP_CMSIS_V3.02.001 硬件: NuMaker-M258KE Ver1.2 本样本代码使用 GPIO 模拟 ARGB2 LED 时间序列并产生 LED 彩虹波效果。 该代码
    发表于 08-29 07:25

    使用RAPID cuDF处理时间序列数据的常见步骤

    加速数据分析:使用 RAPID cuDF 进行更快的时间序列分析
    的头像 发表于 07-05 16:30 365次阅读