Search code examples
rr-lavaansem

Nodes sliding off path diagram in R


This is a sample dput since the dataset is huge:

> dput(head(dat, n=20))
structure(list(q01 = c(2, 1, 2, 3, 2, 2, 2, 2, 3, 2, 2, 2, 3, 
2, 2, 3, 1, 2, 2, 2), q02 = c(1, 1, 3, 1, 1, 1, 3, 2, 3, 4, 1, 
1, 1, 2, 2, 1, 2, 2, 3, 1), q03 = c(4, 4, 2, 1, 3, 3, 3, 3, 1, 
4, 5, 3, 3, 1, 3, 2, 5, 3, 4, 1), q04 = c(2, 3, 2, 4, 2, 2, 2, 
2, 4, 3, 2, 3, 4, 2, 4, 2, 2, 3, 2, 2), q05 = c(2, 2, 4, 3, 2, 
4, 2, 2, 5, 2, 2, 4, 3, 2, 2, 2, 1, 3, 3, 3), q06 = c(2, 2, 1, 
3, 3, 4, 2, 2, 3, 1, 1, 3, 2, 2, 2, 2, 1, 4, 1, 4), q07 = c(3, 
2, 2, 4, 3, 4, 2, 2, 5, 2, 2, 3, 3, 3, 3, 2, 1, 3, 1, 4), q08 = c(1, 
2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 1, 3, 2, 2, 2, 1, 2, 1, 1), q09 = c(1, 
5, 2, 2, 4, 4, 3, 4, 3, 3, 5, 3, 2, 2, 2, 2, 4, 5, 5, 5), q10 = c(2, 
2, 2, 4, 2, 3, 2, 2, 3, 2, 2, 2, 3, 3, 3, 3, 1, 2, 2, 1), q11 = c(1, 
2, 3, 2, 2, 2, 2, 2, 5, 2, 1, 2, 3, 2, 2, 2, 1, 3, 1, 2), q12 = c(2, 
3, 3, 2, 3, 4, 2, 3, 5, 3, 3, 3, 4, 4, 3, 3, 2, 3, 3, 5), q13 = c(2, 
1, 2, 2, 3, 3, 2, 2, 5, 2, 1, 2, 4, 2, 2, 2, 1, 3, 1, 2), q14 = c(2, 
3, 4, 3, 2, 3, 2, 2, 5, 1, 2, 2, 4, 4, 3, 3, 1, 3, 2, 5), q15 = c(2, 
4, 2, 3, 2, 5, 2, 3, 5, 2, 1, 3, 4, 4, 3, 2, 1, 4, 2, 5), q16 = c(3, 
3, 3, 3, 2, 2, 2, 2, 5, 3, 2, 3, 4, 4, 4, 3, 2, 3, 3, 5), q17 = c(1, 
2, 2, 2, 2, 3, 2, 2, 5, 2, 2, 2, 3, 2, 2, 2, 2, 2, 1, 2), q18 = c(2, 
2, 3, 4, 3, 5, 2, 2, 5, 2, 2, 2, 3, 4, 3, 3, 1, 2, 1, 5), q19 = c(3, 
3, 1, 2, 3, 1, 3, 4, 2, 3, 5, 3, 2, 1, 3, 2, 4, 2, 4, 1), q20 = c(2, 
4, 4, 4, 4, 5, 2, 3, 5, 3, 3, 4, 4, 5, 4, 3, 2, 3, 2, 5), q21 = c(2, 
4, 3, 4, 2, 3, 2, 2, 5, 2, 2, 3, 4, 5, 4, 2, 1, 3, 2, 5), q22 = c(2, 
4, 2, 4, 4, 1, 4, 4, 3, 4, 5, 4, 3, 3, 4, 3, 4, 3, 4, 5), q23 = c(5, 
2, 2, 3, 4, 4, 4, 4, 3, 4, 5, 4, 4, 1, 4, 4, 4, 4, 4, 5)), variable.labels = c(q01 = "Statistics makes me cry", 
q02 = "My friends will think I'm stupid for not being able to cope with SPSS", 
q03 = "Standard deviations excite me", q04 = "I dream that Pearson is attacking me with correlation coefficients", 
q05 = "I don't understand statistics", q06 = "I have little experience of computers", 
q07 = "All computers hate me", q08 = "I have never been good at mathematics", 
q09 = "My friends are better at statistics than me", q10 = "Computers are useful only for playing games ", 
q11 = "I did badly at mathematics at school", q12 = "People try to tell you that SPSS makes statistics easier to understand but it doesn't", 
q13 = "I worry that I will cause irreparable damage because of my incompetenece with computers", 
q14 = "Computers have minds of their own and deliberately go wrong whenever I use them", 
q15 = "Computers are out to get me", q16 = "I weep openly at the mention of central tendency", 
q17 = "I slip into a coma whenever I see an equation", q18 = "SPSS always crashes when I try to use it", 
q19 = "Everybody looks at me when I use SPSS", q20 = "I can't sleep for thoughts of eigen vectors", 
q21 = "I wake up under my duvet thinking that I am trapped under a normal distribtion", 
q22 = "My friends are better at SPSS than I am", q23 = "If I'm good at statistics my friends will think I'm a nerd"
), codepage = 65001L, row.names = c(NA, 20L), class = "data.frame")

I mostly copied another semPath model but edited it to fit the dataset I was using. First the nodes:

nodeNames <- c(
  "Statistics makes me cry.",
  "My friends think I'm stupid for not being able to cope with SPSS.",
  "Standard deviations excite me.",
  "I dream that Pearson is attacking me with correlation coefficients.",
  "I don't understand statistics.",
  "I have little experience with computers.",
  "All computers hate me.",
  "I've never been good at mathematics.",
  "SPSS Anxiety"
)

Then the actual semPath:

semPaths(onefac8items_a,
         what = "std", # this argument controls what the color of edges represent. In this case, standardized parameters
         whatLabels = "est", 
         style = "lisrel", 
         residScale = 8, 
         theme = "colorblind",
         manifests = paste0("q",1:8),
         nCharNodes = 0, 
         reorder = FALSE, 
         nodeNames = nodeNames, 
         legend.cex = 0.5, 
         rotation = 2, 
         layout = "tree2", 
         cardinal = "lat cov",  
         curvePivot = TRUE, 
         sizeMan = 4,
         sizeLat = 10, 
         mar = c(2,5,2,5.5), 
         filetype = "pdf", width = 8, height = 6, filename = "SPSS Anxiety" 
)

So I really only have one question here. When I try to run my path diagram, the nodes look like they are sliding off to the right of the page. How do I fix this? Below is a picture of what I'm referring to:

Path Diagram


Solution

  • I ended up just shortening my questions down in the nodes and it fixed the problem. I guess there's a limit to how much text you can put into your legend:

    nodeNames <- c(
      "Statistics makes me cry.",
      "Friends think I'm stupid because I cant do SPSS.",
      "Standard deviations excite me.",
      "I dream that Pearson is attacking me with correlations.",
      "I don't understand statistics.",
      "I have little experience with computers.",
      "All computers hate me.",
      "I've never been good at mathematics.",
      "SPSS Anxiety"
    )
    

    Fixed Path Diagram