www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xregmodel/InitStore.m
function [m, OK] = InitStore(m, X, y, bd, doRinvCalc) %INITSTORE Peform the initialization store of variance values % % [M, OK] = INITSTORE(M, X, Y, BD, DORINVCALC) % % See also XREGLINEAR\INITSTORE, XREGMODEL\VAR. % Copyright 2000-2006 The MathWorks, Inc. and Ford Global Technologies, Inc. % The variance parameters only get stored if doRinvCalc is not present or is % true. Thus if it's given and false, just return ok=true and return. if nargin >= 5 && ~doRinvCalc, OK = true; return end if nargin >= 3, y= ytrans(m,y); if nargin >= 4, if ~islogical(bd) BDL= false(size(X,1),1); BDL(bd)= true; else BDL= bd; end else BDL= ~isfinite(y); end X(BDL,:)= []; y(BDL)= []; end if ~isempty( X ), FX = CalcJacob( m, X ); [Q, R, OK, df, Ri] = i_qr_ols( m, FX ); else OK = false; end if nargin >= 3 && OK, % calculate MSE %% r = y - Q*(Q'*y); r = y - eval( m, X ); if df > 0, mse = sum( r.^2 )/df; else mse = 0; end else mse = 1; end % store variance info if OK m = var( m, Ri*sqrt( mse ), mse, df ); else m = var( m, [], 0, Inf ); end %------------------------------------------------------------------------------| function [Q,R,OK,df, Ri] = i_qr_ols(m,X) [Q,R,OK]= xregqr(X); df = size(Q,1)-size(R,1); if nargout > 4 if OK Ri = inv(R); else Ri = []; end end