تحليل البيانات المكانية في R: من الحدود والخرائط إلى موران والنقاط الساخنة
دليل عملي لتحليل البيانات المكانية في R: أنظمة الإحداثيات، وربط الحدود بحزمة sf، والخرائط الموضوعية، وموران العام والمحلي والنقاط الساخنة بحزمة spdep، مع شيفرة قابلة للتشغيل.
نحلل البيانات المرتبطة بالموقع لنبين أين تتركز الظاهرة ولماذا، من الخرائط الموضوعية إلى اختبارات الارتباط الذاتي المكاني والانحدار المكاني وتحليل الوصول إلى الخدمات.
عن المنهجية
كثير من المؤشرات المؤسسية مرتبط بموقع: معدلات المرض حسب الحي، ونسب الالتحاق بالمدارس حسب المحافظة، وطلبات الخدمة حسب المنطقة البلدية. حين تحلل هذه البيانات كأنها مستقلة عن موقعها يغيب سؤال أساسي: هل تتجمع القيم المرتفعة في مناطق متجاورة، وهل يفسر الجوار جزءًا من الفروق؟ يجيب التحليل المكاني عن هذه الأسئلة، ويحدد المناطق ذات الأولوية بدل الاكتفاء بمتوسطات عامة تخفي التفاوت بين المناطق.
نبدأ بالتحقق من الحدود الإدارية والإحداثيات ونظام الإسقاط، ومن مطابقة رموز المناطق بين الخرائط وجداول البيانات. نختار مصفوفة الأوزان المكانية بالتجاور أو المسافة أو أقرب الجيران ونختبر حساسية النتائج لهذا الاختيار، ونلجأ إلى التمهيد البايزي للمعدلات عندما تكون أعداد السكان في بعض المناطق صغيرة. نختبر الارتباط الذاتي المكاني في البواقي قبل اختيار نموذج الانحدار المكاني المناسب، ونوثق كل ذلك في كود قابل لإعادة التنفيذ.
يحصل صاحب القرار على خرائط واضحة تبين توزيع المؤشر ومواقع التجمعات المرتفعة والمنخفضة ذات الدلالة الإحصائية، وتقديرات لأثر العوامل المفسرة بعد ضبط الاعتماد المكاني، وقياس للمسافة أو زمن الوصول إلى أقرب مدرسة أو مركز صحي. تساعد هذه المخرجات على توجيه الموارد والتدخلات إلى المناطق الأكثر احتياجًا، وعلى متابعة أثرها في جولات لاحقة من جمع البيانات.
للمؤسسات والجهات
تحديد الأحياء التي تتجمع فيها حالات مرضية بمعدلات مرتفعة لتوجيه حملات الوقاية والفحص في القطاع الصحي.
قياس المسافة من التجمعات السكانية إلى أقرب مدرسة لدعم قرارات اختيار مواقع المدارس الجديدة.
رسم خرائط مؤشرات الفقر والبطالة على مستوى الوحدات الإدارية لمكاتب الإحصاء الوطنية.
تحليل توزيع بلاغات الخدمات البلدية واكتشاف النقاط الساخنة لتخطيط عمل فرق الصيانة.
تقييم التغطية الجغرافية لتدخلات المنظمات الإنسانية مقارنة بمواقع الفئات الأكثر احتياجًا.
دراسة العلاقة بين الخصائص المكانية والمؤشرات الاجتماعية في البحوث الجامعية باستخدام الانحدار المكاني.
النماذج والأساليب
عرض قيم المؤشر على الوحدات الإدارية بفئات لونية مدروسة تراعي توزيع البيانات ولا تضخم الفروق.
اختبار ما إذا كانت القيم المتشابهة تميل إلى التجمع مكانيًا على مستوى منطقة الدراسة كلها.
تحديد التجمعات المحلية من نوع مرتفع-مرتفع ومنخفض-منخفض والقيم الشاذة مكانيًا لكل وحدة.
تحديد المواقع التي تتركز فيها القيم المرتفعة أو المنخفضة بدلالة إحصائية.
تقدير أثر العوامل المفسرة مع مراعاة اعتماد المشاهدات المتجاورة بعضها على بعض.
حساب المسافة أو زمن التنقل إلى أقرب خدمة، وتقدير السكان الواقعين خارج نطاق التغطية.
من الكود
مقتطفات مبسطة من نوع الكود الذي نسلمه موثقًا مع التقرير، تعمل على بيانات مدمجة أو اصطناعية، ويعاد تشغيلها على بيانات مؤسستك متى وصلت.
import numpy as np
# Synthetic 10 x 10 grid of areas with a spatial trend
rng = np.random.default_rng(1)
i, j = np.indices((10, 10))
x = (i + j + rng.normal(0, 3, (10, 10))).ravel()
# Rook contiguity weights, row-standardised
idx = np.arange(100).reshape(10, 10)
W = np.zeros((100, 100))
pairs = [(idx[:-1], idx[1:]), (idx[:, :-1], idx[:, 1:])]
for a, b in pairs:
W[a.ravel(), b.ravel()] = W[b.ravel(), a.ravel()] = 1
W /= W.sum(axis=1, keepdims=True)
# Global Moran's I with a permutation test
z = x - x.mean()
moran = z @ W @ z / (z @ z)
sims = np.array([p @ W @ p / (p @ p) for p in
(rng.permutation(z) for _ in range(999))])
p_val = (np.sum(sims >= moran) + 1) / 1000
print(f"Moran's I = {moran:.3f}, pseudo p = {p_val:.3f}")library(sf)
library(spdep)
nc <- st_read(system.file("shape/nc.shp", package = "sf"),
quiet = TRUE)
nc$rate <- 1000 * nc$SID79 / nc$BIR79
nb <- poly2nb(nc, queen = TRUE)
lw <- nb2listw(nb, style = "W")
# Global and local spatial autocorrelation
moran.test(nc$rate, lw)
nc$lisa <- localmoran(nc$rate, lw)[, "Ii"]
# Getis-Ord Gi* hot spots (neighbours include self)
lw_self <- nb2listw(include.self(nb), style = "W")
nc$gi_star <- as.numeric(localG(nc$rate, lw_self))
plot(nc["gi_star"], main = "Gi* z-scores")Python: geopandas, shapely, pyproj, libpysal, esda, spreg, osmnx, foliumR: sf, spdep, spatialreg, tmap, ggplot2, terra, leaflet
المخرجات
نتفق على النطاق كتابيًا من البداية، والمدة حسب حجم العمل وتعقيد المنهجية.
خرائط موضوعية للمؤشرات المطلوبة بفئات لونية مدروسة، جاهزة للتقارير والعروض.
نتائج اختبارات الارتباط الذاتي المكاني العامة والمحلية مع خرائط التجمعات والنقاط الساخنة.
نموذج انحدار مكاني يقدر أثر العوامل المفسرة مع تفسير مكتوب لمعاملاته وحدوده.
تحليل لإمكانية الوصول يبين المسافات إلى الخدمات والمناطق الواقعة خارج نطاق التغطية.
ملفات مكانية منظمة وكود R أو Python موثق قابل لإعادة التنفيذ عند تحديث البيانات.
منهجيات أخرى
نماذج تتنبأ بالطلب والمخاطر والتسرب، مع تحقق متقاطع ومقاييس دقة واضحة وتفسير لأهم العوامل.
التفاصيل والنماذج ←نماذج ARIMA وETS وProphet لتوقع المؤشرات الاقتصادية والتشغيلية بفترات ثقة.
التفاصيل والنماذج ←تصاميم الفروق في الفروق (DiD) ومطابقة درجة الميل (PSM) لقياس الأثر الفعلي للبرامج والسياسات.
التفاصيل والنماذج ←نماذج للبيانات المتداخلة وبيانات البانل، وتقديرات بايزية بفترات مصداقية.
التفاصيل والنماذج ←تصنيف النصوص واستخراج موضوعاتها واتجاهاتها من الشكاوى والاستبانات المفتوحة والمنشورات.
التفاصيل والنماذج ←لوحات بـ Power BI وTableau وShiny وDash تتجدد مع وصول البيانات.
التفاصيل والنماذج ←أوزان المعاينة والتصاميم الطبقية والعنقودية وتقديرات المناطق الصغيرة.
التفاصيل والنماذج ←من المدونة
دليل عملي لتحليل البيانات المكانية في R: أنظمة الإحداثيات، وربط الحدود بحزمة sf، والخرائط الموضوعية، وموران العام والمحلي والنقاط الساخنة بحزمة spdep، مع شيفرة قابلة للتشغيل.
دليل تحليل المسوح المعقدة بحزمة survey في R: الأوزان والطبقات والعناقيد، وأثر التصميم، وsvyglm، وتعديل عدم الاستجابة والمعايرة، وتقدير التباين، ومدخل إلى تقدير المناطق الصغيرة.
بايثون أم R لتحليل البيانات: مقارنة عملية بين منظومتي اللغتين في الإحصاء وتعلم الآلة والتقارير القابلة لإعادة الإنتاج، مع مثال مكافئ بالكودين ومعايير واضحة للاختيار.
لديك بيانات وسؤال؟
نبدأ باستشارة مبدئية مجانية نحدد فيها السؤال والبيانات والمنهجية المناسبة، ونرد عليك خلال ساعة.
الأسئلة الشائعة