Sumber Data : Jumlah Kendaraan Bermotor Menurut Provinsi dan Jenis Kendaraan (unit), 2025 — Badan Pusat Statistik (BPS).
Data Excel :Jumlah Kendaraan Bermotor Menurut Provinsi dan Jenis Kendaraan (unit), 2025
Deskripsi : Analisis ini bertujuan untuk memberikan gambaran mengenai pola kepemilikan dan struktur jenis kendaraan bermotor di 3 provinsi (Jawa Timur, Jawa Tengah, dan DKI Jakarta), membandingkan proporsi kendaraan roda dua (sepeda motor) terhadap roda empat atau lebih, serta melihat potensi hubungan antarjenis kendaraan untuk mendukung perencanaan transportasi daerah. Perlu dicatat bahwa dengan hanya 3 provinsi, hasil analisis bersifat ilustratif dan tidak dapat digeneralisasi untuk seluruh Indonesia.
library(tidyverse)
library(readxl)
library(kableExtra)
# 1. Baca data LANGSUNG dari Google Sheets (tanpa perlu download file apapun)
# Caranya: ambil ID spreadsheet dari link Google Sheets, lalu bentuk URL
# export ke CSV. Sheet harus di-set "Anyone with the link can view".
sheet_id <- "1Olunxaak7KYOXJ7dkAu_xWolzftWAmfnVXON9chOAxA"
url_csv <- paste0("https://docs.google.com/spreadsheets/d/", sheet_id, "/export?format=csv")
data_raw <- read_csv(url_csv, skip = 2, show_col_types = FALSE)
colnames(data_raw)[1] <- "Jenis_Kendaraan"
# 2. Buang baris judul kelompok ("Kendaraan Roda 4 atau Lebih" / "Kendaraan Roda 2")
# yang tidak memuat angka, dan baris kosong
data_wide <- data_raw %>%
filter(!is.na(Jenis_Kendaraan)) %>%
filter(!Jenis_Kendaraan %in% c("Kendaraan Roda 4 atau Lebih", "Kendaraan Roda 2")) %>%
mutate(across(-Jenis_Kendaraan, ~ as.numeric(gsub("[^0-9]", "", as.character(.)))))
# 3. Bentuk tabel tampilan (Jenis Kendaraan sebagai baris) -- sesuai struktur asli file
df_tabel_final <- data_wide
df_tabel_final %>%
kbl(
format = "html",
caption = "<b>Tabel Jumlah Kendaraan Bermotor Menurut Jenis dan Provinsi (3 Provinsi)</b>",
col.names = c("Jenis Kendaraan", colnames(df_tabel_final)[-1]),
format.args = list(big.mark = ".", decimal.mark = ",")
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = TRUE,
position = "center"
) %>%
pack_rows("Kendaraan Roda 4 atau Lebih", 1, 3) %>%
pack_rows("Kendaraan Roda 2", 4, 4) %>%
row_spec(5, bold = TRUE, background = "#f2f2f2")| Jenis Kendaraan | JAWA TIMUR | JAWA TENGAH | DKI JAKARTA |
|---|---|---|---|
| Kendaraan Roda 4 atau Lebih | |||
| Mobil Penumpang | 5.588.804 | 1.741.611 | 2.336.960 |
| Bus | 48.012 | 39.734 | 37.981 |
| Truk | 816.582 | 700.639 | 527.841 |
| Kendaraan Roda 2 | |||
| Sepeda Motor | 20.246.077 | 19.838.639 | 9.376.276 |
| Jumlah / Total | 26.699.475 | 22.320.623 | 12.279.058 |
# 4. Ubah ke format Provinsi sebagai baris (dipakai untuk semua visualisasi di bawah)
data_clean <- data_wide %>%
filter(Jenis_Kendaraan != "Jumlah / Total") %>%
pivot_longer(-Jenis_Kendaraan, names_to = "Provinsi", values_to = "Nilai") %>%
pivot_wider(names_from = Jenis_Kendaraan, values_from = Nilai) %>%
mutate(Jumlah = `Mobil Penumpang` + Bus + Truk + `Sepeda Motor`)# 3. Data untuk Bar Chart
df_bar <- data_clean
# 4. Gambar Bar Chart
ggplot(df_bar, aes(x = Provinsi, y = Jumlah)) +
geom_bar(stat = "identity", fill = "steelblue", color = "black") +
scale_y_continuous(labels = scales::comma) +
theme_minimal() +
labs(
title = "Jumlah Kendaraan Bermotor di 3 Provinsi",
x = "Provinsi",
y = "Jumlah (Unit)"
) +
theme(axis.text.x = element_text(angle = 0, hjust = 0.5, size = 9))Interpretasi:
Diagram batang di atas membandingkan total jumlah kendaraan bermotor antara Jawa Timur, Jawa Tengah, dan DKI Jakarta:
Catatan: karena hanya membandingkan 3 provinsi, kesimpulan ini terbatas pada ketiga wilayah tersebut dan tidak dapat digeneralisasi untuk seluruh Indonesia.
# 1. Ambil data jumlah yang sudah bersih dari chunk 1
df_hist <- data_clean %>%
select(Jumlah) %>%
filter(!is.na(Jumlah))
# 2. Buat Histogram
ggplot(df_hist, aes(x = Jumlah)) +
geom_histogram(bins = 15, fill = "darkorange", color = "black") +
scale_x_continuous(labels = scales::comma) +
theme_minimal() +
labs(
title = "Distribusi Frekuensi Jumlah Kendaraan",
x = "Jumlah Kendaraan (Unit)",
y = "Frekuensi"
)Interpretasi:
Histogram di atas menggambarkan sebaran total jumlah kendaraan bermotor pada 3 provinsi yang dianalisis (Jawa Timur, Jawa Tengah, DKI Jakarta):
Catatan keterbatasan: dengan hanya 3 data (n = 3), histogram ini tidak cukup untuk menyimpulkan bentuk distribusi (misalnya skewness) secara statistik. Histogram lebih bermakna digunakan pada data dengan jumlah observasi yang lebih banyak, sehingga di sini fungsinya lebih sebagai ilustrasi sebaran nilai ketimbang analisis distribusi yang solid.
# 1. Ambil data Mobil Penumpang dan Sepeda Motor dari data_clean
df_scatter <- data_clean %>%
select(
Mobil = `Mobil Penumpang`,
Sepeda_Motor = `Sepeda Motor`
)
# 2. Buat Scatter Plot dari tabel baru
ggplot(df_scatter, aes(x = Mobil, y = Sepeda_Motor)) +
geom_point(color = "purple", size = 3, alpha = 0.7) +
geom_smooth(method = "lm", color = "black", se = FALSE) +
scale_x_continuous(labels = scales::comma) +
scale_y_continuous(labels = scales::comma) +
theme_minimal() +
labs(
title = "Hubungan Jumlah Mobil dan Sepeda Motor",
x = "Jumlah Mobil",
y = "Jumlah Sepeda Motor"
)Interpretasi:
Scatter plot di atas memperlihatkan hubungan antara dua variabel numerik, yaitu jumlah Mobil Penumpang (sumbu X) dan jumlah Sepeda Motor (sumbu Y), untuk 3 provinsi yang dianalisis:
Catatan keterbatasan: dengan hanya 3 titik data (n = 3), garis regresi linier yang ditampilkan tidak dapat digunakan untuk menyimpulkan kekuatan korelasi secara statistik — dengan jumlah observasi sekecil ini, garis regresi hampir selalu tampak “pas” secara visual meski belum tentu mencerminkan hubungan yang sebenarnya. Scatter plot ini lebih berfungsi sebagai ilustrasi pola awal, dan akan lebih bermakna jika jumlah provinsi yang dibandingkan ditambah.
Berdasarkan analisis data jumlah kendaraan bermotor tahun 2025 pada 3 provinsi (Jawa Timur, Jawa Tengah, dan DKI Jakarta), dapat disimpulkan beberapa hal berikut: