⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcmcsumm.m

📁 马尔可夫链
💻 M
字号:
% MCMCSUMM - Summary Statistics % Copyright (c) 1998, Harvard University. Full copyright in the file Copyright%%   [S] = mcmcsumm(A) %% A = r x c x s array of s samples of an r x c matrix of parameters%% S = structure containing returned values (mean, median, etc.)%   select components with S.mean, S.median, etc.%% Note: all summary statistics are marginal, there are no multivariate%   summaries at this time.%% These routines use the last dimension of an array as the% sample index.  So an array with dimension (nr,nc,ns) % will be a collection of ns samples of an nr by nc matrix of % parameters.  An array with dimension (nr,nc) will% be nc samples of an nr-vector of parameters.% When the summary statistics are calculated, the last dimension% is dropped.  % % See also: MCMCTRACE, MCMCLT%function [S] = mcmcsumm(A) if isnan(A), S.mean = NaN; S.min = NaN; S.max = NaN; S.std = NaN; S.sorted = NaN; S.median = NaN; S.meanvec = NaN; S.cov = NaN; S.acf= NaN; S.acf10max = NaN; S.acf10med = NaN; S.gr2 = NaN ; S.gr2max = NaN ;elsedd = size(A) ;ll = length(dd) ;if (ll==2),  aa = reshape(A, [dd(1),1,dd(2)]) ;else  aa = A ;end[nr,nc,ns] = size(aa) ;maxlag = min(100,ns-1) ;Z = zeros(nr,nc,ns) ;S = struct('mean',Z) ;S.mean = mean(aa,3) ;S.min = min(aa,[],3) ;S.max = max(aa,[],3) ;S.std = std(aa,0,3) ;S.sorted = NaN*zeros(nr,nc,ns) ;S.median = NaN*zeros(nr,nc) ;tmpvec = reshape(S.mean, nr*nc, 1) ;sel = ~isnan(tmpvec) ;S.meanvec = tmpvec(sel,:) ;aavec = reshape(aa, nr*nc, ns) ;aavec = aavec(sel,:) ;if nr>0 & nc>0 & ns>0,  % then there's something to work withS.cov = cov(aavec') ;for ir = 1:nr,for ic = 1:nc,  xx = reshape(aa(ir,ic,:),1,ns) ;  S.sorted(ir,ic,:) = sort(xx) ;  S.median(ir,ic) = median(xx) ;  xx0 = xx - mean(xx) ;  if S.max(ir,ic)-S.min(ir,ic) < .0000000001,    xc = NaN * zeros(1,2*maxlag+1) ;  else    xc = xcorr(xx0,xx0,maxlag,'coeff');   end   S.acf(ir,ic,:) = [xc(maxlag+(1:(maxlag+1)))] ;  S.acf1 = S.acf(:,:,2) ;end end if ns>10,  S.acf10 = S.acf(:,:,11) ;  tmpacf = reshape(S.acf10,1,nr*nc) ;  if any(~isnan(tmpacf)),    tmpacf = tmpacf(~isnan(tmpacf)) ;    S.acf10max = max(max( tmpacf )) ;    S.acf10med = median(median( tmpacf )) ;  else    S.acf10max = NaN ;    S.acf10med = NaN ;  endelse  S.acf10 = NaN*S.acf(:,:,1) ;  S.acf10max = NaN ;  S.acf10med = NaN ;endelse   % one of nr nc ns == 0  S.sorted(:,:,:) = A ;  S.median = A(:,:,1) ;  S.acf10max = NaN ;  S.acf10med = NaN ;  S.acf = NaN * zeros(nr,nc,maxlag+1) ;  S.acf1 = S.acf(:,:,2) ;  S.acf10 = S.acf(:,:,11) ;  S.cov = A(:,:,1) ;endS.gr2 = mcmcgr(A,2) ;S.gr2max = max(max(S.gr2)) ;end% end of NaN branch

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -