Visualisasikan prediksi penyewaan sepeda
Pada latihan sebelumnya, Anda memvisualisasikan prediksi model sepeda menggunakan diagram sebar standar "hasil vs. prediksi". Karena data penyewaan sepeda merupakan deret waktu, Anda mungkin tertarik melihat kinerja model sebagai fungsi waktu. Dalam latihan ini, Anda akan membandingkan prediksi dan jumlah penyewaan aktual per jam, untuk 14 hari pertama di bulan Agustus.
Untuk membuat plot, Anda akan menggunakan fungsi tidyr::pivot_longer() (docs) untuk menggabungkan nilai prediksi dan aktual dari bikesAugust ke dalam satu kolom. pivot_longer() menerima argumen:
- Kerangka data "wide" yang akan diputar (implisit dalam sebuah pipe)
- Nama kolom yang akan dikumpulkan menjadi satu kolom (kata kunci "cols").
- Nama kolom kunci yang akan dibuat - berisi nama kolom yang dikumpulkan (kata kunci "names_to").
- Nama kolom nilai yang akan dibuat - berisi nilai dari kolom yang dikumpulkan (kata kunci "values_to").
Anda akan menggunakan kerangka data yang telah diputar untuk membandingkan jumlah penyewaan aktual dan prediksi sebagai fungsi waktu. Indeks waktu, instant, menghitung jumlah pengamatan sejak awal pengumpulan data. Kode contoh mengonversi nilai instant ke satuan hari, dimulai dari 0.
Kerangka data bikesAugust, dengan prediksi (bikesAugust$pred), telah dimuat sebelumnya.
Latihan ini adalah bagian dari kursus
Supervised Learning di R: Regresi
Petunjuk latihan
- Lengkapi bagian yang kosong untuk memplot prediksi dan jumlah aktual per jam untuk 14 hari pertama bulan Agustus.
- konversikan
instantke satuan hari, bukan jam - lakukan
pivot_longer()pada kolomcntdanpredmenjadi sebuah kolom bernamavalue, dengan kunci bernamavaluetype. filter()untuk dua minggu pertama bulan Agustus- Plot
valuesebagai fungsi dariinstant(hari).
- konversikan
Apakah model menangkap pola waktu umum dalam penyewaan sepeda?
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Plot predictions and cnt by date/time
bikesAugust %>%
# set start to 0, convert unit to days
mutate(instant = (instant - min(instant))/24) %>%
# collect cnt and pred into a value column
pivot_longer(cols = c('cnt', 'pred'), names_to = '___', values_to = '___') %>%
filter(instant < 14) %>% # restric to first 14 days
# plot value by instant
ggplot(aes(x = ___, y = ___, color = valuetype, linetype = valuetype)) +
geom_point() +
geom_line() +
scale_x_continuous("Day", breaks = 0:14, labels = 0:14) +
scale_color_brewer(palette = "Dark2") +
ggtitle("Predicted August bike rentals, Quasipoisson model")