自相關和偏自相關的兩個函數代碼
由於后面會經常畫一組序列自相關和偏自相關的圖像,所以就把自己寫的這個兩個畫圖的函數的代碼貼上,供大家參考。
- 首先是自相關的函數
輸入的三個參數分別是{數據,滯后數,置信度}
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