数学建模day15-时间序列分析

news2025/1/31 11:19:53

        时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分,分别是描述过去、分析规律和预测未来,本讲将主要介绍时间序列分析中常用的三种模型:季节分解、指数平滑方法和ARIMA模型,并将结合Spss软件对时间序列数据进行建模。

注:本文源于数学建模学习交流相关公众号观看学习视频后所作

时间序列

时间序列数据:

对同一对象在不同时间连续观察所取得的数据。

例如:
(1)从出生到现在,你的体重的数据(每年生日称一次)。
(2)中国历年来GDP的数据。
(3)在某地方每隔一小时测得的温度数据。


时间序列概念

        时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。

时间序列由两个组成要素构成:
(1)第一个要素是时间要素: 年、季度、月、周、日、小时、分钟、秒
(2)第二个要素是数值要素

时间序列根据时间和数值性质的不同,可以分为时期时间序列时点时间序列

时期序列中,数值要素反映现象在一定时期内发展的结果;
时点序列中,数值要素反映现象在一定时点上的瞬间水平。

区分时期和时点时间序列

例如:
(1)从出生到现在,你的体重的数据(每年生日称一次)。
(2)中国历年来GDP的数据。
(3)在某地方每隔一小时测得的温度数据。
                (1)和(3)是时点时间序列;(2)是时期时间序列

时期序列可加,时点序列不可加。

        时期序列中的观测值反映现象在一段时期内发展过程的总量,不同时期的观测值可以相加,相加结果表明现象在更长一段时间内的活动总量; 而时点序列中的观测值反映现象在某一瞬间上所达到的水平,不同时期的观测值不能相加,相加结果没有实际意义。
                                            (灰色预测模型里面有一个累加的过程)


时间序列分解

        因为时间序列是某个指标数值长期变化的数值表现,所以时间序列数值变化背后必然蕴含着数值变换的规律性,这些规律性就是时间序列分析的切入点。

一般情况下,时间序列的数值变化规律有以下四种:

一个时间序列往往是以上四类变化形式的叠加。

长期趋势:T

        长期趋势 (Secular trend,T) 指的是统计指标在相当长的一段时间内,受到长期趋势影响因素的影响,表现出持续上升或持续下降的趋势,通常用字母 T 表示。例如,随着国家经济的发展,人均收入将逐渐提升;随着医学水平的提高,新生儿死亡率在不断下降。

季节趋势:S

        季节趋势(Seasonal Variation,S)是指由于季节的转变使得指标数值发生周期性变动。这里的季节是广义的,一般以月、季、周为时间单位,不能以年作单位。例如雪糕和棉衣的销量都会随着季节气温的变化而周期变化。每年的长假(五一、十一、春节)都会引起出行人数的大量增加。

百度指数 (baidu.com)

循环变动:C

        循环变动(Cyclical Variation,C)与季节变动的周期不同,循环变动通常以若干年为周期,在曲线图上表现为波浪式的周期变动。这种周期变动的特征表现为增加和减少交替出现,但是并不具严格规则的周期性连续变动。最典型的周期案例就是市场经济的商业周期和的整个国家的经济周期。

不规则变动:I

        不规则变动(Irregular Variation,I)是由某些随机因素导致的数值变化,这些因素的作用是不可预知和没有规律性的,可以视为由于众多偶然因素对时间序列造成的影响(在回归中又被称为扰动项)。

        以上四种变动就是时间序列数值变化的分解结果。有时这些变动会同时出现在一个时间序列里面,有时也可能只出现一种或几种,这是由引起各种变动的影响因素决定的。正是由于变动组合的不确定性,时间序列的数值变化才那么千变万化。

四种变动与指标数值最终变动的关系可能是叠加关系,也可能是乘积关系。

叠加模型和乘积模型

(1)如果四种变动之间是相互独立的关系,那么叠加模型可以表示为:

(2)如果四种变动之间存在相互影响关系,那么应该使用乘积模型:

注意: 

(1)数据具有年内的周期性时才能使用时间序列分解,例如数据是月份数据(周期为12)、季度数据(周期为4) ,如果是年份数据则不行。
(2)在具体的时间序列图上,如果随着时间的推移,序列的季节波动变得越来越大,则反映各种变动之间的关系发生变化,建议使用乘积模型;反之,如果时间序列图的波动保持恒定,则可以直接使用叠加模型;当然,如果不存在季节波动,则两种分解均可以。


小例子

随着时间变化,搜索美赛数据的季节波动越来越大,那么使用乘积模型会更精确。

随着时间变化,销售数据的季节波动越来越大,那么使用乘积模型会更精确。

Spss操作

Spss处理时间序列中的缺失值

(1) 缺失值发生在时间序列的开头或者尾部,可采用直接删除的方法。
(2)缺失值发生在序列的中间位置,则不能删除(删除后原有的时间序列会错位),可采用替换缺失值的方法。

替换缺失值的五种方法


Spss定义时间变量

时间序列图(时序图)

季节性分解

结果解读

画出分解后的时序图


 时间序列分析

建立时间序列分析模型

指数平滑模型(Spss官方文档)


 

Simlpe模型

关于平滑系数𝛼的选取原则:
(1)如果时间序列具有不规则的起伏变化,但长期趋势接近一个稳定常数,α值一般较小(取0.05‐0.02之间)
(2)如果时间序列具有迅速明显的变化倾向,则α应该取较大值(取0.3‐0.5)
(3)如果时间序列变化缓慢,亦应选较小的值(一般在0.1‐0.4之间)实际上,Spss的专家建模如果选择了Simple模型用来估计,那么软件会帮我们自动选取一个适合的平滑系数使得预测误差最小。


简单指数平滑法预测


线性趋势模型(linear trend)

参考:7.2 Trend methods | Forecasting: Principles and Practice (2nd ed) (otexts.com)


阻尼趋势模型(Damped trend)


霍特趋势和阻尼趋势预测

7.2 Trend methods | Forecasting: Principles and Practice (2nd ed) (otexts.com)


简单季节性(Simple seasonal)

7.4 A taxonomy of exponential smoothing methods | Forecasting: Principles and Practice (2nd ed) (otexts.com)


温特加法模型(Winters' additive)

Forecasting: Principles and Practice (otexts.com)


温特乘法模型(Winters' multiplicative)

Forecasting: Principles and Practice (otexts.com)


温特加法和乘法预测

Forecasting: Principles and Practice (otexts.com)


一元时间序列分析的模型

        下面的这些概念只介绍一个大概,要完全弄懂还需要大家课后自己努力。如果实在学习这小部分有困难,大家可以选择放弃理论部分,不用细究每一个细节和概念,我们的重心可以放在运用上。

(1)平稳时间序列和白噪声序列
(2)差分方程和滞后算子
(3)AR模型
(4)MA模型
(5)ARMA模型
(6)ACF和PACF
(7)ARMA模型的估计
(8)AIC和BIC准则
(9)ARIMA模型
(10)SARIMA模型


时间序列的平稳性(stationary series)

一些时间序列的图形

差分方程

        将某个时间序列变量表示为该变量的滞后项、时间和其他变量的函数,这样的一个函数方程被称为差分方程

差分方程的齐次部分:只包含该变量自身和它的滞后项的式子。

差分方程的特征方程

差分方程的齐次部分:只包含该变量自身和它的滞后项的式子。

这p个解的模长(实根取绝对值,虚根取模)的大小决定了形为ARMA(p,q)模型的{y_{t}}是否平稳

滞后算子


MA模型、AR模型和ARMA(p,q)模型 

AR(p)模型(auto regressive)

AR(p)模型平稳的条件

小例子


 

MA(q)模型(moving average)

MA模型和AR模型的关系

MA(q)模型的平稳性

只要q是常数,那么MA(q)模型一定是平稳的。


 

ARMA(p,q)模型

        自回归移动平均模型(Autoregressive Moving Average,ARMA),就是设法将自回归过程AR和移动平均过程MA结合起来,共同模拟产生既有时间序列样本数据的那个随机过程的模型。

ARMA(p,q)模型的平稳性


ACF自相关系数

PACF偏自相关函数

AR(1)模型(系数符号相反)

Walter Enders《Applied Econometric Time Series Fourth Edition》

MA(1)和AR(2)模型

ARMA(1,1)模型和总结表格

ARMA模型的识别

        图1和图2上均有两条蓝色的线,其表示假设检验对应的上下临界值,如果自相关系数或偏自相关系数位于这两条线内,则认为它们与0没有显著的差异。

正确识别ARMA模型的阶数太难了

ARMA模型的估计

ARMA模型的极大似然估计:第四章 极大似然估计 - 百度文库 (baidu.com)


模型选择:AIC和BIC准则(选小原则)

        过拟合问题:加入的参数个数越多,模型拟合的效果越好,但这却是以提高模型复杂度为代价的。因此,模型选择要在模型复杂度与模型对数据的解释能力之间寻求最佳平衡。

AIC和BIC是选小原则,我们要选择使得AIC或BIC最小的模型。
(BIC对于模型的复杂程度的惩罚系数更大,因此BIC往往比AIC选择的模型更简洁)


检验模型是否识别完全

        估计完成时间序列模型后,我们需要对残差进行白噪声检验,如果残差是白噪声,则说明我们选取的模型能完全识别出时间序列数据的规律,即模型可接受;如果残差不是白噪声,则说明还有部分信息没有被模型所识别,我们需要修正模型来识别这一部分的信息。


 

ARIMA(p,d,q)模型

ARIMA(1,1,1)时间序列图

x <‐ arima.sim(list(order = c(1,1,1), ar = 0.6, ma=‐0.5), n = 100)

ARIMA(1,2,1)时间序列图

x <‐ arima.sim(list(order = c(1,2,1), ar = 0.6, ma=‐0.5), n = 100)


SARIMA(Seasonal ARIMA)模型

        到目前为止,我们只关注非季节性数据和非季节性ARIMA模型。然而,ARIMA模型也能够对广泛的季节数据进行建模。
        季节性ARIMA模型是通过在ARIMA模型中包含额外的季节性项而生成的,其形式如下:


Spss时间序列建模的思路

下面的步骤是自己在思考建模的过程,不是写在论文中的:

(1)处理数据的缺失值问题、生成时间变量并画出时间序列图;
(2)数据是否为季度数据或者月份数据(至少有两个完整的周期,即两年),如果是的话则要观察图形中是否存在季节性波动。
(3)根据时间序列图大致判断数据是否为平稳序列(数据围绕着均值上下波动,无趋势和季节性)
(4)打开Spss,分析‐‐时间序列预测—创建传统模型(高版本的Spss可能才有这个功能),看看Spss专家建模器得出的最优的模型类型。
(5)如果最后的结果是ARIMA(p,0,q)模型,那么我们就可以画出时间序列的样本ACF和PACF图形进行分析;如果得到的是ARIMA(p,1,q)模型,我们可以先对数据进行1阶差分后再用ACF和PACF图形分析;如果得到的结果与季节性相关,那么我们可以考虑使用时间序列分解。


例题1:销量数据预测

前期准备工作

下面的步骤是自己在思考建模的过程,不是写在论文中的:

(1)数据为季度数据(有四个周期),从图中看出也有季节性波动,即第二季度的销量较高,第四季度较低;
(2)根据时间序列图可知数据不平稳,有向上的趋势;
(3)Spss的专家建模给出的最合适的模型是温特加法模型;
(4)温特加法模型意味着原时间序列数据含有线性趋势和稳定的季节成分,我们可以使用加法时间序列分解;
(5)利用Spss我们可以对未来两年的销售数据进行预测。

Spss时间序列建模器

默认在所有的指数平滑模型和ARIMA模型中选择合适的模型。

自动检测异常值的方法

操作步骤

注:
(1)预测值和拟合值是不相同的,预测值是将样本外年份的数据带入模型计算得到的,而拟合值是将样本的年份重新带入模型计算得到的。
(2)这里保留残差的ACF和PACF图形可以帮助我们判断残差是否为白噪声,即该时间序列是否能被模型识别完全。

常用的评价指标

参数估计值表格

白噪声进行残差检验

预测的结果和效果图


例题2:人口数据预测

预测结果

残差的白噪声检验

预测效果图形


 

例题3:上证指数预测

直接进行专家建模的结果

剔除异常值后重新建模

预测效果


例题4:GDP增速预测

用所有数据进行预测(剔除异常值)

出错的原因

课后作业

结语

没有结语,挺多的今天,好好看好好学ヾ( ̄▽ ̄)Bye~Bye~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1383300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最小花费-银行转账-图的最短路-超详细解析注释

最小花费-银行转账-图的最短路-超详细解析注释 【题目描述】 在n个人中&#xff0c;某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费&#xff0c;请问A最少需要多少钱使得转账后B收到100元。 …

【Linux】Ubuntu 解压 zip、z01、z02等压缩文件的方法,Linux如何解压分卷压缩的

zip分卷压缩&#xff0c;在windows上压缩来的&#xff0c;如何解压这种文件&#xff1a; -rw-rw-r-- 1 20401094656 Dec 10 20:06 FFHQ.z01 -rw-rw-r-- 1 20401094656 Dec 10 20:10 FFHQ.z02 -rw-rw-r-- 1 20401094656 Dec 10 23:22 FFHQ.z03 -rw-rw-r-- 1 20401094656 Dec 10…

机器人跟踪性能量化指标

衡量机械臂关节轨迹跟踪控制的性能可以通过以下几个方面来进行&#xff1a; 跟踪精度&#xff1a;这是衡量机械臂关节轨迹跟踪控制性能的最重要的指标。它反映了机械臂实际运动轨迹与期望运动轨迹之间的偏差。跟踪精度越高&#xff0c;说明机械臂的控制性能越好。运动范围&…

设计模式——1_2 组合(Composite)

君子和而不同&#xff0c;小人同而不和 ——《论语》 文章目录 定义图纸一个例子&#xff1a;折算产品的成本BomMessageBomTree 写在后面的碎碎念职责分离非树状的组合模式组合和迭代器姑妄言之 定义 将对象组合成树状结构以表示“部分-整体”的层次结构。组合模式使得用户对单…

Python数据结构——字符串

目录 一、字符串的不变性 二、字符串的常见方法介绍 三、字符串对象的join()和split()方法 一、字符串的不变性 1、属于不可变对象&#xff0c;不能通过索引操作来改变字符串对象本身 s I like Python s[7] p 要修改字符串&#xff0c;需要使用字符串的replace()方法&am…

Python基础知识:整理16 使用pyecharts实现动态柱状图

1 基础柱状图的构建 from pyecharts.charts import Barbar Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) bar.ad…

一个用于批量给图片增加水印的Python库

本文推荐一个开源免费Python脚本&#xff0c;可以在指定目录及其子目录中批量给图像添加水印&#xff0c;当然&#xff0c;你也可以集成到你的Web应用中。 给图片、视频增加水印以确认版权或者增加效果&#xff0c;是在媒体内容信息经常需要用到的技术。本文推荐一个开源免费P…

Redis集群(主从复制)

主从复制&#xff1a;是指将一台 Redis 服务器的数据&#xff0c;复制到其他的 Redis 服务器。 前者称为主节点(master)&#xff0c;后者称为从节点(slave),数据的复制是单向的&#xff0c;只能 由主节点到从节点。 可以实现数据备份。即使当其中一台机器宕机其他机器还可以正…

如何运用AR技术提升制造效率?这里有答案!

当谈及AR技术在工业领域的应用&#xff0c;首先让人想到的是它为企业带来的巨大变革。从工业设计和制造到设备维护和维修&#xff0c;再到培训和技能传承以及设备操作和监测&#xff0c;AR技术凭借其独特的方式&#xff0c;帮助企业实现更高效的生产和运营。通过这些环节的优化…

office办公技能|word中的常见通配符使用

一、删除Word中含有指定内容的整行 操作方法&#xff1a; 1、快捷键 CtrlH&#xff0c;打开Word的查找替换窗口&#xff0c;单击【更多】按钮&#xff0c;勾选“使用通配符”。 2、在查找内容处&#xff0c;输入“替换内容*^13”&#xff0c;替换为处什么都不填。 3、单击【…

MySQL系列之数据导入导出

前言 大数据与云计算作为当今时代&#xff0c;数据要素发展的“动力引擎”&#xff0c;已经走进了社会生活的方方方面。而背后承载的云服务或数据服务的高效运转&#xff0c;起了决定作用。 作为数据存储的重要工具&#xff0c;数据库的品类和特性也日新月异。从树型、网络型…

第380场周赛挑战:二分,数位dp和KMP算法的综合运用

比赛地址 卡在第三题了&#xff0c;应该看看第4题kmp套模版的 一、最大频率元素计数 class Solution:def maxFrequencyElements(self, nums: List[int]) -> int:frequency {} # 哈希表用于统计频率max_freq 0 # 存储最大频率# 统计每个元素的频率for num in nums:i…

机器学习周报第28周

目录 摘要Abstract一、文献阅读1.题目&#xff1a;2.摘要3.问题描述4.过去方案5.论文方案6.论文模型7.相关代码 摘要 本周阅读了一篇混沌时间序列预测的论文&#xff0c;论文模型主要使用的是时间卷积网络&#xff08;Temporal Convolutional Network&#xff0c;TCN&#xff…

1.3K Star,让发送短信变的更简单

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;我的公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值。 前言 在日常的开发过程中&#xff0c;短信的发送经常使用&#xff08;尤其是中小型的外…

Java智能导诊系统 (3D人体导医)源码

智能导诊是一种利用人工智能技术来帮助患者进行自助问询及挂号服务的系统。通过智能导诊系统&#xff0c;患者可以输入自身疾病的症状表现&#xff0c;或选择身体部位&#xff0c;在系统的多维度计算下&#xff0c;系统会根据患者提供的信息精准推荐科室&#xff0c;并引导患者…

数据库备份脚本嘎嘎香,被秀到了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

c++qt-基本组件

1. Designer 设计师&#xff08;掌握&#xff09; Qt包含了一个Designer程序&#xff0c;用于通过可视化界面设计开发界面&#xff0c;保存的文件格式为.ui&#xff08;界面文件&#xff09;。界面文件内部使用xml语法的标签式语言。 在Qt Creator中创建项目时&#xff0c;选中…

r语言拟合曲线

r语言拟合曲线 #圆滑曲线 library(ggalt) library(ggplot2) df <- read.csv("lqs-1.csv",headerT) p2<-ggplot(datadf,aes(xx,yy))geom_point(size1) geom_smooth(span0.1)p2结果

Error: L6218E: Undefined symbol 系列错误汇总 (referred from main.o)

传送门 错误1&#xff1a; Undefined symbol(referred from main.o)错误2&#xff1a;Undefined_symbol _use_two_region memory 错误1&#xff1a; Undefined symbol(referred from main.o) Cube_GPIO\Cube_GPIO.axf: Error: L6218E: Undefined symbol LED_GPIO_Init (referr…