關於 Firebase A/B 測試

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

樣本大小

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

編輯實驗

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

  • 實驗名稱
  • 說明
  • 指定目標條件
  • 變數值

如要編輯實驗,請按照下列步驟操作:

  1. 開啟要修改的實驗結果頁面。
  2. 在「更多」 選單中,選取「編輯進行中的實驗」
  3. 進行變更,然後按一下「發布」

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

遠端設定變體指派邏輯

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

Google Analytics目標對象 會有延遲,使用者最初符合目標對象條件時,系統不會立即提供:

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

如要指定時間敏感型目標,請考慮使用Google Analytics使用者屬性或內建指定目標選項,例如國家/地區、語言和應用程式版本。

使用者加入實驗後,系統會持續將他們指派至實驗變化版本,並在實驗有效期間提供實驗參數值,即使使用者屬性變更,不再符合實驗目標條件也是如此。

啟用事件

實驗啟動事件會將實驗評估範圍,限制在觸發啟動事件的應用程式使用者。實驗啟用事件不會對應用程式擷取的實驗參數造成任何影響;只要使用者符合實驗指定條件,就會收到實驗參數。因此,請務必選擇在擷取及啟用實驗參數後,但在使用實驗參數修改應用程式行為前發生的啟用事件。

變化版本權重

建立實驗時,您可以變更預設變數權重,將較高百分比的實驗使用者納入變數。

解讀測試結果

Firebase A/B Testing 使用常態推論,協助您瞭解實驗結果完全是隨機偶然的機率。這個可能性會以機率值 p 值表示。p 值是介於 0 到 1 之間的值,代表如果實際上沒有任何影響,兩個變體之間出現這麼大或更大的成效差異,可能是隨機機率所致。A/B Testing 使用 0.05 的顯著水準,因此:

  • 如果 p 值小於 0.05,表示如果實際差異為零,觀察到的極端差異隨機發生的機率小於 5%。由於 0.05 是門檻,因此任何小於 0.05 的 p 值都表示變化版本之間存在統計顯著差異。
  • 如果 P 值大於 0.05,表示變化版本之間的差異不具統計顯著性。

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

實驗結果圖表會顯示所選指標的累積平均值。舉例來說,如果您追蹤「每位使用者的廣告收益」指標,系統會顯示每位使用者的實際收益;如果您追蹤「無當機使用者」,系統會追蹤未發生當機的使用者百分比。這項資料是從實驗開始累計。

結果會分為「觀測資料」和「推論資料」。 系統會直接根據 Google Analytics 資料計算觀察到的資料,而推論資料則會提供 p 值和信賴區間,協助您評估觀察到的資料是否具有統計顯著性。

每項指標都會顯示下列統計資料:

觀察到的資料

  • 追蹤指標的總值 (留存使用者人數、發生當機的使用者人數、總收益)
  • 特定指標的比例 (留存率、轉換率、每位使用者的收益)
  • 變數與基準之間的差異百分比 (提升幅度)

推論資料

  • 95% 信賴區間 (平均值差異):顯示的區間有 95% 的機率包含所追蹤指標的「實際」值。舉例來說,如果實驗結果顯示預估總收益的 95% 信賴區間介於 $5 美元和 $10 美元之間,那麼平均值實際差異有 95% 的機率會介於 $5 美元和 $10 美元之間。如果信賴區間包含 0,表示系統未偵測到變化版本和基準組之間有統計顯著差異。

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

  • P 值:代表在變化版本與基準之間沒有實際差異的情況下,觀察到與實驗結果一樣極端資料的機率。P 值越低,表示重複實驗後,觀察到的成效仍維持不變的信心越高。如果值為 0.05 或更低,表示有顯著差異,且結果不太可能是偶然發生。P 值是以單尾檢定為準,其中變化版本值大於基準版本值。Firebase 會對連續變數 (例如收益等數值) 進行變異數不等的 t 檢定,並對轉換資料 (例如使用者留存率、未受當機狀況影響的使用者、觸發 Google Analytics 事件的使用者等二元值) 進行比例的 z 檢定

實驗結果會提供每個實驗變化版本的重要洞察資料,包括:

  • 與基準相比,每個實驗指標的升幅或降幅 (直接測量結果,也就是實際觀察到的資料)
  • 變化版本與基準版本之間觀測到的差異,可能是隨機機率所致 (p 值)
  • 這個範圍可能包含每個實驗指標的變體和基準之間的「真實」成效差異,有助於瞭解「最佳」和「最差」的成效情境

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

Firebase A/B Testing 2023 年 10 月 23 日前開始的實驗結果 是由 Google 最佳化工具提供。Google 最佳化工具會使用貝氏推論,根據實驗資料產生深入的統計資料。

結果會分成「觀察到的資料」和「模擬資料」。「觀察到的資料」是直接以數據分析資料計算而得,「以模型產生的資料」是對觀察到的資料採用貝葉斯模型後得到的結果。

每項指標都會顯示下列統計資料:

觀察到的數據

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

模擬資料

  • 超越基準的機率:這個變數的指標高於基準的機率
  • 與基準的落差百分比:根據變數和基準的中位數模型估計值計算
  • 指標範圍:指標值最有可能落入的範圍,確定度為 50% 和 95%

整體而言,實驗結果可為實驗中的每個變數提供三項重要洞察:

  1. 與基準相比,每個實驗指標的升幅或降幅 (直接測得,也就是實際觀察到的資料)
  2. 根據貝氏推論,各項實驗指標可能高於基準 / 整體最佳值 (分別為較佳 / 最佳的機率)
  3. 根據貝葉斯推論,每項實驗指標的合理範圍 -「最佳情況」和「最差情況」(可信區間)

決定領導者

如果實驗使用頻率論推論,只要變化版本和基準組的目標指標,在成效統計資料上有顯著差異,Firebase 就會宣告變化版本勝出。如有多個版本符合這個條件,Firebase 會選擇 p 值最低的版本。

如果實驗使用 Google 最佳化工具,Firebase 會根據主要指標,判斷變化版本優於基準版本的機率是否超過 95%,並據此宣告變化版本「明顯勝出」。如果多個變體都符合「明顯領先」條件,系統只會將整體成效最佳的變體標示為「明顯領先」。

Firebase 在判斷勝出版本時只參考主要目標指標,因此建議您考量所有相關因素,並檢視次要指標的結果,再決定是否要推出勝出版本。建議您考量變更帶來的預期好處、壞處風險 (例如改善信賴區間的下限),以及對主要目標以外指標的影響。

舉例來說,如果主要指標是不受當機影響的使用者,且版本 A 的成效明顯優於基準,但版本 A 的使用者留存率指標卻低於基準使用者留存率,您可能需要進一步調查,再廣泛推出版本 A。

您可以根據主要和次要指標的整體成效評估結果,推出任何變體,不限於勝出變體。

實驗時間長度

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

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

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

BigQuery 結構定義

除了在 A/B Testing 控制台中查看實驗資料,您也可以在 Firebase 中檢查及分析實驗資料。BigQuery雖然 A/B Testing 沒有個別的 BigQuery 表格,但實驗和變數成員資格會儲存在 Analytics 事件表格中的每個 Google Analytics 事件。

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

您可以使用這些實驗使用者屬性擷取實驗資料。 您可以透過多種不同方式分析實驗結果,並獨立驗證 A/B Testing 的結果。

如要開始使用,請按照本指南所述完成下列步驟:

  1. 在 Firebase 控制台中啟用 BigQuery 匯出功能Google Analytics
  2. 使用 BigQuery 存取 A/B Testing 資料
  3. 探索查詢範例

在 Firebase 控制台中啟用 Google AnalyticsBigQuery 匯出功能

如果採用 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 Testing 資料

查詢特定實驗的資料前,請先取得下列部分或全部資訊,以用於查詢:

  • 實驗 ID:您可以從「實驗總覽」頁面的網址取得這個 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 中找到這個 ID;展開專案名稱以顯示 Google Analytics 事件資料表名稱 (project_name.analytics_000000000.events) 時,這個 ID 也會顯示在 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 Testing 並選取要查詢的 A/B Testing 實驗,開啟「實驗總覽」
  2. 在「選項」選單的「BigQuery 整合」下方,選取「查詢實驗資料」。這會在 BigQuery Google Cloud 控制台中開啟專案,並提供基本查詢,可用於查詢實驗資料。

以下範例顯示為名為「Winter welcome experiment」的實驗產生的查詢,該實驗有三個變化版本 (包括基準)。這項查詢會傳回每個事件的有效實驗名稱、變體名稱、專屬事件和事件計數。請注意,查詢產生器不會在資料表名稱中指定專案名稱,因為查詢產生器會直接在專案中開啟。

  /*
    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 Testing 實驗資料。

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

您可以根據實驗結果資料,獨立驗證Firebase A/B Testing結果。下列 BigQuery SQL 陳述式會擷取實驗變體、各變體中的不重複使用者人數,以及 in_app_purchaseecommerce_purchase 事件的總收益,並計算指定時間範圍內所有實驗的標準差,該時間範圍由 _TABLE_SUFFIX 開始和結束日期指定。您可以搭配單尾 t 檢定的統計顯著性產生器,使用從這項查詢取得的資料,驗證 Firebase 提供的結果是否符合您自己的分析。

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

  /*
    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 Testing最多只能有 300 個實驗 (包括 24 個進行中的實驗和 24 個實驗草稿)。這些限制與 Remote Config 推出作業共用。舉例來說,如果您有兩個執行中的推出作業和三個執行中的實驗,最多可以再進行 19 個推出作業或實驗。

  • 如果達到 300 項實驗總數上限或 24 項草擬實驗上限,您必須先刪除現有實驗,才能建立新實驗。

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

每項實驗最多可有 8 個變化版本 (包括基準),每個變化版本最多可有 25 個參數。實驗大小上限約為 200 KiB。包括變體名稱、變體參數和其他設定中繼資料。