關於 Firebase A/B 測試

為了幫助您最大限度地提高測試結果的相關性和實用性,本頁面提供了有關 Firebase A/B 測試工作原理的詳細資訊。

樣本量

Firebase A/B 測試推論不需要在開始實驗之前確定最小樣本量。一般來說,您應該選擇您覺得舒服的最大實驗暴露程度。較大的樣本量會增加找到具有統計意義的結果的機會,特別是當變異體之間的表現差異較小時。您可能還會發現,諮詢線上樣本量計算器以根據您的實驗特徵找到建議的樣本量很有用。

編輯實驗

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

  • 實驗名稱
  • 描述
  • 定位條件
  • 變體值

編輯實驗:

  1. 開啟要修改的實驗的結果頁面。
  2. 「更多選單中,選擇「編輯正在執行的實驗」
  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(平均值差異)顯示一個區間,其中包含具有 95% 置信度的追蹤指標的「真實」值。例如,如果您的實驗結果是估計總收入在 5 美元到 10 美元之間的置信區間為 95%,則平均值的真實差異有 95% 的可能性在 5 美元到 10 美元之間。如果 CI 範圍包括 0,則未偵測到變異體與基線之間的統計顯著差異。

    置信區間值以與追蹤指標相符的格式顯示。例如,用戶保留時間(以HH:MM:SS為單位)、每位用戶廣告收入的美元金額以及轉換率百分比。

  • P-value ,表示變異體與基線之間不存在真正差異的機率;換句話說,任何觀察到的差異都可能是由於隨機機會造成的。 p 值越低,觀察到的效能在未來保持真實的置信度就越高。 0.05 或更低的值表示有顯著差異,且結果純屬偶然的可能性較低。 P 值基於單尾檢驗,其中變異值大於基線值。 Firebase 對連續變數(數字值,如收入)使用不等方差 t 檢驗,並對轉換資料(二進位值,如使用者保留率、無崩潰使用者、觸發 Google Analytics 事件的使用者)進行比例 z 檢定

實驗結果為每個實驗變體提供了重要的見解,包括:

  • 每個實驗指標與直接測量的基線(即實際觀察到的數據)相比高或低了多少
  • 由於隨機機會(p 值)而發生變異與基線之間觀察到的差異的可能性
  • 可能包含每個實驗指標的變體和基準之間「真實」表現差異的範圍——一種理解「最佳情況」和「最壞情況」表現場景的方法

解釋由 Google Optimize 支援的實驗結果

2023 年 10 月 23 日之前開始的實驗的 Firebase A/B 測試結果由 Google Optimize 提供支援。 Google 優化工具使用貝葉斯推理從您的實驗數據中產生富有洞察力的統計數據。

結果分為「觀察資料」和「建模資料」。觀察數據是直接根據分析數據計算得出的,建模數據是透過將貝葉斯模型應用於觀察數據而得出的。

對於每個指標,顯示以下統計資訊:

觀測數據

  • 總價值(變體中所有使用者的指標總和)
  • 平均值(變異體中使用者指標的平均值)
  • 與基線的差異百分比

建模數據

  • 超過基線的機率:與基線相比,此變異的指標更高的可能性
  • 與基線的百分比差異:基於變異體和基線指標的中位數模型估計
  • 指標範圍:最有可能找到指標值的範圍,確定性為 50% 和 95%

總的來說,實驗結果為我們提供了實驗中每個變異的三個重要見解:

  1. 每個實驗指標與直接測量的基線(即實際觀察到的數據)相比高或低了多少
  2. 基於貝葉斯推斷,每個實驗指標高於基線/最佳整體的可能性有多大(分別是更好/最佳的機率)
  3. 基於貝葉斯推理的每個實驗指標的合理範圍—「最佳情況」和「最壞情況」場景(可信區間)

領導決心

對於使用頻率推理的實驗,如果變體與目標指標的基線之間存在統計上顯著的性能差異,則 Firebase 會聲明該變體領先。如果多個變體符合此標準,則選擇p 值最低的變體。

對於使用Google Optimize 的實驗,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 匯出
  2. 使用 BigQuery 存取 A/B 測試數據
  3. 探索範例查詢

在 Firebase 控制台中為 Google Analytics 啟用 BigQuery 匯出

如果您使用 Spark 套餐,則可以使用BigQuery 沙盒免費存取 BigQuery,但須遵守沙盒限制。有關更多信息,請參閱定價和 BigQuery 沙盒

首先,確保您將 Analytics 資料匯出至 BigQuery:

  1. 開啟「整合」標籤,您可以使用Firebase 控制台中的 > 「專案設定」來存取該標籤。
  2. 如果您已將 BigQuery 與其他 Firebase 服務結合使用,請點選管理。否則,請按一下“連結”
  3. 查看關於將 Firebase 連結到 BigQuery ,然後按一下下一步
  4. 設定整合部分中,啟用Google Analytics開關。
  5. 選擇一個區域並選擇匯出設定。

  6. 點擊連結到 BigQuery

根據您選擇匯出資料的方式,表格可能最多需要一天的時間才能可用。有關將項目資料匯出到 BigQuery 的更多信息,請參閱將項目資料匯出到 BigQuery

在 BigQuery 中存取 A/B 測試數據

在查詢特定實驗的資料之前,您需要取得以下部分或全部資訊以在查詢中使用:

  • 實驗 ID:您可以從實驗概述頁面的 URL 取得該 ID。例如,如果您的 URL 類似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 中開啟您的項目,並提供可用於查詢實驗資料的基本查詢。

以下範例顯示了針對名為「Winterwelcomeexperiment」的具有三個變體(包括基準)的實驗所產生的查詢。它會傳回活動實驗名稱、變體名稱、唯一事件以及每個事件的事件計數。請注意,查詢產生器不會在表格名稱中指定您的專案名稱,因為它直接在您的專案中開啟。

  /*
    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 個草稿實驗。

  • 如果達到 300 個實驗總數限製或 24 個草稿實驗限制,則必須先刪除現有實驗,然後再建立新實驗。

  • 如果達到 24 個正在運行的實驗限制,則必須先停止正在運行的實驗,然後才能開始新的實驗。

一個實驗最多可以有 8 個變體(包括基線),每個變體最多可以有 25 個參數。一個實驗的大小最大可達 200 KiB 左右。這包括變體名稱、變體參數和其他配置元資料。