รายงานเกี่ยวกับการทดสอบ

การรายงานการทดสอบทำได้ 2 วิธีหลักๆ ดังนี้

  • การรายงานการทดสอบโดยตรง: ส่งคำค้นหาทรัพยากร experiment เพื่อดูเมตริก ตัวเลือกนี้จะแสดงเมตริกสำหรับกลุ่มควบคุมและกลุ่มทดสอบในการตอบกลับครั้งเดียว พร้อมกับข้อมูลการเปรียบเทียบทางสถิติ เช่น Lift และค่า P ซึ่งเป็นวิธีเดียวในการรายงานการทดสอบภายในแคมเปญ
  • การรายงานแคมเปญ: ส่งคำค้นหาทรัพยากร campaign เพื่อดูเมตริก โดยใช้ campaign.experiment_type เพื่อแยกแยะระหว่างแคมเปญฐานและแคมเปญทดสอบ ตัวเลือกนี้ใช้ได้กับการทดสอบที่ใช้แคมเปญควบคุมและแคมเปญทดสอบแยกกันเท่านั้น เช่น การทดสอบที่ระบบจัดการ

คู่มือนี้จะเน้นที่การรายงานการทดสอบโดยตรงเป็นหลัก ซึ่งเข้ากันได้กับการทดสอบทุกประเภทที่รองรับการรายงาน

การรายงานการทดสอบโดยตรง

คุณสามารถส่งคำค้นหาทรัพยากร experiment โดยตรงเพื่อดึงข้อมูลเมตริกประสิทธิภาพและการเปรียบเทียบทางสถิติระหว่างกลุ่มควบคุมและกลุ่มทดสอบ

เมตริกและความมีนัยสำคัญทางสถิติ

สําหรับเมตริกหลัก เช่น การคลิก การแสดงผล ต้นทุน Conversion และมูลค่า Conversion ทรัพยากร experiment จะแสดงทั้งเมตริกกลุ่มทดสอบ (เช่น metrics.clicks) และเมตริกกลุ่มควบคุม (เช่น metrics.control_clicks) ในแถวเดียวกัน

นอกจากนี้ยังมีช่องข้อมูลที่จะช่วยคุณประเมินความมีนัยสำคัญทางสถิติของความแตกต่างระหว่างกลุ่มต่างๆ ดังนี้

  • metrics.*_p_value: ความน่าจะเป็นที่ผลลัพธ์ที่สังเกตได้จะเกิดขึ้นหากการทดสอบไม่มีผลจริงต่อเมตริก ค่า P ที่ต่ำกว่าบ่งบอกถึงความมีนัยสำคัญทางสถิติที่สูงกว่า
  • metrics.*_point_estimate: เปอร์เซ็นต์ Lift โดยประมาณ (เป็นบวกหรือลบ) ในเมตริกที่กำหนดสําหรับกลุ่มทดสอบเมื่อเทียบกับกลุ่มควบคุม เมื่อรวมกับ margin_of_error แล้ว จะอธิบายช่วงความเชื่อมั่นที่มีระดับความเชื่อมั่นที่กำหนดไว้ล่วงหน้าสําหรับความแตกต่างที่ประมาณไว้ ปริมาณที่ประมาณไว้คือ (กลุ่มทดสอบ / กลุ่มควบคุม - 1) ค่าประมาณจุดคือจุดกึ่งกลางของช่วงความเชื่อมั่น
  • metrics.*_margin_of_error: รัศมีของช่วงความเชื่อมั่น ซึ่งมีจุดกึ่งกลางอยู่ที่ point_estimate โดยจะคำนวณสำหรับระดับความเชื่อมั่นที่กำหนดไว้ล่วงหน้า ซึ่งขึ้นอยู่กับประเภทการทดสอบ

ทรัพยากร experiment รองรับช่องเมตริกหลักต่อไปนี้ ซึ่งรวมถึงค่ากลุ่มทดสอบ ค่ากลุ่มควบคุม และช่องสถิติที่ระบุไว้ก่อนหน้านี้

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

สําหรับ Conversion โดยเฉพาะ ช่องสถิติจะใช้ได้ผ่านช่อง absolute_change ต่อไปนี้ ไม่ใช่ค่าสัมพัทธ์

  • metrics.conversions_absolute_change_p_value: ค่า P สําหรับสมมติฐานว่างที่ว่าการทดสอบไม่มีผลต่อการเปลี่ยนแปลงสัมบูรณ์ของ Conversion มีค่าตั้งแต่ 0 ถึง 1
  • metrics.conversions_absolute_change_point_estimate: ค่าประมาณจุดเมื่อประมาณผลของการทดสอบต่อการเปลี่ยนแปลงสัมบูรณ์ของ Conversion
  • metrics.conversions_absolute_change_margin_of_error: ความคลาดเคลื่อนเมื่อประมาณผลของการทดสอบต่อการเปลี่ยนแปลงสัมบูรณ์ของ Conversion

หากต้องการความช่วยเหลือในการสร้างคําค้นหาที่ถูกต้องสําหรับทรัพยากร experiment ให้ใช้ เครื่องมือสร้างคําค้นหา Google Ads

ตัวอย่างคำค้นหา

คําค้นหา GAQL ต่อไปนี้จะดึงข้อมูลเมตริกหลักสําหรับการทดสอบ

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

ตีความผลลัพธ์

คุณสามารถใช้ช่องค่า P, ค่าประมาณจุด และความคลาดเคลื่อนเพื่อระบุว่าการทดสอบให้ผลลัพธ์ที่มีนัยสำคัญทางสถิติหรือไม่ ตัวอย่างเช่น หาก conversions_absolute_change_p_value ต่ำกว่าเกณฑ์ที่เลือก (เช่น 0.05 สําหรับความเชื่อมั่น 95%) และ conversions_absolute_change_point_estimate - conversions_absolute_change_margin_of_error มากกว่า 0 แสดงว่ากลุ่มทดสอบมีประสิทธิภาพดีกว่ากลุ่มควบคุมอย่างมาก ในแง่ของ Conversion

ต่อไปนี้คือข้อมูลโค้ด Python ที่แสดงวิธีประเมินผลลัพธ์ตามค่า P และค่าประมาณ Lift

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

ข้อดีของการรายงานการทดสอบโดยตรงเมื่อเทียบกับการรายงานแคมเปญ

การรายงานการทดสอบโดยตรงมีข้อดีหลายประการเมื่อเทียบกับการส่งคําค้นหารายงานแคมเปญแยกกัน ดังนี้

  1. เมตริกแบบรวมศูนย์: ดึงข้อมูลเมตริกสําหรับกลุ่มควบคุมและกลุ่มทดสอบใน แถวเดียว
  2. ข้อมูลความเชื่อมั่นทางสถิติ: แสดงค่า P, ค่าประมาณจุด และค่าความคลาดเคลื่อนที่คํานวณแล้ว
  3. ประสิทธิภาพ: ไม่จําเป็นต้องรวมหรือเปรียบเทียบผลลัพธ์จาก รายงานหลายฉบับด้วยตนเอง
  4. การรองรับภายในแคมเปญ: เป็นวิธีเดียวในการเปรียบเทียบกลุ่มควบคุมกับ กลุ่มทดสอบสําหรับการทดสอบภายในแคมเปญ ซึ่งการเข้าชมจะแยกออกภายใน แคมเปญเดียว

การรายงานแคมเปญ

สําหรับการทดสอบที่สร้างแคมเปญทดสอบแยกกัน (เช่น SEARCH_CUSTOM) คุณสามารถส่งคําค้นหาทรัพยากร campaign และใช้ campaign.experiment_type เพื่อระบุ BASE (ควบคุม) และ EXPERIMENT (ทดสอบ) วิธีนี้มีประโยชน์หากคุณต้องการแบ่งส่วนเมตริกในระดับที่ละเอียดขึ้น (เช่น ตามกลุ่มโฆษณาหรือคีย์เวิร์ด) หรือดูข้อมูลเมตาของแคมเปญที่ไม่มีในทรัพยากร experiment อย่างไรก็ตาม คุณจะต้องเปรียบเทียบประสิทธิภาพและคํานวณทางสถิติด้วยตนเอง

คุณไม่สามารถใช้การรายงานระดับแคมเปญเพื่อเปรียบเทียบกลุ่มต่างๆ สําหรับการทดสอบภายในแคมเปญได้ เนื่องจากมีการแยกการเข้าชมภายในแคมเปญเดียว การส่งคําค้นหา campaign สําหรับการทดสอบภายในแคมเปญจะแสดงผลรวมแบบรวมเท่านั้น

แนวทางปฏิบัติแนะนำ

  • เลือกระดับความเชื่อมั่นที่เหมาะสม: การตั้งค่าเกณฑ์ค่า P ที่ต่ำลง จะให้คําแนะนําที่เป็นแนวทางได้เร็วขึ้น โดยเฉพาะอย่างยิ่งกับงบประมาณหรือปริมาณ Conversion ที่ต่ำกว่า ความเชื่อมั่น 95% (ค่า P <= 0.05) ถือเป็นมาตรฐานทางวิชาการและอาจเหมาะสําหรับผลลัพธ์ที่แม่นยํามากขึ้นในช่วงเวลาที่ยาวนานขึ้น
  • ทําการทดสอบนานพอ: ทําการทดสอบอย่างน้อย 4 สัปดาห์เพื่อ พิจารณาวงจรประสิทธิภาพรายสัปดาห์ ระยะเวลาก่อนที่จะเกิด Conversion และระยะเวลาการเรียนรู้
  • ให้เวลาระบบเพิ่มประสิทธิภาพ: สำหรับแคมเปญที่ใช้การเสนอราคาอัตโนมัติหรือการทดสอบ ฟีเจอร์ใหม่ ให้ละเว้นข้อมูล 1-2 สัปดาห์แรกเพื่อให้โมเดลการเสนอราคา และระดับการเข้าชมปรับเทียบกับการแยกการเข้าชม
  • ใช้การแยกแบบ 50/50: โดยทั่วไปแล้วการแยกการเข้าชมแบบ 50/50 เป็นวิธีที่เร็วที่สุดเพื่อให้ได้ ผลลัพธ์ที่มีนัยสำคัญทางสถิติ
  • กำหนดเวลาล่วงหน้า: ตั้งวันที่เริ่มต้นการทดสอบล่วงหน้า 3-7 วันเพื่อให้มีเวลาสําหรับกระบวนการตรวจสอบและอนุมัติโฆษณา
  • คุณทําการทดสอบได้ครั้งละ 1 รายการเท่านั้นต่อแคมเปญ