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)