时间序列分析(1)精品资料
- 格式:doc
- 大小:51.00 KB
- 文档页数:10
第六章时间序列分析6.2自回归模型(AR)
自回归模型中 最简单的是一阶自回归模型和二阶自回归模型。为节省篇幅,这里直接给出p阶自回归模型。
6.2.1功能
求出p阶自回归方程的系数,从而得到p阶自回归方程。
6.2.2方法说明
6.2.3子程序语句
SUBROUTINE ARP(X,N,M,R,FAI)
6.2.4哑元说明
X——输入参数,一维实型数组,大小为N,存放观测序列值。
N——输入参数,整型变量,为观测序列的长度。
M——输入参数,整型变量,为自回归的阶数。
R——输出参数,一维实型数组,存放自相关系数。
FAI——输出参数,二维实型数组,存放自回归系数。
6.2.5子程序
SUBROUTINE ARP(X,N,M,R,FAI)
INTEGER::TAO !落后时间
REAL(4),DIMENSION(N)::X
REAL(4),DIMENSION(M,M)::FAI
REAL(4),DIMENSION(M)::R
REAL(4),DIMENSION(M)::S !协方差
REAL(4)::S2,A1,A2 !S2:方差, A1,A2:中间变量
S=0
DO TAO=1,M
DO I=1,N-TAO
S(TAO)=S(TAO)+X(I)*X(I+TAO)
END DO
S(TAO)=S(TAO)/(N-TAO)
END DO
S2=0
DO I=1,N
S2=S2+X(I)*X(I)
END DO
S2=S2/N
DO TAO=1,M
R(TAO)=0
DO I=1,N-TAO
R(TAO)=R(TAO)+X(I)*X(I+TAO)/S2
END DO
R(TAO)=R(TAO)/(N-TAO)
END DO FAI(1,1)=R(1)
FAI(2,2)=(R(2)-R(1)*R(1))/(1-R(1)*R(1))
FAI(1,2)=FAI(1,1)-FAI(2,2)*FAI(1,1)
DO J=3,M
A1=0
A2=0
DO K=1,J-1
A1=A1+FAI(K,J-1)*R(J-K)
A2=A2+FAI(K,J-1)*R(K)
END DO
FAI(J,J)=(R(J)-A1)/(1-A2)
DO K=1,J-1
FAI(K,J)=FAI(K,J-1)-FAI(J,J)*FAI(J-K,J-1)
END DO
END DO
END
6.2.6例
以某海区的22年的逐月气温为例,计算出自回归系数,并给出自回归方程。
PROGRAM MAIN
INTEGER,PARAMETER::N=264
INTEGER,PARAMETER::M=12
REAL(4),DIMENSION(N)::X
REAL(4),DIMENSION(M,M)::FAI
REAL(4),DIMENSION(M)::R
REAL(4)::XV !X的平均值
OPEN(10,FILE='AA2.DAT')
DO I=1,N
READ(10,'(F8.2)')X(I)
END DO
CLOSE(10)
XV=0
DO I=1,N
XV=XV+X(I)
END DO
XV=XV/N
X=X-XV
CALL ARP(X,N,M,R,FAI)
OPEN(12,FILE='ARP.DAT')
WRITE(12,'(2X,"XV=",F8.4)')XV
DO I=1,M
WRITE(12,'("R(",I2,")=",F8.4," FAI(",I2,")=",F8.4)')I,R(I),I,FAI(I,M)
END DO
CLOSE(12)
END 输出结果为:
XV= 22.5718
R( 1)= .8383 FAI( 1)= .6094
R( 2)= .4648 FAI( 2)= -.1669
R( 3)= -.0148 FAI( 3)= -.0701
R( 4)= -.4776 FAI( 4)= -.0564
R( 5)= -.8080 FAI( 5)= -.1197
R( 6)= -.9222 FAI( 6)= .0477
R( 7)= -.8019 FAI( 7)= -.0471
R( 8)= -.4747 FAI( 8)= -.1702
R( 9)= -.0108 FAI( 9)= .0053
R(10)= .4665 FAI(10)= .0977
R(11)= .8211 FAI(11)= .1246
R(12)= .9508 FAI(12)= .1798
从而得到自回归方程为:
12t11t10t9t8t7t6t5t4t3t2t1ttx1798.x1246.x0977.x0053.x1702.x0471.x0477.x1197.x0564.x0701.x1669.x6094.x
注意:以上是距平值,加上平均值即为实际值。
6.3滑动平均模型(MA)
6.3.1功能
求出q阶滑动平均模型方程的系数,从而得到q阶滑动平均方程。
6.3.2方法说明
6.3.3子程序语句
SUBROUTINE MAQ(X,N,Q,EPS)
6.3.4哑元说明
X——输入参数,实型一维数组,大小为N,存放观测序列值。
N——输入参数,整型变量,数组的长度。
Q——输入参数,整型变量,滑动平均的阶数。
EPS——输入参数,实型变量,存放迭代精度。
6.3.5子程序
SUBROUTINE MAQ(X,N,Q,EPS)
INTEGER::TAO,Q !TAO:落后时间;Q:滑动平均的阶数
REAL(8),DIMENSION(N)::X
REAL(8),DIMENSION(Q)::THITA !滑动系数
REAL(8),DIMENSION(Q)::THIT !迭代中用的滑动系数,中间变量
REAL(8),DIMENSION(Q)::R !相关系数
REAL(8),DIMENSION(Q)::S !S协方差
REAL(8)::S2,A1 !S2:方差, A1:中间变量
REAL(8)::S2A !S2A:序列a(t)的方差
REAL(8)::EPS,EP1,EP2 !EPS:迭代的精度
S=0
DO TAO=1,Q DO I=1,N-TAO
S(TAO)=S(TAO)+X(I)*X(I+TAO)
END DO
S(TAO)=S(TAO)/(N-TAO)
END DO
S2=0
DO I=1,N
S2=S2+X(I)*X(I)
END DO
S2=S2/N
DO TAO=1,Q
R(TAO)=0
DO I=1,N-TAO
R(TAO)=R(TAO)+X(I)*X(I+TAO)
END DO
R(TAO)=R(TAO)/S2/(N-TAO)
END DO
THIT=0
S2B=S2
NN=0
DO
NN=NN+1
A1=1
DO I=1,Q
A1=A1+THIT(I)*THIT(I)
END DO
S2A=S2/A1
THITA=-R*S2/S2A
DO K=1,Q-1
DO I=1,Q-K
THITA(K)=THITA(K)+THIT(I)*THIT(K+I)
END DO
END DO
EP1=ABS(S2A-S2B)
EP2=MAXVAL(ABS(THIT-THITA))
IF(EP1
THIT=THITA
S2B=S2A
PRINT*,'NN=',NN
END DO
OPEN(12,FILE='MAQ.DAT')
WRITE(12,*)
WRITE(12,'("S2=",D12.5)')S2
WRITE(12,'("R=",D12.5)')R WRITE(12,'("S2A=",E12.5)')S2A
WRITE(12,'("THITA=",D12.5)')THITA
CLOSE(12)
END
6.3.6例
计算北京1951年——1980年1月的平均气温2阶、3阶滑动平均模型的系数(同时也算出了12月、2月的结果)
PROGRAM MAIN
INTEGER,PARAMETER::N=30
INTEGER,PARAMETER::Q=2
REAL(8),DIMENSION(N)::X
REAL(8),PARAMETER::EPS=1.0E-5
REAL(8)::XV !X的平均值
OPEN(10,FILE='BEIJING.DAT')
READ(10,*)X
CLOSE(10)
XV=0
DO I=1,N
XV=XV+X(I)
END DO
XV=XV/N
X=X-XV
CALL MAQ(X,N,Q,EPS)
END
计算结果为:
2阶:
S2= .11905D+01
R= -.82189D-01 .65269D-01
S2A= .11782E+01
THITA= .77908D-01 -.65949D-01
滑动平均模型为:
2t1ttta065949.0a0779083.0aX
3阶:
S2= .11905D+01
R= -.82189D-01 .65269D-01 .23275D-01
S2A= .11770E+01
THITA= .79343D-01 -.67884D-01 -.23542D-01
滑动平均模型为:
3t2t1ttta023542.0a067884.0a079343.0aX
6.3.7附注
6.4自回归滑动平均模型(ARMA)