Sebagai lanjutan dari materi sebelumnya tentang visualisasi data kategorik dan diskrit yang dapat diakses pada pembahasan terdahulu, pada sesi kali ini kita akan mempelajari visualisasi data kontinu, baik secara univariat maupun bivariat. Data kontinu merupakan jenis data yang nilainya dapat berada pada rentang tertentu dan tidak terbatas pada angka-angka tertentu saja, seperti tinggi badan, berat badan, atau suhu. Melalui visualisasi data kontinu, kita dapat melihat bagaimana distribusi data terbentuk, menemukan pola yang muncul, serta mengidentifikasi kemungkinan adanya nilai pencilan (outlier). Dalam pembahasan ini, kita akan menggunakan dataset Bike Sharing yang memuat informasi mengenai penggunaan sepeda di sebuah kota sebagai contoh untuk mempraktikkan visualisasi data kontinu.
Dataset yang digunakan berasal dari sistem bike sharing di Washington, D.C., dan diperoleh melalui UCI Machine Learning Repository yang dapat diakses pada tautan yang telah disediakan. Data ini merekam aktivitas penyewaan sepeda harian selama periode dua tahun. Setelah memahami konteks pengumpulan data—seperti musim, kondisi cuaca, dan jenis hari—langkah selanjutnya adalah menganalisis bagaimana karakteristik nilai-nilai numerik di dalam dataset tersebut.
Pada tahap ini, analis mulai mengeksplorasi beberapa pertanyaan penting, seperti: seberapa besar perubahan jumlah penyewaan sepeda dari hari ke hari? Apakah jumlahnya cenderung konsisten, tersebar luas, atau menunjukkan lonjakan pada waktu-waktu tertentu?
Untuk menjawab pertanyaan tersebut, digunakan visualisasi univariat kontinu, yaitu teknik visualisasi yang memusatkan perhatian pada satu variabel numerik dalam satu waktu. Melalui pendekatan ini, kita dapat memahami bentuk distribusi data, mengenali pola tertentu, serta mendeteksi adanya nilai ekstrem (outlier). Dengan demikian, visualisasi univariat kontinu memungkinkan kita melihat bagaimana variasi nilai numerik terjadi setiap hari—apakah stabil, fluktuatif, atau mengalami peningkatan signifikan pada periode tertentu. Informasi ini memberikan pemahaman yang lebih mendalam mengenai pola penggunaan sepeda serta dapat menjadi dasar dalam merancang strategi layanan yang lebih optimal dan responsif terhadap permintaan.
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:
## Load Library
library(ggplot2)
library(dplyr)
library(DT)
bike_data <- read.csv("C:/Users/yolan/Downloads/bike_sharing_dataset_by-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 hasil output sebelumnya, dataset ini terdiri dari 16 variabel yang mencakup variabel numerik dan kategorik. Variabel numerik yang terdapat dalam dataset antara lain temp, atemp, hum, windspeed, casual, registered, dan cnt. Variabel-variabel tersebut merepresentasikan informasi kuantitatif seperti suhu aktual, suhu yang dirasakan, tingkat kelembapan, kecepatan angin, jumlah penyewaan oleh pengguna kasual, jumlah penyewaan oleh pengguna terdaftar, serta total keseluruhan penyewaan sepeda. Secara khusus, variabel cnt merupakan hasil penjumlahan dari casual dan registered, sehingga mencerminkan total penggunaan sepeda per hari.
Adapun penjelasan masing-masing variabel numerik adalah sebagai berikut:
Sementara itu, variabel kategorik seperti season, weathersit, dan workingday telah dibahas pada pembelajaran sebelumnya. Untuk mempermudah proses analisis dan interpretasi visualisasi, variabel-variabel tersebut dilakukan proses recode, yaitu mengubah kode numerik menjadi label yang lebih deskriptif.
Dengan melakukan recode pada variabel kategorik, interpretasi grafik menjadi lebih jelas dan komunikatif. Sebagai contoh, ketika menampilkan grafik jumlah penyewaan berdasarkan musim, kita dapat langsung membaca kategori “Spring”, “Summer”, “Fall”, dan “Winter” tanpa harus mengingat kode numeriknya. Hal ini membuat visualisasi lebih intuitif serta memudahkan audiens dalam memahami informasi yang disajikan.
Perlu dicatat bahwa proses recode tidak mengubah struktur dasar dataset, melainkan hanya mengganti representasi nilai pada variabel tertentu agar lebih informatif. Dengan label yang lebih deskriptif, visualisasi yang dihasilkan akan lebih mudah dipahami dan lebih efektif dalam mendukung proses analisis.
datatable(bike_data, options = list(pageLength = 5, autoWidth = TRUE))
Visualisasi data kontinu (univariate) adalah teknik untuk menggambarkan distribusi dan karakteristik dari satu variabel numerik. Beberapa jenis visualisasi yang umum digunakan untuk data kontinu meliputi histogram, density plot, boxplot, violin plot, dan scatter plot. Setiap jenis visualisasi memiliki kelebihan dan kegunaan tertentu dalam membantu kita memahami data. Berikut adalah penjelasan singkat tentang beberapa jenis visualisasi data kontinu (univariate):
Histogram adalah grafik yang menunjukkan distribusi frekuensi dari data kontinu. Histogram membagi data menjadi interval (bin) dan menghitung jumlah pengamatan yang jatuh ke dalam setiap interval tersebut. Berikut adalah contoh kode untuk membuat histogram dari variabel cnt yang menunjukkan total jumlah penyewaan sepeda:
ggplot(bike_data, aes(x = cnt)) +
geom_histogram(binwidth = 100, fill = "steelblue", color = "white") +
labs(title = "Histogram of Total Bike Rentals",
x = "Total Rentals (cnt)",
y = "Frequency") +
theme_minimal()
Visualisasi tersebut menggambarkan sebaran jumlah penyewaan sepeda harian pada variabel cnt. Pada grafik, sumbu horizontal (x) menunjukkan total penyewaan sepeda per hari, sedangkan sumbu vertikal (y) menunjukkan frekuensi atau jumlah hari yang berada dalam rentang penyewaan tertentu. Dari grafik tersebut terlihat bahwa mayoritas data terkumpul pada kisaran nilai menengah, yakni sekitar 4.000 hingga 5.500 penyewaan per hari. Hal ini mengindikasikan bahwa pada sebagian besar hari, tingkat penggunaan sepeda berada pada kondisi yang cukup konsisten dan relatif stabil.
Meskipun demikian, terdapat beberapa hari dengan jumlah penyewaan yang sangat tinggi, mendekati 8.000 penyewaan, serta beberapa hari lain dengan jumlah yang jauh lebih rendah, bahkan kurang dari 1.000 penyewaan. Kondisi ini menunjukkan adanya fluktuasi penggunaan sepeda antarhari. Secara keseluruhan, bentuk distribusi tampak tidak sepenuhnya simetris dan sedikit condong ke kanan, yang menandakan adanya beberapa nilai tinggi (lonjakan penggunaan) pada situasi tertentu.
Secara umum, histogram ini memberikan gambaran awal mengenai pola distribusi dan variasi jumlah penyewaan sepeda harian. Visualisasi ini membantu dalam memahami karakteristik data secara lebih intuitif sebagai dasar untuk analisis lanjutan.
Density plot adalah grafik yang menunjukkan estimasi kepadatan probabilitas dari data kontinu. Density plot menggunakan kurva untuk menggambarkan distribusi data, dan dapat memberikan gambaran yang lebih halus dibandingkan histogram. Berikut adalah contoh kode untuk membuat density plot dari variabel cnt:
ggplot(bike_data, aes(x = cnt)) +
geom_density(fill = "lightblue", alpha = 0.5) +
labs(title = "Density Plot of Total Bike Rentals",
x = "Total Rentals (cnt)",
y = "Density") +
theme_minimal()
Density plot tersebut merupakan representasi pemulusan dari histogram yang bertujuan untuk menampilkan pola distribusi jumlah penyewaan sepeda harian (cnt) secara lebih halus dan kontinu. Jika histogram memperlihatkan distribusi dalam bentuk batang berdasarkan frekuensi, maka density plot menyajikannya dalam bentuk kurva kepadatan sehingga pola penyebaran data dapat diamati dengan lebih jelas.
Berdasarkan grafik, terlihat satu puncak utama (unimodal) pada kisaran sekitar 4.500–5.000 penyewaan per hari. Puncak ini menunjukkan bahwa rentang tersebut merupakan tingkat penyewaan yang paling sering terjadi. Hal ini memperkuat temuan sebelumnya bahwa sebagian besar hari memiliki jumlah penyewaan pada level menengah, sehingga penggunaan sepeda cenderung stabil di sekitar nilai tersebut.
Selain itu, kurva tampak memanjang ke arah kanan hingga mendekati 8.000 penyewaan, yang mengindikasikan adanya beberapa hari dengan tingkat penggunaan yang jauh lebih tinggi dari rata-rata. Di sisi lain, bagian kiri kurva yang menjulur ke nilai rendah menunjukkan keberadaan hari-hari dengan jumlah penyewaan yang relatif sedikit, meskipun frekuensinya tidak sebanyak nilai di sekitar puncak. Bentuk kurva yang sedikit tidak simetris dan condong ke kanan menandakan adanya kecenderungan skewness positif dalam distribusi data.
Melalui density plot ini, pola distribusi dapat dipahami secara lebih menyeluruh, terutama dalam melihat pusat data, variasi, serta bentuk distribusinya. Visualisasi ini memberikan gambaran yang lebih halus mengenai intensitas penggunaan sepeda tanpa dipengaruhi oleh batasan interval kelas seperti pada histogram.
Boxplot adalah grafik yang menunjukkan distribusi data berdasarkan lima angka ringkasan: minimum, kuartil pertama (Q1), median, kuartil ketiga (Q3), dan maksimum. Boxplot juga dapat membantu mengidentifikasi outlier dalam data. Berikut adalah contoh kode untuk membuat boxplot dari variabel cnt:
ggplot(bike_data, aes(y = cnt)) +
geom_boxplot(fill = "lightgreen", color = "darkgreen") +
coord_flip() +
labs(title = "Boxplot of Total Bike Rentals",
y = "Total Rentals (cnt)") + coord_flip() +
theme_minimal()
Boxplot tersebut digunakan untuk merangkum distribusi jumlah penyewaan sepeda harian (cnt) berdasarkan ukuran statistik utama seperti median, kuartil, dan rentang data. Berbeda dengan histogram maupun density plot yang menampilkan bentuk distribusi secara visual, boxplot memberikan ringkasan statistik yang lebih ringkas sehingga memudahkan dalam melihat pusat data, tingkat penyebaran, serta potensi adanya nilai ekstrem.
Garis horizontal di dalam kotak menunjukkan nilai median yang berada di kisaran sekitar ±4.500–5.000 penyewaan per hari. Ini berarti separuh jumlah hari memiliki nilai penyewaan di bawah angka tersebut dan separuh lainnya berada di atasnya. Dengan demikian, median dapat dianggap sebagai gambaran tingkat penggunaan sepeda yang paling representatif dalam satu hari.
Bagian bawah dan atas kotak masing-masing menunjukkan Kuartil 1 (Q1) dan Kuartil 3 (Q3), yang kurang lebih berada pada rentang ±3.000 hingga 6.000 penyewaan. Selisih antara Q1 dan Q3 disebut sebagai interquartile range (IQR), yang mencakup 50% data tengah. Hal ini menunjukkan bahwa sebagian besar hari memiliki jumlah penyewaan dalam rentang menengah, sehingga variasi penggunaan masih tergolong normal dan tidak terlalu menyebar jauh.
Sementara itu, garis “whisker” yang memanjang dari kotak menggambarkan nilai minimum dan maksimum yang masih termasuk dalam batas wajar. Tidak tampak adanya titik pencilan (outlier) yang mencolok pada visualisasi tersebut, sehingga secara umum tidak terdapat nilai yang sangat ekstrem.
Secara keseluruhan, boxplot ini memperkuat temuan sebelumnya bahwa tingkat penggunaan bike sharing relatif stabil di kisaran menengah dengan tingkat variasi yang moderat. Visualisasi ini memberikan ringkasan distribusi data secara efisien tanpa perlu melihat detail frekuensi seperti pada histogram.
Violin plot adalah grafik yang menggabungkan boxplot dengan density plot. Violin plot menunjukkan distribusi data serta memberikan informasi tentang kepadatan data pada setiap nilai. Berikut adalah contoh kode untuk membuat violin plot dari variabel cnt:
ggplot(bike_data, aes(x = "", 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 with Boxplot of Total Bike Rentals",
x = NULL,
y = "Total Rentals (cnt)") +
coord_flip() +
theme_minimal()
Visualisasi tersebut merupakan gabungan antara violin plot dan boxplot yang digunakan untuk menampilkan distribusi jumlah penyewaan sepeda harian (cnt) secara lebih menyeluruh. Bagian violin memperlihatkan kepadatan distribusi data, di mana area yang tampak lebih lebar menunjukkan bahwa lebih banyak hari memiliki jumlah penyewaan pada rentang nilai tersebut. Dari bentuknya terlihat bahwa kepadatan tertinggi berada pada kisaran sekitar 4.000 hingga 5.500 penyewaan per hari, yang mengindikasikan bahwa rentang tersebut merupakan tingkat penggunaan yang paling umum terjadi.
Di dalam violin, boxplot memberikan ringkasan statistik utama. Garis di tengah kotak menunjukkan median sebagai nilai tengah distribusi, sedangkan batas bawah dan atas kotak merepresentasikan kuartil pertama (Q1) dan kuartil ketiga (Q3), yaitu rentang yang mencakup 50% data. Garis whisker yang memanjang ke atas dan ke bawah menunjukkan variasi nilai dari tingkat penyewaan yang relatif rendah hingga mendekati 8.000 penyewaan per hari.
Bentuk violin yang melebar di bagian tengah dan menyempit di bagian atas maupun bawah menunjukkan bahwa mayoritas data terkonsentrasi pada nilai menengah, sementara jumlah hari dengan penyewaan sangat rendah atau sangat tinggi relatif lebih sedikit. Kombinasi kedua jenis plot ini memberikan gambaran yang lebih komprehensif mengenai distribusi data, baik dari sisi kepadatan, pemusatan, maupun variasinya, dibandingkan jika hanya menggunakan satu jenis visualisasi saja.
Variasi jumlah penyewaan sepeda harian dapat dianalisis melalui histogram, density plot, dan boxplot yang menampilkan distribusi variabel cnt. Berdasarkan ketiga visualisasi tersebut, terlihat bahwa mayoritas hari memiliki jumlah penyewaan pada rentang menengah, yaitu sekitar 4.000 hingga 5.500 penyewaan per hari. Hal ini menunjukkan bahwa secara umum tingkat penggunaan sepeda berada pada kondisi yang relatif konsisten di sekitar kisaran tersebut.
Di sisi lain, terdapat beberapa hari dengan jumlah penyewaan yang sangat tinggi, mendekati 8.000 penyewaan per hari, serta sejumlah hari dengan tingkat penyewaan yang jauh lebih rendah, bahkan kurang dari 1.000. Kondisi ini mencerminkan adanya fluktuasi penggunaan dari hari ke hari. Bentuk distribusi yang sedikit condong ke kanan juga mengindikasikan adanya lonjakan penyewaan pada situasi tertentu, seperti kondisi cuaca atau musim yang lebih mendukung aktivitas bersepeda.
Secara keseluruhan, dapat disimpulkan bahwa jumlah penyewaan sepeda harian menunjukkan variasi yang cukup nyata. Meskipun sebagian besar hari berada pada tingkat penggunaan yang stabil di kisaran menengah, tetap terdapat hari-hari dengan peningkatan atau penurunan signifikan. Pemahaman terhadap pola ini penting sebagai dasar dalam merencanakan kapasitas dan strategi layanan bike sharing agar lebih adaptif terhadap perubahan permintaan.
Setelah memahami distribusi dari satu variabel secara terpisah, langkah analisis selanjutnya adalah menggunakan visualisasi bivariate. Visualisasi bivariate bertujuan untuk mengamati hubungan antara dua variabel sekaligus. Dalam konteks dataset ini, misalnya kita ingin melihat bagaimana jumlah penyewaan sepeda (cnt) berkaitan dengan faktor lain seperti musim (season), kondisi cuaca (weathersit), suhu (temp), atau jenis hari (workingday). Melalui pendekatan ini, analis tidak hanya melihat bagaimana data tersebar, tetapi juga mulai mengidentifikasi faktor-faktor yang mungkin berhubungan dengan naik turunnya jumlah penyewaan sepeda.
Dengan kata lain, visualisasi univariate membantu kita memahami karakter dasar dan variasi suatu variabel secara individu, sedangkan visualisasi bivariate memungkinkan kita mengeksplorasi keterkaitan antarvariabel. Analisis ini memberikan pemahaman yang lebih komprehensif karena kita dapat melihat pola hubungan yang berpotensi menjelaskan perubahan tingkat penggunaan sepeda. Berikut ini beberapa bentuk visualisasi bivariate yang dapat digunakan untuk menganalisis hubungan antara jumlah penyewaan sepeda (cnt) dan 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(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 tersebut menggambarkan hubungan antara suhu (temp) dan jumlah penyewaan sepeda (cnt). Setiap titik pada grafik merepresentasikan satu hari pengamatan, di mana sumbu horizontal menunjukkan nilai suhu, sedangkan sumbu vertikal menunjukkan total penyewaan sepeda pada hari tersebut.
Berdasarkan pola sebaran titik, terlihat adanya kecenderungan hubungan positif antara suhu dan jumlah penyewaan. Artinya, ketika suhu meningkat, jumlah penyewaan sepeda juga cenderung ikut meningkat. Hal ini mengindikasikan bahwa kondisi cuaca yang lebih hangat mendorong masyarakat untuk lebih banyak menggunakan sepeda, sedangkan suhu yang lebih rendah kemungkinan menurunkan minat untuk bersepeda.
Walaupun terdapat beberapa titik yang tersebar dan tidak sepenuhnya membentuk garis lurus, pola umum yang tampak tetap menunjukkan arah hubungan yang positif. Dengan demikian, dapat disimpulkan bahwa suhu merupakan salah satu faktor yang berasosiasi dengan peningkatan jumlah penyewaan sepeda dalam dataset ini.
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 tersebut digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) pada setiap kategori musim (season). Masing-masing kotak dalam grafik merepresentasikan sebaran data penyewaan untuk satu musim tertentu. Garis di dalam kotak menunjukkan nilai median, sedangkan batas bawah dan atas kotak menunjukkan kuartil pertama (Q1) dan kuartil ketiga (Q3). Garis whisker yang memanjang ke atas dan bawah menggambarkan rentang nilai minimum dan maksimum yang masih berada dalam batas wajar.
Dari visualisasi terlihat bahwa musim Summer memiliki tingkat penyewaan yang relatif paling tinggi dibandingkan musim lainnya, dengan median berada di kisaran sekitar 5.000 penyewaan per hari. Sebaliknya, musim Winter menunjukkan tingkat penyewaan yang lebih rendah, dengan median kurang dari 3.000 penyewaan per hari. Musim lainnya berada di antara kedua rentang tersebut.
Temuan ini mengindikasikan bahwa penggunaan sepeda cenderung meningkat pada musim panas dan menurun pada musim dingin. Perbedaan ini kemungkinan besar dipengaruhi oleh kondisi cuaca dan tingkat kenyamanan saat bersepeda, di mana suhu yang lebih hangat dan kondisi yang lebih mendukung pada musim panas mendorong peningkatan aktivitas bersepeda.
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 tersebut digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan kategori kondisi cuaca (weathersit). Setiap bentuk violin merepresentasikan pola sebaran penyewaan pada masing-masing kondisi cuaca. Bagian violin yang tampak lebih lebar menunjukkan bahwa lebih banyak hari memiliki jumlah penyewaan pada rentang nilai tersebut. Di dalam setiap violin, terdapat boxplot yang memberikan ringkasan statistik seperti median serta kuartil pertama (Q1) dan kuartil ketiga (Q3).
Berdasarkan visualisasi, kondisi cuaca cerah (Clear) menunjukkan distribusi penyewaan yang lebih tinggi dan lebih terkonsentrasi pada nilai menengah hingga tinggi dibandingkan kondisi cuaca lainnya. Sebaliknya, kondisi seperti hujan ringan (Light Rain) maupun hujan deras (Heavy Rain) memiliki distribusi yang cenderung lebih rendah dan lebih sempit, menandakan jumlah penyewaan yang lebih sedikit pada hari-hari tersebut.
Temuan ini mengindikasikan bahwa cuaca yang baik berperan dalam meningkatkan penggunaan sepeda, sementara kondisi cuaca yang kurang mendukung, seperti hujan, cenderung menurunkan minat masyarakat untuk menyewa sepeda. Dengan demikian, faktor cuaca menjadi salah satu aspek penting yang memengaruhi variasi jumlah penyewaan dalam dataset ini.
Salah satu faktor lingkungan lain yang diduga memengaruhi jumlah penyewaan sepeda adalah tingkat kelembapan udara. Untuk melihat hubungan antara kelembapan (hum) dan jumlah penyewaan sepeda (cnt), digunakan visualisasi scatter plot berikut.
ggplot(bike_data, aes(x = hum, y = cnt)) +
geom_point(alpha = 0.5, color = "darkcyan") +
geom_smooth(method = "lm", color = "red") +
labs(title = "Humidity vs Total Rentals",
x = "Humidity",
y = "Total Rentals") +
theme_minimal()
Scatter plot di atas menunjukkan hubungan antara tingkat kelembapan udara dan jumlah penyewaan sepeda harian. Setiap titik merepresentasikan satu hari pengamatan, di mana sumbu horizontal menunjukkan nilai kelembapan dan sumbu vertikal menunjukkan jumlah penyewaan sepeda pada hari tersebut. Dari pola yang terbentuk, terlihat adanya kecenderungan hubungan negatif antara kelembapan dan jumlah penyewaan. Garis regresi linear yang menurun memperlihatkan bahwa ketika kelembapan meningkat, jumlah penyewaan sepeda cenderung menurun.
Namun, penyebaran titik yang cukup luas menunjukkan bahwa hubungan ini tidak terlalu kuat. Pada tingkat kelembapan sedang, jumlah penyewaan masih bervariasi secara signifikan. Hal ini mengindikasikan bahwa kelembapan bukan satu-satunya faktor yang memengaruhi penggunaan sepeda, melainkan berinteraksi dengan faktor lain seperti suhu, musim, atau kondisi cuaca secara keseluruhan.
Dengan demikian, dapat disimpulkan bahwa kelembapan memiliki pengaruh negatif yang moderat terhadap jumlah penyewaan sepeda, meskipun bukan merupakan faktor dominan.
Selain faktor cuaca, jenis hari juga dapat memengaruhi pola penggunaan sepeda. Untuk membandingkan jumlah penyewaan antara hari kerja dan bukan hari kerja, digunakan boxplot berikut.
ggplot(bike_data, aes(x = workingday, y = cnt)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Working Day vs Total Rentals",
x = "Working Day",
y = "Total Rentals") +
theme_minimal()
Boxplot tersebut memperlihatkan distribusi jumlah penyewaan sepeda berdasarkan kategori hari kerja. Sumbu horizontal menunjukkan jenis hari (hari kerja atau bukan), sedangkan sumbu vertikal menunjukkan total penyewaan. Melalui boxplot ini dapat diamati median, rentang interkuartil (IQR), serta variasi data secara keseluruhan.
Median jumlah penyewaan berada di kisaran sekitar 4.500 penyewaan per hari. Rentang interkuartil yang cukup lebar menunjukkan bahwa 50% data berada pada kisaran kurang lebih 3.000 hingga 6.000 penyewaan, menandakan variasi penggunaan yang cukup signifikan. Whisker yang memanjang menunjukkan adanya hari dengan penyewaan sangat rendah maupun sangat tinggi, meskipun tidak tampak pencilan ekstrem yang mencolok.
Secara umum, penggunaan sepeda pada hari kerja cenderung stabil di kisaran menengah dengan variasi yang moderat. Hal ini mengindikasikan bahwa aktivitas komuter harian berperan dalam menjaga konsistensi jumlah penyewaan.
Untuk memahami dinamika antara dua tipe pengguna dalam sistem bike sharing, analisis dilanjutkan dengan melihat hubungan antara pengguna terdaftar (registered) dan pengguna kasual (casual) melalui scatter plot berikut.
ggplot(bike_data, aes(x = registered, y = casual)) +
geom_point(alpha = 0.5, color = "purple") +
geom_smooth(method = "lm", color = "red") +
labs(title = "Registered vs Casual Users",
x = "Registered Users",
y = "Casual Users") +
theme_minimal()
Scatter plot tersebut menunjukkan hubungan antara jumlah pengguna terdaftar dan pengguna kasual dalam satu hari. Setiap titik merepresentasikan satu hari pengamatan. Garis regresi linear yang menanjak menunjukkan adanya hubungan positif antara kedua variabel.
Dari pola sebaran terlihat bahwa ketika jumlah pengguna terdaftar meningkat, jumlah pengguna kasual juga cenderung meningkat. Hal ini menunjukkan bahwa pada hari-hari dengan tingkat penggunaan sepeda yang tinggi, peningkatan terjadi pada kedua kelompok pengguna sekaligus. Kemungkinan besar faktor eksternal seperti cuaca yang baik atau musim tertentu mendorong peningkatan penggunaan secara keseluruhan.
Namun demikian, penyebaran titik yang cukup luas menunjukkan bahwa hubungan ini tidak sepenuhnya kuat atau linear sempurna. Pada beberapa kondisi, jumlah pengguna terdaftar tinggi tetapi pengguna kasual tidak meningkat secara signifikan. Ini mencerminkan perbedaan karakteristik kedua kelompok, di mana pengguna terdaftar cenderung lebih rutin, sedangkan pengguna kasual lebih situasional.
Secara keseluruhan, visualisasi ini menunjukkan adanya hubungan positif antara pengguna terdaftar dan pengguna kasual, meskipun pola penggunaannya tetap dipengaruhi oleh faktor lain yang menyebabkan variasi antarhari.
Berdasarkan seluruh analisis visualisasi bivariate yang telah dilakukan, dapat disimpulkan bahwa jumlah penyewaan sepeda (cnt) dipengaruhi oleh kombinasi berbagai faktor lingkungan dan karakteristik penggunaan. Variabel suhu (temp) menunjukkan hubungan positif dengan jumlah penyewaan sepeda, di mana peningkatan suhu cenderung diikuti oleh peningkatan jumlah penyewaan. Hal ini mengindikasikan bahwa kondisi cuaca yang lebih hangat mendorong aktivitas bersepeda. Sejalan dengan itu, musim (season) juga berperan penting, di mana musim panas menunjukkan tingkat penyewaan yang lebih tinggi dibandingkan musim dingin, yang kemungkinan besar dipengaruhi oleh tingkat kenyamanan beraktivitas di luar ruangan.
Kondisi cuaca (weathersit) turut memperkuat temuan tersebut. Cuaca cerah berkorelasi dengan jumlah penyewaan yang lebih tinggi, sedangkan kondisi hujan atau cuaca buruk cenderung menurunkan minat masyarakat untuk menggunakan sepeda. Selain itu, kelembapan (hum) menunjukkan kecenderungan hubungan negatif dengan jumlah penyewaan, meskipun tidak terlalu kuat, yang mengindikasikan bahwa tingkat kelembapan yang tinggi dapat mengurangi kenyamanan pengguna.
Dari sisi karakteristik hari, perbedaan antara hari kerja (workingday) dan bukan hari kerja menunjukkan bahwa aktivitas komuter memberikan kontribusi terhadap kestabilan penggunaan sepeda, dengan variasi yang tetap terjadi pada hari-hari tertentu. Sementara itu, hubungan antara pengguna terdaftar (registered) dan pengguna kasual (casual) menunjukkan pola positif, yang menandakan bahwa ketika penggunaan sepeda meningkat secara umum, kedua kelompok pengguna cenderung meningkat secara bersamaan. Hal ini mengindikasikan adanya faktor eksternal yang memengaruhi peningkatan penggunaan secara keseluruhan.
Secara keseluruhan, analisis ini menunjukkan bahwa pola penggunaan sepeda dalam dataset tidak ditentukan oleh satu faktor tunggal, melainkan oleh interaksi berbagai faktor lingkungan (suhu, musim, cuaca, kelembapan) serta karakteristik pengguna dan jenis hari. Informasi ini sangat penting dalam perencanaan layanan bike sharing yang lebih efektif, adaptif terhadap kondisi lingkungan, serta mampu mengantisipasi fluktuasi permintaan berdasarkan pola musiman dan cuaca.