Pendahuluan

Sebagai data analyst di perusahaan penyedia layanan bike sharing, saya ditugaskan untuk memahami pola penggunaan sepeda dari waktu ke waktu. Dataset yang digunakan mencatat penyewaan harian di Washington D.C. selama dua tahun (2011–2012). Analisis ini bertujuan menjawab pertanyaan-pertanyaan berikut:

Bagaimana tren penyewaan sepeda secara keseluruhan? Apakah ada peningkatan dari tahun ke tahun?

Bagaimana pola musiman dalam penyewaan? Kapan puncak dan lembah terjadi?

Apakah ada perbedaan perilaku antara pengguna kasual dan terdaftar? Bagaimana kontribusi masing-masing terhadap total penyewaan?

Bagaimana perbedaan pola penyewaan antara hari kerja dan akhir pekan?

Dengan memahami pola-pola ini, perusahaan dapat mengoptimalkan penempatan armada, penjadwalan petugas, dan strategi promosi.

Data dan Persiapan

Data harian mencakup informasi tanggal, jumlah penyewaan oleh pengguna kasual (casual), terdaftar (registered), dan total (cnt). Selain itu terdapat variabel cuaca dan musim. Untuk keperluan time series, kita fokus pada kolom tanggal dan jumlah penyewaan. Berikut adalah cuplikan data setelah dilakukan recode pada variabel kategorik (musim, cuaca, hari libur, dll.) agar lebih mudah diinterpretasi.

# Baca data (sesuaikan path dengan lokasi file Anda)
databi <- read_xlsx("D:/PERKULIAHAN/SEMESTER 4/Visualisasi Data sem 4/data day.xlsx")

# Perbaiki data: ubah koma menjadi titik pada kolom numerik
databi <- databi %>%
  mutate(across(c(temp, atemp, hum, windspeed, casual, registered, cnt), 
                ~ as.numeric(gsub(",", ".", .))))

# Recode variabel kategorik
databimut <- databi %>%
  mutate(
    season = factor(season, levels = 1:4, 
                    labels = c("Spring", "Summer", "Fall", "Winter")),
    weathersit = factor(weathersit, levels = 1:4, 
                        labels = c("Clear", "Cloudy", "Light Rain", "Snow")),
    workingday = factor(workingday, levels = c(0, 1), 
                        labels = c("No", "Yes")),
    holiday = factor(holiday, levels = c(0, 1), 
                     labels = c("No", "Yes")),
    yr = factor(yr, levels = c(0, 1), 
                labels = c("2011", "2012")),
    mnth = factor(mnth, levels = 1:12, 
                  labels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", 
                             "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")),
    weekday = factor(weekday, levels = 0:6, 
                     labels = c("Minggu", "Senin", "Selasa", "Rabu", 
                                "Kamis", "Jumat", "Sabtu"))
  )

# Konversi kolom dteday ke format Date
databimut <- databimut %>%
  mutate(dteday = as.Date(dteday))

Berikut adalah 6 baris pertama data yang akan digunakan:

databimut %>%
  select(dteday, season, yr, casual, registered, cnt) %>%
  head(6) %>%
  knitr::kable(
    format = "html",
    col.names = c("Tanggal", "Musim", "Tahun", "Kasual", "Terdaftar", "Total"),
    caption = "Cuplikan data bike sharing harian",
    align = "c"
  )
Cuplikan data bike sharing harian
Tanggal Musim Tahun Kasual Terdaftar Total
2011-01-01 Spring 2011 331 654 985
2011-01-02 Spring 2011 131 670 801
2011-01-03 Spring 2011 120 1229 1349
2011-01-04 Spring 2011 108 1454 1562
2011-01-05 Spring 2011 82 1518 1600
2011-01-06 Spring 2011 88 1518 1606

Tren Total Penyewaan Harian

Visualisasi pertama menampilkan seluruh data harian (garis abu-abu tipis) dilapisi dengan garis smoothing LOESS (hijau) yang memperlihatkan tren jangka panjang dan pola musiman.##

# 1. Time series total penyewaan (cnt) dengan smoothing LOESS
ggplot(databimut, aes(x = dteday, y = cnt)) +
  geom_line(alpha = 0.3, color = "gray50") +
  geom_smooth(method = "loess", se = TRUE, color = "darkgreen") +
  labs(title = "Tren Harian Penyewaan Sepeda",
       subtitle = "Garis halus (LOESS) menunjukkan pola musiman dan tren jangka panjang",
       x = "Tanggal", y = "Total Penyewaan (cnt)") +
  theme_minimal()

Dari grafik ini, kita dapat melihat bahwa penyewaan sepeda berfluktuasi setiap hari, namun secara umum terdapat pola musiman di mana penyewaan meningkat drastis pada pertengahan tahun (musim panas) dan menurun pada awal serta akhir tahun (musim dingin). Selain itu, terlihat tren peningkatan dari tahun 2011 ke 2012, ditandai dengan garis smoothing yang lebih tinggi di tahun kedua. Hal ini mengindikasikan bahwa layanan bike sharing semakin populer dan banyak digunakan masyarakat.

Perbandingan Tren Pengguna Kasual dan Terdaftar

Untuk memahami kontribusi masing-masing segmen pengguna, kita bandingkan garis smoothing dari jumlah penyewaan kasual dan terdaftar.

# 2. Perbandingan tren pengguna kasual vs terdaftar
ggplot(databimut, aes(x = dteday)) +
  geom_smooth(aes(y = casual, color = "Kasual"), method = "loess", se = FALSE) +
  geom_smooth(aes(y = registered, color = "Terdaftar"), method = "loess", se = FALSE) +
  scale_color_manual(values = c("Kasual" = "orange", "Terdaftar" = "steelblue")) +
  labs(title = "Tren Pengguna Kasual dan Terdaftar",
       subtitle = "Perbandingan pola penggunaan jangka panjang",
       x = "Tanggal", y = "Jumlah Penyewaan", color = "Tipe Pengguna") +
  theme_minimal()

Grafik menunjukkan bahwa segmen pengguna terdaftar mempertahankan level yang lebih tinggi dibandingkan segmen kasual sepanjang periode pengamatan dengan fluktuasi musiman yang berulang sedangkan segmen kasual bergerak pada level yang lebih rendah dengan puncak musiman yang relatif lebih terfokus; pada periode awal kedua kelompok mengalami kenaikan tetapi laju kenaikan pengguna terdaftar tampak lebih cepat sehingga jarak antar kelompok meluas. Secara visual perbedaan level dan pola musiman tampak nyata namun klaim tentang signifikansi memerlukan pengujian statistik terpisah misalnya perbandingan rata rata berkala atau pemodelan deret waktu untuk mengendalikan tren dan autokorelasi. Implikasi untuk kebijakan harus mempertimbangkan perbedaan karakter penggunaan ini namun keputusan operasional hendaknya didasarkan pada hasil analisis kuantitatif lanjutan.

Tren Penyewaan per Tahun

Untuk melihat perbedaan pola antar tahun secara lebih detail, kita pisahkan berdasarkan tahun.

# 3. Perbandingan tren antara hari kerja dan akhir pekan

# Hitung rata-rata bergulir 7 hari untuk memperhalus fluktuasi harian
databimut <- databimut %>%
  arrange(dteday) %>%
  group_by(workingday) %>%
  mutate(rolling_avg = rollmean(cnt, k = 7, fill = NA, align = "right")) %>%  #menghitung rata-rata dari 7 hari terakhir untuk setiap titik data, sehingga fluktuasi harian yang tajam menjadi lebih halus dan pola tren jangka panjang lebih mudah diamati
  ungroup()

ggplot(databimut, aes(x = dteday, y = rolling_avg, color = workingday)) +
  geom_line(size = 1) +
  scale_color_manual(values = c("No" = "orange", "Yes" = "steelblue"),
                     labels = c("Akhir Pekan/Libur", "Hari Kerja")) +
  labs(title = "Tren Penyewaan: Hari Kerja vs Akhir Pekan",
       subtitle = "Rata-rata bergulir 7 hari untuk memperlihatkan pola yang lebih halus",
       x = "Tanggal", y = "Rata-rata Penyewaan (7-hari)", color = "Tipe Hari") +
  theme_minimal()

Grafik menunjukkan bahwa kedua seri mengikuti pola musiman yang serupa sepanjang periode pengamatan, di mana kenaikan dan penurunan terjadi pada waktu yang relatif sama. Garis hari kerja cenderung berada pada level yang lebih tinggi dan bergerak lebih stabil dari waktu ke waktu, sedangkan garis akhir pekan menunjukkan fluktuasi yang lebih besar dengan beberapa lonjakan yang pada periode tertentu mendekati atau bahkan melampaui level hari kerja. Pada awal periode pengamatan kedua seri berada pada level yang relatif rendah, kemudian meningkat secara bertahap hingga mencapai puncak pada pertengahan periode sebelum kembali menurun menuju akhir waktu pengamatan. Penggunaan rata rata bergulir membuat pola umum terlihat lebih halus sehingga pergerakan tren jangka pendek dapat diamati dengan lebih jelas. Secara visual terlihat adanya perbedaan pola antara kedua tipe hari, namun penilaian mengenai apakah perbedaan tersebut benar benar signifikan memerlukan analisis kuantitatif lanjutan yang mempertimbangkan tren dasar dan keterkaitan waktu dalam data.

Kesimpulan

Berdasarkan analisis time series yang telah dilakukan, terlihat bahwa terjadi peningkatan jumlah penyewaan sepeda dari tahun 2011 ke 2012 yang mengindikasikan pertumbuhan popularitas layanan bike sharing di Washington D.C. Peningkatan ini perlu diantisipasi dengan persiapan ekspansi armada dan infrastruktur untuk mendukung pertumbuhan berkelanjutan.

Pola musiman juga sangat kuat, di mana penyewaan mencapai puncaknya pada musim panas dan menurun drastis pada musim dingin. Pola ini konsisten di kedua tahun dan menjadi dasar penting untuk merencanakan ketersediaan sepeda serta petugas, khususnya pada bulan Mei hingga September. Sebaliknya, pada musim dingin perusahaan dapat memfokuskan kegiatan pada perawatan armada.

Dilihat dari tipe pengguna, pengguna terdaftar mendominasi sepanjang tahun dengan pola yang relatif stabil, mencerminkan karakteristik sebagai pengguna rutin atau komuter. Sementara itu, pengguna kasual menunjukkan lonjakan yang sangat tinggi di musim panas namun hampir tidak ada di musim dingin, mengindikasikan penggunaan rekreasi. Perbedaan ini membuka peluang untuk strategi yang berbeda, seperti program loyalitas bagi pengguna terdaftar dan promosi musiman untuk menarik pengguna kasual.

Selain itu, pola penyewaan antara hari kerja dan akhir pekan juga berbeda. Hari kerja memiliki permintaan yang lebih tinggi dan stabil, sedangkan akhir pekan menunjukkan fluktuasi besar dengan lonjakan di musim panas. Oleh karena itu, alokasi sumber daya sebaiknya disesuaikan, dengan fokus pada titik-titik komuter di hari kerja dan area wisata di akhir pekan.

Secara keseluruhan, pemahaman terhadap pola-pola ini memungkinkan perusahaan untuk mengoptimalkan layanan, meningkatkan efisiensi operasional, dan pada akhirnya memberikan kepuasan yang lebih baik kepada pengguna.