Search in sources :

Example 16 with Dag

use of edu.cmu.tetrad.graph.Dag in project tetrad by cmu-phil.

the class TestRowSummingUpdater method sampleBayesIm2.

private BayesIm sampleBayesIm2() {
    Node a = new GraphNode("a");
    Node b = new GraphNode("b");
    Node c = new GraphNode("c");
    Dag graph;
    graph = new Dag();
    graph.addNode(a);
    graph.addNode(b);
    graph.addNode(c);
    graph.addDirectedEdge(a, b);
    graph.addDirectedEdge(a, c);
    graph.addDirectedEdge(b, c);
    BayesPm bayesPm = new BayesPm(graph);
    bayesPm.setNumCategories(b, 3);
    BayesIm bayesIm1 = new MlBayesIm(bayesPm);
    bayesIm1.setProbability(0, 0, 0, .3);
    bayesIm1.setProbability(0, 0, 1, .7);
    bayesIm1.setProbability(1, 0, 0, .3);
    bayesIm1.setProbability(1, 0, 1, .4);
    bayesIm1.setProbability(1, 0, 2, .3);
    bayesIm1.setProbability(1, 1, 0, .6);
    bayesIm1.setProbability(1, 1, 1, .1);
    bayesIm1.setProbability(1, 1, 2, .3);
    bayesIm1.setProbability(2, 0, 0, .9);
    bayesIm1.setProbability(2, 0, 1, .1);
    bayesIm1.setProbability(2, 1, 0, .1);
    bayesIm1.setProbability(2, 1, 1, .9);
    bayesIm1.setProbability(2, 2, 0, .5);
    bayesIm1.setProbability(2, 2, 1, .5);
    bayesIm1.setProbability(2, 3, 0, .2);
    bayesIm1.setProbability(2, 3, 1, .8);
    bayesIm1.setProbability(2, 4, 0, .6);
    bayesIm1.setProbability(2, 4, 1, .4);
    bayesIm1.setProbability(2, 5, 0, .7);
    bayesIm1.setProbability(2, 5, 1, .3);
    return bayesIm1;
}
Also used : GraphNode(edu.cmu.tetrad.graph.GraphNode) Node(edu.cmu.tetrad.graph.Node) GraphNode(edu.cmu.tetrad.graph.GraphNode) Dag(edu.cmu.tetrad.graph.Dag)

Example 17 with Dag

use of edu.cmu.tetrad.graph.Dag in project tetrad by cmu-phil.

the class TestMatrixUtils method testImpiedCovar.

@Test
public void testImpiedCovar() {
    List<Node> nodes = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        nodes.add(new ContinuousVariable("X" + (i + 1)));
    }
    Graph graph = new Dag(GraphUtils.randomGraph(nodes, 0, 10, 30, 15, 15, false));
    SemPm pm = new SemPm(graph);
    SemIm im = new SemIm(pm);
    TetradMatrix err = im.getErrCovar();
    TetradMatrix coef = im.getEdgeCoef();
    TetradMatrix implied = MatrixUtils.impliedCovar(coef, err);
    assertTrue(MatrixUtils.isPositiveDefinite(implied));
    TetradMatrix corr = MatrixUtils.convertCovToCorr(new TetradMatrix(implied));
    assertTrue(MatrixUtils.isPositiveDefinite(corr));
}
Also used : ContinuousVariable(edu.cmu.tetrad.data.ContinuousVariable) Graph(edu.cmu.tetrad.graph.Graph) Node(edu.cmu.tetrad.graph.Node) ArrayList(java.util.ArrayList) SemPm(edu.cmu.tetrad.sem.SemPm) TetradMatrix(edu.cmu.tetrad.util.TetradMatrix) Dag(edu.cmu.tetrad.graph.Dag) SemIm(edu.cmu.tetrad.sem.SemIm) Test(org.junit.Test)

Example 18 with Dag

use of edu.cmu.tetrad.graph.Dag in project tetrad by cmu-phil.

the class EmBayesEstimator method findBayesNetObserved.

private void findBayesNetObserved() {
    Dag dagObs = new Dag(graph);
    for (Node node : nodes) {
        if (node.getNodeType() == NodeType.LATENT) {
            dagObs.removeNode(node);
        }
    }
    bayesPmObs = new BayesPm(dagObs, bayesPm);
// System.out.println("bayesPm after deleting edges involving latents:");
// System.out.println(bayesPmObs);
// Graph g = bayesPmObs.getDag();
// System.out.println(g);
}
Also used : Node(edu.cmu.tetrad.graph.Node) Dag(edu.cmu.tetrad.graph.Dag)

Example 19 with Dag

use of edu.cmu.tetrad.graph.Dag in project tetrad by cmu-phil.

the class FactoredBayesStructuralEM method scoreTest.

// public double returnScore() {
// return resultScore;
// }
// 
// public Graph returnGraph() {
// return resultGraph;
// }
// 
// public int returnIterations() {
// return totaliterations;
// }
public void scoreTest() {
    TetradLogger.getInstance().log("details", "scoreTest");
    // System.out.println(bayesPmM0.getGraph());
    BdeMetricCache bdeMetricCache;
    BayesPm bayesPmMn = bayesPmM0;
    EmBayesEstimator emBayesEst = new EmBayesEstimator(bayesPmMn, dataSet);
    emBayesEst.maximization(0.0001);
    Dag dag0 = new Dag(bayesPmMn.getDag());
    // double score = factorScoreMD(dag0, bdeMetricCache, bayesPmMn, bayesImMn);
    // System.out.println("Score of dag0 = " + score);
    Node L1 = dag0.getNode("L1");
    Node X1 = dag0.getNode("X1");
    Dag dag1 = new Dag(dag0);
    dag1.addDirectedEdge(X1, L1);
    // BayesPm bayesPmTest = new BayesPm(dag0);
    // score = factorScoreMD(dag0, bdeMetricCache, bayesPmTest, bayesImMn);
    // System.out.println("Score of dag1 = " + score);
    BayesPm bayesPm0 = new BayesPm(dag0);
    EmBayesEstimator emBayesEst0 = new EmBayesEstimator(bayesPm0, dataSet);
    BayesIm bayesImMn0 = emBayesEst0.maximization(0.0001);
    BayesPm bayesPmTest0 = new BayesPm(dag0);
    TetradLogger.getInstance().log("details", "Observed conts for nodes of L1,X1,X2,X3 (no edges) " + "using the MAP parameters based on that same graph");
    TetradLogger.getInstance().log("details", "Graph of PM:  ");
    TetradLogger.getInstance().log("details", "" + bayesPmTest0.getDag());
    TetradLogger.getInstance().log("details", "Graph of IM:  ");
    TetradLogger.getInstance().log("details", "" + bayesImMn0.getBayesPm().getDag());
    bdeMetricCache = new BdeMetricCache(dataSet, bayesPmTest0);
    List<Node> nodes0 = dag0.getNodes();
    for (Node aNodes0 : nodes0) {
        double[][] counts0 = bdeMetricCache.getObservedCounts(aNodes0, bayesPmTest0, bayesImMn0);
        for (double[] aCounts0 : counts0) {
            for (int j = 0; j < counts0[0].length; j++) {
                System.out.print(" " + aCounts0[j]);
            }
            TetradLogger.getInstance().log("details", "\n");
        }
        TetradLogger.getInstance().log("details", "\n");
    }
    double score0 = factorScoreMD(dag0, bdeMetricCache, bayesPmTest0, bayesImMn0);
    TetradLogger.getInstance().log("details", "Score of L1,X1,X2,X3 (no edges) for itself = " + score0);
    TetradLogger.getInstance().log("details", "===============\n\n");
    TetradLogger.getInstance().log("details", "Score of X1-->L1 for L1,X1,X2,X3 (no edges) = " + score0);
    BayesPm bayesPmTest1 = new BayesPm(dag1);
    TetradLogger.getInstance().log("details", "Observed counts for nodes of X1-->L1 for L1,X1,X2,X3 (no edges)");
    TetradLogger.getInstance().log("details", "Graph of PM :  ");
    TetradLogger.getInstance().log("details", "" + bayesPmTest1.getDag());
    TetradLogger.getInstance().log("details", "Graph of IM:  ");
    TetradLogger.getInstance().log("details", "" + bayesImMn0.getBayesPm().getDag());
    bdeMetricCache = new BdeMetricCache(dataSet, bayesPmTest1);
    List<Node> nodes1 = dag0.getNodes();
    for (Node aNodes1 : nodes1) {
        double[][] counts1 = bdeMetricCache.getObservedCounts(aNodes1, bayesPmTest1, bayesImMn0);
        for (double[] aCounts1 : counts1) {
            for (int j = 0; j < counts1[0].length; j++) {
                TetradLogger.getInstance().log("details", " " + aCounts1[j]);
            }
            TetradLogger.getInstance().log("details", "\n");
        }
        TetradLogger.getInstance().log("details", "\n");
    }
    double score1 = factorScoreMD(dag1, bdeMetricCache, bayesPmTest1, bayesImMn0);
    TetradLogger.getInstance().log("details", "Score of X1-->L1 for L1,X1,X2,X3 (no edges) = " + score1);
}
Also used : Node(edu.cmu.tetrad.graph.Node) Dag(edu.cmu.tetrad.graph.Dag)

Example 20 with Dag

use of edu.cmu.tetrad.graph.Dag in project tetrad by cmu-phil.

the class BayesXmlParser method makeBayesPm.

private BayesPm makeBayesPm(List<Node> variables, Element element1) {
    if (!"parents".equals(element1.getQualifiedName())) {
        throw new IllegalArgumentException("Expecting 'parents' element.");
    }
    Dag graph = new Dag();
    for (Node variable : variables) {
        graph.addNode(variable);
    }
    Elements elements = element1.getChildElements();
    for (int i = 0; i < elements.size(); i++) {
        Element e1 = elements.get(i);
        if (!"parentsFor".equals(e1.getQualifiedName())) {
            throw new IllegalArgumentException("Expecting 'parentsFor' element.");
        }
        String varName = e1.getAttributeValue("name");
        Node var = namesToVars.get(varName);
        Elements elements1 = e1.getChildElements();
        for (int j = 0; j < elements1.size(); j++) {
            Element e2 = elements1.get(j);
            if (!"parent".equals(e2.getQualifiedName())) {
                throw new IllegalArgumentException("Expecting 'parent' element.");
            }
            String parentName = e2.getAttributeValue("name");
            Node parent = namesToVars.get(parentName);
            graph.addDirectedEdge(parent, var);
        }
    }
    BayesPm bayesPm = new BayesPm(graph);
    for (Node variable1 : variables) {
        DiscreteVariable graphVariable = (DiscreteVariable) variable1;
        List<String> categories = graphVariable.getCategories();
        bayesPm.setCategories(graphVariable, categories);
    }
    return bayesPm;
}
Also used : DiscreteVariable(edu.cmu.tetrad.data.DiscreteVariable) Node(edu.cmu.tetrad.graph.Node) Element(nu.xom.Element) Dag(edu.cmu.tetrad.graph.Dag) Elements(nu.xom.Elements)

Aggregations

Dag (edu.cmu.tetrad.graph.Dag)53 Node (edu.cmu.tetrad.graph.Node)41 Graph (edu.cmu.tetrad.graph.Graph)21 GraphNode (edu.cmu.tetrad.graph.GraphNode)21 Test (org.junit.Test)18 ArrayList (java.util.ArrayList)12 SemIm (edu.cmu.tetrad.sem.SemIm)10 SemPm (edu.cmu.tetrad.sem.SemPm)10 DataSet (edu.cmu.tetrad.data.DataSet)7 BayesPm (edu.cmu.tetrad.bayes.BayesPm)6 MlBayesIm (edu.cmu.tetrad.bayes.MlBayesIm)6 ContinuousVariable (edu.cmu.tetrad.data.ContinuousVariable)6 BayesIm (edu.cmu.tetrad.bayes.BayesIm)5 DiscreteVariable (edu.cmu.tetrad.data.DiscreteVariable)3 FruchtermanReingoldLayout (edu.cmu.tetrad.graph.FruchtermanReingoldLayout)2 TetradMatrix (edu.cmu.tetrad.util.TetradMatrix)2 LinkedList (java.util.LinkedList)2 StoredCellProbs (edu.cmu.tetrad.bayes.StoredCellProbs)1 ColtDataSet (edu.cmu.tetrad.data.ColtDataSet)1 CovarianceMatrixOnTheFly (edu.cmu.tetrad.data.CovarianceMatrixOnTheFly)1