Chapter 6: vernier setting precision
Chapter 6: vernier setting precision
To understand how the evidence for a bias follows the size of the true bias, we will simulate a dataset and vary its mean from left to right of the no-bias point, computing and plotting the evidence in each case.
%%% Model likelihoods and evidence
sig0=.1; sigprime=2.5*sig0; dat=randn([10,1]); dat=dat-mean(dat); N=length(dat);
COL={.4*[1 1 1],.8*[1 1 1]};
murange=[-2*sig0 2*sig0]; Dmu=diff(murange); %don't expect any large biases
sigrange=[sig0/2 10*sig0/2]; dlsig=diff(log(sigrange));
Nmu=201; mus=linspace(murange(1),murange(2),Nmu);
Nsig=201; sigs=linspace(sigrange(1),sigrange(2),Nsig)';
lgpdf=@(x,munow,signow) -log(signow*ones(1,Nmu))-.5*log(2*pi)-.5*((x-ones(Nsig,1)*munow).^2./(signow*ones(1,Nmu)).^2);
Lprim=-log(Dmu); Lpris=-log(dlsig); %normalized log-priors
s=linspace(sigrange(1),sigrange(2),301); L=ones(size(s));
ind=[findnearestN(s,sig0,1) findnearestN(s,sigprime,1)];
for n=1:N, L=L.*npdf(dat(n)*sigprime,0,s); end
figure(3); clf; hold on;
plot(s,L,'k-','LineWidth',2.2);
stem(s(ind(1)),L(ind(1)),'k--','LineWidth',1.2); plot(s(ind(1)),L(ind(1)),'ko','MarkerFaceColor',COL{1},'MarkerSize',12,'LineWidth',1);
stem(s(ind(2)),L(ind(2)),'k--','LineWidth',1.2); plot(s(ind(2)),L(ind(2)),'ko','MarkerFaceColor',COL{2},'MarkerSize',12,'LineWidth',1);
xlabel(['dispersion parameter (\sigma)'],'FontName','Arial','FontSize',15)
ylabel('likelihood','FontName','Arial','FontSize',15)
Ns=31;
L1=nan(Ns,1); L2=nan(Ns,1); EV=nan(Ns,1);
slist=linspace(1.1*sigrange(1),.9*sigrange(2),Ns);
for i=1:Ns; snow=slist(i);
dnow=dat*snow;
L1tmp=zeros(1,Nmu); L2tmp=zeros(Nsig,Nmu);
for n=1:length(dnow),
L1tmp=L1tmp+lgpdf(dnow(n),mus,sig0); %single-sigma model
L2tmp=L2tmp+lgpdf(dnow(n),mus,sigs); end %uncertain-sigma model
L1(i)=logsum(L1tmp,[1 2]); %last term is to approximate integration
L2(i)=logsum(L2tmp+Lpris,[1 2]);
%%% compute evidence
EV(i)=10*(L2(i)-L1(i)); end
%%% plotting
figure(4); clf; hold on
ind=findnearestN(slist,sigprime,1);
plot(slist,L1,'ko','MarkerFaceColor',COL{1},'MarkerSize',8)
plot(slist,L2,'ko','MarkerFaceColor',COL{2},'MarkerSize',8)
xlabel(['dispersion'],'FontSize',15);
ylabel('model likelihood','FontName','Arial','FontSize',15);
figure(5); clf; hold on
plot(sigprime*[1 1],[-30 EV(ind)],'k:')
plot(slist(EV<0),EV(EV<0),'ko-','MarkerFaceColor',COL{1},'MarkerSize',9,'LineWidth',1);
plot(slist(EV>0),EV(EV>0),'ko-','MarkerFaceColor',COL{2},'MarkerSize',9,'LineWidth',1);
plot(sigrange,[0 0],'k--','LineWidth',2);
axis([sigrange -30 1000]);
xlabel(['dispersion'],'FontSize',15);
ylabel('evidence (db)','FontName','Arial','FontSize',15);