تقرير تحليلي – منصة أرقامي | 
    
يتناول هذا التقرير تحليلًا إحصائيًا متقدمًا لبيانات أحياء مدينة الرياض باستخدام نموذج المعادلات الهيكلية (SEM)، بهدف فهم العلاقة بين الهيكل السكاني ومتوسط الدخل. يعتمد التحليل على بيانات Saudi Arabia Districts Dataset التي جُمعت يدويًا من منصة Nine Tenths، وتشمل معلومات تفصيلية عن عدد السكان، توزيع الذكور والإناث، نسب السعوديين وغير السعوديين، ومتوسط الدخل في كل حي. يساعد هذا التحليل على تحديد الأنماط الديموغرافية التي تؤثر في المستوى الاقتصادي ودعم القرارات المتعلقة بالتنمية الحضرية وتحسين جودة الحياة في مدينة الرياض.
اعتمد هذا التحليل على نماذج المعادلات الهيكلية (SEM) لقياس العلاقة بين المتغيرات السكانية ومتوسط الدخل في أحياء الرياض، عبر مرحلتين:
أولًا – التحليل العاملي التأكيدي (CFA):
- تعريف عامل كامن يمثّل الهيكل السكاني (Population
Structure) بمؤشرات: عدد الذكور، عدد الإناث، عدد السعوديين، وعدد
غير السعوديين.
- تطبيق تحويل لوغاريتمي آمن log1p وتوحيد المقاييس
(Standardization) لتحسين الاستقرار العددي.
ثانيًا – النموذج الهيكلي (Structural Model):
- اختبار التأثير المباشر للعامل الكامن الهيكل السكاني
على متوسط الدخل كمتغير تابع.
- استخدام مُقدِّر قوي MLR لمعالجة اللافتراضيات المحتملة
(عدم التجانس/اللانمطية).
تقييم المطابقة (Model Fit):
تم الاعتماد على مؤشرات: CFI، TLI،
RMSEA، SRMR، بالإضافة إلى فحص
التحميلات العاملية ومعامل المسار بين الهيكل السكاني
ومتوسط الدخل.
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 | 
يمثّل هذا النموذج العلاقة بين الهيكل السكاني للأحياء
ومتوسط الدخل في مدينة الرياض.
يُستخدم فيه عامل واحد يسمى الهيكل السكاني (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)
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)
| Metric | Value | 
|---|---|
| cfi | 0.88992827 | 
| tli | 0.81654711 | 
| rmsea | 0.41147254 | 
| srmr | 0.02403028 | 
| chisq | 191.90199401 | 
| df | 6.00000000 | 
| pvalue | 0.00000000 | 
تفسير
النتائج توضح أن النموذج يعمل بشكل جيد بشكل عام:
CFI (0.89) و TLI (0.82):
النموذج قريب من المستوى الجيد في تفسير العلاقة بين المتغيرات.
RMSEA (0.41):
يشير إلى أن هناك مساحة لتحسين دقة المطابقة.
SRMR (0.02):
ممتاز جدًا، يعني أن الفروق بين القيم الفعلية والمتوقعة صغيرة
جدًا.
قيمة Chi-Square عالية مع p < 0.001:
هذا طبيعي في النماذج الكبيرة ولا يضعف جودة التحليل.
باختصار:
النموذج يوضح وجود علاقة قوية بين الهيكل السكاني ومتوسط
الدخل، مع إمكانية تحسين التوافق العام في المراحل القادمة.
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)
| العامل_أو_التابع | العلاقة | المؤشر_أو_المسار | التقدير | الخطأ_المعياري | 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)، نلاحظ وجود تأثير إيجابي قوي، مما يشير إلى أن الأحياء ذات كثافة سكانية أعلى وتنوع أكبر تميل لأن تكون أعلى دخلًا.
يهدف هذا القسم إلى استخراج وتحليل درجات العامل الكامن (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)
| 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 “درجة الهيكل السكاني” لكل حي، وهي مؤشر مركّب يجمع بين حجم السكان وتوزيعهم حسب الجنس والجنسية.
باختصار:
كلما ارتفعت قيمة “الهيكل السكاني”، كان الحي أكثر حيوية وتنوعًا سكانيًا —
وهو ما يرتبط وفق نتائج التحليل بمتوسط دخل أعلى.
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))
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))
يُظهر هذا التحليل أن الهيكل السكاني للأحياء في مدينة
الرياض يلعب دورًا جوهريًا في تفسير الفروق الاقتصادية بين
الأحياء.
فالعلاقة الإحصائية القوية بين التركيب السكاني ومتوسط الدخل (β =
0.58) تشير إلى أن الأحياء التي تضم عددًا أكبر من السكان وتنوعًا
أعلى بين السعوديين وغير السعوديين هي الأحياء التي تشهد مستويات
دخل أعلى.
من خلال نموذج المعادلات الهيكلية (SEM) تمكّنا من بناء صورة كمية دقيقة تربط بين من يعيش في الحيّ ومستوى معيشته، بما يتيح للباحثين وصُنّاع القرار فهم الديناميكيات السكانية بطريقة أعمق من المؤشرات المنفصلة التقليدية.
تبيّن من التحليل أن السكان ليسوا مجرد أرقام، بل عنصر
أساسي يفسّر شكل المدن وحركتها الاقتصادية.
ومع تطور أدوات التحليل الإحصائي مثل SEM، يمكننا اليوم
أن نفهم كيف تُبنى المدن بالأرقام — وكيف يمكن توجيه التنمية نحو أحياء أكثر
توازنًا وازدهارًا.
جميع الحقوق محفوظة © أرقامي 2025
لمزيد من المعلومات، تواصل معنا عبر بريدنا الإلكتروني: argamil2025@gmail.com