Studi Kasus

Dataset ini berasal dari sistem bike sharing di Washington, D.C., yang diperoleh dari UCI Machine Learning Repository. Dataset tersebut mencatat aktivitas penyewaan sepeda harian selama dua tahun, lengkap dengan informasi terkait cuaca, musim, hari kerja, hari libur, serta tipe pengguna (casual dan registered). Setelah memahami konteks pengumpulan data, langkah selanjutnya adalah menganalisis hubungan antarvariabel numerik maupun kategorik untuk melihat pola penggunaan sepeda secara lebih mendalam.

Pada tahap ini, analis mulai mengajukan beberapa pertanyaan:

Apakah terdapat hubungan antara jumlah penyewa casual dan registered? Apakah total penyewaan sepeda berbeda secara signifikan antara hari libur dan bukan hari libur? Bagaimana pola distribusi penyewaan jika dilihat berdasarkan hari dalam seminggu?

Untuk menjawab pertanyaan tersebut digunakan visualisasi data kontinu (bivariate), yaitu visualisasi yang berfokus pada hubungan antara dua variabel dalam satu waktu. Pada scatter plot antara casual dan registered, visualisasi membantu melihat kekuatan dan arah hubungan kedua tipe pengguna tersebut. Pada boxplot holiday terhadap cnt, visualisasi menunjukkan perbedaan distribusi jumlah penyewaan antara hari libur dan bukan hari libur. Sedangkan pada violin plot weekday terhadap cnt, visualisasi memperlihatkan bentuk distribusi dan variasi penyewaan sepeda di setiap hari dalam seminggu.

Memuat Data dan Menjelajahi Struktur Data

Data diimpor dari file berformat CSV ke dalam R dengan menggunakan fungsi read.csv(). Pastikan lokasi atau path file disesuaikan dengan folder tempat dataset tersimpan di komputer Anda agar proses pembacaan data berjalan dengan benar. Berikut merupakan contoh kode yang digunakan untuk memuat data tersebut:

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

Berdasarkan output yang ditampilkan, dataset ini memiliki 16 variabel yang terdiri dari variabel numerik dan kategorik. Variabel numerik yang ada antara lain temp, atemp, hum, windspeed, casual, registered, dan cnt. Variabel-variabel tersebut memberikan informasi mengenai suhu, suhu terasa, kelembapan, kecepatan angin, jumlah penyewaan oleh pengguna casual, jumlah penyewaan oleh pengguna registered, serta total keseluruhan penyewaan sepeda.

Deskripsi Data 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)

Sementara itu, variabel kategorik seperti season, weathersit, dan workingday dilakukan proses recode agar lebih mudah dibaca dan dipahami saat analisis maupun visualisasi. Dengan recode ini, angka-angka yang sebelumnya mewakili kategori akan diganti menjadi label yang lebih jelas. Tujuannya supaya interpretasi jadi lebih sederhana. Misalnya, saat membuat grafik jumlah penyewaan berdasarkan musim, kita bisa langsung melihat label “Spring”, “Summer”, “Fall”, atau “Winter” tanpa harus mengingat kode angka masing-masing musim. Visualisasi jadi lebih enak dilihat dan lebih mudah dipahami oleh orang yang membaca. Meskipun dilakukan recode, struktur datanya tetap sama. Yang berubah hanya penyajian nilai pada variabel kategoriknya menjadi lebih deskriptif, sehingga analisis dan visualisasi selanjutnya bisa dibuat lebih informatif dan tidak membingungkan.

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

Visualisasi Data Kontinu (Bivariate)

Pada visualisasi bivariate, analisis tidak lagi hanya fokus pada satu variabel, tetapi mulai melihat hubungan antara dua variabel dalam satu waktu. Tujuannya adalah untuk memahami apakah terdapat pola, kecenderungan, atau hubungan tertentu yang dapat menjelaskan perubahan pada data. Dalam konteks dataset bike sharing ini, visualisasi kontinu bivariate digunakan untuk melihat bagaimana satu variabel numerik berhubungan dengan variabel lainnya. Misalnya, apakah peningkatan jumlah pengguna casual diikuti oleh peningkatan pengguna registered, atau bagaimana total penyewaan sepeda berubah ketika dibandingkan dengan variabel waktu atau jenis hari tertentu. Dengan pendekatan ini, kita tidak hanya melihat sebaran data, tetapi juga mulai mengidentifikasi arah hubungan, kekuatan hubungan, serta kemungkinan adanya pola linear atau non-linear. Melalui visualisasi seperti scatter plot, boxplot, maupun violin plot, hubungan antarvariabel dapat terlihat lebih jelas secara visual. Pendekatan ini membantu memberikan gambaran yang lebih utuh mengenai pola penggunaan sepeda, sehingga analisis tidak hanya berhenti pada deskripsi data, tetapi juga mulai mengarah pada pemahaman faktor-faktor yang berkaitan dengan perubahan jumlah penyewaan sepeda.

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 cnt dan temp:

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

Dengan variabel yang berbeda yaitu temp dan atemp:

ggplot(bike_data, aes(x = temp, y = atemp)) +
  geom_point(color = "maroon", alpha = 0.5) +
  labs(title = "Scatter Plot of Temp vs Atemp",
       x = "Temp",
       y = "Atemp") +
  theme_minimal()

Scatter plot tersebut menunjukkan hubungan positif kuat dan hampir linear sempurna antara suhu (Temp) dan suhu yang dirasakan (Atemp). Terlihat dari titik-titik data yang membentuk pola garis lurus dari kiri bawah ke kanan atas, yang berarti semakin tinggi suhu (Temp), maka semakin tinggi pula suhu yang dirasakan (Atemp). Meskipun terdapat beberapa titik yang sedikit menyimpang, secara keseluruhan kedua variabel memiliki korelasi yang sangat tinggi.

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:

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

Dengan variabel yang berbeda yaitu weekday dan cnt:

ggplot(bike_data, aes(x = factor(weekday), y = cnt)) +
  geom_boxplot(fill = "magenta", color = "maroon") +
  labs(title = "Boxplot of Total Bike Rentals by Weekday",
       x = "Weekday",
       y = "Total Rentals (cnt)") +
  theme_minimal()

Boxplot bivariate di atas digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan kategori hari dalam minggu (Weekday). Setiap kotak pada grafik mewakili distribusi total penyewaan sepeda pada masing-masing hari. Garis di dalam kotak menunjukkan nilai median, batas bawah dan atas kotak menunjukkan kuartil pertama (Q1) dan kuartil ketiga (Q3), sedangkan whisker menunjukkan rentang data secara keseluruhan.

Dari visualisasi tersebut terlihat bahwa jumlah penyewaan sepeda relatif tidak jauh berbeda antar hari. Beberapa hari seperti pertengahan minggu menunjukkan median yang sedikit lebih tinggi dibandingkan hari lainnya, sedangkan hari-hari tertentu memiliki median yang sedikit lebih rendah. Panjang kotak whisker yang hampir sama menunjukkan bahwa variasi jumlah penyewaan sepeda antar hari relatif serupa. Secara keseluruhan, hal ini menunjukkan bahwa perbedaan hari dalam seminggu tidak memberikan pengaruh yang terlalu besar terhadap jumlah penyewaan 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:

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

Dengan variabel yang berbeda yaitu weekday dan cnt:

ggplot(bike_data, aes(x = season, y = cnt)) +
  geom_violin(fill = "darkgreen", alpha = 0.6) +
  geom_boxplot(width = 0.1, fill = "white", outlier.shape = NA) +
  labs(title = "Violin Plot of Total Rentals by Season",
       x = "Season",
       y = "Total Rentals (cnt)") +
  theme_minimal()

Violin plot bivariate di atas digunakan untuk melihat distribusi jumlah penyewaan sepeda (cnt) pada tiap musim (season). Setiap bentuk violin menunjukkan sebaran data, bagian yang lebih lebar menandakan data yang lebih banyak pada rentang tertentu, sedangkan kotak di dalamnya menunjukkan median serta kuartil. Dari grafik terlihat bahwa musim Fall dan Summer memiliki jumlah penyewaan sepeda yang relatif lebih tinggi. Sebaliknya, musim Spring memiliki jumlah penyewaan paling rendah, sementara musim Winter berada di tingkat menengah.

Selain itu, bentuk violin pada Fall dan Summer yang lebih lebar di bagian atas menunjukkan bahwa pada musim tersebut sering terjadi penyewaan dalam jumlah tinggi. Sebaliknya, Spring memiliki distribusi yang lebih terkonsentrasi pada nilai rendah. Hal ini menunjukkan bahwa musim memiliki pengaruh terhadap penggunaan sepeda, kemungkinan karena kondisi cuaca dan kenyamanan bersepeda yang berbeda pada tiap musim.

Kesimpulan

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

  1. 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.
  2. 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.
  3. 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.
  4. Suhu (Temp) memiliki hubungan yang sangat kuat dengan suhu yang dirasakan (Atemp), di mana peningkatan suhu akan diikuti oleh peningkatan suhu terasa. Hal ini menunjukkan bahwa kedua variabel saling berkaitan erat karena Atemp merupakan ukuran suhu yang dipengaruhi oleh kondisi lingkungan seperti kelembapan dan angin.
  5. Jumlah penyewa sepeda berdasarkan hari dalam minggu relatif stabil dan tidak menunjukkan perbedaan yang signifikan antar hri. Hal ini mengindikasikan bahwa hari tertentu tidak terlalu memengaruhi jumlah penyewaan sepeda.
  6. Musim berpengaruh terhadap jumlah penyewaan sepeda. Penyewaan cenderung lebih tinggi pada musim Fall dan Summer, sedangkan pada musim Spring jumlah penyewaan paling rendah. Hal ini menunjukkan bahwa kondisi musim atau cuaca menjadi faktor penting dalam menentukan minat masyarakat untuk menggunakan sepeda.