use of edu.cmu.tetrad.sem.SemPm in project tetrad by cmu-phil.
the class TestDM method test10.
//
@Test
public void test10() {
// setting seed for debug.
RandomUtil.getInstance().setSeed(29483818483L);
Graph graph = emptyGraph(5);
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X2"));
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X3"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X3"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X4"));
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100000, false);
DMSearch search = new DMSearch();
search.setUseFges(false);
search.setInputs(new int[] { 0, 1 });
search.setOutputs(new int[] { 2, 3, 4 });
search.setData(data);
search.setTrueInputs(search.getInputs());
search.search();
print("Test Case 10");
// Trying to quiet the output for unit tests.
if (false) {
System.out.println(search.getDmStructure());
}
assertTrue(true);
}
use of edu.cmu.tetrad.sem.SemPm in project tetrad by cmu-phil.
the class TestCpc method test7.
@Test
public void test7() {
int numVars = 6;
int numEdges = 6;
List<Node> nodes = new ArrayList<>();
for (int i = 0; i < numVars; i++) {
nodes.add(new ContinuousVariable("X" + (i + 1)));
}
Dag trueGraph = new Dag(GraphUtils.randomGraph(nodes, 0, numEdges, 7, 5, 5, false));
SemPm semPm = new SemPm(trueGraph);
SemIm semIm = new SemIm(semPm);
DataSet _dataSet = semIm.simulateData(1000, false);
IndependenceTest test = new IndTestFisherZ(_dataSet, 0.05);
Cpc search = new Cpc(test);
Graph resultGraph = search.search();
}
use of edu.cmu.tetrad.sem.SemPm in project tetrad by cmu-phil.
the class TestIndTestFisherZ method test2.
@Test
public void test2() {
for (int p = 0; p < 50; p++) {
Graph graph = new EdgeListGraph();
Node x = new ContinuousVariable("X");
Node y = new ContinuousVariable("Y");
Node w1 = new ContinuousVariable("W1");
Node w2 = new ContinuousVariable("W2");
Node w3 = new ContinuousVariable("W3");
Node r = new ContinuousVariable("R");
graph.addNode(x);
graph.addNode(y);
graph.addNode(w1);
graph.addNode(w2);
graph.addNode(w3);
graph.addNode(r);
graph.addDirectedEdge(x, w1);
graph.addDirectedEdge(w1, w2);
graph.addDirectedEdge(w2, y);
graph.addDirectedEdge(w3, y);
// graph.addDirectedEdge(x, r);
// graph.addDirectedEdge(r, y);
graph.addDirectedEdge(y, r);
//
SemPm pm = new SemPm(graph);
Parameters parameters = new Parameters();
parameters.set("coefLow", .3);
parameters.set("coefHigh", .8);
parameters.set("coefSymmetric", false);
SemIm im = new SemIm(pm, parameters);
final int N = 1000;
DataSet data = im.simulateData(N, false);
ICovarianceMatrix _cov = new CovarianceMatrix(data);
TetradMatrix cov = _cov.getMatrix();
List<Node> nodes = _cov.getVariables();
final int xi = nodes.indexOf(x);
final int yi = nodes.indexOf(y);
final int ri = nodes.indexOf(r);
double xy = StatUtils.partialCorrelation(cov, xi, yi);
double xyr = StatUtils.partialCorrelation(cov, xi, yi, ri);
double f1 = 0.5 * sqrt(N - 3) * log(1. + xy) - log(1. - xy);
double f2 = 0.5 * sqrt(N - 3 - 1) * log(1. + xyr) - log(1. - xyr);
System.out.println(abs(f1) > abs(f2));
}
}
use of edu.cmu.tetrad.sem.SemPm in project tetrad by cmu-phil.
the class TestDataLoadersRoundtrip method testContinuousRoundtrip.
@Test
public void testContinuousRoundtrip() {
setUp();
try {
List<Node> nodes = new ArrayList<>();
for (int i = 0; i < 5; i++) {
nodes.add(new ContinuousVariable("X" + (i + 1)));
}
Graph randomGraph = new Dag(GraphUtils.randomGraph(nodes, 0, 5, 30, 15, 15, false));
SemPm semPm1 = new SemPm(randomGraph);
SemIm semIm1 = new SemIm(semPm1);
DataSet dataSet = semIm1.simulateData(10, false);
FileWriter fileWriter = new FileWriter("target/test_data/roundtrip.dat");
Writer writer = new PrintWriter(fileWriter);
DataWriter.writeRectangularData(dataSet, writer, ',');
writer.close();
//
new File("test_data").mkdir();
File file = new File("target/test_data/roundtrip.dat");
DataReader reader = new DataReader();
reader.setDelimiter(DelimiterType.COMMA);
DataSet _dataSet = reader.parseTabular(file);
assertTrue(dataSet.equals(_dataSet));
} catch (IOException e) {
e.printStackTrace();
fail();
}
}
use of edu.cmu.tetrad.sem.SemPm in project tetrad by cmu-phil.
the class SemEstimatorWrapper method serializableInstance.
// public SemEstimatorWrapper(DataWrapper dataWrapper,
// SemPmWrapper semPmWrapper,
// SemImWrapper semImWrapper,
// Parameters params) {
// if (dataWrapper == null) {
// throw new NullPointerException();
// }
//
// if (semPmWrapper == null) {
// throw new NullPointerException();
// }
//
// if (semImWrapper == null) {
// throw new NullPointerException();
// }
//
// DataSet dataSet =
// (DataSet) dataWrapper.getSelectedDataModel();
// SemPm semPm = semPmWrapper.getSemPm();
// SemIm semIm = semImWrapper.getSemIm();
//
// this.semEstimator = new SemEstimator(dataSet, semPm, getOptimizer());
// if (!degreesOfFreedomCheck(semPm)) return;
// this.semEstimator.setTrueSemIm(semIm);
// this.semEstimator.setNumRestarts(getParams().getInt("numRestarts", 1));
// this.semEstimator.estimate();
//
// this.params = params;
//
// log();
// }
/**
* Generates a simple exemplar of this class to test serialization.
*
* @see TetradSerializableUtils
*/
public static SemEstimatorWrapper serializableInstance() {
List<Node> variables = new LinkedList<>();
ContinuousVariable x = new ContinuousVariable("X");
variables.add(x);
DataSet dataSet = new ColtDataSet(10, variables);
for (int i = 0; i < dataSet.getNumRows(); i++) {
for (int j = 0; j < dataSet.getNumColumns(); j++) {
dataSet.setDouble(i, j, RandomUtil.getInstance().nextDouble());
}
}
Dag dag = new Dag();
dag.addNode(x);
SemPm pm = new SemPm(dag);
Parameters params1 = new Parameters();
return new SemEstimatorWrapper(dataSet, pm, params1);
}
Aggregations