Raport dotyczący eksperymentów

Istnieją 2 główne sposoby raportowania standardowych eksperymentów A/B:

  • Raportowanie bezpośrednie eksperymentu: wysyłaj zapytania do zasobu experiment, aby uzyskać dane. Ta opcja zapewnia dane dotyczące grup kontrolnych i kampanii eksperymentalnych w jednej odpowiedzi, wraz z danymi do porównania statystycznego, takimi jak wzrost i wartości p. To jedyny sposób na generowanie raportów o eksperymentach w ramach kampanii.
  • Raportowanie kampanii: wysyłaj zapytania do zasobu campaign, aby uzyskać dane, i używaj pola campaign.experiment_type do odróżniania kampanii podstawowych od kampanii z eksperymentem. Ta opcja jest dostępna tylko w przypadku eksperymentów, które korzystają z osobnych kampanii kontrolnych i eksperymentalnych, np. eksperymentów zarządzanych przez system.

W przypadku eksperymentów standardowych ten przewodnik skupia się głównie na raportowaniu eksperymentów bezpośrednich, które jest zgodne ze wszystkimi typami eksperymentów obsługującymi raportowanie. W przypadku badań pomiaru wzrostu możesz też raportować Wyniki marki, Zwiększenie liczby konwersji i wzrost liczby wyszukiwań, korzystając z dedykowanych zasobów pomiaru wzrostu.

Raportowanie eksperymentów bezpośrednich

Możesz bezpośrednio wysyłać zapytania do zasobu experiment, aby pobierać wskaźniki skuteczności i porównania statystyczne między grupą kontrolną a kampanią eksperymentalną.

Dane i istotność statystyczna

W przypadku podstawowych danych, takich jak kliknięcia, wyświetlenia, koszt, konwersje i wartość konwersji, zasób experiment podaje w tym samym wierszu zarówno dane dotyczące grupy eksperymentalnej (np. metrics.clicks), jak i dane dotyczące grupy kontrolnej (np. metrics.control_clicks).

Zawiera też pola, które pomagają ocenić istotność statystyczną różnic między grupami:

  • metrics.*_p_value: prawdopodobieństwo, że zaobserwowane wyniki wystąpiłyby, gdyby eksperyment nie miał rzeczywistego wpływu na dane. Niższa wartość p oznacza wyższą istotność statystyczną.
  • metrics.*_point_estimate: szacowany procentowy wzrost (dodatni lub ujemny) danego wskaźnika w kampanii eksperymentalnej w porównaniu z kampanią kontrolną. Wraz z wartością margin_of_error opisują przedział ufności z określonym poziomem ufności dla szacowanej różnicy. Szacowana wartość to (grupa eksperymentalna / grupa kontrolna – 1). Estymacja punktowa to środek przedziału ufności.
  • metrics.*_margin_of_error: promień przedziału ufności, którego środkiem jest point_estimate. Jest on obliczany dla określonego poziomu ufności, który zależy od typu eksperymentu.

W zasobie experiment obsługiwane są te pola danych podstawowych, w tym wartość grupy eksperymentalnej, wartość grupy kontrolnej i wymienione wcześniej pola statystyk:

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

W przypadku konwersji pola statystyczne są dostępne w tych polach absolute_change, a nie jako wartości względne:

Aby uzyskać pomoc w tworzeniu prawidłowych zapytań dotyczących zasobu experiment, użyj narzędzia Kreator zapytań Google Ads.

Przykładowe zapytanie

To zapytanie GAQL pobiera kluczowe dane eksperymentu:

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

Interpretowanie wyników

Aby określić, czy eksperyment przyniósł istotne statystycznie wyniki, możesz użyć pól wartości p, estymacji punktowej i zakresu błędu. Jeśli na przykład wartość conversions_absolute_change_p_value jest poniżej wybranego progu (np. 0.05 dla przedziału ufności 95%), a różnica conversions_absolute_change_point_estimate – conversions_absolute_change_margin_of_error jest większa od zera, kampania eksperymentalna uzyskuje znacznie lepsze wyniki niż kampania kontrolna pod względem konwersji.

Oto fragment kodu w Pythonie, który pokazuje, jak oceniać wyniki na podstawie wartości p i szacunkowego wzrostu:

Java

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
      

Perl

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

curl

Zalety w porównaniu z raportami o kampaniach

Raportowanie eksperymentów bezpośrednich ma kilka zalet w porównaniu z osobnym wysyłaniem zapytań do raportów kampanii:

  1. Scentralizowane dane: pobieraj dane dotyczące grupy kontrolnej i eksperymentalnej w jednym wierszu.
  2. Dane dotyczące ufności statystycznej: zawierają obliczone wartości p, szacunki punktowe i marginesy błędu.
  3. Wydajność: nie musisz ręcznie łączyć ani porównywać wyników z wielu raportów.
  4. Obsługa eksperymentów w ramach kampanii: to jedyny sposób na porównanie grupy kontrolnej z grupą eksperymentalną w przypadku eksperymentów w ramach kampanii, w których ruch jest dzielony w obrębie jednej kampanii.

Raportowanie dotyczące kampanii

W przypadku eksperymentów, które tworzą oddzielne kampanie eksperymentalne (np. SEARCH_CUSTOM), możesz wysłać zapytanie do zasobu campaign i użyć pola campaign.experiment_type, aby zidentyfikować kampanie BASE (kontrolne) i EXPERIMENT (eksperymentalne). Takie podejście jest przydatne, jeśli chcesz podzielić dane na segmenty na bardziej szczegółowym poziomie (np. według grupy reklam lub słowa kluczowego) lub wyświetlić metadane kampanii niedostępne w zasobie experiment. Wymaga to jednak ręcznego porównywania skuteczności i wykonywania obliczeń statystycznych.

Nie możesz używać raportów na poziomie kampanii do porównywania grup w eksperymentach w ramach kampanii, ponieważ podział ruchu odbywa się wewnętrznie w ramach jednej kampanii. Zapytanie do campaign dotyczące eksperymentu w ramach kampanii zwraca tylko zagregowane sumy.

Raportowanie wyników marki

Możesz generować raporty o badaniach wyników marki w interfejsie Google Ads API, korzystając ze specjalnych zasobów do pomiaru wyników marki.

Zasoby i widoki podziału dotyczące Wyników marki

Wyślij zapytanie do zasobu LiftMeasurementFlight, aby pobrać wyniki badania Wyników marki na poziomie okresu wyświetlania, w tym zakresy dat okresu wyświetlania (start_date i end_date) w strefie czasowej klienta.

Aby przeanalizować dane dotyczące Wyników marki w różnych wymiarach segmentów, prześlij zapytanie o odpowiednie zasoby podziału:

Typ wyliczeniowy BrandLiftMeasurementType określa typ pomiaru w badaniu, np. świadomość marki lub rozpoznawalność reklamy.

Przykładowe zapytania dotyczące Wyników marki

Metadane i statystyki wzrostu znajdują się w osobnych zasobach, dlatego zapytania o szczegóły i statystyki skuteczności wymagają osobnych zapytań GAQL.

Zapytanie o szczegóły lotu

Aby pobrać metadane dotyczące serii pomiarów wyników marki, takie jak jej stan, typ pomiaru i zaplanowane daty, wyślij zapytanie do zasobu 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

Zapytanie o statystyki

Aby pobrać dane dotyczące Wyników marki, prześlij zapytanie do odpowiedniego zasobu podziału (lub ogólnej konfiguracji badania w LiftMeasurementConfig). Na przykład to zapytanie pobiera dane dotyczące Wyników marki z LiftMeasurementCampaign z podziałem na kampanie:

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

Raporty dotyczące zwiększenia liczby konwersji

Przyrostowy wpływ reklam na konwersje możesz mierzyć za pomocą raportów o zwiększeniu liczby konwersji w interfejsie Google Ads API.

Konfiguracja i dane Zwiększenia liczby konwersji

Wyślij zapytanie do zasobu LiftMeasurementConfig, aby pobrać konfiguracje badania Zwiększenie liczby konwersji i dane o skuteczności.

Zasób udostępnia dane dotyczące Zwiększenia liczby konwersji, które umożliwiają ocenę przyrostowej skuteczności:

Raporty dotyczące zwiększenia liczby konwersji umożliwiają też podział na segmenty według działań powodujących konwersję oraz pobieranie szczegółów połączonych kampanii, szczegółów eksperymentów i celów konwersji.

Od v26 możesz sprawdzać konfigurację pomiaru wyników marki powiązaną z kampanią bezpośrednio w zasobie campaign za pomocą Campaign.lift_measurement_config. Dzięki temu nie trzeba osobno porównywać danych z różnych kanałów zasobu LiftMeasurementConfig:

SELECT
  campaign.id,
  campaign.lift_measurement_config
FROM campaign
WHERE campaign.id = CAMPAIGN_ID

Zwrócone pole lift_measurement_config zawiera nazwę zasobu w formacie customers/{customer_id}/liftMeasurementConfigs/{lift_measurement_config_id}.

Uwaga: jeśli w kampanii przeprowadzono wiele eksperymentów dotyczących wzrostu, lift_measurement_config zawiera nazwę zasobu ostatnio połączonej konfiguracji (aktywnej lub nieaktywnej).

Przykładowe zapytanie dotyczące zwiększenia liczby konwersji

Podane niżej zapytanie GAQL pobiera konfiguracje Zwiększenia liczby konwersji i kluczowe wskaźniki skuteczności. Pamiętaj, że segments.conversion_lift_start_date i segments.conversion_lift_end_date to pola INT64 sformatowane jako 8-cyfrowe liczby całkowite bez cudzysłowów w formacie YYYYMMDD (np. 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

Raportowanie wzrostu liczby wyszukiwań

Wzrost liczby bezpłatnych wyników wyszukiwania wywołany przez kampanie reklamowe możesz mierzyć za pomocą raportów wzrostu liczby wyszukiwań w interfejsie Google Ads API. Wzrost liczby wyszukiwań określa ilościowo różnicę w zachowaniach związanych z wyszukiwaniem Twojej marki lub Twoich produktów między użytkownikami, którzy widzieli Twoje reklamy, a grupą kontrolną, która ich nie widziała.

Zasoby i segmentacja wzrostu liczby wyszukiwań

Wyślij zapytanie do zasobu SearchLiftKeywordBundle, aby pobrać szczegółowe informacje o grupach słów kluczowych skonfigurowanych na potrzeby badań wzrostu liczby wyszukiwań. SearchLiftKeywordBundle jest tylko do odczytu w interfejsie API (wszystkie pola są OUTPUT_ONLY), a pakiety słów kluczowych są konfigurowane w interfejsie Google Ads lub przez przedstawicieli Google / Global Product Solutions (GPS). Pola, które można wyszukiwać w GAQL, to resource_name, search_lift_keyword_bundle_id, source (SearchLiftMatchingInfoSource) i status (SearchLiftKeywordBundleStatus) (powtarzanego pola keywords nie można wybrać w zapytaniach GAQL).

Aby pobrać dane dotyczące wzrostu liczby wyszukiwań i ogólne konfiguracje badań, wyślij zapytanie do zasobu LiftMeasurementConfig.

Skuteczność wzrostu liczby wyszukiwań możesz dzielić na segmenty według tych wymiarów:

  • segments.search_lift_keyword_bundle: segmentowanie według nazwy zasobu pakietu słów kluczowych. Zgodne z segments.search_property, segments.date i segmentami demograficznymi (segments.device, segments.age_range i segments.gender).
  • segments.search_property: segmentuj według usługi wyszukiwania, w której nastąpiło wyszukiwanie, zdefiniowanej przez SearchLiftSearchProperty (np. wyszukiwarka Google lub YouTube). Pamiętaj, że segments.search_property jest zgodny tylko z segments.search_lift_keyword_bundle i segments.date. Łączenie segments.search_property z segmentami demograficznymi (segments.device, segments.age_range lub segments.gender) nie jest obsługiwane i powoduje niepowodzenie weryfikacji zapytania do interfejsu API.
  • Segmenty demograficzne i daty: segments.device, segments.age_range, segments.gender i segments.date.

Dane dotyczące wzrostu liczby wyszukiwań

Zasób LiftMeasurementConfig udostępnia dane dotyczące wzrostu liczby wyszukiwań, które umożliwiają ocenę zmian w zachowaniach związanych z wyszukiwaniem:

Gdy wzrost jest statystycznie dodatni, raportowane są te znormalizowane dane przyrostowe wraz z odpowiadającymi im dolnymi i górnymi granicami przedziału ufności na poziomie 90% (*_p90_lower_bound i *_p90_upper_bound):

Przykładowe zapytania dotyczące wzrostu liczby wyszukiwań

Podane niżej zapytania GAQL pokazują, jak pobierać pakiety słów kluczowych i wskaźniki skuteczności dotyczące wzrostu liczby wyszukiwań.

Zapytanie dotyczące grupy słów kluczowych

Aby pobrać grupy słów kluczowych skonfigurowane na potrzeby pomiarów wzrostu liczby wyszukiwań:

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

Zapytanie dotyczące wskaźników

Wartości search_lift_keyword_bundle.resource_name pobrane w zapytaniu o pakiet słów kluczowych odpowiadają wartościom zwracanym w segments.search_lift_keyword_bundle w poniższym zapytaniu. Aby znaleźć CONFIG_ID dla swojego badania, wyślij zapytanie do lift_measurement_config (na przykład SELECT lift_measurement_config.lift_measurement_config_id, lift_measurement_config.name FROM lift_measurement_config).

Aby pobrać dane dotyczące wzrostu liczby wyszukiwań podzielone według pakietu słów kluczowych i usługi wyszukiwania:

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

Sprawdzone metody

Te sprawdzone metody dotyczą standardowych eksperymentów A/B (takich jak eksperymenty z kampanią i eksperymenty w ramach kampanii). Badania pomiaru wzrostu (wyników marki, zwiększenia liczby konwersji i wzrostu liczby wyszukiwań) korzystają z konfiguracji specyficznych dla danego badania i raportują 90-procentowe przedziały ufności (*_p90_lower_bound i *_p90_upper_bound), a nie 95-procentowy próg ufności.

  • Wybierz odpowiedni poziom ufności: ustawienie niższego progu wartości p może szybciej dostarczyć wskazówek kierunkowych, zwłaszcza przy mniejszych budżetach lub mniejszej liczbie konwersji. Poziom ufności wynoszący 95% (wartość p <= 0,05) jest uważany za standard akademicki i może być lepszy do uzyskania dokładniejszych wyników w dłuższym okresie.
  • Prowadź eksperymenty przez wystarczająco długi czas: prowadź eksperymenty przez co najmniej 4 tygodnie, aby uwzględnić tygodniowe cykle skuteczności, opóźnienia konwersji i okresy nauki.
  • Daj czas na rozruch: w przypadku kampanii korzystających z automatycznego określania stawek lub testujących nowe funkcje nie bierz pod uwagę danych z pierwszych 1–2 tygodni, aby dać czas modelom określania stawek i poziomom ruchu na ponowne skalibrowanie pod kątem podziału.
  • Używaj podziału 50/50: podział ruchu w proporcjach 50/50 jest zwykle najszybszym sposobem na uzyskanie istotnych statystycznie wyników.
  • Zaplanuj z wyprzedzeniem: ustaw datę rozpoczęcia eksperymentu na 3–7 dni do przodu, aby dać czas na sprawdzenie i zatwierdzenie reklam.