في هذا التقرير، نقدّم قراءة معمّقة لقطاع أنشطة السوق العقارية في المملكة العربية السعودية، اعتمادًا على مؤشرات منشورة عبر منصة DataSaudi. ندمج بين الوصف الإحصائي والرسوم البيانية، وبين الأساليب المتقدمة مثل:
الهدف هو استخراج شرائح قابلة للتنفيذ (Actionable Segments) تُعين صانع القرار ومنشآت القطاع على توجيه التمويل، والرقمنة، وبرامج رفع الكفاءة والتوطين.
metrics <- list(
fdi_stock_2024 = 21.9,
fdi_inflows_2024 = 0.6863,
fdi_outflows_2024 = 0.4351,
fdi_net_2024 = 0.2513,
fdi_inflows_yoy_drop = -73.7,
fdi_outflows_yoy = 337.0,
employment_share_q1_2025 = 0.7,
ssi_total_q1_2025 = 56703,
ssi_male_pct = 83.7, ssi_female_pct = 16.3,
priv_emp_2022_saudi_m = 14332,
priv_emp_2022_nonsaudi_m = 32336,
priv_emp_2022_saudi_f = 8412,
priv_emp_2022_nonsaudi_f = 620,
credit_jul_2025 = 377.6,
credit_mom = -1.6, credit_yoy = 31.5,
est_2018_total = 34709,
est_lt5_pct = 92.4, est_5_19_pct = 6.5, est_20p_pct = 1.0,
op_rev_2023 = 38.0, op_exp_2023 = 16.6, op_sur_2023 = 12.9,
comp_micro_2023 = 0.6449, comp_small_2023 = 0.7043, comp_med_2023 = 1.6,
digital_inet_2022 = 51.9, digital_social_2022 = 48.7,
foreign_licenses_q4_2023 = 15
)
fdi_trend <- tibble(
السنة = c(2023, 2024),
التدفقات_الداخلة = c(2.6, metrics$fdi_inflows_2024),
التدفقات_الخارجة = c(0.1, metrics$fdi_outflows_2024),
صافي = c(2.5, metrics$fdi_net_2024)
)
fdi_trend %>%
pivot_longer(-السنة, names_to="البند", values_to="القيمة") %>%
ggplot(aes(x = factor(السنة), y = القيمة, fill = البند)) +
geom_col(position="dodge") +
geom_text(aes(label = round(القيمة,2)), position=position_dodge(0.9), vjust=-0.3) +
scale_fill_manual(values = argami_pal[1:3]) +
labs(title="اتجاهات الاستثمار الأجنبي المباشر 2023–2024", y="مليار ريال", x="السنة")
تحليل أرقامي: هبوط التدفقات الداخلة مقابل ارتفاع الخارجة أدى لانكماش الصافي — إشارة إلى تغير شهية المستثمر أو عوامل تنظيمية/تمويلية مؤقتة.
credit_trend <- tibble(
الشهر = c("يوليو 2024", "يوليو 2025"),
القيمة = c(287.0, metrics$credit_jul_2025)
)
credit_trend %>% ggplot(aes(x=الشهر, y=القيمة, group=1)) +
geom_line(color=argami_pal[1], size=1.2) +
geom_point(size=3, color=argami_pal[2]) +
geom_text(aes(label=paste0(round(القيمة,1)," مليار")), vjust=-0.7) +
labs(title="نمو الائتمان المصرفي للقطاع", y="مليار ريال", x=NULL)
قراءة أرقامي: ارتفاع سنوي ~31.5% يعكس ثقة تمويلية، رغم التراجع الشهري البسيط.
emp_dist <- tribble(
~الفئة, ~العدد,
"سعوديون (ذكور)", metrics$priv_emp_2022_saudi_m,
"سعوديات", metrics$priv_emp_2022_saudi_f,
"غير سعوديين (ذكور)", metrics$priv_emp_2022_nonsaudi_m,
"غير سعوديات", metrics$priv_emp_2022_nonsaudi_f
)
emp_dist %>% ggplot(aes(x=factor(الفئة), y=العدد, fill=الفئة)) +
geom_col() + coord_flip() +
geom_text(aes(label=format(العدد, big.mark=',')), hjust=-0.1) +
scale_fill_manual(values = argami_pal[3:6]) +
labs(title="توزيع العاملين حسب الجنسية والجنس — 2022", y="عدد العاملين", x=NULL)
قراءة أرقامي: هيمنة الذكور غير السعوديين؛ فرصة لبرامج استقطاب وتوطين موجهة.
structure <- tribble(
~الحجم, ~النسبة,
"< 5 موظفين", metrics$est_lt5_pct,
"5–19 موظف", metrics$est_5_19_pct,
">= 20 موظف", metrics$est_20p_pct
)
comp <- tribble(
~الحجم, ~التعويضات,
"متناهية الصغر", metrics$comp_micro_2023,
"صغيرة", metrics$comp_small_2023,
"متوسطة", metrics$comp_med_2023
)
p1 <- structure %>% ggplot(aes(x=الحجم, y=النسبة, fill=الحجم)) +
geom_col() + geom_text(aes(label=paste0(النسبة, "%")), vjust=-0.3) +
scale_fill_manual(values = argami_pal[1:3]) +
labs(title="توزيع المنشآت حسب الحجم — 2018", y="%", x=NULL)
p2 <- comp %>% ggplot(aes(x=الحجم, y=التعويضات, fill=الحجم)) +
geom_col() + geom_text(aes(label=paste0(round(التعويضات,3), " مليار")), vjust=-0.3) +
scale_fill_manual(values = argami_pal[4:6]) +
labs(title="تعويضات العاملين حسب الحجم — 2023", y="مليار ريال", x=NULL)
p1; p2
قراءة أرقامي: سيطرة عددية للصغرى جدًا، لكن “القيمة” تميل للمتوسطة — ما يوحي بفاعلية تشغيلية أعلى للمنشآت المتوسطة.
op_ratio <- metrics$op_sur_2023 / metrics$op_rev_2023
op_df <- tibble(البند = c("إيرادات", "فائض"), القيمة = c(metrics$op_rev_2023, metrics$op_sur_2023))
op_df %>% ggplot(aes(x=البند, y=القيمة, fill=البند)) +
geom_col() + geom_text(aes(label=paste0(القيمة, " مليار")), vjust=-0.3) +
scale_fill_manual(values = argami_pal[1:2]) +
labs(title=glue("الفائض يمثل {percent(op_ratio)} من الإيرادات"), y="مليار ريال", x=NULL)
قراءة أرقامي: هامش تشغيلي قوي (~34%) مع ضرورة ضبط نمو النفقات.
digital <- tribble(
~المؤشر, ~النسبة,
"استخدام الإنترنت", metrics$digital_inet_2022,
"حسابات سوشال ميديا", metrics$digital_social_2022
)
digital %>% ggplot(aes(x=المؤشر, y=النسبة, fill=المؤشر)) +
geom_col() + geom_text(aes(label=paste0(النسبة, "%")), vjust=-0.3) +
scale_fill_manual(values = argami_pal[5:6]) +
labs(title="تبني مؤشرات الاقتصاد الرقمي — 2022", y="%", x=NULL)
قراءة أرقامي: تبنٍ رقمي متوسط (~50%)؛ فرصة واضحة لحلول PropTech.
subsec <- tibble(
النشاط = c("تطوير عقاري","وساطة عقارية","إدارة أملاك","إيجار سكني","إيجار تجاري","استشارات عقارية","إدارة مرافق"),
كثافة_الائتمان = c(0.85,0.40,0.55,0.50,0.70,0.35,0.60), # 0-1
تبني_رقمي = c(0.65,0.80,0.55,0.50,0.60,0.85,0.58), # 0-1
ربحية_تشغيلية = c(0.35,0.25,0.22,0.18,0.28,0.24,0.20), # فائض/إيراد (تقريب)
متوسط_تعويض = c(18,10,12,8,14,11,9) # ألف ريال/موظف (تقريب)
)
# تقييس الميزات وحساب المسافة الإقليدية
X <- subsec %>% select(-النشاط) %>% scale() %>% as.matrix()
d <- dist(X, method = "euclidean")
شرح أرقامي: هذه مصفوفة ميزات تعليمية تُحاكي واقع القطاع: التطوير/الإيجار التجاري أكثر كثافة ائتمانية وربحية، والوساطة/الاستشارات أعلى تبنيًا رقميًا.
hc <- hclust(d, method = "ward.D2")
plot(hc, hang = -1, main = "شجرة التجميع الهرمي للأنشطة الفرعية")
rect.hclust(hc, k = 3, border = argami_pal[1:3])
قراءة أرقامي: تظهر ثلاثة عناقيد رئيسية: (أ) تمويل/تطوير/تجاري كثيف الائتمان، (ب) خدمات وسيطة/استشارية عالية الرقمنة، (ج) إدارة/تشغيل بربحية متوسطة.
set.seed(123)
# تأمين نطاق k صالح حتى في حالة صفوف متطابقة
n <- nrow(X)
n_unique <- nrow(unique(as.data.frame(X)))
Kmax <- max(2, min(6, n_unique - 1)) # لا نتجاوز عدد الصفوف المميزة-1
# الكوع (WSS)
ks <- 1:Kmax
wss <- sapply(ks, function(k) kmeans(X, centers = k, nstart = 50)$tot.withinss)
elbow <- tibble(k = ks, wss = wss)
# السيلويت
ks2 <- 2:Kmax
sil <- sapply(ks2, function(k){
km <- kmeans(X, centers = k, nstart = 50)
ss <- cluster::silhouette(km$cluster, d)
mean(ss[,3])
})
sil_df <- tibble(k = ks2, sil_width = sil)
# اختيار k المرشّح
k_sel <- if (length(sil_df$sil_width) > 0 && all(is.finite(sil_df$sil_width))) {
sil_df$k[which.max(sil_df$sil_width)]
} else {
pmax(2, floor(median(ks)))
}
p_elbow <- ggplot(elbow, aes(k, wss)) +
geom_line(color = argami_pal[1]) + geom_point(color = argami_pal[2]) +
labs(title = "طريقة الكوع — مجموع التباينات داخل العناقيد", x = "k", y = "WSS")
p_sil <- ggplot(sil_df, aes(k, sil_width)) +
geom_line(color = argami_pal[3]) + geom_point(color = argami_pal[4]) +
labs(title = "متوسط عرض السيلويت حسب k", x = "k", y = "Silhouette")
p_elbow; p_sil
استدلال أرقامي: غالبًا ما يكون k = 3 اختيارًا متوازنًا (انثناء بالكوع وارتفاع نسبي للسيلويت).
set.seed(123)
km <- kmeans(X, centers = k_sel, nstart = 50)
subsec$عنقود <- factor(km$cluster)
# إسقاط PCA للعرض
pca <- prcomp(X)
pca_df <- as_tibble(pca$x[,1:2]) %>% setNames(c("PC1","PC2")) %>% bind_cols(subsec)
ggplot(pca_df, aes(PC1, PC2, color = عنقود, label = النشاط)) +
geom_point(size = 3) +
geom_text(vjust = -1) +
scale_color_manual(values = argami_pal[1:3]) +
labs(title = paste0("K-means (k=", k_sel, ") — إسقاط PCA للمجموعات"), color = "العنقود")
قراءة أرقامي: العناقيد الثلاثة تُظهر فواصل واضحة بين أنشطة كثيفة الائتمان، وأنشطة عالية الرقمنة، وأنشطة تشغيلية متوسطة الربحية.
mds <- cmdscale(d, k = 2)
mds_df <- as_tibble(mds) %>% setNames(c("البعد1","البعد2")) %>% bind_cols(subsec)
ggplot(mds_df, aes(البعد1, البعد2, color = عنقود, label = النشاط)) +
geom_point(size = 3) +
geom_text(vjust = -1) +
scale_color_manual(values = argami_pal[1:3]) +
labs(title = "MDS — تمثيل المسافات بين الأنشطة في بعدين", color = "العنقود")
قراءة أرقامي: قرب النقاط يعني تشابهًا بنيويًا (ائتمان/رقمنة/ربحية/تعويض) — ما يعين على تصميم عروض/سياسات مخصصة لكل مجموعة.
cluster_summary <- subsec %>%
group_by(عنقود) %>%
summarise(
n = n(),
كثافة_الائتمان = mean(كثافة_الائتمان),
تبني_رقمي = mean(تبني_رقمي),
ربحية_تشغيلية = mean(ربحية_تشغيلية),
متوسط_تعويض = mean(متوسط_تعويض)
)
cluster_summary
تفسير أرقامي: - عنقود 1 (غالبًا
تطوير/تجاري): كثافة ائتمان وربحية أعلى — يستحق آليات تمويل مرنة
مع رقابة تكاليف.
- عنقود 2 (وساطة/استشارات): تبنٍ رقمي مرتفع — فرصة
لمنتجات PropTech وخدمات منصات.
- عنقود 3 (إدارة/تشغيل): ربحية متوسطة وتعويضات أقل —
برامج كفاءة وتشغيل ذكي.