시작하기무료로 시작하기

자전거 대여 예측 시각화하기

이전 연습 문제에서는 표준 "실제값 vs. 예측값" 산점도를 사용해 자전거 모델의 예측을 시각화했어요. 자전거 대여 데이터는 시계열 데이터이므로, 시간에 따라 모델이 얼마나 잘 작동하는지도 궁금하실 거예요. 이번 연습에서는 8월 첫 14일 동안, 시간 단위로 예측값과 실제 대여 수를 비교해 보겠습니다.

그래프를 만들기 위해 tidyr::pivot_longer() 함수(docs)를 사용해 bikesAugust에서 예측값과 실제값을 하나의 열로 합칠 거예요. pivot_longer()의 인수는 다음과 같습니다:

  • 피벗할 "와이드" 형태의 데이터 프레임(파이프에서 암묵적으로 전달)
  • 하나의 열로 모을 열들의 이름(키워드 "cols")
  • 생성할 키 열의 이름 - 모은 열들의 이름이 들어감(키워드 "names_to")
  • 생성할 값 열의 이름 - 모은 열들의 값이 들어감(키워드 "values_to")

피벗한 데이터 프레임을 사용해 시간에 따른 실제 대여 수와 예측 대여 수를 비교할 거예요. 시간 인덱스인 instant는 데이터 수집 시작 이후 관측치의 개수를 세며, 샘플 코드는 이 값을 0부터 시작하는 일 단위로 변환합니다.

예측값(bikesAugust$pred)이 포함된 bikesAugust 데이터 프레임은 미리 로드되어 있어요.

이 연습은 강의의 일부입니다

R로 하는 Supervised Learning: 회귀

강의 보기

연습 안내

  • 빈칸을 채워 8월 첫 14일 동안 시간별 예측값과 실제값을 그려 보세요.
    • instant를 시간이 아닌 일 단위가 되도록 변환해요.
    • cntpred 열을 pivot_longer()로 모아, 키는 valuetype, 값 열 이름은 value로 만드세요.
    • 8월 첫 두 주만 filter() 하세요.
    • instant(일)을 가로축으로, value를 세로축으로 그리세요.

모델이 자전거 대여의 전반적인 시간 패턴을 잘 포착하나요?

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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")
코드 편집 및 실행