【动手学因果推断】(二):潜在因果框架
【動手學(xué)因果推斷】(二):潛在因果框架
- 🌸個人主頁:JOJO數(shù)據(jù)科學(xué)
- 📝個人介紹:統(tǒng)計(jì)學(xué)top3高校統(tǒng)計(jì)學(xué)碩士在讀
- 💌如果文章對你有幫助,歡迎?關(guān)注、👍點(diǎn)贊、?收藏、👍訂閱專欄
- ?本文收錄于【動手學(xué)因果推斷】本系列主要記錄一些因果推斷學(xué)習(xí)筆記,以及如何應(yīng)用常見的方法,并給出相關(guān)代碼,方便大家動手學(xué)習(xí),后續(xù)會考慮做一些論文總結(jié)分析。
潛在因果框架
上一章我們從幾個例子介紹了因果推斷的一些基本概念,其中我們核心要解決的問題是測量因果效應(yīng)。接下來我們將正式進(jìn)入到因果推斷的問題研究中。
我們先來看一下一些基本概念
1.潛在結(jié)果和個體因果效應(yīng)(ITE)
首先,潛在結(jié)果指的是一個干預(yù)后所有可能的結(jié)果,我們來考慮兩個場景
場景 1 考慮你不開心的場景。你正在考慮是否要養(yǎng)一只狗來幫助你快樂。如果你得到狗后變得快樂,是否意味著狗讓你快樂?好吧,如果你沒有養(yǎng)狗也會變得快樂怎么辦?在那種情況下,狗并不是讓你快樂所必需的,所以此時養(yǎng)狗對你的快樂有因果關(guān)系的說法是站不住腳的。
場景 2 讓我們稍微改變一下。考慮一下,如果你養(yǎng)了一只狗,你很開心,但現(xiàn)在,如果你不養(yǎng)狗,你會變得不開心。在這種情況下,養(yǎng)狗對你是否快樂有因果關(guān)系
在上述兩種情況下,我們都使用了稱為潛在結(jié)果概念。
結(jié)果Y表示是否快樂: Y = 1 對應(yīng)于快樂,而 Y = 0 對應(yīng)于不快樂。你的干預(yù)是你是否養(yǎng)狗: T = 1 對應(yīng)你養(yǎng)狗而T= 0表示不養(yǎng)狗。
我們定義 Y ( 1 ) Y(1) Y(1)表示養(yǎng)狗的潛在結(jié)果, Y ( 0 ) Y(0) Y(0)表示不養(yǎng)狗的潛在結(jié)果,因此,場景1:
- Y(1) = 1,Y(0) = 1
- Y(1) = 1,Y(0) = 0
更一般地說,潛在結(jié)果Y(t) 表示接受干預(yù)后的結(jié)果會是什么。潛在結(jié)果不同于觀察到的結(jié)果Y,因?yàn)椴⒎撬袧撛诮Y(jié)果都被觀察到。在實(shí)際中,我們往往只能觀察到一個潛在結(jié)果。
在我們剛剛的場景中,只有一個個體“你”, 我們定義個人因果效應(yīng)(ITE):
在剛剛的例子中,場景二的ITE = Y(1)-Y(0) = 1-0=1
現(xiàn)在我們已經(jīng)介紹了潛在的結(jié)果和ITE,我們可以介紹因果推理中出現(xiàn)的主要問題,這些問題在相關(guān)或預(yù)測的領(lǐng)域中是不存在的。
2. 因果推斷的基礎(chǔ)問題
核心問題: 我們不可能觀察到給定個體的所有潛在結(jié)果(missing data!)。
繼續(xù)考慮養(yǎng)狗的例子。我們無法同時觀察到 Y(1) 和 Y(0),除非你有一臺時間機(jī)器可以讓你回到過去并選擇第一次沒有養(yǎng)狗的版本。你不能簡單地得到一只狗,觀察 Y(1),把狗送走,然后觀察 Y(0),因?yàn)榈诙斡^察將受到你在兩次觀察之間采取的所有行動以及自第一次觀察以來發(fā)生的任何其他變化的影響觀察。
進(jìn)一步的,因?yàn)槿绻覀儾荒芡瑫r觀察到 Y(1) 和 Y(0),那么我們就無法觀察到 Y(1) ? Y(0) 的因果效應(yīng)。 這個問題是因果推理所獨(dú)有的,因?yàn)樵谝蚬评碇?#xff0c;我們關(guān)心的是做出因果推斷,而這些推斷是根據(jù)潛在結(jié)果來定義的。相比之下,考慮機(jī)器學(xué)習(xí)。在機(jī)器學(xué)習(xí)中,我們往往只關(guān)心預(yù)測觀察到的結(jié)果Y,所以不需要潛在的結(jié)果,這意味著機(jī)器學(xué)習(xí)不必處理我們在因果推理中必須處理的這個基本問題。
我們稱不能觀察到的潛在結(jié)果為反事實(shí),因?yàn)樗鼈兣c事實(shí)結(jié)果相反。 觀測到的潛在結(jié)果被稱為事實(shí)結(jié)果。我們來看下面這個表:
對于每一個個體,我們給予不同的干預(yù) T T T,會得到不同的潛在結(jié)果 Y ( t ) Y(t) Y(t),但是要么只能得到Y(jié)(1),要么只能得到Y(jié)(0),其中?都是我們無法直接得到的。因此這就是我們要解決的問題,處理這些缺失數(shù)據(jù)
思考 我如何去合理的估算反事實(shí)結(jié)果,以便于我們因果效應(yīng)呢?
首先,研究一個個體 Y i ( t ) Y_i(t) Yi?(t)可能不是那么有意義,因?yàn)檫@是一個隨機(jī)變量,我們真正感興趣的是平均干預(yù)效應(yīng)(Average treatment effect,ATE) A T E = E [ Y ( 1 ) ? Y ( 0 ) ] ATE = E[Y(1)-Y(0)] ATE=E[Y(1)?Y(0)]。由期望的線性性質(zhì),問題的核心就轉(zhuǎn)化為求 E [ Y ( 1 ) ] ? E [ Y ( 0 ) ] E[Y(1)]-E[Y(0)] E[Y(1)]?E[Y(0)]。理想情況下,如果我們能夠用不同T取值的條件期望來計(jì)算,如下圖所示,那就解決了我們的問題,但是,很多情況下,這個等號是不成立的
E [ Y ( 1 ) ] ? E [ Y ( 0 ) ] E[Y(1)]-E[Y(0)] E[Y(1)]?E[Y(0)]:描述的是因果關(guān)系
E [ Y ∣ T = 1 ] ? E [ Y ∣ T = 0 ] E[Y|T=1]-E[Y|T=0] E[Y∣T=1]?E[Y∣T=0]:描述的是相關(guān)關(guān)系。
這兩者是不等價的,我們上一篇文章舉例解釋了相關(guān)不等于因果。我們再來看一個例子
我們發(fā)現(xiàn)穿鞋睡覺與醒來頭痛密切相關(guān),但這兩者之間沒有因果關(guān)系
常見原因:前一天晚上喝酒,所以忘記拖鞋,而喝酒又會造成頭疼,因此此時是存在Confounding(混淆)變量X(喝酒),它同時造成了穿鞋睡覺和頭疼。
還有一種情況是穿鞋睡覺和不穿鞋睡覺的群體是不可比的(樣本選擇偏差)
我們可以看到,穿鞋睡覺的人大部分是喝醉的,而不穿鞋睡覺的大部分是清醒的,此時樣本分布是不一樣的,存在選擇偏差
那什么時候的可比的呢?
假設(shè)穿鞋睡覺和不穿鞋睡覺人群清醒和喝醉的分布是一致的,那么此時就是可比的
接下來我們看一下,在什么假設(shè)下,相關(guān)和因果是可以劃等號的呢?
3. 基本假設(shè)
3.1 (Ignorability / Exchangeability)
這個假設(shè)是因果推斷的關(guān)鍵,因?yàn)樗试S我們將 ATE退到研究相關(guān)差異上。有了這個條件,我們可以計(jì)算各個那個例子的因果效應(yīng)
ignorability:我們可以理解為可以忽略掉混淆變量:在這里就是忽略掉X對T的影響,因此此時不存在confounding(混淆)
從Exchangeability角度來看,交換不同的條件干預(yù),我們的期望是一樣的,此時暗示中不同組之間的分布是一致的,不存在樣本選擇偏差。
因此,這個條件和ignorability是等價的
3.2 Identifiability(可定義的)
Identifiability:我們能夠從一個統(tǒng)計(jì)學(xué)變量中計(jì)算因果效應(yīng)
如果我們能夠?qū)⒁蚬?yīng)轉(zhuǎn)換到一個統(tǒng)計(jì)學(xué)變量中,那么我們可以研究它的分布,概率等,進(jìn)而運(yùn)用一系列統(tǒng)計(jì)方法。
因此,我們在因果推斷中,感興趣都是Identifiability的,這樣我們才可以用相關(guān)性的方法來研究。
3.3 No interference(無干擾性)
無干擾性:樣本i的潛在結(jié)果不受其它樣本的影響
例如Y代表我是否開心,T表示我是否養(yǎng)狗,那么Y只取決于我是否養(yǎng)狗,而不受其他人是否養(yǎng)狗的影響。
3.4 Consistency(一致性)
當(dāng)T=t, Y = Y ( t ) Y=Y(t) Y=Y(t),也就是說只有T一樣,我們的Y一定也是一樣的,否則違背了一致性。例如,假設(shè)我養(yǎng)的是金毛,我開心,而我養(yǎng)的柴犬,我不開心,這樣就違背了一致性,我們應(yīng)該要確保無論養(yǎng)什么品種的狗,他們的結(jié)果應(yīng)該是一致的。
3.5 Conditional exchangeability(條件可交換)
首先,我們先引出一個新的概念:條件平均因果效應(yīng)(CATE)
C A T E = E [ Y ( 1 ) ∣ X ] ? E [ Y ( 0 ) ∣ X ] CATE = E[Y(1)|X]-E[Y(0)|X] CATE=E[Y(1)∣X]?E[Y(0)∣X]
此時計(jì)算的是在給定一個協(xié)變量X的條件下,平均因果效應(yīng),和之前一樣,我們也需要相應(yīng)的假設(shè)
conditional exchangeability:在給定協(xié)變量X的條件下Y與T的獨(dú)立的
我們剛剛定義的可交換是直接說Y和T獨(dú)立,忽略X與T之間的關(guān)系,那么這里的條件可交換是指在給定X的條件下X和T之間沒有關(guān)系
注意:條件和獨(dú)立條件之間沒有關(guān)系
因此,在滿足條件可交換時,我們有以下推導(dǎo)
根據(jù)重期望公式,我們可以根據(jù)CATE得到ATE:
3.6 Positivity(正向性)
雖然以許多協(xié)變量為條件對于實(shí)現(xiàn)無混淆很有用,但它實(shí)際上可能會帶來一些問題。因?yàn)闆]有考慮positivity(正向性)這個條件,正向性是指具有不同協(xié)變量的所有數(shù)據(jù)組都有一定概率接受任何干預(yù)的條件。形式上,我們定義二元干預(yù)的正向性如下:
為什么需要正向性條件呢?
我們來看求ATE的公式如下
接下來利用期望的定義:
根據(jù)貝葉斯公式:
現(xiàn)在可以看到,我們的分母存在 P ( T = 1 ∣ X = x ) P(T=1|X=x) P(T=1∣X=x),因此要保證它是正值。這就是為什么我們需要正向性假設(shè)的數(shù)學(xué)原理。
直覺上怎么理解呢?
如果違反了正向性假設(shè),那就意味著在數(shù)據(jù)的某個子組中,每個人總是接受干預(yù)或每個人總是接受控制。能夠估計(jì)該組中實(shí)驗(yàn)與對照組的因果關(guān)系是沒有意義的,因?yàn)槲覀冎豢吹綄?shí)驗(yàn)或?qū)φ战M,無法對比。
正向性的另一個名稱是重疊(overlap)。這個名字的直覺是我們希望實(shí)驗(yàn)組的協(xié)變量分布與對照組的協(xié)變量分布重疊。
我們可以發(fā)現(xiàn)Positivity和unconfoundness存在trade-off的關(guān)系
3.7 總結(jié)
我們首先引入了無混淆性(條件可交換性),因?yàn)樗侵饕囊蚬僭O(shè)。然而,所有的假設(shè)都是必要的
- Identifiability (Assumption 2.2)
- No interference (Assumption 2.3)
- Consistency (Assumption 2.4)
- Positivity (Assumption 2.6)
現(xiàn)在我們結(jié)合上述的條件,可以將一個因果量轉(zhuǎn)換為統(tǒng)計(jì)量
4.因果估計(jì)量
為了方便后續(xù)相關(guān)描述,我們給出幾個概念
- estimand: 估計(jì)量
- estimate:估計(jì)
- estimation:估計(jì)過程
其中,我們定義causal estimand為因果估計(jì)量,例如 E [ Y ( 1 ) ] ? E [ Y ( 0 ) ] E[Y(1)]-E[Y(0)] E[Y(1)]?E[Y(0)]就是一個因果估計(jì)量,statistic estimand為統(tǒng)計(jì)估計(jì)量,例如 E [ Y ∣ T = 1 ] ? E [ ( Y ∣ T = 1 ) ] E[Y|T=1]-E[(Y|T=1)] E[Y∣T=1]?E[(Y∣T=1)]是一個統(tǒng)計(jì)估計(jì)量,我們需要做的是去估計(jì)這些統(tǒng)計(jì)估計(jì)量,然后得到我們的因果關(guān)系。
具體怎么估計(jì)統(tǒng)計(jì)估計(jì)量,我們可以運(yùn)用統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)等方法,下面我們來看一個簡單的例子
5.實(shí)際案例:鈉攝入量對血壓的影響
這是一個重要的應(yīng)用,因?yàn)榘l(fā)現(xiàn)大約 46% 的美國人患有高血壓,而高血壓與死亡率有關(guān),如果我們能夠發(fā)現(xiàn)鈉的攝入量與血壓是有因果關(guān)系的,那么我們就可以控制鈉攝入量,實(shí)現(xiàn)血壓的控制
- Y:血壓
- T:T=1表示鈉攝入量高于3.5g,T=0表示鈉攝入量低于3.5g
- X:協(xié)變量,包含年齡和尿液蛋白質(zhì)含量
現(xiàn)在,我們?nèi)绾喂烙?jì)ATE呢?,首先,我們假設(shè)滿足consistency,positivity,條件可交換。然后,我們可以得到ATE:
E X [ E [ Y ∣ T = 1 , X ] ? E [ Y ∣ T = 0 , X ] ] E_X[E[Y|T=1,X]-E[Y|T=0,X]] EX?[E[Y∣T=1,X]?E[Y∣T=0,X]]
然后,我們將對X的外部期望替換為對數(shù)據(jù)的平均值,得到以下結(jié)果
如何估計(jì)內(nèi)部的條件期望呢?這里有很多機(jī)器學(xué)習(xí)或統(tǒng)計(jì)方法應(yīng)用,我們在這里介紹簡單的線性回歸。下面來看具體代碼和結(jié)果
5.1代碼
import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression# 數(shù)據(jù)生成 def generate_data(n=1000, seed=0, beta1=1.05, alpha1=0.4, alpha2=0.3, binary_treatment=True, binary_cutoff=3.5):np.random.seed(seed)age = np.random.normal(65, 5, n)sodium = age / 18 + np.random.normal(size=n)if binary_treatment:if binary_cutoff is None:binary_cutoff = sodium.mean()sodium = (sodium > binary_cutoff).astype(int)blood_pressure = beta1 * sodium + 2 * age + np.random.normal(size=n)proteinuria = alpha1 * sodium + alpha2 * blood_pressure + np.random.normal(size=n)hypertension = (blood_pressure >= 140).astype(int) # not used, but could be used for binary outcomesreturn pd.DataFrame({'blood_pressure': blood_pressure, 'sodium': sodium,'age': age, 'proteinuria': proteinuria}) df = generate_data() df.head()| 0 | 147.157602 | 1 | 73.820262 | 46.140554 |
| 1 | 133.339602 | 1 | 67.000786 | 40.970603 |
| 2 | 139.833515 | 0 | 69.893690 | 41.835567 |
| 3 | 152.500558 | 1 | 76.204466 | 46.401798 |
| 4 | 149.644768 | 1 | 74.337790 | 44.082575 |
因?yàn)檫@里我們使用的是模擬數(shù)據(jù)集,我們知道,在這里真實(shí)的sodium的效應(yīng)是1.05
# 計(jì)算因果效應(yīng) def estimate_causal_effect(Xt, y, model=LinearRegression(), treatment_idx=0):model.fit(Xt, y)Xt1 = pd.DataFrame.copy(Xt)Xt1[Xt.columns[treatment_idx]] = 1Xt0 = pd.DataFrame.copy(Xt)Xt0[Xt.columns[treatment_idx]] = 0return (model.predict(Xt1) - model.predict(Xt0)).mean()X t X_t Xt?是你要輸入的干預(yù)變量和協(xié)變量,y是我們的目標(biāo)變量。
不加入?yún)f(xié)變量
不加入?yún)f(xié)變量我們就只考慮
E [ Y ∣ T = 1 ] ? E [ Y ∣ T = 0 ] E[Y|T=1]-E[Y|T=0] E[Y∣T=1]?E[Y∣T=0]
計(jì)算的結(jié)果為4.9,和目標(biāo)的1.05差距很大 ( 4.9 ? 1.05 ) / 1.05 = 368.87 % (4.9-1.05)/1.05 =368.87\% (4.9?1.05)/1.05=368.87%.因?yàn)槲覀冎勒鎸?shí)的Y還受到X的影響,這個時候直接計(jì)算Y對T的條件期望誤差是較大的
加入?yún)f(xié)變量
此時我們要計(jì)算的就是
E X [ E [ Y ∣ T = 1 , X ] ? E [ Y ∣ T = 0 , X ] ] E_X[E[Y|T=1,X]-E[Y|T=0,X]] EX?[E[Y∣T=1,X]?E[Y∣T=0,X]]
計(jì)算的結(jié)果為0.93,和目標(biāo)的1.05差距較小 ∣ 0.93 ? 1.05 ∣ / 1.05 = 11.42 % |0.93-1.05|/1.05 =11.42\% ∣0.93?1.05∣/1.05=11.42%。這一部分誤差我們可以認(rèn)為是隨機(jī)誤差,增大樣本量可以減少
總結(jié)
我們介紹了潛在結(jié)果框架,其中因果推斷的核心問題:不能觀察到所有的潛在結(jié)果,導(dǎo)致我們無法衡量因果效應(yīng):ATE 和 CATE
解決方法:將因果估計(jì)量退到統(tǒng)計(jì)估計(jì)量來研究,進(jìn)而可以應(yīng)用一系列的統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)方法。因此,我們引出了一系列假設(shè),來確保這樣做是合理的。
最后我們通過一個模擬數(shù)據(jù)集,展示了如何計(jì)算因果效應(yīng),以及是否使用協(xié)變量是有較大差異的。
改進(jìn): 最后我們使用的是線性回歸來估計(jì)條件期望, Y = α T + β X Y=\alpha T+\beta X Y=αT+βX,可以看出,不同的X我們的 α \alpha α都是一樣的,因此無法捕捉到不同X條件下干預(yù)T的異質(zhì)性,可以考慮使用一些更復(fù)雜的非線性模型,后續(xù)在進(jìn)行相關(guān)討論。此外,我們這些假設(shè)條件很多情況下可能不成立,那我們該如何進(jìn)行研究?大家可以思考一下這些問題并進(jìn)行改進(jìn)。
總結(jié)
以上是生活随笔為你收集整理的【动手学因果推断】(二):潜在因果框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于 OneNote 无法正常同步 问题
- 下一篇: rtems网络移植-rtems系统初始化