「深度」A/B測試中的因果推斷——潛在結果模型

吆喝科技_Zoran發表於2019-01-14

摘要:

重度霧霾天,你出門可能戴口罩,也可能沒戴。如果沒戴口罩,今天痛苦地咳嗽了 100 分鐘(會不會掛掉?),你會很後悔地想:要是我今天記得戴口罩,那麼我可能只會咳嗽 10 分鐘。戴口罩的話你會咳嗽 10 分鐘,不戴口罩的話你會咳嗽 100 分鐘,咳嗽 10 分鐘和 100 分鐘分別就是這兩個處理所對應的潛在結果。因為你實際上沒戴口罩而咳嗽了 100 分鐘,所以,這戴口罩只咳嗽 10 分鐘的潛在結果只是你想象的結果,不是實際發生和觀察到的。

聽起來是不是有點反事實 (Counterfactual) 推斷的味道?是的,潛在結果就是這種想象中的:假如我這幾年買的是美股,而不是 A 股,那結果就是賺 100 萬,而不是賠 100 萬了(捶胸頓足)。

有點意思?那繼續……

對 A/B 測試有了解的讀者都知道,A/B 測試通過使用者分組進行線上試驗,可以對比產品兩個版本的方案找出哪一個更好。但是很多人可能會問:我為什麼一定要用 A/B Testing?Google Analytics 這麼強大,我的產品的使用者訪問一目瞭然,通過資料分析不難找到問題所在,A/B 測試還有必要嗎?

這篇文章裡,作者將從因果關係方面仔細分析為什麼在關鍵的產品決策時,您需要 A/B Testing,而不僅僅是像 GA 這種觀察性的資料分析工具。

相關性與因果關係

前面問題的回答從統計學上看很簡單,GA 這種觀察性的資料分析工具主要用於探索性的研究,它長於發現問題,而不是解決問題;它可以用來發現事物之間的相關性,但是很難用來確認因果關係。

在概率論和統計學中,相關(Correlation,或稱相關係數),顯示兩個隨機變數之間線性關係的強度和方向。

——維基百科

相關性在探索性的研究中是很有用的,它可以在實踐中預示某種關係,指明進一步研究的方向。相關性的典型例子是產品的需求和價格的關係,空氣質量和汽車數量的關係。這兩個相關性的例子都暗示了更進一步的因果關係,因為從經濟學上看價格下降會提升需求,汽車數量增加使得尾氣排放量增加而導致空氣質量變差。但是,不是所有的相關性都有因果關係,相關並不意味著因果。

15 Insane Things That Correlate With Each Other 這個網站收集了很多看起來很荒謬的相關性例子。

「深度」A/B測試中的因果推斷——潛在結果模型

上面的例子中,美國緬因州的離婚率和人均黃油消耗量在 2000 年至 2009 年間達到了極強的相關性(相關係數 0.9926)。吃黃油和離婚明顯是沒有因果關係的兩件事,因為根據我們的常識,吃多點黃油不至於讓人性情大變而導致離婚,離婚之後也不太可能因為心情沮喪而多吃黃油。

如果我們的研究目的是找出緬因州離婚率下降的主因,人均黃油消耗量和離婚率之間的相關性有用嗎?顯然這個相關性的作用是很有限的,你不能據此得出結論:少吃黃油有助於婚姻和諧。我們希望得到的是和離婚率之間的因果關係,這就需要針對性的調查或試驗。吃黃油和離婚兩者表面上的相關性頂多起到提示性的作用(假如有的話),例如,研究人員可能會想到,是否有一個第三因素,導致了緬因州離婚率和黃油消耗量的共同下降,如經濟形勢?

因果關係在很多應用場合是我們的核心關注點,例如產品的優化方案。更醒目的 Call to Action 按鈕是否會促進著陸頁的轉化?什麼樣的表單使用者更願意去完成?這些問題的背後都是一些 PM 需要去確證的因果關係,正是 A/B 測試可以大展身手的地方。

A/B 測試也稱為線上對照試驗 (Online Controlled Experiments) ,是一種科學地進行統計因果推斷的研究方法,它和其他統計研究方法(如觀察性研究)的主要區別在於它可以通過針對性的試驗簡單高效地對所考察的因素和變數間的因果關係進行科學地推斷。

那到底什麼是因果關係呢?

因果關係是一個事件(即“因”)和第二個事件(即“果”)之間的關係,其中後一事件被認為是前一事件的結果。一般來說,因果還可以指一系列因素(因)和一個現象(果)之間的關係。對某個結果產生影響的任何事件都是該結果的一個因素。

——維基百科

A/B 測試要研究的就是這種簡單邏輯上的因果關係,而不是先有雞還是先有蛋這種近乎哲學上的因果。確切地說,我們通過試驗要證明的是:某個因素/處理是否會對某個現象/結果產生作用。

「深度」A/B測試中的因果推斷——潛在結果模型

下面我們將根據統計學上的潛在結果模型,仔細分析因果關係的定義和推斷過程。

潛在結果

首先明確一下統計學上因果關係的定義。在試驗的上下文中,我們討論的因果關係是和某個處理 (treatment) 關聯在一起的,作用的目標主體是參加試驗的個體。

一個或多個處理作用在個體上產生的預期效果我們稱之為潛在結果 (Potential outcome)。之所以稱為潛在結果是因為在一個個體上最終只有一個結果會出現並被觀察到,也就是和個體所接受的處理相對應的那個結果。另外的潛在結果是觀察不到的,因為它們所對應的處理並沒有實際作用在該個體上。

舉個例子,今天北京是重度霧霾天(很正常),你出門可能戴口罩了,也可能沒戴口罩(忘了,很不幸!)。這個小試驗的個體就是你,戴口罩和不戴口罩就是兩個不同的處理。戴或者不戴,當然只能選一個,結果也只能觀察到一個。

如果你沒有戴口罩,今天痛苦地咳嗽了 100 分鐘(會不會掛掉?),你會很後悔地想:要是我今天記得戴口罩,那麼我可能只會咳嗽 10 分鐘。戴口罩的話你會咳嗽 10 分鐘,不戴口罩的話你會咳嗽 100 分鐘,咳嗽 10 分鐘和 100 分鐘分別就是這兩個處理所對應的潛在結果。

因為你實際上沒戴口罩而咳嗽了 100 分鐘,所以,這戴口罩只咳嗽 10 分鐘的潛在結果只是你想象的結果,不是實際發生和觀察到的。

聽起來是不是有點反事實 (Counterfactual) 推斷的味道?是的,潛在結果就是這種想象中的:假如我這幾年買的是美股,而不是 A 股,那結果就是賺 100 萬,而不是賠 100 萬了(捶胸頓足)。

因果效果

在定義了潛在結果之後,不同的處理產生的因果效果 (Causal effect)就很清楚了,它就是不同潛在結果的比較。

「深度」A/B測試中的因果推斷——潛在結果模型

在上面的例子中,作用在個體“你”上的因果效果就是戴口罩咳嗽 10 分鐘 - 不戴口罩咳嗽 100 分鐘 = 少咳嗽 90 分鐘。我們用符號 Y 來表示潛在結果,Y(不戴口罩) 和 Y(戴口罩) 分別表示兩個不同處理(戴 or 不戴口罩)情況下的潛在結果。

我們可以看出,因果效果的定義依賴於潛在結果,但是它並不依賴於哪一個潛在結果實際發生。無論你今天戴了口罩(觀測到咳嗽 10 分鐘)還是沒戴口罩(觀測到咳嗽 100 分鐘),個體的因果效果都是不變的(戴口罩少咳嗽 90 分鐘)。

可能你會問了:事實上我今天沒戴口罩,我知道我咳嗽了 100 分鐘,但是我怎麼知道如果我戴了口罩,只會咳嗽 10 分鐘呢?這確實是個問題,戴或者不戴口罩,你只能選擇一個,觀測到一個結果。聰明的讀者可能會想到一個解決辦法:你可以今天不戴口罩,明天戴口罩,對比一下,不就知道了嗎?這個辦法在邏輯和推斷上不是那麼嚴謹的,因為今天和明天,儘管只隔了一天,但是很多情況會發生變化,導致今天戴口罩和明天戴口罩觀察到的咳嗽時間是不一樣的。

例如,雖然北京的霧霾每天都很醇,但是今天和明天還是有差別的,可能今天和燕京啤酒一樣醇,明天和茅臺一樣醇,那麼你今天戴口罩會咳嗽10次,明天戴還是要咳嗽 100 次。很明顯,有霧霾時段這個另外的因素影響的話,我們就不知道戴口罩的效果是多少了,因為第二天的醇如茅臺的霧霾完全抵消了你戴口罩的效果,讓你誤以為戴口罩沒有用。

「深度」A/B測試中的因果推斷——潛在結果模型

我們都知道 A/B 測試是隔絕了其他影響因素條件下對某個因素的效果進行比較,而把今天的結果和明天的結果進行直接比較的做法已經不是嚴謹的對照試驗了。從潛在結果模型的觀點來看,今天的“你”和明天的“你”已經不是同一個統計個體了 (⊙o⊙)(雖然從物理上看,明天的你還是原來的你),而個體級別的因果效果是對同一個統計個體而言的。因此,對比個體在不同時段得到的潛在結果不再能夠反映個體的因果效果,據此決策將導致邏輯上錯誤的結論。

難道就沒有辦法了嗎?是的,時光不能倒流,你不可能在不戴口罩觀測一次之後再回退然後戴口罩重來一次。對於作用在個體上的因果效果而言,我們確實沒有太好的辦法。從因果效果的定義上來看,因為兩個潛在結果你註定只能觀測到其中一個,所以你不能只靠一個實際觀測結果就知道比較的效果,這是統計因果推斷要解決的一個基本問題。

不過好訊息是在 A/B 測試中我們關心的是如何“估計”總體中所有個體上的平均因果效果,沒必要準確知道每一個個體的因果效果。因此,和上面類似的辦法在恰當的統計模型下也是可行的。

這裡我們要注意到因果效果的“定義”和“估計”的區別。大家都知道統計是一門以概率為基礎的科學,統計推斷得到的結論不是絕對正確的唯一結果,而是有一定概率分佈的多種可能結果。我們進行因果推斷的主要任務是要得到有一定概率保證的“估計”,而不是絕對符合“定義”的正確結果。

因果效果的“估計”和“定義”相比所要進行的潛在結果的比較是不同的。因果效果的定義不要求多個個體,而對於估計和推斷,我們需要比較實際觀測到的潛在結果,我們不得不考慮多個個體的情況。因為單個個體我們只能觀測到一個潛在結果,我們必須觀測多個個體,其中一部分和另外一部分分別接受不同的處理,觀測到不同的潛在結果。我們前面說的同一個人在不同時段的比較,以及不同人在同一時段的比較,都屬於多個個體的情況。這樣的比較儘管不嚴格符合因果效果的定義,卻是估計因果效果的關鍵方法。

SUTVA 假定

有了多個個體進行觀測就萬事大吉了嗎?統計學家常用的一招還沒使出來呢,那就是把複雜的現實世界簡化為理想數學模型的強力手段——假定 (Assumption)。

在因果推斷的潛在結果模型中,我們需要一個非常重要的 SUTVA (stable unit treatment value assumption) 假定,它包括兩個部分:

  1. 任何個體的潛在結果不受其他個體所接受處理的影響;

  2. 每一個個體所接受的處理水平是唯一的,所導致的潛在結果也是唯一的。

我們先看看 SUTVA 假定的第一部分,無干擾原則:某個體所接受的處理不會影響到其他個體的潛在結果。以上面的例子來說,就是假定你戴口罩與否不會影響你的朋友小強和小明的咳嗽時間。在我們的霧霾小試驗中,這顯然是一個很合理的假定。因為個人的力量是有限的,即便你不戴口罩大力呼吸,為北京的空氣淨化作出了很大個人犧牲,這點微薄貢獻和整個北京的霧霾相比是微不足道的,小強和小明吸入的霧霾不會因此變少,當然咳嗽時間也不會有變化。(不過,如果咳嗽能夠傳染,而你和小明在一起的話,這種情況下無干擾原則可能就不能成立了:你不戴口罩使勁咳嗽傳染了帶口罩的小明,小明的咳嗽時間也增加了。)

無干擾原則是很重要的,如果個體之間互相干擾,干擾的效果難以確定,那麼潛在效果的比較就不準確,不同處理造成的因果效果就很難確定了。在實際應用中,我們通常根據試驗的內容及相關的知識來判斷這個原則是否成立。在大多數情況下,這個原則是成立或者說近似成立的。但是在某些特殊試驗情況下,這個原則是否成立就要慎重考慮了。

例如,在社交類產品如微信的 A/B 測試中,假如產品經理要測試新版的紅包設計是否會促使使用者傳送更多的紅包,無干擾原則很可能就不成立了。因為即使看到新版紅包的使用者很喜歡這個設計從而傳送了更多的紅包,但是沒看到新版紅包的使用者可能因為收到朋友更多的紅包,出於回贈心理也傳送了更多的紅包,這樣新版的使用者和老版的使用者之間的效果就難以比較了。

SUTVA 假定的第二部分是指所有處理水平都是已知和明確定義的,沒有隱藏的不同之處。以我們的霧霾小試驗為例,處理水平只有兩個:戴口罩和不戴口罩。這裡我們認為,戴口罩的作用對個人是相同的,沒有不同牌子的口罩帶來過濾效果不同諸如此類的影響。如果你戴的口罩是 3M 牌子,他戴的口罩是 9M 牌子,是 3M 牌子效果的 3 倍,SUTVA 假定的第二部分就不成立了。

我們必須注意到,SUTVA 假定的第二部分並沒有要求每個個體所受處理的潛在結果是相同的,它只要求指定個體及處理水平的潛在結果是明確不變的。

SUTVA 假定是使用潛在結果模型進行因果推斷的前提,因此,我們在進行試驗前,必須認真考慮試驗的情況,檢查該假定是否成立。如果假定不成立,據此進行推斷很難得到可信的結果。

此文中我們介紹了用於 A/B 測試因果推斷的潛在結果模型,包括潛在結果的定義,因果效果和 SUTVA 假定等重要的概念,下一篇文章中我們將從統計學上看看這個模型是怎麼應用的。

本文作者:鍾書毅@吆喝科技,首發於吆喝科技部落格,未經允許,禁止轉載。

掃碼上

「深度」A/B測試中的因果推斷——潛在結果模型


相關文章