options(
# 设置 ggplot2 中的默认颜色为色盲友好
# 使用 Okabe-Ito 和 Viridis 调色板
ggplot2.discrete.colour = ggokabeito::palette_okabe_ito(),
ggplot2.discrete.fill = ggokabeito::palette_okabe_ito(),
ggplot2.continuous.colour = "viridis",
ggplot2.continuous.fill = "viridis",
# 设置主题字体字号
book.base_family = "sans",
book.base_size = 14
)
library(ggplot2)
# 设置默认主题
theme_set(
theme_minimal(
base_size = getOption("book.base_size"),
base_family = getOption("book.base_family")
) %+replace%
theme(
panel.grid.minor = element_blank(),
legend.position = "bottom"
)
)Causal Inference in R 中文版
前言
欢迎来到 Causal Inference in R 中文版。本书中文版内容的翻译由陆震完成并维护。目前本书中文版内容还没有纸质出版,如果读者是出版人员,并有意愿负责出版本书,请通过 联系我们。
对于因果问题的回答,在科学研究与商业用途中都具有重要意义。但是现实中,诸如随机临床试验与 A/B 测试等因果推断方法并不总是可行的。因此,我们需要借助观察数据来进行因果推断。本书将介绍如何使用 R 语言进行因果推断,以及如何使用现代因果推断方法来解决实际问题。通过本书,您将学习到:
- 更好地理解因果推断的基本概念;
- 理解因果推断的假设;
- 准确识别进行因果推断的目标人群;
- 使用现代因果推断方法来解决实际问题;
- 进行因果推断的敏感性分析。
本书的目标读者是数据科学家、数据分析师、科学研究人员以及对因果推断感兴趣的读者。尽管在现实中,提问的因果问题可能是不同的,如“医学中癌症相关因果问题”或“某个广告点击率的因果关系”等,但是这些问题背后的因果推断方法是相通的。本书中,我们使用来自医学、经济以及科技相关方面的例子来具体地阐释因果推断。需要提醒大家的是,由于本书聚焦于借助观察数据进行因果推断,因此本书并不会涉及到随机临床试验、A/B 测试的内容。
在阅读本书前,我们建议您具备以下知识:
- 熟悉 tidyverse 生态系统中的 R 包及其总体理念。例如,我们在本书中大量使用 dplyr 和 ggplot2,但不会解释它们的基本语法。要了解更多关于 tidyverse 的入门知识,我们推荐阅读 R for Data Science;
- 熟悉 R 中的基本统计建模。例如,我们将在本书中使用
lm()和glm()拟合模型,但不会讨论它们的工作原理。如果您想了解更多关于 R 中建模函数的信息,我们推荐阅读 Tidy Modeling with R 中的 “A Review of R Modeling Fundamentals”; - 熟悉 R 的其他基础知识,例如编写函数。R for Data Science 也是这些主题的一个很好的资源。(如果您想深入了解 R 这门编程语言,我们推荐 Advanced R。)
- 另外,本书还将使用 tidymodels 生态系统中的工具,这是一组与 tidyverse 相关的 R 包,用于建模。但 tidymodels 也专注于预测模型的构建,因此它的许多工具并不适用于本书。然而,如果您对这个主题感兴趣,我们推荐阅读 Tidy Modeling with R。
还有几本关于因果推断的优秀书籍。本书的重点是基于 R 进行因果推断,但从其他角度了解这个领域也是有帮助的。您可能会喜欢这几本书:
第一本书侧重于流行病学。后两本书侧重于计量经济学。我们还推荐阅读 The Book of Why Pearl and Mackenzie (2018) 以了解更多关于因果图的信息。
本书约定
现代 R 特性
我们在本书中使用了 R 4.1.0 及以上版本中的两个现代 R 特性。第一个是原生管道操作符 |>。这个 R 特性类似于您可能更熟悉的 tidyverse 中的 %>%。在一般情况下,这两者可以互换使用。而两者一个显著的区别是,|> 使用 _ 符号来指示管道的结果,例如:.df |> lm(y ~ x, data = _)。有关此主题的更多信息,请参阅 Tidyverse 博客文章。
另一个我们在本书中使用的现代 R 特性是原生 lambda,这是一种编写简短函数的方法,形式为 \(.x) do_something(.x)。它类似于 purrr 包中的 ~ lambda 表示。需要注意的是,原生 lambda 与 function(.x) do_something(.x) 是相同的,其中 \ 是 function 的简写。有关此主题的更多信息,请参阅 R for Data Science 中关于迭代的章节。
主题
本书中的图均使用一致的主题,我们不会在每个代码块中都包含它,这意味着如果您运行可视化代码,可能会得到略有不同的结果。我们设置了以下与 ggplot2 相关的默认值:
我们还屏蔽了一些来自 ggdag 的函数,以便进行自定义:
theme_dag <- function() {
ggdag::theme_dag(base_family = getOption("book.base_family"))
}
geom_dag_label_repel <- function(..., seed = 10) {
ggdag::geom_dag_label_repel(
aes(x, y, label = label),
box.padding = 3.5,
inherit.aes = FALSE,
max.overlaps = Inf,
family = getOption("book.base_family"),
seed = seed,
label.size = NA,
label.padding = 0.1,
size = getOption("book.base_size") / 3,
...
)
}