时间序列分析原理

news2024/11/15 17:35:05

一、定义

时间序列,是指将某种现象某一个统计指标在不同时间上的各个数值,按时间先后顺序排列而形成的序列
生活中各领域各行业有很多时间序列的数据,销售额,顾客数,访问量,股价,油价,GDP,气温。。。

二、平稳性

2.1 平稳性定义

平稳序列(stationary series)是基本上不存在趋势的序列。这类序列中的各观察值基本上在某个固定的水平上波动,虽然在不同的时间段波动的程度不同,但并不存在某种规律,其波动可以看成是随机的。

严平稳与弱平稳:

严平稳:严平稳表示的分布不随时间的改变而改变。
如:白噪声(正态),无论怎么取,都是期望为0,方差为1

白噪声序列的特点表现在任何两个时点的随机变量都不相关,序列中没有任何可以利用的动态规律,因此不能用历史数据对未来进行预测和推断。
定义:如果时间序列{εt,t=1,…,T}满足:
(1)E(εt)=0,Var(e)=σ2;
(2)对任意s≠t,εt和εs不相关,即E(εtεs)=0,
则称{εt,t=1,…,T}为白噪声序列,简称白噪声( white noise)。

宽平稳:期望与相关系数(依赖性)不变

未来某时刻的t的值Xt就要依赖于它的过去信息,所以需要依赖性

2.2平稳性的意义

预测经济系统(或其相关变量)的走势,是我们建立经济计量模型的主要目的。而基于随机变量的历史和现状来推测其未来,则是我们实施经济计量和预测的基本思路。这就需要假设随机变量的历史和现状具有代表性或可延续性。换句话说,随机变量的基本特性必须能在未来一个长时期里维持不变。否则,基于历史和现状来预测未来的思路便是错误的。

样本时间序列展现了随机变量的历史和现状,因此所谓随机变量基本性态的维持不变也就是要求样本数据时间序列的本质特征仍能延续到未来。

我们用样本时间序列的均值、方差、协(自)方差来刻画该样本时间序列的本质特征。于是,我们称这些统计量的取值在未来仍能保持不变的样本时间序列具有平稳性。可见,一个平稳的时间序列指的是:遥想未来所能获得的样本时间序列,我们能断定其均值、方差、协方差必定与眼下已获得的样本时间序列等同。也就是说,均值、方差、协方差必定为常数,不然就是不平稳的,即x和e无关,e服从标准正态分布。那么由此公式生成的时间序列就为非平稳序列。

三、单位根检验

3.1单位根定义

ADF检验全称是 Augmented Dickey-Fuller test,可以认为是一个自回归过程:
X t = α ∗ X t − 1 + e t X_t = \alpha*X_{t-1} +e_t Xt=αXt1+et,其中 r ( X , e ) = 0 , e ∼ N ( 0 , 1 ) r( X, e) = 0 , e\sim N(0,1) r(X,e)=0,eN(0,1)

  • 如果|a|<1,则上式为平稳序列
  • 如果|a|=1,就是单位根过程

当单位根存在时,自变量和因变量之间的关系具有欺骗性,因为残差序列的任何误差都不会随着样本量(即时期数)增大而衰减,也就是说模型中的残差的影响是永久的。这种回归又称作伪回归。如果单位根存在,这个过程就是一个随机漫步(random walk)。

我们用Python写个简单的函数来测试一下

def time_series(a,n):#a为系数,n为序列长度
    x = [0.0] * n #序列为n的数列
    x[0] = 0.0    #起始的数据定义为0
    for i in range(1,n):
        x[i] = a*x[i-1] + np.random.normal(0, 1, 1)#随机生成数据
    pd.DataFrame(x)[0].astype(float).plot(label = '%.2f,%d'%(a,n) ) 
    plt.legend(loc='best',fontsize = 30)
    return x       

我们先看当a<1时,

fig, ax = plt.subplots(figsize = (15,9))

plt.subplot(221)
x1=time_series(0.05,1000)

plt.subplot(222)
x1=time_series(0.5,1000)


plt.subplot(223)
x1=time_series(0.99,1000)


plt.subplot(224)
x1=time_series(0.99,10000)

在这里插入图片描述

  • 当a = 0.05时,我们可以发现生成的1000条数据基本上是在0为中心的附近上下波动,没有明显的趋势
  • 当a = 0.5时,我们可以发现生成的1000条数据基本上是在0为中心的附近上下波动,但是上下波动的范围明显要比a = 0.05时要大一些,但没有明显的趋势
  • 当a = 0.99时,我们可以发现生成的1000条数据已经开始有些上升的趋势了
  • 当a = 0.99,当我们把数据加大到10000条时,我们发现数据又呈现在0为中心的附近上下波动的平稳数据了,但是上下波动的范围明显要比a = 0.05时要大很多;

结论:
在a<1时

a越大,数据的波动范围越大

a越大, 时间序列的趋势性越强,回归到均值所需的时间越久.

只要 a<1 , 时间序列依然围绕均值0上下波动,只是波动范围越大,回到均值所用时间拉长而已.

我们先看当a=1时,

fig, ax = plt.subplots(figsize = (15,9))

plt.subplot(221)
x1=time_series(1,100)

plt.subplot(222)
x1=time_series(1,1000)


plt.subplot(223)
x1=time_series(1,5000)


plt.subplot(224)
x1=time_series(1,10000)

在这里插入图片描述
a=1时,数据会呈现明显的向上或者向下的趋势
无论时间多久,序列几乎不可能回到均值0, 这是非平稳时间序列的典型特征. 序列具有记忆性, 每次在新的起点上加入新的冲击,而历史冲击不会衰减.

序列越长,历史冲击的影响越来越小。 通过不同序列长度对比可知,正是这种历史冲击的影响差异,造成单位根过程无法回到均值附近。

结论:
记忆性越差,数据随机性越强,越能快速回到均值附近.

3.2 单位根检验

ADF检验就是判断序列是否存在单位根:如果序列平稳,就不存在单位根;否则,就会存在单位根。

ADF检验的 H0 假设就是存在单位根,如果得到的显著性检验统计量小于三个置信度(10%,5%,1%),则对应有(90%,95,99%)的把握来拒绝原假设。

我们使用statsmodels包里面的adfuller来进行检验
随机生成一组数据

x1=time_series(0.05,10000)

from statsmodels.tsa.stattools import adfuller
print(adfuller(x1))

在这里插入图片描述

(-69.12230006382143, 0.0, 1, 9998, {'1%': -3.431004228818807, '5%': -2.8618291302145686, '10%': -2.566923898875394}, 28018.032277372364)

第一部分是τ(tao)统计量的值。
第二部分是p_value的值。
第三部分是结果使用的延迟阶数。
第四部分是ADF回归和计算临界值所使用的观察次数。
第五部分是临界值。
第六部分是最大的信息准则的值(如果autolag 非空),也就是AIC或者BIC的值。
当我们看序列是否平稳的结果时,一般首先看第二部分的p_value值。如果p_value值比0.05小,证明有单位根,也就是说序列平稳。如果p_value比0.05大则证明非平稳。
源码里有一句note,如果p_value接近于0.05时,则要通过临界值进行判断。也就是说如果p_value接近于0.05就要通过第一部分τ(tao)统计量的值和第五部分的临界值进行对比。τ(tao)统计量的值比临界值小,就证明平稳,反之就是非平稳。我的检测结果τ(tao)统计量的值再临界值5%-10%之间。比5%的临界值大。这里的1%,5%,10%对应的是99%,95%,90%置信区间。
ADF检验只适合AR§模型。
且对方差齐性效果好,对异方差性效果不佳。异方差可用PP检验。

我们看到第二个值等于 0.0,小于0.05,所以不存在单位根,是平稳序列

我们生成的数据是a<1的,所以数据是平稳的

差分

定义:当前观察值中减去先前的观察值来执行求差。

差分是一种转换时间序列数据集的方法。它可以用来消除对时间的序列依赖性,即所谓的时间依赖性。这包括趋势和季节性等结构。

X = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
X_diff = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]

data = [i+1 for i in range(20)]
print(data)

plt.plot(data)
plt.show()

在这里插入图片描述
进行差分

x = pd.DataFrame(data).diff(1)
print(x.values)
pd.DataFrame(data).diff(1)[0].plot()

在这里插入图片描述
案例
我们生成一个a=1的序列

x1=time_series(1,10000)

from statsmodels.tsa.stattools import adfuller
print(adfuller(x1))

from statsmodels.tsa.stattools import adfuller
print(adfuller(x1))

(-0.11645535132862225, 0.947774650728789, 0, 9999, {'1%': -3.4310041633725734, '5%': -2.861829101294412, '10%': -2.566923883481157}, 28296.083771638478)

我们看到第二个值等于0.947774650728789,大于0.05,所以存在单位根,不平稳

所以接下来我们对原始数据做一阶差分

x1 =pd.DataFrame(x1).diff(1).dropna()
from statsmodels.tsa.stattools import adfuller
print(adfuller(x1))
(-99.2362102019425, 0.0, 0, 9998, {'1%': -3.431004228818807, '5%': -2.8618291302145686, '10%': -2.566923898875394}, 28290.18651394482)

我们看到第二个值等于 0.0,小于0.05,所以不存在单位根,是平稳序列

当我们的数据变成平稳序列后,就可以开始后面的预测分析了

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

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

相关文章

k8s 部署canal admin及server单机服务

目录 1. 前言 2. 部署canal-admin 2.1 数据库初始化 2.2 canal-admin k8s yaml部署文件 3. 部署canal-server单机 1. 前言 canal官方文档&#xff1a;https://github.com/alibaba/canal/wiki 主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费。…

一文读懂深度学习中文本处理的4种方式

一、序言文本处理方式是深度学习领域中自然语言处理的基础&#xff0c;即把文本转变成计算机识别的语言过程。转变之后才能用算法做后续的文本分析和理解。所以有必要了解文本处理的几种方式&#xff0c;做到对不同的场景采用不同的处理方式。常见的文本处理方式有独热编码(one…

OSI参考模型与TCP/IP模型比较

TCP/IP模型 — TCP/IP协议簇 TCP/IP分为两种体系结构&#xff0c;一种是分为四层网络接口层、网络层、传输层和应用层&#xff1b;另外一种是分为五层物理层、数据链路层、网络层、传输层和应用层。这两种体系结构都对。 TCP/IP四层模型 — TCP/IP标准模型 TCP/IP五层模型 — T…

hive数据仓库搭建

一、虚拟机安装CentOS7并配置共享文件夹 二、CentOS 7 上hadoop伪分布式搭建全流程完整教程 三、本机使用python操作hdfs搭建及常见问题 四、mapreduce搭建 五、mapper-reducer编程搭建 六、hive数据仓库安装 hive数据仓库搭建一、hive数据仓库安装1.1下载hive安装包1.2修改配置…

2022年亚太杯APMCM数学建模大赛C题全球是否变暖求解全过程文档及程序

2022年亚太杯APMCM数学建模大赛 C题 全球是否变暖 为方便各位阅览及了解掌握亚太杯的写作技巧&#xff0c;这里非技术使用中文&#xff0c;公式部分由于翻译过程繁琐使用英文来撰写此文章. 原题再现&#xff1a; 加拿大的49.6C创造了地球北纬50以上地区的气温新纪录&#xf…

SpringBoot的字符画(banner.txt)

好多小伙伴最近问我如何在启动项目的时候&#xff0c;在控制台打印如下的图案logo 其实很简单&#xff0c;Springboot提供了很方便的操作&#xff0c;在resource目录先新建一个banner.txt 然后将我们想要的图案拼接即可&#xff0c;如下图&#xff1a; 配置完成后正常启动项目…

TorchServe 详解:5 步将模型部署到生产环境

内容导读 TorchServe 自 2020 年 4 月推出至今&#xff0c;经历了 2 年多的发展&#xff0c;变得愈发成熟和稳定&#xff0c;本文将对 TorchServe 进行全面介绍。 TorchServe 是 PyTorch 中将模型部署到生产环境的首选解决方案。它是一个性能良好且可扩展的工具&#xff0c;用 …

【Java】多线程详解

目录 一、线程简介 进程&#xff08;Process &#xff09;与 线程&#xff08;Thread&#xff09; 二、线程创建 1、线程Thread 1.1. 步骤 1.2 应用 1.3 案例&#xff1a;下载图片 2、实现Runnable接口 2.1 步骤 2.2 应用 3.小结 3. 实现Callable接口&#xff08;了解…

利用Github账号实现(多个)个人网站

创建仓库 命名一定要是<username>.github.io这种形式username就是自己github账号的用户名。因为我已经有这个仓库&#xff0c;所以这里的报错可以忽略。 往仓库放入静态html文件 命名为index.html&#xff0c;随便放点内容。 在设置里面开启github page 这里可以选…

verilog学习笔记- 2)时序约束文件

目录 为什么要创建时序约束文件&#xff1f; 时序&#xff1a; 创建时序约束文件&#xff1a; 为什么要创建时序约束文件&#xff1f; 对于一些简单的工程时序的要求并不是特别的严格&#xff0c;添不添加时序约束文件影响不大。但是对于一些复杂的工程&#xff0c;涉及到高…

【SpringBoot应用篇】SpringBoot 启动扩展点/常用接口

【SpringBoot应用篇】SpringBoot 启动扩展点/常用接口SpringBoot常用的接口ApplicationContextInitializerBeanDefinitionRegistryPostProcessorBeanFactoryPostProcessorInstantiationAwareBeanPostProcessorSmartInstantiationAwareBeanPostProcessorBeanFactoryAwareApplica…

Dom 重点核心

关于dom操作&#xff0c;主要针对元素的操作。 主要有创建&#xff0c;增&#xff0c;删&#xff0c;改&#xff0c;查&#xff0c;属性操作&#xff0c;事件操作。 一、创建 1.document.write 2.innerHTML 3.createElement 二、增 1.appendChild&#xff08;在后面添加&am…

【iOS】块与大中枢派发

文章目录[TOC](文章目录)前言理解“块”这一概念块的基础知识块的内部结构全局块&#xff0c;栈块&#xff0c;堆块为常用的块类型创建typedef用handler块降低代码分散程度用块引用其所属对象时不要出现保留环多用派发系列&#xff0c;少用同步锁多用GCD&#xff0c;少用perfor…

Linux/ARM下QT MQTT库的编译安装

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦目录 一、 Linux 环境下编译安装 二、 ARM Linux 环境下安装 一、 Linux 环境下…

破解分布式光伏运维难题,光伏+屋面数字化监控融合是关键

2022年5月&#xff0c;在东南地区某城市一幢写字楼上&#xff0c;技术人员们正不辞辛苦爬上数十米高的墙面&#xff0c;对写字楼的屋面和墙面进行勘察。随后&#xff0c;他们准备赶在台风季来临之前完成该写字楼的建筑光伏一体化项目安装与部署。 这是森特士兴集团股份有限公司…

fixed:error:0308010C:digital envelope routines::unsupported

目录1.故障现场2. 问题分析3. 修复方案4. 参考文献1.故障现场 最近由于一些原因&#xff0c;从Mac OSX 迁移到 Windows 平台&#xff0c;在尝试运行基于vue-element-admin 项目时&#xff0c;发生了如下异常&#xff1a; error:0308010C:digital envelope routines::unsuppor…

MySQL的一些指令,函数以及关键字

这个里面我准备记录一些比较有意思的MySQL的指令和函数&#xff0c;当然使用函数的时候我们要注意&#xff0c;会不会因为函数导致不走索引&#xff0c;走全表扫描的情况。 因为对索引字段做函数操作&#xff0c;可能会破坏索引值的有序性&#xff0c;因此优化器就决定放弃走树…

导读:21 世纪中叶的精准肿瘤学奇点?循环肿瘤细胞和单细胞测序?

Tips: 组学时代的循环肿瘤细胞&#xff1a;我们离实现“奇点”还有多远&#xff1f;&#xff08;Br J Cancer&#xff0c;IF&#xff1a;9.075&#xff09;&#xff0c;原文链接: https://pubmed.ncbi.nlm.nih.gov/35273384/ 循环肿瘤细胞的生物学、脆弱性和临床应用&#xff0…

用javascript分类刷leetcode22.字典树(图文视频讲解)

目录 Trie树&#xff0c;即字典树&#xff0c;又称前缀树&#xff0c;是一种树形结构&#xff0c;典型应用是用于统计和排序大量的字符串&#xff08;但不限于字符串&#xff09;&#xff0c;所以经常被搜索引擎用于文本词频统计。它的优先是&#xff0c;最大限度的减少无谓的…

数据挖掘与机器学习作业_06 决策树

决策树 步骤 1.计算不纯度2.选取不纯度最高的特征进行分支3.计算不纯度4.继续划分 from sklearn import tree from sklearn.model_selection import GridSearchCV from sklearn.model_selection import cross_val_score from sklearn.model_selection import train_test_spl…