No BSD License  

Highlights from
Ordinal Data Modeling

image thumbnail
from Ordinal Data Modeling by Valen Johnson
Companion Software

[summ_fitted,summ_resid]=lfitted(Mb,data,link)
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)));

Contact us at files@mathworks.com