자전거 대여 예측 시각화하기
이전 연습 문제에서는 표준 "실제값 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를 시간이 아닌 일 단위가 되도록 변환해요.cnt와pred열을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")