www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xregtwostage/covinit.m

    function TS= covinit(TS,Xgc,Yrf)
% TWOSTAGE/COVINIT initialise covariance for MLE

%  Copyright 2000-2005 The MathWorks, Inc. and Ford Global Technologies, Inc.



c = TS.covmodel;
if isempty(c)
   c= xregcovariance('','tscov');
end

if isempty(Xgc)
   TS.covmodel = update(c,[]);
else
   % get initial estimate
   Nf= length(TS.Global);
   Ns= size(Xgc,1);
   R= zeros(Ns,Nf);
   for i=1:Nf
      R(:,i)= lsqcost(TS.Global{i},code(TS.Global{i},Xgc),Yrf(:,i));
   end
	
   % GTS initialisation 
   % this is Steiner et al (biased) estimate
   G0= R'*R/max(1,Ns-1);
	
	s= svd(R);
	tol=s(1)*eps*max(R(:))*4;
	if length(s)<size(G0,1) ||  s(end) < tol
		G0= diag(diag(G0)); % + eye(size(G0))*tol
	end

	
   % could use diag(diag(G0))
   % G0= diag(diag(G0));
   % 
   TS.covmodel=  covupdate(c,G0);
end