messenger_logo
Liên hệ qua Messenger
SciEco

[BLOG 005] Giới thiệu thư viện ggplot2 - Ứng dụng trực quan hoá dữ liệu và vẽ biểu đồ trong R

KH
Khanh Hoang
Ngày viết: 24/09/2023

1. Giới thiệu ggplot2

ggplot2 là một trong những thư viện trực quan hoá dữ liệu phổ biến nhất trong ngôn ngữ R. Nó được phát triển bởi Hadley Wickham và dựa trên ý tưởng của "Grammar of Graphics". ggplot2 cho phép bạn tạo ra các biểu đồ chất lượng cao và tùy chỉnh chúng để hiển thị dữ liệu theo cách bạn mong muốn.

1# Cài thư viện ggplot2
2install.packages("ggplot2")
3
4# Load thư viện ggplot2
5library(ggplot2)

2. Giới thiệu dataset mtcars

Trước khi bắt đầu vẽ biểu đồ, chúng ta sẽ sử dụng dataset mtcars có sẵn trong R. Dataset này chứa thông tin về các xe hơi, bao gồm các biến như mức tiêu thụ nhiên liệu (mpg), số lượng xi-lanh (cyl), công suất (hp), và nhiều biến khác.

1# Xem một số dòng đầu của dataset mtcars
2head(mtcars)

1# Thông tin của dataset mtcars
2help(mtcars)

3. Tạo biểu đồ scatter cơ bản

Chúng ta sẽ bắt đầu bằng việc tạo một biểu đồ scatter plot đơn giản để biểu diễn mối quan hệ giữa mức tiêu thụ nhiên liệu (mpg) và công suất mã lực (hp) của các xe hơi trong dataset.

1# Tạo biểu đồ scatter plot
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point()

Cú pháp rất đơn giản, đầu tiên ta khai báo biểu đồ bằng hàm ggplot() với các thông số về dataset, các trục x và y. Sau đó cộng hàm geom_point() với ngụ ý là vẽ biểu đồ chấm từ thông số đã được khai báo từ hàm ggplot().

4. Tinh chỉnh màu sắc

Bạn có thể tinh chỉnh màu sắc của các điểm trên biểu đồ bằng cách sử dụng tham số color trong hàm aes.

1# Biểu đồ scatter với màu khác
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(color = "steelblue")

5. Layer trong ggplot2, vẽ scatter plot kết hợp với đường hồi quy

Điểm đặc biệt của ggplot2 là ta có thể vẽ chồng cùng lúc các đồ thị lên nhau một các dễ dàng theo cơ chế layer bằng cách dùng dấu +. Hãy thêm một layer đường hồi quy vào biểu đồ scatter plot hiện tại.

Ta sử dụng hàm geom_smooth() với method="lm" là sử dụng phương pháp hồi quy tuyến tính và se=FALSE để không vẽ miền khoảng tin cậy. Ta được kết quả như bên dưới

1# Biểu đồ scatter với màu khác
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(color = "steelblue") +
4  geom_smooth(method = "lm", se = FALSE)

6. Thay đổi màu của các chấm theo phân loại xe

Để thay đổi màu của các chấm dựa trên các nhóm xe hơi, ví dụ ở đây là xe số sàn và xe số tự động với 0 là số tự động và 1 là số sàn bạn có thể khai báo tại hàm aes()

1# Biểu đồ scatter với màu sắc theo nhóm xe
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(aes(color = factor(am)))

7. Thay đổi kích thước của các chấm theo khối lượng xe

Chúng ta cũng có thể điều chỉnh kích thước của các chấm dựa trên thông tin về khối lượng xe bằng cách sử dụng tham số size.

1# Biểu đồ scatter với kích thước theo khối lượng xe
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(
4    aes(
5      color = factor(am),
6      size=wt
7    )
8  )

8**. Thay đổi title và label của biểu đồ**

Ta sử dụng hàm labs() để đổi title và label của các trục và các chú thích có trong biểu đồ

1# Biểu đồ scatter với kích thước theo khối lượng xe
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(
4    aes(
5      color = factor(am), 
6      size=wt
7    )
8  ) + 
9  geom_smooth(
10    method = "lm", 
11    formula = "y~ x + I(x^2)", 
12    se = FALSE
13  ) + 
14  labs(
15    x = 'Miles/(US) gallon',
16    y = "Gross horsepower",
17    color = "Transmission (0 = automatic, 1 = manual)",
18    size = "Weight (1000 lbs)"
19  ) + 
20  theme_bw()

8. Kết thúc

Trong bài viết này, chúng ta đã tìm hiểu cách sử dụng thư viện ggplot2 để trực quan hoá dữ liệu và vẽ biểu đồ trong R. ggplot2 cung cấp nhiều tính năng mạnh mẽ để tùy chỉnh biểu đồ của bạn và biểu diễn dữ liệu một cách trực quan và hiệu quả. Đây chỉ là một phần nhỏ của những gì bạn có thể làm với ggplot2, và bạn có thể tiếp tục khám phá để tạo ra các biểu đồ phức tạp hơn và phù hợp với nhu cầu phân tích của bạn.


Bài viết khác
Trong lĩnh vực sinh thái học định lượng và dịch tễ học phân tử, các nhà khoa học thường sử dụng mô hình thống kê để dự báo sự phân bố loài hoặc mô hình lây truyền bệnh tật. Tuy nhiên, một ứng dụng thú vị khác của mô hình cộng tổng quát, thường được gọi là GAM, chính là dự báo giá trị vòng đời khách hàng trong các doanh nghiệp phần mềm dịch vụ. Việc dự báo CLV đối mặt với những thách thức thống kê tương tự như dự báo sinh thái: các mối quan hệ phi tuyến tính đạt đến giới hạn bão hòa, cấu trúc phân cấp nơi các nhóm khách hàng hành xử khác nhau và nhu cầu cân bằng giữa tính linh hoạt của mô hình với khả năng giải thích cho các bên liên quan. Nhiều doanh nghiệp hiện nay vẫn dựa vào các phương pháp tính toán đơn giản như lấy giá trị đơn hàng trung bình nhân với tần suất và thời gian gắn bó. Cách tiếp cận này bỏ qua quỹ đạo cá nhân và động lực thời gian. Ngược lại, các mô hình học máy dạng hộp đen có thể nắm bắt các quy luật phức tạp nhưng lại thiếu tính diễn giải cần thiết cho các quyết định chiến lược. Mô hình GAM xuất hiện như một giải pháp trung gian hoàn hảo, cho phép nắm bắt các mối quan hệ phi tuyến phức tạp thông qua các hàm mượt có thể trực quan hóa, đồng thời xử lý tốt hiện tượng phương sai thay đổi đặc trưng trong dữ liệu doanh thu. Hiểu về động lực kinh doanh SaaS Các công ty SaaS hoạt động dựa trên doanh thu định kỳ từ đăng ký thuê bao. Khách hàng trả tiền hàng tháng hoặc hàng năm để duy trì quyền truy cập vào phần mềm. Điều này thay đổi hoàn toàn bài toán thống kê. Thách thức lớn nhất là chi phí thu hút khách hàng thường rất lớn so với doanh thu hàng tháng. Một khách hàng trả 99 đô la mỗi tháng nhưng tốn 500 đô la để thu hút sẽ cần ít nhất sáu tháng để doanh nghiệp đạt điểm hòa vốn.
Trong bài viết này, tôi sẽ giới thiệu cho bạn một cách tiếp cận tương đối đơn giản về thống kê Bayes. Phương pháp Bayes ngày càng trở nên phổ biến và bạn có thể thực hiện các mô hình này bằng lệnh bayesmh trong phần mềm Stata. Nội dung hôm nay sẽ tập trung vào các khái niệm, thuật ngữ chuyên môn và cú pháp cơ bản. Trong bài viết tiếp theo, chúng ta sẽ cùng tìm hiểu sâu hơn về mô hình Markov chain Monte Carlo thông qua thuật toán Metropolis-Hastings. Thống kê bayes qua ví dụ thực tế Nhiều người trong chúng ta được đào tạo theo trường phái thống kê tần suất, nơi các tham số được coi là các đại lượng cố định nhưng chưa biết giá trị. Chúng ta ước lượng các tham số này bằng cách lấy mẫu từ quần thể, và các mẫu khác nhau sẽ cho ra các ước lượng khác nhau. Tập hợp các ước lượng này tạo nên phân phối mẫu, giúp định lượng sự không chắc chắn của kết quả. Tuy nhiên, bản thân tham số vẫn luôn được xem là một hằng số cố định. Thống kê Bayes mang đến một tư duy hoàn toàn khác. Ở đây, các tham số được đối xử như các biến ngẫu nhiên và có thể được mô tả bằng các phân phối xác suất. Chúng ta thậm chí không cần dữ liệu để mô tả phân phối của một tham số, bởi xác suất đơn giản là mức độ tin tưởng của chúng ta vào giá trị đó.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội