تجارب متعددة: النظرية والتطبيق

في عالم اليوم ، من الصعب تخيل تطوير المنتج دون اختبار A / B. لبدء تشغيل منتج أو وظيفة جديدة بنجاح ، تحتاج إلى تصميم A / B بشكل صحيح ، وحساب وتفسير نتائجها. في بعض الأحيان نحتاج إلى اختبار لأكثر من مجموعتين. في هذه المقالة ، سننظر في مثل هذه الحالة - اختبار متعدد:

  • سنتحدث عن متى ولماذا لإجراء اختبارات متعددة ؛
  • النظر في الطرق الرئيسية لحساب نتائج الاختبار والمبادئ الرياضية التي تستند إليها الطرق ؛
  • نعطي أمثلة على تنفيذ البرامج للأساليب ؛ يمكنك استخدام هذه الأمثلة في مشاريعك.

لذلك دعونا نبدأ.



تجارب متعددة: متى ولماذا


من الواضح ، يجب تبرير أي تعقيدات تقنية للتجربة بضرورة عملية. وهذا ينطبق أيضا على اختبارات متعددة. إذا كان الجمهور منقسمًا إلى أكثر من مجموعتين فرعيتين ، فإن احتمال حدوث خطأ من النوع الأول أثناء التجربة يزداد بشكل كبير:

1(1 alpha)n،


حيث ن - عدد المجموعات الفرعية ،  alpha - مستوى معين من الأهمية الإحصائية.
وبالتالي ، عند إضافة مجموعة فرعية إضافية واحدة فقط لاختبار الزوج المعتاد ( ن=3دولارا ) على مستوى معين معين  alpha=0.05 نحصل على احتمال وجود خطأ من النوع الأول ع=0.14دولا يتجاوز بكثير هدفنا  alpha=0.05 .

لماذا تجارب متعددة إذا كانت تقلل من دقة نتائج البحوث؟ قد يكون هناك عدة أسباب:

  1. يجب اختبار العديد من التغييرات وتأثيرها التراكمي على مقاييس المنتج. مثال على ذلك هو عرض المستخدم على صفحة الخدمة عنصرين جديدين يقعان بشكل مختلف بالنسبة لبعضهما البعض.
  2. لا يمكن اختبار التغييرات إلا في فترة زمنية واحدة ، نظرًا لأنها مترابطة وحساسة للموسمية الأسبوعية. مثال على ذلك هو تعطيل القنوات الإعلانية لحساب تأثير تفكيك القنوات بين القنوات.
  3. يريد العميل الحصول على إجابة في أسرع وقت ممكن وأرخص ، ما الخيار الذي يجب اختياره ، مع توفير في نفس الوقت تطوير التجربة وتنفيذها.

إذا واجهنا إحدى هذه المشكلات وعلينا حساب الأهمية الإحصائية للاختبار - فنحن بحاجة إلى التفكير في الحاجة إلى تصحيحات للاختبار المتعدد. حول ما هو عليه وكيفية القيام بذلك بشكل صحيح ، وسيتم مناقشتها أدناه.

تجارب متعددة: ميزات الحساب


المفاهيم الأساسية


النظر في الحالة العامة عندما نتعامل مع ن الفرضيات H0i . i=1،...،n حول المساواة الزوجي من المتوسط ​​أو المتوسط مدولا مجموعات فرعية. في هذه الحالة ، تكون كل من النتيجة الحقيقية والخطأ ممكنة. H0iVSH1i لكل من i=1،...،n الفرضيات. تقديم النتائج كتجربة مصفوفة ارتباك:

H0i غير مرفوضH0i مرفوضالمجمو

H0i صحيح

يوVn0دولا
H0i زائفTSn1
المجموكصRن


وبالتالي رفض بشكل غير صحيح V من R رفض الفرضيات الأساسية.

بناءً على هذه المعلمات ، نقدم مفهومي خطأ مهمين ، يتم التحكم فيهما خلال اختبارات متعددة: FWER و Fdr .

احتمال خطأ المجموعة FWER (معدل خطأ الأسرة الحكيم) هو احتمال الحصول على خطأ واحد على الأقل من النوع الأول ويتم تحديده بواسطة الصيغة:

FWER=p(V>0).



Fdr (معدل اكتشاف خطأ) هو التوقع الرياضي لنسبة الأخطاء من النوع الأول إلى العدد الإجمالي للانحرافات في الفرضية الرئيسية:

FDR=E(V/R|R>0).



فكر في طرق التحكم في هذه الأخطاء باستخدام مثال حالة المنتج القياسية.

وصف الحالة


على سبيل المثال البسيط ، ضع في اعتبارك تجربة تم فيها عرض ثلاث مجموعات من المستخدمين المعزولين والمنفصلين عن ثلاثة خيارات لصفحات مع عرض للنقر على زر الاتصال للإعلان. كمقياس أساسي لبساطة الحساب ، نأخذ العدد الإجمالي للمكالمات في كل مجموعة.

لنلقِ نظرة على كيفية تغير المقياس قيد الدراسة:


التين. 1. الرسم البياني لديناميات الضغط على زر الاتصال



سوف نستخدم الطريقة القياسية bootstrap من أجل جعل توزيع المقياس المستهدف في العينات طبيعيًا ، وننظر إلى الرسوم البيانية ونطاقات المدى لمتوسط ​​القيم في العينات:


التين. 2. الرسم البياني لتوزيع القيم المتوسطة في مجموعات


التين. 3. نطاق القيم المتوسطة في المجموعات



انطلاقًا من الرسوم البيانية ، تربح المجموعة C بعدد النقرات على زر الاتصال. ومع ذلك ، فمن الضروري التحقق من الأهمية الإحصائية للنتائج. للقيام بذلك ، نأتي بالمقياس المقدر إلى شكل التوزيع الطبيعي ونستخدم معيار الطالب المعتاد للمقارنة الزوجية للمجموعات في التجربة ، ثم - طرق التحكم FWER و Fdr لحساب التصحيحات لمقارنات متعددة.

مراقبة FWER


هناك العديد من الطرق للتحكم في هذا الخطأ ، ولكن هناك طريقتان شائعتان:

1) إجراء من خطوة واحدة مع التعديل في وقت واحد فالقيمة لجميع الفرضيات التي تم اختبارها باستخدام طريقة Bonferroni ؛

2) متتابعة ، التكيف التكراري فالقيمة ج صنع القرار في كل خطوة وفقا لنتائج طريقة هيل.

1. تعديل Bonferroni


هذا الإجراء من خطوة واحدة يقلل من احتمال وجود نتيجة إيجابية كاذبة التجربة. جوهر الطريقة هو قبول فرضية بديلة إذا:

p alpha/n،


حيث ن - عدد الفرضيات المختبرة.

يمكن تنفيذ الطريقة بكل بساطة باستخدام المكتبة القياسية bootstrapped :

from bootstrapped import bootstrap as bs from bootstrapped import compare_functions as bs_cmp from bootstrapped import stats_functions as bs_st bs_ab_estims = bs.bootstrap_ab(np.array(group_A), np.array(group_B), bs_st.mean bs_cmp.difference, num_iterations=5000, alpha=0.05/3, iteration_batch_size=100, scale_test_by=1, num_threads=4) bs_bc_estims = bs.bootstrap_ab(np.array(group_B), np.array(group_C), bs_st.mean bs_cmp.difference, num_iterations=5000, alpha=0.05/3, iteration_batch_size=100, scale_test_by=1, num_threads=4) bs_ac_estims = bs.bootstrap_ab(np.array(group_A), np.array(group_C), bs_st.mean bs_cmp.difference, num_iterations=5000, alpha=0.05/3, iteration_batch_size=100, scale_test_by=1, num_threads=4) 

بعد الحصول على نتائج التقييم الإحصائي ، يمكننا أن نستنتج ما إذا كانت المجموعات تختلف أم لا.

ناقص الرئيسي لهذا النهج: لمزيد من المجموعات الفرعية ، وانخفاض قوة المعيار ، مما يزيد من احتمال قبول الفرضية غير صحيحة. على سبيل المثال ، لمدة عشرة اختبارات و αi=0.05 بحاجة للحصول عليها pi5103 أن أقول أن الفرق كبير. لتسوية هذه العيوب ، يمكنك اختيار طريقة التل.

2. طريقة هيل


هذا إجراء تغيير متسلسل هابط. فالقيمة . في الخطوة الأولى من طريقة الخوارزمية ، حقيقية فالقيمة فرز تصاعدي:

p1···pn،


ثم الأصلي  alpha مستوى سطح الأرض:

 alphai= alpha/(ni+1)،


بعد ذلك يتم التحقق من حالة pi alphai ويخلص إلى ما إذا كانت الفرضية الرئيسية صحيحة H0i .

نقطة توقف الخوارزمية - لحظة أنا عندما يتم قبول الفرضية الرئيسية الأولى H0i ، وكلها لاحقة H0j،j>i .
يمكنك تطبيق هذه الطريقة باستخدام الإجراء multipletests() من المكتبة statsmodels $ مع المعلمة method="holm" :

 from bootstrapped import bootstrap as bs from bootstrapped import stats_functions as bs_st from scipy.stats import ttest_ind from statsmodels.sandbox.stats.multicomp import multipletests bs_a = bs.bootstrap(np.array(group_A), stat_func=bs_st.mean, num_iterations=10000, iteration_batch_size=300, return_distribution=True) bs_b = bs.bootstrap(np.array(group_B), stat_func=bs_st.mean, num_iterations=10000, iteration_batch_size=300, return_distribution=True) bs_c = bs.bootstrap(np.array(group_C), stat_func=bs_st.mean, num_iterations=10000, iteration_batch_size=300, return_distribution=True) stat_ab, p_ab = stats.ttest_ind(pd.DataFrame(bs_a), pd.DataFrame(bs_b)) stat_bc, p_bc = stats.ttest_ind(pd.DataFrame(bs_b), pd.DataFrame(bs_c)) stat_ac, p_ac = stats.ttest_ind(pd.DataFrame(bs_a), pd.DataFrame(bs_c)) print(sorted([p_ab, p_bc, p_ac])) print("FWER: " + str(multipletests(sorted([p_ab, p_bc, p_ac]), alpha=0.05, method='holm', is_sorted = True))) 

السيطرة FDR


سيطرة Fdr يعني أن الحالة راضية FDR=E(V/R)< alpha . في نفس الوقت FDRFWER ، بمعنى ، احتمال الحصول على خطأ من الدرجة الأولى في السيطرة Fdr النقصان.

طريقة بنجاميني - هوشبرج


يتضمن هذا الإجراء التصاعدي تغييرًا متسلسلاً. فالقيمة قبل فرز تصاعدي:

p1···pn.


ثم المصدر α يتم ضبط المستوى بواسطة الصيغة:

 alphai=i· alpha/n،


ثم ، كما في طريقة هولم ، يتم التحقق من الشرط pi alphai ويخلص إلى ما إذا كانت الفرضية الرئيسية صحيحة H0i وكل ذلك لاحقا H0j،j>i .

يمكن تنفيذ طريقة Benjamini-Hochberg ، وكذلك طريقة Holm ، باستخدام الإجراء multipletests() :

 print("FDR: " + str(multipletests([p_ab, p_bc, p_ac], alpha=0.05, method='fdr_bh', is_sorted = False))) 

استنتاج


تحدثنا في المقال عن الطرق الرئيسية لتقييم نتائج اختبارات متعددة وقدمنا ​​أمثلة على رمز البرنامج الذي ينفذ هذه الأساليب. نأمل أن تكون قد قضيت وقتًا في الاستفادة والفائدة وستكون قادرًا على تنفيذ الإجراءات الموضحة. وإذا كان لديك أي أسئلة ، فسوف نكون سعداء للإجابة عليها.

شكرا لاهتمامكم!

Source: https://habr.com/ru/post/ar476826/


All Articles