Visualisasi Data Time Series

Data time series adalah data yang dicatat secara berurutan berdasarkan waktu. Contoh data time series antara lain jumlah penjualan bulanan, temperatur harian, atau jumlah pengguna aplikasi setiap hari.

Berbeda dengan data biasa, data time series memungkinkan kita melihat bagaimana suatu fenomena berubah dari waktu ke waktu. Oleh karena itu, visualisasi memegang peranan penting dalam memahami pola yang terkandung di dalam data tersebut.

Melalui visualisasi time series, kita dapat mengidentifikasi beberapa pola penting, antara lain:

  • Trend -> kecenderungan peningkatan atau penurunan data dalam jangka panjang
  • Seasonality -> pola yang berulang secara periodik
  • Anomaly -> nilai yang menyimpang dari pola umum

Dalam praktikum ini kita akan mengeksplorasi Bike Sharing Dataset untuk memahami bagaimana pola penggunaan sepeda berubah sepanjang waktu.

Studi Kasus

Dataset yang digunakan berasal dari sistem bike sharing di Washington, D.C., yang tersedia pada UCI Machine Learning Repository link ini. Dataset ini mencatat aktivitas penyewaan sepeda setiap hari selama dua tahun, yaitu 2011 hingga 2012.

Selain jumlah penyewaan sepeda, dataset ini juga mencatat berbagai informasi lain seperti musim, temperatur, kelembaban, dan kecepatan angin. Informasi tersebut memberikan gambaran mengenai kondisi lingkungan saat data dikumpulkan.

Dalam analisis ini, variabel utama yang akan menjadi fokus adalah:

cnt -> jumlah sepeda yang disewa pada suatu hari.

Melalui visualisasi data time series, kita ingin memahami bagaimana jumlah penyewaan sepeda berubah sepanjang waktu. Beberapa pertanyaan awal yang dapat diajukan antara lain:

  • Apakah jumlah penyewaan sepeda meningkat dari waktu ke waktu?
  • Apakah terdapat pola tertentu pada musim tertentu?
  • Apakah terdapat lonjakan atau penurunan yang tidak biasa?

Memuat Data dan Menjelajahi Struktur Data

Dataset dimuat ke dalam R menggunakan fungsi read.csv(). Setelah data dimuat, langkah pertama yang perlu dilakukan adalah melihat struktur data untuk memahami variabel yang tersedia.

Output berikut menampilkan nama-nama variabel yang terdapat dalam dataset.

# Load data
bike_data <- read.csv("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 output tersebut, dataset ini memiliki 16 variabel yang terdiri dari variabel numerik maupun kategorik. Beberapa variabel penting yang akan digunakan dalam analisis ditunjukkan pada tabel berikut.

No. Variabel Keterangan
1. dteday tanggal
2. season musim
3. temp temperatur
4. hum kelembaban
5. windspeed kecepatan angin
6. cnt jumlah penyewaan sepeda

Variabel kategorik seperti season pada awalnya disimpan dalam bentuk kode numerik. Agar lebih mudah dipahami saat visualisasi, variabel ini perlu direcode menjadi label yang lebih deskriptif.

Selain itu, variabel dteday yang menyimpan informasi tanggal perlu diubah ke dalam format Date agar dapat digunakan sebagai sumbu waktu dalam visualisasi.

# Ubah kode musim menjadi nama musim
bike_data$season <- factor(bike_data$season,
                     levels = c(1, 2, 3, 4),
                     labels = c("Spring", "Summer", "Fall", "Winter"))

bike_data$dteday <- as.Date(bike_data$dteday)

Struktur data setelah recode akan tetap sama, tetapi nilai-nilai dalam variabel season sekarang memiliki label yang lebih deskriptif dan variabel tanggal sudah diubah ke dalam format Date. Ini akan memudahkan kita dalam membuat visualisasi yang lebih informatif dan mudah dipahami.

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

Setelah proses ini dilakukan, dataset siap digunakan untuk eksplorasi dan visualisasi.

Visualisasi Time Series Dasar

Langkah pertama dalam eksplorasi data time series adalah melihat perubahan nilai dari waktu ke waktu.

plot(bike_data$dteday, bike_data$cnt,
     type="l",
     col="blue",
     xlab="Tanggal",
     ylab="Jumlah Penyewaan Sepeda",
     main="Jumlah Penyewaan Sepeda dari Waktu ke Waktu")

Grafik di atas menampilkan jumlah penyewaan sepeda setiap hari selama dua tahun. Dari grafik tersebut dapat diamati bahwa jumlah penyewaan sepeda tidak bersifat konstan, tetapi mengalami fluktuasi dari waktu ke waktu.

Beberapa pola yang mulai terlihat antara lain:

  • jumlah penyewaan sepeda berubah cukup signifikan antar hari
  • terdapat periode dengan jumlah penyewaan yang relatif tinggi
  • pola peningkatan dan penurunan tampak berulang setiap tahun

Pola yang berulang ini memberikan indikasi adanya seasonality, yaitu pengaruh musim terhadap penggunaan sepeda.

Visualisasi Menggunakan ggplot2

Untuk mendapatkan tampilan visual yang lebih fleksibel dan informatif, kita dapat menggunakan paket ggplot2.

ggplot(bike_data, aes(x=dteday, y=cnt)) +
  geom_line(color="darkblue") +
  labs(title="Time Series Penyewaan Sepeda",
       x="Tanggal",
       y="Jumlah Penyewaan")

Grafik ini menampilkan pola yang sama dengan tampilan visual yang lebih jelas. Melalui grafik ini kita dapat melihat bahwa penggunaan sepeda cenderung meningkat pada periode tertentu dan menurun pada periode lainnya.

Namun, fluktuasi harian yang cukup besar kadang membuat tren jangka panjang sulit terlihat dengan jelas. Oleh karena itu, kita dapat menggunakan teknik smoothing.

Moving Average (Smoothing)

Moving average digunakan untuk menghaluskan fluktuasi data sehingga tren jangka panjang lebih mudah diamati.

bike_data$MA7 <- rollmean(bike_data$cnt, 7, fill=NA)

ggplot(bike_data, aes(x=dteday)) +
  geom_line(aes(y=cnt), color="grey") +
  geom_line(aes(y=MA7), color="red") +
  labs(title="Moving Average Penyewaan Sepeda",
       x="Tanggal",
       y="Jumlah Penyewaan")

Pada grafik di atas:

  • garis abu-abu menunjukkan data asli
  • garis merah menunjukkan nilai moving average selama 7 hari

Dengan menggunakan moving average, fluktuasi harian menjadi lebih halus sehingga arah perubahan data dalam jangka panjang dapat terlihat dengan lebih jelas.

Visualisasi Seasonality Berdasarkan Bulan

Selain melihat tren dari waktu ke waktu, kita juga dapat melihat apakah terdapat pola musiman dalam penggunaan sepeda.

bike_data$month <- format(bike_data$dteday, "%m")

ggplot(bike_data, aes(x=month, y=cnt)) +
  geom_boxplot(fill="lightblue") +
  labs(title="Distribusi Penyewaan Sepeda per Bulan",
       x="Bulan",
       y="Jumlah Penyewaan")

Grafik boxplot di atas menunjukkan distribusi jumlah penyewaan sepeda pada setiap bulan. Dari grafik tersebut dapat terlihat bahwa jumlah penyewaan sepeda cenderung lebih tinggi pada bulan-bulan tertentu, dan lebih rendah pada bulan lainnya.

Hal ini menunjukkan adanya pola musiman yang kemungkinan berkaitan dengan kondisi cuaca.

Visualisasi Berdasarkan Musim

Dataset ini juga menyediakan variabel season, yang memungkinkan kita melihat perbedaan penggunaan sepeda antar musim.

ggplot(bike_data, aes(x=season, y=cnt)) +
  geom_boxplot(fill="orange") +
  labs(title="Distribusi Penyewaan Sepeda Berdasarkan Musim",
       x="Musim",
       y="Jumlah Penyewaan")

Grafik tersebut menunjukkan bahwa jumlah penyewaan sepeda berbeda pada setiap musim. Secara umum terlihat bahwa penggunaan sepeda cenderung lebih tinggi pada musim panas dan lebih rendah pada musim dingin. Hal ini menunjukkan bahwa kondisi cuaca memiliki pengaruh terhadap perilaku pengguna sepeda.

Visualisasi Heatmap (Pola Waktu yang Lebih Jelas)

Untuk melihat pola waktu secara lebih jelas, kita dapat menggunakan heatmap.

bike_data$year <- format(bike_data$dteday, "%Y")
bike_data$month <- format(bike_data$dteday, "%m")

ggplot(bike_data, aes(x=month, y=year, fill=cnt)) +
  geom_tile() +
  scale_fill_gradient(low="lightyellow", high="darkred") +
  labs(title="Heatmap Penyewaan Sepeda",
       x="Bulan",
       y="Tahun")

Heatmap ini menampilkan intensitas penyewaan sepeda berdasarkan bulan dan tahun. Warna yang lebih gelap menunjukkan jumlah penyewaan yang lebih tinggi. Melalui visualisasi ini, pola musiman terlihat dengan lebih jelas. Beberapa bulan menunjukkan intensitas penggunaan sepeda yang lebih tinggi dibandingkan bulan lainnya.

Kesimpulan

Melalui eksplorasi visual terhadap Bike Sharing Dataset, kita dapat melihat bahwa penggunaan sepeda berubah secara signifikan sepanjang waktu. Grafik time series menunjukkan adanya fluktuasi harian, tren perubahan dalam jangka panjang, serta pola musiman yang berkaitan dengan kondisi lingkungan.

Visualisasi data time series memberikan pemahaman awal yang sangat penting sebelum dilakukan analisis yang lebih mendalam. Dengan memahami pola yang terdapat dalam data, analis dapat memperoleh wawasan mengenai faktor-faktor yang mempengaruhi penggunaan layanan bike sharing.