function [aa,hh]=hidprocplay if 0 keyboard mhid = 2; mobs = 2; n= 4; Ph = zeros(mhid^n,1); ii = [10 12 14 16]'; %Ph(1) = 1; %Ph(end) = 1; Ph(ii) = ii*0+1; Ph = pnormdim(Ph+1e-9,1) end load GENPROCDAT0 Ph=mPh,Poh=mPoh %Ph=roundto(Ph,-4) [mobs,mhid,n]=size(Poh) keyboard aa = []; hh=[]; for a=.01:.01:.5 Poh(1,1) = a; Poh(2,1) = 1-a; Poh(1,2) = 1-a; Poh(2,2) = a; Po = latentiifillprob(Ph,Poh,mhid,mobs,n); Po = pnormdim(Po+eps,1); [hh0,Hto,Ho] = gethhn(Po,mobs,n); [hh1,Hth,Hh] = gethhn(Ph,mhid,n); hr = hh0./hh1; %hr = hh0(2,3)./hh1(2,3); hr = hr(:); ii = find(isfinite(hr)); h = max(hr(ii)); aa(end+1) = a; hh(end+1) = h; end plot(aa,hh) return function [hh,Ht,H] = gethhn(P,m,n) hh = zeros(n); for i=1:n for j=i+1:n h = etaij(P,m,n,i,j); hh(i,j) = h; end end Ht = 1+sum(hh,2)'; H = max(Ht); return function [h,xim] = etaij(P,m,n,i,j) global A B C mobs mhid hhat h = 0; xim = 0; dims = repmat([m],[1 i-1]); for xi = 1:m^(i-1) X = ind2coord(xi,dims); hX = etaijX0(P,m,n,i,j,X); if hX > h h = hX; xim = xi; end end return function h = etaijX0(P,m,n,i,j,X) h = 0; for y1 = 1:m for y2 = y1+1:m P0 = getcondP(P,m,n,[j:n],[1:i],[X y1]); P1 = getcondP(P,m,n,[j:n],[1:i],[X y2]); h12 = .5*sum(abs(P0-P1)); %keyboard h = max(h,h12); end end return function [aa,hh]=hidprocplay0 load TMPDAT [mobs,mhid,n]=size(Poh1) i=3;j=4; Ph=Ph1; %Poh=Poh1; %Po = latentiifillprob(Ph,Poh,mhid,mobs,n); %[hh0,Hto,Ho] = gethhn(Po,mobs,n); %[hh1,Hth,Hh] = gethhn(Ph,mhid,n); %hh0./hh1 aa = []; hh=[]; for a=.001:.001:.1 Poh(1,1,1) = a; Poh(2,1,1) = 1-a; Poh(1,2,1) = 1-a; Poh(2,2,1) = a; %Poh=Poh1; %Poh(1,1,n) = a; %Poh(2,1,n) = 1-a; %Poh(1,2,n) = 1-a; %Poh(2,2,n) = a; Po = latentiifillprob(Ph,Poh,mhid,mobs,n); Po = pnormdim(Po+eps,1); [hh0,Hto,Ho] = gethhn(Po,mobs,n); [hh1,Hth,Hh] = gethhn(Ph,mhid,n); h = hh0(i,j)/hh1(i,j); aa(end+1) = a; hh(end+1) = h; end plot(aa,hh) return function printxmu(Ph,m,n) dims = repmat(m,[1 n]); xinds = list_all_ind(dims); cr = '\\'; bs = '\'; for i=1:size(xinds,1) x = xinds(i,:); xi = coord2ind(x,dims); xstr = num2str(x-1); xstr = strrep(xstr,' ',''); mux = Ph(xi); fprintf('%smyf{%s} & %smyf{%1.6f} %s \n',bs,xstr,bs,mux,cr); end return