Attempts to extract edges from a SEM model object, where edges are defined as regression paths and covariances between variables (nodes).
get_edges(x, label = "est_sig", ...)
A model object of class mplusObject
or lavaan
.
Either a character, indicating which column to use for edge
labels, or an expression. See Details.
Defaults to "est_sig"
,
which labels edges with the estimated value with significance asterisks,
as obtained from table_results
. See Details and examples for
more information.
Additional parameters passed to table_results
. For
example, users can pass the digits
argument to control the number of
digits in the edge label, or pass the columns
argument to retain
auxiliary columns in the tidy_edges data.frame
for further processing
(see Examples).
An object of class 'tidy_edges'
The function get_edges
identifies all regression paths,
latent variable definitions, and covariances in the model as edges.
The output of table_results
for those
paths is used to label the edges.
One way to create custom edge labels is by passing an expression to
label
. When an expression is
passed to label
, it is evaluated in the context of a data.frame
containing the results
of a call to table_results
on the x
argument.
Another way to create custom labels is by requesting auxiliary variables
using the columns
argument (which is passed to
table_results
), and then using these columns to construct a new
label. See examples.
# Standard use
library(lavaan)
res <- sem("dist ~ speed", cars)
get_edges(res)
#> from to arrow label connect_from connect_to curvature linetype lhs
#> 1 speed dist last 3.93*** NA NA NA 1 dist
#> 2 dist dist both 227.07*** NA NA NA 1 dist
#> 3 speed speed both 27.40 NA NA NA 1 speed
#> op rhs est se pval confint est_sig est_std se_std pval_std
#> 1 ~ speed 3.93 0.41 0.00 [3.13, 4.73] 3.93*** 0.81 0.04 0.00
#> 2 ~~ dist 227.07 45.41 0.00 [138.06, 316.08] 227.07*** 0.35 0.07 0.00
#> 3 ~~ speed 27.40 0.00 <NA> [27.40, 27.40] 27.40 1.00 0.00 <NA>
#> confint_std est_sig_std label_results show
#> 1 [0.73, 0.89] 0.81*** dist.ON.speed TRUE
#> 2 [0.22, 0.48] 0.35*** Variances.dist TRUE
#> 3 [1.00, 1.00] 1.00 Variances.speed FALSE
# Pass an expression to the 'label' argument for custom labels
get_edges(res, label = paste(est_sig, confint))
#> from to arrow label connect_from connect_to
#> 1 speed dist last 3.93*** [3.13, 4.73] NA NA
#> 2 dist dist both 227.07*** [138.06, 316.08] NA NA
#> 3 speed speed both 27.40 [27.40, 27.40] NA NA
#> curvature linetype lhs op rhs est se pval confint
#> 1 NA 1 dist ~ speed 3.93 0.41 0.00 [3.13, 4.73]
#> 2 NA 1 dist ~~ dist 227.07 45.41 0.00 [138.06, 316.08]
#> 3 NA 1 speed ~~ speed 27.40 0.00 <NA> [27.40, 27.40]
#> est_sig est_std se_std pval_std confint_std est_sig_std label_results
#> 1 3.93*** 0.81 0.04 0.00 [0.73, 0.89] 0.81*** dist.ON.speed
#> 2 227.07*** 0.35 0.07 0.00 [0.22, 0.48] 0.35*** Variances.dist
#> 3 27.40 1.00 0.00 <NA> [1.00, 1.00] 1.00 Variances.speed
#> show
#> 1 TRUE
#> 2 TRUE
#> 3 FALSE
# Pass the argument 'columns' to table_results through '...' to retain
# auxiliary columns for further processing
edg <- get_edges(res, columns = c("est_sig", "confint"))
edg
#> from to arrow label connect_from connect_to curvature linetype
#> 1 speed dist last 3.93*** NA NA NA 1
#> 2 dist dist both 227.07*** NA NA NA 1
#> 3 speed speed both 27.40 NA NA NA 1
#> est_sig confint
#> 1 3.93*** [3.13, 4.73]
#> 2 227.07*** [138.06, 316.08]
#> 3 27.40 [27.40, 27.40]
edg <- within(edg, {label <- paste(est_sig, confint)})
edg
#> from to arrow label connect_from connect_to
#> 1 speed dist last 3.93*** [3.13, 4.73] NA NA
#> 2 dist dist both 227.07*** [138.06, 316.08] NA NA
#> 3 speed speed both 27.40 [27.40, 27.40] NA NA
#> curvature linetype est_sig confint
#> 1 NA 1 3.93*** [3.13, 4.73]
#> 2 NA 1 227.07*** [138.06, 316.08]
#> 3 NA 1 27.40 [27.40, 27.40]