Documentation of ivar


Global Index (short | long) | Local contents | Local Index (short | long)


Function Synopsis

TH=ivar(y,na,nc,maxsize,T)

Help text

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.

Cross-Reference Information

This function calls This function is called by

Listing of function ivar

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;