選「求所需樣本數」時,請輸入基準 CVR、想偵測的提升幅度(MDE)、顯著水準和檢定力,再按「計算」。會算出 A、B 每組的所需樣本數(無條件進位)和合計,填入每日流量還會算出所需天數。把「要求的項目」切換成檢定力,就能固定每組的樣本數,改求檢定力 1 − β。
這個頁面可以做什麼
- 只要輸入基準 CVR(目前 A 版本的轉換率)、想偵測的提升幅度(最小可偵測效果,簡稱 MDE,以相對 % 或百分點指定)、顯著水準 \(\alpha\)(雙尾/單尾)和檢定力 \(1-\beta\),就能算出 A/B 測試每組需要的樣本數(無條件進位)和合計
- 「CVR 3% 的網頁,要偵測 10% 的提升(3% → 3.3%),A、B 各需要多少人?」測試開始前最重要的問題,這一頁就能解決
- 填入每日流量(選填),還能知道湊滿所需人數要幾天(無條件進位)
- 反過來,「每組只能湊到這麼多人」時,可以固定樣本數,反推檢定力 \(1-\beta\)(真的有差異時能把它找出來的機率)
- 改變提升幅度時所需樣本數如何變化的圖表、公式的簡單解說,以及可直接複製的 Excel、Google 試算表、Python 公式,都整理在這一頁
這個計算有什麼用?
假設電商網站商品頁的 CVR 是 2%,想偵測新按鈕文字帶來相對 10% 的提升(2% → 2.2%)。在顯著水準 5%(雙尾)、檢定力 80% 下,每組約需 80,682 人,合計約 161,364 人。
用幾十人、幾百人比較(「上週 B 比較好」),無法分辨偶然的差和真正的差。開始前先算出所需樣本數,就能避免花好幾週跑一個根本得不出答案的測試。
某個到達網頁預約展示的 CVR 是 5%。要偵測提升 1 個百分點(5% → 6%),每組需要 8,158 人,合計 16,316 人。每天造訪 300 次的話,\(16316 \div 300 \approx 54.4\),所以是 55 天;想平均星期的影響,就是 8 週。
有人要求「2 週就要看到結果」時,可以用數字說明:「2 週(4,200 次造訪,每組 2,100 人)的話,MDE 要放大到約 3 個百分點(5% → 8%,每組需要 1,059 人)。」
電子報的開信率是 20%,想偵測新主旨帶來 2 個百分點的提升(20% → 22%),每組要寄給 6,510 人,合計 13,020 人(顯著水準 5%、檢定力 80%)。
開信率這種比率高的指標,和幾 % 的 CVR 相比,用比較少的人數就能看出差異。這是因為公式中 \(p(1-p)\) 的部分不同:同樣是「2 個百分點」,不同指標需要的樣本數也不同。
假設在 CVR 3% 的網頁上,以相對 10% 的提升為目標,每組 5,000 人跑完測試,結果「無顯著差異」。反推檢定力只有約 13.5%,也就是說,這個測試的設計本來就是 10 次中有 8 次以上會漏掉真正的改善。
這時正確的結論不是「沒有效果」,而是「這個樣本數無法判斷」。反推檢定力,可以避免誤讀測試結果而放棄好點子。
某個 App 的次日留存率是 40%。要偵測新手教學帶來相對 10% 的提升(40% → 44%),每組約 2,389 位新使用者、合計約 4,778 人就夠了(顯著水準 5%、檢定力 80%)。
留存率這種接近 50% 的指標波動大,但比率的差(4 個百分點)也大,所以比針對幾 % 的 CVR 的測試更快得到結果。為每個指標估算樣本數,也能幫助決定要先做哪個改善。
像改變價格呈現方式這種漏掉好點子損失很大的測試,可以把檢定力從 80% 提高到 90%。CVR 3%、相對 10% 的提升時,每組所需樣本數會從 53,211 人增加到 71,233 人(約 1.34 倍)。
這個計算能具體看出要把漏判減半(從 20% 降到 10%)需要多多少人,就能依測試的重要程度,調整樣本數和測試期間。
公式與圖示
符號與用語解說
符號
| \(p_1\) | p 下標 1 | 基準 CVR(A 版本、目前的轉換率)。\(p\) 取自 proportion(比率)或 probability(機率)的第一個字母,公式中把 3% 寫成 0.03 這樣的小數。 |
| \(p_2\) | p 下標 2 | 目標 CVR(期望 B 版本達到的轉換率)。相對 % 時是 \(p_1 (1 + r/100)\),百分點時是 \(p_1 + d\)。 |
| \(\bar{p}\) | p bar | 2 個 CVR 的平均 \((p_1 + p_2) \div 2\),也就是假設「沒有差異」時共同的 CVR。上方的橫線(bar)在統計中是表示「平均」的記號。 |
| \(r\) | r | 以相對 % 指定的提升幅度(MDE),取自 ratio(比率)的第一個字母,表示「基準 CVR 提升了幾 %」(3% → 3.3% 時 \(r = 10\))。 |
| \(d\) | d | 以百分點指定的提升幅度(MDE),取自 difference(差)的第一個字母,就是 CVR 的差本身(3% → 3.3% 時 \(d = 0.3\) 個百分點)。 |
| \(p_2 - p_1\) | p 下標 2 減 p 下標 1 | 想偵測的差(把百分點寫成小數,0.3 個百分點就是 0.003)。所需樣本數要除以它的平方,所以差越小,人數增加得越快。 |
| \(\alpha\) | alpha | 顯著水準:「其實沒有差異,卻判定為有差異」的機率(型一錯誤的機率),常用 5%(0.05)。alpha 是希臘字母的第 1 個,統計中用來表示「第 1 型」錯誤的機率。 |
| \(\beta\) | beta | 「其實有差異,卻判定為沒有差異(漏掉)」的機率(型二錯誤的機率)。beta 是希臘字母的第 2 個,用來表示「第 2 型」錯誤的機率。 |
| \(1-\beta\) | 1 減 beta | 檢定力:真的有差異時,能判定為有差異的機率,常用 80% 或 90%。 |
| \(z_{\alpha/2}\) | z 下標 alpha/2 | 雙尾檢定中對應顯著水準 \(\alpha\) 的 z 值(標準常態分布上側機率為 \(\alpha/2\) 的點)。5% 為 1.9600,1% 為 2.5758,10% 為 1.6449。單尾檢定則改用 \(z_{\alpha}\)(5% 為 1.6449)。 |
| \(z_{\beta}\) | z 下標 beta | 對應檢定力 \(1-\beta\) 的 z 值(標準常態分布下側機率為 \(1-\beta\) 的點)。80% 為 0.8416,90% 為 1.2816。 |
| \(z_{1-\beta}\) | z 下標 1 − beta | 在求檢定力的公式中,由樣本數反推出的 z 值。代入 \(\Phi\) 就是檢定力(和 \(z_{\beta}\) 是同一個東西,只是從要求的一方來寫)。 |
| \(\Phi\) | Phi(大寫) | 標準常態分布的累積分布函數,會傳回 z 值小於或等於某個值的機率:\(\Phi(1.96) \approx 0.975\),\(\Phi(0.8416) \approx 0.80\)。希臘字母大寫 Phi 習慣用來表示這個函數。 |
| \(n\) | n | 每組(A 版本、B 版本各自)的樣本數,取自 number(數)的第一個字母。A、B 合計是 \(2n\)。 |
| \(\sqrt{\ \ }\) | 根號 | 平方根:平方後等於該數的正數,例如 \(\sqrt{30000} \approx 173.205\)。求 CVR 的波動(標準差)時會用到。 |
| \(V\) | V | 每日流量(測試網頁的全部造訪數=A、B 合計),取自 visits(造訪數)的第一個字母。 |
| \(D\) | D | 所需天數,取自 days(天數)的第一個字母。 |
| \(\lceil\ \rceil\) | 上取整 | 表示無條件進位的符號(上取整函數),傳回大於或等於括號內數值的最小整數(\(\lceil 53.211 \rceil = 54\))。 |
用語
| A/B 測試 | 把訪客隨機分成兩組,在同一期間分別顯示目前的版本(A)和新版本(B),比較哪一個成果(CVR 等)比較高的實驗。按鈕顏色、標題、價格的呈現方式、到達網頁的版面等修改是否真的有效,可以用資料而不是直覺來確認。 |
| 轉換率 | 訪客或點擊中完成購買、報名等成果(轉換)的比率,英文 Conversion Rate 的縮寫是 CVR。這個頁面的公式中,A 版本寫成 \(p_1\),B 版本寫成 \(p_2\)。 |
| 最小可偵測效果 | 英文 Minimum Detectable Effect,簡稱 MDE。「至少這麼大的提升要能找出來」的提升幅度下限,是規劃 A/B 測試時最先要決定的值。設得越小,所需樣本數增加得越快(和差的平方成反比),所以請選擇「對事業有意義的最小提升」。 |
| 顯著水準 | 「其實沒有差異,卻看到偶然的差而判定為有差異」這種失誤可以容許到多少的機率 \(\alpha\)。一般用 5%,也就是容許大約每 20 次有 1 次誤判。設得更嚴格(1%)時,所需樣本數會增加。 |
| 檢定力 | 「真的有差異時,能判定為有差異」的機率 \(1-\beta\),英文 statistical power。一般用 80%,也就是容許大約每 5 次漏掉 1 次真正的提升。檢定力低的測試說「沒有差異」,並不能當作沒有差異的證據。 |
| 型一錯誤 | 「其實沒有差異,卻說有差異」的錯誤(偽陽性)。容許它發生的機率就是顯著水準 \(\alpha\)。它和型二錯誤(漏掉)是一體兩面:壓低一個,另一個往往就會升高。要讓兩者都變小,最基本的方法是增加樣本數。 |
| 型二錯誤 | 「其實有差異,卻漏掉了」的錯誤(偽陰性)。它的機率是 \(\beta\),\(1-\beta\) 就是檢定力。它和型一錯誤(誤報)是一體兩面:壓低一個,另一個往往就會升高。要讓兩者都變小,最基本的方法是增加樣本數。 |
| 虛無假設 | 「A 版本和 B 版本的 CVR 沒有差異」這個檢定想要否定的假設。檢定會問:如果虛無假設成立,這些資料有多不尋常?夠不尋常時,就拒絕虛無假設,結果為「有差異」(採用對立假設)。 |
| 對立假設 | 「A 版本和 B 版本的 CVR 有差異」這個檢定想要證明的假設。虛無假設(沒有差異)被拒絕時就採用它。 |
| 雙尾檢定 | 把「B 比較高」和「B 比較低」都當作差異來偵測的檢定,用於不知道結果會偏向哪邊的一般 A/B 測試。所需樣本數比單尾檢定多,但也能抓到 B 變差的情況。 |
| 單尾檢定 | 只偵測「B 比較高」的檢定。所需樣本數比雙尾檢定少,但抓不到 B 變差的情況,所以必須在測試開始前就決定(看了結果才改成單尾是不正確的)。 |
| 兩樣本比例 z 檢定 | 用把差標準化後的 z 值和標準常態分布,判斷 2 組的比率(CVR 等)有沒有差異的檢定。這個頁面的公式就是求這個檢定所需的樣本數。各組的轉換次數夠多(參考標準是 5~10 以上)時,常態近似才會成立。 |
| 標準常態分布 | 平均數 0、標準差 1 的常態分布(左右對稱的鐘形)。z 值是它橫軸上的值,每個 z 值都對應一個機率,例如「1.96 右側的面積是 2.5%」。 |
| 累積分布函數 | 傳回「小於或等於某個值的機率」的函數。標準常態分布的累積分布函數寫成 \(\Phi\),出現在求檢定力的公式最後。Excel 用 NORM.S.DIST(第 2 個引數為 TRUE),Python 用 NormalDist().cdf 計算。 |
| 標準差 | 資料分散(波動)的大小。比率 \(p\) 的波動和 \(\sqrt{p(1-p)}\) 成正比。公式中的 \(\sqrt{2\bar{p}(1-\bar{p})}\) 和 \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\),就是兩組 CVR 之差的波動。 |
| 多重比較 | 同時比較多個 B 版本或多個指標。比較次數越多,至少有 1 個偶然看起來顯著的可能性就越高,所以需要校正,例如把顯著水準除以比較的次數(Bonferroni 校正)。 |
| 提前停止 | 在湊滿所需樣本數之前一再偷看結果(peeking),一出現顯著差異就停止測試。容易抓到偶然的差,原本以為顯著水準是 5%,實際上誤判的機率會高很多。這個頁面的公式,前提是先固定樣本數,再等到湊滿為止。 |
建議先了解的基礎知識
為了讓您「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
遇到卡關時,回頭複習這些內容是最快的方法。
| 比率與百分率(國小五年級,10~11 歲) |
|
| 平方根(國中八年級,13~14 歲) |
|
| 機率的基礎(國中到高中,14~18 歲) |
|
| 常態分布與標準化(高中,15~18 歲) |
|
| 假設檢定的思考方式(高中到大學入門統計,15 歲以上) |
|
| 無條件進位(國小四年級,9~10 歲) |
|
用 Excel 計算的方法
| 基準 CVR p1(%) | 3 |
| 相對提升幅度 r(%) | 10 |
| 目標 CVR p2(%) | =B1*(1+B2/100) |
| 基準 CVR p1(%) | 3 |
| 目標 CVR p2(%) | 3.3 |
| 顯著水準 α(%,雙尾) | 5 |
| 檢定力 1−β(%) | 80 |
| z_α/2 | =NORM.S.INV(1-B3/100/2) |
| z_β | =NORM.S.INV(B4/100) |
| 平均 CVR p̄ | =(B1+B2)/2/100 |
| 每組所需樣本數 n(無條件進位) | =ROUNDUP((B5*SQRT(2*B7*(1-B7))+B6*SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100)))^2/((B2-B1)/100)^2,0) |
| 每組所需樣本數 n | 53211 |
| 每日流量 V(兩組合計) | 2000 |
| 所需天數 D(無條件進位) | =ROUNDUP(2*B1/B2,0) |
| 基準 CVR p1(%) | 3 |
| 目標 CVR p2(%) | 3.3 |
| 顯著水準 α(%,雙尾) | 5 |
| 每組樣本數 n | 30000 |
| z_α/2 | =NORM.S.INV(1-B3/100/2) |
| 平均 CVR p̄ | =(B1+B2)/2/100 |
| z_1−β | =(ABS(B2-B1)/100*SQRT(B4)-B5*SQRT(2*B6*(1-B6)))/SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100)) |
| 檢定力 1−β(%) | =NORM.S.DIST(B7,TRUE)*100 |
第 1 個表格的 B3 顯示 3.3(目標 CVR 3.3%),第 2 個表格的 B8 顯示 53211(每組所需樣本數),第 3 個表格的 B3 顯示 54(所需天數),第 4 個表格的 B8 顯示約 55.71(檢定力 55.71%)。
NORM.S.INV 把機率換成 z 值,NORM.S.DIST(第 2 個引數為 TRUE)把 z 值換成機率。單尾檢定時,把 z_α/2 公式中的「/2」刪掉,改成 =NORM.S.INV(1-B3/100)。ROUNDUP(…,0) 是無條件進位。
用 Google 試算表計算的方法
| 基準 CVR p1(%) | 3 |
| 相對提升幅度 r(%) | 10 |
| 目標 CVR p2(%) | =B1*(1+B2/100) |
| 基準 CVR p1(%) | 3 |
| 目標 CVR p2(%) | 3.3 |
| 顯著水準 α(%,雙尾) | 5 |
| 檢定力 1−β(%) | 80 |
| z_α/2 | =NORM.S.INV(1-B3/100/2) |
| z_β | =NORM.S.INV(B4/100) |
| 平均 CVR p̄ | =(B1+B2)/2/100 |
| 每組所需樣本數 n(無條件進位) | =ROUNDUP((B5*SQRT(2*B7*(1-B7))+B6*SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100)))^2/((B2-B1)/100)^2,0) |
| 每組所需樣本數 n | 53211 |
| 每日流量 V(兩組合計) | 2000 |
| 所需天數 D(無條件進位) | =ROUNDUP(2*B1/B2,0) |
| 基準 CVR p1(%) | 3 |
| 目標 CVR p2(%) | 3.3 |
| 顯著水準 α(%,雙尾) | 5 |
| 每組樣本數 n | 30000 |
| z_α/2 | =NORM.S.INV(1-B3/100/2) |
| 平均 CVR p̄ | =(B1+B2)/2/100 |
| z_1−β | =(ABS(B2-B1)/100*SQRT(B4)-B5*SQRT(2*B6*(1-B6)))/SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100)) |
| 檢定力 1−β(%) | =NORM.S.DIST(B7,TRUE)*100 |
用 Python 計算的方法
from math import sqrt, ceil
from statistics import NormalDist
base_cvr = 3.0 # 基準 CVR(%)
relative_mde = 10.0 # 想偵測的提升幅度(相對 %)
alpha = 0.05 # 顯著水準(雙尾)
power = 0.80 # 檢定力
daily_visits = 2000 # 每日流量(A、B 合計)
p1 = base_cvr / 100
p2 = p1 * (1 + relative_mde / 100) # 目標 CVR
z_alpha = NormalDist().inv_cdf(1 - alpha / 2) # 單尾檢定時改用 1 - alpha
z_beta = NormalDist().inv_cdf(power)
p_bar = (p1 + p2) / 2
n_exact = (z_alpha * sqrt(2 * p_bar * (1 - p_bar))
+ z_beta * sqrt(p1 * (1 - p1) + p2 * (1 - p2))) ** 2 / (p2 - p1) ** 2
n_per_group = ceil(n_exact) # 每組所需樣本數(無條件進位)
days = ceil(2 * n_per_group / daily_visits) # 所需天數
print(f"目標 CVR:{p2 * 100:.4g}%")
print(f"每組所需樣本數:{n_per_group} 人(合計 {2 * n_per_group} 人)")
print(f"所需天數:{days} 天")
# 反過來求:每組 30,000 人時的檢定力
n_fixed = 30000
z_power = (abs(p2 - p1) * sqrt(n_fixed) - z_alpha * sqrt(2 * p_bar * (1 - p_bar))) \
/ sqrt(p1 * (1 - p1) + p2 * (1 - p2))
print(f"每組 {n_fixed} 人時的檢定力:{NormalDist().cdf(z_power) * 100:.2f}%")
用 LaTeX 等數學式語言的寫法(可直接複製)
p₂ = p₁ × (1 + r/100)
p_2 = p_1 \left(1 + \dfrac{r}{100}\right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>p</mi><mn>2</mn></msub>
<mo>=</mo>
<msub><mi>p</mi><mn>1</mn></msub>
<mo>(</mo><mn>1</mn><mo>+</mo><mfrac><mi>r</mi><mn>100</mn></mfrac><mo>)</mo>
</mrow>
</math>
p_2 = p_1 (1 + r/100)
p1*(1 + r/100)
p2 := p1*(1 + r/100);
p2 = p1*(1 + r/100);
p_2 = p_1 (1 + r/100)
n = (z_α/2 √(2p̄(1 − p̄)) + z_β √(p₁(1 − p₁) + p₂(1 − p₂)))² ÷ (p₂ − p₁)²
n = \dfrac{\left( z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})} + z_{\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)} \right)^2}{(p_2 - p_1)^2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>n</mi>
<mo>=</mo>
<mfrac>
<msup>
<mrow>
<mo>(</mo>
<msub><mi>z</mi><mrow><mi>α</mi><mo>/</mo><mn>2</mn></mrow></msub>
<msqrt><mn>2</mn><mover><mi>p</mi><mo>¯</mo></mover><mo>(</mo><mn>1</mn><mo>−</mo><mover><mi>p</mi><mo>¯</mo></mover><mo>)</mo></msqrt>
<mo>+</mo>
<msub><mi>z</mi><mi>β</mi></msub>
<msqrt>
<msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>−</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo>
<mo>+</mo>
<msub><mi>p</mi><mn>2</mn></msub><mo>(</mo><mn>1</mn><mo>−</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo>
</msqrt>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
<msup>
<mrow><mo>(</mo><msub><mi>p</mi><mn>2</mn></msub><mo>−</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo></mrow>
<mn>2</mn>
</msup>
</mfrac>
</mrow>
</math>
n = (z_(alpha/2) sqrt(2 bar p (1 - bar p)) + z_beta sqrt(p_1(1 - p_1) + p_2(1 - p_2)))^2 / (p_2 - p_1)^2
Ceiling[(za*Sqrt[2*pbar*(1 - pbar)] + zb*Sqrt[p1*(1 - p1) + p2*(1 - p2)])^2/(p2 - p1)^2]
n := ceil((za*sqrt(2*pbar*(1 - pbar)) + zb*sqrt(p1*(1 - p1) + p2*(1 - p2)))^2/(p2 - p1)^2);
n = ceil((za*sqrt(2*pbar*(1 - pbar)) + zb*sqrt(p1*(1 - p1) + p2*(1 - p2)))^2/(p2 - p1)^2);
n = (z_(α/2) √(2p̄(1 − p̄)) + z_β √(p_1(1 − p_1) + p_2(1 − p_2)))^2/(p_2 − p_1)^2
D = ⌈2n ÷ V⌉
D = \left\lceil \dfrac{2n}{V} \right\rceil
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>D</mi>
<mo>=</mo>
<mo>⌈</mo>
<mfrac><mrow><mn>2</mn><mi>n</mi></mrow><mi>V</mi></mfrac>
<mo>⌉</mo>
</mrow>
</math>
D = |~ (2n)/V ~|
Ceiling[2*n/v]
days := ceil(2*n/V);
D = ceil(2*n/V);
D = ⌈2n/V⌉
1 − β = Φ((|p₂ − p₁|√n − z_α/2 √(2p̄(1 − p̄))) ÷ √(p₁(1 − p₁) + p₂(1 − p₂)))
1 - \beta = \Phi\left( \dfrac{|p_2 - p_1|\sqrt{n} - z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}}{\sqrt{p_1(1-p_1)+p_2(1-p_2)}} \right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mn>1</mn><mo>−</mo><mi>β</mi>
<mo>=</mo>
<mi>Φ</mi>
<mo>(</mo>
<mfrac>
<mrow>
<mo>|</mo><msub><mi>p</mi><mn>2</mn></msub><mo>−</mo><msub><mi>p</mi><mn>1</mn></msub><mo>|</mo>
<msqrt><mi>n</mi></msqrt>
<mo>−</mo>
<msub><mi>z</mi><mrow><mi>α</mi><mo>/</mo><mn>2</mn></mrow></msub>
<msqrt><mn>2</mn><mover><mi>p</mi><mo>¯</mo></mover><mo>(</mo><mn>1</mn><mo>−</mo><mover><mi>p</mi><mo>¯</mo></mover><mo>)</mo></msqrt>
</mrow>
<msqrt>
<msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>−</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo>
<mo>+</mo>
<msub><mi>p</mi><mn>2</mn></msub><mo>(</mo><mn>1</mn><mo>−</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo>
</msqrt>
</mfrac>
<mo>)</mo>
</mrow>
</math>
1 - beta = Phi((|p_2 - p_1| sqrt(n) - z_(alpha/2) sqrt(2 bar p (1 - bar p))) / sqrt(p_1(1 - p_1) + p_2(1 - p_2)))
CDF[NormalDistribution[0, 1], (Abs[p2 - p1]*Sqrt[n] - za*Sqrt[2*pbar*(1 - pbar)])/Sqrt[p1*(1 - p1) + p2*(1 - p2)]]
power := Statistics[CDF](Normal(0, 1), (abs(p2 - p1)*sqrt(n) - za*sqrt(2*pbar*(1 - pbar)))/sqrt(p1*(1 - p1) + p2*(1 - p2)));
power = normcdf((abs(p2 - p1)*sqrt(n) - za*sqrt(2*pbar*(1 - pbar)))/sqrt(p1*(1 - p1) + p2*(1 - p2)));
1 − β = Φ((|p_2 − p_1| √n − z_(α/2) √(2p̄(1 − p̄)))/√(p_1(1 − p_1) + p_2(1 − p_2)))
請 ChatGPT 幫忙計算的方法
你是規劃 A/B 測試的助理。請實際執行 Python 程式來完成下面的計算,並只根據執行結果的數值回答(不要用心算或推測回答)。
目前網頁的 CVR(基準 CVR)是 3%。希望 B 版本能偵測到相對 10% 的提升(CVR 3.3%)。
在顯著水準 5%(雙尾檢定)、檢定力 80% 下,請分別求出:
1. 目標 CVR p2(p2 = p1 × (1 + 10/100))
2. 每組所需樣本數 n(兩樣本比例 z 檢定的公式:n = (z_{α/2}·√(2p̄(1−p̄)) + z_β·√(p1(1−p1) +p2(1−p2)))² ÷ (p2−p1)²,p̄ = (p1+p2)/2,無條件進位),以及 A、B 合計的樣本數
3. 每日流量 2,000 次(A、B 合計)時的所需天數(無條件進位)
4. 每組只能湊到 30,000 人時的檢定力(1−β = Φ((|p2−p1|·√n − z_{α/2}·√(2p̄(1−p̄))) ÷ √(p1(1−p1) +p2(1−p2))))
z 值和累積分布函數請使用 statistics.NormalDist,並列出使用的公式和執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權