أتقن اختبار الفرضيات الإحصائية في بايثون. يغطي هذا الدليل المفاهيم والأساليب والتطبيقات العملية لعلم البيانات.
علم بيانات بايثون: دليل شامل لاختبار الفرضيات الإحصائية
يُعد اختبار الفرضيات الإحصائية جانبًا حاسمًا في علم البيانات، حيث يسمح لنا باتخاذ قرارات مستنيرة بناءً على البيانات. فهو يوفر إطارًا لتقييم الأدلة وتحديد ما إذا كان الادعاء حول مجتمع إحصائي من المرجح أن يكون صحيحًا. سيستكشف هذا الدليل الشامل المفاهيم الأساسية والأساليب والتطبيقات العملية لاختبار الفرضيات الإحصائية باستخدام بايثون.
ما هو اختبار الفرضيات الإحصائية؟
في جوهره، اختبار الفرضيات هو عملية استخدام بيانات العينة لتقييم ادعاء حول مجتمع إحصائي. يتضمن صياغة فرضيتين متنافستين: الفرضية الصفرية (H0) والفرضية البديلة (H1).
- الفرضية الصفرية (H0): هي العبارة التي يتم اختبارها. وهي تمثل عادةً الوضع الراهن أو عدم وجود تأثير. على سبيل المثال، "متوسط طول الرجال والنساء هو نفسه".
- الفرضية البديلة (H1): هي العبارة التي نحاول إيجاد دليل لدعمها. وهي تتعارض مع الفرضية الصفرية. على سبيل المثال، "متوسط طول الرجال والنساء مختلف".
الهدف من اختبار الفرضيات هو تحديد ما إذا كان هناك دليل كافٍ لرفض الفرضية الصفرية لصالح الفرضية البديلة.
المفاهيم الأساسية في اختبار الفرضيات
فهم المفاهيم التالية ضروري لإجراء وتفسير اختبارات الفرضيات:
القيمة الاحتمالية (P-value)
القيمة الاحتمالية (p-value) هي احتمال ملاحظة إحصائية اختبار متطرفة بنفس القدر أو أكثر من تلك المحسوبة من بيانات العينة، بافتراض أن الفرضية الصفرية صحيحة. تشير القيمة الاحتمالية الصغيرة (عادةً أقل من مستوى الدلالة، ألفا) إلى وجود دليل قوي ضد الفرضية الصفرية.
مستوى الدلالة (ألفا)
مستوى الدلالة (α) هو عتبة محددة مسبقًا تحدد مقدار الأدلة المطلوبة لرفض الفرضية الصفرية. القيم شائعة الاستخدام لألفا هي 0.05 (5%) و 0.01 (1%). إذا كانت القيمة الاحتمالية أقل من ألفا، فإننا نرفض الفرضية الصفرية.
الخطأ من النوع الأول والنوع الثاني
في اختبار الفرضيات، هناك نوعان من الأخطاء التي يمكن أن نرتكبها:
- الخطأ من النوع الأول (إيجابي كاذب): رفض الفرضية الصفرية عندما تكون صحيحة بالفعل. احتمال ارتكاب خطأ من النوع الأول يساوي ألفا (α).
- الخطأ من النوع الثاني (سلبي كاذب): الفشل في رفض الفرضية الصفرية عندما تكون خاطئة بالفعل. يُشار إلى احتمال ارتكاب خطأ من النوع الثاني بالرمز بيتا (β).
قوة الاختبار
قوة الاختبار هي احتمال رفض الفرضية الصفرية بشكل صحيح عندما تكون خاطئة (1 - β). الاختبار ذو القوة العالية يكون أكثر قدرة على اكتشاف تأثير حقيقي.
إحصائية الاختبار
إحصائية الاختبار هي رقم واحد يتم حسابه من بيانات العينة ويُستخدم لتحديد ما إذا كان سيتم رفض الفرضية الصفرية. تشمل الأمثلة إحصائية t، وإحصائية z، وإحصائية F، وإحصائية مربع كاي. يعتمد اختيار إحصائية الاختبار على نوع البيانات والفرضية التي يتم اختبارها.
فترات الثقة
توفر فترة الثقة نطاقًا من القيم التي من المرجح أن يقع ضمنها المعلم السكاني الحقيقي بمستوى معين من الثقة (على سبيل المثال، ثقة 95%). ترتبط فترات الثقة باختبارات الفرضيات؛ فإذا وقعت قيمة الفرضية الصفرية خارج فترة الثقة، فإننا نرفض الفرضية الصفرية.
اختبارات الفرضيات الشائعة في بايثون
توفر وحدة scipy.stats في بايثون مجموعة واسعة من الوظائف لإجراء اختبارات الفرضيات الإحصائية. فيما يلي بعض الاختبارات الأكثر استخدامًا:
1. اختبارات ت (T-tests)
تُستخدم اختبارات ت لمقارنة متوسطات مجموعة واحدة أو مجموعتين. هناك ثلاثة أنواع رئيسية من اختبارات ت:
- اختبار ت لعينة واحدة: يستخدم لمقارنة متوسط عينة واحدة بمتوسط مجتمع معروف.
- اختبار ت للعينات المستقلة (اختبار ت لعينتين): يستخدم لمقارنة متوسطات مجموعتين مستقلتين. يفترض هذا الاختبار أن تباين المجموعتين متساوٍ (أو يمكن تعديله إذا لم يكن كذلك).
- اختبار ت للعينات المزدوجة: يستخدم لمقارنة متوسطات مجموعتين مرتبطتين (على سبيل المثال، قياسات قبل وبعد على نفس الأفراد).
مثال (اختبار ت لعينة واحدة):
لنفترض أننا نريد اختبار ما إذا كان متوسط درجات امتحان الطلاب في مدرسة معينة (اليابان) يختلف بشكل كبير عن المتوسط الوطني (75). نقوم بجمع عينة من درجات الامتحان من 30 طالبًا.
```python import numpy as np from scipy import stats # بيانات العينة (درجات الامتحان) scores = np.array([82, 78, 85, 90, 72, 76, 88, 80, 79, 83, 86, 74, 77, 81, 84, 89, 73, 75, 87, 91, 71, 70, 92, 68, 93, 95, 67, 69, 94, 96]) # متوسط المجتمع population_mean = 75 # إجراء اختبار ت لعينة واحدة t_statistic, p_value = stats.ttest_1samp(scores, population_mean) print("إحصائية ت:", t_statistic) print("القيمة الاحتمالية:", p_value) # التحقق مما إذا كانت القيمة الاحتمالية أقل من ألفا (مثلاً، 0.05) alpha = 0.05 if p_value < alpha: print("رفض الفرضية الصفرية") else: print("الفشل في رفض الفرضية الصفرية") ```مثال (اختبار ت للعينات المستقلة):
لنفترض أننا نريد مقارنة متوسط دخل مهندسي البرمجيات في بلدين مختلفين (كندا وأستراليا). نقوم بجمع بيانات الدخل من عينات من مهندسي البرمجيات في كل بلد.
```python import numpy as np from scipy import stats # بيانات دخل مهندسي البرمجيات في كندا (بآلاف الدولارات) canada_income = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125]) # بيانات دخل مهندسي البرمجيات في أستراليا (بآلاف الدولارات) australia_income = np.array([75, 80, 85, 90, 95, 100, 105, 110, 115, 120]) # إجراء اختبار ت للعينات المستقلة t_statistic, p_value = stats.ttest_ind(canada_income, australia_income) print("إحصائية ت:", t_statistic) print("القيمة الاحتمالية:", p_value) # التحقق مما إذا كانت القيمة الاحتمالية أقل من ألفا (مثلاً، 0.05) alpha = 0.05 if p_value < alpha: print("رفض الفرضية الصفرية") else: print("الفشل في رفض الفرضية الصفرية") ```مثال (اختبار ت للعينات المزدوجة):
لنفترض أن شركة في ألمانيا تطبق برنامجًا تدريبيًا جديدًا وتريد معرفة ما إذا كان يحسن أداء الموظفين. يقومون بقياس أداء مجموعة من الموظفين قبل وبعد البرنامج التدريبي.
```python import numpy as np from scipy import stats # بيانات الأداء قبل التدريب before_training = np.array([60, 65, 70, 75, 80, 85, 90, 95, 100, 105]) # بيانات الأداء بعد التدريب after_training = np.array([70, 75, 80, 85, 90, 95, 100, 105, 110, 115]) # إجراء اختبار ت للعينات المزدوجة t_statistic, p_value = stats.ttest_rel(after_training, before_training) print("إحصائية ت:", t_statistic) print("القيمة الاحتمالية:", p_value) # التحقق مما إذا كانت القيمة الاحتمالية أقل من ألفا (مثلاً، 0.05) alpha = 0.05 if p_value < alpha: print("رفض الفرضية الصفرية") else: print("الفشل في رفض الفرضية الصفرية") ```2. اختبارات زد (Z-tests)
تُستخدم اختبارات زد لمقارنة متوسطات مجموعة واحدة أو مجموعتين عندما يكون الانحراف المعياري للمجتمع معروفًا أو عندما يكون حجم العينة كبيرًا بما فيه الكفاية (عادةً n > 30). على غرار اختبارات ت، هناك اختبارات زد لعينة واحدة ولعينتين.
مثال (اختبار زد لعينة واحدة):
يدعي مصنع لإنتاج المصابيح الكهربائية في فيتنام أن متوسط عمر مصابيحه هو 1000 ساعة بانحراف معياري معروف قدره 50 ساعة. تقوم مجموعة من المستهلكين باختبار عينة من 40 مصباحًا كهربائيًا.
```python import numpy as np from scipy import stats from statsmodels.stats.weightstats import ztest # بيانات العينة (عمر المصابيح الكهربائية) lifespan = np.array([980, 1020, 990, 1010, 970, 1030, 1000, 960, 1040, 950, 1050, 940, 1060, 930, 1070, 920, 1080, 910, 1090, 900, 1100, 995, 1005, 985, 1015, 975, 1025, 1005, 955, 1045, 945, 1055, 935, 1065, 925, 1075, 915, 1085, 895, 1095]) # متوسط المجتمع والانحراف المعياري population_mean = 1000 population_std = 50 # إجراء اختبار زد لعينة واحدة z_statistic, p_value = ztest(lifespan, value=population_mean) print("إحصائية زد:", z_statistic) print("القيمة الاحتمالية:", p_value) # التحقق مما إذا كانت القيمة الاحتمالية أقل من ألفا (مثلاً، 0.05) alpha = 0.05 if p_value < alpha: print("رفض الفرضية الصفرية") else: print("الفشل في رفض الفرضية الصفرية") ```3. تحليل التباين (ANOVA)
يستخدم تحليل التباين (ANOVA) لمقارنة متوسطات ثلاث مجموعات أو أكثر. يختبر ما إذا كان هناك فرق كبير بين متوسطات المجموعات. هناك أنواع مختلفة من تحليل التباين، بما في ذلك تحليل التباين أحادي الاتجاه وتحليل التباين ثنائي الاتجاه.
مثال (تحليل التباين أحادي الاتجاه):
تريد شركة تسويق في البرازيل اختبار ما إذا كانت ثلاث حملات إعلانية مختلفة لها تأثير كبير على المبيعات. يقومون بقياس المبيعات التي حققتها كل حملة.
```python import numpy as np from scipy import stats # بيانات المبيعات لكل حملة campaign_A = np.array([100, 110, 120, 130, 140]) campaign_B = np.array([110, 120, 130, 140, 150]) campaign_C = np.array([120, 130, 140, 150, 160]) # إجراء تحليل التباين أحادي الاتجاه f_statistic, p_value = stats.f_oneway(campaign_A, campaign_B, campaign_C) print("إحصائية ف:", f_statistic) print("القيمة الاحتمالية:", p_value) # التحقق مما إذا كانت القيمة الاحتمالية أقل من ألفا (مثلاً، 0.05) alpha = 0.05 if p_value < alpha: print("رفض الفرضية الصفرية") else: print("الفشل في رفض الفرضية الصفرية") ```4. اختبار مربع كاي
يستخدم اختبار مربع كاي لتحليل البيانات الفئوية. يختبر ما إذا كان هناك ارتباط كبير بين متغيرين فئويين.
مثال (اختبار مربع كاي):
يسأل استطلاع في جنوب إفريقيا الناس عن انتمائهم السياسي (ديمقراطي، جمهوري، مستقل) ورأيهم في سياسة معينة (دعم، معارضة، محايد). نريد أن نرى ما إذا كانت هناك علاقة بين الانتماء السياسي والرأي في السياسة.
```python import numpy as np from scipy.stats import chi2_contingency # التكرارات الملاحظة (جدول التوافق) observed = np.array([[50, 30, 20], [20, 40, 40], [30, 30, 40]]) # إجراء اختبار مربع كاي chi2_statistic, p_value, dof, expected = chi2_contingency(observed) print("إحصائية مربع كاي:", chi2_statistic) print("القيمة الاحتمالية:", p_value) print("درجات الحرية:", dof) print("التكرارات المتوقعة:", expected) # التحقق مما إذا كانت القيمة الاحتمالية أقل من ألفا (مثلاً، 0.05) alpha = 0.05 if p_value < alpha: print("رفض الفرضية الصفرية") else: print("الفشل في رفض الفرضية الصفرية") ```اعتبارات عملية
1. افتراضات اختبارات الفرضيات
العديد من اختبارات الفرضيات لها افتراضات محددة يجب استيفاؤها حتى تكون النتائج صحيحة. على سبيل المثال، غالبًا ما تفترض اختبارات ت وتحليل التباين أن البيانات موزعة بشكل طبيعي ولها تباينات متساوية. من المهم التحقق من هذه الافتراضات قبل تفسير نتائج الاختبارات. يمكن أن يؤدي انتهاك هذه الافتراضات إلى استنتاجات غير دقيقة.
2. حجم العينة وتحليل القوة
يلعب حجم العينة دورًا حاسمًا في قوة اختبار الفرضيات. يزيد حجم العينة الأكبر عمومًا من قوة الاختبار، مما يجعله أكثر قدرة على اكتشاف تأثير حقيقي. يمكن استخدام تحليل القوة لتحديد الحد الأدنى لحجم العينة المطلوب لتحقيق مستوى القوة المرغوب.
مثال (تحليل القوة):
لنفترض أننا نخطط لإجراء اختبار ت ونريد تحديد حجم العينة المطلوب لتحقيق قوة 80% بمستوى دلالة 5%. نحتاج إلى تقدير حجم التأثير (الفرق بين المتوسطات التي نريد اكتشافها) والانحراف المعياري.
```python from statsmodels.stats.power import TTestIndPower # المعلمات effect_size = 0.5 # معامل كوهين d alpha = 0.05 power = 0.8 # إجراء تحليل القوة analysis = TTestIndPower() sample_size = analysis.solve_power(effect_size=effect_size, power=power, alpha=alpha, ratio=1) print("حجم العينة المطلوب لكل مجموعة:", sample_size) ```3. الاختبارات المتعددة
عند إجراء اختبارات فرضيات متعددة، يزداد احتمال ارتكاب خطأ من النوع الأول (إيجابي كاذب). لمعالجة هذه المشكلة، من المهم استخدام طرق لتعديل القيم الاحتمالية، مثل تصحيح بونفيروني أو إجراء بنجاميني-هوكبيرج.
4. تفسير النتائج في سياقها
من الأهمية بمكان تفسير نتائج اختبارات الفرضيات في سياق سؤال البحث والبيانات التي يتم تحليلها. النتيجة ذات الدلالة الإحصائية لا تعني بالضرورة دلالة عملية. ضع في اعتبارك حجم التأثير وتداعياته في العالم الحقيقي.
مواضيع متقدمة
1. اختبار الفرضيات البايزي
يوفر اختبار الفرضيات البايزي نهجًا بديلاً لاختبار الفرضيات التقليدي (التكراري). وهو يتضمن حساب عامل بايز، الذي يحدد كميًا الأدلة لفرضية ما على أخرى.
2. الاختبارات اللامعلمية
تُستخدم الاختبارات اللامعلمية عندما لا يتم استيفاء افتراضات الاختبارات المعلمية (مثل التوزيع الطبيعي). تشمل الأمثلة اختبار مان-ويتني يو، واختبار ويلكوكسون للرتب الموقعة، واختبار كروسكال-واليس.
3. طرق إعادة المعاينة (التمهيد واختبارات التقليب)
توفر طرق إعادة المعاينة، مثل التمهيد (bootstrapping) واختبارات التقليب (permutation tests)، طريقة لتقدير توزيع المعاينة لإحصائية اختبار دون وضع افتراضات قوية حول توزيع المجتمع الأساسي.
الخاتمة
يعد اختبار الفرضيات الإحصائية أداة قوية لاتخاذ القرارات القائمة على البيانات في مختلف المجالات، بما في ذلك العلوم والأعمال والهندسة. من خلال فهم المفاهيم الأساسية والأساليب والاعتبارات العملية، يمكن لعلماء البيانات استخدام اختبار الفرضيات بفعالية لاكتساب رؤى من البيانات واستخلاص استنتاجات ذات مغزى. توفر وحدة scipy.stats في بايثون مجموعة شاملة من الوظائف لإجراء مجموعة واسعة من اختبارات الفرضيات. تذكر أن تدرس بعناية افتراضات كل اختبار، وحجم العينة، وإمكانية إجراء اختبارات متعددة، وأن تفسر النتائج في سياق سؤال البحث. يوفر هذا الدليل أساسًا متينًا لك للبدء في تطبيق هذه الأساليب القوية على مشاكل العالم الحقيقي. استمر في استكشاف وتجربة اختبارات وتقنيات مختلفة لتعميق فهمك وتعزيز مهاراتك في علم البيانات.
لمزيد من التعلم:
- دورات عبر الإنترنت في الإحصاء وعلم البيانات (مثل Coursera, edX, DataCamp)
- كتب الإحصاء المدرسية
- توثيق وحدة
scipy.statsفي بايثون - الأبحاث والمقالات حول تقنيات اختبار الفرضيات المحددة