Tạo biểu đồ cho mô hình với ggfortify

Tác giả: Hoàng Đức Anh | 2019-04-25

Khi xây dựng các mô hình đơn giản như hồi quy tuyến tính hoặc chuỗi thời gian ARIMA, các biểu đồ mặc định từ mô hình thường được vẽ với r-base. Do đó, các biểu đồ này thường không được đẹp mắt. Trong bài viết này, RAnalytics sẽ hướng dẫn các bạn sử dụng package ggfortify để trực quan hóa kết quả từ các mô hình.


ggfortify nằm trong hệ sinh thái của ggplot2. Package này có 2 hàm cơ bản:

  • fortify: Biến đổi một object ra data.frame
  • autoplot: Tự động biến object và vẽ biểu đồ với ggplot2
library(tidyverse)
library(ggfortify)

Trong mô hình hồi quy tuyến tính

model.full <- lm(mpg ~ ., data = mtcars)  
#Chọn mô hình tối ưu
model.best <- step(model.full, direction = "both", trace = 0)

Ta có thể trực quan hóa các biểu đồ trong mô hình với câu lệnh autoplot như sau.

autoplot(model.best, ncol = 2) + 
  theme_bw()

Mô hình dự báo với ARIMA

Khi sử dụng arima xây dựng mô hình chuỗi thời gian, ta cũng có thể sử dụng ggfortify để trực quan hóa kết quả mô hình.

# Dữ liệu AirPassengers
AirPassengers
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
class(AirPassengers)
## [1] "ts"

Dữ liệu AirPassengers là class chuỗi thời gian ts, ta có thể chuyển sang dạng dataframe với fortify như sau.

#fortify cho phép convert ra data.frame
fortify(AirPassengers) %>% head
##        Index Data
## 1 1949-01-01  112
## 2 1949-02-01  118
## 3 1949-03-01  132
## 4 1949-04-01  129
## 5 1949-05-01  121
## 6 1949-06-01  135
autoplot(AirPassengers, ts.colour = "darkblue") + 
  theme_minimal() +
  labs(title = "Air Passengers with ggfortify")

Khi xây dựng mô hình arima, hàm autoplot cho phép nhanh chóng trực quan hóa kết quả mô hình, bao gồm cả dữ liệu dự báo như sau.

library(forecast)
d.arima <- auto.arima(AirPassengers)
d.forecast <- forecast(d.arima, level = c(95), h = 50)
autoplot(d.forecast) + 
  theme_minimal() +
  theme(legend.position = "none")


Như vậy, chúng ta đã vừa được học cách sử dụng ggfortify để trực quan hóa kết quả mô hình theo phong cách của ggplot2. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn!

comments powered by Disqus