شعار أرقامي

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

options(encoding = "UTF-8")
knitr::opts_chunk$set(echo=TRUE, message=FALSE, warning=FALSE, fig.width=8, fig.height=4.6)
suppressPackageStartupMessages({
  library(tidyverse)  # dplyr + ggplot2 + tidyr + readr ...
  library(scales); library(glue); library(broom)
})
brand_col <- params$brand_color

# تحويل مرن: يقبل رقم أو نص مثل "28 mph"
mph_to_kmh <- function(x) readr::parse_number(as.character(x)) * 1.60934

1 مقدمة

يقدّم هذا التقرير قراءة تحليلية مبنية على تقرير INRIX لعام 2024 الخاص بمدينة الرياض، والذي يسلّط الضوء على مؤشرات الازدحام المروري خلال الأعوام 2019 و2023 و2024. يركّز التقرير على:

الترتيب العالمي والوطني للازدحام،

الساعات المهدورة في الازدحام عام 2024،

سرعات الذروة وخارج الذروة عبر السنوات،

سرعة “آخر ميل” (2024)،

الرسوم البيانية والملاحظات التنفيذية،

إضافةً إلى نموذج تنبؤ وصفي قصير الأجل مع التأكيد على حدوده.

تستند جميع الأرقام الواردة هنا إلى تقرير INRIX Traffic Scorecard (2024) لمدينة الرياض.

تشير تقارير INRIX لعام 2024 إلى أن السائق في الرياض يخسر نحو 34 ساعة سنويًا في الازدحام، وهو الرقم المعتمد في هذا التقرير. بالمقابل، تورد بعض المصادر الأخرى مثل TomTom Traffic Index تقديرًا أعلى يصل إلى 52 ساعة سنويًا.

2 أسئلة بحثية

كيف تغيّرت سرعات الذروة وخارج الذروة بين 2019 و2024؟

ما دلالة 34 ساعة مهدورة سنويًا على السائق العادي؟

ما الفجوة بين سرعة آخر ميل وسرعات الذروة/خارج الذروة في 2024؟

ما الخطوات العملية الأولى لتقليص ساعات الفقد؟

كيف يبدو مسار وصفي قصير الأجل لو تحسّنت سرعة الذروة تدريجيًا؟

3 ترتيب وملخص سريع

  headline <- tibble::tibble(
    المؤشر = c("الترتيب العالمي", "الترتيب داخل السعودية", "ساعات مهدورة (2024)"),
    القيمة = c(params$rank_world, params$rank_sa, params$hours_lost_2024)
  )
  knitr::kable(headline, align = c("l","c"), caption = "مؤشرات رأسية من INRIX")
مؤشرات رأسية من INRIX
المؤشر القيمة
الترتيب العالمي 142
الترتيب داخل السعودية 1
ساعات مهدورة (2024) 34

r params$city الأولى محليًا (أكثر ازدحامًا داخل السعودية)، وترتيبها العالمي 142.

34 ساعة/سائق/سنة: تعادل قرابة 4 أيام عمل (إن اعتبرنا 8 ساعات/يوم).

4 سرعات الذروة وخارج الذروة (mph → كم/س)

 speeds <- tribble(
    ~type,       ~year, ~mph,
    "ذروة",      2019, params$peak_2019_mph,
    "ذروة",      2023, params$peak_2023_mph,
    "ذروة",      2024, params$peak_2024_mph,
    "خارج الذروة",2019, params$offpeak_2019_mph,
    "خارج الذروة",2023, params$offpeak_2023_mph,
    "خارج الذروة",2024, params$offpeak_2024_mph
  ) %>%
    mutate(kmh = mph_to_kmh(mph))
  
  lastmile <- tibble::tibble(
    type = "آخر ميل (2024 صباحًا)",
    mph  = params$lastmile_2024_mph,
    kmh  = mph_to_kmh(params$lastmile_2024_mph)
  )
  
  knitr::kable(speeds, digits = 1, caption = "سرعات الذروة وخارج الذروة (mph وكم/س)")
سرعات الذروة وخارج الذروة (mph وكم/س)
type year mph kmh
ذروة 2019 31 49.9
ذروة 2023 29 46.7
ذروة 2024 28 45.1
خارج الذروة 2019 38 61.2
خارج الذروة 2023 40 64.4
خارج الذروة 2024 40 64.4
  knitr::kable(lastmile, digits = 1, caption = "سرعة آخر ميل (2024)")
سرعة آخر ميل (2024)
type mph kmh
آخر ميل (2024 صباحًا) 20 32.2

4.1 رسم مقارنة السرعات عبر السنوات

    ggplot(speeds, aes(x = factor(year), y = kmh, group = type, color = type)) +
      geom_line(size=1.2) +
      geom_point(size=3) +
      scale_color_manual(values = c("ذروة"=brand_col, "خارج الذروة"="gray40")) +
      labs(title="مقارنة سرعات الذروة وخارج الذروة (كم/س)",
           x = "السنة", y = "كم/س", color = NULL)

ملاحظات:
  
  الذروة تراجعت من ~50 كم/س (2019) إلى ~45 كم/س (2024).

خارج الذروة تحسّنت/استقرت عند ~64 كم/س في 2023–2024.

4.2 فجوة “آخر ميل” في 2024

# دالة آمنة للتحويل
safe_num <- function(x) {
  x <- suppressWarnings(as.numeric(x))
  if (length(x) == 0 || (length(x)==1 && is.na(x))) NA_real_ else x
}

# نقرأ القيم من الـparams ونتأكد إنها أرقام
peak_val <- safe_num(params$peak_2024_mph)
lastmile_val <- safe_num(params$lastmile_2024_mph)

gap_peak_lastmile <- mph_to_kmh(peak_val) - mph_to_kmh(lastmile_val)

tibble(
  المؤشر = c("ذروة 2024 (كم/س)", "آخر ميل 2024 (كم/س)", "الفجوة (كم/س)"),
  القيمة = c(
    round(mph_to_kmh(peak_val), 1),
    round(mph_to_kmh(lastmile_val), 1),
    round(gap_peak_lastmile, 1)
  )
) %>%
  knitr::kable(caption = "فجوة السرعة بين الذروة وآخر ميل (2024)")
فجوة السرعة بين الذروة وآخر ميل (2024)
المؤشر القيمة
ذروة 2024 (كم/س) 45.1
آخر ميل 2024 (كم/س) 32.2
الفجوة (كم/س) 12.9
  الفجوة كبيرة (~r round(gap_peak_lastmile,1) كم/س) — ما يعني أن “عنق الزجاجة” الأقوى في وسط المدينة/الاقتراب منها.
  

5 قراءة ساعات الفقد (2024)

  lost_tbl <- tibble::tibble(
    "ساعات مهدورة/سائق/سنة" = params$hours_lost_2024,
    "مكافئ بالأيام (8 ساعات/يوم)" = round(params$hours_lost_2024/8, 1)
  )
  knitr::kable(lost_tbl, caption="عبء الازدحام السنوي على السائق (تقريب)")
عبء الازدحام السنوي على السائق (تقريب)
ساعات مهدورة/سائق/سنة مكافئ بالأيام (8 ساعات/يوم)
34 4.2

لماذا مهم؟

الخطاب للمجتمع وصانعي السياسات: استعادة 34 ساعة سنويًا تعني رفع جودة الحياة والإنتاجية.

# Fancy graph واضح: اللابلز ملوّنة ومكتوب فيها النوع + الرقم
suppressPackageStartupMessages(library(tidyverse))

mph_to_kmh <- function(x) readr::parse_number(as.character(x)) * 1.60934

speeds_long <- tibble::tribble(
  ~type,         ~year, ~mph,
  "ذروة",         2019, params$peak_2019_mph,
  "ذروة",         2023, params$peak_2023_mph,
  "ذروة",         2024, params$peak_2024_mph,
  "خارج الذروة",  2019, params$offpeak_2019_mph,
  "خارج الذروة",  2023, params$offpeak_2023_mph,
  "خارج الذروة",  2024, params$offpeak_2024_mph
) %>%
  mutate(kmh = mph_to_kmh(mph))

speeds_wide <- speeds_long %>%
  select(type, year, kmh) %>%
  pivot_wider(names_from = type, values_from = kmh) %>%
  rename(peak = `ذروة`, offpeak = `خارج الذروة`) %>%
  mutate(gap = offpeak - peak)

col_peak    <- "#7E57C2"
col_offpeak <- "#8E9AAF"
col_gap     <- "#E0D7F6"

p <- ggplot(speeds_wide, aes(x = factor(year))) +
  geom_ribbon(aes(ymin = pmin(peak, offpeak), ymax = pmax(peak, offpeak), group = 1),
              fill = col_gap, alpha = 0.9) +
  geom_line(aes(y = peak, group = 1), linewidth = 1.4, color = col_peak) +
  geom_line(aes(y = offpeak, group = 1), linewidth = 1.4, color = col_offpeak) +
  geom_point(aes(y = peak), size = 3.8, color = col_peak) +
  geom_point(aes(y = offpeak), size = 3.8, color = col_offpeak) +
  # Labels أوضح: اسم + قيمة
  geom_text(aes(y = peak, 
                label = paste0("ذروة: ", round(peak,1))),
            vjust = -1.0, color = col_peak, size = 4.2, fontface="bold") +
  geom_text(aes(y = offpeak, 
                label = paste0("خارج: ", round(offpeak,1))),
            vjust = 1.8, color = col_offpeak, size = 4.2, fontface="bold") +
  labs(title = "سرعات الذروة وخارج الذروة في الرياض (كم/س) — INRIX",
       subtitle = "الشريط يوضح الفجوة بين السرعتين عبر 2019 و2023 و2024",
       x = "السنة", y = "كم/س", caption = "المصدر: INRIX Traffic Scorecard 2024") +
  theme_minimal(base_size = 14) +
  theme(
    plot.title   = element_text(face = "bold", size = 16),
    plot.subtitle= element_text(color = "gray30"),
    axis.title.y = element_text(margin = margin(r = 10)),
    axis.title.x = element_text(margin = margin(t = 10)),
    panel.grid.minor = element_blank()
  )

last_row <- speeds_wide %>% filter(year == max(year))

p + 
  annotate("segment", x = 3.02, xend = 3.02,
           y = last_row$peak, yend = last_row$offpeak,
           color = "gray40", linewidth = 1) +
  annotate("label", x = 3.15,
           y = (last_row$peak + last_row$offpeak)/2,
           label = paste0("فجوة 2024: ",
                          scales::number(last_row$gap, accuracy = 0.1), " كم/س"),
           hjust = 0, size = 4,
           fill = "white", color = "gray20", label.size = 0.2)

6 توصيات عملية (مبنية على الأرقام)

علاج آخر ميل:

أولوية لتحسين الحركة قرب المركز (حارات انعطاف إضافية، إزالة حواجز اختناقات، تنظيم مواقف/تحميل).

توجيه Feeder buses لمحطات المترو الأقرب لمراكز العمل.

إدارة الذروة (Peak Management):

استهداف ساعات الذروة التي هبطت من ~50 إلى ~45 كم/س: إشارات متكيفة، توقيتات متغيرة بحسب الحمل، وممرات حافلات وقت الذروة.

تخصيص ممرّات نقل جماعي/مشتركة:

الاستفادة من تحسن خارج الذروة (~64 كم/س) بدفع رحلات غير ضرورية إلى خارج الذروة (تسعير مروري/حوافز).

لوحة متابعة أسبوعية:

ادمج سرعات الذروة/آخر ميل في Dashboard عام: أسرع/أبطأ قطاعات، تقدّم شهري في تقليص ساعات الفقد. # قيود التقرير الأرقام المتاحة ملخصات سنوية وليست سلاسل عالية الدقة (ساعة/يوم)، لذلك التنبؤ وصفي فقط.

لقياس الأثر السببي (قبل/بعد سياسات/مترو) نحتاج بيانات عالية التواتر (TomTom/INRIX APIs أو CSV تجميعي).

7 خاتمة

الذروة تباطأت (2019→2024)، وخارج الذروة بقي قويًا (~64 كم/س)، وآخر ميل بطيء (32 كم/س).

خفض بسيط في زمن الذروة — خصوصًا في “آخر ميل” — يمكن أن يعيد جزءًا ملموسًا من 34 ساعة سنويًا للسائق.

التوصيات أعلاه هي أولوية سريعة حتى قبل جمع بيانات أدق.

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

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