use of edu.cmu.tetrad.sem.SemIm in project tetrad by cmu-phil.
the class FactorAnalysisAction method main.
public static void main(String[] args) {
java.util.List<Node> nodes = new ArrayList<>();
for (int i = 0; i < 9; i++) {
nodes.add(new ContinuousVariable("X" + (i + 1)));
}
Graph graph = new Dag(GraphUtils.randomGraph(nodes, 0, 9, 30, 15, 15, false));
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(500, false);
ICovarianceMatrix cov = new CovarianceMatrix(data);
FactorAnalysis factorAnalysis = new FactorAnalysis(cov);
// factorAnalysis.centroidUnity();
factorAnalysis.successiveResidual();
}
use of edu.cmu.tetrad.sem.SemIm in project tetrad by cmu-phil.
the class TestDiscretizer method testManualDiscretize2.
@Test
public void testManualDiscretize2() {
List<Node> nodes1 = new ArrayList<>();
for (int i = 0; i < 5; i++) {
nodes1.add(new ContinuousVariable("X" + (i + 1)));
}
Graph graph = new Dag(GraphUtils.randomGraph(nodes1, 0, 5, 3, 3, 3, false));
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100, false);
List<Node> nodes = data.getVariables();
Discretizer discretizer = new Discretizer(data);
discretizer.equalCounts(nodes.get(0), 3);
discretizer.equalIntervals(nodes.get(1), 2);
discretizer.equalCounts(nodes.get(2), 5);
discretizer.equalIntervals(nodes.get(3), 8);
discretizer.equalCounts(nodes.get(4), 4);
DataSet discretized = discretizer.discretize();
assertEquals(2, maxInColumn(discretized, 0));
assertEquals(1, maxInColumn(discretized, 1));
assertEquals(4, maxInColumn(discretized, 2));
assertEquals(7, maxInColumn(discretized, 3));
assertEquals(3, maxInColumn(discretized, 4));
}
use of edu.cmu.tetrad.sem.SemIm in project tetrad by cmu-phil.
the class TestDiscretizer method testManualDiscretize3.
@Test
public void testManualDiscretize3() {
List<Node> nodes1 = new ArrayList<>();
for (int i = 0; i < 5; i++) {
nodes1.add(new ContinuousVariable("X" + (i + 1)));
}
Graph graph = new Dag(GraphUtils.randomGraph(nodes1, 0, 5, 3, 3, 3, false));
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100, false);
List<Node> nodes = data.getVariables();
Discretizer discretizer = new Discretizer(data);
discretizer.setVariablesCopied(true);
discretizer.setVariablesCopied(true);
discretizer.equalCounts(nodes.get(0), 3);
DataSet discretized = discretizer.discretize();
assertTrue(discretized.getVariable(0) instanceof DiscreteVariable);
assertTrue(discretized.getVariable(1) instanceof ContinuousVariable);
assertTrue(discretized.getVariable(2) instanceof ContinuousVariable);
assertTrue(discretized.getVariable(3) instanceof ContinuousVariable);
assertTrue(discretized.getVariable(4) instanceof ContinuousVariable);
}
use of edu.cmu.tetrad.sem.SemIm in project tetrad by cmu-phil.
the class TestIndTestFisherZ method testDirections.
@Test
public void testDirections() {
RandomUtil.getInstance().setSeed(48285934L);
Graph graph1 = new EdgeListGraph();
Graph graph2 = new EdgeListGraph();
Node x = new GraphNode("X");
Node y = new GraphNode("Y");
Node z = new GraphNode("Z");
graph1.addNode(x);
graph1.addNode(y);
graph1.addNode(z);
graph2.addNode(x);
graph2.addNode(y);
graph2.addNode(z);
graph1.addEdge(Edges.directedEdge(x, y));
graph1.addEdge(Edges.directedEdge(y, z));
graph2.addEdge(Edges.directedEdge(x, y));
graph2.addEdge(Edges.directedEdge(z, y));
SemPm pm1 = new SemPm(graph1);
SemPm pm2 = new SemPm(graph2);
SemIm im1 = new SemIm(pm1);
SemIm im2 = new SemIm(pm2);
im2.setEdgeCoef(x, y, im1.getEdgeCoef(x, y));
im2.setEdgeCoef(z, y, im1.getEdgeCoef(y, z));
DataSet data1 = im1.simulateData(500, false);
DataSet data2 = im2.simulateData(500, false);
IndependenceTest test1 = new IndTestFisherZ(data1, 0.05);
IndependenceTest test2 = new IndTestFisherZ(data2, 0.05);
test1.isIndependent(data1.getVariable(x.getName()), data1.getVariable(y.getName()));
double p1 = test1.getPValue();
test2.isIndependent(data2.getVariable(x.getName()), data2.getVariable(z.getName()), data2.getVariable(y.getName()));
double p2 = test2.getPValue();
test2.isIndependent(data2.getVariable(x.getName()), data2.getVariable(z.getName()));
double p3 = test2.getPValue();
assertEquals(0, p1, 0.01);
assertEquals(0, p2, 0.01);
assertEquals(0.38, p3, 0.01);
}
use of edu.cmu.tetrad.sem.SemIm in project tetrad by cmu-phil.
the class TestDeltaTetradTest method test3.
@Test
public void test3() {
SemPm pm = makePm();
DataSet data = new SemIm(pm).simulateData(1000, false);
CovarianceMatrix cov = new CovarianceMatrix(data);
List<Node> variables = data.getVariables();
Node x1 = variables.get(0);
Node x2 = variables.get(1);
Node x3 = variables.get(2);
Node x4 = variables.get(3);
Node x5 = variables.get(4);
Tetrad t1234 = new Tetrad(x1, x2, x3, x4);
Tetrad t1342 = new Tetrad(x1, x3, x4, x2);
Tetrad t1423 = new Tetrad(x1, x4, x2, x3);
DeltaTetradTest test1 = new DeltaTetradTest(data);
// DeltaTetradTest test = new DeltaTetradTest(new CorrelationMatrix(cov));
double chiSq1 = test1.calcChiSquare(t1234, t1342);
DeltaTetradTest test2 = new DeltaTetradTest(cov);
// DeltaTetradTest test = new DeltaTetradTest(new CorrelationMatrix(cov));
double chiSq2 = test2.calcChiSquare(t1234, t1342);
}
Aggregations