D-separation is a key concept in causal structural models. Variables are d-separated if there are no open paths between them. The node_d*() functions label variables as d-connected or d-separated. The ggdag_d*() functions plot the results. The *_dconnected(), *_dseparated(), and *_drelationship() functions essentially produce the same output and are just different ways of thinking about the relationship. See dagitty::dseparated() for details.

node_dconnected(.tdy_dag, from = NULL, to = NULL,
  controlling_for = NULL, as_factor = TRUE, ...)

node_dseparated(.tdy_dag, from = NULL, to = NULL,
  controlling_for = NULL, as_factor = TRUE)

node_drelationship(.tdy_dag, from = NULL, to = NULL,
  controlling_for = NULL, as_factor = TRUE)

ggdag_drelationship(.tdy_dag, from = NULL, to = NULL,
  controlling_for = NULL, ..., edge_type = "link_arc",
  node_size = 16, text_size = 3.88, label_size = text_size,
  text_col = "white", label_col = text_col, node = TRUE,
  stylized = FALSE, text = TRUE, use_labels = NULL,
  collider_lines = TRUE)

ggdag_dseparated(.tdy_dag, from = NULL, to = NULL,
  controlling_for = NULL, ..., edge_type = "link_arc",
  node_size = 16, text_size = 3.88, label_size = text_size,
  text_col = "white", label_col = text_col, node = TRUE,
  stylized = FALSE, text = TRUE, use_labels = NULL,
  collider_lines = TRUE)

ggdag_dconnected(.tdy_dag, from = NULL, to = NULL,
  controlling_for = NULL, ..., edge_type = "link_arc",
  node_size = 16, text_size = 3.88, label_size = text_size,
  text_col = "white", label_col = text_col, node = TRUE,
  stylized = FALSE, text = TRUE, use_labels = NULL,
  collider_lines = TRUE)

Arguments

.tdy_dag

input graph, an object of class tidy_dagitty or dagitty

from

a character vector, the starting variable (must by in DAG). If NULL, checks DAG for exposure variable.

to

a character vector, the ending variable (must by in DAG). If NULL, checks DAG for outcome variable.

controlling_for

a character vector, variables in the DAG to control for.

as_factor

logical. Should the d_relationship variable be a factor?

...

additional arguments passed to tidy_dagitty()

edge_type

a character vector, the edge geom to use. One of: "link_arc", which accounts for directed and bidirected edges, "link", "arc", or "diagonal"

node_size

size of DAG node

text_size

size of DAG text

label_size

size of label text

text_col

color of DAG text

label_col

color of label text

node

logical. Should nodes be included in the DAG?

stylized

logical. Should DAG nodes be stylized? If so, use geom_dag_nodes and if not use geom_dag_point

text

logical. Should text be included in the DAG?

use_labels

a string. Variable to use for geom_dag_repel_label(). Default is NULL.

collider_lines

logical. Should the plot show paths activated by adjusting for a collider?

Value

a tidy_dagitty with a d_relationship column for variable D relationship or a ggplot

Examples

dag <- dagify(m ~ x + y) dag %>% ggdag_drelationship("x", "y")
dag %>% ggdag_drelationship("x", "y", controlling_for = "m")
dag %>% node_dseparated("x", "y") %>% ggplot(aes(x = x, y = y, xend = xend, yend = yend, shape = adjusted, col = d_relationship)) + geom_dag_edges() + geom_dag_collider_edges() + geom_dag_node() + geom_dag_text(col = "white") + theme_dag() + scale_adjusted()
dag %>% node_dconnected("x", "y", controlling_for = "m") %>% ggplot(aes(x = x, y = y, xend = xend, yend = yend, shape = adjusted, col = d_relationship)) + geom_dag_edges() + geom_dag_collider_edges() + geom_dag_node() + geom_dag_text(col = "white") + theme_dag() + scale_adjusted()
dagify(m ~ x + y, m_jr ~ m) %>% tidy_dagitty(layout = "nicely") %>% node_dconnected("x", "y", controlling_for = "m_jr") %>% ggplot(aes(x = x, y = y, xend = xend, yend = yend, shape = adjusted, col = d_relationship)) + geom_dag_edges() + geom_dag_collider_edges() + geom_dag_node() + geom_dag_text(col = "white") + theme_dag() + scale_adjusted()