Chapter 4: gaussian prior predictive with unknown dispersion and sampling

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

%%% Gaussian Prior Predictive with unknown dispersion (F4.3) %%%

Nx=300; Ns=201; Nm=201; c=10;

xlist=linspace(-15,15,Nx); Mlist=linspace(-20,20,Nm); Slist=linspace(0,c,Ns+1); Slist=Slist(2:end);

Mnow=ones(Nx,1)*Mlist; xnow=xlist'*ones(1,Nm); Lnow=nan(Nx,Nm,Ns);

for i=1:Ns, Lnow(:,:,i)=-.5*(Mnow-xnow).^2/Slist(i)^2; end

Lnow(isnan(Lnow))=0; Lnow=Lnow-max(max(Lnow)); %nan generated when p=1

%%% F4.1a %%%

figure(5); clf; mesh(Mlist,Slist,exp(squeeze(Lnow(10,:,:)))); view(-100,35)

xlabel('x (data)','FontName','Arial','FontSize',13)

ylabel('\mu (parameter)','FontName','Arial','FontSize',13)

zlabel('p','FontName','Arial','FontSize',13)

%%% F4.1b %%%

pri=zeros(Nm,Ns)-ones(Nm,1)*log(Slist); pri=pri-max(max(pri));

figure(6); clf; mesh(Slist,Mlist,exp(pri)); view(-133.5,35); r=axis; axis([r(1:4) 0 1]);

xlabel('\sigma (parameter)','FontName','Arial','FontSize',13)

ylabel('\mu (parameter)','FontName','Arial','FontSize',13)

zlabel('p','FontName','Arial','FontSize',13)

%%% F4.1c %%%

pri=pri-logsum(pri,[1 2]); Pri=nan(size(Lnow));

for n=1:Nx, Pri(n,:,:)=pri; end; Pri=logsum(Pri,[1 2 3]);

Pnow=logsum(Lnow+Pri,[2 3]); Pnow=Pnow-logsum(Pnow);

figure(7); clf; plot(xlist,exp(Pnow),'ko','MarkerFaceColor','k','MarkerSize',8);

box off; axis([min(xlist)-.5 max(xlist)+.5 0 1.04*max(exp(Pnow))]);

ylabel('p','FontName','Arial','FontSize',13)

xlabel('x (data)','FontName','Arial','FontSize',13)

%%% F4.1d %%%

N=101; sig=Slist; mu=0;

cumpdrawn=rand(N,1);

tevald=xlist;

Pevald=Pnow;

sumPevald=sum(Pevald);

cumpevald=cumsum(exp(Pnow));

cumind=nan(N,1);

for nbr=1:N, cumind(nbr)=findnearestN(cumpevald,cumpdrawn(nbr),1); end

Gdraw=tevald(cumind);

figure(8); clf; hold on

[N X]=hist(Gdraw,51);

bar(X,N,'FaceColor',.25*[1 1 1])

box off; axis([min(tevald) max(tevald) 0 max(N)+1])

xlabel('x (location)','FontName','Arial','FontSize',13)