[时间序列分析][4]–AR模型,MA模型,ARMA模型介绍[通俗易懂]

[时间序列分析][4]–AR模型,MA模型,ARMA模型介绍[通俗易懂]自相关和偏自相关的两个函数代码由于后面会经常画一组序列自相关和偏自相关的图像,所以就把自己写的这个两个画图的函数的代码贴上,供大家参考。首先是自相关的函数输入的三个参数分别是{数据,滞后数,置信度

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

自相关和偏自相关的两个函数代码

由于后面会经常画一组序列自相关和偏自相关的图像,所以就把自己写的这个两个画图的函数的代码贴上,供大家参考。

  • 首先是自相关的函数
    输入的三个参数分别是{数据,滞后数,置信度}
pacf[data_, lmax_, clev_: 0.95] := 
  Show[ListPlot[CorrelationFunction[data, {lmax}], Filling -> Axis, 
    PlotRange -> {{0, lmax}, {-1.5, 1.5}}, 
    PlotStyle -> PointSize[Medium], PlotLabel -> "自相关图", 
    FillingStyle -> Directive[Thickness[.01], Green, Dashed]],
   Graphics[{Dashed, Line[{{0, #}, {lmax, #}}]}] & /@ (
    Quantile[NormalDistribution[], {(1 - clev)/2, 1 - (1 - clev)/2}]/
    Sqrt[Length[data]])];
  • 接着是偏自相关的函数
papf[data_, lmax_, clev_: 0.95] := 
  Show[ListPlot[PartialCorrelationFunction[data, {lmax}], 
    Filling -> Axis, PlotRange -> {{0, lmax}, {-1.5, 1.5}}, 
    PlotStyle -> PointSize[Medium], PlotLabel -> "偏自相关图", 
    FillingStyle -> Directive[Thickness[.01], Green, Dashed]],
   Graphics[{Dashed, Line[{{0, #}, {lmax, #}}]}] & /@ (
    Quantile[NormalDistribution[], {(1 - clev)/2, 1 - (1 - clev)/2}]/
    Sqrt[Length[data]])];

AR模型

AR模型的定义

AR模型的定义 —————

AR模型平稳性判别

AR模型是常用的平稳序列的拟合模型之一,但并非所有的AR模型都是平稳的 。

判别方法
1. 单位根判别法
2. 平稳域判别法

关于这两种方法的证明挺长的,由于要是我们分析实际数据,是不必考虑这些的,关于平稳性只是从模型的角度去推的,所以我准备不讲这两个方法的推到,举几个平稳和不平稳的例子看一下。

第一个平稳的AR模型

这个AR模型的递推式子是x[t]=0.8*x[t-1]+e,其实e是一个误差项。
x[1]=5,x[2]=3

Clear[x];
x[1] = 5;
x[2] = 3;
 x[t_] := x[t] = .8*x[t - 1] + RandomReal[NormalDistribution[]];
ListPlot[
 Table[x[i], {i, 1, 100}],
 PlotRange -> All,
 PlotRangePadding -> Scaled[.09],
 Filling -> Axis
 ]

我们看一下画出来的图像

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 我们看一下他没有噪声的图像是什么样子的
Clear[x];
x[1] = 5;
x[2] = 3;
 x[t_] := x[t] = .8*x[t - 1];
ListPlot[
 Table[x[i], {i, 1, 100}],
 PlotRange -> All,
 PlotRangePadding -> Scaled[.09],
 Filling -> Axis
 ]

来看一下他的图像

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 我们可以看到是这样单调递减趋于0的

第二个平稳的AR模型

我们再来看一个平稳的AR模型

Clear[x];
x[1] = 5;
x[2] = 3;
 x[t_] := 
  x[t] = x[t - 1] - .5 x[t - 2] + RandomReal[NormalDistribution[]];
data = Table[x[i], {i, 1, 100}];
ListPlot[
 data,
 PlotRange -> All,
 PlotRangePadding -> Scaled[.09],
 Filling -> Axis
 ]

看一下画出来的图像

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 其实我很好奇这样的数据是不是白噪声,我们来做一下检验 首先我们来看一下他的自相关系数和偏自相关系数
pacf[data, 20, .95]
papf[data, 20, .95]
[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 我们看自相关图可以很明显的看出其有一阶自相关,不是白噪声 接着我们做一下白噪声检验
ListPlot[Table[
  AutocorrelationTest[Table[x[i], {i, 1, 100}], i], {i, 1, 10}], 
 Filling -> Axis, PlotRange -> All]
[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 可以看到p – 值很小,不是白噪声。 > 有没有觉得很神奇,明明看上去一点规律都没有的数据,其实是有规律的。我们老师最近总是爱引用爱因斯坦的一句话,宇宙最不能让人理解的地方, 是宇宙竟然能够被理解

非平稳的AR模型

接下来我们看一个非平稳的AR模型

Clear[x]
x[1] = 5;
x[2] = 3;
 x[t_] := 
  x[t] = x[t - 1] + .5 x[t - 2] + RandomReal[NormalDistribution[]];
ListPlot[
 Table[x[i], {i, 1, 100}],
 PlotRange -> All,
 PlotRangePadding -> Scaled[.09],
 Filling -> Axis
 ]
[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 可以看到其散点图是不收敛的。

AR模型的一些性质

  1. 若AR模型满足平稳性条件,则他的均值为0,我们可以从上面的图中看出
  2. AR模型的自相关系数是呈复指数衰减– 有拖尾性
  3. AR模型的偏自相关系数有截尾性
    注意第二,第三条很重要,后面可以用来做模型的识别。我在强调一遍
    AR模型的自相关系数是呈复指数衰减– 有拖尾性
    * AR模型的偏自相关系数有截尾性*

MA模型

MA模型的定义

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

MA模型的可逆性

这个性质在推到MA模型的相关系数和自相关系数的时候比较有用,在这里我们就大概了解一下他是什么意思。
看一下可逆的定义

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 接下来看一下MA模型怎么转换成AR模型

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 最后我们看一下什么样的MA模型可以转化为AR模型

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

可逆MA模型的应用

对于一些MA模型,虽然其生成的式子不一样,但是其自相关图是一样的,要是我们能用可逆的MA来做分析,可以将问题变得简洁,当然这些都是在式子推导的过程中的问题,在处理数据时我们可以不考虑这些。
下面我们来看一个式子不同但自相关系数图一样的例子:

rd = RandomReal[NormalDistribution[], {100}];
data = RotateLeft[rd] - 2*rd;
data = data[[;; -2]];
Transpose[{data, RotateLeft[data]}] // ListPlot
ListLinePlot[data]
pacf[data, 20, 0.95]
papf[data, 20, 0.95]
ListPlot[Table[AutocorrelationTest[data, i], {i, 1, 10}], 
 Filling -> Axis, PlotRange -> All, PlotLabel -> "白噪声检验"]

这个代码应该会画出5张图片,我这里暂时不全放。看一下其自相关和偏自相关图:

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]
data = RotateLeft[rd] - .5*rd;
data = data[[;; -2]];
Transpose[{data, RotateLeft[data]}] // ListPlot
ListLinePlot[data]
pacf[data, 20, 0.95]
papf[data, 20, 0.95]
ListPlot[Table[AutocorrelationTest[data, i], {i, 1, 10}], 
 Filling -> Axis, PlotRange -> All, PlotLabel -> "白噪声检验"]
[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂] 这个真的是两张图片,可以看到他们是一样的,完全一样的。 而第一个是可逆的,即可以转换为AR模型的,具体转换方式可以看下图

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

MA模型的性质

  1. 自相关系数q阶截尾
  2. 偏自相关系数q阶拖尾
    这个是只有自相关系数是截尾的
    很重要,后面模型的识别会用到

ARMA模型

ARMA模型的定义

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

ARMA模型的一个例子

看一个ARMA (1, 1) 的例子 – xt = .5*x (t – 1) + et – 0.8 e (t – 1)

Clear[x];
x[1] = 10;
rd = RandomReal[NormalDistribution[0, .1], {100}];
temp = RotateLeft[rd] - .8*rd;
x[t_] := x[t] = .7*x[t - 1] + temp[[t - 1]];
data = Table[x[i], {i, 1, 100}];
Transpose[{data, RotateLeft[data]}] // ListPlot
ListLinePlot[data]
pacf[data, 20, 0.95]
papf[data, 20, 0.95]
ListPlot[Table[AutocorrelationTest[data, i], {i, 1, 10}], 
 Filling -> Axis, PlotRange -> All, PlotLabel -> "白噪声检验"]

第一张图片是前后数据画的散点图,可以用来看是否有一阶自相关,第二张图是时序图

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

ARMA模型的性质

  1. 自相关系数拖尾
  2. 偏自相关系数拖尾
    这个是两个系数都拖尾

三个模型性质的总结

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍[通俗易懂]

后记

这是我用MarkDown写的第一篇文章,感觉还是挺方便的,一切还在熟悉当中

放一下markdown的一些快捷键

一些markdown的快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

推广

最近在做一下微信公众号
欢迎大家关注我的公众号: prettymath
不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!




AR模型的定义

谢谢大家支持


以上,所有
2017/4/20

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167536.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C# 项目没有.sln文件的解决办法:

    C# 项目没有.sln文件的解决办法:什么是sln文件?sln文件开发中使用的解决方案文件,使用解决方案文件(后缀为sln的文件)表示一个项目组,他通常包含一个项目中所有的工程文件信息。包括文件版本,工程信息,全局设置,通过打开sln文件就可以加载整个项目.但是我新建的一个项目里面没有Sln文件,该如何打开整个项目?解决办法:打开VS,点击新建项目,同时会生成一个解决方法,然后往这个解决方案里面添加现有项目,注意添加的是.cspro

    2022年5月3日
  • hdu 4507 数位dp(求和,求平方和)[通俗易懂]

    hdu 4507 数位dp(求和,求平方和)

    2022年1月24日
  • python中关于命名的例子_Python 命名规范入门实例「建议收藏」

    python中关于命名的例子_Python 命名规范入门实例「建议收藏」这篇文章主要为大家详细介绍了Python命名规范入门实例,具有一定的参考价值,可以用来参考一下。对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!一,包名、模块名、局部变量名、函数名全小写+下划线式驼峰example:this_is_var二,全局变量全大写+下划线式驼峰example:GLOBAL_VAR三,类名首字母大写式驼峰example:ClassNa…

    2022年6月25日
  • 2021.5.1idea激活码(最新序列号破解)

    2021.5.1idea激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
  • 报错注入详解_报错注入的过程

    报错注入详解_报错注入的过程报错注入报错注入是SQL注入的一种。利用前提:页面上没有显示位,但是需要输出SQL语句执行错误信息。比如mysql_error()优点:不需要显示位缺点:需要输出mysql_error()的报错信息报错函数1、floor报错注入floor()报错注入是利用count()、rand()、floor()、groupby这几个特定的函数结合在一起产生的注入漏洞,准确的说是floor,count,groupby冲突报错。报错原理:利用数据库表主键不能重复的原理,使用GROUPBY分组,产生主

    2022年9月30日
  • xshell 连接虚拟机「建议收藏」

    xshell 连接虚拟机「建议收藏」首先先下载Xshell无论什么版本的Xshell都可以再用Xshell连接虚拟机的时候首先你需要在虚拟机里面查看自己的ip如图所示输入命令ipa 拿到这个ip之后在Xshell里面新建会话 把ip输入进去。然后左边有一个登录验证点击进去验证你在虚拟机上面的登录账号和密码然后连接最后接受验证就可以啦…

    2022年9月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号