www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xregrbf/sse_transform.m
function varargout = sse_transform(m,transform,X,Y,varargin) %SSE_TRANSFORM calculate SSE for a range of Box-Cox transform values % [sse,ci,TransformOutputs] = sse_transform(model,transform,X,Y,TransformParameters) % Computes the sse and confidence interval on data X and Y given transformation % transform % % For transform = 'boxcox' an optional TransformParameter Lambda_Range allows the sse % to be computed over a vector of possible lambda. If Lambda_Range is not included it % defaults to -3:0.5:3. Lambda_Range is returned in the TransformOutputs % Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc. switch(transform) case('boxcox') if isempty(varargin) || isempty(varargin{1}) LambdaRange = -3:0.5:3; else LambdaRange = varargin{1}; end % Loop through lambda, evaluating SSE at each value and store in SSE_DATA sse_data = NaN(size(LambdaRange)); for i=1:length(LambdaRange); lam = LambdaRange(i); set(m,'boxcox',{lam,double(Y)}); % define the BOXCOX Transform [x,y] = checkdata(m,X,Y); % transform the data [mf,OK] = calcWeights(m,x,y); % using the current centers, lambda (reg parameter), and width if OK Store = get(mf,'Store'); sse_data(i) = Store.mse; % one of which is SSE end end % Calculate the confidence interval, ci, df=dferror(mf); min_sse = min(sse_data); ci = min_sse*(1 + tinv(0.975,df)^2/df); varargout{1} = sse_data; varargout{2} = ci; varargout{3} = LambdaRange; end