function [summ_fitted,summ_resid]=lfitted(Mb,data,link)
% LFITTED Summarizes posterior distribution for fitted probabilities
% and residual distributions.
%
% [SUMM_FITTED,SUMM_RESID]=LFITTED(MB,DATA,LINK) returns 5th, 50th, and
% 95th percentiles of fitted probabilities (SUMM_FITTED) and residuals
% (SUMM_RESID), where MB is the matrix of simulated values from the
% posterior distribution, DATA is the data matrix [y n x], and LINK is
% the link function ('l' for logit, 'p' for for probit, and 'c' for
% complementary log-log).
%-------------------------------------------------------------
% Jim Albert - May 15, 1998
%-------------------------------------------------------------
N=size(data,1);
p=size(data,2);
y=data(:,1); n=data(:,2); x=data(:,3:p);
m=size(Mb,1);
probs=[.05 .5 .95];
k=length(probs);
summ_fitted=zeros(N,k);
summ_resid=zeros(N,k);
cp=((1:m)-.5)/m;
for i=1:N
lp=(x(i,:)*Mb')';
p=g(lp,link);
summ_fitted(i,:)=interp1(cp,sort(p),probs);
residual=y(i)-summ_fitted(i,:);
summ_resid(i,:)=residual([3 2 1]);
end
function p=g(eta,link)
if link=='l'
p=exp(eta)./(1+exp(eta));
elseif link=='p'
p=phi(eta);
elseif link=='c'
p=1-exp(-exp(eta));
end
function val=phi(x)
val=.5*(1+erf(x/sqrt(2)));