ARIMA序列分析

1. 什么是平稳序列

(stationary series):基本上不存在趋势的序列,各观察值基本上在某个固定的水平上波动或虽有波动,但并不存在某种规律,而其波动可以看成是随机的。

 2. ARMA模型

ARIMA的优缺点

优点: 模型十分简单,只需要内生变量而不需要借助其他外生变量。(所谓内生变量指的应该是仅依赖于该数据本身,而不像回归需要其他变量)

缺点:

1.要求时序数据是稳定的(stationary),或者是通过差分化(differencing)后是稳定的。

2.本质上只能捕捉线性关系,而不能捕捉非线性关系。

ARIMA模型的几个特例

1.ARIMA(0,1,0) = random walk:

当d=1,p和q为0时,叫做random walk,每一个时刻的位置,只与上一时刻的位置有关。预测公式:Yt=μ+Yt−1

2.1 主要应用场合

平稳非白噪声的序列

2.2白噪声检查

lb=acorr_ljungbox(data.diff1.dropna(), lags = [i for i in range(1,12)],boxpierce=True)

LB检验P值均小于0.05,说明可以拒绝序列为白噪声的原假设,认为该数据不是随机数据,即该数据不是随机的,是有规律可循的,有分析价值。而序列X2的LB检验P值均大于0.05,说明该序列为白噪声,没有分析价值。

3. ACF、PACF

3.1 ACF

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

3.2 PACF

是部分自相关函数或者偏自相关函数。基本上,它不是找到像ACF这样的滞后与当前的相关性,而是找到残差(在去除了之前的滞后已经解释的影响之后仍然存在)与下一个滞后值的相关性。因此,如果残差中有任何可以由下一个滞后建模的隐藏信息,我们可能会获得良好的相关性,并且在建模时我们会将下一个滞后作为特征。请记住,在建模时,我们不想保留太多相互关联的特征,因为这会产生多重共线性问题。因此,我们只需要保留相关功能。
直观上来说,PACF 只描述观测值yt和其滞后项yt-k之间的直接关系,调整了其他较短滞后项

(yt-1,yt-2,....... yt-k-1)的影响。

3.3 总的来说 ACF、PACF:

(1)ACF反映了当前时刻与前面所有时刻的线性相关程度,而PACF则反映了当前时刻与前面某些时刻的线性相关程度,并排除了其他时刻的影响。

(2)ACF的值可以表示为各个滞后阶数之间的关系,而PACF的值只表示当前时刻与前面某一时刻之间的关系。

(3)在AR模型中,PACF截尾于某个阶数k,意味着AR模型中只需要保留前k阶的滞后项;在MA模型中,ACF截尾于某个阶数k,则意味着MA模型中只需要保留前k阶的滞后误差。

4. Auto regressive (AR) process

转自:【时间序列】怎么理解ACF 和PACF_Alex Tech Bolg的博客-CSDN博客

当一个时间序列中,它当前的观测值可以通过历史观测值获得是,那么就是一个AR。

P 阶AR 过程可以写成下面的式子:

我们不能在这里使用ACF图,因为即使对于过去很久远的滞后项,它也会显示出良好的相关性。如果我们考虑了这么多特征,我们将遇到多重共线性问题。这对于PACF图来说不是问题,因为它删除了之前滞后已经解释的成分,因此我们只得到了与残差相关的滞后,比如未被较早的滞后项所解释的成分。

在下面的代码中,我定义了一个简单的AR 流程,并使用PACF 图找到了它的阶数。我们应该期望我们的AR过程在ACF图中显示出逐渐减少的趋势,因为作为一个AR过程,其当前与过去的滞后项具有良好的相关性。我们期望PACF在滞后项阶数后会急剧下降,因为这些接近当前项的滞后项可以很好地捕获变化,因此我们不需要很多过去的滞后项来预测当前项。

5. Moving average(MA) Process

 转自:【时间序列】怎么理解ACF 和PACF_Alex Tech Bolg的博客-CSDN博客

Moving average(MA) Process 是一个序列,其中当前值是由过去误差的线性组合组成的。我们认为误差是服从正态分布并且相互独立的。q 阶MA 过程可以定义为下面的式子:

 在这个例子中,飓风的影响只能保持一个滞后项。 这个例子中的飓风是一个独立现象。

MA 的阶数q 在里通过ACF 图获得,在阶数之后,ACF 会第一次穿过上限置信区间。根据上文我们知道,PACF 能够捕捉残差和时间序列滞后项的关系,我们可能能够从附近的滞后项和过去的滞后项得到很好的相关关系。为什么我们不用PACF呢?因为我们的序列是残差项的线性组合,并且时间序列本身的滞后项不能直接解释当前项(因为它并不是一个AR 过程)。PACF 图最核心的是,他能够提取已经被之前的滞后项所解释的变化,因此,在MA 过程中,PACF 失去了它的魔力。

另一方面,一个MA 过程,它并没有季节性或者趋势成分,因此ACF 能够捕捉只由于残差项带来的相关性。

在下面的代码中,我定义了一个简单的MA 流程,并使用ACF 图找到了它的阶数。我们应该期望ACF 图能够画出相邻的滞后项之间的良好的相关关系,并且在阶数q 之后迅速下降(因为这不是一个AR 过程,因此和过去的滞后项没有相关关系)。同样,我们也可以看到PACF 逐渐下降,临近的滞后项并不能预测当前项(不同于AR 过程);而更远的滞后项有可能有良好的相关关系。


6. 如何确定ARIMA模型p、q值?

6.1 理论依据

截尾:在大于某个常数k后快速趋于0为k阶截尾

拖尾:始终有非零取值,不会在k大于某个常数后就恒等于零(或在0附近随机波动) 

确定差分阶数d。

如果时间序列数据不平稳,需要进行差分处理,使得数据平稳,差分阶数d可以通过观察时间序列的ACF和PACF图来确定。

确定自回归系数p和移动平均系数q。自回归系数p和移动平均系数q可以通过观察时间序列的ACF和PACF图来确定。如果ACF图在滞后阶数p之后截尾,而PACF图在滞后阶数q之后截尾,那么可以选择ARIMA(p,d,0)或者ARIMA(0,d,q)模型。如果ACF图和PACF图都在滞后阶数p和q之后截尾,那么可以选择ARIMA(p,d,q)模型。

确定季节性阶数P、Q和季节性差分阶数D。如果时间序列数据具有季节性,需要进行季节性差分处理,使得数据平稳,季节性差分阶数D可以通过观察时间序列的ACF和PACF图来确定。季节性阶数P和Q可以通过观察时间序列的季节性ACF和PACF图来确定。

6.2 方法1:观察法

数据data.xlsx

timevalue
0.00 1.00 
1.00 2.00 
2.00 3.50 
3.00 4.00 
4.00 5.50 
5.00 4.00 
6.00 3.00 
7.00 2.50 
8.00 1.00 
9.00 0.50 
10.00 -1.00 
11.00 -2.50 
12.00 -3.00 
13.00 -4.00 
14.00 -5.00 
15.00 -4.00 
16.00 -3.50 
17.00 -2.00 
18.00 -1.00 
19.00 0.00 
20.00 1.50 
21.00 2.00 
22.00 3.00 
23.00 4.50 
24.00 5.00 
25.00 4.00 
26.00 3.50 
27.00 2.00 
28.00 1.50 
29.00 0.00 
30.00 -1.50 
31.00 -2.50 
32.00 -3.00 
33.00 -4.50 
34.00 -5.00 
35.00 -4.00 
36.00 -3.00 
37.00 -2.00 
38.00 -1.00 
39.00 0.00 
40.00 1.50 
41.00 2.00 
42.00 3.50 
43.00 4.50 
44.00 5.00 
45.00 4.50 
46.00 3.00 
47.00 2.00 
48.00 1.50 
49.00 0.00 
50.00 -1.00 
51.00 -2.50 
52.00 -3.50 
53.00 -4.50 
54.00 -5.00 
55.00 -4.00 
56.00 -3.00 
57.00 -2.50 
58.00 -1.00 
59.00 0.00 
60.00 1.50 
61.00 2.00 
62.00 3.00 
63.00 4.00 
64.00 5.50 
65.00 4.00 
66.00 3.00 
67.00 2.50 
68.00 1.00 
69.00 0.50 
70.00 -1.00 
71.00 -2.50 
72.00 -3.00 
73.00 -4.50 
74.00 -5.00 
75.00 -4.50 
76.00 -3.00 
77.00 -2.50 
78.00 -1.00 
79.00 0.50 
80.00 1.00 
81.00 2.50 
82.00 3.00 
83.00 4.50 
84.00 5.00 
85.00 4.00 
86.00 3.50 
87.00 2.50 
88.00 1.50 
89.00 0.00 
90.00 -1.00 
91.00 -2.00 
92.00 -3.00 
93.00 -4.00 
94.00 -5.50 
95.00 -4.50 
96.00 -3.00 
97.00 -2.50 
98.00 -1.00 
99.00 0.00 
100.00 1.50 
101.00 2.00 
102.00 3.50 
103.00 4.00 
104.00 5.50 
105.00 4.00 
106.00 3.00 
107.00 2.50 
108.00 1.00 
109.00 0.00 
110.00 -1.00 
111.00 -2.50 
112.00 -3.00 
113.00 -4.50 
114.00 -5.00 
115.00 -4.50 
116.00 -3.50 
117.00 -2.50 
118.00 -1.00 
119.00 0.50 
120.00 1.00 
121.00 2.50 
122.00 3.00 
123.00 4.50 
124.00 5.50 
125.00 4.00 
126.00 3.50 
127.00 2.00 
128.00 1.00 
129.00 0.50 
130.00 -1.00 
131.00 -2.00 
132.00 -3.50 
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

data = pd.read_excel('data.xlsx', index_col='time', parse_dates=True)
data.head()
# 计算一阶差分,这里因为data是稳定的,所以没用到一劫差分
diff = data.diff().dropna()

plot_acf(data)
plt.show()
plot_pacf(data)
plt.show()

 

 

根据这句话:

 

通过这个图,p在2以后截断了所以p,d,q(p=2, d=0,q=5)

 6.3 计算法

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import pandas as pd
import numpy as np
import statsmodels.api as sm

data = pd.read_excel('data.xlsx', index_col='value', parse_dates=True)
data.head()
# 观察法===========================
diff = data.diff().dropna()

plot_acf(data)
plt.show()
plot_pacf(data)
plt.show()

# 计算法===========================
# 计算ACF和PACF
acf = sm.tsa.stattools.acf(data)
pacf = sm.tsa.stattools.pacf(data)
# 输出ACF和PACF的截尾点
q = np.argmax(acf < 0.05)
p = np.argmax(pacf < 0.05)
print(f'MA(q): {q}, AR(p): {p}')

结果:

MA(q): 5, AR(p): 2

7. ARIMA数据拟合实践

import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.tsa.arima.model import ARIMA

data = pd.read_excel('data.xlsx', index_col='time', parse_dates=True)
data.head()
# 计算一阶差分
diff = data.diff().dropna()

plot_acf(data)
plt.show()
plot_pacf(data)
plt.show()

# 计算ACF和PACF
acf = sm.tsa.stattools.acf(data)
pacf = sm.tsa.stattools.pacf(data)
# 输出ACF和PACF的截尾点
q = np.argmax(acf < 0.05)
p = np.argmax(pacf < 0.05)
print(f'MA(q): {q}, AR(p): {p}')

#p,d,q
model = ARIMA(data, order=(p, 0, q))
model_fit = model.fit()
forecast = model_fit.forecast(steps=24)
# 输出预测结果
print(forecast)

输出结果:

133   -4.433670
134   -4.499749
135   -4.044919
136   -3.366873
137   -2.414729
138   -1.222773
139    0.091940
140    1.400344
141    2.574036
142    3.497871
143    4.081265
144    4.267072
145    4.037184
146    3.414295
147    2.459660
148    1.267074
149   -0.046346
150   -1.351665
151   -2.520779
152   -3.438996
153   -4.016282
154   -4.196091
155   -3.960904
156   -3.333934
Name: predicted_mean, dtype: float64

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023Q2押题,华为OD机试用Python实现 -【查找舆情热词 or 热词排序】

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南华为 od 机试,独家整理 已参加机试人员的实战技巧本篇题解:查找舆情热词 or 热…

学校的地下网站(学校的地下网站1080P高清)

这个问题本身就提得有问题&#xff0c;为什么这么说&#xff0c;这是因为YouTube本身就不是一个视频网站或者说YouTube不是一个传统的视频网站&#xff01;&#xff01;&#xff01; YouTube能够一家独大&#xff0c;可不仅仅是因为有了Google这个亲爹&#xff0c;还有一点&…

牛客网在线编程SQL篇非技术快速入门题解

大家好&#xff0c;我是RecordLiu。 初学SQL,有哪些合适的练习网站推荐呢? 如果你有编程基础&#xff0c;那么我推荐你到Leetcode这样的专业算法刷题网站&#xff0c;如果没有&#xff0c;也不要紧&#xff0c;你也可以到像牛客网一样的编程网站去练习。 牛客网有很多面向非技…

为什么数字工厂管理系统是电子企业的必备品

与许多电子制造企业观望心态有所不同的是&#xff0c;电子产品分销商正在积极投身于实施数字工厂系统&#xff0c;部分分销商对已完成实施的系统赞不绝口。 数字工厂在元器件分销业的应用逐渐普遍 在一些大型分销商的影响下&#xff0c;数字工厂在分销行业的应用加快。相比而…

Java I/O流

I/O流I/O流IO流体系字节流体系FileOutPutStream(字节输出流)FileInPutStream(字节输入流)练习&#xff1a;文件拷贝Java中编码与解码的方法字符流FileReaderFileWriter综合练习缓冲流体系字节缓冲流字符缓冲流综合练习2转换流序列化流(对象操作输出流)/反序列化流(对象操作输入…

小白必看,吐血整理Facebook新手指南(一)

Facebook广告是营销人员工具包中最强大的工具。脸书广告可以帮助你实现几个高层次的商业目标&#xff0c;包括提高品牌知名度&#xff0c;产生线索&#xff0c;为你的商业网站带来流量&#xff0c;等等。本指南将帮助你创建你的第一个Facebook广告活动。它还将提供经过验证的技…

全链路追踪系统在技术运营层面的应用

随着微服务和分布式架构的引入&#xff0c;各类应用和基础组件形成了网状的分布式调用关系&#xff0c;这种复杂的调用关系就大大增加了问题定位、瓶颈分析、容量评估以及限流降级等稳定性保障工作的难度。正是这样的背景&#xff0c;催生了全链路追踪的解决方案。 这里的一个…

java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单

ava版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

学习数据结构第3天(线性表的定义和基本操作)

线性表的定义和基本操作前言线性表的定义线性表的基本操作经典试题前言 线性表是算法题命题的重点。这类算法题实现比较容易且代码量较少&#xff0c;但是要求具有最优的性能&#xff08;时间复杂度、空间复杂度&#xff09;&#xff0c;才能获得满分。因此应牢固掌握线性表的…

【牛客刷题专栏】0x18:JZ16 数值的整数次方(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转)&#xff0c;它登陆后会保存刷题记录进度&#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏&#xff1a;个人CSDN牛客刷题专栏。 题目来自&#xff1a;牛客/题库 / 在线编程 / 剑指offer&#xff1a; 目录前言问题…

安全防御 --- APT、密码学

APT 深度包检测技术&#xff1a;将应用层内容展开进行分析&#xff0c;根据不同的设定从而做出不同的安全产品。 深度流检测技术&#xff1a;与APS画像类似。会记录正常流量行为&#xff0c;也会将某些应用的行为画像描述出来。也可将加密流量进行判断&#xff0c;并执行相应措…

程序员必知必会7种UML图(类图、序列图、组件图、部署图、用例图、状态图和活动图)画法盘点

众所周知&#xff0c;软件开发是一个分阶段进行的过程。不同的开发阶段需要使用不同的模型图来描述业务场景和设计思路&#xff0c;在不同的阶段输出不同的设计文档也是必不可少的&#xff0c;例如&#xff0c;在需求分析阶段需要输出领域模型和业务模型&#xff0c;在架构阶段…

2023疫情当头,3个月转行软件测试拿下8k+offer,我心满意足了

从2020年的疫情开始&#xff0c;全世界好像按下了暂停键一般&#xff0c;大量新网民涌入互联网。我们的生活方式也随之改变&#xff0c;失业也如洪流般席卷整个世界&#xff0c;宅家的人数在变多&#xff0c;当然大多数人开始寻求新的工作方式&#xff0c;随之进军互联网的人开…

域名过户操作流程及常见问题

模板添加及模板过户操作流程&#xff1a; 一、添加模板操作流程&#xff1a; 1.在业务管理-域名管理-模板管理中找到“添加模板” 2.选择所有者类型&#xff08;个人或是企业/组织&#xff09;&#xff0c;填写新的域名所有者资料&#xff0c;填写无误后点击“确定”。 目前…

记录分享vscode里面非常好用的两个markdown插件

文章目录Markdown PDFMarkdown All in One效果图Markdown PDF 主要用于将markdown文件转为pdf文件 使用方法 安装此插件编辑区鼠标右键就会出来一个弹框,在弹框里面选择 Markdown All in One 我主要用它来生成文章的目录结构,然后转为pdf文件后,目录结构默认就是pdf文章目录,…

告别至暗时刻,高端与全系列手机市场前景可期

作者|落笔 近年来&#xff0c;智能手机用户换机周期持续拉长&#xff0c;市场出货量逐年走低&#xff0c;IDC数据显示&#xff0c;2022年全年中国智能手机市场出货量约2.86亿台&#xff0c;同比下降13.2%&#xff0c;创有史以来最大降幅&#xff0c;全球智能手机发展已进入成熟…

大厂研发成本大曝光,研发占大头

近日&#xff0c;腾讯发布《2022 年腾讯研发大数据报告》&#xff0c;披露了 2022 年腾讯在研发投入、研发效能、开源协同等方面的重要数据。 《报告》显示&#xff0c;2022 年腾讯内部研发人员占比达到 74%&#xff0c;这意味着&#xff0c;平均每四个腾讯员工中&#xff0c;…

linux 共享内存 shmget

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e;目录 前言 概述 原理机制 系统命令 接口说明 代码演示 结尾 前言 本专栏主要分享linu…

【深度解刨C语言】内存管理(详)

文章目录前言一.动态内存1.动态内存的用处2.内存的布局简单证明内存布局栈向下生长的证明堆向上增长的证明3.malloc与free进一步理解总结前言 前提: 内存有基本的认识 内存函数基本的了解 如果你对内存与内存函数太不清楚可以看:动态内存管理 目标: 为什么要用动态内存&…

我体验了首个接入GPT-4的代码编辑器,太炸裂了

最近一款名为Cursor的代码编辑器已经传遍了圈内&#xff0c;受到众多编程爱好者的追捧。 它主打的亮点就是&#xff0c;通过 GPT-4 来辅助你编程&#xff0c;完成 AI 智能生成代码、修改 Bug、生成测试等操作。 确实很吸引人&#xff0c;而且貌似也能大大节省人为的重复工作&…