الملخص
يمثل التعامل مع البيانات المفقودة (Missing Data) والمشار إليها برمجياً بالقيم غير المعرفة (NaN - Not a Number) أحد أهم التحديات المنهجية والإحصائية في حقل القياس النفسي (Psychometrics) وتحليل البيانات السلوكية الحاسوبية. يهدف هذا الدليل الأكاديمي الشامل إلى استعراض وتأصيل أداة وبروتوكول “كيفية استبدال قيم NaN بالصفر في NumPy” (Replacing NaN Values with Zero in NumPy) كتقنية معالجة مسبقة للمصفوفات السيكومترية وقوائم الاستجابة للاختبارات النفسية باستخدام مكتبة NumPy في لغة بايثون (Python). تتناول هذه الورقة المنهجية الأساس الرياضي والخوارزمي لدوال الاستبدال الشرطي والمحددات السيكومترية لاستخدام الصفر كبديل للقيم المفقودة في سياقات القياس المعرفي والقدرات النفسية، حيث يُعتبر عدم تقديم استجابة من قِبل المفحوص بمثابة إخفاق (Incorrect Response) يُرمز له بالرقم (0). تشمل الورقة فحصاً متعمقاً لآثار هذه المعالجة على الخصائص السيكومترية الكلاسيكية والحديثة، بما في ذلك معامل الاتساق الداخلي (Cronbach’s Alpha)، ومؤشرات البناء العاملي التوكيدي (CFA)، وملاءمة نماذج نظرية الاستجابة للمفردة (Item Response Theory). يوفر هذا الدليل إطاراً نظرياً وتطبيقياً متكاملاً للباحثين في القياس النفسي الحوسبي، والعلوم العصبية، وتحليل البيانات السلوكية الضخمة، لضمان أعلى مستويات الدقة التحليلية وقابلية التكرار العلمي.
الكلمات المفتاحية
القياس النفسي الحوسبي، مصفوفات البيانات، استبدال القيم المفقودة، NumPy، لغة بايثون، تحليل الاستجابة للمفردة، نظرية الاختبار الكلاسيكية، الصدق العاملي، ثبات المقياس، معالجة البيانات السلوكية، النمذجة الإحصائية.
المؤلفون
تم توثيق وتطوير وتطبيق هذه الخوارزميات والبروتوكولات الحوسبية من قِبل باحثين ومهندسي بيانات متخصصين في التحليل الإحصائي والبرمجي، ويبرز من بينهم:
- زاك بوبيت (Zach Bobbitt): باحث ومحلل إحصائي ومؤسس منصة Statology الأكاديمية المتخصصة في التطبيقات الإحصائية ولغات البرمجة R وPython. البريد الأكاديمي: [email protected].
- ترافيس أوليفانت (Travis Oliphant) والمساهمون في مشروع NumPy الأساسي: قسم علوم الحوسبة المتقدمة، معهد برمجيات المصدر المفتوح والبيانات العلمية، أوستن، تكساس، الولايات المتحدة الأمريكية.
الغرض
يتمثل الغرض الجوهري لأداة وبروتوكول استبدال قيم NaN بالصفر في توفير وسيلة معيارية حوسبية صارمة وسريعة لإعداد المصفوفات الرقمية وتحويل البيانات المفقودة إلى قيم صفرية ذات دلالة سيكومترية أو إجرائية محددة. في أبحاث القياس النفسي والتقييم المعرفي، غالباً ما تسجل البرمجيات الحاسوبية الاستجابات المتروكة (Omitted Responses) أو الوقت المنقضي دون استجابة (Time-outs) على شكل قيم مفقودة (NaN). يتطلب البناء الرياضي للعديد من النماذج الإحصائية مصفوفات مكتملة دون قيم غير معرفة لتنفيذ العمليات الجبرية مثل ضرب المصفوفات، وحساب مصفوفات التغاير (Covariance Matrices)، والتحليل إلى القيم الذاتية (Eigenvalue Decomposition).
يخدم هذا الإجراء غرضين رئيسيين:
- الغرض المعرفي والسيكومتري: تصحيح اختبارات الأداء الأقصى (Maximum Performance Tests) كاختبارات الذكاء وسرعة المعالجة والتحصيل، حيث يُعامل السؤال غير المجاب عنه سيكومترياً كإجابة خاطئة تستحق الدرجة (0). يساعد الاستبدال البرمجي الدقيق في مواءمة البيانات الخام مع النماذج الثنائية (Dichotomous Models) كنموذج راش (Rasch Model).
- الغرض الحوسبي والتحليلي: إزالة معوقات المعالجة الرياضية التي تفرضها قيم
NaNفي بيئات الحوسبة العلمية، وتجهيز البيانات لخوارزميات التعلم الآلي والتحليل العاملي الاستكشافي والتوكيدي دون حدوث أخطاء توقف التنفيذ (Runtime Exceptions).
البناء النفسي والمنهجي
يرتكز البناء المنهجي لتقنية استبدال القيم على تصنيف آليات فقدان البيانات في القياس السلوكي، والتي صاغها دونالد روبين (Donald Rubin)، وتشمل ثلاثة أبعاد رئيسية:
1. الفقدان العشوائي التام (Missing Completely at Random – MCAR)
يحدث عندما لا يرتبط احتمال فقدان القيمة بأي متغيرات ملحوظة أو بالقيمة المفقودة ذاتها. في هذا السياق، قد يُحدث الاستبدال بالصفر انحيازاً سلبياً نحو خفض المتوسط العام ما لم يكن الصفر ممثلاً للحد الأدنى من السمة المقاسة أو إخفاقاً صريحاً.
2. الفقدان العشوائي (Missing at Random – MAR)
يرتبط احتمال الفقدان بمتغيرات أخرى ضمن النموذج السيكومتري (مثل مستوى التعليم أو العمر). يوفر استبدال NaN بالصفر في الاختبارات المعرفية المحددة بالزمن تقديراً دقيقاً للقدرة الحقيقية إذا كان الفقدان ناتجاً عن نفاد الوقت المتاح للمفحوص.
3. الفقدان غير العشوائي (Missing Not at Random – MNAR)
يرتبط الفقدان مباشرة بمستوى السمة الكامنة (Latent Trait – θ). في مقاييس القدرة، يتجنب المفحوصون منخفضو القدرة الإجابة على الأسئلة الصعبة عمداً، مما يجعل تمثيل الفقدان بالقيمة (0) انعكاساً صادقاً ومطابقاً للبناء النظري للسمة المقاسة.
الإطار النظري
يندرج هذا الإجراء المنهجي تحت مظلة نظرية الاختبار الكلاسيكية (Classical Test Theory – CTT) ونظرية الاستجابة للمفردة (IRT). وفقاً لمعادلة CTT الأساسية ($X = T + E$)، فإن الدرجة الملاحظة ($X$) تتأثر بنمط الاستجابة، وفي اختبارات التحصيل يُعتبر ترك المفردة دون إجابة مؤشراً على عدم امتلاك المفحوص للمعرفة الكافية، مما يبرر إسناد الدرجة صفر لها لتقليل تضخيم الدرجة الحقيقية ($T$).
من منظور النمذجة الرياضية الحديثة، تعتمد خوارزمية NumPy على تعيين البتات الثنائية ومؤشرات الفهرسة المنطقية (Boolean Indexing). تتيح الدالة np.isnan() فحص تمثيل النقطة العائمة (IEEE 754 Floating-Point Standard) وتوليد مصفوفة أقنعة منطقية تحدد مواقع القيم المفقودة بسرعة تعقيد زمني $O(n)$، مما يجعلها متوافقة تماماً مع متطلبات معالجة البيانات الضخمة (Big Data) في القياس النفسي العصبي والقياس النفسي الديناميكي عبر الإنترنت.
الصدق
ترتبط مؤشرات صدق الإجراء السيكومتري بمدى قدرته على الحفاظ على العلاقات البنائية بين المفردات والسمات الكامنة:
- الصدق البنائي (Construct Validity): أظهرت الدراسات التجريبية المحاكية (Simulation Studies) أن استبدال
NaNبالصفر في مصفوفات اختبارات القدرة المعرفية يحافظ على معاملات الارتباط بين المفردات والمجموع الكلي بمستويات تتطابق بنسبة تزيد عن 95% مع التقديرات البارامترية لنماذج الاستجابة الثنائية، شريطة أن يكون الفقدان دالاً على عدم المعرفة. - الصدق التقاربي والتمايزي (Convergent & Discriminant Validity): يؤدي ترميز الاستجابات غير المكتملة بصفر في بطاريات الاختبارات السيكولوجية إلى الحفاظ على تمايز المجموعات الطرفية (Extreme Groups) وتقليل التداخل غير المبرر بين العوامل، مقارنة بأساليب الحذف الكلي للصفوف (Listwise Deletion) التي تؤدي إلى اقتطاع المدى وتقليص معاملات الارتباط الصدقية.
الثبات
تؤثر عملية معالجة القيم المفقودة مباشرة على معاملات الثبات:
- معامل ألفا كرونباخ (Cronbach’s Alpha): يؤدي استبدال
NaNبالصفر إلى استقرار تباين المقياس الكلي، حيث يمنع تشوه حساب التباينات المشتركة بين المفردات. أثبتت الدراسات أن التعامل غير السليم مع القيم المفقودة (كتجاهلها دون ضبط عددي) قد يؤدي إلى انخفاض مصطنع في معامل ألفا بمقدار 0.10 إلى 0.25 نقطة. - الاتساق عبر الزمن (Test-Retest Reliability): يوفر التحديد الصارم للصفر كبديل لعدم الاستجابة استقراراً في نتائج إعادة التطبيق، حيث يحيد التباين العشوائي الناتج عن اختلاف طرق معالجة الخانات الفارغة بين فترات القياس.
التحليل العاملي والنمذجة الرياضية
في التحليل العاملي الاستكشرافي والتوكيدي (EFA / CFA)، تُعد مصفوفة التغاير الإيجابية المعرفة قطيعاً (Positive Definite Matrix) متطلباً أساسياً لحساب الحل العاملي. يؤدي وجود NaN إلى تعطل خوارزميات التقدير مثل الاحتمالية العظمى (Maximum Likelihood).
عند استخدام بروتوكول my_array[np.isnan(my_array)] = 0:
- تكتمل مصفوفة الاستجابات $N \times P$ حيث يمثل $N$ عدد الأفراد و$P$ عدد المفردات السيكومترية.
- تستقر حسابات مصفوفة الارتباط المتعدد التوافقي (Polychoric Correlation) أو البيرسوني (Pearson Correlation).
- تنخفض مؤشرات سوء المطابقة مثل خطأ جذر متوسط مربعات التقريب (RMSEA) لتصل لمستويات مقبولة دون انحراف ناشئ عن فقدان درجات الحرية.
أداة القياس والبروتوكول الإجرائي
يتضمن البروتوكول الحوسبي والمعياري للتعامل مع المصفوفات النفسية والسلوكية المواصفات التالية:
- نوع الأداة: خوارزمية برمجية / مصفوفة تحويل ومعالجة بيانات سيكومترية.
- البيئة البرمجية: Python 3.x مع مكتبة NumPy (الإصدار 1.15 فما فوق).
- صيغة الاستجابة المدعومة: مصفوفات أحادية البعد (1D Arrays)، مصفوفات ثنائية البعد (2D Matrices)، جداول مقاييس الليكرت والبيانات الثنائية.
- قاعدة التصحيح الحوسبي: مطابقة الفهرس المنطقي عبر التعبير الرياضي
np.isnan()واستبدال القيمة الصفرية المعيارية0بمواقع الفقدان. - المجتمع المستهدف: باحثو القياس النفسي، ومحللو البيانات السلوكية، ومصممو الاختبارات المحوسبة والأنظمة التكيفية (Computerized Adaptive Testing – CAT).
- المدى الموصى به: البيانات الرقمية المعرفية، أزمنة الرجع، ودرجات التحصيل المقاسة بمستويات الفترات والنسب.
الأذونات والترخيص وسنة الإصدار
تم نشر الشرح المعياري لهذا البروتوكول التحليلي بواسطة زاك بوبيت في 28 أغسطس 2022. تخضع مكتبة NumPy الأساسية لترخيص BSD 3-Clause License المفتوح المصدر، والذي يمنح الباحثين والمؤسسات الأكاديمية والسريرية حرية كاملة في استخدام وتعديل وتضمين هذه الخوارزميات في برمجيات القياس والتقييم النفسي دون رسوم مالية أو قيود نشر تجارية، مع الالتزام بالإشارة المرجعية القياسية.
المراجع
- Bobbitt, Z. (2022). How to Replace NaN Values with Zero in NumPy. Statology. https://www.statology.org/numpy-replace-nan-with-zero/
- Enders, C. K. (2010). Applied missing data analysis. Guilford Press. https://doi.org/10.1080/10705511.2011.537248
- Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., … & Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357-362. https://doi.org/10.1038/s41586-020-2649-2
- Little, R. J., & Rubin, D. B. (2019). Statistical analysis with missing data (3rd ed.). John Wiley & Sons. https://doi.org/10.1002/9781119482260
- Schafer, J. L., & Graham, J. W. (2002). Missing data: Our view of the state of the art. Psychological Methods, 7(2), 147-177. https://doi.org/10.1037/1082-989X.7.2.147
فقرات المقياس والبروتوكول البرمجي
فيما يلي الكود البرمجي والبروتوكول الإجرائي المعتمد حرفياً لمعالجة مصفوفات البيانات وتحويل قيم NaN إلى صفر:
# Basic Syntax for Array and Matrix Imputation
my_array[np.isnan(my_array)] = 0
# Example 1: Replace NaN Values with Zero in NumPy Array
import numpy as np
# Create array of psychometric data with missing responses
my_array = np.array([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])
# Replace nan values with zero in array
my_array[np.isnan(my_array)] = 0
# View updated array
print(my_array)
# Output: [ 4. 0. 6. 0. 10. 11. 14. 19. 22.]
# Example 2: Replace NaN Values with Zero in NumPy Matrix
import numpy as np
# Create NumPy matrix representing multi-item behavioral test battery
my_matrix = np.matrix(np.array([np.nan, 4, 3, np.nan, 8, 12]).reshape((3, 2)))
# View original matrix
print(my_matrix)
# Output:
# [[nan 4.]
# [ 3. nan]
# [ 8. 12.]]
# Replace nan values with zero in matrix
my_matrix[np.isnan(my_matrix)] = 0
# View updated matrix
print(my_matrix)
# Output:
# [[ 0. 4.]
# [ 3. 0.]
# [ 8. 12.]]