% pooling function finpre=poolt(ypred) global my m sn T ymin ymax yl1 yl2 fbar=1/my; % pre-prior pdf for mod=2:m for t=m+1:T for s=1:sn-2 for p=1:mod for dis=1:s pred(dis,(p-1)*(sn-2)+s)=ypred(1+(s-1)*my+(p-1)*my*(sn-2),t)/s; end pred(s+1,(p-1)*(sn-2)+s)=ypred(2+(s-1)*my+(p-1)*my*(sn-2),t); for dis=s+2:sn pred(dis,(p-1)*(sn-2)+s)=ypred(3+(s-1)*my+(p-1)*my*(sn-2),t)/(sn-s-1); end end end % matrix F for k=1:mod*(sn-2) for l=1:mod*(sn-2) f(k,l)=0; for i=1:sn f(k,l)=f(k,l)+log(pred(i,k))*log(pred(i,l))*fbar; end end end % maxium eigenvector v v=ones(mod*(sn-2),1); epsilon0=0.001; epsilon=2*epsilon0; while epsilon>epsilon0 vbar=f*v/sqrt(v'*f'*f*v); epsilon=(vbar-v)'*(vbar-v); v=vbar; end v=v/norm(v); alpha=rank(f)/(v'*ones(mod*(sn-2),1)); sum=0; for i=1:sn f0(i)=1; for j=1:mod*(sn-2) f0(i)=f0(i)*pred(i,j)^(alpha*v(j)); end sum=sum+f0(i); end f0=f0/sum; finpre(mod,t)=0; for lev=2:sn-1 finpre(mod,t)=finpre(mod,t)+(ymin+(ymax-ymin)/(2*sn)+(ymax-ymin)*(lev-1)/(sn))*f0(lev); end finpre(mod,t)=finpre(mod,t)+ymin*f0(1)+ymax*f0(sn); end end