private Assignment sampleAssignmentRec (JunctionTree jt, Assignment assn, VarSet varSet) { Factor marg = jt.getCPF (varSet); Factor slice = marg.slice (assn); Assignment sampled = slice.sample (r); assn = Assignment.union (assn, sampled); for (Iterator it = jt.getChildren (varSet).iterator(); it.hasNext();) { VarSet child = (VarSet) it.next (); Assignment other = sampleAssignmentRec (jt, assn, child); assn = Assignment.union (assn, other); } return assn; }
private Assignment sampleAssignmentRec (JunctionTree jt, Assignment assn, VarSet varSet) { Factor marg = jt.getCPF (varSet); Factor slice = marg.slice (assn); Assignment sampled = slice.sample (r); assn = Assignment.union (assn, sampled); for (Iterator it = jt.getChildren (varSet).iterator(); it.hasNext();) { VarSet child = (VarSet) it.next (); Assignment other = sampleAssignmentRec (jt, assn, child); assn = Assignment.union (assn, other); } return assn; }
private Assignment sampleAssignmentRec (JunctionTree jt, Assignment assn, VarSet varSet) { Factor marg = jt.getCPF (varSet); Factor slice = marg.slice (assn); Assignment sampled = slice.sample (r); assn = Assignment.union (assn, sampled); for (Iterator it = jt.getChildren (varSet).iterator(); it.hasNext();) { VarSet child = (VarSet) it.next (); Assignment other = sampleAssignmentRec (jt, assn, child); assn = Assignment.union (assn, other); } return assn; }
public void testSample () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new UniNormalFactor (var, -1.0, 2.0); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 10000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); double std = MatrixOps.stddev (vals); assertEquals (-1.0, mean, 0.025); assertEquals (Math.sqrt(2.0), std, 0.01); }
public void testSample () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new UniNormalFactor (var, -1.0, 2.0); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 10000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); double std = MatrixOps.stddev (vals); assertEquals (-1.0, mean, 0.025); assertEquals (Math.sqrt(2.0), std, 0.01); }
public void testSample () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new UniformFactor (var, -1.0, 1.5); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 10000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); assertEquals (0.25, mean, 0.01); }
public void testSample () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new BetaFactor (var, 0.7, 0.5); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 100000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); assertEquals (0.7 / (0.5 + 0.7), mean, 0.01); }
public void testSample2 () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new BetaFactor (var, 0.7, 0.5, 3.0, 8.0); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 100000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); assertEquals (5.92, mean, 0.01); }
public void testSample () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new BetaFactor (var, 0.7, 0.5); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 100000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); assertEquals (0.7 / (0.5 + 0.7), mean, 0.01); }
public void testSample2 () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new BetaFactor (var, 0.7, 0.5, 3.0, 8.0); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 100000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); assertEquals (5.92, mean, 0.01); }
public void testSample () { Variable var = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Factor f = new UniformFactor (var, -1.0, 1.5); TDoubleArrayList lst = new TDoubleArrayList (); for (int i = 0; i < 10000; i++) { Assignment assn = f.sample (r); lst.add (assn.getDouble (var)); } double[] vals = lst.toNativeArray (); double mean = MatrixOps.mean (vals); assertEquals (0.25, mean, 0.01); }
public void testSample () { Variable v1 = new Variable (Variable.CONTINUOUS); Variable v2 = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Vector mu = new DenseVector (new double[] { 1.0, 2.0 }); Matrix var = new DenseMatrix (new double[][] {{ 0.5, 2.0 }, { 0, 1 }}); // Matrix var = new DenseMatrix (new double[][] {{ 0.5, 2.0 }, { 2.0, 0.75 }}); VarSet vars = new HashVarSet (new Variable[] { v1, v2 }); Factor f = new NormalFactor (vars, mu, var); TDoubleArrayList v1lst = new TDoubleArrayList (); TDoubleArrayList v2lst = new TDoubleArrayList (); for (int i = 0; i < 100000; i++) { Assignment assn = f.sample (r); v1lst.add (assn.getDouble (v1)); v2lst.add (assn.getDouble (v2)); } checkMeanStd (v1lst, 1.0, Math.sqrt (1/0.5)); checkMeanStd (v2lst, 2.0, Math.sqrt (1/0.75)); }
public void testSample () { Variable v1 = new Variable (Variable.CONTINUOUS); Variable v2 = new Variable (Variable.CONTINUOUS); Randoms r = new Randoms (2343); Vector mu = new DenseVector (new double[] { 1.0, 2.0 }); Matrix var = new DenseMatrix (new double[][] {{ 0.5, 2.0 }, { 0, 1 }}); // Matrix var = new DenseMatrix (new double[][] {{ 0.5, 2.0 }, { 2.0, 0.75 }}); VarSet vars = new HashVarSet (new Variable[] { v1, v2 }); Factor f = new NormalFactor (vars, mu, var); TDoubleArrayList v1lst = new TDoubleArrayList (); TDoubleArrayList v2lst = new TDoubleArrayList (); for (int i = 0; i < 100000; i++) { Assignment assn = f.sample (r); v1lst.add (assn.getDouble (v1)); v2lst.add (assn.getDouble (v2)); } checkMeanStd (v1lst, 1.0, Math.sqrt (1/0.5)); checkMeanStd (v2lst, 2.0, Math.sqrt (1/0.75)); }