Chapter 7 因果推断
因果推断是数据科学中的一个重要领域,它旨在识别和量化变量之间的因果关系。在实际应用中,如医学、经济学和社会科学等领域,正确的因果推断对于制定政策和决策具有重要意义。R作为一种广泛使用的统计编程语言,提供了丰富的工具和包来支持因果推断的分析。
7.1 因果推断的基本概念
在深入了解R中的因果推断工具之前,我们首先需要理解一些基本概念:
因果关系:如果一个变量(自变量)的变化导致另一个变量(因变量)的变化,那么这两个变量之间存在因果关系。 潜在结果模型:这是一种理论框架,用于描述在不同处理条件下个体可能出现的结果。 平均处理效应(ATE):处理组和对照组潜在结果的平均差异,用于衡量处理效果的大小。
7.2 R中的因果推断工具
R提供了多种包来支持因果推断的分析:
- causalimpact:用于估计时间序列干预的因果效应。
- MatchIt:用于进行匹配和倾向得分分析,以平衡处理组和对照组的特征。
- DAGitty:用于创建和分析有向无环图(DAGs),帮助识别因果关系。
7.3 匹配方法
匹配方法是一种常用的因果推断技术,旨在通过匹配处理组和对照组中相似的个体来减少选择偏差。在R中,MatchIt包提供了多种匹配方法,如最近邻匹配、倾向得分匹配和卡尔洛匹配等。
library(MatchIt)
data(lalonde)
m.out <- matchit(treat ~ age + educ + race + married + nodegree + re74 + re75, data = lalonde)
在上述代码中,我们使用matchit函数进行倾向得分匹配,其中treat是处理变量,其余变量作为协变量用于匹配。
7.3.1 倾向得分匹配
倾向得分匹配是一种特殊的匹配方法,它使用倾向得分(处理概率的估计)来匹配处理组和对照组中的个体。这种方法可以减少由于观察数据中的混杂变量引起的偏差。
## A matchit object
## - method: 1:1 nearest neighbor matching without replacement
## - distance: Propensity score
## - estimated with logistic regression
## - number of obs.: 614 (original), 370 (matched)
## - target estimand: ATT
## - covariates: age, educ, race, married, nodegree, re74, re75
在上述代码中,match.data函数用于提取匹配后的数据,可以用于进一步的因果效应分析。
7.4 工具变量法
工具变量法是解决因果推断中内生性问题的一种方法。当自变量与误差项相关时,OLS估计会产生偏误。工具变量法通过引入一个与自变量相关但与误差项不相关的工具变量来解决这个问题。
在R中,我们可以使用AER包中的ivreg函数来进行工具变量回归。
## Loading required package: car
## Loading required package: carData
## Loading required package: lmtest
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Loading required package: survival
data("CigarettesSW")
ivreg_model <- ivreg(log(packs) ~ log(price) + log(income) | log(price) + log(tax), data = CigarettesSW)
summary(ivreg_model)
##
## Call:
## ivreg(formula = log(packs) ~ log(price) + log(income) | log(price) +
## log(tax), data = CigarettesSW)
##
## Residuals:
## Min 1Q Median 3Q Max
## -16.7376 -5.1634 -0.7769 5.7791 13.6920
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -77.825 1542.962 -0.050 0.960
## log(price) -8.953 152.663 -0.059 0.953
## log(income) 7.083 128.398 0.055 0.956
##
## Residual standard error: 7.303 on 93 degrees of freedom
## Multiple R-Squared: -878.6, Adjusted R-squared: -897.5
## Wald test: 0.02487 on 2 and 93 DF, p-value: 0.9754
在这个例子中,我们使用log(price)和log(income)作为工具变量来估计香烟包数(log(packs))对价格(log(rprice))的因果效应。
7.5 参考
- 倾向性评分匹配 : https://rpubs.com/liam/1097043
- 数据科学中的因果推断,一个简单的例子 : https://rpubs.com/liam/Causal_inference