日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

平稳时间序列以及MATLAB相关工具箱学习笔记

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 平稳时间序列以及MATLAB相关工具箱学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

平穩時間序列以及MATLAB相關工具箱學習筆記

概念

(1)平穩序列

即序列的均值是個常數,與序列長度、起始位置無關。
直觀看上去,該序列類似于圍繞某一個值上下波動(該值為平穩序列均值)。

(2)平穩白噪聲序列

所謂噪聲,可以理解為一種非周期性的擾動。由于其自協方差函數值為0,于是其各序列值沒有任何相關關系,所以說平穩白噪聲序列是一段沒有記憶的平穩序列。
在MATLAB中可用如下代碼生成高斯分布下的平穩白噪聲序列:

elps=randn(1,1000); plot(elps)

基本的平穩時間序列

(1)AR(p)AR(p)AR(p)序列


需要說明的是:
1.ppp為模型階數,需要進行定階
比說:隨機產生時間序列Xt+0.6Xt?1+0.2Xt?2=ξt\color{#00F}{X_t+0.6X_{t-1}+0.2X_{t-2}=\xi_t}Xt?+0.6Xt?1?+0.2Xt?2?=ξt?
p=2\color{#00F}{p=2}p=2,則該序列為AR(2)AR(2)AR(2)序列。

2.ψ=(ψ1,ψ2,?,ψp)T\psi=(\psi_1,\psi_2,\cdots,\psi_p)^Tψ=(ψ1?,ψ2?,?,ψp?)T為未知參數,需要對其進行估計。

(2)MA(q)MA(q)MA(q)序列

同樣:
1.qqq為模型階數,需要進行定階
2.θ=(θ1,θ2,?,θq)T\theta=(\theta_1,\theta_2,\cdots,\theta_q)^Tθ=(θ1?,θ2?,?,θq?)T為未知參數,需要對其進行估計。

(3)ARMA(p,q)ARMA(p,q)ARMA(p,q)序列



1.p,qp,qp,q為模型階數,需要進行定階
2.θ=(θ1,θ2,?,θq)T,ψ=(ψ1,ψ2,?,ψp)T\theta=(\theta_1,\theta_2,\cdots,\theta_q)^T,\psi=(\psi_1,\psi_2,\cdots,\psi_p)^Tθ=(θ1?,θ2?,?,θq?)T,ψ=(ψ1?,ψ2?,?,ψp?)T為未知參數,需要對其進行估計。

平穩時間序列建模流程


下面逐步分析流程并演示代碼:

(1)平穩性檢驗

先導入一組數據,生成圖像:

由圖可知,其變動范圍較大,均值可能為一常數(肉眼判斷)在定義上有可能滿足平穩序列的條件。
于是,引出了平穩性檢驗的第一種方法:1.時序圖檢驗\color{#00F}{1.時序圖檢驗}1.
除了這種方法,更一般的方法為2.自相關檢驗\color{#00F}{2.自相關檢驗}2.
平穩序列通常具有短期相關性,該性質用自相關系數來描述就是:隨著延遲期數的增加,平穩序列的自相關系數會很快衰減為0\color{#F00}{隨著延遲期數的增加,平穩序列的自相關系數會很快衰減為0}0

MATLAB檢驗自相關系數的函數為:

figure(1) r11=autocorr(a) %計算自相關函數 stem(r11)%繪制經線圖 title('自相關系數') figure(2) r12=parcorr(a) %計算偏相關函數 stem(r12)%繪制經線圖 title('偏相關系數')

對源數據計算可得圖像:

平穩系序列的自相關系數具有:截尾性拖尾性指數衰減性。根據以上兩圖可以進行直觀理解。從以上圖示,該序列都滿足平穩性的判別標準\color{#00F}{該序列都滿足平穩性的判別標準}滿


但如上圖所示,該序列的自相關系數分布圖明顯不展現截尾性、拖尾性、指數衰減性的性質,該序列為不平穩序列。
3.Daniel檢驗法\color{#00F}{3.Daniel檢驗法}3.Daniel

MATLAB程序:

x0=[80.8 94.0 88.4 101.5 110.3 121.5 134.7 142.7]; n=length(x0); [xsort,ind]=sort(x0) Rt(ind)=1:n %計算秩 t=1:n; Qs=1-6/(n*(n^2-1))*sum((t-Rt).^2) %計算 Qs 的值 T=Qs*sqrt(n-2)/sqrt(1-Qs^2) %計算 T 統計量的值 t_0=tinv(0.975,n-2) %計算上 alpha/2 分位點

計算結果:
T=11.0235>t0=2.4469T = 11.0235> t_0 =2.4469T=11.0235>t0?=2.4469該序列為非平穩性序列\color{#D1F}{非平穩性序列}
其次,若已知序列的類型(AR(p)AR(p)AR(p)序列、MA(q)MA(q)MA(q)序列、ARMA(p,q)ARMA(p,q)ARMA(p,q)序列),可采用4.單位根法\color{#00F}{4.單位根法}4.進行平穩性檢驗。
θ(B)及ψ(B)\theta(B)及\psi(B)θ(B)ψB的根均在單位圓內,則該序列平穩。
例子:已知隨機隨機時間序列:
Xt+0.6Xt?1+0.2Xt?2=ξtX_t+0.6X_{t-1}+0.2X_{t-2}=\xi_tXt?+0.6Xt?1?+0.2Xt?2?=ξt?
θ(B)=1+0.6B+0.2B2\theta(B)=1+0.6B+0.2B^2θ(B)=1+0.6B+0.2B2

roots([0.2 0.6 1])

(2)構造差分序列


需要指出,并非是所有的非平穩序列都能進行差分使其平穩化,能進行差分的序列須為帶有一定趨勢\color{#F00}{帶有一定趨勢}的非平穩差分序列。

da=diff(a); %計算1階差分 r21=autocorr(da) %計算自相關函數 r22=parcorr(da) %計算偏相關函數 figure(1) stem(r21) title('1階差分自相關') figure(2) stem(r22) title('1階差分自相關')



以上兩幅圖為原平穩序列差分后的結果,由圖可知平穩序列的差分序列不會喪失其平穩特性,反倒越加平穩。若1階差分滿足不了,可采用2階甚至多階。

(3)模型定階與擬合(參數估計)


一般地,若已知該序列的類型,可采用直接指定的方式定階。還是這個例子:
Xt+0.6Xt?1+0.2Xt?2=ξt\color{#00F}{X_t+0.6X_{t-1}+0.2X_{t-2}=\xi_t}Xt?+0.6Xt?1?+0.2Xt?2?=ξt?

p=3;%指定大概率會的模型階數 elps=randn(10000,1); x(1:2)=0; for i=3:10000x(i)=-0.6*x(i-1)-0.2*x(i-2)+elps(i); %產生模擬數據 end x=x'; %x必須為列向量 for i=1:pmodel{i}=ar(x,i);%采用工具箱里面的AR函數進行擬合 AIC(i)=aic(model{i});%根據AIC準則,確定最終 end N=min(AIC); P_great=find(AIC==N);

更一般地,對于一組未知類型的時間序列(已知某化工生產濃度數據、已知1997-2012年我國人均國內生產總值、1974-1981年布料銷售量?\cdots?,可采用試探模型(即通過構造{p=1:m,q=1:np=1:m,q=1:np=1:m,q=1:n}的方法)進行定階。這里,我們可以假設模型為計量經濟學領域的CARCH模型:

這里我們需要用到MATLAB的兩個常用模型指定函數:model=arima(′MALags′,[MA模型滯后項],′ARLags′,[AR模型滯后項],′MA′,MA模型滯后項系數,′AR′,MA模型滯后項系數,′Constant′,常數項)model=arima('MALags',[MA模型滯后項],'ARLags',[AR模型滯后項],'MA',{MA模型滯后項系數},'AR',{MA模型滯后項系數},'Constant',常數項)model=arima(MALags,[MA],ARLags,[AR],MA,MA,AR,MA,Constant,
Xt+0.6Xt?1+0.2Xt?2=ξt\color{#00F}{X_t+0.6X_{t-1}+0.2X_{t-2}=\xi_t}Xt?+0.6Xt?1?+0.2Xt?2?=ξt?
可用如下語句進行指定:

model=arima('ARLags',[1 2 3],'MAlags',1','Constant',0)

另外,指定模型之后需要進行擬合,具體函數如下:

輸入:Md1為上面用arima指定的模型;y為需要擬合的時間序列;
輸出:EstMd1為擬合得到的模型方程;EstParamCov為返回與估計參數;logL為目標函數值;info為匯總信息。
一段完整的定階與擬合MATLAB程序如下:

for i=0:pfor j=0:qif i==0 && j==0continueelseif i==0ToEstMd=arima('MALags',1:j);elseif j==0ToEstMd=arima('ARLags',1:i);elseToEstMd=arima('ARLags',1:i,'MALags',1:j); end[EstMd,EstParamCov,logL,info]=estimate(ToEstMd,d);%模型擬合numParams=sum(any(EstParamCov));%計算擬合參數個數[aic(i,j),bic(i,j)]=aicbic(logL,numParams,n);end end N=min(min(bic)); [p_great,q_great]=find(N==bic);

(4)模型預報

這里也將有大篇幅的理論推導,這里將不再敘述。
AR預報:
ARMA預報:

forecast_=forecast(EstMd,5,'Y0',d)

這里,EstMd為擬合出來的模型,5為需要預報的值,’Y0‘為預測參量,d為序列。

(5)模型檢驗

模型檢驗常用的方法有:
時間序列檢驗
殘差的 Portmanteau 檢驗
Lagrange 乘數檢驗
MATLAB殘差檢驗的程序如下:

res=infer(EstMd,d);%計算殘差h=lbqtest(res);%模型檢驗

總結

以上是生活随笔為你收集整理的平稳时间序列以及MATLAB相关工具箱学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。