private static double mean (Factor factor) { if (factor.varSet ().size() != 1) throw new IllegalArgumentException ("mean() only works on Factors of size 1, tried "+factor); Variable v0 = factor.varSet ().get (0); double mean = 0.0; for (AssignmentIterator it = factor.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); int val0 = assn.get (v0); mean += factor.value (assn) * val0; } return mean; }
private static double mean (Factor factor) { if (factor.varSet ().size() != 1) throw new IllegalArgumentException ("mean() only works on Factors of size 1, tried "+factor); Variable v0 = factor.varSet ().get (0); double mean = 0.0; for (AssignmentIterator it = factor.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); int val0 = assn.get (v0); mean += factor.value (assn) * val0; } return mean; }
private static double mean (Factor factor) { if (factor.varSet ().size() != 1) throw new IllegalArgumentException ("mean() only works on Factors of size 1, tried "+factor); Variable v0 = factor.varSet ().get (0); double mean = 0.0; for (AssignmentIterator it = factor.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); int val0 = assn.get (v0); mean += factor.value (assn) * val0; } return mean; }
public void testBpJoint () { for (int mdlIdx = 0; mdlIdx < trees.length; mdlIdx++) { FactorGraph mdl = trees[mdlIdx]; Inferencer bp = new TreeBP (); BruteForceInferencer brute = new BruteForceInferencer (); brute.computeMarginals (mdl); bp.computeMarginals (mdl); for (AssignmentIterator it = mdl.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); assertEquals (brute.lookupJoint (assn), bp.lookupJoint (assn), 1e-15); } } }
public void testBpJoint () { for (int mdlIdx = 0; mdlIdx < trees.length; mdlIdx++) { FactorGraph mdl = trees[mdlIdx]; Inferencer bp = new TreeBP (); BruteForceInferencer brute = new BruteForceInferencer (); brute.computeMarginals (mdl); bp.computeMarginals (mdl); for (AssignmentIterator it = mdl.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); assertEquals (brute.lookupJoint (assn), bp.lookupJoint (assn), 1e-15); } } }
public static double corr (Factor factor) { if (factor.varSet ().size() != 2) throw new IllegalArgumentException ("corr() only works on Factors of size 2, tried "+factor); Variable v0 = factor.varSet ().get (0); Variable v1 = factor.varSet ().get (1); double eXY = 0.0; for (AssignmentIterator it = factor.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); int val0 = assn.get (v0); int val1 = assn.get (v1); eXY += factor.value (assn) * val0 * val1; } double eX = mean (factor.marginalize (v0)); double eY = mean (factor.marginalize (v1)); return eXY - eX * eY; }
public static double corr (Factor factor) { if (factor.varSet ().size() != 2) throw new IllegalArgumentException ("corr() only works on Factors of size 2, tried "+factor); Variable v0 = factor.varSet ().get (0); Variable v1 = factor.varSet ().get (1); double eXY = 0.0; for (AssignmentIterator it = factor.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); int val0 = assn.get (v0); int val1 = assn.get (v1); eXY += factor.value (assn) * val0 * val1; } double eX = mean (factor.marginalize (v0)); double eY = mean (factor.marginalize (v1)); return eXY - eX * eY; }
public static double corr (Factor factor) { if (factor.varSet ().size() != 2) throw new IllegalArgumentException ("corr() only works on Factors of size 2, tried "+factor); Variable v0 = factor.varSet ().get (0); Variable v1 = factor.varSet ().get (1); double eXY = 0.0; for (AssignmentIterator it = factor.assignmentIterator (); it.hasNext();) { Assignment assn = (Assignment) it.next (); int val0 = assn.get (v0); int val1 = assn.get (v1); eXY += factor.value (assn) * val0 * val1; } double eX = mean (factor.marginalize (v0)); double eY = mean (factor.marginalize (v1)); return eXY - eX * eY; }
Assignment assn = (Assignment) it.next (); double trueProb = 1.0; for (int i = 0; i < vars.length; i++) trueProb *= normed[i].value (assn);
Assignment assn = (Assignment) it.next (); double trueProb = 1.0; for (int i = 0; i < vars.length; i++) trueProb *= normed[i].value (assn);