Rapports sur les tests

Il existe deux manières principales de créer des rapports sur les tests :

  • Rapports de test directs : interrogez la ressource experiment pour obtenir des métriques. Cette option fournit des métriques pour les groupes de contrôle et de traitement dans une seule réponse, ainsi que des données de comparaison statistique telles que l'augmentation et les valeurs p. Il s'agit de la seule façon de créer des rapports sur les tests intracampagnes.
  • Rapports sur les campagnes : interrogez la ressource campaign pour obtenir des métriques, en utilisant campaign.experiment_type pour faire la distinction entre les campagnes de base et les campagnes tests. Cette option n'est disponible que pour les tests qui utilisent des campagnes de contrôle et de traitement distinctes, comme les tests gérés par le système.

Ce guide se concentre principalement sur les rapports de test directs, qui sont compatibles avec tous les types de tests qui prennent en charge les rapports.

Rapports de test directs

Vous pouvez interroger directement la ressource experiment pour récupérer les métriques de performances et les comparaisons statistiques entre vos groupes de contrôle et de traitement.

Métriques et pertinence statistique

Pour les métriques de base telles que les clics, les impressions, le coût, les conversions et la valeur de conversion, la ressource experiment fournit à la fois des métriques de traitement (par exemple, metrics.clicks) et des métriques de contrôle (par exemple, metrics.control_clicks) sur la même ligne.

Elle fournit également des champs pour vous aider à évaluer la pertinence statistique de toute différence entre les groupes :

  • metrics.*_p_value: probabilité que les résultats observés se produisent si le test n'avait aucun effet réel sur la métrique. Une valeur p inférieure indique une pertinence statistique plus élevée.
  • metrics.*_point_estimate: augmentation estimée en pourcentage (positive ou négative) de la métrique donnée pour le groupe de traitement par rapport au groupe de contrôle. Avec margin_of_error, ils décrivent un intervalle de confiance avec un niveau de confiance prescrit pour la différence estimée. La quantité estimée est (traitement / contrôle - 1). L'estimation ponctuelle est le centre de l'intervalle de confiance.
  • metrics.*_margin_of_error: rayon de l'intervalle de confiance, centré sur point_estimate. Il est calculé pour un niveau de confiance prescrit, qui dépend du type de test.

Les champs de métriques de base suivants sont compatibles avec la ressource experiment, y compris une valeur de groupe de traitement, une valeur de groupe de contrôle et les champs de statistiques listés précédemment :

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

Pour les conversions, en particulier, les champs statistiques sont disponibles via les champs absolute_change suivants, plutôt que sous forme de valeurs relatives :

Pour obtenir de l'aide sur la création de requêtes valides pour la ressource experiment, utilisez l' outil de création de requêtes Google Ads.

Exemple de requête

La requête GAQL suivante récupère les métriques clés d'un test :

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

Interpréter les résultats

Vous pouvez utiliser les champs de valeur p, d'estimation ponctuelle et de marge d'erreur pour déterminer si votre test a généré des résultats statistiquement pertinents. Par exemple, si conversions_absolute_change_p_value est inférieur au seuil que vous avez choisi (par exemple, 0,05 pour une confiance de 95 %) et si conversions_absolute_change_point_estimate - conversions_absolute_change_margin_of_error est supérieur à zéro, cela indique que le groupe de traitement est nettement plus performant que le groupe de contrôle en termes de conversions.

Voici un extrait de code Python qui montre comment évaluer les résultats en fonction de la valeur p et des estimations d'augmentation :

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

Avantages par rapport aux rapports sur les campagnes

Les rapports de test directs offrent plusieurs avantages par rapport à l'interrogation séparée des rapports sur les campagnes :

  1. Métriques centralisées : récupérez les métriques de contrôle et de traitement sur une seule ligne.
  2. Données de confiance statistique : fournit des valeurs p, des estimations ponctuelles et des marges d'erreur calculées.
  3. Efficacité : élimine le besoin de joindre ou de comparer manuellement les résultats de plusieurs rapports.
  4. Compatibilité intracampagne : il s'agit de la seule façon de comparer le contrôle et le traitement pour les tests intracampagnes, où le trafic est réparti au sein d'une seule campagne.

Rapports sur les campagnes

Pour les tests qui créent des campagnes de traitement distinctes (par exemple, SEARCH_CUSTOM), vous pouvez interroger la ressource campaign et utiliser campaign.experiment_type pour identifier les campagnes BASE (contrôle) et EXPERIMENT (traitement). Cette approche est utile si vous devez segmenter les métriques à un niveau plus précis (par exemple, par groupe d'annonces ou par mot clé) ou afficher des métadonnées de campagne non disponibles sur la ressource experiment. Toutefois, vous devez effectuer manuellement les comparaisons de performances et les calculs statistiques.

Vous ne pouvez pas utiliser les rapports au niveau de la campagne pour comparer les groupes pour les tests intracampagnes, car la répartition du trafic s'effectue en interne au sein d'une seule campagne. L'interrogation de campaign pour un test intracampagne ne renvoie que des totaux agrégés.

Bonnes pratiques

  • Sélectionnez un niveau de confiance approprié : la définition d'un seuil de valeur p inférieur peut fournir plus rapidement des conseils directionnels, en particulier avec des budgets ou des volumes de conversion plus faibles. Une confiance de 95 % (valeur p <= 0,05) est considérée comme la norme académique et peut être préférable pour obtenir des résultats plus précis sur une période plus longue.
  • Exécutez les tests suffisamment longtemps : exécutez les tests pendant au moins quatre semaines pour tenir compte des cycles de performances hebdomadaires, des délais de conversion et des périodes d'apprentissage.
  • Laissez le temps de la montée en puissance : pour les campagnes qui utilisent des enchères automatiques ou qui testent de nouvelles fonctionnalités, ignorez les données des une à deux premières semaines pour laisser le temps aux modèles d'enchères et aux niveaux de trafic de se recalibrer sur la répartition.
  • Utilisez des répartitions à 50/50 : une répartition du trafic à 50/50 est généralement le moyen le plus rapide d' obtenir des résultats statistiquement pertinents.
  • Planifiez à l'avance : définissez la date de début de votre test trois à sept jours à l' avance pour laisser le temps aux processus d'examen et d'approbation des annonces.
  • Vous ne pouvez exécuter qu'un seul test par campagne à la fois.