www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xregnnet/summary.m
function [s,list,SummStatsType,Description]= summary(m,Criteria,X,y,s2full,s2mle) %XREGNNET/SUMMARY % % [s,list,SummStats] = SUMMARY(m, Criteria, X, Y); % [s,list,SummStats] = SUMMARY(m, Criteria, X, Y, s2full); % [MINorMAX,list,SummStats]= summary(m) returns a list of criteria and whether % to use as summary % % Criteria list = {'RMSE','R^2','R^2 adj','-2logL','AIC','AICc','BIC'} % Copyright 2000-2006 The MathWorks, Inc. and Ford Global Technologies, Inc. list= {'RMSE','R^2','R^2 adj','-2logL','AIC','AICc','BIC'}; SummStatsType= [-1 -1 1 2 2 2 2]; % don't use RMSE as summary stats (calculated in stats method if nargout>3 Description= {'Root Mean Square Error' 'sqrt(SSE/(N-p))' 'R^2' '1 - SSE/SST' 'Adjusted R^2' '1 - SSE/SST*(N-1)/(N-p)' '-2 * log likelihood' 'N*log(SSE/N)' 'Akaike Information Criteria' '-2logL + 2*(p+1)' 'Small Sample Akaike Information Criteria' '-2logL + 2(p+1)*N/(N-p)' 'Bayesian Information Criteria' '-2logL + 2*log(N)*(p+1)'}; end if nargin<2 % true indicates minimise and false maximise s= true(size(list)); s(2:3)= false; return end if ischar(Criteria) switch lower(Criteria) case 'all' sel= 1:length(list); case 'data' sel= find(abs(SummStatsType)~=1); case 'summary' sel= find(abs(SummStatsType)~=0); case 'multi' sel= find(SummStatsType<=0); otherwise sel= find(ismember(list,Criteria)); end elseif iscell(Criteria) sel= find(ismember(list,Criteria)); elseif islogical(Criteria) sel= find(Criteria); else sel= Criteria; end [ri,mse,df] = var(m);% degrees of freedom sse= sum( (y-eval(m,X)).^2 ); % assume df= nObs-p nObs= size(y,1); if ~isfinite(df) df= nObs-numParams(m); end if nargin<6 s2mle= sse/nObs; end s= zeros(1,length(sel)); for i=1:length(sel) switch sel(i) case 1 % RMSE s(i) = sqrt(mse); case 2 sst = sum((y-mean(y)).^2); % R^2 if sst>0 s(i)= 1-sse/sst; else s(i)= 1; end case 3 sst = sum((y-mean(y)).^2); dfT= nObs-1; %Adjusted R-squared statistic if dfT==0 adj_rsq= NaN; else if sst>0 adj_rsq = 1-(mse/(sst/dfT)); elseif df>0 adj_rsq = 1 - dfT/df; else adj_rsq = NaN; end end s(i)= adj_rsq; case 4 % log likelihood actually -2logL if s2mle~=0 s(i)= nObs*log(s2mle); else s(i)= NaN; end case 5 % Akaike Information Criteria K= nObs-df+1; % note variance is included as a parameter if s2mle~=0 s(i) = nObs*log(s2mle) + 2*K; else s(i)= NaN; end case 6 % AICc Akaike Information Criteria for small samples K= nObs-df+1; if s2mle~=0 s(i) = nObs*log(s2mle) + 2*K + 2*K*(K+1)/(nObs-K-1); else s(i)= NaN; end case 7 % Bayesian Information Criteria K= nObs-df+1; if s2mle~=0 s(i) = nObs*log(s2mle) + log(nObs)*K; else s(i)= NaN; end end end