Dataset yang dianalisis berasal dari sistem bike sharing di Washington, D.C., yang mencatat aktivitas penyewaan sepeda setiap hari selama dua tahun. Data ini mencakup berbagai informasi seperti jumlah penyewa (casual, registered, dan cnt), kondisi cuaca (suhu aktual dan suhu terasa), serta tipe hari (hari libur nasional, hari kerja, dan hari dalam seminggu).Pada tahap ini analis mulai bertanya:
Untuk menjawab ketiga pertanyaan analisis tersebut, digunakan beberapa visualisasi time series yang mengeksplorasi hubungan antar variabel dalam dataset penyewaan sepeda. Line plot digunakan untuk menggambarkan hubungan antara suhu dan jumlah penyewaan sepeda dari waktu ke waktu sehingga dapat terlihat apakah perubahan suhu diikuti oleh perubahan jumlah penyewaan. Selanjutnya, heatmap digunakan untuk memperlihatkan pola distribusi penyewaan sepeda berdasarkan hari dan minggu dalam satu tahun sehingga perbedaan pola antara tahun 2011 dan 2012 dapat diamati dengan lebih jelas. Terakhir, line plot dengan Simple Moving Average (7-hari) digunakan untuk menghaluskan fluktuasi data harian sehingga tren utama peningkatan maupun penurunan jumlah penyewaan sepeda sepanjang periode pengamatan dapat terlihat dengan lebih jelas.
suppressPackageStartupMessages({
suppressWarnings({
library(ggplot2)
library(tidyr)
library(viridis)
library(tidyverse)
library(DT)
library(dplyr)
library(lubridate)
library(patchwork)
library(zoo)
library(forecast)
library(viridis)
library(scales)
library(calendar)})
})
bike_day <- read.csv("C:/Users/ASUS/Downloads/bike_day.csv", sep=";") %>%
mutate(dteday = as.Date(dteday, format = "%d/%m/%Y"))
bike_day_suhu <- bike_day %>%
mutate(
kategori_suhu = cut(temp,
breaks = seq(0, 1, by = 0.1),
labels = c("0-0.1", "0.1-0.2", "0.2-0.3", "0.3-0.4",
"0.4-0.5", "0.5-0.6", "0.6-0.7", "0.7-0.8",
"0.8-0.9", "0.9-1.0"),
include.lowest = TRUE),
tahun = as.character(year(dteday))
) %>%
group_by(tahun, kategori_suhu) %>%
summarise(rata_penyewa = mean(cnt, na.rm = TRUE), .groups = 'drop') %>%
filter(!is.na(kategori_suhu))
print(unique(bike_day_suhu$tahun))
## [1] "2011" "2012"
plot1 <- ggplot(bike_day_suhu, aes(x = kategori_suhu, y = rata_penyewa,
group = tahun, color = tahun)) +
geom_line(linewidth = 1) +
geom_point(size = 2) +
scale_color_manual(
values = c("2011" = "orange", "2012" = "red"),
name = "Tahun"
) +
labs(
title = "Hubungan Suhu dengan Penyewaan Sepeda",
x = "Kategori Suhu (normalisasi)",
y = "Rata-rata Jumlah Penyewaan",
caption = "Sumber: Bike Sharing Dataset"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "bottom"
)
plot1
Grafik tersebut merupakan line plot yang menunjukkan hubungan antara kategori suhu dengan rata-rata jumlah penyewaan sepeda pada dua tahun yang berbeda, yaitu 2011 dan 2012. Sumbu horizontal menunjukkan kategori suhu yang telah dikelompokkan dalam beberapa interval, sedangkan sumbu vertikal menunjukkan rata-rata jumlah penyewaan sepeda. Dua garis pada grafik mewakili masing-masing tahun, yaitu garis oranye untuk tahun 2011 dan garis merah untuk tahun 2012.
Secara umum, grafik menunjukkan bahwa semakin tinggi suhu, semakin besar rata-rata jumlah penyewaan sepeda. Pada suhu yang lebih rendah (sekitar kategori 0–0.1 hingga 0.1–0.2), jumlah penyewaan sepeda masih relatif sedikit. Namun, seiring meningkatnya suhu menuju kategori yang lebih hangat (sekitar 0.3–0.6), jumlah penyewaan sepeda meningkat secara cukup signifikan. Hal ini menunjukkan bahwa kondisi cuaca yang lebih hangat mendorong masyarakat untuk lebih sering menggunakan sepeda.
Pada tahun 2011, jumlah penyewaan meningkat secara bertahap dari sekitar 1.200 penyewaan pada suhu terendah hingga mencapai sekitar 4.500 penyewaan pada suhu yang lebih tinggi. Setelah mencapai kategori suhu sekitar 0.6–0.7, jumlah penyewaan cenderung stabil dan kemudian sedikit menurun pada kategori suhu tertinggi.
Sementara itu, pada tahun 2012, pola yang sama juga terlihat tetapi dengan jumlah penyewaan yang lebih tinggi pada hampir semua kategori suhu. Penyewaan sepeda meningkat dari sekitar 2.200 pada suhu rendah hingga mencapai puncak sekitar 6.800–7.000 penyewaan pada kategori suhu sekitar 0.6–0.8. Setelah itu, jumlah penyewaan sedikit menurun pada kategori suhu paling tinggi.
Secara keseluruhanb menunjukkan bahwa suhu memiliki hubungan positif dengan jumlah penyewaan sepeda, di mana kondisi cuaca yang lebih hangat cenderung meningkatkan aktivitas penyewaan. Selain itu, terlihat bahwa tahun 2012 memiliki tingkat penyewaan yang lebih tinggi dibandingkan tahun 2011 pada hampir semua kategori suhu, yang menunjukkan adanya peningkatan penggunaan layanan penyewaan sepeda dari tahun ke tahun.
bike_day <- bike_day %>%
mutate(dteday = as.Date(dteday, format = "%d/%m/%Y"))
plot2 <- bike_day %>%
mutate(
tahun = year(dteday),
bulan = month(dteday),
# Gunakan yday untuk hari dalam tahun, atau pertahankan week dengan pembatasan
minggu = week(dteday),
# Format hari dengan bahasa Inggris untuk menghindari locale issue
hari = wday(dteday, label = TRUE, week_start = 1, abbr = TRUE, locale = "C")
) %>%
ggplot(aes(x = minggu, y = hari, fill = cnt)) +
geom_tile(color = "white", linewidth = 0.1) +
facet_wrap(~tahun, ncol = 1, scales = "free_x") +
scale_fill_gradientn(
colors = c("white", "yellow", "orange", "red", "darkred"),
name = "Jumlah\nPenyewaan",
labels = comma_format(),
na.value = "gray90"
) +
scale_x_continuous(
breaks = seq(0, 53, by = 5),
minor_breaks = seq(0, 53, by = 1)
) +
labs(
title = "Heatmap Kalender Penyewaan Sepeda",
x = "Minggu ke-",
y = "Hari"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, color = "gray50", size = 10),
axis.text.x = element_text(angle = 0, size = 8),
axis.text.y = element_text(size = 8),
legend.position = "right",
legend.title = element_text(face = "bold"),
strip.background = element_rect(fill = "lightgray", color = NA),
strip.text = element_text(face = "bold", size = 10),
panel.grid = element_blank()
)
plot2
Gambar tersebut merupakan heatmap pola penyewaan sepeda per hari dalam satu tahun untuk dua periode, yaitu tahun 2011 dan 2012. Sumbu horizontal menunjukkan minggu ke- dalam satu tahun, sedangkan sumbu vertikal menunjukkan hari dalam seminggu. Warna pada setiap kotak menunjukkan jumlah penyewaan sepeda, di mana warna terang menandakan jumlah penyewaan yang rendah dan warna gelap menandakan jumlah penyewaan yang tinggi.
Pada tahun 2011, terlihat bahwa jumlah penyewaan sepeda pada awal tahun (sekitar minggu 1–10) masih relatif rendah, yang ditunjukkan oleh dominasi warna terang. Memasuki pertengahan tahun (sekitar minggu 15–35), warna mulai berubah menjadi gelap yang menandakan peningkatan jumlah penyewaan sepeda. Hal ini menunjukkan bahwa aktivitas penyewaan sepeda mulai meningkat seiring berjalannya tahun. Setelah minggu ke-35 hingga akhir tahun, intensitas warna kembali sedikit menurun, yang menunjukkan adanya penurunan jumlah penyewaan dibandingkan pertengahan tahun.
Pada tahun 2012, pola penyewaan terlihat lebih tinggi dibandingkan tahun sebelumnya. Hal ini terlihat dari dominasi warna gelap pada banyak minggu, yang menunjukkan jumlah penyewaan sepeda yang lebih besar. Peningkatan paling jelas terjadi pada pertengahan hingga akhir tahun (sekitar minggu 25–45), di mana banyak sel berwarna gelap yang menandakan puncak penyewaan. Ini mengindikasikan bahwa pada tahun 2012 permintaan penyewaan sepeda meningkat secara signifikan dibandingkan tahun 2011.
Dilihat dari pola harian, tidak terdapat perbedaan yang sangat mencolok antara hari kerja dan akhir pekan, tetapi beberapa minggu menunjukkan intensitas yang lebih tinggi pada hari-hari tertentu. Secara umum, variasi terbesar lebih dipengaruhi oleh periode waktu dalam setahun (mingguan) daripada perbedaan antarhari.
Secara keseluruhan menunjukkan bahwa jumlah penyewaan sepeda cenderung meningkat dari awal tahun menuju pertengahan tahun, kemudian sedikit menurun di akhir tahun, serta mengalami peningkatan yang lebih tinggi pada tahun 2012 dibandingkan tahun 2011.
ggplot(bike_day, aes(x = dteday, y = cnt)) +
geom_line(color = "blue", alpha = 0.4, linewidth = 0.3) +
geom_smooth(method = "loess", se = TRUE, formula = y ~ x,
color = "darkred", fill = "pink", alpha = 0.2) +
labs(title = "Tren Penyewaan Sepeda Harian (2011-2012)",
x = "Tanggal",
y = "Jumlah Penyewaan") +
scale_y_continuous(labels = scales::comma_format()) +
scale_x_date(date_breaks = "3 months", date_labels = "%b %Y") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Grafik tersebut menunjukkan perubahan jumlah penyewaan sepeda dari awal tahun 2011 hingga akhir tahun 2012. Sumbu horizontal menunjukkan tanggal, sedangkan sumbu vertikal menunjukkan jumlah penyewaan sepeda. Data harian ditampilkan dengan garis abu-abu yang memiliki fluktuasi cukup besar, sedangkan garis merah menunjukkan rata-rata bergerak 7 hari yang membantu melihat pola tren secara lebih jelas.
Pada awal tahun 2011, jumlah penyewaan sepeda masih relatif rendah, yaitu sekitar 1.000–2.000 penyewaan per hari. Namun, seiring berjalannya waktu menuju pertengahan tahun 2011, jumlah penyewaan meningkat secara bertahap hingga mencapai sekitar 4.000–5.000 penyewaan per hari. Hal ini menunjukkan adanya peningkatan penggunaan layanan penyewaan sepeda selama periode tersebut.
Memasuki akhir tahun 2011, terlihat adanya penurunan jumlah penyewaan yang cukup jelas hingga mendekati sekitar 2.000–3.000 penyewaan. Setelah itu, pada awal tahun 2012, jumlah penyewaan kembali meningkat dengan cukup cepat. Tren kenaikan ini berlanjut hingga pertengahan hingga akhir tahun 2012, di mana jumlah penyewaan mencapai nilai tertinggi, yaitu sekitar 7.000–8.000 penyewaan per hari.
Menjelang akhir tahun 2012, terlihat penurunan yang cukup tajam pada jumlah penyewaan sepeda. Penurunan ini menunjukkan bahwa aktivitas penyewaan tidak selalu stabil dan dapat dipengaruhi oleh faktor musiman atau kondisi tertentu.
Secara keseluruhan menunjukkan bahwa tren penyewaan sepeda cenderung meningkat dari tahun 2011 ke tahun 2012, dengan puncak penggunaan terjadi pada pertengahan hingga akhir tahun 2012, sebelum akhirnya mengalami penurunan kembali.
Berdasarkan hasil visualisasi yang telah dilakukan melalui line plot hubungan suhu dengan penyewaan sepeda, heatmap pola penyewaan per hari, serta time series dengan Simple Moving Average, dapat disimpulkan beberapa temuan utama mengenai pola penggunaan sepeda pada Bike Sharing Dataset.
Suhu mempengaruhi jumlah penyewaan sepeda, semakin tinggi suhu hingga suhu yang nyaman jumlah penyewaan sepeda cenderung meningkat, sedangkan pada suhu rendah jumlah penyewaan lebih sedikit.Pola hubungan antara suhu dan penyewaan pada tahun 2011 dan 2012 pada dasarnya sama, yaitu sama-sama menunjukkan hubungan positif. Namun, jumlah penyewaan pada tahun 2012 secara konsisten lebih tinggi dibandingkan tahun 2011 pada hampir semua kategori suhu.
Pola penyewaan sepeda menunjukkan variasi sepanjang tahun yaitu penyewaan cenderung lebih rendah pada awal tahun, meningkat pada pertengahan tahun, dan kembali menurun menjelang akhir tahun. Selain itu, tingkat penyewaan pada tahun 2012 lebih tinggi dibandingkan tahun 2011.
Tren penyewaan sepeda meningkat dari tahun 2011 ke 2012. Berdasarkan grafik moving average, jumlah penyewaan mengalami peningkatan hingga mencapai puncak pada pertengahan–akhir tahun 2012, kemudian menurun kembali menjelang akhir periode pengamatan.
Secara keseluruhan, hasil analisis menunjukkan bahwa suhu, periode waktu dalam satu tahun, serta tren penggunaan dari tahun ke tahun merupakan faktor penting yang mempengaruhi pola penyewaan sepeda.