# Install packages
if (!requireNamespace("ggdag", quietly = TRUE)) {
install.packages("ggdag")
}
# Load packages
library(ggdag)
Directed Acyclic Graphs
Visualizing directed acyclic graphs.
Setup
System Requirements: Cross-platform (Linux/MacOS/Windows)
Programming language: R
Dependent packages:
ggdag
Data Preparation
# Load data
<- dagify(
tidy_ggdag ~ x + z2 + w2 + w1,
y ~ z1 + w1 + w2,
x ~ w1 + v,
z1 ~ w2 + v,
z2 ~ ~w2, # bidirected path
w1 exposure = "x",
outcome = "y") %>%
tidy_dagitty()
# View data
head(tidy_ggdag)
$data
# A tibble: 13 Γ 8
name x y direction to xend yend circular
<chr> <dbl> <dbl> <fct> <chr> <dbl> <dbl> <lgl>
1 v 0.294 -1.35 -> z1 1.15 -0.223 FALSE
2 v 0.294 -1.35 -> z2 -0.845 -0.515 FALSE
3 w1 0.529 1.15 -> x 0.496 0.520 FALSE
4 w1 0.529 1.15 -> y -0.422 0.384 FALSE
5 w1 0.529 1.15 -> z1 1.15 -0.223 FALSE
6 w1 0.529 1.15 <-> w2 -0.643 0.972 FALSE
7 w2 -0.643 0.972 -> x 0.496 0.520 FALSE
8 w2 -0.643 0.972 -> y -0.422 0.384 FALSE
9 w2 -0.643 0.972 -> z2 -0.845 -0.515 FALSE
10 x 0.496 0.520 -> y -0.422 0.384 FALSE
11 y -0.422 0.384 <NA> <NA> NA NA FALSE
12 z1 1.15 -0.223 -> x 0.496 0.520 FALSE
13 z2 -0.845 -0.515 -> y -0.422 0.384 FALSE
$dag
dag {
v
w1
w2
x [exposure]
y [outcome]
z1
z2
v -> z1
v -> z2
w1 -> x
w1 -> y
w1 -> z1
w1 <-> w2
w2 -> x
w2 -> y
w2 -> z2
x -> y
z1 -> x
z2 -> y
}
Visualization
# Directed Acyclic Graphs
<- ggdag(tidy_ggdag) +
p theme_dag()
p
