MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Lengkapi bagian yang kosong untuk memplot prediksi dan jumlah aktual per jam untuk 14 hari pertama bulan Agustus.
    • konversikan instant ke satuan hari, bukan jam
    • lakukan pivot_longer() pada kolom cnt dan pred menjadi sebuah kolom bernama value, dengan kunci bernama valuetype.
    • filter() untuk dua minggu pertama bulan Agustus
    • Plot value sebagai fungsi dari instant (hari).

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")
Edit dan Jalankan Kode