<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Statistics on Tarragon</title><link>https://tarrragon.github.io/blog/tags/statistics/</link><description>Recent content in Statistics on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 19 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/statistics/index.xml" rel="self" type="application/rss+xml"/><item><title>A/B Test 的統計基礎</title><link>https://tarrragon.github.io/blog/monitoring/08-business-analytics/ab-test-statistics/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/monitoring/08-business-analytics/ab-test-statistics/</guid><description>&lt;p>A/B test 把使用者隨機分成兩組，一組看到原版（control），一組看到改版（treatment），比較兩組的指標差異。統計方法的角色是判斷「觀察到的差異是真實的還是隨機波動」。&lt;/p>
&lt;h2 id="假設檢定">假設檢定&lt;/h2>
&lt;h3 id="虛無假設和對立假設">虛無假設和對立假設&lt;/h3>
&lt;p>虛無假設（H0）：兩組沒有差異，觀察到的差異來自隨機波動。對立假設（H1）：兩組有真實差異。&lt;/p>
&lt;p>A/B test 的邏輯是：假設 H0 成立（兩組沒有差異），計算「在 H0 成立的前提下，觀察到目前這麼大的差異的機率」。如果這個機率（p-value）很小（通常 &amp;lt; 0.05），拒絕 H0，接受 H1。&lt;/p>
&lt;h3 id="p-value-的意義">p-value 的意義&lt;/h3>
&lt;p>p-value = 0.03 代表「假設兩組沒有差異，觀察到目前差異的機率是 3%」。這個機率足夠小，合理推斷差異是真實的。&lt;/p>
&lt;p>p-value 不代表「改版比原版好的機率是 97%」。p-value 是在 H0 成立的條件下計算的，不是改版效果的機率。&lt;/p>
&lt;h3 id="兩類錯誤">兩類錯誤&lt;/h3>
&lt;p>&lt;strong>Type I error（偽陽性）&lt;/strong>：實際上沒有差異，但統計結果判定有差異。機率由顯著性水準 α 控制，通常設 0.05。&lt;/p>
&lt;p>&lt;strong>Type II error（偽陰性）&lt;/strong>：實際上有差異，但統計結果判定沒有差異。機率由統計檢定力（power = 1 - β）控制，通常要求 power ≥ 0.8。&lt;/p>
&lt;h2 id="樣本量計算">樣本量計算&lt;/h2>
&lt;p>樣本量決定了 A/B test 能偵測到多小的差異。樣本量太小，即使改版有效果，test 也沒有足夠的統計檢定力偵測到。&lt;/p>
&lt;p>樣本量計算需要四個參數：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>基準轉換率&lt;/strong>：control 組目前的轉換率（例如 5%）&lt;/li>
&lt;li>&lt;strong>最小可偵測效果（MDE）&lt;/strong>：想偵測到的最小差異（例如 5% → 6%，相對提升 20%）&lt;/li>
&lt;li>&lt;strong>顯著性水準 α&lt;/strong>：通常 0.05&lt;/li>
&lt;li>&lt;strong>統計檢定力 1 - β&lt;/strong>：通常 0.8&lt;/li>
&lt;/ul>
&lt;p>以基準轉換率 5%、MDE 相對提升 20%（5% → 6%）、α = 0.05、power = 0.8 為例，每組需要約 14,500 個樣本。如果每天有 1,000 個使用者，需要跑 29 天。&lt;/p>
&lt;p>樣本量不足時的常見錯誤是「提早看結果」— 跑了 3 天看到 p &amp;lt; 0.05 就停止。提早停止會膨脹 Type I error 率，因為隨機波動在小樣本中更容易產生看似顯著的差異。&lt;/p>
&lt;h2 id="多重比較">多重比較&lt;/h2>
&lt;p>同時跑多個 A/B test 或測試多個變體（A/B/C/D）時，整體的 Type I error 率會膨脹。&lt;/p>
&lt;p>跑 20 個 test，即使所有 test 的 H0 都成立（沒有真實差異），預期有 1 個 test（20 × 0.05）會出現 p &amp;lt; 0.05 的偽陽性。&lt;/p>
&lt;h3 id="bonferroni-校正">Bonferroni 校正&lt;/h3>
&lt;p>最簡單的校正方式：把顯著性水準除以測試數量。跑 5 個 test，每個 test 的顯著性水準改為 0.05 / 5 = 0.01。&lt;/p>
&lt;p>Bonferroni 校正很保守 — 降低了偽陽性但也降低了統計檢定力，可能錯過真實的差異。&lt;/p>
&lt;h3 id="false-discovery-ratefdr">False Discovery Rate（FDR）&lt;/h3>
&lt;p>Benjamini-Hochberg 方法控制的是「被判為顯著的結果中偽陽性的比例」，比 Bonferroni 更寬鬆。適合探索性分析（同時測試多個指標，容許一些偽陽性）。&lt;/p>
&lt;h2 id="ab-test-在自架方案的可行性">A/B test 在自架方案的可行性&lt;/h2>
&lt;p>自架 collector 可以做基礎的 A/B test 分析 — 在行為事件中記錄使用者的分組（&lt;code>variant: &amp;quot;control&amp;quot;&lt;/code> / &lt;code>variant: &amp;quot;treatment&amp;quot;&lt;/code>），計算每組的轉換率，用統計檢定比較差異。&lt;/p>
&lt;p>統計計算（p-value、信賴區間）可以用 Python（scipy.stats）或 R 完成。不需要商業 A/B test 平台。&lt;/p>
&lt;p>商業 A/B test 平台（Optimizely、LaunchDarkly、Firebase Remote Config）額外提供的是：隨機分組管理、提早停止的統計保護（sequential testing）、多變體管理的 UI、和其他分析工具的整合。&lt;/p>
&lt;h2 id="下一步路由">下一步路由&lt;/h2>
&lt;ul>
&lt;li>推薦系統概論 → &lt;a href="https://tarrragon.github.io/blog/monitoring/08-business-analytics/recommendation-overview/" data-link-title="推薦系統概論" data-link-desc="Collaborative filtering / content-based / 混合方法 — 推薦系統的三種基本架構和各自的資料需求">推薦系統概論&lt;/a>&lt;/li>
&lt;li>使用者分群 → &lt;a href="https://tarrragon.github.io/blog/monitoring/08-business-analytics/rfm-segmentation/" data-link-title="RFM 分群" data-link-desc="Recency / Frequency / Monetary 三維度的使用者分群 — 從行為事件計算 RFM 分數、定義使用者群體、驅動差異化策略">RFM 分群&lt;/a>&lt;/li>
&lt;li>行為事件設計 → &lt;a href="https://tarrragon.github.io/blog/monitoring/08-business-analytics/behavior-event-design/" data-link-title="行為事件設計" data-link-desc="事件命名規範、屬性設計、funnel 定義 — 行為分析的品質取決於事件設計的品質">行為事件設計&lt;/a>&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>A/B test 把使用者隨機分成兩組，一組看到原版（control），一組看到改版（treatment），比較兩組的指標差異。統計方法的角色是判斷「觀察到的差異是真實的還是隨機波動」。</p>
<h2 id="假設檢定">假設檢定</h2>
<h3 id="虛無假設和對立假設">虛無假設和對立假設</h3>
<p>虛無假設（H0）：兩組沒有差異，觀察到的差異來自隨機波動。對立假設（H1）：兩組有真實差異。</p>
<p>A/B test 的邏輯是：假設 H0 成立（兩組沒有差異），計算「在 H0 成立的前提下，觀察到目前這麼大的差異的機率」。如果這個機率（p-value）很小（通常 &lt; 0.05），拒絕 H0，接受 H1。</p>
<h3 id="p-value-的意義">p-value 的意義</h3>
<p>p-value = 0.03 代表「假設兩組沒有差異，觀察到目前差異的機率是 3%」。這個機率足夠小，合理推斷差異是真實的。</p>
<p>p-value 不代表「改版比原版好的機率是 97%」。p-value 是在 H0 成立的條件下計算的，不是改版效果的機率。</p>
<h3 id="兩類錯誤">兩類錯誤</h3>
<p><strong>Type I error（偽陽性）</strong>：實際上沒有差異，但統計結果判定有差異。機率由顯著性水準 α 控制，通常設 0.05。</p>
<p><strong>Type II error（偽陰性）</strong>：實際上有差異，但統計結果判定沒有差異。機率由統計檢定力（power = 1 - β）控制，通常要求 power ≥ 0.8。</p>
<h2 id="樣本量計算">樣本量計算</h2>
<p>樣本量決定了 A/B test 能偵測到多小的差異。樣本量太小，即使改版有效果，test 也沒有足夠的統計檢定力偵測到。</p>
<p>樣本量計算需要四個參數：</p>
<ul>
<li><strong>基準轉換率</strong>：control 組目前的轉換率（例如 5%）</li>
<li><strong>最小可偵測效果（MDE）</strong>：想偵測到的最小差異（例如 5% → 6%，相對提升 20%）</li>
<li><strong>顯著性水準 α</strong>：通常 0.05</li>
<li><strong>統計檢定力 1 - β</strong>：通常 0.8</li>
</ul>
<p>以基準轉換率 5%、MDE 相對提升 20%（5% → 6%）、α = 0.05、power = 0.8 為例，每組需要約 14,500 個樣本。如果每天有 1,000 個使用者，需要跑 29 天。</p>
<p>樣本量不足時的常見錯誤是「提早看結果」— 跑了 3 天看到 p &lt; 0.05 就停止。提早停止會膨脹 Type I error 率，因為隨機波動在小樣本中更容易產生看似顯著的差異。</p>
<h2 id="多重比較">多重比較</h2>
<p>同時跑多個 A/B test 或測試多個變體（A/B/C/D）時，整體的 Type I error 率會膨脹。</p>
<p>跑 20 個 test，即使所有 test 的 H0 都成立（沒有真實差異），預期有 1 個 test（20 × 0.05）會出現 p &lt; 0.05 的偽陽性。</p>
<h3 id="bonferroni-校正">Bonferroni 校正</h3>
<p>最簡單的校正方式：把顯著性水準除以測試數量。跑 5 個 test，每個 test 的顯著性水準改為 0.05 / 5 = 0.01。</p>
<p>Bonferroni 校正很保守 — 降低了偽陽性但也降低了統計檢定力，可能錯過真實的差異。</p>
<h3 id="false-discovery-ratefdr">False Discovery Rate（FDR）</h3>
<p>Benjamini-Hochberg 方法控制的是「被判為顯著的結果中偽陽性的比例」，比 Bonferroni 更寬鬆。適合探索性分析（同時測試多個指標，容許一些偽陽性）。</p>
<h2 id="ab-test-在自架方案的可行性">A/B test 在自架方案的可行性</h2>
<p>自架 collector 可以做基礎的 A/B test 分析 — 在行為事件中記錄使用者的分組（<code>variant: &quot;control&quot;</code> / <code>variant: &quot;treatment&quot;</code>），計算每組的轉換率，用統計檢定比較差異。</p>
<p>統計計算（p-value、信賴區間）可以用 Python（scipy.stats）或 R 完成。不需要商業 A/B test 平台。</p>
<p>商業 A/B test 平台（Optimizely、LaunchDarkly、Firebase Remote Config）額外提供的是：隨機分組管理、提早停止的統計保護（sequential testing）、多變體管理的 UI、和其他分析工具的整合。</p>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>推薦系統概論 → <a href="/blog/monitoring/08-business-analytics/recommendation-overview/" data-link-title="推薦系統概論" data-link-desc="Collaborative filtering / content-based / 混合方法 — 推薦系統的三種基本架構和各自的資料需求">推薦系統概論</a></li>
<li>使用者分群 → <a href="/blog/monitoring/08-business-analytics/rfm-segmentation/" data-link-title="RFM 分群" data-link-desc="Recency / Frequency / Monetary 三維度的使用者分群 — 從行為事件計算 RFM 分數、定義使用者群體、驅動差異化策略">RFM 分群</a></li>
<li>行為事件設計 → <a href="/blog/monitoring/08-business-analytics/behavior-event-design/" data-link-title="行為事件設計" data-link-desc="事件命名規範、屬性設計、funnel 定義 — 行為分析的品質取決於事件設計的品質">行為事件設計</a></li>
</ul>
]]></content:encoded></item></channel></rss>