گزارش آزمایش‌ها

دو روش اصلی برای گزارش‌دهی درباره آزمایش‌های استاندارد A/B وجود دارد:

  • گزارش‌دهی آزمایش مستقیم: منبع experiment را برای سنجه‌ها پُرسمان کنید. این گزینه سنجه‌های مربوط به شاخه‌های کنترل و درمان را در یک پاسخ واحد، همراه با داده‌های مقایسه آماری مانند بهبود و مقادیر p ارائه می‌دهد. این تنها راه گزارش دادن درباره آزمایش‌های درون‌پویشی است.
  • گزارش‌دهی پویش: منبع campaign را برای سنجه‌ها پُرسمان کنید و از campaign.experiment_type برای تشخیص پویش‌های پایه و آزمایشی استفاده کنید. این گزینه فقط برای آزمایش‌هایی دردسترس است که از پویش‌های کنترل و آزمایش جداگانه استفاده می‌کنند، مثل آزمایش‌های مدیریت‌شده توسط سیستم.

برای آزمایش‌های استاندارد، این راهنما عمدتاً بر گزارش‌دهی آزمایش مستقیم تمرکز دارد که با همه انواع آزمایش‌هایی که از گزارش‌دهی پشتیبانی می‌کنند سازگار است. برای مطالعات اندازه‌گیری بهینه‌گر، می‌توانید بااستفاده از منابع اختصاصی اندازه‌گیری بهینه‌گر، درباره بهینه‌گر نمانام، بهینه‌گر تبدیل، و بهینه‌گر جستجو نیز گزارش دهید.

گزارش‌دهی آزمایش مستقیم

می‌توانید مستقیماً از منبع experiment پرسمان کنید تا سنجه‌های عملکرد و مقایسه‌های آماری بین بازوهای کنترل و درمان را بازیابی کنید.

سنجه‌ها و معناداری آماری

برای سنجه‌های اصلی مانند کلیک‌ها، ظهورها، هزینه، تبدیل‌ها، و مقدار تبدیل، منبع experiment هم سنجه‌های درمان (برای مثال، metrics.clicks) و هم سنجه‌های کنترل (برای مثال، metrics.control_clicks) را در همان ردیف ارائه می‌دهد.

همچنین فیلدهایی را برای کمک به شما در ارزیابی معناداری آماری هرگونه تفاوت بین شاخه‌ها ارائه می‌دهد:

  • metrics.*_p_value: احتمال اینکه نتایج مشاهده‌شده درصورت عدم تأثیر واقعی آزمایش بر سنجه رخ دهد. مقدار p کمتر نشان‌دهنده معناداری آماری بالاتر است.
  • metrics.*_point_estimate: درصد تخمینی بهینه‌گر (مثبت یا منفی) در سنجه ارائه‌شده برای بازوی درمان درمقایسه با بازوی کنترل. این مقدار به‌همراه margin_of_error بازه اطمینانی را با سطح اطمینان تجویز‌شده برای تفاوت تخمین‌زده‌شده توصیف می‌کند. مقدار تخمینی (تیمار / کنترل - ۱) است. برآورد نقطه‌ای مرکز بازه اطمینان است.
  • ‫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 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 برای اطمینان ۹۵٪) و conversions_absolute_change_point_estimate - conversions_absolute_change_margin_of_error بیشتر از صفر باشد، شاخه درمان ازنظر تبدیل‌ها عملکرد به‌طور قابل‌توجهی بهتری نسبت به شاخه کنترل دارد.

در اینجا یک قطعه کد Python آورده شده است که نحوه ارزیابی نتایج را براساس مقدار p و برآوردهای بهبود نشان می‌دهد:

جاوا

private void evaluateExperiment(
    GoogleAdsClient googleAdsClient, long customerId, GoogleAdsRow row) {
  Metrics metrics = row.getMetrics();
  String experimentResourceName = row.getExperiment().getResourceName();

  // 1. Evaluate conversion success as a primary success signal if available.
  // - 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.
  double convPValue = metrics.getConversionsAbsoluteChangePValue();
  double convLift = metrics.getConversionsAbsoluteChangePointEstimate();
  double convError = metrics.getConversionsAbsoluteChangeMarginOfError();
  double convLowerBound = convLift - convError;

  if (convPValue <= P_VALUE_THRESHOLD) {
    if (convLowerBound > 0) {
      System.out.printf(
          "Significant Success: Conversions increased. Even at the lower bound, the lift is %.2f."
              + " Promoting changes.%n",
          convLowerBound);
      promoteExperiment(googleAdsClient, customerId, experimentResourceName);
      return;
    } else if ((convLift + convError) < 0) {
      System.out.printf(
          "Significant Decline: Even the upper bound (%.2f) is below zero. Ending experiment.%n",
          convLift + convError);
      endExperiment(googleAdsClient, customerId, experimentResourceName);
      return;
    }
  }

  // 2. Fall back to evaluating click metrics if conversions are inconclusive.
  double clickPValue = metrics.getClicksPValue();
  double clickLift = metrics.getClicksPointEstimate();
  double clickError = metrics.getClicksMarginOfError();
  double clickLowerBound = clickLift - clickError;

  if (clickPValue <= P_VALUE_THRESHOLD && clickLowerBound > 0) {
    System.out.printf("Click volume is significantly up (+%.1f%%).%n", clickLift * 100);

    // Graduation is only supported for separate campaign experiments, not
    // intra-campaign experiments where there is no separate treatment campaign.
    ExperimentType experimentType = row.getExperiment().getType();
    if (experimentType != ExperimentType.ADOPT_BROAD_MATCH_KEYWORDS
        && experimentType != ExperimentType.ADOPT_AI_MAX) {
      System.out.println("Graduating treatment campaign for further manual analysis.");
      graduateExperiment(googleAdsClient, customerId, experimentResourceName);
    } else {
      System.out.println(
          "Intra-campaign trial detected: graduation is not supported. Continuing to run the"
              + " experiment to gather more conversion data.");
    }
  } else {
    // 3. Print status if no action was taken.
    System.out.printf(
        "Inconclusive: No significant lift in Conversions (p=%.2f) or Clicks (p=%.2f). Current"
            + " estimated lift: %.2f +/- %.2f. Allowing the experiment to continue running.%n",
        convPValue, clickPValue, convLift, convError);
  }
}

      

C#‎

private static void EvaluateExperiment(GoogleAdsClient client, long customerId, GoogleAdsRow row)
{
    // This function evaluates performance metrics and immediately takes action
    // to update the experiment's status (promote, end, or graduate) if
    // statistical significance thresholds are met.
    var metrics = row.Metrics;
    string experimentResourceName = row.Experiment.ResourceName;

    bool hasConvMetrics = metrics.HasConversionsAbsoluteChangePValue
        && metrics.HasConversionsAbsoluteChangePointEstimate
        && metrics.HasConversionsAbsoluteChangeMarginOfError;

    bool hasClickMetrics = metrics.HasClicksPValue
        && metrics.HasClicksPointEstimate
        && metrics.HasClicksMarginOfError;

    // 1. Evaluate conversion success as a primary success signal if available.
    // - 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.
    if (hasConvMetrics)
    {
        double convPValue = metrics.ConversionsAbsoluteChangePValue;
        double convLift = metrics.ConversionsAbsoluteChangePointEstimate;
        double convError = metrics.ConversionsAbsoluteChangeMarginOfError;
        double convLowerBound = convLift - convError;

        if (convPValue <= P_VALUE_THRESHOLD)
        {
            if (convLowerBound > 0)
            {
                Console.WriteLine(
                    $"Significant Success: Conversions increased. Even at the lower" +
                    $" bound, the lift is {convLowerBound:F2}. Promoting changes.");
                PromoteExperiment(client, customerId, experimentResourceName);
                return;
            }
            else if ((convLift + convError) < 0)
            {
                Console.WriteLine(
                    $"Significant Decline: Even the upper bound ({convLift + convError:F2}) " +
                    $"is below zero. Ending experiment.");
                EndExperiment(client, customerId, experimentResourceName);
                return;
            }
        }
    }

    // 2. Evaluate click volume as a secondary signal.
    // This is helpful as an early indicator or for lower-volume accounts.
    if (hasClickMetrics)
    {
        double clickPValue = metrics.ClicksPValue;
        double clickLift = metrics.ClicksPointEstimate;
        double clickError = metrics.ClicksMarginOfError;
        double clickLowerBound = clickLift - clickError;

        if (clickPValue <= P_VALUE_THRESHOLD && clickLowerBound > 0)
        {
            // We have a directional winner: high confidence in more traffic,
            // but not enough data to confirm conversion impact yet.
            Console.WriteLine(
                $"Click volume is significantly up (+{clickLift * 100:F1}%).");

            // Graduation is only supported for separate campaign experiments, not
            // intra-campaign experiments where there is no separate treatment campaign.
            if (row.Experiment.Type != ExperimentType.AdoptBroadMatchKeywords
                && row.Experiment.Type != ExperimentType.AdoptAiMax)
            {
                Console.WriteLine("Graduating treatment campaign for further manual analysis.");
                GraduateExperiment(client, customerId, experimentResourceName);
            }
            else
            {
                Console.WriteLine(
                    "Intra-campaign trial detected: graduation is not supported. " +
                    "Continuing to run the experiment to gather more conversion data.");
            }
            return;
        }
    }

    // 3. Print status if no action was taken.
    if (hasConvMetrics || hasClickMetrics)
    {
        string convStatus = hasConvMetrics
            ? $"Conversions (p={metrics.ConversionsAbsoluteChangePValue:F2}, " +
              $"lift={metrics.ConversionsAbsoluteChangePointEstimate:F2} +/- " +
              $"{metrics.ConversionsAbsoluteChangeMarginOfError:F2})"
            : "Conversions (not populated)";

        string clickStatus = hasClickMetrics
            ? $"Clicks (p={metrics.ClicksPValue:F2}, " +
              $"lift={metrics.ClicksPointEstimate:F2} +/- " +
              $"{metrics.ClicksMarginOfError:F2})"
            : "Clicks (not populated)";

        Console.WriteLine(
            $"Inconclusive: No significant action taken. {convStatus}, {clickStatus}. " +
            "Allowing the experiment to continue running.");
    }
    else
    {
        Console.WriteLine(
            "Conversion and click performance metrics are not yet populated. " +
            "Allowing the experiment to continue running.");
    }
}
      

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 and updates it accordingly
    (for example, promotes, ends, or graduates).

    Checks conversion and click metrics against statistical significance thresholds
    to determine the appropriate action to take on the experiment.

    Args:
        client: an initialized GoogleAdsClient instance.
        customer_id: a client customer ID.
        row: a GoogleAdsRow containing the experiment and metrics.
    """
    # This function evaluates performance metrics and immediately takes action
    # to update the experiment's status (promote, end, or graduate) if
    # statistical significance thresholds are met.
    metrics = row.metrics
    experiment_resource_name = row.experiment.resource_name

    has_conv_metrics = (
        "conversions_absolute_change_p_value" in metrics
        and "conversions_absolute_change_point_estimate" in metrics
        and "conversions_absolute_change_margin_of_error" in metrics
    )
    has_click_metrics = (
        "clicks_p_value" in metrics
        and "clicks_point_estimate" in metrics
        and "clicks_margin_of_error" in metrics
    )

    # 1. Evaluate conversion success as a primary success signal if available.
    # - 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.
    if has_conv_metrics:
        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}%).")

            # Graduation is only supported for separate campaign experiments, not
            # intra-campaign experiments where there is no separate treatment campaign.
            experiment_type_name = row.experiment.type_.name
            if (
                experiment_type_name != "ADOPT_BROAD_MATCH_KEYWORDS"
                and experiment_type_name != "ADOPT_AI_MAX"
            ):
                print(
                    "Graduating treatment campaign for further manual analysis."
                )
                graduate_experiment(
                    client, customer_id, experiment_resource_name
                )
            else:
                print(
                    "Intra-campaign trial detected: graduation is not supported. "
                    "Continuing to run the experiment to gather more conversion data."
                )
            return

    # 3. Print status if no action was taken.
    if has_conv_metrics or has_click_metrics:
        conv_status = (
            f"Conversions (p={metrics.conversions_absolute_change_p_value:.2f}, "
            f"lift={metrics.conversions_absolute_change_point_estimate:.2f} +/- "
            f"{metrics.conversions_absolute_change_margin_of_error:.2f})"
            if has_conv_metrics
            else "Conversions (not populated)"
        )
        click_status = (
            f"Clicks (p={metrics.clicks_p_value:.2f}, "
            f"lift={metrics.clicks_point_estimate:.2f} +/- "
            f"{metrics.clicks_margin_of_error:.2f})"
            if has_click_metrics
            else "Clicks (not populated)"
        )
        print(
            f"Inconclusive: No significant action taken. {conv_status}, {click_status}."
            " Allowing the experiment to continue running."
        )
    else:
        print(
            "Conversion and click performance metrics are not yet populated. "
            "Allowing the experiment to continue running."
        )
      

Ruby

def evaluate_experiment(client, customer_id, row)
  # This function evaluates performance metrics and immediately takes action
  # to update the experiment's status (promote, end, or graduate) if
  # statistical significance thresholds are met.
  metrics = row.metrics
  experiment_resource_name = row.experiment.resource_name

  has_conv_metrics = !metrics.nil? &&
                     metrics.has_conversions_absolute_change_p_value? &&
                     metrics.has_conversions_absolute_change_point_estimate? &&
                     metrics.has_conversions_absolute_change_margin_of_error?
  has_click_metrics = !metrics.nil? &&
                      metrics.has_clicks_p_value? &&
                      metrics.has_clicks_point_estimate? &&
                      metrics.has_clicks_margin_of_error?

  # 1. Evaluate conversion success as a primary success signal if available.
  # - 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.
  if has_conv_metrics
    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
        puts sprintf(
          "Significant Success: Conversions increased. Even at the lower " \
          "bound, the lift is %.2f. Promoting changes.",
          conv_lower_bound,
        )
        promote_experiment(client, customer_id, experiment_resource_name)
        return
      elsif (conv_lift + conv_error) < 0
        puts sprintf(
          "Significant Decline: Even the upper bound (%.2f) is below zero. " \
          "Ending experiment.",
          conv_lift + conv_error,
        )
        end_experiment(client, customer_id, experiment_resource_name)
        return
      end
    end
  end

  # 2. Evaluate click volume as a secondary signal.
  # This is helpful as an early indicator or for lower-volume accounts.
  if has_click_metrics
    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 && click_lower_bound > 0
      # We have a directional winner: high confidence in more traffic,
      # but not enough data to confirm conversion impact yet.
      puts sprintf("Click volume is significantly up (+%.1f%%).", click_lift * 100)

      # Graduation is only supported for separate campaign experiments, not
      # intra-campaign experiments where there is no separate treatment campaign.
      experiment_type = row.experiment.type
      if experiment_type != :ADOPT_BROAD_MATCH_KEYWORDS && experiment_type != :ADOPT_AI_MAX
        puts "Graduating treatment campaign for further manual analysis."
        graduate_experiment(client, customer_id, experiment_resource_name)
      else
        puts "Intra-campaign trial detected: graduation is not supported. " \
             "Continuing to run the experiment to gather more conversion data."
      end
      return
    end
  end

  # 3. Print status if no action was taken.
  if has_conv_metrics || has_click_metrics
    conv_status = if has_conv_metrics
      sprintf(
        "Conversions (p=%.2f, lift=%.2f +/- %.2f)",
        metrics.conversions_absolute_change_p_value,
        metrics.conversions_absolute_change_point_estimate,
        metrics.conversions_absolute_change_margin_of_error,
      )
    else
      "Conversions (not populated)"
    end

    click_status = if has_click_metrics
      sprintf(
        "Clicks (p=%.2f, lift=%.2f +/- %.2f)",
        metrics.clicks_p_value,
        metrics.clicks_point_estimate,
        metrics.clicks_margin_of_error,
      )
    else
      "Clicks (not populated)"
    end

    puts "Inconclusive: No significant action taken. #{conv_status}, #{click_status}. " \
         "Allowing the experiment to continue running."
  else
    puts "Conversion and click performance metrics are not yet populated. " \
         "Allowing the experiment to continue running."
  end
end
      

پرل

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 برای آزمایش درون‌پویشی فقط مجموع‌های انبوهشی را برمی‌گرداند.

گزارش‌دهی «بهینه‌گر نمانام»

می‌توانید بااستفاده از منابع سنجش اختصاصی «بهینه‌گر نمانام»، مطالعات «بهینه‌گر نمانام» را در Google Ads API گزارش کنید.

منابع بهینه‌گر نمانام و نماهای تفکیک‌شده

منبع LiftMeasurementFlight را برای بازیابی نتایج مطالعه «بهینه‌گر نمانام» در سطح دسته پرواز، ازجمله محدوده تاریخ دسته پرواز (start_date و end_date) در منطقه زمانی مشتری، پُرسمان کنید.

برای تجزیه‌وتحلیل سنجه‌های «بهینه‌گر نمانام» در ابعاد مختلف بخش، منابع تفکیک مربوطه را پُرسمان کنید:

BrandLiftMeasurementType enum نوع اندازه‌گیری را برای مطالعه مشخص می‌کند، مانند آگاهی از نمانام یا یادآوری آگهی.

نمونه پُرسمان‌های «بهینه‌گر نمانام»

Because flight metadata and lift statistics reside on separate resources, querying flight details and performance statistics requires separate GAQL queries.

پُرسمان جزئیات پرواز

برای بازیابی فراداده‌های یک دوره «بهینه‌گر نمانام» مانند وضعیت، نوع اندازه‌گیری، و تاریخ‌های زمان‌بندی‌شده، منبع LiftMeasurementFlight را پُرسمان کنید:

SELECT
  lift_measurement_flight.lift_measurement_config_id,
  lift_measurement_flight.lift_measurement_flight_id,
  lift_measurement_flight.name,
  lift_measurement_flight.status,
  lift_measurement_flight.lift_type,
  lift_measurement_flight.start_date,
  lift_measurement_flight.end_date
FROM lift_measurement_flight
WHERE lift_measurement_flight.lift_measurement_config_id = CONFIG_ID

پُرسمان آمار

برای بازیابی سنجه‌های «بهینه‌گر نمانام»، منبع تفکیک مناسب (یا پیکربندی کلی مطالعه در LiftMeasurementConfig) را پُرسمان کنید. برای مثال، پُرسمان زیر سنجه‌های «بهینه‌گر نمانام» را که براساس پویش از LiftMeasurementCampaign تفکیک شده‌اند بازیابی می‌کند:

SELECT
  lift_measurement_campaign.lift_measurement_config_id,
  lift_measurement_campaign.campaign,
  metrics.absolute_brand_lift,
  metrics.relative_brand_lift
FROM lift_measurement_campaign
WHERE lift_measurement_campaign.lift_measurement_config_id = CONFIG_ID

گزارش‌دهی بهینه‌گر تبدیل

بااستفاده از گزارش‌دهی «بهینه‌گر تبدیل» در Google Ads API، می‌توانید تأثیر افزایشی آگهی‌هایتان را بر تبدیل‌ها اندازه‌گیری کنید.

پیکربندی و سنجه‌های «بهینه‌گر تبدیل»

برای بازیابی پیکربندی‌های مطالعه «بهینه‌گر تبدیل» و داده‌های عملکرد، منبع LiftMeasurementConfig را پُرسمان کنید.

این منبع سنجه‌های «بهینه‌گر تبدیل» را برای ارزیابی عملکرد افزایشی ارائه می‌دهد:

گزارش‌دهی «بهینه‌گر تبدیل» همچنین امکان بخش‌بندی براساس کنش‌های تبدیل و بازیابی جزئیات پویش پیوندشده، جزئیات آزمایش، و اهداف تبدیل را فراهم می‌کند.

نمونه پُرسمان بهینه‌گر تبدیل

پرس‌وجوی GAQL زیر پیکربندی‌های «بهینه‌گر تبدیل» و سنجه‌های عملکرد کلیدی را بازیابی می‌کند. توجه داشته باشید که segments.conversion_lift_start_date و segments.conversion_lift_end_date فیلدهای INT64 هستند که به‌صورت عدد صحیح ۸ رقمی بدون نقل‌قول در قالب YYYYMMDD قالب‌بندی شده‌اند (برای مثال، 20260501):

SELECT
  lift_measurement_config.lift_measurement_config_id,
  segments.conversion_lift_start_date,
  segments.conversion_lift_end_date,
  segments.conversion_lift_included_conversion_action_types,
  metrics.conversion_lift_baseline_conversions,
  metrics.conversion_lift_exposed_conversions,
  metrics.incremental_conversions,
  metrics.cost_per_incremental_conversion,
  metrics.relative_conversion_lift,
  metrics.incremental_conversion_value,
  metrics.relative_conversion_value_lift
FROM lift_measurement_config
WHERE segments.conversion_lift_start_date = YYYYMMDD
  AND segments.conversion_lift_end_date = YYYYMMDD
  AND lift_measurement_config.lift_measurement_config_id = CONFIG_ID

گزارش‌دهی «بهینه‌گر جستجو»

بااستفاده از گزارش «بهینه‌گر جستجو» در Google Ads API می‌توانید افزایش حجم پرسمان جستجوی طبیعی را که از پویش‌های آگهی شما ناشی می‌شود اندازه‌گیری کنید. «بهینه‌گر جستجو» تفاوت در رفتار جستجو برای نمانام یا محصولات شما را بین کاربرانی که درمعرض آگهی‌هایتان قرار گرفته‌اند و گروه شاهد که درمعرض قرار نگرفته‌اند به‌صورت کمی بیان می‌کند.

منابع و بخش‌بندی «بهینه‌گر جستجو»

منبع SearchLiftKeywordBundle را پرسمان کنید تا جزئیات مربوط به دسته‌های کلیدواژه پیکربندی‌شده برای مطالعات «بهینه‌گر جستجو» را بازیابی کنید. SearchLiftKeywordBundle در API فقط خواندنی است (همه فیلدها OUTPUT_ONLY هستند)، و دسته‌های کلیدواژه در واسط کاربری Google Ads یا توسط نمایندگان Google / «راه‌حل‌های جهانی محصول» (GPS) پیکربندی می‌شوند. فیلدهای قابل‌پرس‌وجو در GAQL عبارت‌اند از resource_name،‏ search_lift_keyword_bundle_id،‏ source (SearchLiftMatchingInfoSource)، و status (SearchLiftKeywordBundleStatus) (فیلد تکراری keywords در پُرسمان‌های GAQL قابل‌انتخاب نیست).

برای بازیابی سنجه‌های «بهینه‌گر جستجو» و پیکربندی‌های کلی مطالعه، منبع LiftMeasurementConfig را پُرسمان کنید.

می‌توانید عملکرد «بهینه‌گر جستجو» را بااستفاده از ابعاد زیر بخش‌بندی کنید:

  • segments.search_lift_keyword_bundle: بخش‌بندی براساس نام منبع دسته کلیدواژه. سازگار با segments.search_property، segments.date، و بخش‌های جمعیت‌شناختی (segments.device، segments.age_range، و segments.gender).
  • segments.search_property: بخش‌بندی براساس دارایی جستجویی که جستجو در آن انجام شده است، که با SearchLiftSearchProperty تعریف می‌شود (مانند «جستجوی Google» یا YouTube). توجه داشته باشید که segments.search_property فقط با segments.search_lift_keyword_bundle و segments.date سازگار است؛ ترکیب کردن segments.search_property با بخش‌های جمعیت‌شناختی (segments.device، segments.age_range، یا segments.gender) پشتیبانی نمی‌شود و اعتبارسنجی پُرسمان میانای برنامه‌سازی کاربردی را ناموفق می‌کند.
  • بخش‌های جمعیت‌شناختی و تاریخ: segments.device، segments.age_range، segments.gender، و segments.date.

سنجه‌های بهینه‌گر جستجو

منبع LiftMeasurementConfig سنجه‌های «بهینه‌گر جستجو» را برای ارزیابی تغییرات رفتار جستجو ارائه می‌دهد:

  • metrics.relative_search_lift: تفاوت در حجم پرسمان جستجو بین گروه‌های درمعرض‌بوده و شاهد، که به‌صورت کسری از پرسمان‌های جستجو در گروه شاهد بیان می‌شود.
  • metrics.relative_search_lift_p90_lower_bound و metrics.relative_search_lift_p90_upper_bound: حدود پایین و بالای بازه اطمینان ۹۰٪ برای بهینه‌گر جستجوی نسبی.
  • metrics.incremental_searches_p_value: مقدار p برای جستجوهای افزایشی، که نشان‌دهنده احتمال آماری است که افزایش مشاهده‌شده در پرسمان‌های جستجو به‌طور تصادفی رخ داده است.
  • metrics.search_lift_cost_micros: هزینه کل (به میکرو) ظهورهای آگهی ارائه‌شده برای این بخش اندازه‌گیری «بهینه‌گر جستجو».
  • metrics.search_lift_impressions: تعداد کل ظهورهای آگهی ارائه‌شده برای این بخش اندازه‌گیری «بهینه‌گر جستجو».

سنجه‌های افزایشی نرمال‌شده زیر—همراه با حدود بالا و پایین بازه اطمینان ۹۰٪ مربوطه (*_p90_lower_bound و *_p90_upper_bound)—وقتی بهینه‌گر ازنظر آماری مثبت باشد گزارش می‌شوند:

نمونه پُرسمان‌های «بهینه‌گر جستجو»

پُرسمان‌های GAQL زیر نشان می‌دهند که چگونه می‌توان دسته‌های کلیدواژه و سنجه‌های عملکرد «بهینه‌گر جستجو» را بازیابی کرد.

پرسمان بسته کلیدواژه

برای بازیابی دسته‌های کلیدواژه پیکربندی‌شده برای اندازه‌گیری‌های «بهینه‌گر جستجو»:

SELECT
  search_lift_keyword_bundle.resource_name,
  search_lift_keyword_bundle.search_lift_keyword_bundle_id,
  search_lift_keyword_bundle.source,
  search_lift_keyword_bundle.status
FROM search_lift_keyword_bundle

پُرسمان سنجه‌ها

مقادیر search_lift_keyword_bundle.resource_name بازیابی‌شده در پُرسمان دسته کلیدواژه با مقادیر برگردانده‌شده در segments.search_lift_keyword_bundle در پُرسمان زیر مطابقت دارد. برای پیدا کردن CONFIG_ID برای مطالعه‌تان، lift_measurement_config را پُرسمان کنید (برای مثال، SELECT lift_measurement_config.lift_measurement_config_id, lift_measurement_config.name FROM lift_measurement_config).

برای بازیابی سنجه‌های «بهینه‌گر جستجو» که براساس دسته کلیدواژه و دارایی جستجو بخش‌بندی شده‌اند:

SELECT
  lift_measurement_config.lift_measurement_config_id,
  segments.search_lift_keyword_bundle,
  segments.search_property,
  metrics.relative_search_lift,
  metrics.relative_search_lift_p90_lower_bound,
  metrics.relative_search_lift_p90_upper_bound,
  metrics.incremental_searches_p_value,
  metrics.search_lift_cost_micros,
  metrics.search_lift_impressions,
  metrics.normalized_incremental_searches,
  metrics.normalized_incremental_searches_p90_lower_bound,
  metrics.normalized_incremental_searches_p90_upper_bound
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID

روال‌های مطلوب

روال‌های مطلوب زیر برای آزمایش‌های استاندارد A/B (مثل آزمایش‌های پویش و آزمایش‌های درون‌پویش) اعمال می‌شود. مطالعات اندازه‌گیری بهینه‌گر (بهینه‌گر نمانام، بهینه‌گر تبدیل، و بهینه‌گر جستجو) از پیکربندی‌های مختص مطالعه استفاده می‌کنند و بازه اطمینان ۹۰٪ (*_p90_lower_bound و *_p90_upper_bound) را به‌جای آستانه اطمینان ۹۵٪ گزارش می‌کنند.

  • سطح اطمینان مناسبی را انتخاب کنید: تنظیم آستانه مقدار p پایین‌تر می‌تواند راهنمایی جهت‌دار را سریع‌تر ارائه دهد، به‌ویژه با بودجه‌ها یا حجم‌های تبدیل پایین‌تر. اطمینان ۹۵٪ (مقدار p‏ <= ۰٫۰۵) به‌عنوان استاندارد دانشگاهی درنظر گرفته می‌شود و ممکن است برای نتایج دقیق‌تر در بازه زمانی طولانی‌تر بهتر باشد.
  • آزمایش‌ها را به‌مدت کافی اجرا کنید: آزمایش‌ها را حداقل به‌مدت ۴ هفته اجرا کنید تا چرخه‌های عملکرد هفتگی، تأخیرهای تبدیل، و دوره‌های یادگیری را درنظر بگیرید.
  • زمان کافی برای افزایش تدریجی اختصاص دهید: برای کمپین‌هایی که از پیشنهاد قیمت خودکارسازی‌شده استفاده می‌کنند یا ویژگی‌های جدید را آزمایش می‌کنند، داده‌های ۱ تا ۲ هفته اول را نادیده بگیرید تا مدل‌های پیشنهاد قیمت و سطوح ترافیک زمان کافی برای کالیبره کردن مجدد با تقسیم را داشته باشند.
  • استفاده از توزیع ۵۰/۵۰: توزیع ترافیک ۵۰/۵۰ معمولاً سریع‌ترین راه برای دستیابی به نتایج معنادار ازلحاظ آماری است.
  • ازقبل زمان‌بندی کنید: تاریخ شروع آزمایشتان را ۳ تا ۷ روز بعد تنظیم کنید تا زمان کافی برای فرایندهای بازبینی و تأیید آگهی وجود داشته باشد.