cooper_yoo.m

来自「基于贝叶斯网络的源程序」· M 代码 · 共 66 行

M
66
字号
% Do the example in Cooper and Yoo, "Causal discovery from a mixture of experimental and% observational data", UAI 99, p120N = 2;dag = zeros(N);A = 1; B = 2;dag(A,B) = 1;ns = 2*ones(1,N);bnet0 = mk_bnet(dag, ns);%bnet0.CPD{A} = tabular_CPD(bnet0, A, 'unif', 1);bnet0.CPD{A} = tabular_CPD(bnet0, A, 'CPT', 'unif', 'prior_type', 'dirichlet');bnet0.CPD{B} = tabular_CPD(bnet0, B, 'CPT', 'unif', 'prior_type', 'dirichlet');samples = [2 2;	   2 1; 	   2 2;	   1 1;	   1 2;	   2 2;	   1 1;	   2 2;	   1 2;	   2 1;	   1 1];clamped = [0 0;	   0 0;	   0 0;	   0 0;	   0 0;	   1 0;	   1 0;	   0 1;	   0 1;	   0 1;	   0 1];nsamples = size(samples, 1);% sequential versionLL = 0;bnet = bnet0;for l=1:nsamples  ev = num2cell(samples(l,:)');  manip = find(clamped(l,:)');  LL = LL + log_marg_lik_complete(bnet, ev, manip);  bnet = bayes_update_params(bnet, ev, manip);endassert(approxeq(exp(LL), 5.97e-7)) % compare with result from UAI paper% batch versioncases = num2cell(samples');LL2 = log_marg_lik_complete(bnet0, cases, clamped');bnet2 = bayes_update_params(bnet0, cases, clamped');assert(approxeq(LL, LL2))for j=1:N  s1 = struct(bnet.CPD{j}); % violate object privacy  s2 = struct(bnet2.CPD{j});  assert(approxeq(s1.CPT, s2.CPT))end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?