慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

L
LangChain Blog
The Cloudflare Blog
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
博客园 - Franky
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
小众软件
小众软件
G
Google Developers Blog
量子位
罗磊的独立博客
Recent Announcements
Recent Announcements
A
About on SuperTechFans

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理, 企事业单位数字化的业务供需本质 – 人人都是产品经理, 医疗智能体·第1讲——医疗信息化重构:从“辅助软件”到“自主智能体”的范式转移 – 人人都是产品经理, 粉丝量就是空气!!! – 人人都是产品经理, 用户说“薯片碎了”,机器回“要买吗?”:意图识别的翻车与破局 – 人人都是产品经理, RAG召回准确率从75到90 我做对了这三件事 – 人人都是产品经理, AI大事件:Anthropic改收费、OpenAI发安全版、手术机器人纳入医保、阿里发布”秒悟” – 人人都是产品经理, Chrome 推出 Skills 新功能,Agent 重塑上网方式 – 人人都是产品经理, GitHub前创始人拿了a16z的1700万美元,做Agent时代的Git – 人人都是产品经理 拷贝或克隆其他 Flutter OH 项目到本地后无法运行 – 人人都是产品经理, 优惠券设计:优惠券创建 – 人人都是产品经理, 不用死磕文档!AI 助手 1 小时搞定飞书 CLI 安装 + 配置 + 知识库 – 人人都是产品经理, 用小龙虾做竞品分析报告:从2天到20分钟,我是怎么做到的 – 人人都是产品经理 用小龙虾做市场分析报告:搞懂这3个公式,市场规模不再靠猜 – 人人都是产品经理, 你早就在做 Harness 工程,只是不知道它叫这个名字 – 人人都是产品经理, Think Long就够?你可能想多了! – 人人都是产品经理, 货代SRM实战:供应商准入怎么做,才能让资源池不是通讯录而是可交付网络? – 人人都是产品经理, 如何做好用户调研?详解基本技巧 – 人人都是产品经理, 木鸟、途家、美团对打,平台春天行动开“卷” – 人人都是产品经理, 入职才发现公司不靠谱?小红书从业者求职避坑指南 – 人人都是产品经理, 美国 AI 三巨头联手封堵,中国 AI 突围之路在何方 – 人人都是产品经理,
產品復盤三大歸因陷阱:裸差、辛普森悖論、倖存者偏差 – 人人都是產品經理
巫师Sorcerer · 2026-06-24 · via 人人都是产品经理

裸差、A/B測試盲區、因果推斷方法——產品復盤中的三大陷阱與破解之道。本文將深入剖析為何簡單的數據對比會誤導決策,揭示A/B測試在網絡效應場景下的局限性,並手把手教你用傾向評分匹配(PSM)與雙重差分(DiD)方法在歷史數據中還原真相。當AI讓數據分析門檻降低時,這些底層思維框架比算法更重要。

在做產品復盤時,你一定這麼幹過:一個功能上線兩週,留存漲了三個百分點。你把這三個點寫進PPT,標題是《XX功能成效復盤》。

沒人會質疑這個數字,它真實存在。

但它衡量的是:效果 = 上線後 − 上線前。這個減法背後藏著一個幾乎沒人挑明的假設,這兩週裡,世界上唯一變了的,只有你的功能。

大盤沒動,沒有大促,沒有新一輪投放,進來的用戶和上個月還是同一批人。

上述任何一條不成立,那三個百分點裡就混進了本不屬於你的功勞。

這個沒扣掉任何外部變化的差值,本文稱之為裸差

復盤裡最貴的錯誤,就是把裸差當作效果。

接下來,我想講清楚三件事:裸差為什麼騙人,A/B測試為什麼也不總能救你,以及當你只有歷史數據時,怎麼用因果推斷逼近真相,同時避免被一個看起來很科學的結論誤導。

一、裸差:復盤裡的偽因果

先把公式拆開看。

效果 = 上線後 − 上線前。

它成立的前提是:這段時間內唯一的變量就是你的功能。可現實中的產品環境,從來不是一間真空實驗室,而是一條同時被幾十隻手推動的河。

留存上漲的那兩週,也許恰好是行業旺季。也許市場部剛啟動了一輪投放,進來一批天然更精準的用戶。也許上個版本修復了一個嚴重崩潰,整體用戶體驗本就抬了一截。也許什麼都沒發生,只是上上週的數字偶然偏低,這週回到了正常水位。

這些變化都與你的功能無關,但它們全都湧入了「上線後」那個數字。

裸差的危險,不在於減法算錯了,減法本身沒錯。危險在於,它把一段時間內所有正面變化,都默記在了你這個功能頭上。大盤、季節、投放、用戶畫像漂移,這些本該被剔除的因素,全被打包成了功能的成績單。

這就是偽因果。兩件事先後發生,看起來像前者導致了後者,可「先後」從來不等於「因果」。

公雞打鳴在日出之前,但沒人說是公雞叫醒了太陽。可一旦換成產品指標,這個錯誤就變得無比隱蔽,因為數字是真的,圖表是漲的,故事是順的。

一個真實、能寫進PPT、卻完全站不住腳的結論,比一個明顯的錯誤危險得多。

所以復盤的第一步,不是急著算「漲了多少」,而是先問:這段時間裡,除了我的功能,還有什麼是動的?

問出這個問題,你才算從裸差裡走出來了一步。

二、三類歸因陷阱:混淆變量、辛普森悖論、倖存者偏差

裸差只是偽因果最粗糙的一種,它錯在時間維度:把上線前後的差,當成功能的差。下面這類更隱蔽,錯在人群維度,相關性本身就長著一張因果的臉。

這裡有三種最常見的偽裝,每一種都能讓一份看似嚴謹的復盤,得出恰恰相反的結論。

第一種,混淆變量。

指有第三個因素,同時影響著你所關注的兩端。

一個經典例子:你上線了一個新功能,發現用過它的用戶,留存明顯高於沒用過的。結論呼之欲出:功能提升了留存。

但先停一下。誰會主動去用新功能?大概率是那些本來就高頻、本來就活躍、本來就離不開你產品的人。高活躍用戶天生留存就高,跟這個功能沒關係。「活躍度」才是躲在背後的第三隻手,它同時推高了「使用新功能的概率」和「留存」。

你看到的不是功能在起作用,而是高活躍用戶的自我篩選。功能只是搭了個順風車。

第二種,辛普森悖論。

它更反直覺:分組看和合併看,結論可以完全相反。

設想一次改版,你想評估它對轉化率的影響。合併所有用戶看,新版轉化率更低,於是你判定改版失敗。

可一旦把用戶拆成新客和老客分別看,新版在新客中轉化更高,在老客中也更高。兩個分組都贏了,合在一起卻輸了。

為什麼?因為新版上線後,用戶結構變了:這批用戶裡新客比例大幅上升,而新客的轉化天然低於老客。是用戶畫像構成的變化拉低了整體數字,而非改版本身變差了。

辛普森悖論的殺傷力在於,合併與分組這兩個口徑,單獨看都「沒錯」,但指向截然相反的行動。你是該回滾還是該加碼,取決於你有沒有把人羣拆開來看。

第三種,倖存者偏差。

指的是你手上的樣本,已經經過了某種篩選。

我們就栽過一次。做一個新功能時,用戶天天在羣裏罵「太難用了」,我們當真了,連夜加班改互動。上線後日活跌了20%。復盤才發現:在羣裏罵的人只佔1%,剩下99%的沉默用戶,早就用熟了舊版的路徑,新版反而讓他們集體懵了。我們聽見的是最吵的那1%,照着他們改,結果把沉默的99%推走了。

這就是倖存者偏差最常見的形態:會發聲的樣本,從來不等於全部樣本。反過來也一樣,好評同樣會騙你。你翻遍評論區、問卷、客服記錄,發現對新版的評價整體偏正面,於是鬆了口氣。可那些用了一次就卸載、默默流失的用戶,已經不會再給你任何反饋了。留下來說話的,本就是相對認可你的那批人。

倖存者偏差不會篡改你看到的數據,它只是悄悄拿走了一部分本應出現的數據。不管拿走的是沉默的不滿,還是沉默的流失,你以為自己在看全貌,其實只看到了發聲者的面孔。

這三種誤判有一個共同點:數據都是真的,邏輯鏈條看起來也通,但結論是反的。它們之所以危險,恰恰是因為它們足夠真實、足夠順滑、足夠說服一屋子人。

三、A/B測試的盲區:SUTVA與網路效應

說到這裡,懂行的人會講:這些問題,A/B測試不就解決了麼。

很大程度上,對。

A/B測試的厲害之處,在於它用隨機分組,把上述混淆變數、畫像差異、自我篩選,一次性、平均地分配到實驗組和對照組兩邊。

兩組用戶除了「是否用到新功能」這一個差別,其餘在統計上基本一致。這時兩組的指標差,才乾淨地等於功能的效果。隨機化,是迄今為止人類對付偽因果最強的手段。

但A/B有一個前提,平時藏得很深,叫SUTVA——穩定單元處理值假設(SUTVA)。

翻譯成人話,核心只有一句:每個用戶受到的影響,只取決於他自己被分到哪一組,跟別人被分到哪一組無關。實驗組與對照組之間,必須彼此獨立,互不干擾。

大多數時候這個假設成立。我看不看到一個新的按鈕顏色,不影響你看不看到。

可一旦你的產品涉及網路效應、雙邊市場或社交傳播,這個假設就會被悄悄打破。

打車App是最清晰的例子。

你給實驗組的乘客上線了一個新的派單策略,讓他們更容易叫到車。聽起來是個標準A/B。但乘客和司機共享的是同一個運力池。實驗組乘客多搶走了幾輛車,對照組乘客能叫到的車就變少了。你的實驗非但沒讓兩組獨立,反而讓實驗組直接踩著對照組得分。這時你測出的差值是被放大的、虛高的,因為對照組的體驗是被你的實驗親手拉低的。

在IM產品裡更隱蔽。

你給實驗組上線了一個新的互動玩法,實驗組用戶興高采烈,跑去跟好友互動。而那些好友,有一半在對照組裡。對照組明明沒拿到新功能,卻因為收到實驗組發來的訊息,活躍度也跟著漲了。兩組的差值被抹平,你的功能看起來「沒效果」,但它的效果其實透過社交關係泄漏到了對照組。

網路效應、雙邊市場、社交傳播。這三個詞只要出現在你的產品裡,A/B的獨立性前提就值得你停下來仔細檢查。SUTVA一旦被打破,隨機化這把好刀,也會切出一個錯誤的數字。

A/B不是萬能的。它是一把好刀,但有自己的鋒利不到的地方。

四、因果推斷補位:PSM與DiD怎麼做事後歸因

A/B還有一個更樸素的局限:它要求你提前設計

你必須在功能上線之前,就劃分好實驗組和對照組,定好指標,留好放量節奏。

可現實中有太多場景沒有這個「提前量」:功能已經全量上線,你沒留對照組;這是一次公司級的大改版,無法只給一半人;或者你要復盤的是三個月前的某個決定,當時壓根沒人想到要做實驗。

這時候你手裡只剩一樣東西:歷史數據。

A/B適合提前設計實驗,驗證未來。因果推斷,適合利用已發生的歷史數據,做事後歸因。前者管「接下來該不該做」,後者管「上次那件事到底有沒有用」。兩者填補的是不同的盲區。

事後歸因中,有兩個最常用、也最值得先掌握的方法。

第一個是PSM,傾向得分匹配。

它的思路極其樸素:既然沒法隨機分組,那我就在歷史數據裡,人工找出條件盡量相似的兩組人。

用了新功能的用戶中,挑一個活躍度中等、註冊三個月、城市在二線的。

我就到沒用過新功能的用戶裡,去找一個活躍度、註冊時長、城市都盡量一致的人,把他們配成一對。一對一對地配下去,配出兩組在各項特徵上高度接近的人群。兩組的唯一系統性差別,回到只剩「用沒用新功能」。這時再比留存,就接近於在比「同一類人,用與不用的差」。

傾向得分匹配(PSM)是在歷史數據裡,盡力把A/B的隨機分組「補」出來。它應對的,正是第二節提到的混淆變數。

但PSM有個命門:它只能匹配你**觀測得到**的變量。活躍度、註冊時長、城市,這些表裡有的,它能配平;可那些沒進表的暗變量,比如用戶的真實意圖、被競品影響的程度,它一個都夠不著。兩個各項特徵都配成一對,卻可能在某個你沒記錄的維度上天差地別。PSM補的是你看得見的那部分偏差;看不見的那部分,它無能為力。

第二個是DiD,雙重差分。

它要解決的是裸差中最核心的問題:怎麼把大盤趨勢扣掉。

DiD的做法是找一個對照組,一群沒受到你這次改動影響、但跟你的目標用戶走在同一條大盤趨勢上的人。然後做兩次相減。第一次,算你的目標用戶上線前後的變化。第二次,算對照組在同一段時間裡的變化。最後,用前者減去後者

對照組那段變化,代表的是「就算什麼都不做,大盤自己也會走出來的趨勢」。用它去扣除,剩下的才是真正歸因於你這次改動的淨效果。裸差只做了第一次相減,雙重差分(DiD)多減了一次,把混在裡面的大盤趨勢剔除掉了。

上線後目標組的真實走勢,減去它「沒上線本該走的」那條反事實虛線(即沿對照組趨勢平移),中間那道缺口才是淨效果。裸差錯把整段抬升都算成功勞的功勞。

但雙重差分(DiD)有一個關鍵前提,平時最容易被默認成立,叫平行趨勢

它要求:在你上線之前,目標組和對照組的指標趨勢必須是平行的——兩條線可以高低不同,但走勢得一致。只有這樣,你才能假設「要是沒上線,它倆之後也會繼續平行」,從而用對照組去代表目標組本該有的走勢。

這個前提不能拍腦袋默認。你必須把上線前足夠長一段時間的兩條曲線拉出來,親眼確認它們確實平行。如果上線前兩條線就在收斂或發散,那DiD的整個地基就是歪的,算出來的淨效果照樣是假的。

你可能會說:現實裡兩條線幾乎不可能完美平行,那DiD是不是基本沒用?不是。

平行趨勢不是一個「是或否」的開關,而是一個程度問題。上線前貼得越緊、越長一段時間同向,結論就越可信;偏離越明顯,你就越該給淨效果打個折,標上「僅供參考」。

它給你的本就不是真值,只是一個比裸差靠譜得多的估計。把「無法做到完美」直接當成「乾脆不做」,是另一種偷懶。

PSM補的是「人群不可比」,DiD補的是「大盤沒扣掉」。

兩者還有一層高下:PSM只能控住你觀測到的變數,DiD靠「相減」這個動作,連那些你沒觀測到、卻不隨時間變的差異,也一併扣掉了。這也是後面那條決策鏈裡,DiD排在PSM前面的原因。它們都不如A/B乾淨,但當你只剩歷史數據時,它們是你離真相最近的兩條路。

五、AI時代的新風險:門檻降低,誤用放大

看到這裡,有人會想:這些方法聽著就麻煩,PSM、DiD、平行趨勢檢驗,還不如把數據丟給AI,讓它幫我跑。

AI確實能跑。今天你把一張表丟給它,它能幫你做匹配、算雙重差分、畫出趨勢圖、給出一個帶信賴區間的精美結論。建模的門檻,確實被實實在在地拉低了。

問題是,AI能替你跑模型,但它替不了你做判斷。

它判斷不了,你這張表裡哪些變量是混淆變量

混淆變數是業務概念,不是數據特徵。你得知道「高活躍的人本來就愛用新功能」,才會想到把活躍度放進匹配;AI看到的只是一列數字,它不知道這列數字在你的業務語境裡意味著什麼。

哪些假設其實站不住

平行趨勢成不成立,SUTVA破沒破,這些要靠你對產品的理解去質疑。AI預設你給的前提都對,它只負責在你的前提上往下算。

它更判斷不了,那些根本沒進入數據的業務暗變量

那次留存上漲,也許是因為同期一個競品出了大故障,用戶回流到了你這兒。這件事不在任何一張表裡,AI永遠不會知道,但它恰恰是真正的原因。

於是AI時代最危險的復盤,不是拍腦袋。拍腦袋至少所有人都知道那是拍腦袋,會本能地存一份懷疑。

最危險的,是用一組錯誤的假設,跑出了一個看起來無比科學的結論。它有模型,有p值,有置信區間,有一張嚴謹的圖表。它把「我猜的」包裝成了「數據證明的」。

一屋子人看著那張圖點頭,沒有人再去問那個最該問的問題:這些假設,到底成不成立?

工具越強,那個被跳過的判斷,代價就越大。

AI沒有降低做因果歸因的難度,它只是把難的部分從「算」挪到了「想」。而「想」這部分,至今沒有任何工具能替你完成。

六、少變一點,優先於多算一點

講完這些方法,最後我想把它壓成一條可以隨身帶走的原則。

回頭看這一路:裸差不可信,是因為變數太多。

三類誤判會騙人,是因為有看不見的變數在攪局。A/B之所以強,是因為它用隨機化,把變數這件事一次性摁住了。PSM和DiD之所以要費那麼大的力氣,是因為它們在歷史數據裡,亡羊補牢地去控制那些當初沒能控住的變數。

所有方法都在幹同一件事:讓變化的東西盡可能少。

少變一點,優先於多算一點。

我們做歸因時的本能,是想算得更複雜、更全面、更高級,上更花俏的模型。

但歸因可信度的真正來源,從來不是演算法多精巧,而是除了你關心的那個變數,別的東西變得有多少。能在源頭上少變一個變數,勝過事後用十個模型去補救。

把這條原則展開,就是一條清晰的決策鏈:

第一步,能做隨機A/B,就做A/B。這是控制變數最乾淨的方式,沒有之一。只要場景允許、傷害可控、又不存在SUTVA那種相互干擾,優先使用隨機化把變數掐死在源頭。

第二步,A/B做不了,但你有一個乾淨的對照組,就用DiD。全量上線了、改版沒法切一半、要覆盤的是過去的事,這些時候,找一個走在同一條大盤趨勢上的對照組,用雙重差分把趨勢扣掉。前提是先確認平行趨勢,別預設。

第三步,連乾淨的對照組都沒有,只能在歷史數據中匹配,就考慮PSM。人工配出條件盡量相似的兩組人,逼近「同一種人用與不用」的對比。它最不穩,但有時是你唯一的路。

第四步,如果連匹配的假設都站不住,就承認這次無法歸因。

最後這一步最難,也最值錢。承認「我無法判斷這個功能到底有沒有用」,遠比硬編一個三個百分點的成績單要誠實,也要安全。

一個誠實的「不知道」,不會把你引向錯誤的下一步決策;一個偽造的「有效」,會。

有人會立刻反駁:老闆就是要一個數,我說「無法歸因」,挨罵的是我。

這話沒錯。但「無法歸因」不等於「兩手一攤」,你可以給一個帶條件的答案:在平行趨勢大致成立的前提下,淨效果大概落在某個區間;這幾個假設一旦鬆動,結論就不作數。

把假設和不確定性一起交出去,比單遞一個乾淨卻虛假的數字,既更誠實,也更經得起追問。真正會讓你挨罵的,是那個你拍著胸脯保證、半年後被證偽的「3個點」。

產品復盤的目的,從來不是給一個功能頒獎,而是為下一個決定找準方向。而找準方向的前提,是你算的那個效果,得是真的。

下次再寫復盤PPT,落筆那個「效果」數字之前,先問自己一句:這段時間裡,除了我的功能,還有什麼也變了?

把這個問題追問到底,就已經躲開了產品復盤裡最貴的那個錯覺。

本文由 @巫師 Sorcerer 原創發佈於人人都是產品經理。未經作者許可,禁止轉載

題圖來自 Unsplash,基於 CC0 協議