public void test1() { for (int r = 0; r < 1; r++) { Graph mim = DataGraphUtils.randomSingleFactorModel(5, 5, 6, 0, 0, 0); Graph mimStructure = structure(mim); SemImInitializationParams params = new SemImInitializationParams(); params.setCoefRange(.5, 1.5); SemPm pm = new SemPm(mim); SemIm im = new SemIm(pm, params); DataSet data = im.simulateData(300, false); String algorithm = "FOFC"; Graph searchGraph; List<List<Node>> partition; if (algorithm.equals("FOFC")) { FindOneFactorClusters fofc = new FindOneFactorClusters(data, TestType.TETRAD_WISHART, 0.001); searchGraph = fofc.search(); partition = fofc.getClusters(); } else if (algorithm.equals("BPC")) { TestType testType = TestType.TETRAD_WISHART; TestType purifyType = TestType.TETRAD_BASED2; BuildPureClusters bpc = new BuildPureClusters(data, 0.001, testType, purifyType); searchGraph = bpc.search(); partition = MimUtils.convertToClusters2(searchGraph); } else { throw new IllegalStateException(); } List<String> latentVarList = reidentifyVariables(mim, data, partition, 2); System.out.println(partition); System.out.println(latentVarList); System.out.println("True\n" + mimStructure); Graph mimbuildStructure; for (int mimbuildMethod : new int[] {3, 4}) { if (mimbuildMethod == 1) { System.out.println("Mimbuild 1\n"); Clusters measurements = ClusterUtils.mimClusters(searchGraph); IndTestMimBuild test = new IndTestMimBuild(data, 0.001, measurements); MimBuild mimbuild = new MimBuild(test, new Knowledge2()); Graph full = mimbuild.search(); full = changeLatentNames(full, measurements, latentVarList); mimbuildStructure = structure(full); System.out.println( "SHD = " + SearchGraphUtils.structuralHammingDistance(mimStructure, mimbuildStructure)); System.out.println("Estimated\n" + mimbuildStructure); System.out.println(); } // else if (mimbuildMethod == 2) { // System.out.println("Mimbuild 2\n"); // Mimbuild2 mimbuild = new Mimbuild2(); // mimbuild.setAlpha(0.001); // mimbuildStructure = mimbuild.search(partition, latentVarList, data); // TetradMatrix latentcov = mimbuild.getLatentsCov(); // List<String> latentnames = mimbuild.getLatentNames(); // System.out.println("\nCovariance over the latents"); // System.out.println(MatrixUtils.toStringSquare(latentcov.toArray(), // latentnames)); // System.out.println("Estimated\n" + mimbuildStructure); // System.out.println("SHD = " + // SearchGraphUtils.structuralHammingDistance(mimStructure, mimbuildStructure)); // System.out.println(); // } else if (mimbuildMethod == 3) { System.out.println("Mimbuild 3\n"); Mimbuild2 mimbuild = new Mimbuild2(); mimbuild.setAlpha(0.001); mimbuild.setMinClusterSize(3); mimbuildStructure = mimbuild.search(partition, latentVarList, new CovarianceMatrix(data)); ICovarianceMatrix latentcov = mimbuild.getLatentsCov(); System.out.println("\nCovariance over the latents"); System.out.println(latentcov); System.out.println("Estimated\n" + mimbuildStructure); System.out.println( "SHD = " + SearchGraphUtils.structuralHammingDistance(mimStructure, mimbuildStructure)); System.out.println(); } else if (mimbuildMethod == 4) { System.out.println("Mimbuild Trek\n"); MimbuildTrek mimbuild = new MimbuildTrek(); mimbuild.setAlpha(0.1); mimbuild.setMinClusterSize(3); mimbuildStructure = mimbuild.search(partition, latentVarList, new CovarianceMatrix(data)); ICovarianceMatrix latentcov = mimbuild.getLatentsCov(); System.out.println("\nCovariance over the latents"); System.out.println(latentcov); System.out.println("Estimated\n" + mimbuildStructure); System.out.println( "SHD = " + SearchGraphUtils.structuralHammingDistance(mimStructure, mimbuildStructure)); System.out.println(); } else { throw new IllegalStateException(); } } } }