Bắt đầu ngayBắt đầu miễn phí

Trực quan hóa dự đoán thuê xe đạp

Trong bài trước, bạn đã trực quan hóa dự đoán của mô hình xe đạp bằng biểu đồ scatter tiêu chuẩn "kết quả so với dự đoán". Vì dữ liệu thuê xe đạp là chuỗi thời gian, bạn có thể quan tâm đến hiệu suất của mô hình theo thời gian. Trong bài này, bạn sẽ so sánh dự đoán và số lượt thuê thực tế theo từng giờ, cho 14 ngày đầu tháng Tám.

Để tạo biểu đồ, bạn sẽ dùng hàm tidyr::pivot_longer() (docs) để gộp các giá trị dự đoán và thực tế từ bikesAugust vào một cột duy nhất. pivot_longer() nhận các đối số:

  • Data frame "rộng" cần pivot (ngầm định trong pipe)
  • Tên các cột sẽ được gom vào một cột (từ khóa "cols").
  • Tên cột khóa sẽ được tạo ra - chứa tên của các cột được gom (từ khóa "names_to").
  • Tên cột giá trị sẽ được tạo ra - chứa các giá trị của các cột được gom (từ khóa "values_to").

Bạn sẽ dùng data frame sau khi pivot để so sánh số lượt thuê thực tế và dự đoán theo thời gian. Chỉ số thời gian instant đếm số quan sát kể từ khi bắt đầu thu thập dữ liệu. Mã mẫu chuyển đổi instant sang đơn vị ngày, bắt đầu từ 0.

Data frame bikesAugust, với các dự đoán (bikesAugust$pred), đã được nạp sẵn.

Bài tập này là một phần của khóa học

Học có giám sát với R: Hồi quy

Xem khóa học

Hướng dẫn bài tập

  • Điền vào chỗ trống để vẽ dự đoán và số đếm thực tế theo giờ cho 14 ngày đầu tháng Tám.
    • chuyển instant sang đơn vị ngày, thay vì giờ
    • pivot_longer() các cột cntpred vào một cột tên value, với khóa tên valuetype.
    • filter() cho hai tuần đầu của tháng Tám
    • Vẽ value theo hàm của instant (ngày).

Mô hình có nắm bắt được các khuynh hướng thời gian tổng quát trong việc thuê xe đạp không?

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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")
Chỉnh sửa và Chạy Mã