النماذج متعددة المستويات والبايزية وبيانات البانل بلغتي Python وR
نحلل البيانات المتداخلة، كطلاب داخل مدارس أو مرضى داخل مستشفيات أو قياسات متكررة للأفراد عبر الزمن، بنماذج تحترم هذه البنية وتقدر عدم اليقين تقديرًا أدق.
تقديرات المدارس المنفردة مقابل تقديرات النموذج الهرمي المنكمشة نحو المتوسط (بيانات توضيحية)
عن المنهجية
عندما تكون البيانات متداخلة
كثير من بيانات المؤسسات له بنية هرمية: طلاب داخل فصول ومدارس، ومراجعون داخل مراكز صحية، وموظفون داخل إدارات، وقياسات متكررة للشخص نفسه عبر الزمن. تجاهل هذه البنية في انحدار عادي يجعل الأخطاء المعيارية أصغر من حقيقتها، فيبدو الأثر الضعيف مؤكدًا، ويخلط بين الفروق داخل المجموعات والفروق بينها. النماذج متعددة المستويات تفصل هذه المصادر، وتجيب عن سؤال إداري مباشر: كم من التباين يعود إلى المؤسسة نفسها؟
نحدد مستويات التداخل ونقيس معامل الارتباط داخل المجموعات، ثم نبني النموذج تدريجيًا من التقاطعات العشوائية إلى الميول العشوائية والتفاعلات بين المستويات، ونقارن البدائل بمعايير المعلومات واختبارات نسبة الأرجحية. في بيانات البانل نقارن الآثار الثابتة بالعشوائية باختبار هاوسمان أو بنهج مندلاك. وعندما تكون المجموعات قليلة أو البيانات محدودة نستخدم التقدير البايزي في Stan بتوزيعات مسبقة معلنة، مع فحص تقارب السلاسل والتحقق التنبؤي اللاحق.
يحصل صاحب القرار على تقديرات لكل مدرسة أو منطقة أو مرفق تأخذ حجم عينتها في الحسبان، فلا تظهر الوحدات الصغيرة في أعلى الترتيب أو أسفله بفعل الصدفة وحدها. ومع النهج البايزي تأتي النتائج بصيغة احتمالية مباشرة، مثل احتمال أن يتجاوز الأثر حدًا معينًا، وهي صيغة أقرب إلى لغة القرار. ونسلم ذلك كله في شيفرة موثقة مع شرح للافتراضات والتوزيعات المسبقة المستخدمة.
للمؤسسات والجهات
متى تحتاجها مؤسستك؟
وزارات التعليم: مقارنة أداء المدارس مع ضبط خصائص الطلاب، وتقدير نسبة التباين العائدة إلى المدرسة.
الجهات الصحية: تحليل نتائج المرضى داخل المستشفيات والمراكز، وترتيب المرافق بتقديرات تراعي حجم العينة.
أجهزة الإحصاء: تقدير المؤشرات للمناطق الصغيرة التي لا تكفي عينتها في المسح لتقدير مستقل.
الجامعات ومراكز البحث: تحليل القياسات المتكررة في الدراسات الطولية والتجارب متعددة القياسات.
الجهات الاقتصادية: تحليل بيانات البانل للمحافظات أو المنشآت عبر السنوات بالآثار الثابتة والعشوائية.
المنظمات الدولية: دمج نتائج دراسات أو دول متعددة في تحليل تجميعي هرمي يراعي اختلاف السياقات.
النماذج والأساليب
ما الذي نستخدمه في التحليل
٠١
النماذج الخطية المختلطة (Linear Mixed Models)
تقاطعات وميول عشوائية لكل مجموعة لتقدير الأثر العام والتباين بين المجموعات معًا.
٠٢
النماذج الخطية المعممة المختلطة (GLMM)
تمد النموذج الهرمي إلى النتائج الثنائية والعددية مثل النجاح أو عدد الزيارات.
٠٣
بيانات البانل: الآثار الثابتة والعشوائية (FE / RE)
تفصل الفروق الثابتة بين الوحدات عن التغير عبر الزمن، مع اختبار هاوسمان للمفاضلة بينهما.
٠٤
النماذج البايزية الهرمية (brms / Stan)
تقدير كامل لعدم اليقين بتوزيعات لاحقة، يناسب المجموعات القليلة والنماذج المعقدة.
٠٥
تقدير المناطق الصغيرة (Small Area Estimation)
يستعير المعلومات من المناطق المشابهة لتحسين دقة تقديرات المناطق ذات العينات الصغيرة.
٠٦
التحليل التجميعي البايزي (Bayesian Meta-Analysis)
يدمج نتائج دراسات متعددة مع تقدير التباين الحقيقي بينها بدل افتراض أثر واحد ثابت.
من الكود
تحليل موثق قابل لإعادة التنفيذ
مقتطفات مبسطة من نوع الكود الذي نسلمه موثقًا مع التقرير، تعمل على بيانات مدمجة أو اصطناعية، ويعاد تشغيلها على بيانات مؤسستك متى وصلت.
mixed_slopes.pyPython
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
# Synthetic: 2,000 students nested in 40 schools
rng = np.random.default_rng(7)
s = rng.integers(0, 40, 2000)
b0 = rng.normal(0, 3, 40) # school intercept deviations
b1 = rng.normal(0, 0.5, 40) # school slope deviations
ses = rng.normal(0, 1, 2000)
y = 50 + b0[s] + (2 + b1[s]) * ses + rng.normal(0, 5, 2000)
df = pd.DataFrame({"school": s, "ses": ses, "score": y})
# Null model -> intraclass correlation (ICC)
m0 = smf.mixedlm("score ~ 1", df, groups="school").fit()
tau2 = m0.cov_re.iloc[0, 0]
print("ICC:", round(tau2 / (tau2 + m0.scale), 3))
# Random intercepts and random SES slopes by school
m1 = smf.mixedlm("score ~ ses", df, groups="school",
re_formula="~ses").fit(reml=True)
print(m1.fe_params.round(3), m1.cov_re.round(3), sep="\n")
lmer_brms.RR
library(lme4)
library(brms)
data("sleepstudy", package = "lme4")
# Frequentist: random intercepts and slopes per subject
m1 <- lmer(Reaction ~ Days + (Days | Subject),
data = sleepstudy)
summary(m1)
confint(m1, method = "profile")
# Bayesian counterpart with weakly informative priors
pri <- c(prior(normal(0, 20), class = b),
prior(student_t(3, 0, 25), class = sd))
m2 <- brm(Reaction ~ Days + (Days | Subject),
data = sleepstudy, prior = pri,
chains = 4, iter = 2000, seed = 42)
summary(m2) # check Rhat and effective sample sizes
pp_check(m2) # posterior predictive check
شرح عملي للنماذج متعددة المستويات والبايزية: البيانات المتداخلة وICC، والمقاطع والميول العشوائية في lme4، والنسخة البايزية في brms وفحص R-hat وESS، والتأثيرات الثابتة والعشوائية في plm.
اقرأ المقال ←
تحليل الانحدار الخطي البسيط والمتعدد في SPSS: الشروط وقراءة النتائج
دليل تطبيقي إلى تقييم أثر البرامج والسياسات: مشكلة الوضع المضاد، والتجارب العشوائية، والفروق في الفروق، ومطابقة درجة الميل بـMatchIt، والانقطاع والضبط التركيبي، وعرض الأثر بأمانة.
عندما تكون المشاهدات مجمعة داخل وحدات أعلى، كطلاب في مدارس أو قياسات متكررة للشخص نفسه، وتتشابه المشاهدات داخل الوحدة الواحدة. نقيس ذلك بمعامل الارتباط داخل المجموعات قبل اختيار النموذج.
هل التحليل البايزي مقبول في التقارير الرسمية والمجلات المحكّمة؟
نعم، بشرط الإفصاح عن التوزيعات المسبقة وفحص حساسية النتائج لها، وهذا ما نوثقه في كل تحليل بايزي نقدمه.
ما الفرق بين الآثار الثابتة والعشوائية في بيانات البانل؟
الآثار الثابتة تستبعد كل الخصائص الثابتة للوحدة وتعتمد على التغير داخلها عبر الزمن، أما العشوائية فأكفأ لكنها تفترض عدم ارتباط تلك الخصائص بالمتغيرات المفسرة. نختبر هذا الافتراض قبل الاختيار.
ما البيانات المطلوبة وكيف تحفظ سريتها؟
نحتاج ملف البيانات بمعرف لكل وحدة في كل مستوى، مثل الطالب والمدرسة، مع قاموس للمتغيرات، ويمكن استبدال الأسماء برموز قبل الإرسال. لا يشارك المركز البيانات مع أي جهة.