"我们需要的不是更多数据,而是更好的因果推理工具。"
—— Nick Huntington-Klein,《The Effect》
一、DAG 是什么?为什么科研人必须懂它?
1.1 一个简洁的定义
因果图(DAG)是用"节点"和"箭头"表示变量间因果关系的可视化工具,清晰展示哪个变量导致哪个变量发生变化。
这个定义看起来平平无奇,但它背后的力量是巨大的:
当你画出一张因果图,你实际上在做三件事:
- 显式化你的假设——你相信什么变量影响什么变量
- 可视化数据生成过程(DGP)——数据是怎么"被产生出来"的
- 推导出识别策略——该控制哪些变量,不该控制哪些变量
如果说统计模型是"计算因果效应的工具",那因果图就是"告诉你有没有必要、以及怎么使用这个工具"的地图。没有地图,再精良的计算工具也可能把你带进沟里。
1.2 因果图 vs 传统相关性分析:本质区别
| 维度 | 传统相关分析 | 因果图方法 |
|---|---|---|
| 核心问题 | X 和 Y 相关吗? | X 是否导致 Y? |
| 变量选择 | 经验判断或数据驱动 | 由因果假设决定 |
| 控制变量逻辑 | "加进去看看是否显著" | 有明确理论依据 |
| 对混淆的处理 | 隐性假设 | 显性可检验 |
| 犯错的方式 | 难以发现 | 可被识别和纠正 |
举个让人印象深刻的例子:冰淇淋销量与溺水死亡人数高度正相关。没有人会说"冰淇淋导致溺水"——但如果你只看相关系数,你无法从数字本身知道这一点。只有画出因果图(夏天→冰淇淋销量,夏天→游泳人数→溺水),你才能清楚地看到:"夏天"是一个共同原因(混淆变量),并不存在冰淇淋→溺水的箭头。
二、DAG 的核心构成要素
2.1 三大基本元素
一张因果图由且仅由三种元素构成:
🔵 节点(Nodes):变量本身
- 因果图中每一个圆圈或方框代表一个变量
- 重要原则:每个变量只有一个节点,不区分具体取值
- 比如"性别"这个节点,同时代表男性和女性,不会分裂成两个节点
- 节点可以是可观测变量(你有数据的),也可以是未观测变量(你没有数据但它客观存在的)
- 未观测变量在图中通常用灰色或虚线圆圈表示
- 忽略未观测变量是初学者最常犯的错误之一
➡️ 箭头(Arrows):因果关系
- 箭头从"原因"指向"结果":X → Y意味着"X 导致 Y"
- 箭头只表示因果关系存在与否,不表示效应的方向(正/负)或强度(大/小)
- 这一点与路径分析图(Path Diagram)不同——在 DAG 中,你不会看到带有系数标注的箭头
- 没有箭头 = 你明确假设"两者之间不存在直接因果关系"
🔘 未观测变量(Unobserved Variables)的特殊处理
在真实的社会科学研究中,很多最重要的变量恰恰是无法测量的——个体的风险偏好、家庭教育氛围、社会资本……
这些变量必须出现在你的因果图中,尽管你没有数据。为什么?
因为如果它们同时影响你的"处理变量"和"结果变量",它们就是混淆变量(Confounders),忽略它们会让你的因果推断出错——而你甚至不知道出错了。
把未观测变量放进图里,你至少知道自己面临的挑战在哪里,而不是盲目乐观地以为"我已经控制了足够多的变量"。
规则:如果一个变量对数据生成过程很重要,即使你没有数据,也要把它画进图里。
2.2 有向无环图的"无环"约束
DAG 中的 A(Acyclic)意味着没有循环:你不能沿着箭头方向走一圈回到起点。
即,不存在 X → Y → Z → X 这样的结构。
这是一个重要的假设。现实中当然存在反馈循环(比如"成绩好→更有信心→成绩更好"),但在标准 DAG 框架里,通常用"不同时间点的变量"来处理:
成绩_t → 信心_t+1 → 成绩_t+2将时序引入图中,打破循环。
三、如何从零画出你自己的因果图?
下面是一套可操作的 5 步绘图流程,对着你自己的研究可以直接套用。
Step 1:明确你的研究问题
因果图永远围绕一个核心问题展开:
"X(处理变量/Treatment)是否影响 Y(结果变量/Outcome)?影响有多大?"
在开始画图之前,先把这两个变量确认清楚并标注在图的两侧——X 在左(或上),Y 在右(或下)。图里所有其他变量都是围绕这对关系展开的。
示例:研究"在线课程(OnlineClass)是否影响大学辍学率(Dropout)"
OnlineClass → ? → DropoutStep 2:头脑风暴"影响处理变量的因素"
问自己:什么决定了谁接受处理,谁不接受处理?
在在线课程的例子中,哪些变量会影响一个学生是否选择在线课程?
- 种族(Race)——不同种族群体的在线教育接受程度不同
- 性别(Gender)
- 年龄(Age)
- 社会经济地位(SES)——影响是否有钱上网、有时间上课
- 对在线学习的偏好(Preferences)
- 是否有网络接入(InternetAccess)
- 可用时间(AvailableTime)
把这些变量都画进图里,并给它们画上指向"OnlineClass"的箭头。
Step 3:头脑风暴"影响结果变量的因素"
问自己:除了处理变量以外,还有什么决定结果?
影响"辍学率(Dropout)"的因素:
- 学业表现(Academics)
- 工作时长(WorkHours)——工作越多越容易辍学
- 可用时间(AvailableTime)
- 种族(Race)、性别(Gender)、年龄(Age)、SES——均有独立影响
Step 4:识别变量之间的相互关系
变量与变量之间可能还有关系,把它们也画出来:
- SES → InternetAccess(有钱才有网)
- SES → AvailableTime(贫困家庭孩子需要打工)
- Age → SES(年龄影响家庭收入)
- Race/Gender → WorkHours(职场歧视影响就业机会)
- WorkHours → AvailableTime(工作越多空闲越少)
- Academics → Dropout(成绩差更容易辍学)
Step 5:加入未观测变量
现在问:有哪些变量"看不见、测不到",但它们却同时影响多个变量?
在这个例子中:
- U3:未观测的种族/性别歧视因素,同时影响 Race、Gender 与 Academics
- U5:未观测的地理-经济因素,同时影响 Location 与 SES
把 U3、U5 用灰色节点画进图里。
最终,你会得到一张涵盖以下变量的完整因果图:
Race, Gender, Age, SES, Location ↓ ↓ ↓ Preferences InternetAccess AvailableTime WorkHours ↓ ↓ ↓ OnlineClass → Dropout ↑ Academics ↑ (U3: Race/Gender → Academics)提示:真实的因果图往往比你预期的要复杂。这不是坏事——复杂意味着真实。问题不在于图太复杂,而在于你对复杂性是否有清醒的认识。
四、路径分析:变量之间都有哪些"隐形通道"?
现在你已经画出了一张图。下一步是分析这张图中的路径(Path)——即从 X 到 Y 的所有可能的"信息流动通道"。
这看起来像是个技术细节,但它直接决定了你应该控制哪些变量,不应该控制哪些变量。弄错了,整个分析就白搭。
4.1 三种基本路径类型
在因果图中,从 X 出发到 Y 的任何路径都可以分为三类:
📍 路径类型 1:直接因果路径(Causal Path)
X → Y
这是 X 对 Y 的直接因果效应。没有中间变量,箭头直指结果。
在在线课程例子中:
OnlineClass → Dropout这条路径代表"在线课程直接改变了学生的辍学决策"。
📍 路径类型 2:后门路径(Back-door Path)
X ← ... → Y
即存在一个变量(或一串变量),从它出发既有箭头指向 X,也有箭头(直接或间接)指向 Y。这种情况下,X 和 Y 之间存在虚假相关性,即使 X 不影响 Y。
在在线课程例子中,一条后门路径是:
OnlineClass ← SES → AvailableTime → Dropout解读:
- SES 影响谁选择在线课程
- SES 影响 AvailableTime,进而影响辍学率
- 因此,即使在线课程本身对辍学率无影响,我们仍可能观察到在线课程用户和非用户之间的辍学率差异——只是因为他们的 SES 不同
📍 路径类型 3:前门路径(Front-door Path)
X → M → Y
即存在一个中间变量 M(称为"中介变量"或"调节变量"),X 影响 M,M 影响 Y,但 X 和 Y 之间不存在直接箭头。
在在线课程例子中:
OnlineClass → AvailableTime → Academics → Dropout解读:在线课程可能通过提高学生的可用时间,进而改善学业表现,最终降低辍学率。
关键区别:
- 后门路径= 造成虚假相关性的混淆(必须阻断)
- 前门路径= 真实因果效应的传导机制(通常想保留)
4.2 后门标准(Back-door Criterion):何时需要控制变量
一旦你识别了所有的后门路径,一个根本性的问题出现了:
我需要控制哪些变量才能阻断所有后门路径,同时保留前门路径和直接因果效应?
这就是**后门标准(Back-door Criterion)**的用武之地。
后门标准是一个数学定理,告诉你:
如果你要估计 X 对 Y 的因果效应,控制的变量集合 Z 必须满足以下两个条件:
- Z 中没有任何变量是 X 的后代(即不存在 X → ... → Z 的路径)
- Z 必须阻断所有从 X 到 Y 的后门路径(即所有 X ← ... → Y 的路径都被截断)
用人话说就是:
✅ 应该控制的变量: 既影响 X,又(直接或间接)影响 Y, 但不是由 X 造成的 ❌ 不应该控制的变量: (1) 完全无关(与 X 或 Y 都无关) (2) 是 X 的后代(X 导致了这个变量的变化) (3) 是"对撞变量"(之前没讲过,第五节详解)4.3 在线课程例子中应该控制哪些变量?
回到我们的因果图。让我们逐一列出所有后门路径:
后门路径 1:
OnlineClass ← SES → AvailableTime → Dropout后门路径 2:
OnlineClass ← Race → Academics → Dropout后门路径 3:
OnlineClass ← SES → InternetAccess ← ? (无法完全追踪)根据后门标准,我们至少需要控制 SES 和 Race。
控制了这两个变量以后,所有上述后门路径都被阻断了(因为它们都经过 SES 或 Race 这两个节点)。
但这还不够。还要检查:
- ✅ SES 是不是 OnlineClass 的后代?否——SES 不由选择在线课程决定
- ✅ Race 是不是 OnlineClass 的后代?否——种族身份不由课程选择决定
所以SES 和 Race 是可以控制的。
但如果你控制了AvailableTime,会发生什么?
OnlineClass → AvailableTime → Dropout由于 AvailableTime 是 OnlineClass 的后代,控制它会阻断从 OnlineClass 到 AvailableTime 到 Dropout 的前门路径,这会低估在线课程的真实因果效应。
这是初学者最常犯的错误:过度控制。你有一种直觉是"我控制的变量越多越好",但实际上控制不该控制的变量会偏离真实因果效应。
五、对撞变量:因果推断中最诡异的陷阱
如果说后门路径问题是"我没有控制该控制的变量",那对撞变量(Collider)问题就是"我控制了本不该控制的变量,反而打开了一扇新的后门路径"。
这是因果推断中最反直觉、最容易踩坑、也最能让人印象深刻的陷阱。
5.1 什么是对撞变量?
在因果图中,对撞变量是这样的一个变量:
两个或多个变量都有箭头指向它。即,多个原因指向同一个结果。
符号表示:
X → C ← Y其中 C 就是对撞变量(Collider)。
直觉理解:
假设你听到一个古老的谚语:"美女难得贤惠"(注:这只是因果图例子,不代表任何真实观点)。
如果用因果图表示:
颜值高 → 成为著名人物 ← 才华高 ↑ 对撞变量 C在"成为著名人物"这个对撞变量上,指向它的有两个原因:要么颜值高,要么才华高。
关键现象:在整个人口中,颜值和才华是独立的(无相关性)。但是,在"著名人物"这个子集中,颜值和才华是负相关的!
为什么?因为:
- 如果一个著名人物颜值不高(颜值 = 低),那么他/她必须靠才华弥补,所以才华必定很高
- 如果一个著名人物才华不高(才华 = 低),那么他/她必须靠颜值弥补,所以颜值必定很高
这种只在条件化子集中产生的虚假相关性,就是对撞变量的魔力。
5.2 对撞变量的三个违反直觉的结论
🔴 结论 1:不应该控制对撞变量
在传统的多元回归思维中,你可能会想:"我增加更多的控制变量,回归会更稳健。"
这在对撞变量上完全相反。
如果你在回归中控制一个对撞变量,你实际上是在说:"给定对撞变量的值,我来看 X 对 Y 的关系。" 这相当于你在观察一个被筛选过的、不具有代表性的子样本。
案例:选择性录取(Selection Bias)
学术能力 → 大学录取 ← 运动天赋 ↑ 对撞变量假设一所大学的录取标准是:"要么学术能力特别强,要么运动天赋特别强,要么两者都强。"
学术能力和运动天赋在全国的高中生中是独立的。但在"被这所大学录取的学生"这个子集中,这两者会产生负相关:
- 高学术能力的学生可能运动一般(因为不需要靠运动才能被录取)
- 高运动天赋的学生可能学术一般(因为不需要学术特别强才能被录取)
现在,如果你使用这所大学的学生数据,想估计"学术能力对未来收入的影响",你绝对不应该控制"是否被这所大学录取"这个变量——因为它是对撞变量,控制它会打开一条虚假的负相关路径。
🔴 结论 2:对撞变量会打开后门路径
更准确地说,控制对撞变量会创建一条虚假的、原本不存在的后门路径。
示例来自《The Effect》书中的警察与犯罪例子:
犯罪发生率 → 警察数量 ← 警力预算优先级 ↑ 对撞变量在美国,一个地区的警察数量取决于两个因素:
- 犯罪率高(犯罪多→需要更多警察)
- 政治压力强(预算分配者认为这个地区需要重视)
犯罪率和政治压力在没有其他信息时是独立的。但如果你控制了警察数量(即,你比较的是"警察数量相同但政治压力不同的地区"),你打开了一条虚假路径:
犯罪发生率 ← 警力预算优先级 (虚假路径打开)这会让你错误地估计出"警察越多,犯罪越多"的负面结果。这种现象在美国城市数据中确实存在,很多人错误地用这个发现论证"警察无用论",但实际上根本原因是数据被对撞变量污染了。
🔴 结论 3:如果有未观测的对撞变量,你无法通过控制任何观测变量来修复
这是最绝望的情况。
假设真实的因果图是:
X → C ← U (未观测) ↓ ↑ Y其中 U 是一个未观测的对撞变量。
不幸的是,没有任何可观测变量的调整能够完全消除这种偏差。你能做的最多是意识到这个问题的存在,并在解释结果时加上适当的警示。
5.3 对撞变量检验清单
现在我给你一个实用的检验清单,帮助你在自己的因果图中识别对撞变量:
Q1. 我的因果图中,有哪些变量同时被至少两个其他变量指向? (逐一列出) Q2. 对于每一个这样的变量 C: ✓ 问自己:" X 导致 C 吗?" ✓ 问自己:" Y 导致 C 吗?" ✓ 问自己:" Z 导致 C 吗?" (如果有其他变量) 如果至少两个答案是"是",那 C 就是对撞变量。 Q3. 对于每一个识别出的对撞变量 C: - 我在我的回归模型中是否控制了 C? - 我是否通过条件化(subgroup analysis)隐性控制了 C? (比如"在已婚人群中的分析",这隐性地控制了"婚配"这个对撞变量) - 如果是,我需要重新思考这个决定5.4 对撞变量的常见真实案例
为了让这个抽象的概念更具体,我列举三个在真实研究中高频出现的对撞变量陷阱:
案例 A:样本选择偏差
能力 → 样本进入 ← 选择意愿 ↑ 对撞变量研究问题:"教育对收入的影响"
踩坑方式:你只用调查数据中"有工作的人"来估计教育的回报率,结果发现"教育效应很小"。
为什么?你控制了对撞变量"是否被调查"。能力强的人即使没受教育也能找到高薪工作,而能力弱的人可能需要教育来补偿。这在"有工作人群"中创造了教育和能力的虚假负相关。
✅解决方案:用全样本人口(包括失业者),或者至少意识到这个偏差的存在。
案例 B:协变量失衡(Covariate Imbalance)在非随机处理中
混淆因子 → 接受处理 ← 处理意愿 ↑ 对撞变量研究问题:"参加培训项目对就业的影响"
踩坑方式:用倾向得分匹配(PSM)但错误地"限制在共同支撑(common support)区间内",不小心控制了一个对撞变量。
为什么?共同支撑区间本身就是一个对撞变量——既取决于谁真正接受培训,也取决于谁的特征被认为"适合"这个项目。
✅解决方案:理解 PSM 的目的是重新加权,而不是"过度筛选"样本。
案例 C:调查响应偏差
社会经济特征 → 调查响应 ← 对调查感兴趣程度 ↑ 对撞变量研究问题:"工作满意度对生产率的影响"
踩坑方式:通过调查收集工作满意度数据,但你的样本只包括了"愿意回答调查"的员工。然后你用回归分析工作满意度对生产率的影响。
为什么出错?工作满意度和生产率在原始人口中可能无关或正相关,但在"愿意回答调查的人"这个子集中,两者会产生虚假相关性。
✅解决方案:意识到这个限制,分别报告不同响应率的子样本结果,并进行敏感性分析。
5.5 小结:后门路径 vs 对撞变量
到这里,你已经掌握了两个最关键的路径概念。让我用一个对比表总结:
| 维度 | 后门路径 | 对撞变量 |
|---|---|---|
| 结构 | X ← C → Y | X → C ← Y |
| 造成的问题 | 虚假相关性(混淆) | 虚假相关性(碰撞) |
| 解决办法 | 控制后门路径上的节点 | 不控制对撞变量 |
| 常见错误 | 遗漏关键控制变量 | 过度控制、样本选择 |
| 识别难度 | ⭐⭐⭐ (中等) | ⭐⭐⭐⭐⭐ (非常难) |
提示:在实际科研工作中,对撞变量是比后门路径更隐蔽、更容易被忽视的问题。很多发表的论文其实都犯了对撞变量的错误,只是没有被发现。这也是为什么审稿人要求进行多种稳健性检验——以防你无意中踩了这个坑。
六、从因果图到识别策略:选择你的研究设计
画好因果图只是第一步。下一步是根据图的结构,选择合适的识别策略——即选择用什么方法来估计因果效应。
这一步至关重要,因为:
- 同一个研究问题,不同的因果图结构,需要用完全不同的方法
- 有些因果图结构下,根本无法识别因果效应(这种叫"不可识别")
- 有些结构下,你需要强假设;有些结构下,假设较弱
6.1 三种基本的识别策略
根据因果图中 X 和 Y 的相对位置与路径结构,因果推断有三种根本不同的识别策略:
策略 1:控制后门路径(Back-door Adjustment)
适用场景:
Z ← U → X → Y ↑ ↑ └──────┘ (后门路径)逻辑:控制阻断所有从 X 指向 Y 的后门路径的变量 Z。
实现方法:
- 多元线性回归(控制 Z)
- 倾向得分匹配(PSM)
- 回归不连续设计(RDD)
- 双重差分法(DID)
优点:实现简单,假设明确
缺点:需要观测到所有混淆变量(不能有未观测混淆)
策略 2:使用工具变量(Instrumental Variables)
适用场景:存在未观测混淆变量,无法完全控制
U → X → Y ↑ ↑ ↑ | | | +→ IV +─┘ (IV 只通过 X 影响 Y)逻辑:找一个"工具变量"IV,它影响 X 但不直接影响 Y(只通过 X 的影响传递)。
实现方法:
- 两阶段最小二乘法(2SLS)
- GMM 估计
优点:可以处理未观测混淆变量
缺点:需要找到有效工具变量很难;工具变量假设本身也难以验证
策略 3:前门调整(Front-door Adjustment)
适用场景:
U → X → M → Y ↓ ↑ └───────┘ (但没有直接的 X → Y,且 U 不影响 Y)逻辑:通过中间变量 M 来估计总效应(即使存在未观测混淆 U)。
实现方法:
- 分步回归法
- 路径分析
- 结构方程模型(SEM)
优点:可以处理某类未观测混淆
缺点:需要满足非常严格的假设;实际中很少见
6.2 决策树:该用哪种识别策略?
┌─ 你的因果图中存在后门路径吗? │ ├─ YES ──→ 你能观测到所有后门路径上的变量吗? │ │ │ ├─ YES ──→ 使用"后门调整" │ │ (多元回归 / PSM / RDD / DID) │ │ │ └─ NO ──→ 你能找到有效的工具变量吗? │ │ │ ├─ YES ──→ 使用"工具变量法"(2SLS) │ │ │ └─ NO ──→ 估计因果效应"不可识别" │ (需要收集更多数据或加强假设) │ └─ NO ──→ 你有可靠的中间变量 M 吗? │ ├─ YES ──→ 使用"前门调整" │ └─ NO ──→ 使用"后门调整"(只需控制直接混淆)七、真实案例深度分析
现在让我用《The Effect》书中的两个经典案例,展示如何从研究问题出发,画出因果图,识别路径,最后得出结论。
案例 1:葡萄酒与长寿的悖论
研究问题:"适量饮酒是否延长寿命?"
背景
在过去 20 年里,大量观察性研究发现:与完全不饮酒的人相比,适量饮酒者的寿命更长。这个发现甚至被媒体广泛传播为"适量喝酒有益健康"的科学依据。
但等等,因果图来说话
让我们画出这个问题的因果图:
健康状况(Health) ↑ ↑ | | 社会经济地位 → 饮酒习惯 → 寿命 (SES) (Alcohol) (Lifespan) | ↑ |______________________| (后门路径) 焦虑/抑郁 ← Stressor → 饮酒行为 | | └─→ 寿命 ←──────────┘ (未观测混淆)关键变量及其因果关系:
- SES:同时影响饮酒习惯和寿命(有钱的人既更可能适度饮酒,也因为医疗条件好而活得更长)
- 焦虑/抑郁:导致过度饮酒的人通常有更多心理问题,这本身会缩短寿命;而完全不饮酒的人中,有些是因为健康已经很差才戒酒
观察数据中看到什么?
简单地对比"适度饮酒者"和"非饮酒者"的平均寿命,你会看到前者寿命更长。但这是:
总相关性 = 直接因果效应 + 后门路径偏差 + 对撞变量偏差 = ??? + (+) + (++因为戒酒者可能有隐性健康问题)正确的识别策略
根据后门标准,你需要控制:
- SES(阻断后门路径)
- 基线健康状况(阻断"不健康的人选择戒酒"这个对撞变量)
- 其他风险因子(年龄、运动习惯等)
一旦你这样做,在随机对照试验和精心控制的观察性研究中,适度饮酒的保护效应完全消失或大幅减弱。
结论
"葡萄酒延长寿命"这个发现其实是因果图中的幽灵相关性(spurious correlation)——完全由混淆变量造成。
教训:当某个因果发现过于"符合我们的直觉或希望"时,一定要拿出因果图来质疑。
案例 2:在线课程与辍学率(完整分析)
这是《The Effect》中的真实案例。
研究问题:"参加在线课程是否降低大学辍学率?"
数据观察
一所大学的数据显示:参加在线课程的学生辍学率(15%)低于未参加的学生(20%)。
初步结论看起来是:"在线课程有保护效应,能降低辍学风险。"
因果图分析
但让我们画出真实的数据生成过程:
种族/性别/年龄 ──┐ ├→ 学业表现 → 在线课程选择 → 辍学 社会经济地位 ────┤ (更好学生有 │ 更多选择) 工作时长 ────────┘ 同时:学业表现 ──→ 辍学 (直接效应)关键发现:在线课程不是随机分配的。选择在线课程的学生通常是学业表现更好、背景更优越的学生。
这意味着:
- 学业表现(基础能力强)→ 既增加选择在线课程的概率,也直接降低辍学风险
- 这产生了一条后门路径:学业表现 → 在线选择与学业表现 → 辍学
应用后门标准
控制所有学生的基线学业表现和背景特征后,在线课程对辍学率的因果效应消失或反向(即可能略微增加辍学率)。
更深层的识别
进一步分析后,研究者发现了一个对撞变量:
学业能力 ──┐ ├→ 能否成功完成在线课程 学业焦虑 ──┘ (这是对撞变量)没有观测到学业焦虑的数据。因此,简单地按"是否完成了在线课程"来分组,实际上控制了一个对撞变量,打开了虚假的后门路径。
最终结论
正确的因果推断表明:在线课程对辍学率没有显著因果效应,甚至可能略微增加风险(对于某些学生群体)。
教训:
- 不是所有观察到的相关性都指向因果关系
- 必须显式绘制并分析因果图
- 即使控制了所有可观测变量,如果因果结构本身有问题(如对撞变量),结论仍然会被污染
八、AI 辅助工具包:用 AI 加速因果图分析
好消息是:因果图虽然概念深,但绘制和分析过程完全可以用 AI 来辅助和加速。下面我提供一套 Prompt 工具包,你可以直接复制到 Claude / ChatGPT 中使用。
Prompt 1:帮你列出所有潜在混淆变量
我正在研究:"[你的研究问题]" 处理变量是:[处理变量名] 结果变量是:[结果变量名] 请头脑风暴所有可能: 1. 同时影响处理变量和结果变量的变量 2. 影响处理变量分配的背景变量 3. 可能被忽视的未观测变量 对每个变量,请: - 说明它为什么影响处理变量 - 说明它为什么影响结果变量 - 评估这是"必然混淆"还是"可能混淆"示例应用(在线课程案例):
我正在研究:"在线课程是否影响大学辍学率" 处理变量是:参加在线课程 结果变量是:大学期间辍学 请头脑风暴...AI 的输出示例:
观测混淆变量: 1. 学业表现(GPA): - 影响在线课程选择:好学生更有能力学好在线课程 - 影响辍学:好学生更不容易辍学 - 类型:必然混淆 ⚠️ 2. 社会经济地位(SES): - 影响在线课程选择:富裕学生有更好的网络环境 - 影响辍学:富裕家庭学生经济压力小 - 类型:必然混淆 ⚠️ 未观测混淆变量: 1. 学业焦虑/心理健康:可能导致学生既选择在线课程(认为压力小) 又容易辍学 2. 父母期望:影响选课方向和完成度Prompt 2:识别因果图中的对撞变量
基于以下因果关系,帮我识别对撞变量: [列出你的因果图的所有箭头关系,格式如: A → C B → C C → D ... ] 对每个对撞变量,请: 1. 清楚地指出它是什么 2. 说明为什么不应该控制它 3. 如果我的分析中控制了它会发生什么示例应用(选择性偏差案例):
A = 学术能力 B = 运动天赋 C = 被名牌大学录取 D = 未来收入 关系: A → C B → C C → D A → D (直接效应) 帮我识别对撞变量...AI 的回答:
对撞变量:被名牌大学录取(C) 原因: - A(学术能力)指向 C - B(运动天赋)指向 C - 因此 C 是对撞变量 问题所在: 如果你只用"名牌大学学生"的样本分析"学术能力→收入", 你隐性地控制了对撞变量 C,打开了虚假路径: A ← B (虚假负相关) 这会让学术能力的预测性被低估。 建议: 使用全国高中生样本(包括未被录取者), 而不要只看名牌大学学生。Prompt 3:判断应该控制哪些变量
我的因果图是: [用箭头列出你的因果关系] 我想估计 X 对 Y 的因果效应。 请帮我: 1. 列出所有从 X 到 Y 的路径 2. 识别哪些是后门路径,哪些是前门路径 3. 根据后门标准,建议我应该控制哪些变量 4. 警告我哪些变量绝对不应该控制(对撞变量、后代) 5. 给出三个不同的控制变量集合(最小/中等/保守), 比较它们的优缺点示例应用:
我的因果图是: 处理:OnlineClass 结果:Dropout 关系: SES → OnlineClass Race → OnlineClass Age → OnlineClass Gender → OnlineClass SES → AvailableTime → Dropout Race → Academics → Dropout Age → Academics OnlineClass → AvailableTime OnlineClass → Academics AvailableTime → Dropout Academics → Dropout 我想估计 OnlineClass → Dropout 的因果效应。 请帮我...Prompt 4:自动生成因果图(文字描述→可视化)
我的研究背景是: [详细描述你的研究情境,包括: - 处理变量是什么 - 结果变量是什么 - 你认为的关键变量有哪些 - 变量之间的因果逻辑] 请帮我用 Graphviz 或 Mermaid 代码生成因果图的可视化代码。 输出格式要求: - 清晰标注处理变量和结果变量 - 用不同颜色区分观测变量和未观测变量 - 标注所有重要的路径输出示例(Mermaid 格式,可直接在 Obsidian、Notion、GitHub 中渲染):
graph LR SES[SES<br/>社会经济地位]:::observed Race[种族]:::observed OnlineClass[在线课程选择]:::observed AvailableTime[可用时间]:::observed Academics[学业表现]:::observed Dropout[辍学]:::observed U3[隐性偏见]:::unobserved SES --> OnlineClass Race --> OnlineClass SES --> AvailableTime Race --> Academics U3 --> Race U3 --> Academics OnlineClass --> AvailableTime OnlineClass --> Academics AvailableTime --> Dropout Academics --> Dropout classDef observed fill:#e1f5ff,stroke:#01579b,stroke-width:2px classDef unobserved fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,stroke-dasharray: 5 5Prompt 5:敏感性检验建议
基于我的因果图,假设存在未观测混淆变量。 请为我设计一个敏感性分析计划,包括: 1. 最可能被遗漏的未观测变量是什么? 2. 这个变量需要多强的效应,才能推翻我的主要结论? 3. 建议我生成什么样的虚拟数据来进行蒙特卡洛模拟? 4. 用 R / Python 代码实现这个敏感性分析 主要结论是:[你估计的因果效应及其统计检验结果]使用建议
第一次使用时的工作流:
Step 1:用 Prompt 1 列出混淆变量 (5 分钟) ↓ Step 2:用 Prompt 4 生成因果图 (10 分钟) ↓ Step 3:用 Prompt 3 判断控制变量 (10 分钟) ↓ Step 4:用 Prompt 2 检查对撞变量 (5 分钟) ↓ Step 5:进行实际分析 ↓ Step 6:用 Prompt 5 做敏感性分析 (15 分钟) 总耗时:约 45 分钟,但能把你的因果思考从"模糊"推进到"清晰"九、常见问题解答
Q1:如果我没有完整的因果假设,该怎么办?
A:诚实地说出来。在论文中写:"基于现有理论,我认为主要的混淆变量包括 X、Y、Z。但承认可能存在未观测混淆 U。"然后进行敏感性分析,量化未观测混淆需要多强才能推翻你的结论。这比装作"没有混淆"更科学。
Q2:DAG 需要"完全正确"吗?
A:不需要。因果图是你对数据生成过程的最佳理解,会随着新知识而演进。关键是你的图要包含你所知的所有重要变量和关系,而不是追求"完美"。
Q3:我的论文已经发表了,才意识到犯了对撞变量的错误。现在怎么办?
A:考虑发表一个技术注记或勘误。比如:"我们的原始分析在子样本上控制了对撞变量,导致可能的偏差。在全样本上重新估计的结果为……"
许多顶级期刊接受这样的更正,这实际上增强了你作为学者的可信度。
Q4:因果图和贝叶斯网络有什么区别?
A:从图的角度看,它们在结构上相同。不同之处在于:
- 因果图(DAG):强调因果关系,用于因果推断
- 贝叶斯网络:强调概率推理,用于概率计算
在许多应用中,两者可以互补使用。
Q5:我应该在所有研究中都画因果图吗?
A:如果你的研究有因果推断的意图(比如"X 对 Y 的影响"),答案是绝对是。即使是在随机对照试验中,因果图也能帮助你思考干扰变量和异质性效应。
📚 进阶阅读建议
- 核心书籍:Nick Huntington-Klein 的《The Effect》(中文版《效应:研究设计和因果性导论》)—— 这篇博文的原始素材来源
- 经典教科书:Judea Pearl 的《Causality: Models, Reasoning, and Inference》(必读,但技术性很强)
- 应用指南:Paul Bürkner 等人的在线 DAG 资源 (DAGitty - drawing and analyzing causal diagrams (DAGs)) —— 可视化工具
- R 包推荐:
dagitty(画 DAG)、ggdag(美化 DAG)、sensemakr(敏感性分析)
📚 致读者的话
如果你读到这里,我想向你道一声感谢。
因果推断是现代科研中最重要、也最容易被误用的方法。在我担任科研知识分享博主的这几年里,我发现:很多研究者的困境不在于不会跑统计模型,而在于不知道"什么时候应该用什么模型"。
因果图就是这样的一个工具——它不会直接给你答案,但它会帮你问对问题。
这篇文章的目的,就是让你从"盲目地控制变量"升级到"有理论依据地选择变量";从"相信统计软件的输出"升级到"理解数据的生成逻辑"。
希望下次当你看到一个意外的研究结果、或者被审稿人质疑"遗漏变量"时,你能够画出因果图,清晰地说出:
"这是我的因果假设。这是我控制的变量。这是我没有控制的理由。这是可能的遗漏混淆。"
这,就是科研专业精神的体现。
附录:因果图绘制工具速查
| 工具 | 语言 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|---|
| DAGitty.net | 网页版 | 免费、直观、可自动识别路径 | 功能相对简单 | 初学者 |
| R: ggdag | R | 与 ggplot2 整合、美观 | 需要编程 | R 用户 |
| R: dagitty | R | 功能强大、可识别策略 | 学习曲线陡 | 进阶用户 |
| Python: pygraphviz | Python | 灵活度高 | 绘制复杂 | Python 用户 |
| Graphviz | 文本代码 | 强大、可版本控制 | 代码形式、无可视化编辑器 | 技术型用户 |
| PowerPoint/Miro | 图形软件 | 直观、易修改 | 无自动路径识别 | 快速草图 |