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

        时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分,分别是描述过去、分析规律和预测未来,本讲将主要介绍时间序列分析中常用的三种模型:季节分解、指数平滑方法和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.rhkb.cn/news/237758.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第 5 章 栈

文章目录 5.1 栈的一个实际需求5.2 栈的介绍5.3 栈的应用场景5.4 栈的快速入门5.5 栈实现综合计算器(中缀表达式)5.6 逆波兰计算器5.7 中缀表达式转换为后缀表达式5.7.1 具体步骤如下5.7.2 举例说明5.7.3 代码实现中缀表达式转为后缀表达式 5.8 逆波兰计算器完整版5.8.1 完整版…

vue3 img图片怎么渲染

在 Vue3 中加载图片&#xff08;img&#xff09;src地址时&#xff0c;出现无法加载问题。网上很多都建议使用 require 加载相对路径&#xff0c;如下&#xff1a; <img :src"require(../assets/img/icon.jpg)"/>但是按照这种方式加载又会报错如下&#xff1a;…

设计模式之空对象模式

目录 1.简介 2.结构图 3.实例 4.优缺点 1.简介 空对象模式也是我们平时编程用的比较多的一种行为型设计模式&#xff0c;它的宗旨在解决空对象引起的异常报错问题&#xff1b;在空对象模式&#xff08;Null Object Pattern&#xff09;中&#xff0c;一个空对象取代 Null 对…

【数据库】聊聊MVCC机制与BufferPool缓存机制

上一篇文章&#xff0c;介绍了隔离级别&#xff0c;MySQL默认是使用可重复读&#xff0c;但是在可重复读的级别下&#xff0c;可能会出现幻读&#xff0c;也就是读取到另一个session添加的数据&#xff0c;那么除了配合使用间隙锁的方式&#xff0c;还使用了MVCC机制解决&#…

企业级大数据安全架构(三)修改集群节点hostname

作者&#xff1a;楼高 在后续安装FreeIPA的过程中&#xff0c;要求机器名必须包含完整的域名信息。如果之前在Ambari集群节点上的机器名不符合这个要求&#xff0c;可以按照以下步骤在Ambari上修改所有节点的机器名&#xff1a; 1.部署节点说明 本次测试是三台 ambari 节点&…

迅为RK3568开发板Android11/12/Linux编译驱动到内核

在平时的驱动开发中&#xff0c;经常需要在内核中配置某种功能&#xff0c;为了方便大家开发和学习&#xff0c;本小 节讲解如何在内核中添加驱动。具体的讲解原理讲解请参考本手册的驱动教程。 Android11 源码如果想要修改内核&#xff0c;可以运行以下命令进行修改: cd ke…

reactNative0.71版本的使用

开发环境配置 参考reactNative 官网 版本选中0.71 打包配置 1. IOS 打开项目 -> 进入ios目录->执行命令 pod install ->项目名称.xcworkspace -> 使用xcode打开->配置证书 证书配置截图如下 &#x1f4a1;tips&#xff1a;TARGETS目录下会有多个文件&#x…

计算机图形学流体模拟 blender 渲染脚本

做流体模拟的时候&#xff0c;想要复现别人的成果&#xff0c;但是别人的代码都是每帧输出 ply 格式的文件&#xff0c;渲染部分需要自己完成 看了一下&#xff0c;似乎用 blender 是最简单的&#xff0c;于是记录一下过程中用到的代码 Blender 版本 4.0 批量导入 ply 假设…

Hyperledger Fabric 通道配置文件解析

fabric 版本 v2.4.1 Fabric 网络是分布式系统&#xff0c;采用通道配置&#xff08;Channel Configuration&#xff09;来定义共享账本的各项行为。通道配置的管理对于网络功能至关重要。 通道配置一般包括通道全局配置、排序配置和应用配置等多个层级&#xff0c;这些配置都存…

在生产环境中使用uWSGI来运行Flask应用

安装uwsgi pip install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple安装不上则使用以下命令&#xff1a; conda install -c conda-forge uwsgi 当您成功安装uwsgi后&#xff0c;您可以通过以下步骤来测试uwsgi是否安装成功&#xff1a; 创建一个Python脚本&#xff…

Oracle11.2.0.4从RMAN备份中快速恢复单个表的方法

文章目录 前言一、查询所要恢复的表所涉及的表空间二、创建用于恢复的数据库三、恢复步骤1.恢复控制文件2.修改redo日志名称3.表空间恢复4.表空间recover5.查询数据 前言 由于用户误操作导致某表中的数据错乱&#xff0c;导致业务不能正常使用&#xff0c;现需要将该表恢复到一…

软件测试|MySQL BETWEEN AND:范围查询详解

简介 在MySQL数据库中&#xff0c;使用BETWEEN AND操作符可以进行范围查询&#xff0c;即根据某个字段的值在指定范围内进行检索数据。这个操作符非常有用&#xff0c;因为它可以让我们轻松地筛选出位于两个特定值之间的数据&#xff0c;而不需要使用复杂的条件语句。 BETWEE…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-8 状态观测器设计 Linear Observer Design

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-8 状态观测器设计 Linear Observer Design

金融帝国实验室(Capitalism Lab)V10版本游戏平衡性优化与改进

即将推出的V10版本中的各种游戏平衡性优化与改进&#xff1a; ————————————— 一、当玩家被提议收购一家即将破产的公司时&#xff0c;显示商业秘密。 当一家公司濒临破产&#xff0c;玩家被提议收购该公司时&#xff0c;如果玩家有兴趣评估该公司&#xff0c;则无…

鸿蒙开发-UI-布局

鸿蒙开发-序言 鸿蒙开发-工具 鸿蒙开发-初体验 鸿蒙开发-运行机制 鸿蒙开发-运行机制-Stage模型 鸿蒙开发-UI 鸿蒙开发-UI-组件 鸿蒙开发-UI-组件-状态管理 鸿蒙开发-UI-应用-状态管理 鸿蒙开发-UI-渲染控制 文章目录 前言 一、布局概述 1.布局结构 2.布局元素组成 3.布局分类 …

【数据结构】树和二叉树堆(基本概念介绍)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​ 目录 前言 树的概念 树的常见名词 树与…

【RV1126 学习】SDK/ U-Boot/kernel/rootfs 编译学习

文章目录 RV1126芯片介绍rv1126 模块代码目录相关说明 SDK 包下的脚本使用build.sh 脚本使用envsetup.sh 脚本使用mkfirmware.sh 脚本使用rkflash.sh 脚本使用 U-Boot 编译和配置uboot 的配置修改编译操作 kernel 的修改编译rootfs 编译和配置buildroot 配置busybox 配置 固件打…

MySQL主从复制配置(双主双从)

一、架构规划 一主多从可以缓解读的压力&#xff0c;但是如果主宕机了&#xff0c;所有从都不能写了&#xff0c;因此我们配置双主双从。 1、规划图 master1和master2互为主从关系&#xff0c;slave1是master1的从&#xff0c;slave2是master2的从。 2、环境准备 准备四台机…

LeetCode-1822/1502/896/13

1.数组元素积的符号&#xff08;1822&#xff09; 题目描述&#xff1a; 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。 如果 x 是负数&#xff0c;返回 -1 。 如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组…

c++多久会被Python或者新语言取代?

c多久会被Python或者新语言取代&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&am…