现在让我们看看结构因果模型是如何分析相同的数据的。首先,在查看数据之前,我们要绘制一张因果图(见图8.3)。我们的因果图会对数据背后的因果叙述进行编码,根据这张因果图,工作经验“听从于”学历,并且工资“听从于”工作经验和学历两者。事实上,仅仅通过查看因果图,我们就能发现一些非常重要的事实。如果我们的模型是错误的,比如EX其实是ED的一个因而不是反过来,那么工作经验就会变成一个混杂因子,此种情况下将具有类似工作经验的员工进行匹配就是完全恰当的。而如果ED就是EX的因,如图8.3所示,那么工作经验就是一个中介物。通过本书前文的介绍,你现在一定已经了解到,将中介物误认作混杂因子是因果推断中最致命的错误之一,很可能导致极为荒谬的错误结果。混淆因子要求统计调整,而中介物禁止统计调整。
图8.3 学历(ED)和工作经验(EX)对工资(S)的影响的因果图
到目前为止,我已在本书中多次使用了一个非常通俗的词,“听从于”,用来表达因果图中的箭头。但现在是时候为这个概念添加一些数学内容了,这实际上就是结构因果模型与贝叶斯网络或回归模型的不同之处。当我说“工资”听从于“学历”和“工作经验”时,我的意思是,工资是这些变量的一个数学函数:S=fS (EX,ED)。但是考虑到个体差异,我们需要将这个函数扩展为S=fS (EX,ED,US ),其中US 代表“影响工资的其他未观测到的变量”。我们知道这些变量是存在的(比如爱丽丝可能是公司总裁的朋友),但它们类型太多,数量也太多,无法被逐一界定并纳入我们的模型。
在学历/工作经验/工资的例子中,假设我们所讨论的函数自始至终都是线性函数,让我们看看这一函数是怎样发挥作用的。我们可以使用统计方法来找到最佳拟合线性方程,该方程类似于方程8.1,但又存在一点区别:
S=65000美元+2500美元×EX+5000美元×ED+US (8.2)
方程8.1和8.2之间的形式相似性具有极大的欺骗性,实际上,对二者的解释存在天壤之别。我们在方程8.1中选择了求解S在ED和EX上的回归,绝不意味着在现实世界里S听从于ED和EX。这一选择纯粹是我们自己做出的,我们完全可以做出其他的选择,因为这张数据表格中没有任何规则能阻止我们转而求解EX在ED和S上的回归,或者其他形式的回归。(别忘了第二章弗朗西斯·高尔顿的发现——回归是无视因的。)而一旦我们宣布一个方程是“结构的”,我们就失去了这种选择的自由。换言之,方程8.2的创建者必须承诺他所写出的方程真实反映了他所认定的关于现实世界中谁听从于谁的观点。在我们的例子中,作为方程的创建者,我确实相信S听从于EX和ED。更重要的是,模型中不存在方程ED=fED (EX,S,UED )这一事实意味着我们认为ED对EX或S的变化不敏感。这种承诺或信念上的差异 [4] 赋予了结构方程支持反事实假设的力量和否定回归方程的力量。
按照图8.3,我们还必须有一个关于EX的结构方程,但现在我们需要先将S的系数设为零,以反映从S到EX没有箭头这一图示信息。一旦我们从数据中估算出了具体系数,这个方程可能就如下所示:
EX=10–4×ED+UEX (8.3)
这个方程告诉我们,只有高中学历的员工的平均工作经验是10年,每增加一级学历(最多增加2级)将平均减少此人4年的工作经验。同样,请注意此结构方程和回归方程之间的关键区别:变量S不进入方程8.3(尽管在实际情况中S和EX可能存在高度相关)。这同样反映了分析者的信念,即认为任何个体所获得的工作经验完全不受其当前工资水平的影响。
现在让我们演示一下如何从结构模型中推导反事实。假如爱丽丝有大学学历,为了估计她的工资水平,我们需要执行以下3个步骤:
(1)(外展)利用关于爱丽丝和其他员工的数据来估计爱丽丝的特质因子(idiosyncratic factors):US (爱丽丝)和UEX (爱丽丝)。
(2)(干预)利用do算子改变模型,以反映我们提出的反事实假设,在这个案例中即,假如爱丽丝有大学学位:ED(爱丽丝)=1。
(3)(预测)利用修改后的模型及有关外生变量(exogenous variables)的更新信息US (爱丽丝)、UEX (爱丽丝)和ED(爱丽丝)来估算爱丽丝的工资水平。新的工资水平就等于SED =1 (爱丽丝)。
对于步骤1,我们可以从数据中观察到EX (爱丽丝)=6,ED(爱丽丝)=0。我们将这些值代入方程8.2和8.3,便得到爱丽丝的特质因子:US (爱丽丝)=1000美元,UEX (爱丽丝)=–4。这两个值代表了关于爱丽丝的独一无二的一切。不管它们具体是什么,总之,它们将她的预测工资增加了1000美元。
步骤2告诉我们要用do算子删除指向被赋予了反事实值的变量(学历)的箭头,并将爱丽丝的学历设置为大学学历(学历=1)。在此例中,步骤2可以省略,因为因果图中本来就没有指向学历的箭头,因此也没有需要删除的箭头。但是在更复杂的模型中,删除箭头这一步不可忽视,因为它会影响步骤3中的计算。那些可能通过干预变量影响结果的变量,在相应的箭头被删除后就不再被允许以这种方式传递信息了。
最后,步骤3表示的是更新模型以反映新的信息,US =1000美元,UEX =–4,ED=1。首先,我们使用方程8.3重新计算“假如爱丽丝上了大学”的情况下,她的工作经验:EXED =1 (爱丽丝)=10–4–4=2年。然后我们用方程8.2计算她的新的工资水平:
SED =1 (爱丽丝)=65000美元+2500美元×2+5000美元×1+1000美元=76000美元.
我们得到的结果,S1 (爱丽丝)=76000美元,就是对爱丽丝潜在工资的一个有效估计;所谓有效是指,如果模型假设是有效的,那么潜在结果与估计值将会重合。因为这个例子包含的因果模型和(线性)函数都很简单,所以我们据此得到的潜在结果和根据数据驱动的回归方法计算出的估计结果之间的差异看起来非常小。但是表面上的细微差异反映的是内在机制上的巨大差异。我们借助结构方程得到的任何反事实(潜在)结果,都合乎逻辑地遵循了模型所体现的假设,而根据数据驱动方法所获得的答案就像伪相关一样反复无常,因为它无法被用来解释重要的建模假设。
相比本书前几章的内容,这个例子让我们得以更深入地理解了因果模型的基本要素。但现在先让我后退半步,庆祝一下这个关于爱丽丝的例子所带来的奇迹。利用数据和模型的结合,我们成功预测了个体(爱丽丝)在某个假设条件下(在反事实世界中)的表现。当然,世上没有免费的午餐,我们能得到这一强有力的结果是因为我们做出了强有力的假设。除了断定观察到的变量之间的因果关系,我们还假设了函数关系是线性的。在这个例子中,相较于判断函数是否为线性,弄清楚这些特定函数是什么更加重要。这些函数使我们能够根据可观测的那些关于爱丽丝的属性的数据计算出无法被观测的个人特质,并像步骤3要求的那样更新模型。
冒着扫兴的风险,我必须告诉你,事实上我们并不总能获得这些函数信息。一般而言,如果箭头背后的函数是已知的,则我们称该模型为“完全指定的”,否则就是“部分指定的”。例如,在贝叶斯网络中,我们可能只知道图中父节点和子节点之间的概率关系。如果模型是部分指定的,我们可能就无法准确地估计出爱丽丝的工资水平,而是需要用一个概率区间作为对潜在结果的表述,例如“她的潜在工资有10%到20%的可能为76000美元”。对许多实际应用方面的案例而言,这样的概率答案已经足够好了。此外,即使我们不知道关于箭头背后的特定函数的信息,或者只知道像上一章提到的“单调性”假设这类非常笼统的信息,我们仍然能够从因果图中提取足够多的信息。
上述步骤1至3被我概括为“因果推断第一定律”:Yx (u)=YM x (u)。这一定律与我们在第一章分析行刑队执行枪决的例子中使用的规则相同,只是具体的函数不同而已。第一定律是说,潜在结果Yx (u)可通过下述方法来推断:建构模型Mx (确保删除所有指向X的箭头),并计算结果Y(u)。因果关系之梯第二层级和第三层级中的所有可估量都由此产生。简言之,将反事实简化为一个算法使我们得以在数学所允许的范围内征服第三层级的一大片版图——当然,也不可能再多了。