function bnet_miss = gener_MAR_net(bnet_orig, base_proba) % function bnet_miss = gener_MAR_net(bnet_orig, base_proba) % % bnet_orig : a bnet % base_proba : a probability for value to be missing % % bnet_miss : a bnet that could be used in gener_data_from_bnet_miss function % to generate incomplete MAR dataset % % Francois.Olivier.C.H@gmail.com %%%%%%%%%%%% INIT if nargin<2, error('Not enougth arguments'); end % création du réseau dag = bnet_orig.dag; N = size(dag,2); ns = bnet_orig.node_sizes; ns_miss = zeros(1,3*N); ns_miss(1:N) = ns; ns_miss(N+1:2*N) = 2*ones(1,N); % 1= node i-N present, 2= node i-N missing ns_miss(2*N+1:3*N) = ns+1; % 1:ns, absent dag_miss = zeros(3*N,3*N); dag_miss(1:N,1:N) = dag; % dag_miss(2*N+1:3*N,N+1:2*N)=mk_rnd_dag(N,N-ceil(rand*N/2)); lim = 1+(rand>.4)+(rand>.65)+(rand>.9); dag_miss(2*N+1:3*N,N+1:2*N)=mk_rnd_dag(N,lim); for i=1:N, dag_miss(i,2*N+i)=1; dag_miss(N+i,2*N+i)=1; dag_miss(2*N+i,i)=0; dag_miss(2*N+i,N+i)=0; end bnet_miss = mk_bnet(dag_miss, ns_miss); CPT = CPT_from_bnet(bnet_orig, 0); for i=1:N bnet_miss.CPD{i} = tabular_CPD (bnet_miss, i, CPT{i}); end % CPD of nodes M for i=1:N, if find(bnet_miss.order==i)