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

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

إيجاد المعاملات الصحيحة بنسميه تجهيز المنحنى.
تقرر دالة مختلفة بمعاملات مختلفة هيؤدي لمنحنى مختلف. شوف إيه بيحصل لما تختار دالة مختلفة.
(رسم: نهج بارامتري تاني لتجهيز نقاط البيانات بتاعتك)
اختيار الدالة الصح أساسي هنا.
بالعكس، عمل افتراض غلط عن شكل بياناتك ممكن يؤدي لنتائج دون المستوى الأمثل، زي ما تشوف تحت:

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

يبدو كويس جداً لدرجة مش ممكن تصدقها، صح؟ ليه نتعب نفسنا بتجهيز المنحنى لما نقدر نوصل النقط بس؟
حسناً، النهج غير البارامتري فعلاً ليه عيوب. بيتبع البيانات بشكل أعمى، على طريقة الإفراط في التجهيز. خصوصاً لما يكون عندك بيانات قليلة ومشوشة.
في الحالات دي، ممكن تلاقيها مفيدة ترجع لافتراضات النموذج البارامتري عشان تحافظ على النموذج بتاعك تحت السيطرة.
بس خلينا نلتزم بالنماذج غير البارامترية بتاعتنا دلوقتي؛ ده المكان اللي كابلان-ماير بينتمي ليه.
النقطة الأساسية لتقدير كابلان-ماير هي إنها بتسمحلك تبني دوال بقاء لمجموعات مستخدمين مختلفة.
في مثالنا لمتابعي البرنامج، مش نقدر نفترض إن كل المستخدمين سجلوا في نفس الوقت؛ بعضهم انضم قبل 6 أيام، وتانيين 4، وبعضهم 2 أيام بس فاتت.
إزاي نقدر نعمل منحنى بقاء 6 أيام لو بعض المستخدمين بتوعنا كانوا موجودين ل 4 أو 2 أيام بس؟
ادخل كابلان ماير:
لكل انتقال من يوم للتاني، بنهتم بس بالمستخدمين اللي كانوا موجودين قبل الانتقال. بعدين بنحسب نسب المستخدمين في نهاية كل انتقال للموجودين قبله. حاصل ضرب النسب دي بيدينا دالة البقاء عند الوقت t، يعني S(t).
متقلقش لو اللي فوق مش واضح، المثال الجاي هيخليه سهل زي الفل!

في الخطوة صفر، عندنا 2,000 مستخدم، من المجموعات التلاتة كلها. وبالتعريف كل المستخدمين لسه باقيين عند الوقت 0، يعني S(0) = 100%.
بعدين في الخطوة 1، 1,650 بس لسه موجودين، يعني 900 + 400 + 350. بعدين الاحتمالية عند الوقت 1 هي P(1) = 1650 / 2000 = 82.5%. وS(1) = S(0) * P(1) = 100% * 82.5% = 82.5%.
بالمثل، في الخطوة 2، 1,350 بقوا بعد الانتقال ده من أصل 1,650 مستخدم قبل الانتقال، يعني P(2) = 1350 / 1650 = 81.82%. وS(2) = S(1) * P(2) = 82.5% * 81.82% = 67.5%.
دلوقتي، الخطوة 3 صعبة، المجموعة 3 مش جزء من الانتقال ده تاني، مفيش حد منهم انضم للمنصة بتاعتنا أكتر من يومين فاتوا. يعني، هنتجاهل المجموعة 3 في الحساب بتاعنا هنا. في بداية الانتقال ده، عندنا 1,100 مستخدم من المجموعات 1 و 2، وبعد الانتقال 900 فضلوا. يعني، P(3) = 900 / 1100 = 81.82%. ودالة البقاء عند t=3 هتكون S(3) = S(2) * P(3) = 67.5% * 81.82% = 55.23%.
دالة البقاء عند t=4 سهلة، جربها بنفسك وهتحصل على S(4) = 42.95%. دلوقتي، في الخطوة 5، مرة تانية خسرنا مجموعة تانية، يعني P(5) = 500 / 600 = 83.33%، وS(5) = S(4) * P(5) = 42.95% * 83.33% = 35.8%. ولو فضولي، S(6) = 35.8% كمان، لأن P(6) = 100%، كل المستخدمين في بداية الخطوة دي فضلوا لحد الآخر.
واللي بيدينا دالة البقاء التالية في النهاية.

منحنى بقاء كابلان ماير عادةً بيترسم في شكل دالة خطوة. الوقت منفصل هنا، وبتعرف قيمة S(t) بس في الأوقات المنفصلة دي.
وخلاص!
لمبرمجي بايثون بينكم، بنصح بمكتبة lifelines لكام ديفيدسون-بيلون. مكتبة نظيفة وبسيطة في الاستخدام.
ولو بتشتغل ببيئة مختلفة، أنا كمان طبقت كابلان ماير بنفسي في بيئات حيث مقدرتش استخدم lifelines، وكانت مباشرة في التطبيق زي ما تشوف.
طارق عمرو، 16 أبريل 2024