Global Index (short | long) | Local contents | Local Index (short | long)
TH=ivar(y,na,nc,maxsize,T)
IVAR Computes IV-estimates for the AR-part of a scalar time series. TH = IVAR(Y,NA) TH: returned as the IV-estimate of the AR-part of a time series model A(q) y(t) = v(t) along with relevant structure information. (For the exact structure of TH see also THETA. Y : the time series as a column vector. NA: the order of the AR-part (the A(q)-polynomial) In the above model v(t) is an arbitrary process, assumed to be a (possibly time-varying) moving average process of order NC. The default value of NC is NA. Other values of NC are obtained by TH = IVAR(Y,NA,NC) With TH = IVAR(Y,NA,NC,maxsize,T) access to some parameters associated with the algorithm is obtained. See also AUXVAR for an explanation of these. See also AR.
This function calls | This function is called by |
---|---|
function TH=ivar(y,na,nc,maxsize,T) % L. Ljung 4-21-87 % Copyright (c) 1986-98 by The MathWorks, Inc. % $Revision: 2.3 $ $Date: 1997/12/02 03:43:19 $ if nargin < 2 disp('Usage: TH = IVAR(Y,ORDER)') disp(' TH = IVAR(Y,ORDER,MA_ORDER,MAXSIZE,T)') return end [Ncap,nz]=size(y); % % *** Some initial tests on the input arguments *** % maxsdef=idmsize(Ncap); if nargin<5, T=1;end if nargin<4, maxsize=maxsdef;end if nargin<3, nc=na;end if T<0,T=1;end, if maxsize<0,maxsize=maxsdef;,end,if nc<0,nc=na;end if isempty(T),T=1;end,if isempty(maxsize),maxsize=maxsdef;end, if isempty(nc),nc=na;end if nz>Ncap,y=y';end if nz>1,error('The data should be a single time series!'),return,end if length(na)>1,error(' NA should be a single number!'),return,end % *** Estimate a C-polynomial by first building a high order AR-model and % then using the corresponding residuals as inputs in an ARX-model *** ar=arx(y,na+nc,maxsize,T,0); e=filter([1 ar.'],1,y); ac=arx([y e],[na nc 1],maxsize,T,0); c=fstab([1 ac(na+1:na+nc).']); % *** construct instruments *** x=[zeros(nc,1);y(1:Ncap-nc)]; cc=conv(c,c); x=filter(1,cc,x); TH=ivx(y,na,x,maxsize,T);e=pe(y,TH); V=e'*e/Ncap; yf=filter(1,c,y); ef=filter(1,c,e); M=floor(maxsize/(na+nc)); R=zeros(na+nc); for k1=max(na,nc):M:Ncap-1 jj=(k1+1:min(Ncap,k1+M)); psi=zeros(length(jj),na+nc); for k=1:na, psi(:,k)=yf(jj-k);end for k=1:nc, psi(:,na+k)=ef(jj-k);end R=R+psi'*psi; end P=V*inv(R); TH(1,1)=V; TH(2,1)=V*(1+na/Ncap)/(1-na/Ncap); TH(4:3+na,1:na)=P(1:na,1:na); TH(2,7)=10;