大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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模型都是平稳的 。
判别方法
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
]
我们看一下画出来的图像
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
]
来看一下他的图像
第二个平稳的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
]
看一下画出来的图像
pacf[data, 20, .95]
papf[data, 20, .95]
ListPlot[Table[
AutocorrelationTest[Table[x[i], {i, 1, 100}], i], {i, 1, 10}],
Filling -> Axis, PlotRange -> All]
非平稳的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
]
AR模型的一些性质
- 若AR模型满足平稳性条件,则他的均值为0,我们可以从上面的图中看出
- AR模型的自相关系数是呈复指数衰减– 有拖尾性
- AR模型的偏自相关系数有截尾性
注意第二,第三条很重要,后面可以用来做模型的识别。我在强调一遍
AR模型的自相关系数是呈复指数衰减– 有拖尾性
* AR模型的偏自相关系数有截尾性*
MA模型
MA模型的定义
MA模型的可逆性
这个性质在推到MA模型的相关系数和自相关系数的时候比较有用,在这里我们就大概了解一下他是什么意思。
看一下可逆的定义
可逆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张图片,我这里暂时不全放。看一下其自相关和偏自相关图:
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 -> "白噪声检验"]
MA模型的性质
- 自相关系数q阶截尾
- 偏自相关系数q阶拖尾
这个是只有自相关系数是截尾的
很重要,后面模型的识别会用到
ARMA模型
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 -> "白噪声检验"]
第一张图片是前后数据画的散点图,可以用来看是否有一阶自相关,第二张图是时序图
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
不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!
谢谢大家支持
以上,所有
2017/4/20
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167536.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...