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; }