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.
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("C:/Users/User/Downloads/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.
| 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))
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 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 casual dn
registered:
ggplot(bike_data, aes(x = casual, y = registered)) +
geom_point(color = "darkred", alpha = 0.5) +
labs(title = "Scatter Plot of Registered vs Casual Rentals",
x = "Casual Rentals",
y = "Registered Rentals") +
theme_minimal()
Scatter plot tersebut memperlihatkan hubungan antara jumlah penyewaan sepeda oleh pengguna casual dan registered. Setiap titik merepresentasikan satu hari pengamatan, di mana sumbu horizontal menunjukkan jumlah penyewaan casual dan sumbu vertikal menunjukkan jumlah penyewaan registered. Berdasarkan grafik, tampak adanya kecenderungan hubungan positif antara keduanya. Ketika jumlah penyewaan casual meningkat, jumlah penyewaan registered juga cenderung ikut meningkat. Ini mengindikasikan bahwa pada hari-hari dengan aktivitas penyewaan yang tinggi, baik pengguna casual maupun registered sama-sama mengalami kenaikan jumlah sewa. Walaupun terdapat beberapa titik yang menyebar dan tidak sepenuhnya membentuk garis lurus, pola keseluruhan tetap menunjukkan adanya hubungan positif antara kedua variabel tersebut.
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 holiday dan
cnt:
ggplot(bike_data, aes(x = holiday, y = cnt)) +
geom_boxplot(fill = "pink2", color = "black") +
labs(title = "Boxplot of Total Bike Rentals by Holiday",
x = "Holiday",
y = "Total Rentals (cnt)") +
theme_minimal()
Boxplot bivariate di atas digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan kategori hari libur (holiday). Setiap kotak pada grafik mewakili distribusi total penyewaan sepeda untuk dua kategori, yaitu hari libur (Yes) dan bukan hari libur (No). 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 terlihat bahwa median jumlah penyewaan sepeda pada hari bukan libur (No) lebih tinggi dibandingkan pada hari libur (Yes). Selain itu, sebaran data pada kedua kategori cukup lebar, namun hari bukan libur cenderung memiliki nilai penyewaan yang lebih besar. Hal ini menunjukkan bahwa penggunaan sepeda lebih tinggi pada hari kerja dibandingkan hari libur, yang kemungkinan dipengaruhi oleh aktivitas rutin seperti bekerja atau sekolah.
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 = factor(weekday), y = cnt)) +
geom_violin(fill = "steelblue", alpha = 0.6) +
geom_boxplot(width = 0.1, fill = "white", outlier.shape = NA) +
labs(title = "Violin Plot of Total Rentals by Weekday",
x = "Weekday (0 = Sunday, 6 = Saturday)",
y = "Total Rentals (cnt)") +
theme_minimal()
Violin plot bivariate di atas digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan hari dalam seminggu (weekday), di mana 0 menunjukkan Minggu dan 6 menunjukkan Sabtu. Setiap bentuk violin merepresentasikan distribusi total penyewaan sepeda pada masing-masing hari, dengan bagian yang lebih lebar menunjukkan bahwa lebih banyak data terkonsentrasi pada kisaran jumlah penyewaan tersebut. Boxplot di dalam violin memberikan ringkasan statistik seperti median dan kuartil.
Dari visualisasi terlihat bahwa jumlah penyewaan sepeda cenderung lebih tinggi pada hari kerja dibandingkan akhir pekan. Beberapa hari kerja menunjukkan median yang relatif lebih tinggi dan distribusi yang cukup padat pada kisaran penyewaan menengah hingga tinggi. Sementara itu, pada hari Minggu dan Sabtu, meskipun tetap terdapat penyewaan yang tinggi, sebarannya terlihat lebih bervariasi. Hal ini menunjukkan bahwa aktivitas penyewaan sepeda dipengaruhi oleh pola hari dalam seminggu, di mana hari kerja cenderung memiliki tingkat penggunaan yang lebih konsisten dan tinggi dibandingkan akhir pekan.
Visualisasi bivariate antara jumlah penyewaan sepeda (cnt) dengan variabel lain seperti suhu (temp), musim (season), dan kondisi cuaca (weathersit) menunjukkan bahwa
Secara keseluruhan, hasil visualisasi menunjukkan bahwa jumlah penyewaan sepeda dipengaruhi oleh berbagai faktor, baik faktor cuaca, waktu, maupun karakteristik pengguna.