{r setup, include=FALSE} knitr::opts_chunk$set(eval = FALSE) @dagitty, @ggdag 可以用于概率图分析1,可以配合 @Koller2018 的课学习。
{r message=FALSE, warning=FALSE} library(ggdag) library(dagitty)
dagitty和ggdag的对比
```{r} dag <- dagitty(
dag { y <- x <- z1 <- v -> z2 -> y z1 <- w1 <-> w2 -> z2 x <- w1 -> y x <- w2 -> y x [exposure] y [outcome] }
) tidy_dag <- tidy_dagitty(dag) tidy_dag ggdag(tidy_dag)
+ 这里的代码,类似于 @DiagrammeR 开发的包`DiagrammeR`。
+ `<->`表示双向箭头。
```
tidy_ggdag <-
ggdag::dagify(
y ~ x + z2 + w2 + w1,
x ~ z1 + w1,
z1 ~ w1 + v,
z2 ~ w2 + v,
w1 ~~ w2, # bidirected path
exposure = "x",
outcome = "y
) %>%
tidy_dagitty()
tidy_ggdag
ggdag(tidy_ggdag)
ggdag函数是内置ggplot2的,因此非常方便。~~表示双向箭头。y ~ x + z2 + w2 + w1表示这四个变量都导致y,类似于回归方程中,自变量和因变量的关系。- 而且这里不需要string格式的输入。
加label
confounder_triangle是ggdag的一个内置函数, @Barrett2018 给了一个加上label的例子。
{r} confounder_triangle(x = "Coffee", y = "Lung Cancer", z = "Smoking") %>% ggdag_dconnected(text = FALSE, use_labels = "label")
批量label
```{r} coffee_dag <- dagify(cancer ~ smoking, smoking ~ addictive, coffee ~ addictive, exposure = “coffee”, outcome = “cancer”, labels = c(“coffee” = “Coffee”, “cancer” = “Lung Cancer”, “smoking” = “Smoking”, “addictive” = “Addictive \nBehavior”)) %>% tidy_dagitty(layout = “tree”)
ggdag(coffee_dag, text = FALSE, use_labels = “label”) ```
参考文献
-
@ggdag 是在 @dagitty 的基础上进行开发的。 ↩︎