No BSD License  

Highlights from
Ordinal Data Modeling

image thumbnail
from Ordinal Data Modeling by Valen Johnson
Companion Software

example.m
% EXAMPLE.M
% -------------------------------------------------------------------
% MATLAB 5 ROUTINES FOR COMPUTATIONS IN CHAPTER 6
%--------------------------------------------------------------------  
%  Jim Albert - June 14, 1998
%-------------------------------------------------------------

%---------------------------------------------------------------------
% plot some sample item response curves
%
% let theta (latent ability) take 50 values equally spaced between -3 and 4

theta=linspace(-3,3,50);

%---------------------------------------------------------------------
% computes P(y=1 | theta) for a=1, b=0
% plots probability as a function of theta

figure(1)
p1=ir_curve(theta,1,0);              
plot(theta,p1);
xlabel('LATENT ABILITY'); ylabel('PROBABILITY OF CORRECT RESPONSE')

%---------------------------------------------------------------------
% plots three item response curves on same scale
%

figure(2)
p2=ir_curve(theta,1,-1);
p3=ir_curve(theta,1,1);
plot(theta,p1,'-',theta,p2,':',theta,p3,'--')
xlabel('LATENT ABILITY'); ylabel('PROBABILITY OF CORRECT RESPONSE')
legend('a=1,b=0','a=1,b=-1','a=1,b=1',2)

%---------------------------------------------------------------------
% student ratings dataset described in Chapter 6
% ratings.dat is a 120 by 107 matrix of 0's and 1's
%    - rows correspond to the 120 students that are judged
%    - columns correspond to the 107 judges who rated students
%    - matrix value of 1 corresponds to a correct response, 0 to an incorrect
%    - response

load ratings.dat           % load data

%---------------------------------------------------------------------
% fit Bayesian two-parameter item response model with probit link
% assume:
%     1.  theta_1, ..., theta_n are independent N(0, 1)
%     2.  a_1, ..., a_k are independent N(0, s_a)
%     3.  b_1, ..., b_k are independent N(0, s_b)
%     m iterations of Gibbs sampling
% output is matrix av of simulated values of a, matrix bv of simulated values of
% b, vector th_m of posterior means of theta, and vector th_s of standard deviations of
% theta

s_a=1; s_b=1; m=500;
[av,bv,th_m,th_s]=item_r(ratings,s_a,s_b,m);

%---------------------------------------------------------------------
% compute simulated sample of biserial correlation r and probability of 
% correct response p

r=av./sqrt(1+av.^2);
p=phi(-bv./sqrt(1+av.^2));

%---------------------------------------------------------------------
% compute posterior means of r and p
% construct scatterplot where plotting points are labels of judges

figure(4)
k=size(ratings,2);
t='1'; for i=2:k,t=str2mat(t,num2str(i));end % matrix containing labels
plot(mean(p),mean(r),'.')
text(mean(p),mean(r),t)
xlabel('P');ylabel('R')

%---------------------------------------------------------------------
% construct errorbar graphs of the slope parameters a
% 5th, 50th, and 95th percentiles of all of the parameters stored in the matrix a_summ

figure(5)
a_summ=plotpost(av,'y');
xlabel('JUDGE NUMBER');ylabel('SLOPE PARAMETER')

%---------------------------------------------------------------------
% posterior estimation of item response curve
%
% theta - vector of values of latent trait
% av - matrix of simulated values of item response parameters a
% gv - matrix of simulated values of item response parameters b
% 
% in the following, pr is the matrix of medians of phi(a theta - b),
% lo is matrix of 5th percentiles of phi(a theta - b) and hi is matrix
% of 95th percentiles of phi(a theta - b) (rows correspond to theta and columns
% to items)

theta=linspace(-3,3,20);
[pr,lo,hi]=irtpost(av,bv,theta);

%---------------------------------------------------------------------
% graph posterior density of item response curve for judge 25

figure(6)
plot(theta,pr(:,25),'-',theta,lo(:,25),':',theta,hi(:,25),':')
xlabel('LATENT TRAIT');ylabel('PROBABILITY')

%---------------------------------------------------------------------
% ALTERNATIVE FITS
%---------------------------------------------------------------------

%---------------------------------------------------------------------
% fit of 2-parameter model with logistic link function
% slopes are independent N(0, sa); intercepts are independent N(0, sb)
% m is number of iterations in MCMC run

sa=1; sb=1; m=500;
[av,bv,th_m,th_s]=l_itemr(ratings,sa,sb,m);

%---------------------------------------------------------------------
% fit of 1-parameter model with probit link
% item intercepts are independent N(0, sb)
% m is number of iterations in MCMC run

sb=1; m=500;
[bv,th_m,th_s]=item_r1(ratings,sb,m);

%---------------------------------------------------------------------
% fit of 2-parameter probit model with exchangeable prior (section 6.10)
% ab - vector [a b] of hyperparameters of prior on variance s^2
% m is number of iterations in MCMC run
% in output, av and bv are matrices of simulated values of item parameters,
% th_m and th_s are means and standard deviations of latent traits, and av_m
% and av_s2 are vectors of simulated values of second-stage hyperparameters mu
% and tau^2.

ab=[1 1]; m=500;
[av,bv,th_m,th_s,av_m,av_s2]=item_r_h(ratings,ab,m);

Contact us at files@mathworks.com