有向无环图

作者

[编辑] 郑虎;

[审核] .

有向无环图可视化。

环境配置

  • 系统: Cross-platform (Linux/MacOS/Windows)

  • 编程语言: R

  • 依赖包: ggdag

# 安装包
if (!requireNamespace("ggdag", quietly = TRUE)) {
  install.packages("ggdag")
}

# 加载包
library(ggdag)

数据准备

# 加载数据
tidy_ggdag <- dagify(
  y ~ x + z2 + w2 + w1,
  x ~ z1 + w1 + w2,
  z1 ~ w1 + v,
  z2 ~ w2 + v,
  w1 ~ ~w2, # bidirected path
  exposure = "x",
  outcome = "y") %>%
  tidy_dagitty()

# 查看数据
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      5.89 1.89  ->        z1     4.77  2.76  FALSE   
 2 v      5.89 1.89  ->        z2     5.04  0.761 FALSE   
 3 w1     3.39 2.15  ->        x      4.02  2.11  FALSE   
 4 w1     3.39 2.15  ->        y      3.55  0.980 FALSE   
 5 w1     3.39 2.15  ->        z1     4.77  2.76  FALSE   
 6 w1     3.39 2.15  <->       w2     4.14  1.19  FALSE   
 7 w2     4.14 1.19  ->        x      4.02  2.11  FALSE   
 8 w2     4.14 1.19  ->        y      3.55  0.980 FALSE   
 9 w2     4.14 1.19  ->        z2     5.04  0.761 FALSE   
10 x      4.02 2.11  ->        y      3.55  0.980 FALSE   
11 y      3.55 0.980 <NA>      <NA>  NA    NA     FALSE   
12 z1     4.77 2.76  ->        x      4.02  2.11  FALSE   
13 z2     5.04 0.761 ->        y      3.55  0.980 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
}

可视化

# 有向无环图
p <- ggdag(tidy_ggdag) +
  theme_dag() 

p
图 1: 有向无环图