function [pM,Mp] = predobs(fitps,Mc,dbtype); % function [pM,Mp] = predobs(fitps,Mc,dbtype); % pM = predicted confusion probabilities % Mp = observed confusion probabilities % fitps = output from grtfit % Mc = observed confusion frequencies % dbtype = decision bound type; linear, piecewise, or maxpost [nstim,nresp,nbr] = size(Mc); m = [fitps(1).maa fitps(1).mab fitps(1).mba fitps(1).mbb]; c = zeros(2,2,4); c(:,:,1) = fitps(1).caa; c(:,:,2) = fitps(1).cab; c(:,:,3) = fitps(1).cba; c(:,:,4) = fitps(1).cbb; if nbr==5 if strcmp(dbtype,'maxpost') dbp(1,:) = [fitps.c1aa fitps.c1ab fitps.c1ba fitps.c1bb]; dbp(2,:) = [fitps.c2aa fitps.c2ab fitps.c2ba fitps.c2bb]; dbp(3,:) = [fitps.c3aa fitps.c3ab fitps.c3ba fitps.c3bb]; dbp(4,:) = [fitps.c4aa fitps.c4ab fitps.c4ba fitps.c4bb]; dbp(5,:) = [fitps.c5aa fitps.c5ab fitps.c5ba fitps.c5bb]; else dbp(1,:) = [fitps.ax fitps.bx fitps.cx1 fitps.dx1 fitps.sx]; dbp(2,:) = [fitps.ay fitps.by fitps.cy2 fitps.dy2 fitps.sy]; dbp(3,:) = [fitps.ax fitps.bx fitps.cx3 fitps.dx3 fitps.sx]; dbp(4,:) = [fitps.ay fitps.by fitps.cy4 fitps.dy4 fitps.sy]; dbp(5,:) = [fitps.ax fitps.bx fitps.cx5 fitps.dx5 fitps.sx]; dbp(6,:) = [fitps.ay fitps.by fitps.cy3 fitps.dy3 fitps.sy]; end elseif nbr==1 if strcmp(dbtype,'maxpost') dbp(1,:) = [fitps.waa fitps.wab fitps.wba fitps.wbb]; else dbp(1,:) = [0 0 fitps.cx fitps.dx 0]; dbp(2,:) = [0 0 fitps.cy fitps.dy 0]; end end % bin widths bin = .05; [dist,x,y] = bivar_norm(m,c,bin); dec = logical(dec_reg(dbtype,dist,x,y,dbp,nbr)); pM = zeros(nstim,nresp,nbr); binsize = bin^2; for id = 1:nbr % base rate condition for s = 1:nstim % stimulus pdf = dist(:,:,s); for r = 1:nresp % response pM(s,r,id) = max(binsize*sum( sum( pdf( dec(:,:,r,id) ) ) ),eps); end end end for id = 1:nbr for s = 1:nstim pM(s,:,id) = pM(s,:,id)/sum(pM(s,:,id)); end end Mp = zeros(nstim,nresp,nbr); for ci = 1:nbr for si = 1:nstim Mp(si,:,ci) = Mc(si,:,ci)/sum(Mc(si,:,ci)); end end pp = reshape(pM,nstim*nresp*nbr,1); op = reshape(Mp,nstim*nresp*nbr,1); %hfig = figure; hold on hax = gca; plot(op,pp,'k.','LineWidth',2) set(hax,'XLim',[0 1],'YLim',[0 1],'XTick',[0 1],'YTick',[0 1]) axis square % xlabel('obs','FontSize',12) % ylabel('pr','FontSize',12) %xlabel('observed probability','FontSize',14) %ylabel('predicted probability','FontSize',14) plot([0 1],[0 1],'k:') %text(.02,.96,label,'FontName','Times','FontSize',16);