第二章 因果图模型:有向无环图(DAG)基础、d-分离与条件独立性、后门准则与前门准则
各位同学,欢迎来到第二章。上一章我们聊了因果推断的基本框架,说白了就是「为什么」比「是什么」更重要。这一章,我们要深入因果推断的「骨架」——因果图模型。
我个人习惯把因果图比作一张「交通地图」。变量是城市,箭头是公路。你要搞清楚一条因果路径,就得先看懂这张地图。我在保险精算项目中,经常用这张图来梳理理赔率、保费、客户行为之间的复杂关系。没有它,你很容易被「假相关」带偏。
2.1 有向无环图(DAG)基础
DAG,全称 Directed Acyclic Graph。翻译过来就是「有方向、没环路」的图。
什么叫「有方向」?箭头从原因指向结果。比如「年龄 → 健康风险」,箭头从年龄出发,指向健康风险。这叫有向边。
什么叫「没环路」?你不能从A出发,绕一圈又回到A。比如「A→B→C→A」这种闭环,在因果图里是不允许的。为什么?因为因果不能循环。你想想看,今天的保费影响明天的理赔,明天的理赔又影响后天的保费,这没问题。但你不能说「今天的保费导致明天的保费」,那就成了死循环。
DAG的三个核心要素:
- 节点(Node):代表变量。比如年龄、性别、保费、理赔次数。
- 有向边(Directed Edge):箭头,代表因果关系。箭头从因指向果。
- 无环性(Acyclicity):没有有向环路。这是因果推断的「底线」。
重要提醒:DAG不是回归模型,它不告诉你系数是多少。它告诉你的是「谁影响了谁」的结构。这个结构,比系数本身更重要。
下面我画了一张DAG的示意图,展示保险场景中常见的因果结构:
这张图里,年龄影响驾驶经验,也直接影响事故次数。驾驶经验也影响事故次数。事故次数影响理赔金额。保费则受驾驶经验和事故次数共同影响。你看,没有环路,所有箭头都指向一个方向。这就是DAG。
我的小技巧:画DAG时,先列出所有你认为相关的变量,然后问自己「谁先发生?」。时间顺序是因果方向最可靠的依据。年龄先于驾驶经验,驾驶经验先于事故次数。按时间排,箭头方向基本不会错。
2.2 d-分离与条件独立性
d-分离,全称是「directional separation」,方向性分离。这名字听着挺唬人,其实核心就一句话:给定某些变量后,两个变量之间是否还有关联?
我刚开始学的时候,也被这个概念绕晕过。后来我发现,记住三种基本结构就够了:
| 结构类型 | 图示 | 条件独立性 | 保险案例 |
|---|---|---|---|
| 链式(Chain) | A → B → C | 给定B,A和C独立 | 年龄→驾驶经验→事故次数。给定驾驶经验后,年龄和事故次数无关 |
| 叉式(Fork) | A ← B → C | 给定B,A和C独立 | 收入←教育→健康意识。给定教育后,收入和健康意识无关 |
| 对撞式(Collider) | A → B ← C | 给定B,A和C变得相关 | 驾驶技术→事故←路况。给定事故后,驾驶技术和路况反而相关 |
前两种结构,给定中间变量B,A和C就「分离」了。第三种结构恰恰相反,给定对撞节点B,A和C反而「连接」起来。
我曾经踩过的坑:有一次做车险理赔预测,我把「事故次数」作为控制变量放进模型,结果发现「驾驶技术」和「路况」的系数都变得显著了。我当时还纳闷,后来才意识到——事故次数是个对撞节点!控制它反而引入了虚假关联。从那以后,我每次建模前都会先画DAG,看看哪些变量不能随便控制。
d-分离的正式定义是这样的:如果给定变量集Z,阻断了X和Y之间的所有路径,那么X和Y在给定Z下是d-分离的。说白了,就是「信息流被切断了」。
为什么这对我们精算师重要?因为条件独立性是因果推断的基石。你想估计「保费对理赔金额的因果效应」,就得先搞清楚哪些变量需要控制,哪些变量不能控制。d-分离就是你的「导航仪」。
2.3 后门准则与前门准则
好,现在进入实战环节。我们知道了DAG,知道了d-分离。但具体怎么用?后门准则和前门准则就是两个最实用的「因果识别策略」。
2.3.1 后门准则
后门准则解决的是「混杂偏倚」问题。什么叫混杂?就是有一个变量,既影响你的处理变量,又影响你的结果变量。比如在研究「保费对理赔金额」的影响时,「驾驶经验」就是个混杂变量——它既影响保费定价,也影响理赔金额。
后门准则的核心思想:找到所有从处理变量到结果变量的「后门路径」,然后通过控制某些变量来阻断这些路径。
具体步骤:
- 画出DAG,找出所有从处理变量T到结果变量Y的路径
- 找出所有「后门路径」——即那些有箭头指向T的路径
- 找到一个变量集Z,使得:
- Z中不包含T的后代变量
- Z阻断了所有后门路径
- 控制Z,然后估计T对Y的因果效应
用数学表达就是:
P(Y | do(T=t)) = Σ_z P(Y | T=t, Z=z) * P(Z=z)
这个公式看着复杂,其实意思很简单:对每个Z的取值,计算T=t时Y的条件分布,然后按Z的分布加权平均。这就是「调整」或「标准化」的本质。
实战案例:我在做健康险产品定价时,想评估「健康管理计划」对「理赔率」的因果效应。DAG显示,年龄和既往病史都是混杂变量。按照后门准则,我控制了这两个变量。结果发现,如果不控制,效应被低估了30%。这就是后门准则的价值。
2.3.2 前门准则
前门准则解决的是另一种困境:当存在不可观测的混杂变量时,后门准则就失效了。这时候,前门准则可以救场。
前门准则的核心思想:通过一个中间变量M来估计T对Y的因果效应。这个M必须满足三个条件:
- T直接影响M
- M直接影响Y
- T对Y的效应完全通过M传递(没有其他路径)
用公式表达:
P(Y | do(T=t)) = Σ_m P(M=m | do(T=t)) * P(Y | do(M=m))
其中:
- P(M=m | do(T=t)) 可以直接从数据中估计(因为T→M没有混杂)
- P(Y | do(M=m)) 需要通过后门准则估计(控制T来阻断M→Y的后门路径)
我举个例子。假设你想评估「保费折扣」对「客户续保率」的影响。但有一个不可观测的混杂变量——「客户的风险偏好」。风险偏好既影响你是否愿意接受折扣,也影响你的续保意愿。后门准则没法用,因为你观测不到风险偏好。
这时候,前门准则就派上用场了。中间变量M可以是「客户满意度」。保费折扣影响满意度,满意度影响续保率。只要这两个关系没有混杂,你就可以通过满意度来估计折扣对续保率的因果效应。
我的建议:前门准则在实际应用中比较少见,因为它对中间变量的要求太严格了。但当你遇到「不可观测混杂」这个老大难问题时,别忘了还有这个工具。我在保险科技项目中,偶尔会用前门准则来处理「渠道偏好」这类难以量化的变量。
2.4 本章小结
这一章我们聊了三块内容:
- DAG基础:节点、有向边、无环性。这是因果推断的「地图」。
- d-分离与条件独立性:三种基本结构(链式、叉式、对撞式),以及如何判断变量间的独立性。这是因果推断的「交通规则」。
- 后门准则与前门准则:两个最实用的因果识别策略。后门准则处理可观测混杂,前门准则处理不可观测混杂。这是因果推断的「导航工具」。
说实话,这些概念刚接触时确实有点抽象。但你在实际项目中用几次,就会发现它们其实很直观。我每次做因果分析,第一步永远是画DAG。画完图,哪些变量该控制、哪些不该控制,一目了然。
下一章,我们会把这些工具真正用起来——用Python实现因果效应估计。到时候,你会看到DAG和d-分离是如何在代码中落地的。
公众号:蓝海资料掘金营,微信deep3321