knitr::opts_chunk$set(echo = FALSE)
Data kontinu adalah data yang nilainya bisa sangat detail dan berada dalam rentang tertentu—contohnya suhu udara atau tinggi badan. Agar kita bisa paham distribusi dan melihat apakah ada data yang “aneh” (outlier), kita butuh visualisasi yang tepat. Di sini, saya akan memakai dataset Bike Sharing untuk mempraktekkan cara membaca pola dari data kontinu tersebut.
Data yang dianalisis merupakan catatan sistem berbagi sepeda di Washington, D.C., yang bersumber dari UCI Machine Learning Repository. Dataset ini merangkum aktivitas penyewaan harian selama periode dua tahun. Setelah mengidentifikasi konteks pengumpulan data—termasuk variabel musim, kondisi cuaca, dan kategori hari—analisis ini akan difokuskan pada pemetaan perilaku serta pola dari variabel-variabel numerik yang tersedia.
Tahap awal pengolahan data melibatkan penggunaan fungsi read.csv()/read.excel() untuk memasukkan file CSV/xlsx ke dalam R. Sangat penting untuk menyesuaikan file path sesuai dengan direktori penyimpanan lokal Anda.
bike_sharing_dataset_by_day <- read_excel("bike_sharing_dataset_by_day.xlsx")
View(bike_sharing_dataset_by_day)
Dataset ini terdiri dari 16 variabel berbeda yang dikelompokkan menjadi data numerik dan kategorik. Komponen numerik dalam data ini meliputi indikator cuaca (suhu, kelembapan, kecepatan angin) serta metrik penggunaan sepeda, yang mencatat jumlah transaksi dari pengguna kasual, pengguna terdaftar, hingga akumulasi total penyewaan (cnt).
Dataset ini memuat beberapa variabel numerik utama yang merepresentasikan kondisi lingkungan dan metrik penggunaan sepeda: - temp & atemp: Suhu udara rata-rata dan suhu yang dirasakan oleh tubuh dalam skala Celsius. - hum: Tingkat kelembapan udara yang memengaruhi kenyamanan saat bersepeda. - windspeed: Kecepatan angin di area penyewaan. - casual: Jumlah pengguna tidak terdaftar yang menyewa sepeda. - registered: Jumlah pengguna terdaftar yang menyewa sepeda. - cnt: Akumulasi total seluruh penyewaan sepeda (gabungan casual dan registered).
Selain itu, terdapat variabel kategorik untuk memberikan konteks pada data: - season: Menunjukkan musim saat pengambilan data (1-4). - weathersit: Kondisi cuaca (Cerah, Mendung, atau Hujan/Salju). - workingday: Indikator apakah hari tersebut merupakan hari kerja (1) atau akhir pekan/libur (0).
Visualisasi bivariat membantu kita memahami bagaimana variabel cnt berinteraksi dengan faktor lain seperti kondisi cuaca atau jenis hari (workingday). Teknik ini tidak hanya memperlihatkan sebaran data, tetapi juga mengungkap asosiasi antar variabel yang memengaruhi tren penyewaan sepeda secara keseluruhan.
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:
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 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:
## Warning: Orientation is not uniquely specified when both the x and y aesthetics are
## continuous. Picking default orientation 'x'.
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
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 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:
## Warning: Orientation is not uniquely specified when both the x and y aesthetics are
## continuous. Picking default orientation 'x'.
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
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.
Digunakan untuk menyajikan perbandingan nilai rata-rata variabel numerik berdasarkan kategori waktu atau grup tertentu. Grafik ini memudahkan audiens dalam mengidentifikasi perbedaan performa atau nilai signifikan secara visual. misal melihat hubungan bulan vs jumlah penyewaan:
Bar chart ini menunjukkan siklus musiman yang sangat jelas. Penyewaan mulai meningkat signifikan pada bulan ke-5 (Mei) dan mencapai puncaknya di sekitar bulan ke-6 hingga ke-9 (Juni-September). Penurunan drastis terlihat pada bulan-bulan akhir tahun dan awal tahun (Desember-Februari), yang menunjukkan bahwa faktor kalender/bulan sangat menentukan volume penggunaan sepeda di kota tersebut.
Hexbin plot merupakan alternatif dari scatter plot yang digunakan ketika dataset memiliki volume yang besar (high density). Dengan membagi area plot ke dalam sel heksagonal, grafik ini mampu memvisualisasikan konsentrasi data tanpa terkendala masalah penumpukan titik (overplotting). Misal ketikan kita ingin melihat hubungan atemp vs cnt
Berbeda dengan scatter plot biasa, Hexbin Plot ini menunjukkan konsentrasi data melalui intensitas warna. Terlihat bahwa kepadatan penyewaan tertinggi terkonsentrasi pada nilai atemp di kisaran 0.6 hingga 0.8. Ini membuktikan bahwa ada “zona nyaman” suhu di mana masyarakat paling aktif menyewa sepeda, dan pola ini lebih akurat dibandingkan hanya melihat suhu udara biasa (temp).
Jitter Plot adalah variasi dari Scatter Plot yang digunakan untuk variabel kategorik dengan cara menambahkan sedikit “gangguan” atau variasi acak pada posisi titik-titik data. Tujuannya adalah agar titik-titik yang memiliki nilai yang sama tidak saling bertumpuk (menumpuk di satu garis lurus), sehingga kepadatan dan sebaran data di setiap kategori dapat terlihat dengan lebih jelas.
Visualisasi ini menunjukkan sebaran individu data penyewaan sepeda berdasarkan status hari libur, di mana penggunaan fungsi jitter memungkinkan kita melihat konsentrasi titik-titik data secara lebih transparan. Dari grafik terlihat bahwa jumlah hari biasa (bukan hari libur) jauh lebih banyak dibandingkan hari libur, dengan sebaran penyewaan yang sangat luas dari angka rendah hingga mencapai puncak tertinggi. Meskipun hari libur memiliki jumlah observasi yang lebih sedikit, sebaran titiknya cenderung terkumpul di rentang nilai tertentu, menunjukkan bahwa pada hari libur pola penyewaan mungkin lebih terprediksi dibandingkan hari kerja yang memiliki fluktuasi sangat dinamis.
Kesimpulan Akhir Analisis Bivariat (Versi Terbaru) Secara keseluruhan, aktivitas penyewaan sepeda dipengaruhi oleh tiga dimensi utama: kondisi lingkungan, waktu musiman, dan kategori hari. Berikut adalah poin-poin kuncinya:
Pengaruh Kondisi Alam & Kenyamanan: Penyewaan sepeda mencapai performa puncaknya pada musim panas (Summer) dan kondisi cuaca cerah (Clear). Melalui Hexbin Plot, teridentifikasi bahwa masyarakat paling aktif menyewa sepeda saat suhu yang dirasakan (atemp) berada di “zona nyaman” (0.6–0.8). Sebaliknya, cuaca buruk seperti hujan dan musim dingin menurunkan volume penyewaan secara signifikan.
Siklus Bulanan yang Konsisten: Analisis Bar Chart menunjukkan pola musiman yang sangat jelas, di mana permintaan mulai tumbuh pada bulan Mei dan mencapai puncaknya pada Juni hingga September, mencerminkan bahwa bulan/kalender adalah prediktor kuat bagi beban operasional.
Karakteristik Hari Biasa vs Hari Libur: Melalui Jitter Plot, terlihat bahwa meskipun hari libur memiliki jumlah data yang lebih sedikit, kepadatan penyewaan tetap terjadi pada rentang tertentu. Namun, volume penyewaan terbesar dan paling dinamis justru terjadi pada hari-hari biasa (bukan libur), yang menunjukkan bahwa sepeda juga digunakan sebagai alat transportasi rutin untuk aktivitas harian, bukan sekadar hobi di hari libur.
Distribusi dan Variabilitas Data: Penggunaan Violin Plot mempertegas bahwa kondisi cuaca baik tidak hanya meningkatkan rata-rata penyewaan, tetapi juga membuat distribusi data lebih padat dan stabil, berbeda dengan saat cuaca buruk di mana penyewaan menjadi sangat rendah dan tidak menentu.