「深度」A/B測試中的因果推斷——隨機化分流

吆喝科技_Zoran發表於2019-03-02

上一篇文章“A/B 測試中的因果推斷——潛在結果模型”中我們介紹了用於 A/B 測試因果推斷的潛在結果模型,現在我們來看看在統計推斷中如何應用這個模型,對試驗的因果效果進行估計。

分流機制

前面我們說過,對於因果效果的估計,我們需要比較多個個體的實際觀測到的潛在結果,其中一部分個體和另外一部分分別接受不同的處理,觀測到不同的潛在結果。

假如我們有兩個使用者參與這個霧霾小試驗:小強和小明,觀測到如下的結果。

「深度」A/B測試中的因果推斷——隨機化分流

表面上來看,小強不戴口罩咳嗽 100 分鐘,小明戴口罩也是咳嗽 100 分鐘,我們也許就簡單地得出一個結論:霧霾時戴口罩沒有用,咳嗽不會少。但是真實情況可能是:小強對霧霾的抵抗力比小明好很多,所以他不戴口罩咳嗽 100 分鐘,戴口罩只咳嗽 10 分鐘;而身體較弱的小明不戴口罩會咳嗽 200 分鐘,戴口罩咳嗽 100 分鐘。那麼真實的因果效果應該是戴口罩少咳嗽 100 分鐘左右,我們從資料表面得出的戴口罩無用的結論是錯誤的。

上面給出的是一個只有兩個個體的簡單例子,如果參與試驗的個體很多,同樣可能出現這樣的狀況。問題出在哪裡?顯然,個體之間是存在差異的,如果我們把抵抗力強的分派在一組,把抵抗力差的分派到另外一組,然後進行對比,結果就會和真實情況偏差很大,從而得出錯誤的結論。

問題的關鍵在於參與試驗的使用者進行分組的方法,也就是哪些使用者觀測到戴口罩的潛在結果,哪些使用者觀測到不戴口罩的潛在結果,這是對試驗比較的結果影響很大的重要因素。我們把這個分組的過程稱為使用者分流/分派機制 (assignment mechanism)。

也就是說,多個個體參與試驗並不足以保證我們進行有效的因果推斷,我們必須掌握個體的分流機制這個關鍵資訊或者對其進行有計劃的控制。分流機制和因果效果的定義沒有關係,但是它是潛在結果模型應用過程中的關鍵一步,是決定效果估計準確性的重要因素。我們通常需要在試驗設計中選擇一個好的分流方案,以使得因果效果的估計接近於它的定義,並且儘可能提升試驗的統計功效。

因果效果是通過潛在結果(只能觀測到其中一個)的比較來定義的,和實際接受到的處理無關。但是,因為我們只能觀測到一半的潛在結果,無法得知個體的因果效果,在評估因果效果時就存在一個因果推斷的困難:資料缺失問題,個體沒有接受到的處理所對應的潛在結果的資料是缺失的。因此,解決問題的關鍵就是缺失資料的處理機制,在因果推斷中就是分流機制。

哪些個體應該接受哪些處理,或者說哪些潛在結果應該被觀測到?分流機制的這些分派決定是非常關鍵的。我們再看看有 4 個使用者參與霧霾小試驗的例子,這次試驗增加了使用者小芳和小剛,小芳和小強在一組,不戴口罩;小剛和小明在一組,戴口罩。觀測到資料如下:

「深度」A/B測試中的因果推斷——隨機化分流

這次從資料上看,不戴口罩咳嗽 150 分鐘(平均),戴口罩咳嗽 55 分鐘(平均),結論是戴口罩可以減少咳嗽時間 95 分鐘(平均)。和真實的個體因果效果對比我們可以看出,這個估計結果是很準確的。

這次試驗為什麼可以推斷出正確的結論呢?因為我們增加了試驗使用者小芳和小剛,而小芳的霧霾抵抗力和小明接近(相同),小剛的抵抗力和小強接近(相同),從而解決了資料缺失的問題:你可以把小芳的結果看作是小明沒有觀測到的不戴口罩情況下的潛在結果,把小剛的結果看作是小強沒有觀測到的戴口罩情況下的潛在結果。

這裡分流的關鍵在於把使用者屬性(抵抗力)差不多的小強 vs 小剛,以及小明 vs 小芳,分派到兩個不同的組,接受不同的處理。如果反過來,把屬性差不多的使用者都放在同一個組,那麼資料缺失問題還是沒有得到解決,試驗結論和上面兩個使用者情況下的試驗一樣依然是錯的。

從這兩個例子我們可以看出:我們不能脫離個體的分流機制而僅僅由個體觀測到的潛在結果來進行因果推斷,有效的推斷要求我們必須考慮這個問題:為什麼這些使用者接受這個處理,另外的使用者接受另一個處理?

隨機化試驗

採用隨機化分流方式的試驗設計就是隨機化試驗 (Randomized Experiments),它是我們在 A/B 測試中進行統計推斷的基礎。傳統的隨機化試驗主要有三種型別:

伯努利 (Bernoulli)隨機化試驗

完全隨機化試驗 (Completely Randomized Experiments)

分層隨機化試驗 (Stratified Randomized Experiments)

最簡單的 Bernoulli 試驗以類似於拋硬幣的方式來決定每一個個體的分派;完全隨機化試驗中每個 treatment 分派到的個體數量是固定的,但個體的分派是隨機的;分層隨機化則是在完全隨機化的基礎上,先通過協變數對總體進行分層,然後在層內隨機化分派。

不同的隨機化試驗型別(隨機化分流方式)導致不同的分派概率分佈。以完全隨機化試驗為例,其個體概率如下:

「深度」A/B測試中的因果推斷——隨機化分流

根據這個概率分佈,我們就可以對總體的平均因果效果進行統計推斷和估計了。

平均因果效果的估計

讓我們先從數學上正式地定義平均因果效果 (Average Causal Effect),它是我們試驗和分析的最終目標。

首先把總體中所有的個體編號為 i = 1, …, N,N 是總體的容量。每個個體可接受一組處理中的一個,我們用 Ti 來表示個體 i 可接受的處理的集合。大多數情況下,這個集合對所有個體都是相同的。在我們的小試驗中,Ti 包括兩個處理水平:0 表示不戴口罩(control 組),1 表示戴口罩(treatment 組)。

「深度」A/B測試中的因果推斷——隨機化分流

每個個體可接受的處理水平都有一個對應的潛在效果,Yi(0) 和 Yi(1),Yi(1) 和 Yi(0) 的比較(通常是差值),就是個體 i 的因果效果了。

「深度」A/B測試中的因果推斷——隨機化分流

個體的因果效果我們是無法直接得知的,也不是我們的關注重點。我們通常關心的是總體中所有個體的因果效果的平均值,即平均因果效果。

「深度」A/B測試中的因果推斷——隨機化分流

其中

「深度」A/B測試中的因果推斷——隨機化分流

分別是所有個體不戴口罩(0)的平均潛在結果,和所有個體戴口罩(1)的平均潛在結果。

ACE 就是我們試驗分析的目標,它等於“戴口罩(1)的平均潛在結果 – 不戴口罩(0)的平均潛在結果”。

我們前面已經說過,每個個體的兩個潛在結果只能觀測到其中一個,另外一個是不知道的,所以 Yi(0) 和 Yi(1) 裡面有一半是沒有觀測值的,我們不能由 ACE 的定義公式直接計算出它的值。

對 ACE 的一個很自然的估計量就是“treatment 組觀測到的平均潛在結果 – control 組觀測到的平均潛在結果”

「深度」A/B測試中的因果推斷——隨機化分流

假設參與試驗的 N 個使用者中有 Nt 個分派到 treatment 組,Nc 個在 control 組,那麼 treatment 組和 control 組的平均潛在結果分別是

「深度」A/B測試中的因果推斷——隨機化分流

「深度」A/B測試中的因果推斷——隨機化分流

我們需要評估一下這個估計量的準確性,最基本的衡量標準就是它是否 ACE 的無偏估計,即該估計量的期望是否等於 ACE。

令指示變數 Wi 表示個體 i 被分派的處理(取值 0 或 1),估計量可改寫為:

「深度」A/B測試中的因果推斷——隨機化分流

其期望值

「深度」A/B測試中的因果推斷——隨機化分流

如果分派機制 W 是完全隨機化分派,那麼隨機變數 Wi 的期望

「深度」A/B測試中的因果推斷——隨機化分流

因此可得,

「深度」A/B測試中的因果推斷——隨機化分流

可知,在完全隨機化試驗中,我們根據直觀得到的簡單估計量是 ACE 的無偏估計,是基本可用的。

從上面的推斷過程可以看出,個體的完全隨機化分派機制在其中扮演了非常重要的角色,正是由於隨機變數 Wi 的概率分佈的特點,使得 ACE 的這個簡單估計量是無偏估計。

現在我們來看看這個 ACE 估計量的精確性,也就是其抽樣方差。

根據隨機變數 Wi 的概率分佈的特點,通過類似的方法,可得到 ACE 估計量的方差為:

「深度」A/B測試中的因果推斷——隨機化分流

其中

「深度」A/B測試中的因果推斷——隨機化分流

分別是潛在結果 Yi(0) 和 Yi(1) 的樣本方差,而

「深度」A/B測試中的因果推斷——隨機化分流

則是個體因果效果 Yi(1) – Yi(0) 的樣本方差。如果總體中的個體因果效果為常量(例如,戴口罩的效果對所有人都是少咳嗽 100 分鐘),那麼該項為 0,我們得到:

「深度」A/B測試中的因果推斷——隨機化分流

以觀測到的組內樣本方差近似代替總體的樣本方差可得到一個方差估計量:

「深度」A/B測試中的因果推斷——隨機化分流

結合平均因果效果的估計量和抽樣方差估計量可得到假設檢驗統計量為:

「深度」A/B測試中的因果推斷——隨機化分流

是不是看起來很眼熟?嗯,其實就是我們常用的獨立雙樣本情況下的 z 檢驗量的計算公式:

「深度」A/B測試中的因果推斷——隨機化分流

大家現在是不是對隱藏在這個公式裡的因果效果有所理解了?!

本文作者:鍾書毅@吆喝科技

作者的上篇文章:「深度」A/B測試中的因果推斷——潛在結果模型

「深度」A/B測試中的因果推斷——隨機化分流

相關文章