캠페인 변경사항과 광고 노출이 실적에 미치는 영향을 평가하려면 Google Ads API에서 실험 및 광고 효과 측정 보고 리소스를 쿼리하세요.
Google Ads API는 표준 A/B 실험을 보고하는 두 가지 방법을 지원합니다.
- 직접 실험 보고:
experiment리소스에서 측정항목을 쿼리합니다. 이 옵션은 상승도 및 p-값과 같은 통계 비교 데이터와 함께 단일 응답으로 대조 부문과 실험 부문의 측정항목을 제공합니다. 직접 실험 보고는 캠페인 내 실험을 보고하는 유일한 방법입니다. - 캠페인 보고:
campaign.experiment_type필드를 사용하여 기본 캠페인과 실험 캠페인을 구분하여campaign리소스에서 측정항목을 쿼리합니다. 이 옵션은 시스템 관리 실험과 같이 별도의 통제 캠페인과 실험 캠페인을 사용하는 실험에만 사용할 수 있습니다.
표준 실험의 경우 이 가이드에서는 주로 보고 가능한 모든 실험 유형을 지원하는 직접 실험 보고에 중점을 둡니다. 광고효과 측정 연구의 경우 광고효과 보고 가이드 또는 이 페이지의 브랜드 광고효과, 전환 상승도(A/B + 전환 상승도 포함), 검색 광고효과 요약 섹션을 참고하세요.
직접 실험 보고서
지원되는 모든 Google Ads API 버전(v23 이상)에서 단일 응답으로 통제 부문과 실험 부문 간의 실적 측정항목과 통계 비교를 검색하려면 experiment 리소스를 직접 쿼리하세요.
측정항목 및 통계적 유의성
클릭수, 노출수, 비용, 전환수, 전환 가치와 같은 핵심 측정항목의 경우 experiment 리소스는 동일한 행에 실험 측정항목(예: metrics.clicks)과 대조 측정항목(예: metrics.control_clicks)을 모두 제공합니다.
또한 experiment 리소스는 부문 간 차이의 통계적 유의성을 평가하는 데 도움이 되는 필드를 제공합니다.
metrics.*_p_value: 실험이 측정항목에 실제 영향을 미치지 않는 경우 측정된 차이만큼 극단적인 결과를 관찰할 확률입니다. p값이 작을수록 통계적 유의성이 높습니다.metrics.*_point_estimate: 대조 부문과 비교하여 실험 부문의 지정된 측정항목에서 예상되는 상승률(양수 또는 음수)입니다. 이 값은metrics.*_margin_of_error필드와 함께 예상 차이에 대해 규정된 신뢰 수준으로 신뢰 구간을 정의합니다. 예상 수량은(treatment / control) - 1이고 점 추정치는 신뢰 구간의 중심입니다.metrics.*_margin_of_error:metrics.*_point_estimate값을 중심으로 하는 신뢰 구간의 반경입니다. API는 실험 유형에 따라 규정된 신뢰 수준에 대해 이 오차 범위를 계산합니다.
experiment 리소스에서는 실험 그룹 값, 통제 그룹 값, 이전에 나열된 통계 필드를 포함하여 다음 핵심 측정항목 필드가 지원됩니다.
clicksimpressionscost_microsconversionscost_per_conversionconversion_valueconversion_value_per_cost
특히 전환의 경우 통계 필드는 상대 값이 아닌 다음 absolute_change 필드를 통해 사용할 수 있습니다.
metrics.conversions_absolute_change_p_value: 실험이 전환 절대 변화에 영향을 미치지 않는다는 귀무가설의 p값입니다. 범위는 0~1입니다.metrics.conversions_absolute_change_point_estimate: 실험이 전환 절대 변화에 미치는 영향을 추정할 때의 점 추정치입니다.metrics.conversions_absolute_change_margin_of_error: 실험이 전환 절대 변화에 미치는 영향을 추정할 때의 오차 범위입니다.
experiment 리소스에 대한 유효한 쿼리를 구성하는 데 도움이 필요하면
Google Ads 쿼리 빌더 도구를 사용하세요.
예시 검색어
다음 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
다음을 바꿉니다.
EXPERIMENT_ID: 실험의 정수 ID입니다(experiment.experiment_id).
결과 해석
p값, 점 추정치, 오차 범위 필드를 사용하여 실험에서 통계적으로 유의미한 결과가 도출되었는지 확인합니다. 예를 들어 metrics.conversions_absolute_change_p_value 측정항목이 선택한 기준점(예: 95% 신뢰도의 경우 0.05)보다 작고 metrics.conversions_absolute_change_point_estimate 측정항목에서 metrics.conversions_absolute_change_margin_of_error 측정항목을 뺀 값이 0보다 크면 실험 부문이 전환 측면에서 대조 부문보다 실적이 훨씬 우수합니다.
다음 코드 예시에서는 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
Perl
This example is not yet available in Perl; you can take a look at the other languages.
curl
캠페인 보고서 대비 이점
직접 실험 보고서는 캠페인 보고서를 별도로 쿼리하는 것에 비해 다음과 같은 몇 가지 이점이 있습니다.
- 중앙 집중식 측정항목: 단일 행에서 대조 부문과 실험 부문의 측정항목을 검색합니다.
- 통계적 신뢰도 데이터: 계산된 p값, 점 추정치, 오차 범위를 제공합니다.
- 효율성: 여러 보고서의 결과를 수동으로 조인하거나 비교할 필요가 없습니다.
- 캠페인 내 지원: 단일 캠페인 내에서 트래픽이 분할되는 캠페인 내 실험에 대한 대조군과 실험군 비교를 지원합니다.
캠페인 보고서
지원되는 모든 Google Ads API 버전(v23 이상)에서 별도의 실험 캠페인(예: SEARCH_CUSTOM)을 만드는 실험의 경우 campaign 리소스를 쿼리하고 campaign.experiment_type 필드를 사용하여 BASE(통제) 및 EXPERIMENT(실험) 캠페인을 식별할 수 있습니다. 이 접근 방식은
측정항목을 더 세분화된 수준(예: 광고 그룹 또는 키워드별)으로 분류하거나
experiment 리소스에서 사용할 수 없는 캠페인 메타데이터를 확인해야 하는 경우에
유용합니다. 하지만 캠페인 보고를 위해서는 실적 비교와 통계 계산을 수동으로 수행해야 합니다.
캠페인 내 실험의 부문을 비교하는 데 캠페인 수준 보고를 사용할 수 없습니다. 트래픽 분할이 단일 캠페인 내에서 내부적으로 발생하기 때문입니다. 캠페인 내 실험에 대해 campaign 리소스를 쿼리하면 집계된 합계만 반환됩니다.
브랜드 광고효과 보고
Google Ads API v25 이상에서는 읽기 전용(OUTPUT_ONLY) LiftMeasurementFlight, LiftMeasurementConfig, 브랜드 광고효과 분석 리소스(LiftMeasurementAgeRange, LiftMeasurementCampaign, LiftMeasurementDevice, LiftMeasurementGender, LiftMeasurementVideo)를 쿼리하여 광고 캠페인이 브랜드 인지도에 미치는 영향을 평가합니다. Google Ads API v27 이상에서는 행 수준 통계 해석을 위해 lift_guidance 필드(lift_guidance.outcome 및 lift_guidance.guidance_message)를 선택할 수도 있습니다.
설문조사 응답 보고 가능성 기준점, 빈 응답(results: []) 진단, 결과 해석, GAQL 쿼리 예시는 광고효과 보고서 가이드의 브랜드 광고효과 보고를 참고하세요.
전환 상승도 보고서
Google Ads API v25 이상에서 전환 상승도 보고서는 LiftMeasurementConfig 리소스의 일일 누적 평가 스냅샷(segments.conversion_lift_start_date 및 segments.conversion_lift_end_date)에서 노출 그룹과 미노출 홀드백 그룹을 비교하여 광고가 전환, 전환 가치, 증분 전환당비용(iCPA), 증분 광고 투자수익(iROAS)에 미치는 증분 영향을 측정합니다. Google Ads API v26 이상에서는 campaign.lift_measurement_config 및 lift_measurement_config.campaigns 필드를 통해 연결된 구성 및 캠페인을 검색할 수도 있으며, Google Ads API v27 이상에서는 행 수준 통계 해석을 위해 lift_measurement_config.lift_guidance를 선택할 수 있습니다.
연구 및 광고 탐색, 누적 스냅샷 기간, 전환 액션 범위(SELECTED 및 ALL), 측정기준 분석, 보고 가능성 기준점, GAQL 쿼리 예시는 광고 효과 보고서 가이드의 전환 상승도 보고를 참고하세요.
A/B + 전환 상승도 보고
Google Ads API v25 이상에서 A/B + 전환 상승도 연구는 2개 부문 experiment(ExperimentArm 리소스 및 experiment.lift_measurement_config 필드를 통해 검색됨)를 LiftMeasurementConfig 리소스의 홀드백 측정과 결합합니다.
segments.experiment_arm 세그먼트와 베이즈 승자 점수 측정항목(metrics.*_winner_score)을 포함하여 각 대안의 인과적 광고효과와 일대일 승자 확률을 평가합니다.
실험 부문 검색, 부문별 및 결합 부문 쿼리, 승자 점수 해석, 다중 연구 일괄 쿼리는 광고효과 보고서 가이드의 A/B + 전환 상승도 보고를 참고하세요.
검색 광고효과 보고
Google Ads API v26 이상에서 검색 광고효과 보고서는 광고 캠페인으로 인해 Google 검색 및 YouTube에서 자연 검색어 수가 얼마나 증가했는지 측정합니다. 구성된 키워드 번들의 경우 SearchLiftKeywordBundle 리소스를 쿼리하고, 상대적이고 정규화된 검색 증분 측정항목의 경우 LiftMeasurementConfig 리소스(Google Ads API v27 이상에서는 lift_measurement_config.lift_guidance 사용)를 쿼리합니다.
검색 광고효과 분류 규칙, 측정항목 정의, GAQL 쿼리 예시는 광고효과 보고서 가이드의 검색 광고효과 보고를 참고하세요.
권장사항
다음 권장사항은 표준 A/B 실험(예: 캠페인 및 캠페인 내 실험)에 적용됩니다. 광고효과 측정 연구(브랜드 광고효과, 전환 상승도, 검색 광고효과)는 연구별 구성을 사용하며 95% 신뢰도 기준점이 아닌 90% 단측 신뢰 경계(*_p90_lower_bound 및 *_p90_upper_bound, p_value <= 0.10와 함께 80% 양측 신뢰 구간을 형성함)를 보고합니다. 광고효과 연구 기준점 및 해석은 광고효과 보고 가이드를 참고하세요.
- 적절한 신뢰도 수준 선택: p-값 기준점을 낮게 설정하면 특히 예산이나 전환수가 적은 경우 방향성 가이드를 더 빠르게 제공할 수 있습니다. 95% 신뢰도(
p_value <= 0.05)는 학술 표준이며 더 긴 기간 동안 더 높은 정밀도를 제공합니다. - 충분한 기간 동안 실험 실행: 주간 실적 주기, 전환 지연, 학습 기간을 고려하여 최소 4주 동안 실험을 실행합니다.
- 초기 최적화 시간 확보: 자동 입찰을 사용하거나 새로운 기능을 테스트하는 캠페인의 경우 입찰 모델과 트래픽 수준이 분할에 맞게 재조정될 수 있도록 처음 1~2주의 데이터는 무시합니다.
- 50/50 분할 사용: 일반적으로 50/50 트래픽 분할이 통계적으로 유의미한 결과를 가장 빠르게 얻을 수 있는 방법입니다.
- 미리 예약: 광고 검토 및 승인 절차에 걸릴 시간을 고려하여 실험 시작일을 3~7일 후로 설정합니다.