دو روش اصلی برای گزارش آزمایشها وجود دارد:
- گزارش مستقیم آزمایش : منبع
experimentرا برای معیارها جستجو کنید. این گزینه معیارهای مربوط به گروههای کنترل و درمان را در یک پاسخ واحد، همراه با دادههای مقایسه آماری مانند افزایش و مقادیر p ارائه میدهد. این تنها راه برای گزارش آزمایشهای درون کمپین است. - گزارش کمپین : با استفاده از
campaign.experiment_typeبرای تمایز بین کمپینهای پایه و آزمایشی، از منبعcampaignبرای معیارها پرسوجو کنید. این گزینه فقط برای آزمایشهایی که از کمپینهای کنترل و درمان جداگانه استفاده میکنند، مانند آزمایشهای مدیریتشده توسط سیستم، در دسترس است.
این راهنما در درجه اول بر گزارشدهی مستقیم آزمایش تمرکز دارد، که با همه انواع آزمایشهایی که از گزارشدهی پشتیبانی میکنند، سازگار است.
گزارش مستقیم آزمایش
شما میتوانید مستقیماً از منبع 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 زیر در دسترس هستند، نه به عنوان مقادیر نسبی:
-
metrics.conversions_absolute_change_p_value: مقدار p برای فرضیه صفر که آزمایش هیچ تاثیری بر تغییر مطلق تبدیلها ندارد. از ۰ تا ۱ متغیر است. -
metrics.conversions_absolute_change_point_estimate: تخمین نقطهای هنگام تخمین اثر آزمایش بر تغییر مطلق تبدیلها. -
metrics.conversions_absolute_change_margin_of_error: حاشیه خطا هنگام تخمین اثر آزمایش بر تغییر مطلق تبدیلها.
برای کمک به ساخت کوئریهای معتبر برای منبع experiment ، از ابزار Google Ads Query Builder استفاده کنید.
پرس و جوی نمونه
کوئری 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 برای اطمینان 95٪) و conversions_absolute_change_point_estimate - conversions_absolute_change_margin_of_error بزرگتر از صفر باشد، نشان میدهد که بازوی درمان از نظر تبدیلها به طور قابل توجهی بهتر از بازوی کنترل عمل میکند.
در اینجا یک قطعه کد پایتون وجود دارد که نحوه ارزیابی نتایج بر اساس تخمینهای p-value و lift را نشان میدهد:
جاوا
This example is not yet available in Java; you can take a look at the other languages.
سی شارپ
This example is not yet available in C#; you can take a look at the other languages.
پی اچ پی
This example is not yet available in PHP; you can take a look at the other languages.
پایتون
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." )
روبی
This example is not yet available in Ruby; you can take a look at the other languages.
پرل
This example is not yet available in Perl; you can take a look at the other languages.
حلقه زدن
مزایای آن نسبت به گزارش کمپین
گزارشدهی مستقیم آزمایش، مزایای متعددی نسبت به پرسوجوی جداگانه از گزارشهای کمپین ارائه میدهد:
- معیارهای متمرکز : معیارهای کنترل و درمان را در یک ردیف بازیابی کنید.
- دادههای اطمینان آماری : مقادیر p محاسبهشده، تخمینهای نقطهای و حاشیه خطا را ارائه میدهد.
- کارایی : نیاز به ادغام یا مقایسه دستی نتایج چندین گزارش را از بین میبرد.
- پشتیبانی درون کمپینی : این تنها راه برای مقایسه کنترل در مقابل درمان برای آزمایشهای درون کمپینی است، جایی که ترافیک در یک کمپین واحد تقسیم میشود.
گزارش کمپین
برای آزمایشهایی که کمپینهای درمانی جداگانهای ایجاد میکنند (برای مثال، SEARCH_CUSTOM )، میتوانید منبع campaign را جستجو کنید و campaign.experiment_type برای شناسایی کمپینهای BASE (کنترل) و EXPERIMENT (درمان) استفاده کنید. این رویکرد در صورتی مفید است که نیاز به بخشبندی معیارها در سطح جزئیتر (مثلاً بر اساس گروه تبلیغاتی یا کلمه کلیدی) یا مشاهده فرادادههای کمپین که در منبع experiment موجود نیست، داشته باشید. با این حال، مستلزم آن است که شما مقایسههای عملکرد و محاسبات آماری را به صورت دستی انجام دهید.
شما نمیتوانید از گزارشدهی در سطح کمپین برای مقایسهی گروههای مختلف برای آزمایشهای درون کمپینی استفاده کنید، زیرا تقسیم ترافیک به صورت داخلی در یک کمپین واحد اتفاق میافتد. جستجوی campaign برای یک آزمایش درون کمپینی، فقط مجموع کل را برمیگرداند.
بهترین شیوهها
- سطح اطمینان مناسبی را انتخاب کنید : تعیین آستانهی پایینتر برای مقدار p میتواند راهنماییهای جهتدار را سریعتر ارائه دهد، بهویژه با بودجهها یا حجم تبدیل کمتر. اطمینان ۹۵٪ (مقدار p <= ۰.۰۵) به عنوان استاندارد دانشگاهی در نظر گرفته میشود و ممکن است برای نتایج دقیقتر در یک بازه زمانی طولانیتر بهتر باشد.
- آزمایشها را به مدت کافی اجرا کنید : آزمایشها را حداقل به مدت ۴ هفته اجرا کنید تا چرخههای عملکرد هفتگی، تأخیرهای تبدیل و دورههای یادگیری را در نظر بگیرید.
- برای افزایش سرعت، زمان بدهید : برای کمپینهایی که از پیشنهاد قیمت خودکار یا آزمایش ویژگیهای جدید استفاده میکنند، ۱-۲ هفته اول دادهها را نادیده بگیرید تا مدلهای پیشنهاد قیمت و سطوح ترافیک، زمان داشته باشند تا دوباره با تقسیمبندی هماهنگ شوند.
- از تقسیمبندیهای ۵۰/۵۰ استفاده کنید : تقسیمبندی ترافیک ۵۰/۵۰ معمولاً سریعترین راه برای دستیابی به نتایج آماری معنادار است.
- از قبل برنامهریزی کنید : تاریخ شروع آزمایش خود را ۳ تا ۷ روز آینده تنظیم کنید تا زمان کافی برای بررسی و تأیید تبلیغات داشته باشید.
- شما فقط میتوانید در هر زمان معین، یک آزمایش برای هر کمپین اجرا کنید.