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
)
input graph, an object of class tidy_dagitty
or
dagitty
a character vector, the starting variable (must by in DAG). If
NULL
, checks DAG for exposure variable.
a character vector, the ending variable (must by in DAG). If
NULL
, checks DAG for outcome variable.
a character vector, variables in the DAG to control for.
logical. Should the d_relationship
variable be a
factor?
additional arguments passed to tidy_dagitty()
a character vector, the edge geom to use. One of: "link_arc", which accounts for directed and bidirected edges, "link", "arc", or "diagonal"
size of DAG node
size of DAG text
size of label text
color of DAG text
color of label text
logical. Should nodes be included in the DAG?
logical. Should DAG nodes be stylized? If so, use
geom_dag_nodes
and if not use geom_dag_point
logical. Should text be included in the DAG?
a string. Variable to use for geom_dag_repel_label()
.
Default is NULL
.
logical. Should the plot show paths activated by adjusting for a collider?
a tidy_dagitty
with a d_relationship
column for
variable D relationship or a ggplot
library(ggplot2)
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()