تقرير عن التجارب

هناك طريقتان رئيسيتان لإعداد تقارير عن التجارب:

  • إعداد تقارير مباشرة عن التجربة: يمكنك طلب مقاييس من مصدر experiment. يوفّر هذا الخيار مقاييس لمجموعتَي التجربة والمجموعة الضابطة في ردّ واحد، بالإضافة إلى بيانات المقارنة الإحصائية، مثل التحسّن وقيم الاحتمالية. هذه هي الطريقة الوحيدة لإعداد تقارير عن التجارب داخل الحملة.
  • إعداد تقارير عن الحملات: يمكنك طلب البحث عن مقاييس في مصدر campaign، باستخدام campaign.experiment_type للتمييز بين الحملات الأساسية والحملات التجريبية. لا يتوفّر هذا الخيار إلا للتجارب التي تستخدم حملات ضابطة وتجريبية منفصلة، مثل التجارب التي يديرها النظام.

يركّز هذا الدليل بشكل أساسي على إعداد تقارير التجارب المباشرة، وهي متوافقة مع جميع أنواع التجارب التي تتيح إعداد التقارير.

إعداد تقارير التجارب المباشرة

يمكنك طلب بيانات من مصدر experiment مباشرةً لاسترداد مقاييس الأداء والمقارنات الإحصائية بين المجموعة الضابطة ومجموعة التجربة.

المقاييس والدلالة الإحصائية

بالنسبة إلى المقاييس الأساسية، مثل النقرات ومرّات الظهور والتكلفة والإحالات الناجحة وقيمة الإحالة الناجحة، يوفّر المرجع experiment مقاييس المجموعة التجريبية (مثل metrics.clicks) ومقاييس المجموعة الضابطة (مثل metrics.control_clicks) في الصف نفسه.

وتوفّر أيضًا حقولاً لمساعدتك في تقييم الدلالة الإحصائية لأي فرق بين المجموعات:

  • metrics.*_p_value: هي احتمال حدوث النتائج المرصودة إذا لم يكن للتجربة أي تأثير فعلي في المقياس. تشير القيمة الاحتمالية المنخفضة إلى دلالة إحصائية أعلى.
  • metrics.*_point_estimate: النسبة المئوية المقدَّرة للتحسُّن (إيجابي أو سلبي) في المقياس المحدّد لمجموعة التجربة مقارنةً بالمجموعة الضابطة. ويصفان معًا 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

بالنسبة إلى الإحالات الناجحة تحديدًا، تتوفّر الحقول الإحصائية من خلال حقول absolute_change التالية، وليس كقيم نسبية:

للحصول على مساعدة في إنشاء طلبات بحث صالحة لمصدر experiment، استخدِم أداة أداة إنشاء طلبات البحث في "إعلانات Google".

مثال على طلب البحث

يسترجع طلب البحث التالي في "لغة طلبات البحث في إعلانات Google" المقاييس الرئيسية لتجربة:

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

تفسير النتائج

يمكنك استخدام حقول القيمة الاحتمالية والتقدير النقطي وهامش الخطأ لتحديد ما إذا كانت تجربتك قد حقّقت نتائج ذات دلالة إحصائية. على سبيل المثال، إذا كانت قيمة conversions_absolute_change_p_value أقل من الحدّ الذي اخترته (على سبيل المثال، 0.05 لمستوى ثقة% 95) وكانت قيمة conversions_absolute_change_point_estimate - conversions_absolute_change_margin_of_error أكبر من صفر، يشير ذلك إلى أنّ مجموعة التجربة تحقّق أداءً أفضل بكثير من المجموعة الضابطة من حيث الإحالات الناجحة.

في ما يلي مقتطف من رمز Python يوضّح كيفية تقييم النتائج استنادًا إلى القيمة الاحتمالية < 0x0A وتقديرات التحسّن:

جافا

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 إلى تقديم إرشادات توجيهية بشكل أسرع، خاصةً مع الميزانيات أو أعداد الإحالات الناجحة المنخفضة. يُعدّ مستوى الثقة البالغ% 95 (قيمة p <= 0.05) هو المعيار الأكاديمي، وقد يكون أفضل للحصول على نتائج أكثر دقة على مدى فترة زمنية أطول.
  • إجراء التجارب لمدة كافية: أجْرِ التجارب لمدة 4 أسابيع على الأقل لاحتساب دورات الأداء الأسبوعية والتأخّر في اكتمال الإحالات الناجحة وفترات التعلّم.
  • منح وقت للتحسين: بالنسبة إلى الحملات التي تستخدم عروض الأسعار المبرمَجة أو تختبر ميزات جديدة، تجاهِل البيانات التي تم جمعها خلال الأسبوع الأول أو الأسبوعَين الأولَين لمنح نماذج عروض الأسعار ومستويات الزيارات وقتًا كافيًا لإعادة المعايرة وفقًا للتقسيم.
  • استخدام تقسيمات 50/50: إنّ تقسيم عدد الزيارات بنسبة 50/50 هو بشكل عام أسرع طريقة لتحقيق نتائج ذات دلالة إحصائية.
  • تحديد موعد مسبق: حدِّد تاريخ بدء تجربتك قبل 3 إلى 7 أيام من الموعد الفعلي لمنح الوقت الكافي لعمليات مراجعة الإعلان والموافقة عليه.
  • يمكنك إجراء تجربة واحدة فقط لكل حملة في أي وقت.