انتخاب دو وضعیتی و تحلیل آماری | پیاده سازی در R
اغلب لازم است بین دو وضعیت یا موقعیت، دست به انتخاب بزنیم. این که کدام انتخاب، صحیح و به واقعیت نزدیکتر است، یک امر عقلانی است. ولی اگر با پدیدههای تصادفی سروکار داشته باشیم و لازم باشد احتمال قرارگیری هر شی را در گروه A یا در گروه B برآورد یا مورد آزمون قرار دهیم، احتیاج به یک بررسی آماری داریم. در این نوشتار از مجله فرادرس به بررسی انتخاب دو وضعیتی و تحلیل آماری آن خواهیم پرداخت. البته در این بین از کدهای نوشته شده به زبان R نیز استفاده کرده و در محیط RStudio برنامهها را ایجاد و پس از اجرا، نتایج را مشاهده خواهیم کرد.


البته برای انتخاب یا نسبت دادن هر شی به دو گروه A یا B، الگوریتمهایی وجود دارد. برای آشنایی بیشتر با الگوی یادگیری ماشین به صورت نظارت شده، برای متغیرهای دو وضعیتی بهتر است نوشتارهای دسته بند بیز ساده (Naive Bayes Classifiers) — مفاهیم اولیه و کاربردها و یادگیری ماشین به زبان قضیه بیز، بی نظمی شانون و فلسفه را مطالعه کنید. همچنین خواندن تابع درستنمایی (Likelihood Function) و کاربردهای آن — به زبان ساده و زبان برنامه نویسی R — معرفی و کاربردها نیز خالی از لطف نیست.
انتخاب دو وضعیتی و تحلیل آماری
هدف این مقاله ارائه راهنمایی در مورد چگونگی انجام تجزیه و تحلیل نتایج نمونه آزمایشی A / B با استفاده از R و همچنین ارزیابی نتایج و نتیجهگیری بر اساس تجزیه و تحلیل آماری است. قبل از شروع، بهتر است که مشخص کنیم، منظور از آزمایش A / B چیست و به طور معمول برای چه مواردی استفاده میشود و البته در انتها نیز به برخی از محدودیتهای آن اشاره خواهیم کرد.
تعریف آزمون A / B
آزمون A / B که به عنوان «تست تفکیک» (Split Test) نیز شناخته میشود، یک روش کلی است که به کمک آن محصول یا ویژگی جدیدی را مورد آزمایش قرار میدهند. هدف این است که یک آزمایش قوی طراحی شود و نتایج قابل تکرار داشته باشد تا تصمیمی آگاهانه یا الگویی برای انتخاب یا رد فراهم شود.
فرض کنید با دو صفحه وب (Web Page) مواجه هستیم که باید مشخص کنیم کارایی نوع A بیشتر است یا B. برای مثال باید تشخیص دهیم که این صفحه وب که برای رزرو هتل طراحی شده، با عکس بیشتر جذابیت داشته و بازدید کننده را به خریدار بدل میکند یا خیر.
این صفحه به تعدادی از بازدیدکنندگان، نمایش داده شده و آنها نسبت به یکی از وضعیتهای A یا B رای دادهاند. به طور معمول یكی از دلایل انجام آزمون A / B این است كه اطمینان حاصل كنید، ویژگیهای جدیدی كه برای یک شی در نظر گرفتهاید، میتوانند تاثیری قابل توجهی در جهت تشخیص داشته باشند. برای مثال اگر تغییر قلم در عنوان یک سایت بتواند آن را از نظر ناظران از یک سایت خبری به سایت تبلیغی تغییر دهد، میتوان نتیجه گرفت که نوع قلم (اندازه یا رنگ قلم به کار رفته) در تغییر ویژگی سایتها، تاثیر گذار است.

محدودیتها
آزمون A / B یکی از ابزارهای بهینه سازی تبدیل است. البته این آزمون این یک راه حل مستقل محسوب نمیشود و با استفاده از این آزمون همه مشکلات شما برطرف نخواهد شد. از طرفی نتایج حاصل از این آزمون را نمیتوانید با دادههای نامرتب و تصادفی دریافت کنید. برای اینکه واقعاً تغییرات را مفید یا مضر تشخیص دهید، باید کارهای دیگری غیر از یک آزمون ساده A / B انجام دهید. ولی در اینجا به همین تکنیک آماری اکتفا کرده و برای یک مسئله واقعی، مدلسازی میکنیم.
در ادامه به دادههای شبیه سازی شده اشاره خواهیم کرد و نحوه اجرای انتخاب دو وضعیتی را مورد بررسی قرار میدهیم. به منظور دریافت فایل اطلاعاتی مورد استفاده، اینجا کلیک کنید. البته فایل دریافتی یک فایل متنی (csv) است که به صورت فشرده در آمده. بنابراین قبل از استفاده در محیط R، باید آن را از قالب فشرده خارج کنید، سپس در نرمافزار بارگذاری نمایید.
مطالعه موردی
تصور کنید که ما دادههایی از نتایج آزمون و انتخاب دو وضعیتی A / B از دو وب سایت رزرو هتل دریافت کردهایم. توجه داشته باشید که این دادهها ساختگی هستند ولی البته میتوانند به واقعیت بسیار نزدیک باشند. قرار است، تجزیه و تحلیل آزمون A / B یا همان انتخاب دو وضعیتی روی چنین دادههایی انجام شود. در نهایت نیز باید از اطلاعات آنالیز این دادهها، یک گزارش تهیه کرده و به مدیریت ارائه دهیم. تجزیه و تحلیل چنین دادههایی احتیاج به دانش نسبی از مفاهیم آماری دارد که در نوشتارهای دیگر مجله فرادرس مانند مفاهیم آماری – شاخصهای توصیفی و نظریه تصمیم و انواع آن | به زبان ساده مورد توجه قرار گرفته است. قبل از هر چیز بهتر است با دادههای موجود در فایل اطلاعاتی آشنا شویم.
آشنایی با مجموعه داده
به جدول ۱ دقت کنید. دادههای مربوط به فایل Website Results.csv دارای چهار ستون یا چهار متغیر هستند که شامل ۱۴۵۱ رکورد یا مشاهده هستند. در این جدول البته فقط ۱۰ سطر اول فایل اطلاعاتی قابل مشاهده است.
متغیر اول در این مجموعه داده، به نام variant با دو مقدار مشخص شده است. مقدار A گروه کنترل است که محصولات یا ویژگیهای موجود را در وب سایت اولیه، به تصویر میکشد. مقدار B گروه آزمایشی است که برای مشخص کردن نسخه جدید محصول یا ویژگی است تا به کمک آن مشخص شود، به کارگیری ویژگی جدید باعث افزایش رزروها شده است.
متغیر مربوط به ستون دوم، Converted نام گرفته که با دو مقدار True و False، تنظیم شده. وقتی مشتری با موفقیت رزرو میکند مقدار True ثبت شده و اگر هنگام مراجعه مشتری به سایتها، رزروی صورت نگیرد، مقدار False در این متغیر قرار خواهد گرفت.
متغیر بعدی با عنوان length_of_stay، طول دوره اقامت یا رزرو درخواستی را مشخص میکند. واضح است که مقادیر عددی مثبت مجموعه دادههای این متغیر را تشکیل خواهند داد. هر چه طول دوره اقامت بیشتر باشد، موفقیت سایت در معرفی خدمات، بیشتر است.
آخرین متغیر با نام revenue به درآمد یا پرداخت مشتری اختصاص دارد. این مقادیر نشانگر هزینهای است که شخص هنگام انجام رزرو، به سایت انجام داده است. واضح است که این دادهها مثبت یا صفر هستند.
جدول ۱: بخشی از دادههای فایل کاری Website Results.csv
| variant | converted | length_of_stay | revenue |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
| A | FALSE | 0 | 0 |
لطفاً توجه داشته باشید که برای انجام دستوراتی که در ادامه آمده است، زبان برنامهنویسی R یا محیط کاربری RStudio را روی سیستم خود نصب کرده باشید. ابتدا به کمک کدهای زیر، مجموعه داده را آماده کرده و کتابخانه مرتبط را که شامل توابع مورد استفاده برای تجزیه و تحلیل است بارگیری کنید.
خط ابتدایی کد، به منظور بارگذاری کتابخانه tidyverse نوشته شده که برای تغییرات و ایجاد متغیرهای جدید مناسب است. خط دوم هم برای تعیین محل پوشه کاری نرم افزار R مشخص شده و در خطی بعدی فایل اطلاعاتی فراخوانی و در متغیر ABTest قرار گرفته. از جهت این که فایل اطلاعاتی در دسترس شما قرار گیرد، فرمان save، آن را در پوشه دلخواه شما ذخیره کرده است.
همانطور که میدانید برای انجام یک آزمون آماری، احتیاج به دو فرضیه داریم. فرض صفر و فرض مقابل برای تحلیل انتخاب دو وضعیتی یا A / B در ادامه یادآوری شده است.
فرضیه آزمون
در اینجا فرضیه صفر (Null Hypothesis) به صورت عدم تفاوت در وضعیت فروش یا کارایی سایتها مشخص شده است. به این معنی که هر دو نسخه A و B از سایت، احتمال یکسانی در رزرو مشتری یا تبدیل بازدید کننده به مشتری دارند. به عبارت دیگر، میتوان گفت هیچ تفاوتی بین نسخه A و B از سایت وجود ندارد و تغییراتی که مشاهده میشود، نتیجه تصادف یا حاصل از نمونهگیری است.
فرضیه جایگزین یا فرض مقابل
در آزمون یا آنالیز آماری، فرض مقابل (Alternative Hypothesis) معمولا به صورت عبارتی متناقض یا متمم با فرض صفر نوشته میشود. به این ترتیب خواهیم گفت، هر دو نسخه A و B احتمال متفاوتی در رزرو یا تبدیل بازدید کننده به مشتری دارند. یا به بیان دیگر بین نسخه A و B از سایت، تفاوت معنیداری در جلب مشتری وجود دارد. از آنجایی که نسخه B دارای تغییراتی است، باید اینطور نتیجه بگیریم که امر رزرو مشتری در سایت B بهتر از A رخ میدهد.
به منظور بررسی هر یک از این فرضیهها، آزمون آماری مناسب برای میانگین را به کار میگیریم. البته از آنجایی که به بررسی درصد یا تغییر در رشد تبدیل بازدید کنندگان به مشتری علاقمند هستیم، آزمون دو جملهای (Binomial Test) را اجرا خواهیم کرد. برای آگاهی بیشتر در مورد نحوه انتخاب اجرای آزمون فرض آماری مناسب، بهتر است مطلب آزمون فرض آماری مناسب | راهنمای کاربردی را مطالعه کنید.
تجزیه و تحلیل
در بخش دوم از کدهای مربوط به انتخاب دو وضعیتی، دستورات مربوط به تجزیه و تحلیل و اجرای آزمون فرض را پیمیگیریم. ابتدا تبدیلهای مورد نظر را مشخص میکنیم و در بخش اول کدها، نرخ تبدیل (تبدیل بازدید کننده به مشتری) را برای هر دو سایت A و B مورد محاسبه قرار میدهیم. این کار را به وسیله درصدگیری انجام داده و نتایج را در متغیرهای conv_rate_A و conv_rate_B ذخیره خواهیم کرد.
مشخص است که نرخ تبدیل بازدیدکننده به مشتری برای سایت A برابر با تقریبا ۰٫۰۲۸ بوده در حالیکه برای سایت B این نرخ برابر با ۵٪ است. این امر نشان میدهد که ارزیابی سایت B، مثبت به نظر میرسد.
این بار نرخ رشد از سایت A به B را اندازه میگیریم. به این معنی که رشد مشتریان از سایت A نسبت به B را اندازهگیری خواهیم کرد. به فرمول کد محاسباتی زیر توجه کنید. میزان افزایش در متغیر uplift ثبت شده است.
میزان رشد مشتری از سایت A به B برابر با ۸۲٫۷۲ است که تقریبا رشدی صد درصدی را نشان میدهد. باز هم به نظر میرسد که استفاده از سایت B، دلیل محکمی دارد، زیرا مشتریان بیشتری را جذب کرده است.
این بار با زبان آمار صحبت خواهیم کرد. سعی داریم به کمک محاسبه واریانس آمیخته و بدست آوردن واریانس و آماره برای آزمون درصد یا احتمال دو جملهای مراحل کار را پیش ببریم.
نکته: اگر انتخاب گزینه A یا B را با صفر و یک نشان دهیم، و تعداد کسانی که از سایت B، یا سایت A خرید انجام دادهاند را متغیر تصادفی در نظر بگیریم، میتوانیم متغیر تصادفی را با توزیع دو جملهای در نظر گرفته و مقدار احتمال موفقیت (p) را برآورد یا مورد آزمون قرار دهیم.
با توجه به نکته گفته شده، میتوان فرض صفر را در اینجا یکسان بودن نرخ تبدیل به مشتری برای سایت A و B در نظر گرفت. بنابراین اگر نرخ تبدیل برای سایت A و نرخ تبدیل برای سایت B باشد، خواهیم داشت:
به کدهایی که در ادامه دیده میشوند، توجه کنید. p_pool احتمال تبدیل را بدون در نظر گرفتن نوع سایت، محاسبه کرده است. در ادامه نیز خطای استاندارد (SE_pool) و همچنین مقدار اختلاف درصدها (d-hat) مورد محاسبه قرار گرفته است.
در قسمت بعدی، آماره آزمون و z_score بدست آمده. کافی است اختلاف حاصل از درصدهای بدست آمده از نمونه را از اختلاف درصدها طبق فرض صفر کم کرده و نتیجه را بر خطای استاندارد (SE_pool) تقسیم کنیم.
نکته: واریانس برای توزیع دو جملهای از طریق رابطه بدست میآید که ، احتمال موفقیت و ، احتمال شکست است. این موضوع در قطعه دستوری SE_pool قابل مشاهده است.
با توجه به مقدار آماره و همچنین محاسبه «پی-مقدار» (p-value)، همچنین در نظر گرفتن میزان خطای نوع اول، میتوان نسبت به رد فرض صفر اقدام کرد.
از آنجایی که پی-مقدار یا مقدار احتمال برابر ۰٫۰۲۴ بوده از احتمال خطای اول (در اینجا ۰٫۰۵) کمتر است، فرض صفر رد شده و مشخص میشود که بین سایت A و B از لحاظ درصد جذب مشتری، تفاوت معنیداری وجود دارد. به بیان دیگر، سایت B موفقتر از سایت A در تبدیل بازدیدکننده به مشتری، عمل کرده است.
در ادامه، براساس «فاصله اطمینان» (confidence interval) برای اختلاف احتمال موفقیت دو سایت A و B، نتایج یکسانی با آزمون فرض آماری خواهیم گرفت. کدهایی که در ادامه مشاهده میکنید به این منظور تهیه شدهاند.
البته توجه داشته باشید که برای محاسبه صدکهای توزیع دو جملهای، از تقریب توزیع نرمال استفاده شده است. به همین دلیل در کدهای قبلی از صدکهای توزیع نرمال (qnorm) استفاده شده است. ابتدا برای اختلاف احتمال موفقیتها به صورت آمیخته، یک فاصله اطمینان ساخته شد. این بازه به صورت زیر است.
که شامل صفر نیست و یک بازه مثبت محسوب میشود. بنابراین به نظر میرسد که سایت B بهتر از سایت A است.
در دو بخش بعدی، به جای استفاده از احتمال آمیخته برای موفقیت، برای هر یک از سایتهای A و B، احتمال موفقیت را محاسبه کرده و برای هر یک فاصله اطمینان جداگانه بدست آوردهایم. فاصله اطمینان برای احتمال موفقیت جذب بازدید کننده و تبدیل آن به مشتری در سایت A به صورت زیر است.
این فاصله نشان میدهد که با احتمال ۹۵٪، چنین بازهای، شامل احتمال موفقیت خواهد بود. همین روش محاسباتی را برای سایت B نیز انجام دادهایم. نتایج به صورت زیر حاصل شدهاند.
این بازه نشانگر اختلاف زیاد برای احتمال موفقیت با فاصله اطمینان مربوط به احتمال موفقیت با سایت A است. همانطور که میدانید، استفاده از فاصله اطمینان، روش دیگری برای اجرای آزمون فرض آماری است. به این ترتیب دلیل دیگری برای رد فرض صفر بدست آمد. به تصویر ۲ که در ادامه متن دیده میشود نیز توجه کنید.
نمایش نتایج حاصل تحت کدهای زیر صورت گرفته است. همه مقادیر محاسبه شده، با برچسبهای مشخص، توسط کد زیر در یک چارچوب داده (Data Frame) به نام vis_result_pool جمعآوری شده است. به این ترتیب کافی است که برای اجرای آزمون انتخاب دو وضعیتی و برآورد فاصله اطمینان برای هر یک از احتمالات موفقیت، تابع را با نام مجموعه داده، به کار بگیرید.
مدلسازی برای انتخاب دو وضعیتی
کدهایی که در ادامه مشاهده میکنید، به منظور ایجاد یک تابع به نام Compute_ABTest_Results است که برای انجام محاسبات مربوط به انتخاب دو وضعیتی نوشته شدهاند. تمامی مراحل، شامل دریافت فایل ورودی، محاسبه درصدها برای گروه A و B و غیره توسط این کد انجام میشود.
نتیجهای که برای دادههای فایل Website Results توسط کد بالا بدست میآید، مطابق با تصویر زیر است.

تجسم نتایج بوسیله نمودار
یکی از کارهایی که آمارشناسان به عنوان یک متخصص داده، باید انجام دهند، تجسم یا مصورسازی داده ها است. بنابراین به منظور تجمیع و نمایش نموداری از فاصله اطمینانها و میزان همپوشانی آنها، کدهای قبلی و دستورات جدید برای نمایش نمودارها را ادغام کرده و در قالب دستورات و برنامه R از اینجا قابل دریافت است. توجه داشته باشید که فایل دریافتی به صورت فشرده بوده و پس از خارج کردن آن از حالت فشرده، در همان محلی که فایل اطلاعاتی قرار دارد، آن را کپی کرده و در محیط RStudio اجرا نمایید.
اجرای این برنامه، علاوه بر محاسبات مربوط به فاصله اطمینان و همچنین پی-مقدار، نمودارهای مقایسه توزیع دو جامعه را هم شامل میشود. همانطور که در نمودار مربوط به تصویر ۲ میبینید، بین میانگین یا نقطه برآورد احتمال موفقیت برای هر دو جامعه، فاصله زیادی وجود دارد.

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

نتیجه انتخاب دو وضعیتی
با توجه به نتایج بدست آمده، میتوان حقایق زیر را از تحلیل انجام شده، بدست آورد.
- 721 بازدید و 20 تبدیل بازدید کننده به مشتری برای سایت نوع A و 730 بازدید و 37 تبدیل برای سایت از نوع B وجود دارد.
- افزایش نسبی 82٫72٪ براساس نرخ تبدیل A = 2٫77٪ و نرخ تبدیل B = 5٫07٪ محاسبه شد. از این رو، سایت نوع B به میزان 82٫72٪ بهتر از سایت A عمل کرده است.
- p-مقدار محاسبه شده برای این تجزیه و تحلیل یا آزمون آماری 0٫02448 است (p <0.05 یا p کمتر از سطح معنی داری 5٪). باز هم میتوان گفت، نتایج آزمونها از نشان از معنیداری اختلاف بین دو سایت A و B دارند. شما میتوانید 95٪ اطمینان داشته باشید که تغییرات ایجاد شده واقعی است و به علت تصادف یا خطای نمونهگیری رخ ندادهاند.
- همه این شواهد، شما را به رد فرض صفر هدایت کرده و سایت B را برتر از سایت A، ارزیابی میکنند.
- از این رو، سایت نوع «B» را کاراتر از سایت A در نظر گرفته و استفاده از ویژگیهای آن را برای مدیران سازمانتان شرح دهید.
خلاصه و جمعبندی
در این نوشتار به بررسی نحوه به کارگیری آزمونهای آماری برای یک تست A / B پرداختیم و به این ترتیب به کدنویسی در محیط R، انتخاب دو وضعیتی و تحلیل آماری را به کار بردیم. البته در این بین استفاده از آزمونهای آماری و تفسیر نتایج از محاسبات مربوطه، ما را در جهت اندازهگیری خطای انتخاب نیز یاری رساندند. رسم نمودار و همچنین مشخص کردن فاصله اطمینان برای پارامتر جامعهها، در شناخت آزمون و همچنین نتیجهگیری در رد فرص صفر نیز موثر بوده و حاصل آزمون آماری را تایید کردند.












