annotate toolboxes/FullBNT-1.0.7/bnt/examples/static/nodeorderExample.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 % example to illustrate why nodes must be numbered topologically.
Daniel@0 2 % Due to Shinya OHTANI <ohtani@pdp.crl.sony.co.jp>
Daniel@0 3 % 9 June 2004
Daniel@0 4
Daniel@0 5 %%%%%%%%% WRONG RESULTS because 2 -> 1
Daniel@0 6 % should have P(parent|no evidence) = prior = [03. 0.7]
Daniel@0 7
Daniel@0 8 node = struct('ChildNode', 1, ...
Daniel@0 9 'ParentNode', 2);
Daniel@0 10
Daniel@0 11 adjacency = zeros(2);
Daniel@0 12 adjacency([node.ParentNode], node.ChildNode) = 1;
Daniel@0 13
Daniel@0 14 value = {{'TRUE'; 'FALSE'}, ...
Daniel@0 15 {'TRUE'; 'FALSE'}};
Daniel@0 16
Daniel@0 17 bnet = mk_bnet(adjacency, [2 2]);
Daniel@0 18 bnet.CPD{node.ChildNode} = tabular_CPD(bnet, node.ChildNode, [0.2 0.4 0.8 0.6]);
Daniel@0 19 bnet.CPD{node.ParentNode} = tabular_CPD(bnet, node.ParentNode, [0.3 0.7]);
Daniel@0 20
Daniel@0 21 evidence = cell(1,2);
Daniel@0 22 % evidence{node.ChildNode} = 1;
Daniel@0 23 % evidence{node.ParentNode} = 1;
Daniel@0 24
Daniel@0 25 engine = jtree_inf_engine(bnet);
Daniel@0 26 [engine, loglik] = enter_evidence(engine, evidence);
Daniel@0 27
Daniel@0 28
Daniel@0 29 marg = marginal_nodes(engine, node.ChildNode);
Daniel@0 30 disp(sprintf(' ChildNode : %8.6f %8.6f',marg.T(1),marg.T(2)) );
Daniel@0 31 marg = marginal_nodes(engine, node.ParentNode);
Daniel@0 32 disp(sprintf(' ParentNode : %8.6f %8.6f',marg.T(1),marg.T(2)) );
Daniel@0 33
Daniel@0 34 %
Daniel@0 35 % ChildNode : 0.534483 0.465517
Daniel@0 36 % ParentNode : 0.155172 0.844828
Daniel@0 37 % loglik = 0.15
Daniel@0 38
Daniel@0 39
Daniel@0 40
Daniel@0 41 %%%%%%%%% RIGHT RESULTS because 1 -> 2
Daniel@0 42
Daniel@0 43 node = struct('ChildNode', 2, ...
Daniel@0 44 'ParentNode', 1);
Daniel@0 45
Daniel@0 46
Daniel@0 47 adjacency = zeros(2);
Daniel@0 48 adjacency([node.ParentNode], node.ChildNode) = 1;
Daniel@0 49
Daniel@0 50 value = {{'TRUE'; 'FALSE'}, ...
Daniel@0 51 {'TRUE'; 'FALSE'}};
Daniel@0 52
Daniel@0 53 bnet = mk_bnet(adjacency, [2 2]);
Daniel@0 54 bnet.CPD{node.ChildNode} = tabular_CPD(bnet, node.ChildNode, [0.2 0.4 0.8 0.6]);
Daniel@0 55 bnet.CPD{node.ParentNode} = tabular_CPD(bnet, node.ParentNode, [0.3 0.7]);
Daniel@0 56
Daniel@0 57 evidence = cell(1,2);
Daniel@0 58 % evidence{node.ChildNode} = 1;
Daniel@0 59 % evidence{node.ParentNode} = 1;
Daniel@0 60
Daniel@0 61 engine = jtree_inf_engine(bnet);
Daniel@0 62 [engine, loglik] = enter_evidence(engine, evidence);
Daniel@0 63
Daniel@0 64
Daniel@0 65 marg = marginal_nodes(engine, node.ChildNode);
Daniel@0 66 disp(sprintf(' ChildNode : %8.6f %8.6f',marg.T(1),marg.T(2)) );
Daniel@0 67 marg = marginal_nodes(engine, node.ParentNode);
Daniel@0 68 disp(sprintf(' ParentNode : %8.6f %8.6f',marg.T(1),marg.T(2)) );