Chapter 6: multisource dispersion

%%% Biased Gaussian

%%% [models compare unbiased models that differ in whether dispersion is source specific or globsal]

clear %#ok<*UNRCH>

N=10; S=5;

COL={.4*[1 1 1],.8*[1 1 1]};

sigS=linspace(.2,10,S); sigG=mean(sigS)*ones(S,1);

Ns=501; slist=linspace(0,20,Ns+1)'; slist=slist(2:end); sn2=slist.^(-2);

slnrange=log(max(slist))-log(min(slist));

err0=nrand([S,N]);

for s=1:S, err0(s,:)=(err0(s,:)-mean(err0(s,:))); end

diffs=diff(slist(1:2));

ratlist=[0:.05:1]; Nrat=length(ratlist);

ML1=zeros(Nrat,1); ML2=zeros(Nrat,1);

for irat=1:Nrat, rnow=ratlist(irat);

Lall1=zeros(1); Lall2=zeros(Ns,1);

for s=1:S,

%%%%%%%%R%%%%%%%

%%% DATA SIM %%%

dnow=err0(s,:)*(sigG(s)*(1-rnow)+sigS(s)*(rnow));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% param likelihood by condition %%%

likeFN1=-(N/2)*sn2*mean((dnow).^2,2)'-(N+1)*log(slist); %output is Ns x 1

likeFN2=-(N/2)*sn2*mean((dnow).^2,2)'-(N )*log(slist); %output is Ns x 1

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% marginalize source-specific sig %%%

Lall1=Lall1+logsum(likeFN1,1,diffs)-log(slnrange);

Lall2=Lall2+likeFN2; end

ML1(irat)=Lall1; ML2(irat)=logsum(Lall2-log(slist)-log(slnrange),1,diffs); end


%%% compute evidence

EV=10*(ML2-ML1);

%%% plotting

figure(4); clf; hold on

plot(ratlist,ML1,'ko','MarkerFaceColor',COL{1},'MarkerSize',10)

plot(ratlist,ML2,'ko','MarkerFaceColor',COL{2},'MarkerSize',10)

plot([ratlist(1)-.1 ratlist(end)+.1],[0 0],'k:')

xlabel(['ratio of xSource to global \sigma'],'FontSize',15);

ylabel('model likelihood','FontName','Arial','FontSize',15);

r=axis; axis([ratlist(1)-.1 ratlist(end)+.1 r(3) max([r(4) 10])])

figure(5); clf; hold on

plot(ratlist([1 end]),[0 0],'k--','LineWidth',2);

plot(ratlist(EV<0),EV(EV<0),'ko','MarkerFaceColor',COL{1},'MarkerSize',12,'LineWidth',1);

plot(ratlist(EV>0),EV(EV>0),'ko','MarkerFaceColor',COL{2},'MarkerSize',12,'LineWidth',1);

r=axis; axis([ratlist(1)-.1 ratlist(end)+.1 r(3:4)]);

xlabel(['ratio of xSource to global \sigma'],'FontSize',15);

ylabel('evidence (db)','FontName','Arial','FontSize',15);