الإحصاء التطبيقي
درس 7 من 9
7الإحصاء التطبيقي
الصورة الكبيرةنموذج دقته 91% على 100 مثال قد يكون 85% أو 97% في الحقيقة. الإحصاء يقول لك كم تثق بالرقم، وهل الفرق بين نموذجين حقيقي أم صدفة.
ماذا تشاهد في الرسم: من الأرقام الخام إلى قرار له أساس. كل خطوة تحضر سؤالًا قبل الذي بعده.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
لو سألت 10 أشخاص عن قهوتك وأعجب 8، هل 80% من كل زبائنك معجبون؟ ربما، وربما سألت أصدقاءك فقط. الإحصاء يقول: مع 10 أشخاص الرقم الحقيقي قد يكون بين 50% و95%. مع 1000 شخص يضيق المدى كثيرًا. ولو زادت المبيعات حين أمطرت، لا يعني أن المطر يسبب حب القهوة.
الوصف: المتوسط حساس للقيم المتطرفة، والوسيط لا، والانحراف المعياري يقيس الانتشار. التوزيع الطبيعي يظهر في المتوسطات (نظرية النهاية المركزية)، والبيانات الحقيقية كثيرًا ما تكون منحرفة. الخطأ المعياري = σ/√n، وفترة ثقة 95% ≈ المتوسط ± 1.96 × الخطأ المعياري، أو بالتمهيد (bootstrap) بلا افتراضات. اختبار A/B: فرضية صفرية، وقيمة p هي احتمال فرق بهذا الحجم لو لم يكن هناك فرق، وحجم العينة يُحدد قبل التجربة، والنظر المتكرر للنتائج يضخم الإيجابيات الكاذبة. الارتباط (معامل بيرسون) لا يعني سببية: متغيرات خفية، والعكس، والصدفة. ومفارقة سيمبسون تقلب النتيجة عند التجميع.
قبل أن تبدأ
🎲الاحتمالات
درس الاحتمالات في هذا المسار.
🐍بايثون للبيانات
أول درس في هذا المسار.
الفكرة الجوهرية
1صِف قبل أن تنمذج
رواتب فريق صغير وواحد منها ضخم. المتوسط يضلل، والوسيط يصف الشخص النموذجي:
import statistics as st
salaries = [8, 9, 9, 10, 11, 12, 95] # thousands
print("mean :", round(st.mean(salaries), 1))
print("median:", st.median(salaries))
print("stdev :", round(st.stdev(salaries), 1))
q1, q2, q3 = st.quantiles(salaries, n=4)
print("IQR :", q1, "to", q3)2كم تثق برقمك؟
دقة نموذج على عينة اختبار تقدير. فترة الثقة تقول أين يقع الرقم الحقيقي غالبًا، وتضيق كلما كبرت العينة:
import math
def accuracy_interval(correct, total, z=1.96):
p = correct / total
margin = z * math.sqrt(p * (1 - p) / total)
return round(p, 3), round(max(0, p - margin), 3), round(min(1, p + margin), 3)
for correct, total in [(91, 100), (910, 1000), (9100, 10000)]:
p, low, high = accuracy_interval(correct, total)
print(f"n={total:>5}: accuracy {p} (95% CI {low} to {high})")3اختبار A/B بالتبديل
هل التصميم الجديد زاد التحويل فعلًا؟ اختبار التبديل يسأل: لو خلطنا المجموعتين عشوائيًا، كم مرة نرى فرقًا بهذا الحجم؟ نستخدم بذرة ثابتة لنتيجة قابلة للتكرار:
import random
a = [1] * 48 + [0] * 452 # old design: 48 of 500 converted
b = [1] * 70 + [0] * 430 # new design: 70 of 500 converted
observed = sum(b) / len(b) - sum(a) / len(a)
rng = random.Random(7)
pooled = a + b
extreme = 0
trials = 2000
for _ in range(trials):
rng.shuffle(pooled)
gap = sum(pooled[500:]) / 500 - sum(pooled[:500]) / 500
if gap >= observed:
extreme += 1
print(f"observed lift: {observed:.3f}")
print(f"p-value about: {extreme / trials:.3f}")مثال محلول
المسألة: نموذج جديد دقته 88% مقابل 86% للقديم، على 300 مثال اختبار. هل ننشره؟ الحساب: فترة ثقة 95% للجديد تقريبًا 84% إلى 92%، وللقديم 82% إلى 90%. متداخلتان. القرار: لا دليل كافٍ. نوسّع الاختبار لـ 3000 مثال، أو نقارن على نفس الأمثلة باختبار مقترن (McNemar)، قبل أن نقول إنه أفضل.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| قيمة p تحت 0.05 تعني أن النتيجة مهمة. | تعني أنها غالبًا ليست صدفة. قد يكون الفرق حقيقيًا وصغيرًا جدًا لا يستحق. |
| بيانات أكثر تحل كل شيء. | بيانات أكثر بنفس الانحياز تعطي جوابًا خاطئًا بثقة أكبر. |
اختبر فهمك
أي مقياس لا يتأثر بقيمة متطرفة واحدة؟
الوسيط القيمة الوسطى بعد الترتيب.
ماذا يحدث لفترة الثقة حين تكبر العينة؟
الخطأ المعياري يقل بجذر حجم العينة.
مبيعات المظلات والزكام يرتفعان معًا. ما التفسير الأرجح؟
الارتباط لا يعني سببية.
بطاقات مراجعة سريعة
تحقق من فهمك
متى تستخدم الوسيط بدل المتوسط؟
حين تكون البيانات منحرفة أو فيها قيم متطرفة، مثل الرواتب والأسعار.
لماذا لا توقف تجربة A/B عند أول فرق جميل؟
لأن الصدفة تصنع فروقًا مؤقتة، والنظر المتكرر يرفع الإيجابيات الكاذبة.
دقة 95% على 40 مثالًا. ما ملاحظتك؟
العينة صغيرة والفترة واسعة، فالرقم الحقيقي قد يكون أقل بكثير.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.