انتخاب دو وضعیتی و تحلیل آماری | پیاده سازی در R

۱۸۰ بازدید
آخرین به‌روزرسانی: ۲۱ خرداد ۱۴۰۲
زمان مطالعه: ۱۳ دقیقه
انتخاب دو وضعیتی و تحلیل آماری | پیاده سازی در 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 یکی از ابزارهای بهینه سازی تبدیل است. البته این آزمون این یک راه حل مستقل محسوب نمی‌شود و با استفاده از این آزمون همه مشکلات شما برطرف نخواهد شد. از طرفی نتایج حاصل از این آزمون را نمی‌توانید با داده‌های نامرتب و تصادفی دریافت کنید. برای اینکه واقعاً تغییرات را مفید یا مضر تشخیص دهید، باید کارهای دیگری غیر از یک آزمون ساده 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

variantconvertedlength_of_stayrevenue
AFALSE00
AFALSE00
AFALSE00
AFALSE00
AFALSE00
AFALSE00
AFALSE00
AFALSE00
AFALSE00
AFALSE00
AFALSE00

لطفاً توجه داشته باشید که برای انجام دستوراتی که در ادامه آمده است، زبان برنامه‌نویسی R یا محیط کاربری RStudio را روی سیستم خود نصب کرده باشید. ابتدا به کمک کدهای زیر، مجموعه داده را آماده کرده و کتابخانه مرتبط را که شامل توابع مورد استفاده برای تجزیه و تحلیل است بارگیری کنید.

1library(tidyverse)
2setwd(~egot_\\Projects\\ABTest”) #set up your own directory
3ABTest <- read.csv("Website Results.csv", header = TRUE)#Using read.csv base R file import function so the data can be imported into a dataframe in RStudio.
4save(ABTest, file = "~rda\\ABTest.rda")  #save in your own directory

خط ابتدایی کد، به منظور بارگذاری کتابخانه 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 ذخیره خواهیم کرد.

1#2a. let's filter out conversions for variant_A 
2conversion_subset_A <- ABTest %>% filter(variant == "A" & converted == "TRUE")
3
4#2b.Total Number of Conversions for variant_A
5conversions_A <- nrow(conversion_subset_A)
6
7#2c. Number of Visitors for variant_A
8visitors_A <- nrow(ABTest %>% filter(variant == "A"))
9
10#2d. Conversion_rate_A
11conv_rate_A <-  (conversions_A/visitors_A)  
12print(conv_rate_A) #0.02773925
13
14#2e. let's take a subset of conversions for variant_B
15conversion_subset_B <- ABTest %>% filter(variant == "B" & converted == "TRUE")
16
17#2f. Number of Conversions for variant_B
18conversions_B <- nrow(conversion_subset_B)
19
20#2g. Number of Visitors for variant_B
21visitors_B <- nrow(ABTest %>% filter(variant == "B"))
22
23#2h. Conversion_rate_B
24conv_rate_B <-  (conversions_B/visitors_B)  
25print(conv_rate_B) #0.05068493
26            <div class="faradars-courses faradars-courses-single">
27                <a href="https://faradars.org/courses/fvr97041-basic-scientific-and-statistical-calculations-using-r?utm_source=blog.faradars&utm_medium=referral-post&utm_campaign=related-courses-inline-5&utm_term=a.reybod&utm_content=data-mining" target="_blank">
28                    <div class="card card-course">
29                        <div class="card-image">
30                            <img class="pop-img" src="https://faradars.org/wp-content/uploads/2018/07/fvr97041-svg.svg" alt="آموزش محاسبات عددی و آماری با برنامه نویسی در R – مقدماتی">
31                        </div>
32                        <div class="card-body">
33                            <div class="card-title">
34                                فیلم آموزش محاسبات عددی و آماری با برنامه نویسی در R – مقدماتی در فرادرس
35                            </div>
36                        </div>
37                        <div class="card-action ml-3">
38                            <div class="fdb-btn">کلیک کنید</div>
39                        </div>
40                    </div>
41                </a>
42            </div>
43        

مشخص است که نرخ تبدیل بازدیدکننده به مشتری برای سایت A برابر با تقریبا ۰٫۰۲۸ بوده در حالیکه برای سایت B این نرخ برابر با ۵٪ است. این امر نشان می‌دهد که ارزیابی سایت B، مثبت به نظر می‌رسد.

این بار نرخ رشد از سایت A به B را اندازه می‌گیریم. به این معنی که رشد مشتریان از سایت A نسبت به B را اندازه‌گیری خواهیم کرد. به فرمول کد محاسباتی زیر توجه کنید. میزان افزایش در متغیر uplift ثبت شده است.

1uplift <- (conv_rate_B - conv_rate_A)/ conv_rate_A * 100
2uplift #82.72%
3#B is better than A by 83%. This is high enough to decide a winner.

میزان رشد مشتری از سایت A به B برابر با ۸۲٫۷۲ است که تقریبا رشدی صد درصدی را نشان می‌دهد. باز هم به نظر می‌رسد که استفاده از سایت B، دلیل محکمی دارد، زیرا مشتریان بیشتری را جذب کرده است.

این بار با زبان آمار صحبت خواهیم کرد. سعی داریم به کمک محاسبه واریانس آمیخته و بدست آوردن واریانس و آماره برای آزمون درصد یا احتمال دو جمله‌ای مراحل کار را پیش ببریم.

نکته: اگر انتخاب گزینه A یا B‌ را با صفر و یک نشان دهیم، و تعداد کسانی که از سایت B، یا سایت A خرید انجام داده‌اند را متغیر تصادفی در نظر بگیریم، می‌توانیم متغیر تصادفی را با توزیع دو جمله‌ای در نظر گرفته و مقدار احتمال موفقیت (p) را برآورد یا مورد آزمون قرار دهیم.

با توجه به نکته گفته شده، می‌توان فرض صفر را در اینجا یکسان بودن نرخ تبدیل به مشتری برای سایت A و B در نظر گرفت. بنابراین اگر $$p_A$$ نرخ تبدیل برای سایت A و $$p_B$$ نرخ تبدیل برای سایت B‌ باشد، خواهیم داشت:

$$\large \begin{cases}H_0: & p_A = p_B\\ H_A: & p_A \neq p_B\end{cases}$$

به کدهایی که در ادامه دیده می‌شوند، توجه کنید. p_pool احتمال تبدیل را بدون در نظر گرفتن نوع سایت، محاسبه کرده است. در ادامه نیز خطای استاندارد (SE_pool) و همچنین مقدار اختلاف درصدها (d-hat) مورد محاسبه قرار گرفته است.

1#4a.Pooled sample proportion for variants A & B
2p_pool <- (conversions_A + conversions_B)/(visitors_A + visitors_B)
3print(p_pool)  # 0.03928325
4
5#4b. Let's compute Standard error for variants A & B (SE_pool)
6SE_pool<- sqrt(p_pool*(1-p_pool) * ((1/visitors_A) + (1/visitors_B)))
7print(SE_pool)  #0.01020014
8
9#4c. Let's compute the margin of error for the pool
10MOE <- SE_pool * qnorm(0.975)
11print(MOE) <-  #0.0199919
12
134d. Point Estimate or Difference in proportion
14d_hat <- conv_rate_B - conv_rate_A

در قسمت بعدی، آماره آزمون و z_score بدست آمده. کافی است اختلاف حاصل از درصدهای بدست آمده از نمونه را از اختلاف درصدها طبق فرض صفر کم کرده و نتیجه را بر خطای استاندارد (SE_pool) تقسیم کنیم.

نکته: واریانس برای توزیع دو جمله‌ای از طریق رابطه $$Var(X) = p q$$ بدست می‌آید که $$p$$، احتمال موفقیت و $$q$$، احتمال شکست است. این موضوع در قطعه دستوری SE_pool قابل مشاهده است.

1#5a. Compute the Z-score so we can determine the p-value
2z_score <- d_hat/SE_pool
3print(z_score) #2.249546

با توجه به مقدار آماره و همچنین محاسبه «پی-مقدار» (p-value)، همچنین در نظر گرفتن میزان خطای نوع اول، می‌توان نسبت به رد فرض صفر اقدام کرد.

1#5b.Let's compute p_value using the z_score value
2p_value <- pnorm(q = -z_score, mean = 0, sd = 1) * 2
3print(p_value) #0.02447777

از آنجایی که پی-مقدار یا مقدار احتمال برابر ۰٫۰۲۴ بوده از احتمال خطای اول (در اینجا ۰٫۰۵) کمتر است، فرض صفر رد شده و مشخص می‌شود که بین سایت A و B از لحاظ درصد جذب مشتری، تفاوت معنی‌داری وجود دارد. به بیان دیگر، سایت B موفق‌تر از سایت A در تبدیل بازدیدکننده به مشتری، عمل کرده است.

در ادامه، براساس «فاصله اطمینان» (confidence interval) برای اختلاف احتمال موفقیت دو سایت A و B، نتایج یکسانی با آزمون فرض آماری خواهیم گرفت. کدهایی که در ادامه مشاهده می‌کنید به این منظور تهیه شده‌اند.

1#7a. Let's compute Confidence interval for the pool using pre-calculated results
2ci <- c(d_hat - MOE, d_hat + MOE) 
3ci  #0.002953777 0.042937584
4
5#7b. Using same steps as already shown, let's compute the confidence 
6#interval for variants A separately
7 X_hat_A <- conversions_A/visitors_A
8   se_hat_A <- sqrt(X_hat_A*(1-X_hat_A)/visitors_A) 
9     ci_A <- c(X_hat_A - qnorm(0.975)*se_hat_A, X_hat_A + qnorm(0.975)*se_hat_A) 
10print(ci_A)    #0.01575201 0.03972649
11
12# Using same steps as already shown, let's compute the confidence 
13#interval for variants B separately                                 
14X_hat_B <- conversions_B/visitors_B
15 se_hat_B <- sqrt(X_hat_B*(1-X_hat_B)/visitors_B) 
16   ci_B <- c(X_hat_B - qnorm(0.975)*se_hat_B, X_hat_B + qnorm(0.975)*se_hat_B) 
17print(ci_B) #0.03477269 0.06659717

البته توجه داشته باشید که برای محاسبه صدک‌های توزیع دو جمله‌ای، از تقریب توزیع نرمال استفاده شده است. به همین دلیل در کدهای قبلی از صدک‌های توزیع نرمال (qnorm) استفاده شده است. ابتدا برای اختلاف احتمال موفقیت‌ها به صورت آمیخته، یک فاصله اطمینان ساخته شد. این بازه به صورت زیر است.

$$ \large (0.002953 , 0.04293) $$

که شامل صفر نیست و یک بازه مثبت محسوب می‌شود. بنابراین به نظر می‌رسد که سایت B بهتر از سایت A است.

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

$$ \large (0.01575201 , 0.03972649) $$

این فاصله نشان می‌دهد که با احتمال ۹۵٪، چنین بازه‌ای، شامل احتمال موفقیت $$p_A$$ خواهد بود. همین روش محاسباتی را برای سایت B نیز انجام داده‌ایم. نتایج به صورت زیر حاصل شده‌اند.

$$ \large (0.03477269 , 0.06659717) $$

این بازه نشانگر اختلاف زیاد برای احتمال موفقیت با فاصله اطمینان مربوط به احتمال موفقیت با سایت A است. همانطور که می‌دانید، استفاده از فاصله اطمینان، روش دیگری برای اجرای آزمون فرض آماری است. به این ترتیب دلیل دیگری برای رد فرض صفر بدست آمد. به تصویر ۲ که در ادامه متن دیده می‌شود نیز توجه کنید.

نمایش نتایج حاصل تحت کدهای زیر صورت گرفته است. همه مقادیر محاسبه شده، با برچسب‌های مشخص، توسط کد زیر در یک چارچوب داده (Data Frame) به نام vis_result_pool جمع‌آوری شده است. به این ترتیب کافی است که برای اجرای آزمون انتخاب دو وضعیتی و برآورد فاصله اطمینان برای هر یک از احتمالات موفقیت، تابع را با نام مجموعه داده، به کار بگیرید.

1vis_result_pool <- data.frame(
2  metric=c(
3    'Estimated Difference',
4    'Relative Uplift(%)',
5    'pooled sample proportion',
6    'Standard Error of Difference',
7    'z_score',
8    'p-value',
9    'Margin of Error',
10    'CI-lower',
11    'CI-upper'),
12  value=c(
13    conv_rate_B - conv_rate_A,
14    uplift,
15    p_pool,
16    SE_pool,
17    z_score,
18    p_value,
19    MOE,
20    ci_lower,
21    ci_upper
22  ))
23vis_result_pool

مدل‌سازی برای انتخاب دو وضعیتی

کدهایی که در ادامه مشاهده می‌کنید، به منظور ایجاد یک تابع به نام Compute_ABTest_Results است که برای انجام محاسبات مربوط به انتخاب دو وضعیتی نوشته شده‌اند. تمامی مراحل، شامل دریافت فایل ورودی، محاسبه درصدها برای گروه A و B و غیره توسط این کد انجام می‌شود.

1Compute_ABTest_Results <- function(loadfile) {
2  ABTest <- read.csv(loadfile, header = TRUE)
3  conversion_subset_A <-
4    ABTest %>% filter(variant == "A" & converted == "TRUE")
5  conversions_A <- nrow(conversion_subset_A)
6  visitors_A <- nrow(ABTest %>% filter(variant == "A"))
7  conv_rate_A <-  (conversions_A / visitors_A)
8  conversion_subset_B <-
9    ABTest %>% filter(variant == "B" & converted == "TRUE")
10  conversions_B <- nrow(conversion_subset_B)
11  visitors_B <- nrow(ABTest %>% filter(variant == "B"))
12  conv_rate_B <-  (conversions_B / visitors_B)
13  uplift <-
14    (conv_rate_B - conv_rate_A) / conv_rate_A * 100
15  p_pool <-
16    (conversions_A + conversions_B) / (visitors_A + visitors_B)
17  SE_pool <-
18    sqrt(p_pool * (1 - p_pool) * ((1 / visitors_A) + (1 / visitors_B)))
19  MOE <- SE_pool * qnorm(0.975)
20  d_hat <- conv_rate_B - conv_rate_A
21  z_score <- d_hat / SE_pool
22  p_value <- pnorm(q = -z_score,
23                   mean = 0,
24                   sd = 1) * 2
25  lower   = d_hat - qnorm(0.975) * SE_pool
26  upper   = d_hat + qnorm(0.975) * SE_pool
27  vis_result_pool <- data.frame(
28    metric = c(
29      'Estimated Difference',
30      'Relative Uplift(%)',
31      'pooled sample proportion',
32      'Standard Error of Difference',
33      'z_score',
34      'p-value',
35      'Margin of Error',
36      'CI-lower',
37      'CI-upper'
38    ),
39    value = c(
40      conv_rate_B - conv_rate_A,
41      uplift,
42      p_pool,
43      SE_pool,
44      z_score,
45      p_value,
46      MOE,
47      ci_lower,
48      ci_upper
49    )
50  )
51  return(vis_result_pool)
52}

نتیجه‌ای که برای داده‌های فایل Website Results توسط کد بالا بدست می‌آید، مطابق با تصویر زیر است.

result printing
تصویر ۱: نتایج تحلیل بوسیله تابع Compute_ABTest_Results در انتخاب دو وضعیتی

تجسم نتایج بوسیله نمودار

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

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

confidence interval
تصویر ۲: مقایسه فاصله اطمینان پارامتر احتمال موفقیت در آزمون انتخاب دو وضعیتی برای دو جامعه A و B

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

Confidence interval probability density
تصویر ۳: نمودار چگالی فاصله‌های اطمینان برای سایت 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، انتخاب دو وضعیتی و تحلیل آماری را به کار بردیم. البته در این بین استفاده از آزمون‌های آماری و تفسیر نتایج از محاسبات مربوطه، ما را در جهت اندازه‌گیری خطای انتخاب نیز یاری رساندند. رسم نمودار و همچنین مشخص کردن فاصله اطمینان برای پارامتر جامعه‌ها، در شناخت آزمون و همچنین نتیجه‌گیری در رد فرص صفر نیز موثر بوده و حاصل آزمون آماری را تایید کردند.

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
mediumمجله فرادرس
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *