你的 A/B 測(cè)試結(jié)果真的可靠嗎?有多少次你以為抓住了增長密碼,結(jié)果發(fā)現(xiàn)只是趕上了季節(jié)性紅利?標(biāo)準(zhǔn)的前后對(duì)比分析遍地都是,但它們的結(jié)論也幾乎總是把你帶進(jìn)溝里。
當(dāng)你把干預(yù)前和干預(yù)后的指標(biāo)直接相減,隱含的假設(shè)是:除了你動(dòng)的那一下,其他一切都沒變。實(shí)際上季節(jié)在變,外部趨勢(shì)在漂移,還有一大堆與你無關(guān)的事件在同步發(fā)生。你沾沾自喜的提升,可能本來就會(huì)發(fā)生。要回答“這次改動(dòng)到底有沒有用”,正確的做法是構(gòu)造一個(gè)反事實(shí) —— 一份統(tǒng)計(jì)估計(jì),告訴你如果不做任何干預(yù),指標(biāo)會(huì)怎樣走。觀測(cè)數(shù)據(jù)與反事實(shí)之間的缺口,才是你苦苦尋找的因果效應(yīng)。
![]()
基于這個(gè)思路,一個(gè)名叫 CausalLens 的工具剛剛開源。它專門解決一個(gè)大多數(shù)分析棧都搞不定的問題:干預(yù)到底有沒有造成指標(biāo)變化?你給它一個(gè) CSV 文件,里面裝著一根時(shí)間序列和一個(gè)干預(yù)日期,應(yīng)用會(huì)自動(dòng)在干預(yù)前的數(shù)據(jù)上訓(xùn)練模型,然后把模型向前投影作為反事實(shí),最后輸出以下結(jié)果:
- 估計(jì)的效應(yīng)大小,同時(shí)給出絕對(duì)值和百分比;
- 統(tǒng)計(jì)顯著性的 p 值;
- 95% 置信區(qū)間;
- 用大白話寫的英文解讀;
- 可下載的 PDF 報(bào)告和交互式 HTML 報(bào)告。
工具直接提供了五種方法,每種都有自己最擅長的主場(chǎng)。知道什么時(shí)候該用哪個(gè),比會(huì)調(diào)參重要得多。
第一種是 ARIMA ITS,即自回歸積分滑動(dòng)平均干預(yù)時(shí)間序列。它最適合只有一根序列、沒有明顯季節(jié)波動(dòng)的簡單前后對(duì)比結(jié)構(gòu)。干預(yù)時(shí)間序列這套框架在公共衛(wèi)生和經(jīng)濟(jì)學(xué)文獻(xiàn)里被反復(fù)驗(yàn)證過,專攻這類場(chǎng)景。
第二種是 SARIMAX。如果你的數(shù)據(jù)帶著強(qiáng)烈的季節(jié)模式,比如周循環(huán)、月循環(huán),請(qǐng)一定用它。忽視季節(jié)會(huì)把你的效應(yīng)估計(jì)嚴(yán)重放大或縮小,這個(gè)坑比大家預(yù)想的深太多。
第三種是貝葉斯結(jié)構(gòu)時(shí)間序列。如果你不滿足于點(diǎn)估計(jì),想要概率性的輸出和清清楚楚的不確定性量化,那就上貝葉斯。這個(gè)方法還有一個(gè)加分項(xiàng):它對(duì)干預(yù)前期的結(jié)構(gòu)性變化處理得更優(yōu)雅。
第四種是雙重差分。當(dāng)你手上有一個(gè)天然沒受到干預(yù)的對(duì)照組時(shí),雙差分就是經(jīng)典計(jì)量經(jīng)濟(jì)學(xué)里的王牌。只要平行趨勢(shì)假設(shè)成立,它依然是最可信的方法之一。
第五種是合成控制。適合你有一堆潛在控制單元,但找不出一個(gè)干凈的單一對(duì)照組的情況。方法會(huì)自己找到最優(yōu)的加權(quán)組合,用這些控制單元捏出一個(gè)反事實(shí)。提醒一句,這是五種方法里計(jì)算最貴的,遇到臟數(shù)據(jù)時(shí)也最容易翻車,實(shí)現(xiàn)起來相當(dāng)考驗(yàn)細(xì)節(jié)。
整個(gè)技術(shù)棧都跑在 Streamlit 上,專門設(shè)計(jì)成能在 Streamlit Community Cloud 的免費(fèi)層里存活:只用 CPU,內(nèi)存限制在 1GB,完全不依賴外部服務(wù)。主要的包也很直接:statsmodels 負(fù)責(zé) ARIMA 和 SARIMAX ,pymc 用來搞定貝葉斯結(jié)構(gòu)時(shí)間序列,scipy.optimize 求解合成控制的權(quán)重,reportlab 生成 PDF ,plotly 則負(fù)責(zé)那些可以互動(dòng)的 HTML 報(bào)告。有一個(gè)不太顯眼的選擇值得留意:作者刻意避開了 causalimpact —— 這個(gè)從 R 語言移植過來的 Python 包,因?yàn)樵谫Y源受限的環(huán)境里依賴問題太多。自己動(dòng)手搭建反而能讓整個(gè)應(yīng)用輕量且穩(wěn)定,也更貼近零配置的目標(biāo)。
這樣一個(gè)工具,把因果推斷的五種主流方法塞進(jìn)同一個(gè)界面,還不需要你配任何環(huán)境。下次再有人拿著簡單的前后對(duì)比來跟你說“效果顯著”,你至少知道,該打開哪個(gè)鏡子照一照。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.