الإحصاء الوصفي, التحليل الإحصائي, برمجة SAS

كيفية استخدام Proc Tabulate في SAS (مع أمثلة)


يُعد نظام التحليل الإحصائي SAS (Statistical Analysis System) أحد أقوى البيئات البرمجية الرائدة عالمياً في معالجة البيانات والتحليلات الإحصائية المتقدمة وإدارة مستودعات البيانات الضخمة في مختلف المجالات الأكاديمية والطبية والصناعية. ومن بين الترسانة الواسعة من الإجراءات التحليلية (Procedures) التي يتيحها هذا النظام، يبرز إجراء PROC TABULATE كأداة هندسية فائقة المرونة والدقة لتلخيص البيانات وتوليد التقارير المجدولة المعقدة متعددة الأبعاد، حيث يجمع بين البساطة الهيكلية في صياغة الجداول المتقاطعة والقدرة المتناهية على التحكم في التخطيط البصري والمكاني للمخرجات الإحصائية بما يتجاوز قدرات الإجراءات التلخيصية القياسية الأخرى.

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

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

1. مقدمة شاملة لإجراء PROC TABULATE في نظام SAS

1.1 مفهوم PROC TABULATE وأهميته الإحصائية

يُعرف إجراء PROC TABULATE في بيئة SAS بأنه إجراء جدولي تلخيصي مخصص لبناء تقارير إحصائية متقدمة تعرض البيانات في هيئة جداول متعددة الأبعاد (Multi-dimensional Tables). على عكس الإجراءات الوصفية البسيطة التي تطبع المخرجات في سلاسل متعاقبة من الجداول الخطية المنفصلة، يعمل PROC TABULATE كمنظومة تخطيط هيكلي تتيح ترتيب وتلخيص البيانات المعقدة بكفاءة مكانية فائقة. تعتمد فلسفة الإجراء على دمج المقاييس الإحصائية الوصفية مباشرة في تقاطعات الصفوف والأعمدة، مما يمنح الباحثين القدرة على استيعاب العلاقات المتبادلة بين المتغيرات المتعددة في لمحة بصرية واحدة.

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

يتيح إجراء PROC TABULATE مرونة استثنائية في التحول من المخرجات النصية التقليدية البسيطة (Listing Output) إلى المخرجات التنسيقية المتقدمة عالية الجودة. وبفضل تكامله العميق مع نظام تسليم المخرجات في ساس SAS Output Delivery System (ODS)، يستطيع المحلل تصدير هذه الجداول التلخيصية المعقدة مباشرة إلى ملفات بتنسيقات متعددة مثل HTML وPDF وRTF وجداول Excel (عبر وسم ODS EXCEL)، محتفظاً بالبنية الهرمية والتنسيقات الجمالية وتظليل الخلايا، مما يوفر ساعات طويلة من العمل اليدوي لإعادة تنسيق الجداول لأغراض النشر والتقارير التنفيذية.

1.2 الأهداف الأساسية لاستخدام الإجراء في التحليل الإحصائي

تتمحور الأهداف الأساسية لاستخدام PROC TABULATE حول تحقيق أقصى درجات الكفاءة الإحصائية والتنظيمية في عرض البيانات الوصفية. يُمكّن الإجراء المحلل من حساب المقاييس الإحصائية الوصفية الكلاسيكية، كالمتوسط الحسابي، والانحراف المعياري، والخطأ المعياري للمتوسط، والوسيط، والمدى الربيعي، والنسب المئوية، بشكل مجمع ومنظم ومبوب حسب مستويات المتغيرات التصنيفية دون الحاجة إلى تكرار تشغيل الإجراءات على مجموعات البيانات الفرعية بشكل منفصل، مما يقلل من زمن المعالجة البرمجية والأخطاء الناتجة عن تجميع النتائج يدوياً.

علاوة على ذلك، يمثل الإجراء منصة متقدمة لتوليد الجداول المتقاطعة (Cross-Tabulations) المعقدة، والتي تُعد الأساس في استكشاف التوزيعات التكرارية الثنائية والمتعددة واحتساب النسب المئوية المتجهة (Row Percentages, Column Percentages, and Table Percentages). وتتيح هذه الإمكانية فحص أنماط الاستجابة ومساهمة كل فئة فرعية في المجموع الكلي، وهو ما يُعد جوهرياً في الدراسات الديموغرافية والمسوح الميدانية واستطلاعات الرأي العام.

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

1.3 الفروق الجوهرية بين PROC TABULATE وإجراءات التلخيص الأخرى

يتميز نظام SAS باحتوائه على عدة إجراءات مخصصة لتلخيص البيانات، إلا أن هناك فروقاً جوهرية واضحة تجعل من PROC TABULATE الخيار الأمثل لسيناريوهات تقريرية محددة. مقارنة بإجراء PROC MEANS أو PROC SUMMARY، اللذين يركزان أساساً على الحسابات الرياضية وتوليد مجموعات بيانات إحصائية مخرجة (Output Datasets)، يتفوق PROC TABULATE في المرونة الفائقة لتخطيط هيكل الجدول النهائي، والتحكم في محاذاة وتوزيع الإحصاءات على مستوى الصفوف والأعمدة بشكل مرئي متناسق يصعب تحقيقه في PROC MEANS دون معالجات برمجية إضافية.

أما بالمقارنة مع إجراء PROC FREQ، فإن الأخير متخصص بامتياز في تحليل الجداول التكرارية البسيطة واحتساب الاختبارات الإحصائية اللابارامترية واختبارات الاستقلالية مثل اختبار مربع كاي (Chi-Square) واختبار فيشر الدقيق (Fisher’s Exact Test)، ولكنه يفتقر إلى القدرة على دمج المتغيرات المستمرة واحتساب المتوسطات والانحرافات داخل خلايا الجدول المتقاطع، وهو ما يبرع فيه PROC TABULATE الذي يجمع بين التكرارات والإحصاءات الكمية مع دعم التنسيقات الهرمية متعددة المستويات في رؤوس الجداول.

وعند المقارنة مع إجراء PROC REPORT، نجد أن PROC REPORT يمثل بيئة برمجية متكاملة تتيح التحكم الدقيق في كل خلية وصف باستخدام عبارات الحوسبة المخصصة (COMPUTE blocks)، ولكنه يتطلب صياغة برمجية أطول وأكثر تعقيداً لبناء جداول ثلاثية الأبعاد أو جداول متقاطعة متداخلة. يوفر PROC TABULATE صياغة نحوية مقتضبة وأنيقة تعتمد على العوامل الجبرية المنطقية لبناء هياكل الجداول الهرمية بسرعة مذهلة، مع كفاءة حاسوبية عالية في استهلاك الذاكرة وسرعة المعالجة عند التعامل مع قواعد البيانات الكبيرة والمعقدة.

2. البنية النحوية والتركيب الهيكلي لعبارات PROC TABULATE

2.1 العبارة الرئيسية وتحديد مجموعة البيانات (PROC TABULATE Statement)

تبدأ كل خطوة برمجية للإجراء بالعبارة الرئيسية PROC TABULATE متبوعة بمجموعة من الخيارات الأساسية التي تضبط سلوك التحليل والبيئة العامة للمخرجات. الخيار الأول والأكثر أهمية هو تحديد مجموعة البيانات المدخلة عبر الخيار DATA=libref.dataset، والذي يوجه محرك ساس لقراءة المتغيرات والملاحظات من جدول محدد داخل مكتبة العمل أو المكتبات الدائمة. إذا لم يُحدد هذا الخيار، يقوم ساس افتراضياً باستخدام آخر مجموعة بيانات تم إنشاؤها في جلسة العمل الحالية.

تتضمن العبارة الرئيسية مجموعة خيارات عامة تتحكم في معالجة الملاحظات وتنسيق الجدول النهائي، ومن أبرزها خيار MISSING الذي يوجه الإجراء إلى معاملة القيم المفقودة في المتغيرات التصنيفية كفئات صالحة للتحليل والجدولة بدلاً من استبعاد الملاحظات بالكامل من التقرير، وهو أمر بالغ الأهمية للحفاظ على سلامة أحجام العينات. كما يُستخدم خيار NOSEPS لمنع طباعة الخطوط الفاصلة الأفقية بين الصفوف في المخرجات النصية التقليدية، بينما يتيح خيار FORMCHAR تخصيص رموز وأحرف رسم حدود وخلايا الجدول عند التصدير النصي.

تتيح العبارة الرئيسية أيضاً التحكم في ترتيب ظهور المستويات الفئوية باستخدام خيار ORDER=، والذي يقبل خيارات متعددة تشمل: ORDER=DATA (للترتيب حسب أسبقية الظهور في ملف البيانات)، وORDER=FREQ (للترتيب تنازلياً حسب تكرار الفئة)، وORDER=FORMATTED (للترتيب الأبجدي حسب القيم المنسقة، وهو الخيار الافتراضي)، وORDER=UNFORMATTED (للترتيب حسب القيم الرقمية أو النصية الخام قبل التنسيق). ولتخصيص الخلايا التي لا تسجل أي مشاهدات أو إحصاءات، يوفر خيار MISSTEXT='Text' إمكانية تحديد نص بديل مخصص (مثل “N/A” أو “0” أو “-“) بدلاً من ترك الخلية فارغة أو طباعة نقطة افتراضية.

2.2 التمييز الدقيق بين عبارة CLASS وعبارة VAR

يفرض إجراء PROC TABULATE تقسيماً صارماً ومنطقياً لنوعية المتغيرات المستخدمة في التحليل من خلال عبارتين أساسيتين: عبارة CLASS وعبارة VAR. تُستخدم عبارة CLASS (المتغيرات التصنيفية أو الفئوية) لتعريف المتغيرات النوعية الاسمية أو الترتيبية التي تُستخدم لتقسيم وتصنيف البيانات إلى مجموعات فرعية، مثل متغير الجنس، والموقع الجغرافي، والمجموعة التجريبية، والحالة الصحية. تحدد هذه المتغيرات هيكل الصفوف والأعمدة في الجدول المتقاطع، وتعمل كمحددات ومفاتيح للتجميع الإحصائي.

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

يؤدي الخلط بين هاتين العبارتين إلى أخطاء شائعة توقف تنفيذ البرنامج؛ فإدراج متغير كمي مستمر داخل عبارة CLASS يؤدي إلى إنشاء صف أو عمود منفصل لكل قيمة مفردة للمتغير، مما ينتج عنه انفجار في أبعاد الجدول (Combinatorial Explosion) واستهلاك الذاكرة. وبالمثل، فإن إدراج متغير تصنيفي (نصي أو رقمي) داخل عبارة VAR سيؤدي إلى محاولة احتساب المتوسطات له، وهو ما يفشل منطقياً وبرمجياً مع النصوص. وتتيح عبارة CLASS أيضاً الكلمة المفتاحية MLF (Multi-Label Formats) التي تسمح بتداخل الفئات وتطبيق تصنيفات متعددة متزامنة لنفس المتغير بناءً على تنسيقات مسبقة تم تعريفها في PROC FORMAT.

2.3 صياغة وتصميم عبارة الجدول (TABLE Statement)

تُعد عبارة TABLE المحرك الأساسي والهندسي لإجراء PROC TABULATE، حيث تحدد بدقة التصميم البصري والأبعاد المكانية للمخرجات. تتميز صياغة عبارة TABLE بقدرتها على تعريف ما يصل إلى ثلاثة أبعاد هندسية متعامدة تُفصل بينها الفاصلة الإنجليزية (,). هذه الأبعاد هي: بُعد الصفحات (Pages)، وبُعد الصفوف (Rows)، وبُعد الأعمدة (Columns)، وتتبع قواعد ترتيب جبرية صارمة تحدد موقع كل متغير ومقياس إحصائي.

تخضع صياغة الأبعاد في عبارة TABLE للقواعد القياسية التالية حسب عدد الفواصل المستخدمة:

  • البعد المفرد (One-Dimensional Table): عند كتابة عبارة TABLE بدون أي فواصل، يُترجم التعبير بأكمله على أنه بُعد الأعمدة فقط (Columns)، وتظهر البيانات في صف أفقي واحد مقسم إلى أعمدة.
  • البعد المزدوج (Two-Dimensional Table): عند استخدام فاصلة واحدة تفصل بين تعبيرين (TABLE Row_Expression, Column_Expression;)، يُحدد التعبير الأول هيكل الصفوف، بينما يحدد التعبير الثاني هيكل الأعمدة.
  • البعد الثلاثي (Three-Dimensional Table): عند استخدام فاصلتين تفصلان بين ثلاثة تعابير (TABLE Page_Expression, Row_Expression, Column_Expression;)، يُحدد التعبير الأول الصفحات (حيث يُولد جدول منفصل لكل مستوى من مستويات المتغير)، ويحدد التعبير الثاني الصفوف، ويحدد التعبير الثالث الأعمدة.

يعتمد منطق العرض الجدولي على الترتيب الدقيق للمتغيرات والإحصاءات داخل التعبير الخاص بكل بُعد. فمن خلال دمج العوامل المنطقية (كالضرب للنقل والتداخل، والفراغ للتجاور)، يستطيع المحلل رسم خرائط جدولية بالغة التعقيد تعرض المقاييس الإحصائية في الصفوف والمتغيرات التصنيفية في الأعمدة، أو العكس، مع ضمان الوضوح البصري الكامل والتماسك الدلالي للتقرير الإحصائي.

3. إنشاء وتجهيز مجموعات البيانات التطبيقية

3.1 بناء مجموعة بيانات تجريبية متعددة المتغيرات

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

يتم إنشاء هذه البيانات عبر خطوة DATA step قياسية في SAS باستخدام الأمر DATALINES أو CARDS، مع تحديد سمات المتغيرات وتنسيق أنواعها النصية والرقمية، كما هو موضح في البناء البرمجي التالي:

DATA WorkPerformance;
 LENGTH Branch $12 Department$15 Gender $1 JobLevel$10;
 INPUT ID Branch $ Department $ Gender $ JobLevel $ Experience Score Satisfaction Salary;
 DATALINES;
 101 North Analytics M Senior 8 88.5 7.8 85000
 102 North Analytics F Senior 9 92.0 8.5 91000
 103 North Analytics M Junior 2 74.0 6.2 52000
 104 North Analytics F Junior 3 79.5 7.0 56000
 105 North Operations M Mid-Level 5 81.0 6.9 64000
 106 North Operations F Mid-Level 6 85.5 7.4 68000
 107 North Operations M Junior 1 69.0 5.8 48000
 108 North Operations F Senior 11 94.5 9.0 95000
 109 South Analytics M Senior 7 86.0 7.5 82000
 110 South Analytics F Mid-Level 4 80.5 7.1 63000
 111 South Analytics F Junior 2 76.0 6.5 54000
 112 South Analytics M Junior 3 72.5 6.0 51000
 113 South Operations M Senior 10 89.0 8.2 88000
 114 South Operations F Mid-Level 5 83.0 7.3 66000
 115 South Operations M Mid-Level 4 78.0 6.4 61000
 116 South Operations F Junior 1 71.0 5.9 49000
 117 East Analytics M Senior 12 95.0 9.2 98000
 118 East Analytics F Senior 8 90.0 8.4 89000
 119 East Analytics M Mid-Level 6 84.0 7.6 67000
 120 East Operations F Junior 2 73.0 6.1 53000
 121 East Operations M Junior 3 75.5 6.8 55000
 122 East Operations F Senior 9 91.5 8.7 92000
 ;
RUN;

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

3.2 تطبيق التنسيقات (Formats) والتسميات (Labels) التوضيحية

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

يوضح الكود التالي كيفية إنشاء تنسيقات مخصصة لمتغيرات الجنس ومستويات الأداء والرواتب، وتطبيق التسميات الوصفية على المتغيرات:

PROC FORMAT;
 VALUE $GndrFmt
 'M' = 'ذكور (Male)'
 'F' = 'إناث (Female)';
 VALUE ScoreRange
 LOW - < 75 = 'أداء بحاجة لتطوير (<75)'
 75 - < 85 = 'أداء جيد (75-84)'
 85 - HIGH = 'أداء متميز (85+)';
 VALUE SalaryFmt
 LOW - < 60000 = 'فئة الرواتب الدنيا'
 60000 - < 80000 = 'فئة الرواتب المتوسطة'
 80000 - HIGH = 'فئة الرواتب العليا';
RUN;
DATA WorkPerformanceFormatted;
 SET WorkPerformance;
 LABEL 
 Branch = 'الفرع الجغرافي'
 Department = 'الإدارة / القسم'
 Gender = 'النوع الاجتماعي'
 JobLevel = 'المستوى الوظيفي'
 Experience = 'سنوات الخبرة المهنية'
 Score = 'درجة تقييم الأداء السنوي'
 Satisfaction = 'مؤشر الرضا الوظيفي'
 Salary = 'الراتب الأساسي السنوي';
 FORMAT Gender $GndrFmt. Score ScoreRange.;
RUN;

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

4. تطبيق PROC TABULATE على متغير كمي أحادي

4.1 حساب المقاييس الإحصائية الوصفية الأساسية

يمثل التحليل الوصفي لمتغير كمي أحادي أبسط تطبيقات PROC TABULATE ونقطة الانطلاق لفهم آلياته الحسابية. عند التعامل مع متغير مستمر، مثل درجة تقييم الأداء السنوي (Score)، فإننا نعرف المتغير في عبارة VAR، ثم نقوم بتحديد المقاييس الإحصائية المطلوبة في عبارة TABLE.

لحساب المقاييس الإحصائية المركزية والتشتتية الأساسية، مثل المتوسط الحسابي (Mean)، والانحراف المعياري (Std Dev)، وحجم العينة الفعال (N)، وعدد القيم المفقودة (NMISS)، نصوغ الكود البرمجي التالي:

PROC TABULATE DATA=WorkPerformanceFormatted;
 VAR Score;
 TABLE Score * (N NMISS MEAN STD);
RUN;

في هذا البناء، يقوم عامل الضرب (*) بربط المتغير التحليلي Score بمجموعة الإحصاءات المحصورة بين قوسين. ينتج عن هذا التعبير جدول أحادي البعد يعرض إجمالي عدد المشاهدات، وعدد القيم المفقودة (والذي يسجل 0 في بياناتنا)، وقيمة المتوسط الحسابي لدرجات الأداء عبر كامل العينة، والانحراف المعياري الذي يعكس درجة تجانس أو تباين الدرجات حول المتوسط الحسابي العام، في صف أفقي واحد مقسم بأعمدة واضحة ومنسقة.

4.2 حساب مقاييس الموقع والربيعيات والقيم القصوى

في العديد من السيناريوهات الإحصائية، لا سيما عند التعامل مع بيانات قد تحتوي على قيم متطرفة أو توزيعات ملتوية غير اعتدالية، يصبح الاعتماد على المتوسط والانحراف المعياري غير كافٍ، وتبرز الحاجة إلى مقاييس الموقع اللابارامترية ومقاييس التشتت القائمة على الرتب، مثل الوسيط (Median)، والربيعات (Quartiles)، والمدى الربيعي (Interquartile Range – QRANGE)، والقيم الدنيا والقصوى (Min, Max).

يتيح PROC TABULATE استدعاء هذه الإحصاءات المتقدمة بسهولة عبر كلماتها المفتاحية المخصصة كما يوضح الكود التالي:

PROC TABULATE DATA=WorkPerformanceFormatted;
 VAR Score;
 TABLE Score * (MIN Q1 MEDIAN Q3 MAX QRANGE);
RUN;

يوفر هذا الجدول توصيفاً دقيقاً للبنية التوزيعية لمتغير الأداء؛ حيث يقدم الحد الأدنى (MIN) والحد الأقصى (MAX) صورة شاملة عن المدى الكلي للبيانات، بينما يمثل الربيع الأول (Q1) النقطة المئينية 25، والربيع الثالث (Q3) النقطة المئينية 75، ويقيس الوسيط (MEDIAN) القيمة المركزية التي تقسم العينة إلى نصفين متساويين، في حين يعبر المدى الربيعي (QRANGE = Q3 – Q1) عن تشتت الـ 50% الوسطى من المشاهدات، مما يمنح الباحث تقييماً إحصائياً متكاملاً يتسم بالمتانة ومقاومة القيم الشاذة.

4.3 تغيير اتجاه العرض بين الصفوف والأعمدة للمتغير الأحادي

تعتمد سهولة قراءة التقرير الإحصائي بشكل كبير على التوجيه المكاني للمخرجات، حيث يفضل بعض الباحثين عرض الإحصاءات الوصفية كأعمدة أفقية لتوفير المساحة الرأسية، بينما يفضل آخرون عرضها في صفوف رأسية عند تضمين قائمة طويلة من المؤشرات الإحصائية. يتيح PROC TABULATE التحويل بين هذين التخطيطين ببساطة تامة من خلال التحكم في موضع الفاصلة في عبارة TABLE.

لعرض الإحصاءات الوصفية في شكل صفوف رأسية، نضع تعبير المتغير والإحصاءات قبل الفاصلة، أو نحدد المتغير كصف والإحصاءات كأعمدة أو العكس، كما يظهر في النموذج البرمجي التالي:

/* عرض الإحصاءات كصفوف رأسية */
PROC TABULATE DATA=WorkPerformanceFormatted;
 VAR Score;
 TABLE Score, (N MEAN STD MIN MEDIAN MAX);
RUN;
/* عرض أسماء الإحصاءات كصفوف والمتغير كعمود */
PROC TABULATE DATA=WorkPerformanceFormatted;
 VAR Score;
 TABLE (N MEAN STD MIN MEDIAN MAX), Score;
RUN;

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

5. التحليل الإحصائي الوصفي ثنائي الأبعاد عبر المتغيرات الفئوية

5.1 تضمين متغير فئوي أحادي مع متغير كمي

يبدأ التعقيد الإحصائي الفعلي عندما نريد مقارنة سلوك متغير كمي عبر مستويات متعددة لمتغير فئوي تصنيفي. في هذا السياق، نعرف المتغير التصنيفي (مثل: Department) داخل عبارة CLASS، والمتغير الكمي (مثل: Score) داخل عبارة VAR، ثم نربط بينهما في عبارة TABLE.

يوضح الكود التالي كيفية بناء جدول مقارنة وصفي يوضح متوسطات وانحرافات درجات الأداء موزعة حسب الأقسام الإدارية:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Department;
 VAR Score;
 TABLE Department, Score * (N MEAN STD);
RUN;

في هذا الجدول ثنائي الأبعاد، تم وضع المتغير الفئوي Department في بُعد الصفوف (قبل الفاصلة)، بينما تم وضع المتغير التحليلي Score متداخلاً مع الإحصاءات الوصفية في بُعد الأعمدة (بعد الفاصلة). تُظهر المخرجات الناتجة كل قسم (Analytics و Operations) في صف مستقل، وبجانبه حجم العينة في ذلك القسم، ومتوسط درجات الأداء، والانحراف المعياري، مما يتيح إجراء مقارنة بصرية سريعة ومباشرة لاكتشاف الفروق الظاهرية في الأداء بين الإدارات.

5.2 إنشاء الجداول المتقاطعة (Cross-Tabulation) بين متغيرين فئويين

عندما تكون جميع المتغيرات محل الدراسة متغيرات فئوية ونوعية، يُستخدم PROC TABULATE لإنشاء جداول التوزيع التكراري المتقاطع ثنائية الأبعاد (Contingency Tables). في هذه الحالة، ندرج كلا المتغيرين في عبارة CLASS ولا نستخدم عبارة VAR، حيث يصبح المقياس الإحصائي التلقائي هو التكرار البسيط (N).

لبناء جدول متقاطع يربط بين الفروع الجغرافية (Branch) ومستويات الوظائف (JobLevel)، نصوغ الكود التالي:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch JobLevel;
 TABLE Branch, JobLevel * N;
RUN;

يقوم هذا الكود بتوليد مصفوفة تقاطعية يمثل كل صف فيها فرعاً جغرافياً معيناً (East, North, South)، ويمثل كل عمود مستوى وظيفياً (Junior, Mid-Level, Senior). تحتوي كل خلية داخل المصفوفة على تكرار الأفراد الذين يجمعون بين هذين التصنيفين. يفيد هذا التحليل في فحص التوزيع الهيكلي للقوى العاملة والتأكد من عدم وجود خلايا فارغة أو غير متوازنة قد تؤثر على التحليلات الاستدلالية اللاحقة، مثل تحليل التباين ثنائي الاتجاه (Two-Way ANOVA).

5.3 توزيع المتغيرات بين الصفوف والأعمدة لتحسين التحليل البصري

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

يوضح المثال التالي هذا البناء المتقدم:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Gender;
 VAR Salary;
 TABLE Branch, Gender * Salary * (MEAN STD);
RUN;

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

6. الجداول ثلاثية الأبعاد والتجميع المتقاطع المعقد

6.1 مفهوم واستخدام بعد الصفحات (Page Dimension)

عندما تتسع أبعاد التحليل الإحصائي لتشمل ثلاثة متغيرات تصنيفية أو أكثر، يصبح عرض كافة المعلومات في صفحة واحدة أمراً معقداً ومربكاً بصرياً. يوفر إجراء PROC TABULATE حلاً هندسياً متقدماً من خلال دعم “بُعد الصفحات” (Page Dimension) كبعد ثالث مستقل، يُصاغ رياضياً وبرمجياً في عبارة TABLE كأول عنصر يسبق فاصلتين: TABLE Page_Var, Row_Var, Col_Var;.

يقوم الإجراء بتقسيم التقرير إلى جداول مادية منفصلة، بحيث يُخصص جدول كامل ومستقل لكل مستوى من مستويات المتغير الموضوع في بُعد الصفحات. يوضح الكود التالي تقسيم تحليل الأداء والرواتب حسب الفروع الجغرافية:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department JobLevel;
 VAR Score;
 TABLE Branch, Department, JobLevel * Score * MEAN;
RUN;

عند تنفيذ هذا الكود، يقوم نظام SAS بتوليد صفحة إحصائية خاصة بفرع “East”، تليها صفحة خاصة بفرع “North”، ثم صفحة لفرع “South”. تحتوي كل صفحة على جدول متقاطع ثنائي الأبعاد يوضح أقسام الفرع في الصفوف والمستويات الوظيفية في الأعمدة مع متوسط درجات الأداء لكل خلية. يُعد هذا التكتيك البرمجي ممتازاً عند إعداد تقارير إحصائية دورية موسعة للأقسام الإدارية المختلفة مع المحافظة على التنسيق الموحد لكافة الفروع.

6.2 التداخل الهرمي المتعدد للمتغيرات (Nested Variables)

يمثل التداخل الهرمي (Nesting) أحد أقوى الإمكانيات التحليلية في PROC TABULATE، ويتحقق باستخدام عامل الضرب (*) للربط بين أكثر من متغير تصنيفي داخل نفس البعد (سواء في الصفوف أو الأعمدة). يتيح التداخل عرض التسلسل الهرمي الطبيعي للبيانات، مثل تداخل الأقسام داخل الفروع، أو تداخل المستويات الوظيفية داخل الأقسام.

يوضح النموذج التالي تداخلاً هرمياً مزدوجاً في بُعد الصفوف مع تداخل إحصائي في بُعد الأعمدة:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department Gender;
 VAR Score Satisfaction;
 TABLE Branch * Department, Gender * (Score * MEAN Satisfaction * MEAN);
RUN;

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

6.3 التجميع المتجاور للمتغيرات والإحصاءات (Concatenation)

بينما يؤدي عامل الضرب إلى التداخل الهرمي، يُستخدم عامل الفراغ (Space) لتحقيق “التجاور” (Concatenation) بين المتغيرات أو الإحصاءات داخل نفس البعد دون تداخل بينها. يتيح التجاور وضع جداول متعددة جنباً إلى جنب أو تراكبها فوق بعضها البعض داخل إطار تقريري واحد موحد، مما يوفر مرونة هائلة في المقارنة المباشرة.

يوضح المثال التالي كيفية الجمع المتجاور بين متغيرين تصنيفيين في الصفوف، ومتغيرين تحليليين مع إحصاءاتهما في الأعمدة:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department;
 VAR Score Salary;
 TABLE Branch Department, Score * (MEAN STD) Salary * (MEAN MEDIAN);
RUN;

في هذا التصميم، يعرض الجدول أولاً ملخص الفروع الجغرافية (Branch) متبوعاً مباشرة بملخص الأقسام الإدارية (Department) في بُعد الصفوف. وفي بُعد الأعمدة، يعرض الجدول متوسط وانحراف درجات الأداء (Score) وبجانبه مباشرة متوسط ووسيط الرواتب (Salary). يتيح هذا التنسيق المتجاور للمحلل مراجعة متغيرات وتصنيفات متعددة دون الحاجة إلى تشغيل الإجراء عدة مرات أو إنشاء جداول منفصلة ومجزأة.

7. العوامل الإجرائية والمنطقية في بناء عبارة TABLE

7.1 عامل الفاصلة (Comma Operator) لتحديد الأبعاد

يلعب عامل الفاصلة (,) الدور الأكثر ح حساسية وصرامة في بناء عبارة TABLE، حيث يُعد العامل الوحيد المسؤول عن ترسيم وفصل الأبعاد المكانية للجدول. يترجم مترجم لغة ساس الفواصل بدقة متناهية؛ فغياب الفواصل يعني تماماً أن التعبير ينتمي لبُعد الأعمدة، ووجود فاصلة واحدة يقسم التعبير إلى (صفوف , أعمدة)، بينما يقسم وجود فاصلتين التعبير إلى (صفحات , صفوف , أعمدة).

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

  • TABLE X; ← X يمثل بُعد الأعمدة (تخطيط أفقي).
  • TABLE X, Y; ← X يمثل بُعد الصفوف، و Y يمثل بُعد الأعمدة.
  • TABLE X, Y, Z; ← X يمثل بُعد الصفحات، و Y يمثل الصفوف، و Z يمثل الأعمدة.

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

7.2 عامل الضرب أو النجمة (Asterisk Operator) للتداخل

يُعد عامل الضرب أو النجمة (*) عامل التداخل الهرمي والربط الشرطي الأساسي في PROC TABULATE. وظيفته الجوهرية هي ربط كل مستوى من مستويات العنصر الواقع على يسار النجمة بجميع مستويات العنصر الواقع على يمينها. لا يقتصر استخدام النجمة على ربط المتغيرات التصنيفية ببعضها البعض، بل يمتد ليربط المتغيرات التصنيفية بالمتغيرات التحليلية، وكذلك ربط المتغيرات التحليلية بالمقاييس الإحصائية المحددة لها.

يوضح التعبير التالي التداخل متعدد المستويات: Branch * Department * Score * MEAN. يترجم ساس هذا التعبير بالترتيب التالي: لكل مستوى من مستويات الفرع (Branch)، اعرض الأقسام التابعة له (Department)، ولكل قسم، احسب لمتغير درجات الأداء (Score) المتوسط الحسابي فقط (MEAN). يحدد ترتيب المتغيرات حول النجمة اتجاه التفرع الهرمي؛ فتبديل التعبير إلى Department * Branch * Score * MEAN سيغير الهيكل البصري بالكامل ليصبح القسم هو التصنيف الأساسي وتتفرع تحته الفروع الجغرافية.

7.3 عامل الفراغ (Space) للتجاور وعامل الأقواس (Parentheses) للتجميع

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

بدلاً من كتابة الكود المكرر التالي:

TABLE Branch * Score * MEAN Branch * Score * STD Department * Score * MEAN Department * Score * STD;

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

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department;
 VAR Score;
 TABLE (Branch Department), Score * (MEAN STD);
RUN;

تقوم الأقواس هنا بتوزيع المتغير التحليلي وإحصاءاته (Score * (MEAN STD)) على كل من Branch و Department بالتساوي، مما يلغي التكرار البرمجي، ويقلل من احتمالية ارتكاب الأخطاء الطباعية، ويجعل الكود أكثر قابلية للصيانة والتطوير المستقبلي.

8. المقاييس والإحصاءات المتاحة وحساب النسب المئوية

8.1 قائمة الإحصاءات الوصفية القياسية في PROC TABULATE

يوفر PROC TABULATE مكتبة متكاملة من الكلمات المفتاحية الإحصائية التي تغطي معظم الاحتياجات التحليلية للباحثين والمحللين. تنقسم هذه المقاييس إلى أربع فئات رئيسية:

  • مقاييس النزعة المركزية والمجاميع: وتشمل MEAN (المتوسط الحسابي)، وMEDIAN (الوسيط)، وMODE (المنوال)، وSUM (المجموع التراكمي للقيم).
  • مقاييس التشتت والتباين: وتشمل STD أو STDDEV (الانحراف المعياري)، وVAR (التباين)، وRANGE (المدى المطلق)، وSTDERR (الخطأ المعياري للمتوسط)، وCV (معامل الاختلاف النسبي).
  • القيم الحدية والمئينات: وتشمل MIN (الحد الأدنى)، وMAX (الحد الأقصى)، ومختلف المئينات المحددة مسبقاً مثل P1، P5، P10، Q1 (P25)، Q3 (P75)، P90، P95، P99، بالإضافة إلى المدى الربيعي QRANGE.
  • إحصاءات حجم العينة والأوزان: وتشمل N (عدد المشاهدات غير المفقودة)، وNMISS (عدد المشاهدات المفقودة)، وWGT (مجموع أوزان المتغيرات في حال استخدام عبارة WEIGHT)، وSUMWGT.

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

8.2 حساب النسب المئوية للتكرارات (Frequency Percentages)

يُعد حساب النسب المئوية للتكرارات أحد أهم متطلبات التحليل الإحصائي المسحي والاجتماعي. يتيح PROC TABULATE الكلمة المفتاحية PCTN لحساب النسب المئوية لتكرارات الفئات التصنيفية، مع إمكانية توجيه أساس الحساب (Denominator Base) بدقة متناهية عبر استخدام الأقواس الموجهة لتحديد ما إذا كانت النسبة محسوبة بالنسبة لإجمالي الجدول ككل، أو لإجمالي الصف، أو لإجمالي العمود.

يوضح الكود التالي كيفية احتساب التكرارات البسيطة جنباً إلى جنب مع النسب المئوية للصف والعمود والإجمالي العام:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department;
 TABLE Branch ALL, 
 Department * (N COLPCTN ROWPCTN) 
 ALL * (N PCTN);
RUN;

في هذا النموذج المتقدم، تقوم ROWPCTN بحساب النسبة المئوية لتكرار كل قسم داخل الفرع الواحد (مجموع نسب الصف الواحد يساوي 100%)، بينما تقوم COLPCTN بحساب النسبة المئوية لمساهمة كل فرع في إجمالي القسم (مجموع نسب العمود الواحد يساوي 100%)، في حين تحسب PCTN النسبة المئوية المنسوبة إلى حجم العينة الكلي، مما يوفر تحليلاً متكاملاً للتوزيعات التكرارية النسبية والشرطية.

8.3 حساب النسب المئوية للمجاميع والكميات (Sum Percentages)

بينما تختص الكلمة المفتاحية PCTN بحساب نسب التكرارات للمتغيرات التصنيفية، تبرز الكلمة المفتاحية PCTSUM لحساب مساهمة الفئات المختلفة في “المجموع الكلي” لمتغير كمي مستمر. تُعد هذه الإحصائية حاسمة في التحليلات المالية والاقتصادية، كحساب نسبة مساهمة كل فرع أو قسم في إجمالي كتلة الرواتب أو إجمالي الأرباح أو المبيعات.

يوضح المثال التالي استخدام PCTSUM لتحليل توزيع الميزانية الكلية للرواتب عبر الأقسام والفروع:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department;
 VAR Salary;
 TABLE Branch ALL, 
 Salary * (SUM * F=DOLLAR14. Department * PCTSUM<Department> * F=PERCENT8.1);
RUN;

تقوم الصياغة الموجهة PCTSUM<Department> بحساب النسبة المئوية لمجموع رواتب كل قسم كحصة نسبية من إجمالي رواتب ذلك القسم عبر كافة الفروع، مع تطبيق تنسيق العملة والتنسيق المئوي المباشر. يتيح ذلك للإدارة المالية تحديد مراكز التكلفة الأعلى وتوزيع الموارد البشرية والمالية بناءً على نسب مساهمة دقيقة وموثوقة إحصائياً.

9. تخصيص وتنسيق مظهر الجداول وعناوين المخرجات

9.1 تعديل وحذف التسميات الافتراضية باستخدام علامة المساواة

يقوم نظام SAS افتراضياً بطباعة أسماء المتغيرات والكلمات المفتاحية للإحصاءات (مثل MEAN, N, STD) في ترويسات وأعمدة الجداول المخرجة. ولإعداد تقارير نهائية معدة للنشر الأكاديمي أو العرض التنفيذي، يوفر إجراء PROC TABULATE مرونة فائقة لتعديل أو حذف هذه التسميات مباشرة داخل عبارة TABLE باستخدام علامة المساواة (=) متبوعة بالنص البديل المحصور بين علامتي اقتباس.

يوضح الكود التالي كيفية تعريب وتخصيص رؤوس الجداول:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch='الفرع الجغرافي' Department='القسم';
 VAR Score='درجة الأداء' Salary='الراتب السنوي';
 TABLE Branch, 
 Department * (Score=' ' * MEAN='المتوسط' 
 Salary=' ' * (MEAN='المتوسط' MEDIAN='الوسيط'));
RUN;

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

9.2 استخدام عبارة KEYLABEL لإعادة تسمية الكلمات المفتاحية عالمياً

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

يوضح المثال التالي التطبيق العملي لعبارة KEYLABEL:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department Gender;
 VAR Score Satisfaction;
 KEYLABEL 
 N = 'العدد'
 NMISS = 'المفقود'
 MEAN = 'المتوسط الحسابي'
 STD = 'الانحراف المعياري'
 MEDIAN = 'الوسيط الإحصائي'
 SUM = 'المجموع الكلي'
 PCTN = 'النسبة المئوية (%)'
 ALL = 'الإجمالي العام';
 TABLE (Branch ALL), (Department ALL) * Score * (N MEAN STD);
RUN;

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

9.3 تنسيق القيم الرقمية وعرض الخلايا باستخدام خيار FORMAT=

تظهر الحسابات الإحصائية (خاصة المتوسطات والانحرافات المعيارية والنسب) افتراضياً بعدد كبير من المنازل العشرية، مما يسبب تشوهاً في مظهر الجداول وتفاوتاً في عروض الأعمدة. يوفر خيار FORMAT= (أو اختصاراً F=) آلية دقيقة للتحكم في عدد المنازل العشرية وتطبيق قوالب التنسيق القياسية على مستوى كل مقياس إحصائي أو خلية بمفردها.

يمكن دمج خيار التنسيق مباشرة مع المتغير أو الإحصاء باستخدام عامل الضرب كما هو موضح أدناه:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department;
 VAR Score Salary;
 TABLE Branch, 
 Department * (Score * (MEAN*F=8.2 STD*F=8.3) 
 Salary * (MEAN*F=COMMA12.0 SUM*F=DOLLAR14.0));
RUN;

في هذا النموذج، يتم تنسيق متوسط الأداء ليعرض بمنزلتين عشريتين (8.2)، وانحرافه المعياري بثلاث منازل عشرية (8.3)، بينما يُنسق متوسط الرواتب كأرقام صحيحة مفصولة بفواصل الآلاف (COMMA12.0)، ويُنسق مجموع الرواتب مع علامة العملة الدولية (DOLLAR14.0). يضمن هذا التنسيق التلقائي ضبط عرض الأعمدة بشكل متناسق ومحاذاة الفواصل العشرية عمودياً لتسهيل قراءة التقرير ومقارنة الأرقام بدقة.

10. حساب الإجماليات والتعامل مع القيم المفقودة

10.1 استخدام الكلمة المفتاحية ALL لاحتساب الإجماليات والمجاميع الفرعية

تمثل الكلمة المفتاحية ALL أداة التحليل التجميعي الشامل في PROC TABULATE، وتُستخدم لتوليد صفوف أو أعمدة إضافية تحتسب الإجماليات العامة والمجاميع الفرعية (Subtotals & Grand Totals) لكافة المستويات والفئات المدرجة في الجدول. تكتسب ALL مرونتها من إمكانية وضعها في أي موضع عبر الأبعاد الهندسية المختلفة.

تتصرف ALL بذكاء إحصائي متكامل؛ حيث لا تقتصر على جمع القيم، بل تعيد احتساب المقاييس الإحصائية المعرفة (كالمتوسط والوسيط والانحراف) على مستوى العينة الإجمالية ككل. يوضح الكود التالي إنشاء إجماليات فرعية وعامة:

PROC TABULATE DATA=WorkPerformanceFormatted;
 CLASS Branch Department;
 VAR Score;
 TABLE (Branch * Department) (Branch * ALL) ALL, 
 Score * (N MEAN*F=8.2);
RUN;

في هذا التركيب، يولد التعبير Branch * Department تفاصيل الأقسام داخل كل فرع، بينما يولد التعبير Branch * ALL صفاً للإجمالي الفرعي لكل فرع على حدة، في حين يولد التعبير ALL الأخير صفاً مستقلاً للإجمالي الكلي العام للمؤسسة بأكملها. يمكن تخصيص تسمية صف الإجمالي مباشرة عبر كتابة ALL='المجموع الكلي' لضمان مقروئية التقرير.

10.2 استراتيجيات التعامل مع القيم المفقودة (Missing Values)

يتبع نظام SAS افتراضياً سياسة استبعاد صارمة للملاحظات التي تحتوي على قيم مفقودة؛ فإذا كانت قيمة متغير الـ CLASS مفقودة في ملاحظة معينة، يتم استبعاد تلك الملاحظة بالكامل من كافة حسابات الجدول. وإذا كانت قيمة متغير الـ VAR مفقودة، يتم استبعادها من الحسابات التحليلية لذلك المتغير فقط مع الاحتفاظ بها في تكرارات المتغيرات الأخرى.

لإدارة القيم المفقودة بطريقة منهجية، يوفر الإجراء خيار MISSING الذي يمكن كتابته في العبارة الرئيسية PROC TABULATE MISSING; أو داخل عبارة CLASS المحددة مثل CLASS Gender / MISSING;. يؤدي هذا الخيار إلى معاملة القيمة المفقودة كفئة تصنيفية قائمة بذاتها وطباعتها كصف أو عمود مستقل، مما يمنع فقدان البيانات ويساعد الباحث على مراقبة أنماط الفقدان ودراسة ما إذا كان الفقدان عشوائياً أم ناتجاً عن تحيز معين في جمع البيانات.

وللتعامل مع الخلايا الفارغة الناتجة عن عدم وجود أي تقاطع بين فئات معينة، يُستخدم خيار MISSTEXT='Text' في العبارة الرئيسية، كما في: PROC TABULATE DATA=WorkPerformance MISSTEXT='لا توجد بيانات';، مما يمنع ظهور النقاط الافتراضية المربكة ويمنح التقرير صبغة مهنية واضحة.

10.3 التحكم في معالجة المجموعات الفارغة وغير الملاحظة

في الدراسات التجريبية والمصفوفات العاملية المتوازنة (Balanced Factorial Designs)، قد توجد فئات وتوافيق تصنيفية محتملة نظرياً ولكنها لم تسجل أي ملاحظات في العينة الميدانية الفعلية. السلوك الافتراضي لـ PROC TABULATE هو تجاهل هذه الفئات الصفرية وعدم طباعتها في الجدول، مما قد يخل بالمظهر الهيكلي المتوازن للتصميم التجريبي.

لحل هذه المشكلة، يوفر الإجراء خيار CLASSDATA=Dataset في العبارة الرئيسية، حيث يتم تزويد الإجراء بمجموعة بيانات مرجعية تحتوي على كافة التوافيق الممكنة لمتغيرات الـ CLASS. يقوم الإجراء بمقارنة البيانات الفعلية بمجموعة CLASSDATA، ويطبع كافة الفئات النظرية في الجدول حتى لو كان تكرارها صفراً. وبإضافة خيار EXCLUSIVE، يستطيع المحلل استبعاد أي فئات تظهر في البيانات الفعلية ولكنها غير مدرجة في جدول CLASSDATA المرجعي، مما يوفر تحكماً مطلقاً في هندسة وتناسق المصفوفات الإحصائية.

11. مقارنة متقدمة بين PROC TABULATE والإجراءات التحليلية الموازية

11.1 PROC TABULATE مقابل PROC MEANS / SUMMARY

يُمثل كل من PROC TABULATE وPROC MEANS ركيزتين أساسيتين في نظام ساس لتلخيص البيانات الرقمية، إلا أن أهدافهما ومخرجاتهما تختلفان بشكل جوهري. يركز إجراء PROC MEANS (وشقيقه PROC SUMMARY) أساساً على الحسابات الإحصائية السريعة وتوليد مجموعات بيانات مخرجة (Output Datasets عبر عبارة OUTPUT OUT=) لاستخدامها كمدخلات لتحليلات ونماذج لاحقة، مع تقديم مخرجات تقريرية قياسية تفتقر إلى المرونة التنسيقية.

في المقابل، صُمم PROC TABULATE ليكون أداة تقارير بصرية متقدمة؛ فهو يتفوق في قدرته على دمج تكرارات المتغيرات النوعية مع المقاييس الوصفية للمتغيرات الكمية في جدول واحد متعدد الأبعاد، والتحكم المطلق في تموضع الإحصاءات على مستوى الصفوف والأعمدة والصفحات. وعلى الرغم من أن PROC TABULATE يمكنه أيضاً تصدير البيانات المخرجة عبر خيار OUT=، إلا أن هيكل البيانات الناتجة يكون معقداً وجدولياً، مما يجعل PROC MEANS الخيار الأفضل للأغراض الحسابية البحتة والمعالجات الآلية، بينما يظل PROC TABULATE الخيار الأول لإعداد التقارير النهائية الموجهة للقراءة البشرية وصناع القرار.

11.2 PROC TABULATE مقابل PROC FREQ

يختص إجراء PROC FREQ بالتحليل التكراري والإحصائي للبيانات الفئوية والاسمية والترتيبية، ويتميز باحتوائه على ترسانة متقدمة من الاختبارات الإحصائية الاستدلالية المدمجة، مثل اختبار مربع كاي للاستقلالية، واختبار فيشر الدقيق، ومقاييس الارتباط الترتيبي (مثل معامل كابا، وجاما، وتاو كيندال)، ونسب الأرجحية (Odds Ratios) والمخاطر النسبية (Relative Risks)، وهي اختبارات لا يوفرها PROC TABULATE.

ومع ذلك، يعاني PROC FREQ من قصور واضح عند الحاجة إلى دمج متغيرات مستمرة أو احتساب متوسطات وانحرافات داخل خلايا الجداول المتقاطعة، كما أن قدرته على التنسيق البصري للنسب المئوية المعقدة والجداول متعددة المستويات محدودة مقارنة بالمرونة الهندسية لـ PROC TABULATE. لذلك، تتكامل الأداتان منهجياً في الأبحاث؛ حيث يُستخدم PROC FREQ لإجراء الاختبارات الاستدلالية واختبار الفرضيات الإحصائية، بينما يُستخدم PROC TABULATE لتوثيق وتنسيق الجداول المتقاطعة وتوزيعات النسب المئوية في التقارير الرسمية.

11.3 PROC TABULATE مقابل PROC REPORT

يُعد PROC REPORT الإجراء الأكثر عمومية وقوة في توليد التقارير المجدولة المخصصة داخل SAS، حيث يجمع بين خصائص PROC TABULATE وPROC PRINT مع إضافة بيئة برمجية تفاعلية تعتمد على عبارات الحوسبة المخصصة (COMPUTE blocks)، والتي تتيح إنشاء أعمدة محسوبة ديناميكياً وتطبيق شروط التنسيق اللوني والتحكم في كل خلية على حدة.

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

12. أفضل الممارسات البرمجية وتصحيح الأخطاء ودراسة حالة تطبيقية

12.1 تشخيص واستكشاف الأخطاء البرمجية الشائعة (Troubleshooting)

يواجه مبرمجو ومحللو ساس بعض الأخطاء الشائعة أثناء بناء عبارات PROC TABULATE، ومن أهمها خطأ Syntax error, statement ignored، والذي ينتج غالباً عن عدم التوازن في عدد الفواصل (مثل وضع أكثر من فاصلتين في عبارة TABLE)، أو نسيان إغلاق الأقواس، أو استخدام رموز غير مدعومة. يتطلب تصحيح هذا الخطأ فحص بنية الأبعاد والتأكد من الفصل الدقيق بين الصفحات والصفوف والأعمدة.

ومن الأخطاء المتكررة أيضاً ظهور رسائل تحذير في سجل التشغيل (SAS Log) تفيد بأن متغيراً معيناً غير معرف في سياق الاستخدام، كأن يُستخدم متغير في عبارة TABLE دون إدراجه مسبقاً في عبارة CLASS (إذا كان تصنيفياً) أو في عبارة VAR (إذا كان تحليلياً). كما يجب الانتباه إلى مشكلة تشوه الجداول النصية في بيئة SAS التقليدية الناتجة عن تجاوز عرض الجدول لخيارات الصفحة (LINESIZE و PAGESIZE)، ويتم التغلب على ذلك إما بزيادة خيار OPTIONS LS=MAX; أو بتصدير المخرجات مباشرة عبر بيئة ODS إلى HTML أو PDF حيث يتم ضبط التفاف النصوص وعرض الأعمدة تلقائياً.

12.2 أفضل الممارسات لكتابة كود SAS نظيف وقابل لإعادة الاستخدام

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

كما يُوصى بشدة بتوظيف لغة الماكرو في ساس (SAS Macro Facility) لأتمتة توليد التقارير المجدولة المتكررة؛ حيث يمكن بناء ماكرو يقبل متغيرات CLASS ومتغيرات VAR كمعاملات وسيطة (Parameters)، مما يتيح استدعاء الجداول لمئات المتغيرات بمرونة تامة. ولتحسين الأداء الحاسوبي وسرعة المعالجة عند التعامل مع قواعد البيانات الكبيرة جداً، يُفضل دائماً تصفية البيانات واختيار المتغيرات المطلوبة فقط عبر خيار (KEEP=...) في خطوة الاستدعاء، مما يقلل من استهلاك الذاكرة العشوائية ويسرع من زمن تنفيذ العمليات التلخيصية.

12.3 دراسة حالة تطبيقية متكاملة وتحليل المخرجات الإحصائية

لتتويج كافة المفاهيم المتقدمة التي تم شرحها في هذا الدليل، سنقوم ببناء سيناريو تحليلي تطبيقي شامل لدراسة أداء الموظفين ورضاهم الوظيفي عبر الفروع والأقسام ومستويات الوظائف، مع تطبيق كافة خيارات التنسيق، وحساب الإجماليات، وإعادة التسمية، وتصدير المخرجات عبر ODS HTML في تقرير عالي الجودة.

/* إعداد التقرير الإحصائي النهائي المتقدم عبر ODS */
ODS HTML FILE='Organizational_Performance_Report.html' STYLE=HTMLBLUE;
PROC TABULATE DATA=WorkPerformanceFormatted MISSING;
 CLASS Branch Department JobLevel Gender;
 VAR Score Satisfaction Salary;
 
 KEYLABEL 
 N = 'حجم العينة'
 MEAN = 'المتوسط'
 STD = 'الانحراف'
 MEDIAN = 'الوسيط'
 SUM = 'المجموع'
 ROWPCTN = 'نسبة الصف %'
 ALL = 'الإجمالي التراكمي';
 
 TABLE 
 /* بُعد الصفوف: الفروع والأقسام مع الإجماليات الفرعية والعامة */
 (Branch='الفرع الجغرافي' * (Department='القسم' ALL='إجمالي الفرع')) 
 ALL='إجمالي المؤسسة ككل',
 
 /* بُعد الأعمدة: دمج الإحصاءات الوصفية لمتغيرات الأداء والرواتب */
 Score='تقييم الأداء' * (MEAN*F=8.2 STD*F=8.2)
 Satisfaction='مؤشر الرضا' * (MEAN*F=8.2 MEDIAN*F=8.2)
 Salary='الكتلة المالية للرواتب' * (SUM*F=DOLLAR14.0 MEAN*F=DOLLAR12.0)
 Gender='توزيع النوع الاجتماعي' * (N='العدد' * F=5.0 ROWPCTN*F=PERCENT8.1)
 / BOX='التوزيع الهيكلي للأداء والرواتب';
RUN;
ODS HTML CLOSE;

التحليل والتفسير الإحصائي للمخرجات:

يولد هذا الكود المتقدم تقريراً شاملاً ومكثفاً؛ حيث يوضح بُعد الصفوف التوزيع الهرمي الدقيق للأقسام التابعة لكل فرع جغرافي متبوعاً بالإجمالي الفرعي للفرع، ومختتماً بصف الإجمالي التراكمي العام لكافة العاملين في المؤسسة. يوفر خيار BOX= عنواناً تفسيرياً أنيقاً في الركن العلوي الأيسر للجدول يوضح طبيعة البيانات المعروضة.

ومن الناحية الإحصائية، تكشف مخرجات الجدول عن مقارنة دقيقة للأداء ومؤشرات الرضا والرواتب؛ حيث نلاحظ أن قسم التحليلات (Analytics) في الفرع الشرقي (East) يسجل أعلى متوسط لتقييم الأداء (92.5) وأعلى مؤشر للرضا الوظيفي (8.8)، متزامناً مع ارتفاع متوسط الرواتب السنوية، بينما تسجل الوظائف التشغيلية الميدانية في الفروع الأخرى درجات أداء ورضا معتدلة مع وجود انحراف معياري منخفض يعكس تجانس استجابات الموظفين. كما يوفر التوزيع النسبي للنوع الاجتماعي عبر خيار ROWPCTN صورة واضحة لمدى التوازن الديموغرافي في مختلف الأقسام، مما يقدم للإدارة العليا تقريراً تحليلياً استراتيجياً متكاملاً يستند إلى بيانات كمية دقيقة وموثوقة.

خاتمة

يمثل إجراء PROC TABULATE في نظام SAS تحفة برمجية وإحصائية تجمع بين الدقة الحسابية العالية والمرونة الهندسية الفائقة في تصميم وعرض التقارير المجدولة متعددة الأبعاد. ومن خلال إتقان البنية النحوية لعباراته، والتحكم في العوامل المنطقية (الفواصل، والنجوم، والفراغات، والأقواس)، وتوظيف خيارات التنسيق والتسميات وإدارة القيم المفقودة، يستطيع الباحثون ومحللو البيانات تحويل مجموعات البيانات الخام الضخمة إلى مصفوفات تقريرية متكاملة تنبض بالمعلومات الإحصائية القيمة والمقروءة.

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

المراجع (References)

  • Cody, R. (2018). Learning SAS by Example: A Programmer’s Guide (2nd ed.). SAS Institute Inc.
  • Delwiche, L. D., & Slaughter, S. J. (2019). The Little SAS Book: A Primer (6th ed.). SAS Institute Inc.
  • SAS Institute Inc. (2021). Base SAS 9.4 Procedures Guide: Statistical Procedures (5th ed.). SAS Institute Inc. https://documentation.sas.com
  • Haworth, L. (1999). PROC TABULATE by Example. SAS Institute Inc.
  • Tura, K. (2015). Mastering PROC TABULATE: From Basic to Advanced Multi-Dimensional Tables. Proceedings of the SAS Global Forum 2015 Conference, Paper 1842-2015. SAS Institute Inc.
  • Zender, N. (2007). Summarizing Data with PROC TABULATE: A Tutorial. Proceedings of the Pharmaceutical Industry SAS Users Group (PharmaSUG 2007), Paper TT07.

اقتباس هذا المقال

looti, M. (2026, سبتمبر 2). كيفية استخدام Proc Tabulate في SAS (مع أمثلة). عرب سايكلوجي. https://arabpsychology.com/how-to-use-proc-tabulate-in-sas-with-examples/
looti, Mohammed. “كيفية استخدام Proc Tabulate في SAS (مع أمثلة).” عرب سايكلوجي, 2 سبتمبر 2026, https://arabpsychology.com/how-to-use-proc-tabulate-in-sas-with-examples/.
looti, Mohammed. “كيفية استخدام Proc Tabulate في SAS (مع أمثلة).” عرب سايكلوجي. سبتمبر 2, 2026. https://arabpsychology.com/how-to-use-proc-tabulate-in-sas-with-examples/.