Visualisasi Data Kontinu (Univariate & Bivariate)
Melanjutkan pembelajaran sebelumnya mengenai visualisasi data kategorik dan diskrit yang pada diakses disini, pada pembelajaran kali ini kita akan membahas tentang visualisasi data kontinu (univariate & bivariate). Data kontinu adalah data yang dapat mengambil nilai apa pun dalam rentang tertentu, seperti tinggi badan, berat badan, atau suhu. Visualisasi data kontinu membantu kita memahami distribusi data, mengidentifikasi pola, dan mendeteksi outlier. Sebagai contoh, kita akan menggunakan dataset Bike Sharing yang berisi informasi tentang penggunaan sepeda di sebuah kota untuk memvisualisasikan data kontinu.
Studi Kasus
Dataset ini berasal dari sistem bike sharing di Washington, D.C., yang diperoleh dari UCI Machine Learning Repository yang dapat di akses melalui link ini. Dataset ini mencatat aktivitas penyewaan sepeda setiap hari selama dua tahun. Setelah memahami dalam kondisi apa data dikumpulkan (musim, cuaca, dan jenis hari), langkah berikutnya adalah melihat bagaimana perilaku nilai numerik dalam dataset.
Pada tahap ini analis mulai bertanya:
Seberapa besar variasi jumlah penyewaan sepeda dari hari ke hari? Apakah nilainya stabil, menyebar, atau memiliki lonjakan tertentu?
Untuk menjawab pertanyaan tersebut digunakan visualisasi univariate kontinu, yaitu visualisasi yang berfokus pada satu variabel numerik dalam satu waktu. Visualisasi ini membantu kita memahami distribusi data, mengidentifikasi pola, dan mendeteksi outlier. Dengan menggunakan visualisasi univariate kontinu, kita dapat melihat bagaimana nilai numerik dalam dataset bervariasi dari hari ke hari, apakah nilainya stabil, menyebar, atau memiliki lonjakan tertentu. Informasi ini dapat memberikan wawasan yang lebih dalam tentang pola penggunaan sepeda dalam dataset dan membantu dalam perencanaan layanan sepeda yang lebih efektif.
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:
## [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:
| 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) |
Sedangkan variabel-variabel kategorik sudah dijelaskan pembelajaran
sebelumnya, 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 (Univariate)
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
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 data di atas menunjukkan distribusi jumlah penyewaan sepeda harian (variabel cnt). Pada grafik tersebut, sumbu x menunjukkan jumlah penyewaan sepeda, sedangkan sumbu y merepresentasikan frekuensi atau banyaknya hari yang memiliki jumlah penyewaan pada kisaran tertentu. Melalui visualisasi ini, terlihat bahwa sebagian besar data terkonsentrasi pada nilai menengah, yaitu sekitar 4.000 hingga 5.500 penyewaan per hari, yang menunjukkan bahwa pada mayoritas hari tingkat penggunaan sepeda berada pada level yang relatif stabil.
Namun demikian, terdapat beberapa hari dengan jumlah penyewaan yang sangat tinggi, mencapai sekitar 8.000 penyewaan per hari, serta beberapa hari dengan jumlah penyewaan yang jauh lebih rendah, yaitu di bawah 1.000 penyewaan. Hal ini menunjukkan adanya variasi penggunaan sepeda dari hari ke hari. Secara visual, distribusi data tampak tidak sepenuhnya simetris dan sedikit memanjang ke sisi kanan, yang mengindikasikan adanya lonjakan penggunaan pada kondisi tertentu.
Dengan demikian, histogram ini memberikan gambaran umum mengenai sebaran dan pola penggunaan sepeda harian dalam dataset, serta membantu memahami karakteristik data secara intuitif sebelum dilakukan analisis lebih lanjut.
Density Plot
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 di atas merupakan bentuk pemulusan (smoothed version) dari histogram yang digunakan untuk melihat pola distribusi jumlah penyewaan sepeda harian (cnt) secara lebih halus. Berbeda dengan histogram yang menampilkan batang frekuensi, density plot menunjukkan kurva kepadatan sehingga pola distribusi lebih mudah diamati.
Dari grafik terlihat bahwa kurva memiliki satu puncak utama pada kisaran sekitar 4.500–5.000 penyewaan per hari, yang menunjukkan bahwa nilai tersebut merupakan tingkat penggunaan yang paling sering terjadi. Hal ini menegaskan bahwa mayoritas hari memiliki jumlah penyewaan pada level menengah, sehingga dapat dikatakan penggunaan sepeda cenderung stabil di sekitar nilai tersebut.
Selain puncak utama, terlihat adanya bagian kurva yang melebar ke sisi kanan hingga mendekati 8.000 penyewaan, yang menunjukkan adanya hari-hari dengan jumlah penyewaan yang lebih tinggi. Sementara itu, sisi kiri kurva yang memanjang ke nilai rendah menunjukkan bahwa terdapat juga hari dengan penggunaan yang relatif sedikit, meskipun jumlahnya tidak dominan. Bentuk kurva yang tidak sepenuhnya simetris mengindikasikan bahwa distribusi data sedikit condong ke kanan.
Melalui density plot ini, kita dapat memahami pola sebaran data secara lebih halus dibandingkan histogram, terutama dalam melihat kecenderungan pusat data, variasi nilai, dan bentuk distribusi secara keseluruhan. Visualisasi ini membantu memberikan gambaran umum mengenai bagaimana intensitas penggunaan sepeda tersebar dalam dataset tanpa terpengaruh oleh pembagian kelas seperti pada histogram.
Boxplot
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") +
labs(title = "Boxplot of Total Bike Rentals", y = "Total Rentals (cnt)") +
coord_flip() +
theme_minimal()Boxplot di atas digunakan untuk merangkum distribusi jumlah penyewaan sepeda harian (cnt) melalui ukuran statistik utama, yaitu median, kuartil, serta rentang data. Berbeda dengan histogram dan density plot yang menampilkan bentuk distribusi, boxplot membantu melihat pusat data, penyebaran, dan kemungkinan nilai ekstrem secara ringkas.
Garis di dalam kotak menunjukkan median (nilai tengah) yang berada di sekitar ±4.500–5.000 penyewaan per hari. Hal ini menandakan bahwa setengah dari jumlah hari memiliki penyewaan di bawah nilai tersebut dan setengah lainnya di atasnya, sehingga median dapat dianggap sebagai tingkat penggunaan tipikal harian.
Batas bawah dan atas kotak merepresentasikan Kuartil 1 (Q1) dan Kuartil 3 (Q3), yang kira-kira berada pada kisaran ±3.000 hingga 6.000 penyewaan. Rentang ini disebut interquartile range (IQR) dan menunjukkan bahwa 50% data berada pada interval tersebut. Artinya, sebagian besar hari memiliki jumlah penyewaan dalam kisaran menengah, sehingga variasi penggunaan masih tergolong wajar.
Garis “whisker” yang memanjang ke kiri dan kanan menunjukkan rentang data minimum dan maksimum yang masih berada dalam batas wajar. Dari boxplot ini tidak terlihat titik pencilan yang menonjol, sehingga dapat dikatakan tidak ada nilai yang sangat ekstrem secara visual.
Secara keseluruhan, boxplot ini menegaskan bahwa penggunaan bike sharing memiliki pusat data yang cukup stabil di kisaran menengah dengan variasi yang moderat, serta membantu memahami sebaran data secara ringkas tanpa melihat detail frekuensi seperti pada histogram.
Violin Plot
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 di atas merupakan kombinasi antara violin plot dan boxplot untuk menggambarkan distribusi jumlah penyewaan sepeda harian (cnt). Violin plot menunjukkan bentuk kepadatan data, di mana bagian yang lebih lebar menandakan bahwa lebih banyak hari memiliki jumlah penyewaan pada kisaran tersebut. Terlihat bahwa distribusi data paling padat berada pada kisaran sekitar 4.000 hingga 5.500 penyewaan per hari, yang menunjukkan bahwa nilai tersebut merupakan tingkat penggunaan yang paling sering terjadi.
Sementara itu, boxplot di dalam violin memberikan informasi statistik ringkas. Garis di tengah kotak menunjukkan median jumlah penyewaan, sedangkan batas kotak menunjukkan kuartil pertama (Q1) dan kuartil ketiga (Q3), yang menggambarkan rentang di mana 50% data berada. Whisker yang memanjang ke kedua sisi menunjukkan bahwa terdapat variasi penggunaan dari nilai yang relatif rendah hingga mendekati 8.000 penyewaan per hari.
Bentuk violin yang melebar di bagian tengah dan meruncing di bagian atas serta bawah menunjukkan bahwa sebagian besar data terkonsentrasi pada nilai menengah, dengan lebih sedikit hari yang memiliki jumlah penyewaan sangat rendah atau sangat tinggi. Kombinasi visual ini membantu memahami pola distribusi, tingkat pemusatan data, serta variasi penggunaan sepeda secara lebih komprehensif dibandingkan menggunakan satu jenis plot saja.
Kesimpulan
Variasi jumlah penyewaan sepeda dapat dilihat melalui histogram, density plot, serta boxplot yang menampilkan sebaran data cnt. Dari visualisasi tersebut terlihat bahwa
- Sebagian besar hari memiliki jumlah penyewaan yang berada pada kisaran menengah, yaitu sekitar 4.000 hingga 5.500 penyewaan per hari, yang menunjukkan bahwa tingkat penggunaan sepeda cenderung stabil di sekitar nilai tersebut.
- Terdapat beberapa hari dengan jumlah penyewaan yang sangat tinggi, mencapai sekitar 8.000 penyewaan per hari, serta beberapa hari dengan jumlah penyewaan yang jauh lebih rendah, yaitu di bawah 1.000 penyewaan. Hal ini menunjukkan adanya variasi penggunaan sepeda dari hari ke hari, dengan pola distribusi yang sedikit memanjang ke sisi kanan, mengindikasikan adanya lonjakan penggunaan pada kondisi tertentu.
Dengan demikian, dapat disimpulkan bahwa jumlah penyewaan sepeda harian memiliki variasi yang cukup signifikan, dengan sebagian besar hari memiliki tingkat penggunaan yang relatif stabil di kisaran menengah, namun juga terdapat hari-hari dengan jumlah penyewaan yang jauh lebih tinggi atau lebih rendah. Informasi ini penting untuk memahami pola penggunaan sepeda dan dapat digunakan untuk perencanaan layanan yang lebih efektif di masa depan.
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
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.
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.
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.
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.