Skip to content

Commit

Permalink
Merge pull request #15 from karchjd/master
Browse files Browse the repository at this point in the history
Lavaan export bug
  • Loading branch information
brandmaier authored May 8, 2024
2 parents 819d5b2 + d8c7e57 commit fdf09fe
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions src/importexport/LavaanExport.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package importexport;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import engine.ParameterReader;
Expand Down Expand Up @@ -85,6 +86,11 @@ public String createModelSpec(ModelView modelView, String modelName, boolean use
//variablenames = variablenames.substring(0, variablenames.length()-1);
//variablenames+="";

List<Node> latents = new ArrayList<Node>();

for (Node node : g.getNodes()) if (node.isLatent() && !node.isMeanTriangle()) latents.add(node);
HashSet<Node> latentsWithOutgoing = new HashSet<>();

// create all regressions between manifest and latent
model += "! regressions \n";
for (Edge edge : g.getEdges()) {
Expand All @@ -93,9 +99,15 @@ public String createModelSpec(ModelView modelView, String modelName, boolean use
&& !edge.getSource().isMeanTriangle())
{
model+= inset+ createEdgeString(edge, "BY", startingValues, useUniqueNames);
latentsWithOutgoing.add(edge.getSource());
}
}

for (Node latent : latents) {
if (!latentsWithOutgoing.contains(latent)) {
model += inset + latent.getCaption() + " =~ 0\n";
}
}
// create all regressions between manifest and manifest
// model += "! regressions of manifest on manifest\n";
for (Edge edge : g.getEdges()) {
Expand All @@ -118,7 +130,7 @@ public String createModelSpec(ModelView modelView, String modelName, boolean use
{


model+= inset+ createEdgeString(edge, "BY", startingValues, useUniqueNames);
model+= inset+ createEdgeString(edge, "ON", startingValues, useUniqueNames);
}
}

Expand Down Expand Up @@ -149,9 +161,7 @@ public String createModelSpec(ModelView modelView, String modelName, boolean use
}

// create zero-fixed latent covariances
List<Node> latents = new ArrayList<Node>();

for (Node node : g.getNodes()) if (node.isLatent() && !node.isMeanTriangle()) latents.add(node);

boolean[][] spec = new boolean[latents.size()][latents.size()];

for (Edge edge : g.getEdges()) {
Expand Down

0 comments on commit fdf09fe

Please sign in to comment.