Báo cáo về thử nghiệm

Có hai cách chính để báo cáo về thử nghiệm:

  • Báo cáo thử nghiệm trực tiếp: Truy vấn tài nguyên experiment để biết các chỉ số. Lựa chọn này cung cấp các chỉ số cho nhóm đối chứng và nhóm thử nghiệm trong một phản hồi duy nhất, cùng với dữ liệu so sánh thống kê như mức tăng và giá trị p. Đây là cách duy nhất để báo cáo về các thử nghiệm trong chiến dịch.
  • Báo cáo về chiến dịch: Truy vấn tài nguyên campaign cho các chỉ số, sử dụng campaign.experiment_type để phân biệt giữa chiến dịch cơ sở và chiến dịch thử nghiệm. Lựa chọn này chỉ áp dụng cho những thử nghiệm sử dụng chiến dịch đối chứng và chiến dịch thử nghiệm riêng biệt, chẳng hạn như thử nghiệm do hệ thống quản lý.

Hướng dẫn này chủ yếu tập trung vào báo cáo thử nghiệm trực tiếp, tương thích với tất cả các loại thử nghiệm hỗ trợ báo cáo.

Báo cáo thử nghiệm trực tiếp

Bạn có thể trực tiếp truy vấn tài nguyên experiment để truy xuất các chỉ số hiệu suất và so sánh thống kê giữa nhóm đối chứng và nhóm thử nghiệm.

Chỉ số và ý nghĩa thống kê

Đối với các chỉ số chính như số lượt nhấp, số lượt hiển thị, chi phí, số lượt chuyển đổi và giá trị lượt chuyển đổi, tài nguyên experiment cung cấp cả chỉ số về nhóm thử nghiệm (ví dụ: metrics.clicks) và chỉ số về nhóm đối chứng (ví dụ: metrics.control_clicks) trong cùng một hàng.

Báo cáo này cũng cung cấp các trường để giúp bạn đánh giá ý nghĩa thống kê của mọi điểm khác biệt giữa các nhóm:

  • metrics.*_p_value: Xác suất xảy ra kết quả quan sát được nếu thử nghiệm không có tác động thực tế đến chỉ số. Giá trị p càng thấp thì ý nghĩa thống kê càng cao.
  • metrics.*_point_estimate: Mức tăng ước tính (dương hoặc âm) theo tỷ lệ phần trăm của chỉ số đã cho đối với nhóm can thiệp so với nhóm đối chứng. Cùng với margin_of_error, các giá trị này mô tả một khoảng tin cậy với độ tin cậy được chỉ định cho mức chênh lệch được ước tính. Số lượng được ước tính là (nhóm thử nghiệm / nhóm đối chứng – 1). Ước tính điểm là tâm của khoảng tin cậy.
  • metrics.*_margin_of_error: Bán kính của khoảng tin cậy, được đặt ở tâm tại point_estimate. Giá trị này được tính cho một mức độ tin cậy được quy định trước, tuỳ thuộc vào loại thử nghiệm.

Các trường chỉ số cốt lõi sau đây được hỗ trợ trên tài nguyên experiment, bao gồm giá trị nhóm thử nghiệm, giá trị nhóm kiểm soát và các trường số liệu thống kê được liệt kê trước đó:

  • clicks
  • impressions
  • cost_micros
  • conversions
  • cost_per_conversion
  • conversion_value
  • conversion_value_per_cost

Đối với lượt chuyển đổi, cụ thể là các trường thống kê có sẵn thông qua các trường absolute_change sau đây, thay vì dưới dạng giá trị tương đối:

Để được hỗ trợ tạo các truy vấn hợp lệ cho tài nguyên experiment, hãy sử dụng công cụ Trình tạo truy vấn của Google Ads.

Cụm từ tìm kiếm ví dụ

Truy vấn GAQL sau đây truy xuất các chỉ số chính cho một thử nghiệm:

SELECT
  experiment.experiment_id,
  experiment.name,
  experiment.type,
  metrics.clicks,
  metrics.control_clicks,
  metrics.clicks_point_estimate,
  metrics.clicks_margin_of_error,
  metrics.clicks_p_value,
  metrics.conversions,
  metrics.control_conversions,
  metrics.conversions_absolute_change_point_estimate,
  metrics.conversions_absolute_change_margin_of_error,
  metrics.conversions_absolute_change_p_value
FROM experiment
WHERE experiment.experiment_id = EXPERIMENT_ID

Diễn giải kết quả

Bạn có thể sử dụng các trường giá trị p, ước tính điểm và tỷ lệ sai số để xác định xem thử nghiệm của bạn có mang lại kết quả có ý nghĩa thống kê hay không. Ví dụ: nếu conversions_absolute_change_p_value thấp hơn ngưỡng bạn chọn (ví dụ: 0,05 cho độ tin cậy 95%) và conversions_absolute_change_point_estimateconversions_absolute_change_margin_of_error lớn hơn 0, điều này cho thấy nhóm can thiệp đang hoạt động hiệu quả hơn đáng kể so với nhóm đối chứng về lượt chuyển đổi.

Sau đây là một đoạn mã Python minh hoạ cách đánh giá kết quả dựa trên giá trị p và số liệu ước tính về mức tăng:

Java

This example is not yet available in Java; you can take a look at the other languages.
    

C#

This example is not yet available in C#; you can take a look at the other languages.
    

PHP

This example is not yet available in PHP; you can take a look at the other languages.
    

Python

def evaluate_experiment(
    client: GoogleAdsClient, customer_id: str, row: GoogleAdsRow
) -> None:
    """Evaluates the performance of the experiment.

    Args:
        client: an initialized GoogleAdsClient instance.
        customer_id: a client customer ID.
        row: a GoogleAdsRow containing the experiment arm and metrics.
    """
    metrics = row.metrics
    experiment_resource_name = row.experiment.resource_name

    # 1. Evaluate conversion success as a primary success signal.
    # - Point Estimate: Represents the estimated average lift or difference in conversions.
    # - Margin of Error: Outlines the confidence interval bounds. Note that the margin_of_error provided by the API is calculated for a preset confidence level which is set based on the experiment type.
    # - Lower Bound: (Point Estimate - Margin of Error). If this value is above 0,
    #   we have statistical significance that performance has improved.
    conv_p_value = metrics.conversions_absolute_change_p_value
    conv_lift = metrics.conversions_absolute_change_point_estimate
    conv_error = metrics.conversions_absolute_change_margin_of_error
    conv_lower_bound = conv_lift - conv_error

    if conv_p_value <= P_VALUE_THRESHOLD:
        if conv_lower_bound > 0:
            print(
                "Significant Success: Conversions increased. Even at the lower"
                f" bound, the lift is {conv_lower_bound:.2f}. Promoting"
                " changes."
            )
            promote_experiment(client, customer_id, experiment_resource_name)
            return
        elif (conv_lift + conv_error) < 0:
            print(
                "Significant Decline: Even the upper bound"
                f" ({conv_lift + conv_error:.2f}) is below zero. Ending"
                " experiment."
            )
            end_experiment(client, customer_id, experiment_resource_name)
            return

    # 2. Evaluate click volume as a secondary signal.
    # This is helpful as an early indicator or for lower-volume accounts.
    click_p_value = metrics.clicks_p_value
    click_lift = metrics.clicks_point_estimate
    click_error = metrics.clicks_margin_of_error
    click_lower_bound = click_lift - click_error

    if click_p_value <= P_VALUE_THRESHOLD and click_lower_bound > 0:
        # We have a directional winner: high confidence in more traffic,
        # but not enough data to confirm conversion impact yet.
        print(
            f"Click volume is significantly up (+{click_lift*100:.1f}%). "
            "Graduating treatment for further manual analysis."
        )

        # Graduate if it's a separate campaign test.
        # This keeps the high-volume treatment running independently.
        # Intra-campaign experiments (like ADOPT_BROAD_MATCH_KEYWORDS and
        # ADOPT_AI_MAX) run directly within the base campaign, meaning there is only
        # a single campaign involved and no separate treatment campaign to graduate.
        # Therefore, graduation is not supported for intra-campaign experiments.
        experiment_type_name = row.experiment.type_.name
        if (
            experiment_type_name != "ADOPT_BROAD_MATCH_KEYWORDS"
            and experiment_type_name != "ADOPT_AI_MAX"
        ):
            graduate_experiment(client, customer_id, experiment_resource_name)
        else:
            print(
                "Intra-campaign trial detected: Graduation is not supported"
                " because there is only one campaign. Continuing to run to"
                " gather more conversion data."
            )
    else:
        # Both conversions and clicks are noisy.
        print(
            "Inconclusive: No significant lift in Conversions"
            f" (p={conv_p_value:.2f}) or Clicks (p={click_p_value:.2f})."
            f" Current estimated lift: {conv_lift:.2f} +/- {conv_error:.2f}."
            " Continue running."
        )
      

Ruby

This example is not yet available in Ruby; you can take a look at the other languages.
    

Perl

This example is not yet available in Perl; you can take a look at the other languages.
    

curl

Lợi ích so với báo cáo về chiến dịch

Báo cáo thử nghiệm trực tiếp mang lại một số lợi thế so với việc truy vấn riêng các báo cáo chiến dịch:

  1. Chỉ số tập trung: Truy xuất các chỉ số cho nhóm kiểm soát và nhóm thử nghiệm trong một hàng duy nhất.
  2. Dữ liệu độ tin cậy thống kê: Cung cấp các giá trị p, ước tính điểm và biên độ sai số đã tính.
  3. Hiệu quả: Không cần phải kết hợp hoặc so sánh kết quả từ nhiều báo cáo theo cách thủ công.
  4. Hỗ trợ trong chiến dịch: Đây là cách duy nhất để so sánh nhóm đối chứng với nhóm thử nghiệm cho các thử nghiệm trong chiến dịch, trong đó lưu lượng truy cập được phân chia trong một chiến dịch duy nhất.

Báo cáo chiến dịch

Đối với những thử nghiệm tạo các chiến dịch thử nghiệm riêng biệt (ví dụ: SEARCH_CUSTOM), bạn có thể truy vấn tài nguyên campaign và sử dụng campaign.experiment_type để xác định chiến dịch BASE (đối chứng) và EXPERIMENT (thử nghiệm). Phương pháp này sẽ hữu ích nếu bạn cần phân đoạn các chỉ số ở cấp độ chi tiết hơn (ví dụ: theo nhóm quảng cáo hoặc từ khoá) hoặc xem siêu dữ liệu chiến dịch không có trên tài nguyên experiment. Tuy nhiên, bạn phải tự thực hiện các phép so sánh hiệu suất và tính toán thống kê.

Bạn không thể sử dụng báo cáo cấp chiến dịch để so sánh các nhóm thử nghiệm cho thử nghiệm trong chiến dịch, vì việc mức phân tách lưu lượng truy cập diễn ra nội bộ trong một chiến dịch duy nhất. Việc truy vấn campaign cho một thử nghiệm trong chiến dịch chỉ trả về tổng số liệu được tổng hợp.

Các phương pháp hay nhất

  • Chọn mức độ tin cậy phù hợp: Việc đặt ngưỡng giá trị p thấp hơn có thể cung cấp hướng dẫn định hướng nhanh hơn, đặc biệt là khi ngân sách hoặc số lượt chuyển đổi thấp hơn. Độ tin cậy 95% (giá trị p <= 0,05) được coi là tiêu chuẩn học thuật và có thể phù hợp hơn để có kết quả chính xác hơn trong khung thời gian dài hơn.
  • Chạy thử nghiệm đủ lâu: Chạy thử nghiệm trong ít nhất 4 tuần để tính đến các chu kỳ hiệu suất hằng tuần, độ trễ chuyển đổi và khoảng thời gian học.
  • Dành thời gian để tăng tốc: Đối với những chiến dịch sử dụng chiến lược đặt giá thầu tự động hoặc thử nghiệm các tính năng mới, hãy bỏ qua dữ liệu của 1 đến 2 tuần đầu tiên để các mô hình đặt giá thầu và mức lưu lượng truy cập có thời gian điều chỉnh lại theo mức phân chia.
  • Sử dụng mức phân tách lưu lượng truy cập 50/50: Mức phân tách lưu lượng truy cập 50/50 thường là cách nhanh nhất để đạt được kết quả có ý nghĩa thống kê.
  • Lên lịch trước: Đặt ngày bắt đầu thử nghiệm sau 3 đến 7 ngày để có thời gian cho quy trình xem xét và phê duyệt quảng cáo.
  • Tại một thời điểm bất kỳ, bạn chỉ có thể chạy một thử nghiệm cho mỗi chiến dịch.