關於 Firebase A/B 測試

為協助您盡可能提高測試結果的關聯性和實用性,本頁將詳細說明 Firebase A/B 測試的運作方式。

樣本數量

在開始實驗之前,使用 Firebase A/B 測試推論不需要識別最小樣本大小。一般來說,您應選擇滿意的最大實驗曝光等級。樣本大小越大,越有機會找到具有統計顯著性的結果,尤其是變化版本之間的效能差異不大時。您也可以使用線上樣本數量計算機,根據實驗特性找出建議的樣本大小。

編輯實驗

您可以編輯執行實驗的指定參數,包括:

  • 實驗名稱
  • 說明
  • 指定條件
  • 變化版本值

編輯實驗的步驟如下:

  1. 開啟要修改實驗的結果網頁。
  2. 從「More」圖示 中選取「Edit running experiment」
  3. 進行變更,然後按一下「發布」

請注意,在實驗期間變更應用程式行為可能會影響結果。

遠端設定變化版本指派邏輯

系統會根據變化版本權重、實驗 ID 和使用者 Firebase 安裝 ID 的雜湊值,將符合所有實驗指定條件 (包括百分比曝光條件) 的使用者指派給實驗變化版本。

Google Analytics (分析) 目標對象可能會有延遲的情況,但使用者一開始符合目標對象條件時,不會立即取得:

  • 新的目標對象建立後,可能需要 24 到 48 小時才會開始累積新使用者。
  • 新使用者在符合資格後,通常會在 24 到 48 小時內註冊符合資格的目標對象。

針對具時效性的指定功能,建議您使用 Google Analytics (分析) 使用者屬性或內建指定目標選項,例如國家/地區或地區、語言和應用程式版本。

使用者進入實驗後,只要使用者屬性有所變更且不再符合實驗指定條件,實驗就會持續指派給實驗變化版本,並從實驗接收參數值。

啟用事件

實驗啟用事件會限制實驗評估範圍,只對觸發啟用事件的應用程式使用者執行。實驗啟用事件不會影響應用程式擷取的實驗參數。凡是符合實驗指定條件的使用者,都會收到實驗參數。因此,請務必選擇在擷取並啟用實驗參數後,但在使用實驗參數修改應用程式行為之前發生的啟用事件。

變化版本權重

建立實驗時,您可以變更預設變化版本權重,將更多實驗使用者納入變化版本。

解讀測試結果

Firebase A/B 測試採用頻率推論,可協助您瞭解只因隨機機會而產生實驗結果的可能性。此可能性會以「機率值」或「p 值」表示。p 值是指兩個變化版本之間因隨機機率而出現效能差異的機率 (以 0 到 1 之間的值進行測量)。A/B 測試會採用重要性為 0.05 的結果:

  • 如果 p 值小於 0.05,代表變化版本之間具有統計顯著性的差異,這代表該變數不太可能是隨機發生。
  • 如果 p 值大於 0.05,則表示變化版本之間的差異不具統計顯著性。

實驗資料每天會更新一次,而上次更新時間會顯示在實驗結果頁面的頂端。

實驗結果圖表會顯示所選指標的累計平均值。舉例來說,如果您要追蹤每位使用者的廣告收益指標,報表會顯示每位使用者觀察到的收益,而如果您追蹤的是未發生當機情形的使用者,則會追蹤未遇到當機情形的使用者百分比。這項資料會從實驗開始時累積。

結果會分為「觀測到的資料」和「推論資料」。觀測到的資料直接從 Google Analytics (分析) 資料計算而得,推論資料會提供 p 值和信賴區間,協助您評估觀測資料的統計資料顯著程度。

系統會針對每項指標顯示下列統計資料:

觀察到的資料

  • 已追蹤指標的總價值 (留存使用者數、當機的使用者人數、總收益)
  • 指標專屬率 (留存率、轉換率、每位使用者收益)
  • 變化版本與基準之間的差異百分比差異 (升幅)

推論資料

  • 95% CI (平均值差異) 顯示的間隔區間為已追蹤指標的「true」值,信賴區間為 95%。舉例來說,如果實驗結果是 95% 的持續整合結果,預估總收益介於 $5 至 $10 美元之間,則實際差異有 95% 的機率介於 $5 至 $10 美元之間。如果 CI 範圍包含 0,則系統不會偵測到變化版本與基準之間的統計顯著差異。

    信賴區間值會以與追蹤指標相符的格式顯示。例如使用者留存時間 (以 HH:MM:SS 為單位)、每位使用者廣告收益的美元,以及轉換率百分比。

  • P 值:代表變化版本與基準之間沒有實際差異的機率;也就是說,任何觀察到的差異可能是由隨機機率所引起。p 值越低,表示觀察到的效能在未來保持不變的可信度越高。值 0.05 以下表示出現顯著差異,且結果是偶然造成的低機率。P 值是以單尾測試為依據,其中 Variant 值大於基準值。Firebase 針對連續變數 (數值例如收益) 使用不相等的變異值 t-test,並針對轉換資料 (觸發事件的二元價值,例如使用者留存率、未發生當機情形的使用者或事件觸發者) 數值進行 Z 測試

實驗結果提供每個實驗變化版本的重要深入分析資訊,包括:

  • 每項實驗指標與基準相比的增減程度 (即實際觀察到的資料)
  • 在變化版本與基準之間觀測到差異的機率,可能因為隨機機率 (p 值)
  • 可能會有變化版本與每個實驗指標基準之間出現「實際」效能差異的範圍,藉此瞭解「最佳情況」和「最差情況」的成效情境

解讀採用 Google 最佳化工具的實驗結果

2023 年 10 月 23 日前開始的實驗 Firebase A/B 測試結果,採用 Google 最佳化工具。Google 最佳化工具使用貝氏推論法,從實驗資料產生具有參考價值的統計資料。

結果會分為「觀測資料」和「模型化資料」。觀測到的資料是由數據分析資料直接計算,而模擬資料衍生自貝葉斯模型的應用程式和觀測資料。

系統會針對每項指標顯示下列統計資料:

觀察到的數據

  • 總價值 (變化版本中所有使用者的指標總和)
  • 平均值 (變化版本中使用者的指標平均值)
  • 與基準的落差百分比

以模型產生的資料

  • 超越基準的機率:與基準相比,這個變化版本的指標高於基準的機率
  • 與基準相比的差異百分比:根據變化版本和基準的指標預估值中位數估算而得
  • 指標範圍:最有可能找到指標值的範圍 (確定性 50% 和 95%)

整體來說,實驗結果提供了實驗中每個變化版本的三個重要深入分析資訊:

  1. 每項實驗指標與基準 (即實際觀察到的資料) 相比,與基準相比的增減幅度
  2. 根據貝氏推論,每項實驗指標高於基準 / 整體最佳的成效可能性 (分別產生「較佳 / 最佳成效」的機率)
  3. 每項實驗指標的合理範圍,根據貝葉斯推論而得,也就是「最佳案例」和「最差情況」的情境 (可信間隔)

領先企業的決心

針對使用頻率學者推論的實驗,如果變化版本與目標指標基準的效能差異明顯有統計顯著差異,Firebase 就會宣告該變化版本為勝出。如果多個變化版本都符合這項條件,系統會選擇 p 值最低的變化版本。

針對使用 Google 最佳化工具的實驗,Firebase 會聲明當變化版本優於主要指標的基準變化版本,即表示該變化版本的成效高於 95%,即為「明顯的勝出版本」。如果多個變化版本符合「明顯的勝出版本」條件,只有成效最佳的變化版本會標示為「明顯的變化版本」。

由於領導者決定僅以主要目標為依據,因此在決定是否要推出主要變化版本之前,您應考量所有相關因素並檢查次要指標的結果。建議您考量進行變更的預期缺點、副作用 (例如改善的信賴區間下限),以及對主要目標以外指標的影響。

舉例來說,如果您的主要指標是未受當機影響的使用者,而變化版本 A 是基準而非基準的使用者,但變化版本 A 的使用者留存指標追蹤基準使用者留存率,建議您在擴大發布版本 A 之前進一步調查。

您可以根據主要和次要指標對效能的整體評估結果,提供任何變化版本,而不只是主要的變化版本。

實驗時間長度

Firebase 建議持續執行實驗,直到符合下列條件為止:

  1. 實驗已累積足夠的資料,可以提供實用的結果。 實驗和結果資料每天會更新一次。建議您使用線上樣本數量計算機,以評估建議的實驗樣本大小。
  2. 實驗時間夠長,以確保能取得使用者的代表性樣本,並評估長期成效。一般遠端設定實驗的建議執行時間下限為兩週。

實驗開始後,系統最多會處理實驗資料 90 天。90 天後,實驗就會自動停止。 Firebase 控制台不會再更新實驗結果,實驗也會停止傳送實驗專屬的參數值。這時,用戶端會根據遠端設定範本中設定的條件,開始擷取參數值。系統會保留歷來實驗資料,直到您刪除實驗為止。

BigQuery 結構定義

除了在 Firebase 控制台中查看 A/B 測試實驗資料,您還可以在 BigQuery 中檢查及分析實驗資料。雖然 A/B 測試沒有獨立的 BigQuery 資料表,但實驗和變化版本成員資格會儲存在 Analytics (分析) 事件資料表中的每個 Google Analytics (分析) 事件。

包含實驗資訊的使用者屬性格式為 userProperty.key like "firebase_exp_%"userProperty.key = "firebase_exp_01",其中 01 是實驗 ID,userProperty.value.string_value 則包含實驗變化版本的索引 (以零為基準)。

您可以使用這些實驗使用者屬性來擷取實驗資料。 這樣就能以多種不同方式劃分實驗結果,並獨立驗證 A/B 測試的結果。

首先,請依照本指南的說明完成下列步驟:

  1. 在 Firebase 控制台中啟用 Google Analytics (分析) 的 BigQuery Export
  2. 使用 BigQuery 存取 A/B 測試資料
  3. 探索查詢範例

在 Firebase 控制台中啟用 Google Analytics (分析) 的 BigQuery Export

如果您採用 Spark 方案,則可在符合沙箱限制的情況下,使用 BigQuery 沙箱免費存取 BigQuery。詳情請參閱定價和 BigQuery 沙箱一文。

首先,請將 Analytics (分析) 資料匯出至 BigQuery:

  1. 開啟「Integrations」(整合) 分頁標籤,前往 Firebase 控制台中的 >「Project settings」(專案設定) 存取該分頁。
  2. 如果您已將 BigQuery 與其他 Firebase 服務搭配使用,請按一下「管理」。如果尚未建立,請按一下「連結」。
  3. 請參閱「關於將 Firebase 連結至 BigQuery」一文,然後點選「下一步」
  4. 在「Configure integration」(設定整合) 部分中,啟用「Google Analytics (分析)」切換按鈕。
  5. 選取區域並選擇匯出設定。

  6. 按一下「連結至 BigQuery」

視您選擇匯出資料的方式而定,資料表最多可能需要一天的時間才能可供使用。如要進一步瞭解如何將專案資料匯出至 BigQuery,請參閱「將專案資料匯出至 BigQuery」。

在 BigQuery 中存取 A/B 測試資料

查詢特定實驗的資料前,建議先取得下列 (或所有) 項目,以便用於查詢:

  • 實驗 ID:可透過「實驗總覽」頁面的網址取得。例如,如果網址為 https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25,實驗 ID 就是 25
  • Google Analytics (分析) 資源 ID:這是 9 位數的 Google Analytics (分析) 資源 ID。您可以在 Google Analytics (分析) 中找到這項作業;當您展開專案名稱,以顯示 Google Analytics (分析) 事件資料表 (project_name.analytics_000000000.events) 的名稱時,這項資訊也會顯示在 BigQuery 中。
  • 實驗日期:如要編寫更快速有效的查詢,建議您將查詢限制為含有實驗資料的 Google Analytics (分析) 每日事件資料表分區,也就是以 YYYYMMDD 後置字串識別的資料表。因此,如果實驗從 2024 年 2 月 2 日至 2024 年 5 月 2 日執行,請指定 _TABLE_SUFFIX between '20240202' AND '20240502'。如需範例,請參閱「選取特定實驗的值」。
  • 事件名稱:通常這些名稱與您在實驗中設定的目標指標相對應。例如 in_app_purchase 事件、ad_impressionuser_retention 事件。
」一文。

收集產生查詢所需的資訊後,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟 BigQuery
  2. 請選取專案,然後選取「建立 SQL 查詢」
  3. 新增查詢。如需執行查詢範例,請參閱「探索查詢範例」。
  4. 點選「執行」

使用 Firebase 控制台自動產生的查詢,查詢實驗資料

如果您使用的是 Blaze 方案,「實驗總覽」頁面會提供範例查詢,回傳實驗名稱、變化版本、事件名稱及您正在查看的實驗事件數量。

如何取得並執行自動產生的查詢:

  1. 在 Firebase 控制台中開啟 「A/B 測試」,然後選取要查詢的 A/B 測試實驗,開啟「實驗總覽」
  2. 在「選項」選單中的「BigQuery 整合」下方,選取「查詢實驗資料」。即可在 Google Cloud 控制台的 BigQuery 中開啟專案,並提供基本查詢,可用來查詢實驗資料。

以下範例顯示針對名為「冬季歡迎實驗」三個變化版本 (包括基準) 的實驗所產生的查詢。它會傳回有效實驗名稱、變化版本名稱、不重複事件和每個事件的事件計數。請注意,查詢建構工具不會在資料表名稱中指定專案名稱,因為它會直接在專案中開啟。

  /*
    This query is auto-generated by Firebase A/B Testing for your
    experiment "Winter welcome experiment".
    It demonstrates how you can get event counts for all Analytics
    events logged by each variant of this experiment's population.
  */
  SELECT
    'Winter welcome experiment' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'Welcome message (1)'
      WHEN '2' THEN 'Welcome message (2)'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_000000000.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN '20240202' AND '20240502')
    AND userProperty.key = 'firebase_exp_25'
  GROUP BY
    experimentVariant, eventName

如需其他查詢範例,請繼續前往「探索範例查詢」一節。

探索查詢範例

以下各節提供查詢範例,方便您從 Google Analytics (分析) 事件資料表擷取 A/B 測試實驗資料。

從所有實驗中擷取購買和實驗標準差值

您可以使用實驗結果資料獨立驗證 Firebase A/B 測試結果。以下 BigQuery SQL 陳述式會擷取實驗變化版本、每個變化版本的不重複使用者人數,以及 in_app_purchaseecommerce_purchase 事件的總收益,以及在 _TABLE_SUFFIX 的開始與結束日期範圍內,所有實驗的標準差。透過從這項查詢取得的資料,可以搭配單尾 T 測試的統計顯著性產生器,驗證 Firebase 結果是否與您的分析相符。

如要進一步瞭解 A/B 測試如何計算推論,請參閱「解讀測試結果」。

  /*
    This query returns all experiment variants, number of unique users,
    the average USD spent per user, and the standard deviation for all
    experiments within the date range specified for _TABLE_SUFFIX.
  */
  SELECT
    experimentNumber,
    experimentVariant,
    COUNT(*) AS unique_users,
    AVG(usd_value) AS usd_value_per_user,
    STDDEV(usd_value) AS std_dev
  FROM
    (
      SELECT
        userProperty.key AS experimentNumber,
        userProperty.value.string_value AS experimentVariant,
        user_pseudo_id,
        SUM(
          CASE
            WHEN event_name IN ('in_app_purchase', 'ecommerce_purchase')
              THEN event_value_in_usd
            ELSE 0
            END) AS usd_value
      FROM `PROJECT_NAME.analytics_ANALYTICS_ID.events_*`
      CROSS JOIN UNNEST(user_properties) AS userProperty
      WHERE
        userProperty.key LIKE 'firebase_exp_%'
        AND event_name IN ('in_app_purchase', 'ecommerce_purchase')
        AND (_TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYMMDD')
      GROUP BY 1, 2, 3
    )
  GROUP BY 1, 2
  ORDER BY 1, 2;

選取特定實驗的值

下列查詢範例說明如何取得 BigQuery 中特定實驗的資料。這個查詢範例會傳回實驗名稱、變化版本名稱 (包括基準)、事件名稱和事件計數。

  SELECT
    'EXPERIMENT_NAME' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'VARIANT_1_NAME'
      WHEN '2' THEN 'VARIANT_2_NAME'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_ANALYTICS_PROPERTY.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN 'YYYMMDD' AND 'YYYMMDD')
    AND userProperty.key = 'firebase_exp_EXPERIMENT_NUMBER'
  GROUP BY
    experimentVariant, eventName

限制

A/B 測試最多只能有 300 項實驗、24 項執行中的實驗和 24 個草稿實驗。這些限制會與遠端設定推出作業共用。舉例來說,如果您有兩個執行中的推出作業和三個執行中的實驗,則最多可額外擁有 19 項推出作業或實驗。

  • 如果達到 300 個實驗總數的上限或 24 個草稿實驗數量上限,就必須先刪除現有實驗,才能建立新實驗。

  • 如果您達到 24 項實驗和推出作業的上限,就必須先停止正在執行的實驗或推出作業,才能開始新的實驗。

實驗最多可以有 8 個變化版本 (包括基準) 和 25 個參數。實驗的大小可達約 200 KiB。這包括變化版本名稱、變化版本參數和其他設定中繼資料。