Pendahuluan

Pada tahap sebelumnya, telah dilakukan analisis eksploratif univariate untuk memahami karakteristik masing-masing variabel dalam dataset bike sharing. Analisis tersebut fokus pada distribusi nilai numerik seperti jumlah penyewaan sepeda (cnt), sehingga diperoleh gambaran mengenai variasi data, pola sebaran, serta kemungkinan adanya fluktuasi dari hari ke hari.

Namun, memahami distribusi satu variabel saja belum cukup untuk menjelaskan faktor-faktor yang memengaruhi perubahan jumlah penyewaan. Oleh karena itu, dilakukan analisis bivariate untuk menghubungkan dua variabel sekaligus melalui pendekatan visualisasi.

Analisis bivariate bertujuan untuk:

  1. Mengidentifikasi hubungan antar variabel numerik
  2. Membandingkan distribusi antar kategori
  3. Menjawab pertanyaan analitis berbasis data

Setiap visualisasi pada tahap ini tidak hanya menampilkan grafik, tetapi dirancang untuk menjawab pertanyaan analitis tertentu, misalnya apakah faktor lingkungan atau jenis hari berpengaruh terhadap jumlah penyewaan sepeda.

Dengan pendekatan ini, analisis menjadi lebih mendalam dan memberikan insight yang lebih bermakna dibandingkan sekadar deskripsi distribusi data.

Studi Kasus

Dataset yang digunakan berasal dari sistem bike sharing di Washington, D.C. Dataset dapat diakses melalui tautan berikut: Klik di sini. Dataset ini mencatat aktivitas penyewaan sepeda harian selama dua tahun, lengkap dengan informasi terkait musim, kondisi cuaca, suhu, kelembapan, kecepatan angin, serta jenis hari.

Dalam konteks operasional layanan bike sharing, jumlah penyewaan sepeda sangat mungkin dipengaruhi oleh berbagai faktor lingkungan dan sosial/waktu, seperti:

  1. Suhu terasa (atemp) → suhu yang dirasakan pengguna
  2. Hari libur (holiday) → apakah hari tersebut libur nasional atau tidak
  3. Jenis hari (workingday) → hari kerja atau non-hari kerja

Melalui visualisasi bivariate, diharapkan dapat menjawab pertanyaan analitis:

  1. Apakah suhu dapat memengaruhi jumlah penyewaan sepeda?
  2. Apakah terdapat perbedaan jumlah penyewaan antara hari libur dan hari biasa?
  3. Apakah distribusi jumlah penyewaan berbeda antara hari kerja dan hari nonkerja?

Hasil eksplorasi ini dapat memberikan insight awal mengenai faktor-faktor yang memengaruhi perilaku pengguna sepeda, sekaligus menjadi dasar untuk analisis statistik lanjutan atau perencanaan operasional layanan bike sharing.

Memuat Data dan Menjelajahi Struktur Data

Import data dari file CSV ke dalam R menggunakan fungsi read.csv(). Pastikan untuk menyesuaikan path file dengan lokasi di mana dataset disimpan di komputer Anda. Berikut adalah kode untuk memuat data:

day <- read.csv("day.csv")
colnames(day)
##  [1] "instant"    "dteday"     "season"     "yr"         "mnth"      
##  [6] "holiday"    "weekday"    "workingday" "weathersit" "temp"      
## [11] "atemp"      "hum"        "windspeed"  "casual"     "registered"
## [16] "cnt"

Berdasarkan output di atas, dataset ini memiliki 16 variabel, termasuk variabel numerik dan kategorik. Variabel numerik dalam dataset ini termasuk temp, atemp, hum, windspeed, casual, registered, dan cnt. Variabel-variabel ini memberikan informasi tentang suhu, kelembapan, kecepatan angin, jumlah penyewaan sepeda oleh pengguna kasual, jumlah penyewaan sepeda oleh pengguna terdaftar, dan total jumlah penyewaan sepeda. Berikut adalah deskripsi dari variabel-variabel numerik dalam dataset:

Deskripsi Data Numerik

Berikut adalah variabel numerik yang digunakan dalam analisis:

No Variabel Keterangan
1 temp Suhu udara harian yang telah dinormalisasi dalam skala tertentu (berdasarkan suhu Celsius).
2 atemp Suhu yang dirasakan (apparent temperature) yang juga telah dinormalisasi.
3 hum Tingkat kelembapan udara harian dalam bentuk proporsi.
4 windspeed Kecepatan angin harian dalam bentuk skala normalisasi.
5 casual Jumlah penyewaan sepeda oleh pengguna tidak terdaftar (kasual).
6 registered Jumlah penyewaan sepeda oleh pengguna terdaftar.
7 cnt Total jumlah penyewaan sepeda per hari (casual + registered).
datatable(day, options = list(pageLength = 5, autoWidth = TRUE))

variabel-variabel kategorik seperti season, weathersit, dan workingday di-recode untuk memudahkan dalam interpretasi visualisasi dan analisis selanjutnya.

Dengan melakukan recode pada variabel-variabel kategorik, kita dapat lebih mudah memahami dan menginterpretasikan visualisasi yang akan dibuat selanjutnya. Misalnya, ketika kita membuat grafik yang menunjukkan jumlah penyewaan sepeda berdasarkan musim, kita dapat langsung melihat label “Spring”, “Summer”, “Fall”, dan “Winter” daripada harus mengingat bahwa 1 = Spring, 2 = Summer, dan seterusnya. Hal ini membuat visualisasi lebih intuitif dan mudah dipahami oleh audiens.

Struktur data setelah recode akan tetap sama, tetapi nilai-nilai dalam variabel season, weathersit, dan workingday sekarang memiliki label yang lebih deskriptif. Ini akan memudahkan kita dalam membuat visualisasi yang lebih informatif dan mudah dipahami.

Visualisasi Data Kontinu (Bivariate)

Setelah memahami pola distribusi satu variabel, analisis dapat dilanjutkan ke tahap berikutnya, yaitu visualisasi bivariate. Visualisasi bivariate digunakan untuk melihat hubungan antara dua variabel, misalnya bagaimana jumlah penyewaan sepeda (cnt) dipengaruhi oleh faktor lain seperti musim (season), kondisi cuaca (weathersit), suhu (temp), atau jenis hari (workingday). Pendekatan ini memungkinkan analis tidak hanya memahami bagaimana data tersebar, tetapi juga mulai mengeksplorasi faktor-faktor yang berasosiasi dengan perubahan jumlah penyewaan sepeda.

Dengan demikian, visualisasi univariate memberikan pemahaman awal mengenai karakteristik dan variasi data, sedangkan visualisasi bivariate membantu menggali hubungan antarvariabel yang dapat menjelaskan pola penggunaan sepeda secara lebih mendalam. Berikut adalah beberapa jenis visualisasi bivariate yang dapat digunakan untuk menganalisis hubungan antara jumlah penyewaan sepeda (cnt) dengan variabel lain dalam dataset:

Scatter plot

Adalah grafik yang menunjukkan hubungan antara dua variabel numerik. Setiap titik pada scatter plot mewakili satu pengamatan, dengan posisi titik ditentukan oleh nilai kedua variabel. Berikut adalah contoh kode untuk membuat scatter plot antara cnt dan temp:

ggplot(day, 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.

Boxplot Bivariate

Boxplot bivariate digunakan untuk membandingkan distribusi variabel numerik (cnt) berdasarkan kategori dari variabel lain, seperti musim (season). Berikut adalah contoh kode untuk membuat boxplot bivariate antara cnt dan season :

day$season <- factor(day$season,
                     levels = c(1, 2, 3, 4),
                     labels = c("Spring", "Summer", "Fall", "Winter"))

ggplot(day, 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.

Violin Plot Bivariate

Violin plot bivariate digunakan untuk membandingkan distribusi variabel numerik (cnt) berdasarkan kategori dari variabel lain, seperti kondisi cuaca (weathersit). Berikut adalah contoh kode untuk membuat violin plot bivariate antara cnt dan weathersit:

day$weathersit <- factor(day$weathersit,
                         levels = c(1, 2, 3),
                         labels = c("Clear", "Cloudy", "Light Rain"))

ggplot(day, 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.

Kesimpulan

Visualisasi bivariate antara jumlah penyewaan sepeda (cnt) dengan variabel lain seperti suhu (temp), musim (season), dan kondisi cuaca (weathersit) menunjukkan bahwa

Suhu memiliki hubungan positif dengan jumlah penyewaan sepeda, di mana suhu yang lebih tinggi cenderung meningkatkan jumlah penyewaan sepeda, sementara suhu yang lebih rendah dapat menurunkan minat untuk menyewa sepeda. Musim juga mempengaruhi penggunaan sepeda, dengan musim panas menunjukkan tingkat penyewaan yang lebih tinggi dibandingkan dengan musim dingin, kemungkinan karena faktor cuaca yang mempengaruhi kenyamanan dalam menggunakan sepeda. Kondisi cuaca yang cerah meningkatkan penggunaan sepeda, sementara kondisi cuaca yang buruk seperti hujan dapat mengurangi minat untuk menyewa sepeda, menunjukkan bahwa faktor cuaca memiliki pengaruh signifikan terhadap pola penggunaan sepeda. Dengan demikian, faktor-faktor lingkungan seperti suhu, musim, dan kondisi cuaca memiliki pengaruh yang signifikan terhadap pola penggunaan sepeda dalam dataset ini. Informasi ini dapat digunakan untuk perencanaan layanan sepeda yang lebih efektif dan responsif terhadap kondisi lingkungan.

Eksplorasi dan Visualisasi Lanjutan

Setelah melakukan analisis univariate untuk memahami karakteristik masing-masing variabel, langkah berikutnya adalah eksplorasi bivariate untuk melihat hubungan antara dua variabel sekaligus. Analisis ini penting untuk mengidentifikasi faktor-faktor yang memengaruhi jumlah penyewaan sepeda (cnt) secara lebih mendalam.

Dalam eksplorasi lanjutan ini, digunakan tiga pasang variabel baru yang berbeda dari analisis sebelumnya:

  1. Jumlah penyewaan (cnt) vs Suhu Terasa (atemp) Digunakan scatter plot untuk mengeksplorasi hubungan numerik antara suhu yang terasa dan jumlah penyewaan. Pertanyaan analitis: Apakah suhu terasa memengaruhi jumlah penyewaan sepeda? Visualisasi ini membantu memahami tren jumlah penyewaan seiring perubahan suhu.

  2. Jumlah penyewaan (cnt)vs Hari Libur (holiday) Digunakan boxplot untuk membandingkan jumlah penyewaan antara hari libur dan hari biasa. Pertanyaan analitis: Apakah hari libur berbeda dengan hari biasa dalam hal jumlah penyewaan sepeda? Boxplot memungkinkan kita melihat median, distribusi, dan outlier penyewaan untuk masing-masing kategori hari.

  3. Jumlah penyewaan (cnt) vs Jenis Hari (workingday) Digunakan violin plot untuk menampilkan distribusi jumlah penyewaan pada hari kerja dan non-hari kerja. Pertanyaan analitis: Apakah hari kerja berbeda dengan non-hari kerja dalam hal distribusi jumlah penyewaan sepeda? Violin plot memungkinkan membaca variasi penyewaan sekaligus tren distribusinya antar kategori.

Dengan eksplorasi bivariate ini, analis dapat menghubungkan faktor-faktor sosial dan lingkungan (seperti suhu, hari libur, dan jenis hari) dengan perilaku pengguna sepeda, sehingga informasi ini berguna untuk perencanaan operasional dan prediksi permintaan sepeda.

Pertanyaan analitis yang bisa dijawab dengan visualisasi ini antara lain:

  1. Apakah suhu terasa (atemp) memengaruhi jumlah penyewaan sepeda?
  2. Apakah hari libur berbeda dengan hari biasa dalam hal jumlah penyewaan sepeda?
  3. Apakah hari kerja berbeda dengan non-hari kerja dalam hal distribusi jumlah penyewaan sepeda?

Visualisasi ini membantu mengidentifikasi pola dan hubungan yang mungkin tidak terlihat dari analisis univariate saja, sekaligus memberikan insight awal mengenai perilaku pengguna sepeda berdasarkan kondisi cuaca dan kalender.

Scatter Plot

Scatter plot adalah grafik yang menunjukkan hubungan antara dua variabel numerik. Setiap titik pada scatter plot mewakili satu pengamatan, dengan posisi titik ditentukan oleh nilai kedua variabel. Berikut adalah contoh kode untuk membuat scatter plot antara Jumlah Penyewaan (cnt) vs Kecepatan Angin (windspeed):

library(ggplot2)

ggplot(day, aes(x = atemp, y = cnt)) +
  geom_point(alpha = 0.5, color = "darkorange") +
  labs(
    title = "Pengaruh Suhu Terasa terhadap Jumlah Penyewaan Sepeda",
    x = "Suhu Terasa (atemp)",
    y = "Jumlah Penyewaan"
  )

Dari scatter plot terlihat tren kenaikan jumlah penyewaan sepeda seiring meningkatnya suhu terasa (atemp). Ini menjawab pertanyaan analitis bahwa suhu terasa berpengaruh positif terhadap jumlah penyewaan—orang cenderung lebih menyewa sepeda saat cuaca terasa hangat. Titik-titik penyewaan yang sedikit menurun pada suhu terlalu tinggi menunjukkan bahwa ada batas optimal suhu yang membuat orang tetap nyaman bersepeda.

Boxplot

Boxplot bivariate digunakan untuk membandingkan distribusi variabel numerik (cnt) berdasarkan kategori dari variabel lain, seperti musim (holiday). Berikut adalah contoh kode untuk membuat boxplot bivariate antara cnt vs holiday:

ggplot(day, aes(x = factor(holiday), y = cnt, fill = factor(holiday))) +
  geom_boxplot(outlier.colour = "red", outlier.shape = 16) +
  scale_fill_manual(values = c("lightblue", "salmon"),
                    labels = c("Bukan Libur", "Hari Libur")) +
  labs(
    title = "Perbandingan Jumlah Penyewaan Sepeda Hari Biasa vs Hari Libur",
    x = "Hari Libur",
    y = "Jumlah Penyewaan",
    fill = "Tipe Hari"
  ) +
  theme_minimal()

Boxplot menunjukkan median penyewaan lebih tinggi pada hari libur dibanding hari biasa, serta distribusi pada hari libur lebih variatif. Ini secara langsung menjawab pertanyaan analitis bahwa hari libur cenderung meningkatkan jumlah penyewaan sepeda dibanding hari biasa, menunjukkan pengaruh status hari terhadap perilaku pengguna.

Violin

Violin plot bivariate digunakan untuk membandingkan distribusi variabel numerik (cnt) berdasarkan kategori dari variabel lain, seperti kondisi cuaca (workingday). Berikut adalah contoh kode untuk membuat violin plot bivariate antara cnt vs workingday:

ggplot(day, aes(x = factor(workingday), y = cnt, fill = factor(workingday))) +
  geom_violin(trim = FALSE, alpha = 0.6) +
  geom_boxplot(width = 0.1, fill = "white") +
  scale_fill_manual(values = c("lightpink", "lightgreen"),
                    labels = c("Bukan Hari Kerja", "Hari Kerja")) +
  labs(
    title = "Distribusi Jumlah Penyewaan Sepeda Hari Kerja vs Non-Hari Kerja",
    x = "Tipe Hari",
    y = "Jumlah Penyewaan",
    fill = "Tipe Hari"
  ) +
  theme_minimal()

Violin plot menunjukkan distribusi penyewaan sepeda lebih tinggi pada hari kerja dibanding non-hari kerja, dengan variasi yang lebih besar. Hal ini menjawab pertanyaan analitis bahwa jenis hari memengaruhi distribusi jumlah penyewaan, misalnya aktivitas commuting lebih tinggi pada hari kerja.

Kesimpulan

Visualisasi bivariate antara jumlah penyewaan sepeda (cnt) dengan variabel lain seperti suhu terasa (atemp), hari libur (holiday), dan jenis hari (workingday) menunjukkan bahwa:

Suhu terasa (atemp) memiliki hubungan positif dengan jumlah penyewaan sepeda, di mana suhu terasa yang lebih tinggi cenderung meningkatkan jumlah penyewaan sepeda. Hal ini menunjukkan bahwa orang lebih nyaman menggunakan sepeda saat cuaca terasa hangat, sementara suhu yang terlalu rendah atau terlalu panas dapat menurunkan minat untuk menyewa sepeda.

Hari libur (holiday) memengaruhi perilaku penyewaan, dengan hari libur menunjukkan jumlah penyewaan yang lebih tinggi dibanding hari biasa. Hal ini mengindikasikan bahwa orang lebih sering menyewa sepeda pada hari libur karena lebih banyak waktu luang, sementara hari biasa cenderung memiliki penyewaan yang lebih rendah.

Jenis hari (workingday) juga berpengaruh terhadap pola penyewaan, di mana hari kerja menunjukkan jumlah penyewaan yang tinggi dan distribusi yang lebih bervariasi dibanding non-hari kerja. Hal ini kemungkinan karena aktivitas commuting pada hari kerja lebih intens, sementara akhir pekan atau non-hari kerja memiliki pola penyewaan yang berbeda.

Dengan demikian, faktor-faktor lingkungan sosial dan waktu seperti suhu terasa, status hari libur, dan jenis hari memiliki pengaruh yang signifikan terhadap pola penggunaan sepeda dalam dataset ini. Informasi ini dapat digunakan untuk perencanaan layanan sepeda yang lebih efektif, misalnya prediksi permintaan berdasarkan cuaca dan jenis hari.