www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xreggpr/summary.m
function [s,list,SummStatsType,Description]= summary(m,Criteria,X,y,s2full,s2mle) %#ok<INUSD> %SUMMARY Return summary statistics for model % % [s,list,SummStats] = summary(m,Criteria,x,y); % [s,list,SummStats] = summary(m,Criteria,x,y,s2full); % [MINorMAX,list,SummStats] = summary(m, Criteria, X, Y) returns a list of % criteria and whether to use as summary. % % Criteria list = {'RMSE','PRESS RMSE','R^2',''logML','AIC','AICc','BIC'} % Copyright 2015 The MathWorks, Inc. list= {'RMSE','PRESS RMSE','R^2','logML'}; SummStatsType= [-1 -1 1 1]; % don't use RMSE as summary stats (calculated in stats method if nargout>3 Description= {'Root Mean Square Error' 'sqrt(SSE/N)' 'PRESS RMSE' 'sqrt(sum( (K/Ky*y./diag(inv(Ky)))^2 )/N)' 'R^2' '1 - SSE/SST' 'Marginal log likelihood' 'y''/Ky*y/2 + log(det(Ky)) + N/2*log(2pi)' }; end if nargin<2 % true indicates minimise and false maximise s = false(size(list)); s(1:2) = true; 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 s= NaN(1,length(sel)); if ~isfitted(m) return end mse = m.StatsGPR.Sigma.^2; res = y - resubPredict(m.StatsGPR); sse= sum( res.^2 ); % assume df= nObs-p nObs= size(y,1); for i=1:length(sel) switch sel(i) case 1 % RMSE s(i) = sqrt(mse); case 2 % PRESS RMSE if strcmpi(m.StatsGPR.PredictMethod,'Exact') sumStats = stats(m,'summary',X,y); s(i) = sumStats(4); end case 3 sst = sum((y-mean(y)).^2); % R^2 if sst>0 s(i)= 1-sse/sst; else s(i)= 1; end case 4 % Marginal Log Likelihood s(i) = m.LogML; end end