[心得] 影響 A/B Test 所需樣本數的要素
[關鍵字]: A/B Testing
[重點摘要]:
- 幹嘛管 A/B Test 的樣本數?樣本數太少會怎麼樣嗎?
- 實驗檢定力會不足、測不出有用的結果
- A/B Test 的樣本數不是越多越好嗎?太多又可能有什麼問題?
- 經常看見顯著、但是效果小到沒有幫助
- 多蒐集樣本在商業上也是一種成本
- 是什麼因素影響 A/B Test 所需樣本數?
- 樣本標準差、Minimum Detectable Effect、還有型一、型二錯誤
A/B Test 是個看似簡單,實際上充滿統計學學問的領域
一個小動作做錯、也可能鑄成錯誤決策
「樣本數怎麼算」就是做 A/B Test 的產品設計者、行銷專家
還有資料科學家們永遠都在問的萬年問題
如果沒有在實驗前想清楚這個問題
很有可能讓你的產品團隊精心準備的實驗成為浪費時間
以下我將和大家分享三個議題:
*為什麼要計較 A/B Test 的樣本數?
*是哪些要素影響 A/B Test 所需樣本數?
*所需樣本數可以用什麼公式計算?
更完整的數學公式加上 Python 程式碼圖文介紹
歡迎參考我的網誌文章:
https://haosquare.com/calculate-ab-testing-sample-size/
## 為什麼要計較 A/B Test 的樣本數?
我們先稍微聊聊究竟資料分析為什麼要這麼在意 A/B Test 的樣本數有多少。難道,不是
只要做好隨機對照實驗(RCT)、在假設檢定看到顯著就能馬上下結論嗎?沒這麼簡單!
當 A/B Test 樣本數過少時,統計檢定力往往會不足,也就是,即使你的產品新設計確實
對使用者有幫助,商業實驗也看不出顯著性。更麻煩的問題是,如果產品每天能蒐集的樣
本很少,我們常會急切地天天盯著 A/B Test 結果看,如果看到資料反映出統計檢定顯著
,馬上下結論、結束實驗,這種在樣本數不足下「偷看」的動作會造成持續監控問題,其
中的抽樣偏誤會使得實驗的統計錯誤大大提高!此「偷看」問題我過去曾在本板分享過,
如果你有興趣,歡迎參考之前的文來複習:#1VGG3_Pu
而當 A/B Test 樣本數過多也不全然是好事情,不是資料越多就一定越好。首先,對某些
使用者流量還不太高的產品而言,每個樣本都超珍貴、多蒐集幾個樣本可能要花不少時間
。如果你蒐集了比你實際上需要還多很多的樣本,就會多浪費好幾天蒐集樣本、還對實驗
沒什麼貢獻。而且別忘了,A/B Test 會讓你的使用者看到跟平常不一樣的產品,這個不一
樣或許是暫時的、未來或許會變回原狀(因為你的實驗有可能告訴你使用者其實不青睞新
設計),因此我們當然希望因為 A/B Test 而看到這個「不一樣」的使用者樣本越少越好
,我們不會想讓太多人看到我們反反覆覆修改著產品設計的過程。
此外,當樣本數超級大的時候,通常 P 值(P-value)都會很小,換言之,只要你的樣本
數超多,幾乎都能看到統計顯著、拒絕虛無假設
但樣本數過多的統計顯著往往只伴隨著很小很小的效果
會是「不實用」的統計顯著。
(Statistically significant, but not practically significant)
舉例而言,假設有藥廠發明了一種藥,可以讓身高增加 0.2 公分,他們找了超大一群樣本
、也真的在實驗看出統計顯著性,但你會為了想長高 0.2 公分冒險吃這種藥嗎?這就是統
計顯著不太「實用」(Practical Significance)的意思。如果你還想知道樣本數過大還
會造成哪些其他 P-value 問題,推薦你細細品嚐以下這篇 Too big to fail 論文:
https://reurl.cc/XERbqg
總之,想要為產品高效率執行 A/B Test,我們要找個剛剛好的樣本數
不能太低、也不適合太高
## 決定所需樣本數的四大要素
### 1. 樣本標準差
> 樣本標準差越大、A/B Test 需要的樣本數越多
樣本標準差(Standard Deviation)衡量樣本內數值的離散程度,樣本內的數值如果很發
散,我們會更難結論兩組數據間的差異。直接舉個例子來想像,假設已經知道A地區的平
均身高是 165 公分:
* 如果你在B地區抽樣出 5 個人:158、163、170、172、177 公分
* 即使樣本平均是 168 公分,但是數據很發散(樣本標準差很大)
* 讓你不敢斷言「B地區平均身高高於A地區」,或許還要 30 個樣本以上才能下結論
* 如果你在C地區抽樣出 5 個人:166、166、167、168、169 公分
* 雖然平均數只比A地區高 2 公分,但是每筆數據都很接近 167 公分、資料相當集中
(樣本標準差很小)
* 你可能會在心中想著:只要再抽樣 3 個人、他們身高也同樣接近 167 公分的話,你
或許已經願意相信「B地區平均身高高於A地區」
樣本標準差的影響亦可以用鐘型曲線來視覺化。統計學常會對估計值畫出鐘型曲線來呈現
其分佈,A/B Test 兩組的樣本平均數分佈可以各自畫出鐘型曲線,很概略地說,(見下圖
)兩個鐘型曲線只要重疊的部分很少、就會有統計顯著。所以,樣本標準差對決定樣本數
的影響可以這樣思考:
* 鐘型曲線越「瘦高」,越不容易重疊(越容易統計顯著)
* A/B Test 樣本數越多,標準誤會越小、鐘型曲線會越瘦高
* 而當樣本標準差越小,標準誤也會越小
* 那就表示樣本標準差很小的時候,樣本數可以不用那麼多,鐘型曲線也能保持同樣瘦高
、同樣容易呈現統計顯著
* 「容易呈現統計顯著」的程度就是統計學家口中的檢定力(Statistical Power)
https://imgur.com/ezHFIOm
### 2. Minimum Detectable Effect (MDE)
> MDE 越大、A/B Test 需要的樣本數越少
Minimum Detectable Effect(MDE)是期望最小的指標效果差異,它是主觀設定的,它可
能取自於你的產品設計理念,例如幫 APP 某個按鈕換造型預計提升 10% 點擊率;也可能
來自於商業策略問題,例如這個 APP 按鈕的點擊率如果無法成長 10%,那將會不符成本、
不值得改變產品。
決定樣本數的時候就把 MDE 考慮進去,將會解決剛剛提到的「不實用」統計顯著問題,因
為你事先設定好你的數據至少要看到多大差異才算是實用,只要你使用剛剛好的樣本數來
做商業實驗,最後如果看到實驗呈現出統計顯著,其效果肯定不小於 MDE、必然是「實用
」的統計顯著(Practical Significance)。
Practical Significance 參考說明:
https://online.stat.psu.edu/stat200/book/export/html/119
在此囉唆提醒,MDE 是在 A/B Test 開始之前就(主觀)決定好的,MDE 不是指實際實驗
數據的兩組平均數差異(因為實驗還沒開始做、不知道實際差異)。
當你設定的 MDE 越小,實驗需要的樣本數越高;反之,MDE 越大,需要樣本數越少。就用
上個小節的「長高藥」來舉例吧,假設已知控制組的平均身高是 165 公分:
* 如果實驗者設定 MDE 為 1 公分
你陸續蒐集了幾個樣本分別是 166 公分、164 公分、172 公分
* 實驗組平均雖然比控制組高了 2 公分,你可能還是會心想:「不能結論長高藥有效!
或許有抽樣偏誤存在,是運氣好抽到一位特別高的樣本才有這種結果」
* 還要多蒐集很多樣本才敢結論到底有沒有長高效果
* 如果實驗者設定 MDE 為 20 公分
而你目前蒐集到幾個樣本分別是 187 公分、174 公分、189 公分
* 實驗組平均只比控制組高了 18 公分、不到 MDE 設定的 20 公分
* 但光是實驗組蒐集這少少 3 個樣本相對於控制組都有很大的效果
你是否也開始相信這個長高藥好像真的有效了?
此外,MDE 對樣本數的影響也同樣可以用鐘型曲線來想像。
* A/B Test 樣本數越多,標準誤會越小、鐘型曲線會越瘦高
* 而 MDE 越大,對照組的鐘型曲線會越往右邊平移、與另個鐘型曲線的重疊會越少
* 換言之,MDE 越大,樣本數即使少一點、鐘型曲線矮胖一點,也同樣容易出現統計顯著
https://imgur.com/D3lBpFE
### 3. 型一與型二錯誤
> 允許的型一與型二錯誤率越高、A/B Test 需要的樣本數越少
統計方法不是完美的,不管你進行假設檢定之後看到顯著或不顯著,都還是有機會讓你造
成錯誤結論。有可能抽樣時恰好運氣不佳,使得你抽到的樣本對於母體不具有代表性、無
法反映出母體的真實特徵,這種出現抽樣偏誤的隨機性會使我們錯誤推論資料。統計學家
將這種 A/B Test 「預期會發生」的錯誤分成兩種:
* 型一錯誤(α 或 Type-1 Error):
A/B 兩組其實並沒有差異,統計檢定卻因為隨機性判定成有差異(偽陽性錯誤)
* 型二錯誤(β 或 Type-2 Error):
A/B 兩組確實有差異,統計檢定卻沒有偵測到顯著(偽陰性錯誤)
如同人做的決策不可能完美無缺,統計檢定的型一與型二錯誤也不可能完全消除、但可以
被控制,分析者可以自己決定容許統計方法有多少型一與型二錯誤存在。在資料越多時,
你對估計值的衡量就越精確,(通常)也表示會產生的決策錯誤越少;反過來說,如果你
允許發生的型一與型二錯誤越少,需要的樣本數就會越多。
在此又要囉唆地註記,很多資料科學家會用檢定力(Statistical Power)來描述型二錯誤
,檢定力其實就只是 1-β、與原本的型二錯誤 β 一體兩面,只需要注意樣本數計算的統
計直覺會變成:如果分析者要求 A/B Test 的檢定力(1-β)越高、需要的樣本數也會越
多。
相對於剛剛討論的另外兩個因素(樣本標準差由資料決定、MDE 由產品設計者決定),一
般來說,我們執行 A/B Test 會選擇的型一與型二錯誤率幾乎都是按照統計學的慣例、不
太會更動:
* 型一錯誤設定為 α = 0.05
* α 也被稱為顯著水準(Significance Level)
* 這也是為什麼我們常常看到 95% 信賴區間
* 型二錯誤設定為 β = 0.2
* 也就是檢定力 = 1-β = 80%
## 究竟樣本數計算公式是什麼?
進行 A/B Test 的正確做法是預先決定實驗樣本數、並且禁止在蒐集到這個樣本數之前偷
看。那麼實驗樣本數究竟是怎麼算出來的呢?以下是計算方法的「經驗法則」:
n = 16 * sigma^2 / delta^2
https://imgur.com/A9qOqMQ
經驗法則的意思是,此公式已經經過不少簡化, 並且計算內容已蘊含了上述的四大要素
更重要的是, 我們使用時要注意其包含了幾項假設:
* 實驗的 A 與 B 兩組樣本數大小相同
* n 是 A 與 B 其中一組的樣本數至少要是多少(注意 n 不是 A 與 B 的樣本數總和)
* 型一與型二錯誤依照慣例設定 α = 0.05 與 β = 0.2
* 假設實驗的 A 與 B 兩組樣本變異數相同(樣本標準差相同)
(如果你的實驗要改變以上假設, 就不能再用此經驗法則、要去找更完整的數學公式)
這個簡化後的經驗法則公式不限於資料型態,不管你的 A/B Test 目標是連續型資料還是
比例資料都能適用。我們可以用 Python 程式跑些模擬來驗證我們算出來樣本數的正確性
對模擬流程有興趣的話,請參考我放在 GitHub 的 Python Notebook:
https://reurl.cc/y7vaaE
此外,這個簡短的樣本數計算公式還可以用效果量的觀點來理解
統計學課本所說的 效果量(Effect Size)是衡量兩個變數之間關係的強度,我自己則更
喜歡把效果量想成考慮資料離散程度(變異數)後的效果大小相對值,又或者,效果量可
以想成是為效果標準化、以統一尺度來衡量效果。
在 A/B Test 情境,效果量經常使用 Cohen’s d 來計算。而上面這個公式,可以用
Cohen's d 來改寫(以下 Cohen's d 以 ES 表示):
n = 16 * sigma^2 / delta^2 = 16 / ES^2
where ES = delta / sigma
https://imgur.com/6bIGdPb
由此改寫後的公式來看,A/B Test 樣本數取決於標準化後的效果大小
換言之,樣本數是 Cohen’s d 的函數。
依此能看出把樣本數轉換成 Cohen’s d 的函數來理解的好處:
幫我們一眼看出「樣本數取決於效果大小」的統計直覺
## 小結
如果你在網路上用英文關鍵字搜尋過「Sample Size」
很可能看過 Evan Miller 設計的熱門 A/B Test 樣本數計算機
https://www.evanmiller.org/ab-testing/sample-size.html
網頁提到他用的正是 n = 16 * sigma^2 / delta^2 這個經驗法則公式
而網站中對公式說明不多、也無法一眼看出用到了哪些假設
希望這篇文章能幫助各位板友
更清楚理解網路上搜尋到的各種 A/B Test 樣本數計算機究竟算了什麼
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.5.200 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1687878735.A.FB3.html
推
06/28 07:32,
1年前
, 1F
06/28 07:32, 1F
※ 編輯: AgileSeptor (36.225.15.165 臺灣), 06/28/2023 11:27:01
※ 編輯: AgileSeptor (36.225.15.165 臺灣), 06/28/2023 11:29:09
推
06/29 10:51,
1年前
, 2F
06/29 10:51, 2F
→
06/29 10:51,
1年前
, 3F
06/29 10:51, 3F
推
06/30 19:46,
1年前
, 4F
06/30 19:46, 4F
推
07/03 02:46,
1年前
, 5F
07/03 02:46, 5F
推
07/05 12:08,
1年前
, 6F
07/05 12:08, 6F
推
07/07 20:05,
1年前
, 7F
07/07 20:05, 7F
→
07/14 23:11, , 8F
07/14 23:11, 8F
推
10/19 18:11, , 9F
10/19 18:11, 9F
→
01/27 16:19, , 10F
01/27 16:19, 10F
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章