Pendahuluan

Visualisasi data bivariat merupakan metode penyajian data yang digunakan untuk mengeksplorasi hubungan atau pola antara dua variabel. Pendekatan ini memungkinkan kita untuk melihat bagaimana suatu variabel berinteraksi dengan variabel lainnya, baik dalam bentuk hubungan numerik-numerik maupun numerik-kategorik. Dalam analisis ini, berbagai teknik visualisasi bivariat diterapkan untuk memahami faktor-faktor yang memengaruhi jumlah penyewaan sepeda.

Analisis Data

Dataset ini berasal dari sistem bike sharing di Washington, D.C., yang diperoleh dari UCI Machine Learning Repository. Dataset yang digunakan dalam analisis ini merupakan data penyewaan sepeda harian (bike sharing dataset) yang mencakup periode tahun 2011 hingga 2012. Data ini memuat informasi jumlah penyewaan sepeda (cnt) beserta berbagai faktor yang mungkin memengaruhinya, seperti temperatur, kelembapan, kecepatan angin, kondisi cuaca, musim, status hari kerja, bulan, dan tahun. Unit analisis dalam dataset ini adalah hari, dengan total penyewaan sepeda sebagai variabel dependen utama.

library(ggplot2)
library(dplyr)
library(readxl)
library(DT)

databike <- read_excel("~/Semester 4/Visualisasi Data/databike.xlsx")
bike <- databike

Berikut merupakan tabel penjelasan untuk variabel numerik.

No. Variabel Numerik Keterangan
1. temp suhu dalam skala Celsius
2. atemp suhu yang dirasakan
3. hum kelembapan
4. windspeed kecepatan angin
5. casual jumlah penyewaan sepeda oleh pengguna kasual
6. registered jumlah penyewaan sepeda oleh pengguna terdaftar
7. cnt total jumlah penyewaan sepeda (casual + registered)

untuk variabel kategorik, kita akan melakukan recode untuk memudahkan penjelasan dan analisis selanjutnya dengan kategori dibawah.

bike <- databike %>%
  mutate(
    season = factor(season,levels = c(1, 2, 3, 4),
                    labels = c("Spring", "Summer", "Fall", "Winter")),
    weathersit = factor(weathersit,levels = c(1, 2, 3, 4),
                        labels = c("Clear", "Cloudy", "Light Rain", "Snow")),
    workingday = factor(workingday,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", "Mei", "Jun",
                             "Jul", "Agu", "Sep", "Okt", "Nov", "Des"))
  )

berikut merupakan tabel data yang menyajikan dataset dengan keseluruhan variabel.

datatable(bike, options = list(pageLength = 5, autoWidth = TRUE))

Setelah penjelasan dan recode, kita akan melakukan analisis menggunakan visualisasi bivariat.

Apakah temperatur (temp) berpengaruh terhadap total peminjaman sepeda (cnt)?

ggplot(bike, aes(x = temp, y = cnt)) +
  geom_point(color = "steelblue", alpha = 0.5) +
  labs(title = "Scatter Plot of Total Bike Rentals vs Temperature",
       x = "Temperature (temp)",
       y = "Total Rentals (cnt)") +
  theme_minimal()

Scatter plot di atas menunjukkan hubungan antara suhu (temp) dan jumlah penyewaan sepeda (cnt). Setiap titik pada grafik mewakili satu hari, dengan posisi horizontal menunjukkan suhu dan posisi vertikal menunjukkan jumlah penyewaan sepeda pada hari tersebut. Dari visualisasi ini terlihat bahwa terdapat pola positif antara suhu dan jumlah penyewaan sepeda, di mana semakin tinggi suhu, semakin banyak penyewaan sepeda yang terjadi. Hal ini menunjukkan bahwa cuaca yang lebih hangat cenderung meningkatkan penggunaan sepeda, sementara suhu yang lebih rendah mungkin membuat orang enggan untuk menyewa sepeda. Meskipun terdapat beberapa titik yang menyebar, pola umum menunjukkan bahwa suhu memiliki pengaruh positif terhadap jumlah penyewaan sepeda.

Bagaimana distribusi dari total peminjaman sepeda (cnt) berdasarkan musim (season)?

ggplot(bike, aes(x = season, y = cnt)) +
  geom_boxplot(fill = "lightblue", color = "darkblue") +
  labs(title = "Boxplot of Total Bike Rentals by Musim",
       x = "Musim",
       y = "Total Rentals (cnt)") +
  theme_minimal()

Boxplot bivariate di atas digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan kategori musim (season). Setiap kotak pada grafik mewakili distribusi penyewaan sepeda untuk masing-masing musim, dengan garis di dalam kotak menunjukkan median, batas kotak menunjukkan kuartil pertama (Q1) dan kuartil ketiga (Q3), serta whisker yang memanjang menunjukkan rentang data. Dari visualisasi ini terlihat bahwa musim Summer memiliki jumlah penyewaan sepeda yang lebih tinggi dibandingkan dengan musim lainnya, dengan median yang berada di kisaran 5.000 penyewaan per hari. Sementara itu, musim Winter memiliki jumlah penyewaan yang lebih rendah, dengan median di bawah 3.000 penyewaan per hari. Hal ini menunjukkan bahwa penggunaan sepeda cenderung meningkat selama musim panas dan menurun selama musim dingin, kemungkinan karena faktor cuaca yang mempengaruhi kenyamanan dalam menggunakan sepeda.

Bagaimana perbandingan pola distribusi antar kondisi cuaca (weathersit)?

ggplot(bike, aes(x = weathersit, y = cnt)) +
  geom_violin(fill = "lightcoral", color = "darkred", alpha = 0.6) +
  geom_boxplot(width = 0.1, fill = "white", color = "black", outlier.shape = NA) +
  labs(title = "Violin Plot of Total Bike Rentals by Kondisi Cuaca",
       x = "Kondisi Cuaca",
       y = "Total Rentals (cnt)") +
  theme_minimal()

Violin plot bivariate di atas digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan kondisi cuaca (weathersit). Setiap bentuk violin mewakili distribusi penyewaan sepeda untuk masing-masing kondisi cuaca, dengan bagian yang lebih lebar menunjukkan bahwa lebih banyak hari memiliki jumlah penyewaan pada kisaran tersebut. Boxplot di dalam violin memberikan informasi statistik ringkas, seperti median dan kuartil. Dari visualisasi ini terlihat bahwa kondisi cuaca yang cerah (Clear) memiliki distribusi penyewaan sepeda yang lebih tinggi dan lebih padat dibandingkan dengan kondisi cuaca lainnya, seperti hujan ringan (Light Rain) atau hujan deras (Heavy Rain), yang memiliki distribusi penyewaan yang lebih rendah. Hal ini menunjukkan bahwa kondisi cuaca yang baik cenderung meningkatkan penggunaan sepeda, sementara kondisi cuaca yang buruk dapat mengurangi minat orang untuk menyewa sepeda.

Apakah kondisi cuaca (weathersit) memengaruhi jumlah penyewaan sepeda (cnt)?

ggplot(bike, aes(x = weathersit, y = cnt)) +
  geom_boxplot(fill = "lightblue", color = "navy", outlier.color = "red") +
  labs(title = "Pengaruh Kondisi Cuaca terhadap Jumlah Penyewaan",
       x = "Kondisi Cuaca", y = "Total Penyewaan (cnt)") +
  theme_minimal()

Dari boxplot ini, terlihat jelas bahwa cuaca sangat memengaruhi jumlah penyewaan sepeda. Saat cuaca cerah (Clear), jumlah penyewaan biasanya paling tinggi. dan variasinya juga paling beragam, ada hari yang sepi tapi ada juga yang sangat ramai. Cuaca berawan (Cloudy) juga masih cukup ramai, meskipun secara umum jumlah penyewaannya sedikit lebih rendah dibanding cuaca cerah. Sementara itu, saat hujan ringan (Light Rain), jumlah penyewaan cenderung jauh lebih sedikit dan tidak banyak variasi, artinya hampir semua hari hujan sepi penyewa. Kesimpulannya: semakin baik cuaca, semakin banyak orang yang menyewa sepeda

Apakah hari kerja berbeda dengan akhir pekan?

ggplot(bike, aes(x = cnt, fill = workingday)) +
  geom_density(alpha = 0.5) +
  labs(title = "Distribusi Penyewaan: Hari Kerja vs Akhir Pekan",
       x = "Total Penyewaan (cnt)", y = "Kepadatan",
       fill = "Hari Kerja?") +
  theme_minimal()

Dari density plot, terlihat jelas perbedaan pola distribusi antara hari kerja dan akhir pekan. Kurva untuk hari kerja (Yes) memiliki puncak yang lebih tajam di kisaran penyewaan menengah. Ini menunjukkan bahwa di hari kerja, jumlah penyewaan cenderung terkonsentrasi pada level tertentu, kemungkinan karena aktivitas rutin seperti bekerja atau sekolah. Sementara itu, kurva untuk akhir pekan (No) lebih landai dan melebar, dengan kepadatan yang cukup tinggi di rentang rendah hingga menengah, serta sedikit variasi di nilai yang lebih tinggi. Artinya, penyewaan di akhir pekan lebih bervariasi, ada beberapa akhir pekan yang ramai, tetapi banyak juga yang sepi. Kesimpulannya, hari kerja cenderung menghasilkan jumlah penyewaan yang lebih terpusat di level menengah, sedangkan akhir pekan penyewaannya lebih tersebar dan tidak menentu.

Bagaimanakah sebaran data total penyewaan sepeda (cnt) berdasarkan bulan dan tahun?

ggplot(bike, aes(x = mnth, y = cnt, color = yr)) +
  geom_jitter(alpha = 0.3, width = 0.2, height = 0) +
  scale_color_manual(values = c("2011" = "blue", "2012" = "red")) +
  labs(title = "Jitter Plot: Distribusi Penyewaan Sepeda per Bulan",
       subtitle = "Titik-titik menunjukkan seluruh data, dengan warna berdasarkan tahun",
       x = "Bulan", y = "Total Penyewaan (cnt)",
       color = "Tahun") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

berdasarkan jitter plot di atas, terlihat bahwa total penyewaan sepeda (cnt) memiliki pola musiman yang cukup jelas sepanjang tahun. Pada awal tahun (Januari–Februari), jumlah penyewaan masih relatif rendah, lalu mulai meningkat sejak Maret dan April, dan mencapai tingkat yang lebih tinggi serta stabil pada periode Mei hingga September. Pada bulan-bulan tersebut, titik-titik data banyak terkonsentrasi pada nilai penyewaan menengah hingga tinggi, yang menunjukkan bahwa permintaan sepeda paling besar terjadi di pertengahan tahun. Memasuki Oktober hingga Desember, terlihat adanya penurunan kembali jumlah penyewaan, yang mengindikasikan bahwa minat atau aktivitas bersepeda mulai berkurang di akhir tahun.

Jika dibandingkan berdasarkan tahun, terlihat bahwa tahun 2012 cenderung memiliki jumlah penyewaan yang lebih tinggi dibandingkan tahun 2011 di hampir semua bulan. Hal ini tampak dari sebaran titik tahun 2012 yang umumnya berada di atas titik tahun 2011 pada bulan yang sama. Dengan kata lain, secara umum terjadi peningkatan total penyewaan sepeda dari tahun 2011 ke 2012. Pola ini menunjukkan bahwa selain dipengaruhi oleh musim (bulan), terdapat juga tren pertumbuhan penggunaan sepeda dari tahun ke tahun.

Kesimpulan

Berdasarkan hasil analisis visualisasi bivariat, dapat disimpulkan bahwa faktor cuaca dan waktu memiliki pengaruh yang signifikan terhadap jumlah penyewaan sepeda. Temperatur yang lebih hangat cenderung meningkatkan jumlah penyewaan, dengan musim panas mencatatkan angka tertinggi dibandingkan musim lainnya. Kondisi cuaca juga berperan penting, di mana hari cerah menghasilkan penyewaan paling banyak, sementara hujan ringan menurunkan jumlah penyewaan secara drastis. Pola yang berbeda terlihat antara hari kerja dan akhir pekan, dengan hari kerja memiliki penyewaan yang lebih terkonsentrasi di level menengah, sedangkan akhir pekan lebih bervariasi. Selain itu, terdapat tren peningkatan penyewaan dari tahun 2011 ke 2012, serta pola musiman yang konsisten di mana pertengahan tahun menjadi periode paling ramai.