شعار أرقامي

تقرير تحليلي – منصة أرقامي

1 المقدمة

يتناول هذا التقرير تحليلًا إحصائيًا متقدمًا لبيانات أحياء مدينة الرياض باستخدام نموذج المعادلات الهيكلية (SEM)، بهدف فهم العلاقة بين الهيكل السكاني ومتوسط الدخل. يعتمد التحليل على بيانات Saudi Arabia Districts Dataset التي جُمعت يدويًا من منصة Nine Tenths، وتشمل معلومات تفصيلية عن عدد السكان، توزيع الذكور والإناث، نسب السعوديين وغير السعوديين، ومتوسط الدخل في كل حي. يساعد هذا التحليل على تحديد الأنماط الديموغرافية التي تؤثر في المستوى الاقتصادي ودعم القرارات المتعلقة بالتنمية الحضرية وتحسين جودة الحياة في مدينة الرياض.

2 أسئلة التحليل

  1. ما العلاقة بين الهيكل السكاني (عدد الذكور، الإناث، السعوديين، وغير السعوديين) ومتوسط الدخل في أحياء الرياض؟
  2. هل يمكن تمثيل المتغيرات السكانية بعامل كامن يفسّر الفروق الاقتصادية بين الأحياء؟
  3. ما مدى قوة التأثير بين حجم السكان والتوزيع الديموغرافي على مستويات الدخل؟
  4. هل تُظهر الأحياء ذات الكثافة السكانية الأعلى متوسط دخل أعلى؟
  5. كيف يمكن الاستفادة من نتائج نموذج الـSEM في دعم صُنّاع القرار والمخططين الحضريين؟

3 منهجية التحليل

اعتمد هذا التحليل على نماذج المعادلات الهيكلية (SEM) لقياس العلاقة بين المتغيرات السكانية ومتوسط الدخل في أحياء الرياض، عبر مرحلتين:

أولًا – التحليل العاملي التأكيدي (CFA):
- تعريف عامل كامن يمثّل الهيكل السكاني (Population Structure) بمؤشرات: عدد الذكور، عدد الإناث، عدد السعوديين، وعدد غير السعوديين.
- تطبيق تحويل لوغاريتمي آمن log1p وتوحيد المقاييس (Standardization) لتحسين الاستقرار العددي.

ثانيًا – النموذج الهيكلي (Structural Model):
- اختبار التأثير المباشر للعامل الكامن الهيكل السكاني على متوسط الدخل كمتغير تابع.
- استخدام مُقدِّر قوي MLR لمعالجة اللافتراضيات المحتملة (عدم التجانس/اللانمطية).

تقييم المطابقة (Model Fit):
تم الاعتماد على مؤشرات: CFI، TLI، RMSEA، SRMR، بالإضافة إلى فحص التحميلات العاملية ومعامل المسار بين الهيكل السكاني ومتوسط الدخل.

4 استدعاء البيانات وتوحيد المقاييس

dat_raw  <- readr::read_csv(csv_path, show_col_types = FALSE)
dat      <- janitor::clean_names(dat_raw)
data <- read.csv(csv_path, fileEncoding = "UTF-8")
data=clean_names(data)
use_cols <- c("males_2","females_2","saudis_2","non_saudis_2","average_income")
dat_use <- data[, use_cols]
log_cols <- c("males_2","females_2","saudis_2","non_saudis_2")


dat_use[log_cols] <- lapply(dat_use[log_cols], function(x) log1p(x))
dat_scaled <- as.data.frame(scale(dat_use))



head(dat_scaled)
males_2 females_2 saudis_2 non_saudis_2 average_income
0.9776075 0.9957025 1.0806861 0.7931882 0.1077689
0.3653773 0.3526596 0.0345015 0.6644796 0.3813892
0.3344374 -0.0178977 -0.0618963 0.5257855 -0.7341397
0.1631434 0.2119579 0.3425955 0.0158332 0.1077689
0.2353210 0.2510145 0.3051163 0.3230122 0.7602481
0.5223589 0.5018771 0.6594788 0.2469765 0.8023435

5 بناء النموذج SEM

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

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

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

باختصار، النموذج يربط بين من يعيش في الحيّ وكيف يعيش — أي بين السكان والدخل — باستخدام تحليل متقدم يعتمد على نموذج المعادلات الهيكلية (SEM) لفهم الصورة الكاملة وراء الأرقام.

model_final <- '
  Population_Structure =~ males_2 + females_2 + saudis_2 + non_saudis_2
  average_income ~ Population_Structure
  males_2 ~~ 0.04*males_2   
'




fit_final <- sem(model_final, data = dat_scaled, std.lv = TRUE, estimator = "MLR")
summ=summary(fit_final, fit.measures = TRUE, standardized = TRUE)

6 مؤشرات المطابقة (CFI/TLI/RMSEA/SRMR…)

tab_fit <- fitMeasures(fit_final, c("cfi","tli","rmsea","srmr","chisq","df","pvalue"))

df_fit <- tibble::enframe(tab_fit, name = "Metric", value = "Value")

knitr::kable(df_fit, digits = 3, caption = "Fit Indices (MLR)") %>%
  kableExtra::kable_styling(full_width = FALSE)
Fit Indices (MLR)
Metric Value
cfi 0.88992827
tli 0.81654711
rmsea 0.41147254
srmr 0.02403028
chisq 191.90199401
df 6.00000000
pvalue 0.00000000

تفسير

النتائج توضح أن النموذج يعمل بشكل جيد بشكل عام:

باختصار:
النموذج يوضح وجود علاقة قوية بين الهيكل السكاني ومتوسط الدخل، مع إمكانية تحسين التوافق العام في المراحل القادمة.

pe <- parameterEstimates(fit_final, standardized = TRUE) %>%
dplyr::filter(op %in% c("=~","~")) %>%
dplyr::mutate(
lhs = dplyr::recode(lhs,
"Population_Structure" = "الهيكل السكاني (عامل)",
"average_income"       = "متوسط الدخل"),
rhs = dplyr::recode(rhs,
"males_2"      = "عدد الذكور",
"females_2"    = "عدد الإناث",
"saudis_2"     = "عدد السعوديين",
"non_saudis_2" = "عدد غير السعوديين",
"Population_Structure" = "الهيكل السكاني (عامل)")
) %>%
dplyr::select(
العامل_أو_التابع = lhs,
العلاقة = op,
المؤشر_أو_المسار = rhs,
التقدير = est,
الخطأ_المعياري = se,
z, pvalue,
المعياري = std.all
)

knitr::kable(pe, digits = 3, caption = "تحميلات العوامل والمسار الهيكلي (Standardized)") %>%
kableExtra::kable_styling(full_width = FALSE)
تحميلات العوامل والمسار الهيكلي (Standardized)
العامل_أو_التابع العلاقة المؤشر_أو_المسار التقدير الخطأ_المعياري z pvalue المعياري
الهيكل السكاني (عامل) =~ عدد الذكور 0.979 0.071 13.819 0 0.980
الهيكل السكاني (عامل) =~ عدد الإناث 0.997 0.066 15.196 0 1.000
الهيكل السكاني (عامل) =~ عدد السعوديين 0.951 0.057 16.669 0 0.954
الهيكل السكاني (عامل) =~ عدد غير السعوديين 0.936 0.068 13.767 0 0.938
متوسط الدخل ~ الهيكل السكاني (عامل) 0.578 0.042 13.635 0 0.580

تفسير

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

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

باختصار:
النموذج يوضح أن السكان هم المحرك الأساسي للفروق في مستويات الدخل بين أحياء الرياض — فالأحياء التي تضم عددًا أكبر وتنوعًا سكانيًا أعلى، تميل لأن تكون ذات دخل أعلى.

semPaths(sp,
what = "std", whatLabels = "std",
layout = "tree", rotation = 2,
nCharNodes = 0, nodeLabels = node_labs,
sizeLat = 12, sizeMan = 10,
edge.label.cex = 1.0,
mar = c(6,6,6,6))

تفسير

يوضح الشكل أن الهيكل السكاني (العامل الكامن) يتكوّن من أربعة مؤشرات رئيسية:
عدد الذكور، عدد الإناث، عدد السعوديين، وعدد غير السعوديين — وجميعها مرتبطة بالعامل بقوة تتراوح بين 0.94 و1.00.
هذا يعني أن هذه المؤشرات تتحرك معًا وتشكل صورة واضحة عن البنية السكانية للحي.

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

7 درجات العامل الكامن (Factor Scores)

يهدف هذا القسم إلى استخراج وتحليل درجات العامل الكامن (Population_Structure) الناتجة من نموذج الـSEM، والتي تمثّل “قوة الهيكل السكاني” في كل حي من أحياء الرياض، بناءً على عدد الذكور والإناث والسعوديين وغير السعوديين.

factor_scores <- lavPredict(fit_final, type = "lv")


factor_scores_df <- data.frame(
  district_name_ar = dat_raw$District_name_AR,
  Population_Structure = as.numeric(factor_scores[, "Population_Structure"])
)

#
knitr::kable(head(factor_scores_df, 10),
             caption = "أول عشرة أحياء ودرجات الهيكل السكاني (Factor Scores)") %>%
  kableExtra::kable_styling(full_width = FALSE)
أول عشرة أحياء ودرجات الهيكل السكاني (Factor Scores)
district_name_ar Population_Structure
دار البيضاء 0.9981098
الضباط 0.3535611
الديرة -0.0119070
الدرعية 0.2119385
الدريهمية 0.2524831
العارض 0.5038059
العمل 0.2787465
الأندلس 0.5463122
العقيق 0.6894185
العوالي 0.6234665

تفسير

تمثل القيم في العمود Population_Structure “درجة الهيكل السكاني” لكل حي، وهي مؤشر مركّب يجمع بين حجم السكان وتوزيعهم حسب الجنس والجنسية.

باختصار:
كلما ارتفعت قيمة “الهيكل السكاني”، كان الحي أكثر حيوية وتنوعًا سكانيًا — وهو ما يرتبط وفق نتائج التحليل بمتوسط دخل أعلى.

8 أعلى 10 أحياء في الهيكل السكاني

top10 <- factor_scores_df %>%
  arrange(desc(Population_Structure)) %>%
  head(10)

ggplot(top10, aes(x = reorder(district_name_ar, Population_Structure),
                  y = Population_Structure, fill = Population_Structure)) +
  geom_col() +
  coord_flip() +
  labs(title = "أعلى 10 أحياء في درجة الهيكل السكاني",
       x = "اسم الحي", y = "درجة الهيكل السكاني") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold", hjust = 0.5))

9 العلاقة بين الهيكل السكاني ومتوسط الدخل

ggplot(dat_plot, aes(x = Population_Structure, y = average_income)) +
  geom_point(alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE, linewidth = 1.1) +
  labs(
    title = "العلاقة بين الهيكل السكاني ومتوسط الدخل",
    subtitle = "كل نقطة = حي في الرياض، والخط يوضح الاتجاه العام",
    x = "الهيكل السكاني (عامل كامن من SEM)",
    y = "متوسط الدخل (بعد التوحيد)"
  ) +
  theme_minimal()

تفسير

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

leaflet(dat_raw) %>%
  addTiles() %>%
  addCircleMarkers(~longitude, ~latitude,
                   radius = ~Population/10000,
                   color = "#1E88E5",
                   fillOpacity = 0.6,
                   popup = ~paste("<b>", District_name_AR, "</b><br>",
                                  "السكان:", Population, "<br>",
                                  "متوسط الدخل:", Average_Income))

10 الخلاصة

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

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

11 ما الذي تعنيه النتائج لصُنّاع القرار؟

11.0.1 ختامًا

تبيّن من التحليل أن السكان ليسوا مجرد أرقام، بل عنصر أساسي يفسّر شكل المدن وحركتها الاقتصادية.
ومع تطور أدوات التحليل الإحصائي مثل SEM، يمكننا اليوم أن نفهم كيف تُبنى المدن بالأرقام — وكيف يمكن توجيه التنمية نحو أحياء أكثر توازنًا وازدهارًا.

جميع الحقوق محفوظة © أرقامي 2025

لمزيد من المعلومات، تواصل معنا عبر بريدنا الإلكتروني: argamil2025@gmail.com