use of edu.cmu.tetrad.sem.SemIm 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.SemIm 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.SemIm 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.SemIm in project tetrad by cmu-phil.
the class SemImWrapper method setSemIm.
private void setSemIm(SemIm updatedSemIm) {
semIms = new ArrayList<>();
semIms.add(new SemIm(updatedSemIm));
for (int i = 0; i < semIms.size(); i++) {
log(i, semIms.get(i));
}
}
use of edu.cmu.tetrad.sem.SemIm in project tetrad by cmu-phil.
the class SemSimulation method simulate.
private DataSet simulate(Graph graph, Parameters parameters) {
boolean saveLatentVars = parameters.getBoolean("saveLatentVars");
SemIm im = this.im;
if (im == null) {
SemPm pm = this.pm;
if (pm == null) {
pm = new SemPm(graph);
im = new SemIm(pm, parameters);
ims.add(im);
return im.simulateData(parameters.getInt("sampleSize"), saveLatentVars);
} else {
im = new SemIm(pm, parameters);
ims.add(im);
return im.simulateData(parameters.getInt("sampleSize"), saveLatentVars);
}
} else {
ims.add(im);
return im.simulateData(parameters.getInt("sampleSize"), saveLatentVars);
}
}
Aggregations