SARMASIM Simulates a switching ARMA-process. The regime process z has the state space {1,2,...,r}. The process is governed by the system equation A(q,z(t)) * x(t) = C(q,z(t)) * (m(z(t)) + s(z(t)) * e(t) ) with s = sqrt(s2). [x,z,e] = sarmasim(C,A,m,s2,P,T,Tinit,x0,z0); x = Simulated switching ARMA-process. z = Simulated regime process. e = Innovation process. C = Coefficients in C-polynomials. [rxnc+1] A = Coefficients in A-polynomials. [rxna+1] m = Means of subprocesses. [rx1] s2 = Innovation variances. [rx1] P = Transition matrix for regime process. [rxr] T = Length of simulation. Tinit = Length of simulation. (Optional, default: Tinit=10*na) x0 = Initial state of process x. If not given, it will start from zeroes. [1xna] z0 = Initial state of regime process. If not given, it will start from the stationary distribution of the Markov chain. Example: Switching ARMA(4,2)-process (Example 5 in thesis) p1=0.005; p2=0.003; P = [1-p1 p1; p2 1-p2]; C = [1.00 1.63 0.65; 1.00 0.05 -0.88]; A = [1.00 -0.55 0.07 -0.26 -0.02; 1.00 -2.06 1.64 -0.98 0.41]; m = [46.6; 7.4]*1e-3; s2 = [0.5; 2.2]*1e-3; [x,z]=sarmasim(C,A,m,s2,P,2000); plothmm(x,z)
Demo for switching AR(1)-processes. |
001 function [x,z,e]=sarmasim(C,A,m,s2,P,T,Tinit,x0,z0) 002 %SARMASIM Simulates a switching ARMA-process. 003 % The regime process z has the state space {1,2,...,r}. 004 % The process is governed by the system equation 005 % A(q,z(t)) * x(t) = C(q,z(t)) * (m(z(t)) + s(z(t)) * e(t) ) 006 % with s = sqrt(s2). 007 % 008 % [x,z,e] = sarmasim(C,A,m,s2,P,T,Tinit,x0,z0); 009 % 010 % x = Simulated switching ARMA-process. 011 % z = Simulated regime process. 012 % e = Innovation process. 013 % 014 % C = Coefficients in C-polynomials. [rxnc+1] 015 % A = Coefficients in A-polynomials. [rxna+1] 016 % m = Means of subprocesses. [rx1] 017 % s2 = Innovation variances. [rx1] 018 % P = Transition matrix for regime process. [rxr] 019 % T = Length of simulation. 020 % Tinit = Length of simulation. (Optional, default: Tinit=10*na) 021 % x0 = Initial state of process x. If not given, 022 % it will start from zeroes. [1xna] 023 % z0 = Initial state of regime process. If not given, it will start 024 % from the stationary distribution of the Markov chain. 025 % 026 % Example: Switching ARMA(4,2)-process (Example 5 in thesis) 027 % p1=0.005; p2=0.003; P = [1-p1 p1; p2 1-p2]; 028 % C = [1.00 1.63 0.65; 1.00 0.05 -0.88]; 029 % A = [1.00 -0.55 0.07 -0.26 -0.02; 1.00 -2.06 1.64 -0.98 0.41]; 030 % m = [46.6; 7.4]*1e-3; 031 % s2 = [0.5; 2.2]*1e-3; 032 % [x,z]=sarmasim(C,A,m,s2,P,2000); 033 % plothmm(x,z) 034 035 % Copyright (c) 1997 by Pär Johannesson 036 % Toolbox: Rainflow Cycles for Switching Processes V.1.0, 2-Oct-1997 037 038 if nargin < 6 039 error('More input arguments needed. See help.') 040 end 041 if nargin<7, Tinit = []; end 042 if nargin<8, x0 = []; end 043 if nargin<9, z0 = []; end 044 045 r=size(P,1); 046 ma=size(A,2)-1; 047 mc=size(C,2)-1; 048 m_max=max([ma mc]); 049 050 if ma < 1 051 A =[ones(r,1) zeros(r,1)]; 052 ma = 1; 053 end 054 if mc < 0 055 C = ones(r,1); 056 mc = 0; 057 end 058 059 if isempty(Tinit) 060 Tinit=10*ma; 061 end 062 T1 = Tinit+T; 063 z=mcsim(P,T1,z0); 064 065 mx = (sum(C')'./sum(A')'.*m)'; 066 x=zeros(T1,1); 067 if isempty(x0) 068 x(1:ma) = ones(ma,1).*mx(z(1:ma))'; 069 else 070 x(1:ma) = x0; 071 end 072 073 e=randn(T1,1); 074 s=sqrt(s2); 075 076 for t=m_max+1:T1 077 x(t)=-A(z(t),2:ma+1)*x(t-1:-1:t-ma) + C(z(t),:)*(m(z(t))+s(z(t))*e(t:-1:t-mc)); 078 end 079 080 x = x(Tinit+1:T1); 081 z = z(Tinit+1:T1); 082 083 084
Comments or corrections to the WAFO group