Giảng viên hướng dẫn: ThS. Trần Mạnh Tường
Sinh viên
thực hiện: Nhóm 24: Lê Ngọc Tường Vy và Trần Hoàng Minh Nhật
25/10/2025
1. # Nạp các thư viện để tiến hành phân tích
2. library(readxl) # Tải thư viện 'readxl' để đọc dữ liệu từ các tệp Excel (.xlsx, .xls)
3. library(skimr) # Tải thư viện 'skimr' để tạo bản tóm tắt thống kê nhanh chóng, đẹp mắt (giống như 'summary' nhưng chi tiết hơn)
4. library(tidyverse) # Tải gói thư viện 'tidyverse' tổng hợp (bao gồm dplyr, ggplot2, tidyr, v.v.), mặc dù nhiều gói đã được tải riêng lẻ trước đó
5. library(ggplot2) # Tải thư viện 'ggplot2' để tạo các đồ thị và biểu đồ trực quan hóa dữ liệu
6. library(dplyr) # Tải thư viện 'dplyr' (một phần của tidyverse) để thao tác và xử lý dữ liệu hiệu quả
7. library(tidyr) # Tải thư viện 'tidyr' (một phần của tidyverse) để làm sạch và định hình lại dữ liệu (ví dụ: pivot_longer/wider)
8. library(DT) # Tải thư viện 'DT' để tạo các bảng dữ liệu tương tác, có thể tìm kiếm, sắp xếp
9. library(kableExtra) # Tải thư viện 'kableExtra' để tùy chỉnh và làm đẹp các bảng HTML/LaTeX
10. library(lubridate) # Tải thư viện 'lubridate' để thao tác và xử lý dữ liệu thời gian và ngày tháng
Bộ dữ liệu Báo cáo tài chính BIDV được nhóm tác giả thu thập từ trang web “BIDV.com.vn” bao gồm các biến tài chính quan trọng của Ngân hàng TMCP Đầu tư và Phát triển Việt Nam (BIDV) được thu thập trong giai đoạn \(\text{15}\) năm, từ năm \(\text{2010}\) đến \(\text{2024}\). Các biến được chia thành nhiều nhóm: Quy mô (như Tổng tài sản, Dư nợ cho vay), Cơ cấu vốn (Vốn chủ sở hữu, Tổng nợ), Dòng tiền và Các khoản mục thu chi cốt lõi (như Doanh thu lãi thuần, Chi phí hoạt động, Chi phí tín dụng).
Ta giả tiến hành đọc từng sheet của file excel Báo cáo tài chính của BIDV giai đoạn 2010-2024 và gán cho từng sheet “Cân đối kế toán”, “Hoạt động kinh doanh”, “Lưu chuyển tiền tệ” tương ứng với các object “CDKT”, “HDKD” và “LCTT”.
1. CDKT <- read_excel( "~/Downloads/TLHK3:2025/Ngôn ngữ lập trình R/BCTC_BID_Final.xlsx", sheet = "CDKT")
2. HDKD <- read_excel("~/Downloads/TLHK3:2025/Ngôn ngữ lập trình R/BCTC_BID_Final.xlsx", sheet = "HDKD")
3. LCTT <- read_excel("~/Downloads/TLHK3:2025/Ngôn ngữ lập trình R/BCTC_BID_Final.xlsx" , sheet = "LCTT")
Giải thích kỹ thuật: 1., 2., 3. Đọc sheet các sheet và gán thành bảng dữ liệu.
Tiếp theo tác giả lọc 15 biến phù hợp với nhu cầu phân tích và gán vào một object mới tên là “BIDV”
1. CDKT_sel <- CDKT %>%
2. select(
3. Năm,
4. tong_tai_san = `TỔNG TÀI SẢN`,
5. von_chu_so_huu = `Vốn chủ sở hữu`,
6. tong_no_phai_tra = `Tổng nợ phải trả`,
7. du_no_cho_vay = `Cho vay khách hàng...10`,
8. du_phong_rui_ro = `Dự phòng rủi ro cho vay khách hàng`
9. )
10. HDKD_sel <- HDKD %>%
11. select(
12. Năm,
13. doanh_thu_lai_thuan = `Thu nhập lãi thuần`,
14. thu_nhap_phi_dich_vu = `Thu nhập từ hoạt động dịch vụ`,
15. loi_nhuan_truoc_thue = `Tổng lợi nhuận trước thuế`,
16. loi_nhuan_sau_thue = `Lợi nhuận sau thuế`,
17. chi_phi_hoat_dong = `Chi phí hoạt động`,
18. chi_phi_tin_dung = `Chi phí dự phòng rủi ro tín dụng`
19. )
20. LCTT_sel <- LCTT %>%
21. select(
22. Năm,
23. lc_tien_thuan_hdkd = `Lưu chuyển tiền thuần từ các hoạt động sản xuất kinh doanh`,
24. lc_tien_thuan_hddt = `Lưu chuyển tiền thuần từ hoạt động đầu tư`,
25. lc_tien_thuan_hdtc = `Lưu chuyển tiền từ hoạt động tài chính`,
26. tien_tuong_duong_cuoi_ky = `Tiền và tương đương tiền cuối kỳ`
27. )
28. BIDV <- CDKT_sel %>%
29. left_join(HDKD_sel, by = "Năm") %>%
30. left_join(LCTT_sel, by = "Năm")
31. colnames(BIDV) <- gsub(
32. "\\s+",
33. "_",
34. tolower(
35. stringi::stri_trans_general(colnames(BIDV), "Latin-ASCII")
36. )
37. )
Giải thích kỹ thuật:
1–9. Sử dụng hàm select() của gói dplyr
để lấy các cột cần thiết từ bảng số liệu CDKT. Đồng thời đặt lại tên các
cột cho dễ làm việc về sau, ví dụ: TỔNG TÀI SẢN đổi thành
tong_tai_san. 10–19. Lặp lại thao tác với
bảng HDKD, chỉ lấy các cột liên quan đến doanh thu, lợi nhuận, chi phí
và đặt lại tên tiếng Việt không dấu cho thống nhất.
20–27. Với bảng LCTT, tiếp tục dùng
select() để lấy các biến về tiền và hoạt động rồi đổi tên
chuẩn hóa.
28–30. Dùng left_join() để gộp ba bảng
đã chọn thành một bảng tổng hợp BIDV theo cột “Năm”.
31–37. Chuẩn hóa tên cột toàn bộ bảng BIDV: dùng hàm
chuyển về chữ thường, bỏ dấu, thay khoảng trắng bằng dấu
_.
1. head(BIDV)
Giải thích kỹ thuật: 1. Là lệnh để hiển thị vài dòng đầu tiên (mặc định 6 dòng) của bảng dữ liệu.
1. tail(BIDV)
Giải thích kỹ thuật: 1. Là lệnh để hiển thị một vài dòng cuối cùng (mặc định 6 dòng) của bảng dữ liệu
Ta sử dụng sử dụng một số lệnh bên dưới để xem thông tin chung của BIDV.
1. nrow(BIDV)
## [1] 15
Giải thích kỹ thuật: 1. Là lệnh trả về số lượng dòng (hay số bản ghi/row) của bảng dữ liệu BIDV
Nhận xét: Kết quả trả về có 15 dòng (quan sát) trong bộ dữ liệu BIDV.
1. ncol(BIDV)
## [1] 16
Giải thích kỹ thuật: 1. Là lệnh trả về số lượng cột (columns) của bảng dữ liệu BIDV.
Nhận xét: Sử dụng lệnh ncol() kết quả trả về có 16 cột (biến) trong bộ dữ liệu BIDV.
1. dim(BIDV)
## [1] 15 16
Giải thích kỹ thuật: Là lệnh trả về một vector gồm hai giá trị: số dòng (rows) và số cột (columns) của bảng dữ liệu BIDV.
Nhận xét: Kết quả trả về cho thấy bộ dữ liệu BIDV có 15 hàng (quan sát) và 16 cột (biến).
1. names(BIDV)
## [1] "nam" "tong_tai_san"
## [3] "von_chu_so_huu" "tong_no_phai_tra"
## [5] "du_no_cho_vay" "du_phong_rui_ro"
## [7] "doanh_thu_lai_thuan" "thu_nhap_phi_dich_vu"
## [9] "loi_nhuan_truoc_thue" "loi_nhuan_sau_thue"
## [11] "chi_phi_hoat_dong" "chi_phi_tin_dung"
## [13] "lc_tien_thuan_hdkd" "lc_tien_thuan_hddt"
## [15] "lc_tien_thuan_hdtc" "tien_tuong_duong_cuoi_ky"
Giải thích kỹ thuật: 1. Là lệnh trả về tên các biến (cột) của bảng dữ liệu BIDV.
Nhận xét: Sử dụng lệnh names() trả về danh sách các biến của bộ dữ liệu BIDV gồm: “nam”, “tong_tai_san”, “von_chu_so_huu”, “tong_no_phai_tra”, “du_no_cho_vay”, “du_phong_rui_ro”, “doanh_thu_lai_thuan”, “thu_nhap_phi_dich_vu”, “loi_nhuan_truoc_thue”, “loi_nhuan_sau_thue”, “chi_phi_hoat_dong”, “chi_phi_tin_dung”, “lc_tien_thuan_hdkd”, “lc_tien_thuan_hddt”, “lc_tien_thuan_hdtc”, “tien_tuong_duong_cuoi_ky”, phản ánh đầy đủ các thông tin tài chính và hoạt động của BIDV.
Dữ liệu bao gồm các biến sau, được tổng hợp chi tiết trong bảng dưới đây nhằm phục vụ cho quá trình phân tích:
| STT | Tên biến | Mô tả |
|---|---|---|
| 1 | nam | Năm báo cáo tài chính |
| 2 | tong_tai_san | Tổng tài sản hợp nhất tại thời điểm báo cáo (đơn vị tính VND) |
| 3 | von_chu_so_huu | Vốn chủ sở hữu của BIDV (đơn vị tính VND) |
| 4 | tong_no_phai_tra | Tổng nợ phải trả (đơn vị tính VND) |
| 5 | du_no_cho_vay | Dư nợ cho vay khách hàng tại thời điểm báo cáo (đơn vị tính VND) |
| 6 | du_phong_rui_ro | Dự phòng rủi ro cho vay khách hàng (đơn vị tính VND) |
| 7 | doanh_thu_lai_thuan | Thu nhập lãi thuần từ hoạt động tín dụng (đơn vị tính VND) |
| 8 | thu_nhap_phi_dich_vu | Thu nhập ròng từ phí dịch vụ ngân hàng (đơn vị tính VND) |
| 9 | loi_nhuan_truoc_thue | Tổng lợi nhuận trước thuế (đơn vị tính VND) |
| 10 | loi_nhuan_sau_thue | Lợi nhuận ròng sau thuế thu nhập doanh nghiệp (đơn vị tính VND) |
| 11 | chi_phi_hoat_dong | Tổng chi phí hoạt động trong kỳ (đơn vị tính VND) |
| 12 | chi_phi_tin_dung | Chi phí dự phòng rủi ro tín dụng trích lập (đơn vị tính VND) |
| 13 | lc_tien_thuan_hdkd | Lưu chuyển tiền thuần từ hoạt động kinh doanh (đơn vị tính VND) |
| 14 | lc_tien_thuan_hddt | Lưu chuyển tiền thuần từ hoạt động đầu tư (đơn vị tính VND) |
| 15 | lc_tien_thuan_hdtc | Lưu chuyển tiền thuần từ hoạt động tài chính (đơn vị tính VND) |
| 16 | tien_tuong_duong_cuoi_ky | Tiền và tương đương tiền cuối kỳ báo cáo (đơn vị tính VND) |
1. str(BIDV)
## tibble [15 × 16] (S3: tbl_df/tbl/data.frame)
## $ nam : chr [1:15] "2010" "2011" "2012" "2013" ...
## $ tong_tai_san : num [1:15] 3.66e+14 4.06e+14 4.85e+14 5.48e+14 6.50e+14 ...
## $ von_chu_so_huu : num [1:15] 2.42e+13 2.44e+13 2.65e+13 3.20e+13 3.36e+13 ...
## $ tong_no_phai_tra : num [1:15] 3.42e+14 3.81e+14 4.58e+14 5.16e+14 6.17e+14 ...
## $ du_no_cho_vay : num [1:15] 2.49e+14 2.88e+14 3.34e+14 3.85e+14 4.39e+14 ...
## $ du_phong_rui_ro : num [1:15] -5.29e+12 -5.86e+12 -5.91e+12 -6.15e+12 -6.62e+12 ...
## $ doanh_thu_lai_thuan : num [1:15] 9.19e+12 1.26e+13 9.21e+12 1.48e+13 1.68e+13 ...
## $ thu_nhap_phi_dich_vu : num [1:15] 2.41e+12 2.81e+12 1.88e+12 2.42e+12 2.98e+12 ...
## $ loi_nhuan_truoc_thue : num [1:15] 4.63e+12 4.22e+12 3.39e+12 5.29e+12 6.30e+12 ...
## $ loi_nhuan_sau_thue : num [1:15] 3.76e+12 3.20e+12 2.57e+12 4.05e+12 4.99e+12 ...
## $ chi_phi_hoat_dong : num [1:15] -5.55e+12 -6.65e+12 -4.57e+12 -7.39e+12 -8.62e+12 ...
## $ chi_phi_tin_dung : num [1:15] -1.32e+12 -4.54e+12 -3.52e+12 -6.48e+12 -6.99e+12 ...
## $ lc_tien_thuan_hdkd : num [1:15] 1.35e+13 -4.07e+12 -5.98e+12 3.28e+12 1.22e+13 ...
## $ lc_tien_thuan_hddt : num [1:15] -4.47e+11 -2.35e+12 -1.10e+12 -1.67e+12 -1.23e+12 ...
## $ lc_tien_thuan_hdtc : num [1:15] 3.61e+12 -1.65e+12 0.00 2.14e+12 -2.39e+12 ...
## $ tien_tuong_duong_cuoi_ky: num [1:15] 5.70e+13 4.89e+13 3.79e+13 4.16e+13 5.02e+13 ...
Giải thích kỹ thuật: 1. Dùng để hiển thị nhanh cấu trúc bên trong của bảng dữ liệu BIDV, bao gồm loại dữ liệu (class), số dòng, số cột và kiểu dữ liệu của từng biến.
Nhận xét: Cấu trúc tổng quát của bộ dữ liệu BIDV gồm 15 quan sát và 16 biến. Trong đó, biến “nam” có kiểu ký tự (chr) đại diện cho năm, các biến còn lại đều là kiểu số (num).
1. glimpse(BIDV)
## Rows: 15
## Columns: 16
## $ nam <chr> "2010", "2011", "2012", "2013", "2014", "2015…
## $ tong_tai_san <dbl> 3.662678e+14, 4.057555e+14, 4.847846e+14, 5.4…
## $ von_chu_so_huu <dbl> 2.421973e+13, 2.439046e+13, 2.649445e+13, 3.2…
## $ tong_no_phai_tra <dbl> 3.418986e+14, 3.811580e+14, 4.580811e+14, 5.1…
## $ du_no_cho_vay <dbl> 2.488985e+14, 2.880796e+14, 3.340091e+14, 3.8…
## $ du_phong_rui_ro <dbl> -5.293092e+12, -5.857480e+12, -5.914526e+12, …
## $ doanh_thu_lai_thuan <dbl> 9.191386e+12, 1.263896e+13, 9.208212e+12, 1.4…
## $ thu_nhap_phi_dich_vu <dbl> 2.411228e+12, 2.813420e+12, 1.881855e+12, 2.4…
## $ loi_nhuan_truoc_thue <dbl> 4.625568e+12, 4.219873e+12, 3.389918e+12, 5.2…
## $ loi_nhuan_sau_thue <dbl> 3.760715e+12, 3.199608e+12, 2.571943e+12, 4.0…
## $ chi_phi_hoat_dong <dbl> -5.545615e+12, -6.652479e+12, -4.574004e+12, …
## $ chi_phi_tin_dung <dbl> -1.316616e+12, -4.542126e+12, -3.521163e+12, …
## $ lc_tien_thuan_hdkd <dbl> 1.345221e+13, -4.066983e+12, -5.975368e+12, 3…
## $ lc_tien_thuan_hddt <dbl> -4.471060e+11, -2.346896e+12, -1.095187e+12, …
## $ lc_tien_thuan_hdtc <dbl> 3.614804e+12, -1.652150e+12, 0.000000e+00, 2.…
## $ tien_tuong_duong_cuoi_ky <dbl> 5.698530e+13, 4.891927e+13, 3.788718e+13, 4.1…
Giải thích kỹ thuật: 1. Là lệnh dùng để hiển thị nhanh cấu trúc bảng dữ liệu BIDV: mỗi biến là một dòng, hiển thị loại dữ liệu và các giá trị đầu tiên.
Nhận xét: Kết quả cho thấy cấu trúc của bộ dữ liệu gồm 15 quan sát và 16 biến. Trong đó, biến “nam” có kiểu ký tự (chr) thể hiện năm quan sát, còn các biến còn lại thuộc kiểu số thực (dbl) phản ánh các chỉ tiêu tài chính và dòng tiền của BIDV như tổng tài sản, vốn chủ sở hữu, lợi nhuận, chi phí và các dòng lưu chuyển tiền tệ.
1. sapply(BIDV, class)
## nam tong_tai_san von_chu_so_huu
## "character" "numeric" "numeric"
## tong_no_phai_tra du_no_cho_vay du_phong_rui_ro
## "numeric" "numeric" "numeric"
## doanh_thu_lai_thuan thu_nhap_phi_dich_vu loi_nhuan_truoc_thue
## "numeric" "numeric" "numeric"
## loi_nhuan_sau_thue chi_phi_hoat_dong chi_phi_tin_dung
## "numeric" "numeric" "numeric"
## lc_tien_thuan_hdkd lc_tien_thuan_hddt lc_tien_thuan_hdtc
## "numeric" "numeric" "numeric"
## tien_tuong_duong_cuoi_ky
## "numeric"
Giải thích kỹ thuật: 1. Là lệnh dùng để áp dụng hàm class() cho từng cột của bảng dữ liệu và trả về kiểu dữ liệu (class) của từng cột (biến) trong dạng vector.
Nhận xét: Kết quả cho thấy biến “nam” có kiểu ký tự (character) trong khi 15 biến còn lại đều có kiểu số (numeric).
1. unique(BIDV$nam)
## [1] "2010" "2011" "2012" "2013" "2014" "2015" "2016" "2017" "2018" "2019"
## [11] "2020" "2021" "2022" "2023" "2024"
Giải thích kỹ thuật: 1. là lệnh để trả về tất cả giá trị duy nhất của biến trong bảng dữ liệu.
Nhận xét: Kết quả trả về cho thấy dữ liệu bao gồm 15 năm quan sát liên tục từ 2010 đến 2024, phản ánh chuỗi thời gian nghiên cứu kéo dài trong 15 năm.
1. any(is.na(BIDV))
## [1] FALSE
Giải thích kỹ thuật: 1. Là lệnh kiểm tra xem bảng dữ liệu BIDV có bất kỳ giá trị thiếu (NA) không. Nếu có ít nhất một NA, trả về TRUE; nếu không có NA , trả về FALSE.
Nhận xét: Kết quả trả về là FALSE, cho thấy bộ dữ liệu BIDV không có giá trị NA nào.
1. sum(is.na(BIDV))
## [1] 0
Giải thích kỹ thuật: 1. Là lệnh dùng để đếm tổng số giá trị thiếu (NA) trong toàn bộ bảng dữ liệu BIDV.
Nhận xét: Kết quả trả về là 0, cho thấy toàn bộ dữ liệu BIDV không có giá trị thiếu.
1. colSums(is.na(BIDV))
## nam tong_tai_san von_chu_so_huu
## 0 0 0
## tong_no_phai_tra du_no_cho_vay du_phong_rui_ro
## 0 0 0
## doanh_thu_lai_thuan thu_nhap_phi_dich_vu loi_nhuan_truoc_thue
## 0 0 0
## loi_nhuan_sau_thue chi_phi_hoat_dong chi_phi_tin_dung
## 0 0 0
## lc_tien_thuan_hdkd lc_tien_thuan_hddt lc_tien_thuan_hdtc
## 0 0 0
## tien_tuong_duong_cuoi_ky
## 0
Giải thích kỹ thuật: 1. Là lệnh trả về số lượng giá trị thiếu (NA) ở từng cột của bảng dữ liệu BIDV.
Nhận xét: Kết quả trả về 0 cho tất cả các cột, cho thấy không có cột nào chứa giá trị NA. Điều này xác nhận dữ liệu BIDV hoàn chỉnh, tất cả 16 biến đều đầy đủ 15 quan sát.
1. names(BIDV)[colSums(is.na(BIDV)) > 0]
## character(0)
Giải thích kỹ thuật: 1. Là lệnh để trả về tên các biến (cột) trong bảng dữ liệu có ít nhất một giá trị thiếu (NA).
Nhận xét: Kết quả trả về là character(0), nghĩa là không có cột nào chứa giá trị NA.
1. duplicated(BIDV)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE
Giải thích kỹ thuật: 1. Là lệnh để trả về một vector logic, xác định các dòng bị lặp lại trong bảng dữ liệu.
Nhận xét: Kết quả trả về toàn FALSE, cho thấy không có dòng nào bị trùng lặp trong bộ dữ liệu BIDV.
1. sum(duplicated(BIDV))
## [1] 0
Giải thích kỹ thuật: 1. Là lệnh để đếm tổng số dòng bị trùng lặp trong bảng dữ liệu BIDV.
Nhận xét: Kết quả trả về là 0, nghĩa là không có dòng nào bị trùng lặp. Điều này xác nhận dữ liệu BIDV toàn bộ các quan sát đều duy nhất, không cần loại bỏ bản ghi trùng lặp.
1. BIDV$nam <- as.integer(BIDV$nam)
2. str(BIDV$nam)
## int [1:15] 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 ...
Giải thích kỹ thuật:
Là lệnh chuyển kiểu dữ liệu của biến nam trong bảng dữ liệu sang kiểu số nguyên (integer).
Là lệnh xem nhanh cấu trúc, kiểu dữ liệu biến.
Nhận xét: Sử dụng lệnh (1) chuyển biến nam từ kiểu ký tự sang kiểu số nguyên. Kết quả trả về là int [1:15] 2010 2011 2012 …2024, nghĩa là 15 quan sát của năm đã được chuyển thành số.
1. BIDV$ROE <- BIDV$loi_nhuan_sau_thue / BIDV$von_chu_so_huu
Giải thích kỹ thuật: 1. Là lệnh để tính và thêm biến ROE (Return On Equity) vào bảng dữ liệu , bằng cách lấy lợi nhuận sau thuế chia cho vốn chủ sở hữu.
1. BIDV$ROA <- BIDV$loi_nhuan_sau_thue / BIDV$tong_tai_san
Giải thích kỹ thuật: 1. Là lệnh để tính và thêm biến ROA (Return On Assets) vào bảng dữ liệu BIDV, bằng cách lấy lợi nhuận sau thuế chia cho tổng tài sản.
1. BIDV$ty_le_no_ts <- BIDV$tong_no_phai_tra / BIDV$tong_tai_san
Giải thích kỹ thuật: 1. Là lệnh để tính và thêm biến tỷ lệ nợ trên tổng tài sản vào bảng dữ liệu, bằng cách lấy tổng nợ phải trả chia cho tổng tài sản.
1. BIDV$hieu_qua_ROE <- ifelse(BIDV$ROE > 0.15, "Tốt",
2. ifelse(BIDV$ROE >= 0.1 & BIDV$ROE <= 0.15, "Trung bình", "Thấp"))
Giải thích kỹ thuật: 1. Là lệnh để phân loại hiệu quả ROE cho từng dòng dữ liệu trong bảng BIDV: nếu ROE > 0.15 thì gán là “Tốt”, từ 0.1 đến 0.15 là “Trung bình”, còn lại là “Thấp”.
1. BIDV$hieu_qua_ROA <- ifelse(BIDV$ROA > 0.01, "Tốt",
2. ifelse(BIDV$ROA >= 0.005 & BIDV$ROA <= 0.01, "Trung bình", "Thấp"))
Giải thích kỹ thuật: 1. Là lệnh để phân loại hiệu quả ROA cho từng dòng dữ liệu trong bảng BIDV: nếu ROA > 0.01 thì “Tốt”, từ 0.005 đến 0.01 là “Trung bình”, còn lại là “Thấp”.
1. BIDV <- BIDV %>%
2. mutate(
3. nhom_tong_tai_san = case_when(
4. tong_tai_san < 5e14 ~ "Nhỏ",
5. tong_tai_san >= 5e14 & tong_tai_san < 1e15 ~ "Trung bình",
6. tong_tai_san >= 1e15 ~ "Lớn"
7. )
8. )
Giải thích kỹ thuật:
Gán lại bảng dữ liệu BIDV với kết quả biến đổi bằng toán tử pipe %>%.
Thêm hoặc chỉnh sửa biến trong dataframe; vẫn giữ nguyên các biến cũ.
Tạo biến phân nhóm, cho phép phân loại nhiều trường hợp theo điều kiện logic trên một biến số.
1. skim(BIDV)
| Name | BIDV |
| Number of rows | 15 |
| Number of columns | 22 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| numeric | 19 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| hieu_qua_ROE | 0 | 1 | 3 | 10 | 0 | 3 | 0 |
| hieu_qua_ROA | 0 | 1 | 3 | 10 | 0 | 3 | 0 |
| nhom_tong_tai_san | 0 | 1 | 3 | 10 | 0 | 3 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| nam | 0 | 1 | 2.017000e+03 | 4.470000e+00 | 2.010000e+03 | 2.013500e+03 | 2.017000e+03 | 2.020500e+03 | 2.024000e+03 | ▇▇▇▇▇ |
| tong_tai_san | 0 | 1 | 1.251883e+15 | 7.412196e+14 | 3.662678e+14 | 5.993632e+14 | 1.202284e+15 | 1.639191e+15 | 2.760792e+15 | ▇▆▅▂▃ |
| von_chu_so_huu | 0 | 1 | 6.306981e+13 | 3.801020e+13 | 2.421973e+13 | 3.282309e+13 | 4.883401e+13 | 8.298782e+13 | 1.449111e+14 | ▇▂▃▁▂ |
| tong_no_phai_tra | 0 | 1 | 1.188759e+15 | 7.037727e+14 | 3.418986e+14 | 5.664138e+14 | 1.153450e+15 | 1.556203e+15 | 2.615881e+15 | ▇▅▆▂▃ |
| du_no_cho_vay | 0 | 1 | 9.129274e+14 | 5.563560e+14 | 2.488985e+14 | 4.119800e+14 | 8.555355e+14 | 1.260384e+15 | 2.018044e+15 | ▇▂▃▂▂ |
| du_phong_rui_ro | 0 | 1 | -1.670143e+13 | 1.307210e+13 | -4.046906e+13 | -2.407983e+13 | -1.134978e+13 | -6.384094e+12 | -5.293092e+12 | ▃▁▁▃▇ |
| doanh_thu_lai_thuan | 0 | 1 | 3.065420e+13 | 1.739830e+13 | 9.191386e+12 | 1.584445e+13 | 3.095533e+13 | 4.140056e+13 | 5.800758e+13 | ▇▃▆▂▅ |
| thu_nhap_phi_dich_vu | 0 | 1 | 6.395216e+12 | 3.831985e+12 | 1.881855e+12 | 2.897310e+12 | 5.611617e+12 | 9.481832e+12 | 1.346531e+13 | ▇▂▃▂▂ |
| loi_nhuan_truoc_thue | 0 | 1 | 1.155299e+13 | 8.828890e+12 | 3.389918e+12 | 5.793494e+12 | 8.665177e+12 | 1.213993e+13 | 3.198487e+13 | ▇▂▁▁▂ |
| loi_nhuan_sau_thue | 0 | 1 | 9.207143e+12 | 7.080721e+12 | 2.571943e+12 | 4.518338e+12 | 6.945586e+12 | 9.694514e+12 | 2.560404e+13 | ▇▃▁▁▂ |
| chi_phi_hoat_dong | 0 | 1 | -1.460694e+13 | 7.291436e+12 | -2.796682e+13 | -1.857914e+13 | -1.550424e+13 | -8.007468e+12 | -4.574004e+12 | ▃▃▆▃▇ |
| chi_phi_tin_dung | 0 | 1 | -1.397639e+13 | 9.000441e+12 | -2.948083e+13 | -2.072635e+13 | -1.484731e+13 | -6.079597e+12 | -1.316616e+12 | ▁▇▁▂▇ |
| lc_tien_thuan_hdkd | 0 | 1 | 1.925048e+13 | 5.319680e+13 | -7.101499e+13 | -3.949585e+11 | 1.219266e+13 | 3.485631e+13 | 1.325179e+14 | ▂▅▇▁▂ |
| lc_tien_thuan_hddt | 0 | 1 | -1.029809e+12 | 5.929673e+11 | -2.346896e+12 | -1.180807e+12 | -9.773590e+11 | -7.997265e+11 | 3.336100e+10 | ▁▂▇▅▂ |
| lc_tien_thuan_hdtc | 0 | 1 | 5.994315e+11 | 4.559334e+12 | -2.940383e+12 | -2.009437e+12 | -1.196940e+11 | 1.447378e+12 | 1.545087e+13 | ▇▃▁▁▁ |
| tien_tuong_duong_cuoi_ky | 0 | 1 | 1.240421e+14 | 9.391600e+13 | 3.788718e+13 | 5.300604e+13 | 9.877124e+13 | 1.678013e+14 | 3.247245e+14 | ▇▃▂▁▂ |
| ROE | 0 | 1 | 1.400000e-01 | 3.000000e-02 | 9.000000e-02 | 1.300000e-01 | 1.400000e-01 | 1.500000e-01 | 1.800000e-01 | ▃▃▇▅▅ |
| ROA | 0 | 1 | 1.000000e-02 | 0.000000e+00 | 0.000000e+00 | 1.000000e-02 | 1.000000e-02 | 1.000000e-02 | 1.000000e-02 | ▇▃▆▂▅ |
| ty_le_no_ts | 0 | 1 | 9.500000e-01 | 1.000000e-02 | 9.300000e-01 | 9.500000e-01 | 9.500000e-01 | 9.500000e-01 | 9.600000e-01 | ▁▂▇▃▃ |
Giải thích kỹ thuật: 1. Là lệnh dùng để xem nhanh tổng quan bộ dữ liệu. Kết quả hiển thị tóm tắt các thống kê đặc trưng (số dòng, số cột, kiểu dữ liệu từng biến, số giá trị thiếu, số giá trị duy nhất, giá trị trung bình, min, max…) cho từng biến của bảng dữ liệu.
| Biến | Nhận_xét |
|---|---|
| nam | Biến kiểu ký tự, không thiếu giá trị, gồm 15 quan sát thể hiện các năm của dữ liệu. |
| tong_tai_san | Biến số, không thiếu giá trị, trung bình khoảng ~1,25 triệu tỷ đồng, dao động từ 366 nghìn tỷ đến 2,76 triệu tỷ đồng, tổng tài sản BIDV tăng dần, biến động lớn. |
| von_chu_so_huu | Biến số, không thiếu giá trị, trung bình khoảng ~63,1 nghìn tỷ đồng, dao động từ 24,2 nghìn tỷ đến 145 nghìn tỷ đồng, vốn chủ sở hữu tăng đều. |
| tong_no_phai_tra | Biến số, không thiếu giá trị, trung bình khoảng ~1,19 triệu tỷ đồng, dao động từ 342 nghìn tỷ đến 2,62 triệu tỷ đồng, tổng nợ tăng theo quy mô. |
| du_no_cho_vay | Biến số, không thiếu giá trị, trung bình khoảng ~913 nghìn tỷ đồng, dao động từ 249 nghìn tỷ đến 2,02 triệu tỷ đồng, dư nợ cho vay tăng theo từng năm. |
| du_phong_rui_ro | Biến số, không thiếu giá trị, giá trị âm, trung bình khoảng ~-16,7 nghìn tỷ đồng, dao động từ -5,29 nghìn tỷ đến -40,5 nghìn tỷ đồng, mức dự phòng rủi ro tín dụng. |
| doanh_thu_lai_thuan | Biến số, không thiếu giá trị, trung bình khoảng ~30,7 nghìn tỷ đồng, dao động từ 9,19 nghìn tỷ đến 58 nghìn tỷ đồng, doanh thu lãi thuần tăng nhưng biến động. |
| thu_nhap_phi_dich_vu | Biến số, không thiếu giá trị, trung bình khoảng ~6,4 nghìn tỷ đồng, dao động từ 1,88 nghìn tỷ đến 13,5 nghìn tỷ đồng, thu nhập phí dịch vụ biến động nhưng tăng. |
| loi_nhuan_truoc_thue | Biến số, không thiếu giá trị, trung bình khoảng ~11,6 nghìn tỷ đồng, dao động từ 3,39 nghìn tỷ đến 32 nghìn tỷ đồng, lợi nhuận trước thuế tăng trưởng nhưng biến động mạnh. |
| loi_nhuan_sau_thue | Biến số, không thiếu giá trị, trung bình khoảng ~9,21 nghìn tỷ đồng, dao động từ 2,57 nghìn tỷ đến 25,6 nghìn tỷ đồng, lợi nhuận sau thuế biến động và tăng. |
| chi_phi_hoat_dong | Biến số, không thiếu giá trị, giá trị âm, trung bình khoảng ~-14,6 nghìn tỷ đồng, dao động từ -4,57 nghìn tỷ đến -28 nghìn tỷ đồng, chi phí hoạt động tăng theo quy mô. |
| chi_phi_tin_dung | Biến số, không thiếu giá trị, giá trị âm, trung bình khoảng ~-14 nghìn tỷ đồng, dao động từ -1,32 nghìn tỷ đến -29,5 nghìn tỷ đồng, chi phí tín dụng biến động mạnh. |
| lc_tien_thuan_hdkd | Biến số, không thiếu giá trị, trung bình khoảng ~19,3 nghìn tỷ đồng, dao động từ -71 nghìn tỷ đến 133 nghìn tỷ đồng, dòng tiền thuần hoạt động kinh doanh biến động rất lớn. |
| lc_tien_thuan_hddt | Biến số, không thiếu giá trị, trung bình khoảng ~-1,03 nghìn tỷ đồng, dao động từ -2,35 nghìn tỷ đến 33,4 tỷ đồng, dòng tiền thuần đầu tư chủ yếu âm. |
| lc_tien_thuan_hdtc | Biến số, không thiếu giá trị, trung bình khoảng ~599 tỷ đồng, dao động từ -2,94 nghìn tỷ đến 15,5 nghìn tỷ đồng, dòng tiền thuần tài chính dao động cả âm và dương. |
| tien_tuong_duong_cuoi_ky | Biến số, không thiếu giá trị, trung bình khoảng ~124 nghìn tỷ đồng, dao động từ 37,9 nghìn tỷ đến 325 nghìn tỷ đồng, tiền và tương đương tiền cuối kỳ biến động nhưng tăng. |
1. BIDV %>%
2. group_by(thu_nhap_phi_dich_vu) %>%
3. summarise(mean_loi_nhuan_sau_thue = mean(loi_nhuan_sau_thue, na.rm = TRUE))
Giải thích kỹ thuật:
Áp dụng các phép biến đổi dữ liệu tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến chỉ định, chia bảng thành từng nhóm nhỏ.
Tính giá trị trung bình cho từng nhóm; bỏ qua giá trị thiếu nếu có.
Nhận xét: Thu nhập phí dịch vụ (TN Phi DV) và Lợi nhuận sau thuế trung bình (LNST) có mối quan hệ tương đối đồng biến theo quy mô. Khi TN Phi DV ở mức tối thiểu 1.881,86 Tỷ VND, LNST trung bình đạt 2.571,94 Tỷ VND. Khi TN Phi DV tăng lên mức tối đa 13.465,31 Tỷ VND, LNST cũng đạt mức cao nhất là 25.604,04 Tỷ VND. Tuy nhiên, TN Phi DV ở mức thấp (ví dụ 2.411,23 Tỷ VND) vẫn có thể đạt LNST cao hơn (3.760,72 Tỷ VND) so với TN Phi DV 2.813,42 Tỷ VND (3.199,61 Tỷ VND). Điều này cho thấy TN Phi DV lớn hơn thường dẫn đến LNST lớn hơn, nhưng các yếu tố chi phí khác có thể ảnh hưởng đến biên lợi nhuận ròng.
1. BIDV %>%
2. group_by(doanh_thu_lai_thuan) %>%
3. summarise(q3_chi_phi_hoat_dong = quantile(chi_phi_hoat_dong, 0.75, na.rm = TRUE))
Giải thích kỹ thuật:
Áp dụng các bước xử lý dữ liệu liên tiếp bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến, để phân chia bảng thành các nhóm cần phân tích.
Tính giá trị tứ phân vị thứ ba (Q3, tức 75%) cho biến chi phí hoạt động ở mỗi nhóm, bỏ qua giá trị thiếu nếu có.
Nhận xét: Doanh thu lãi thuần (DT Lãi Thuần) và Chi phí hoạt động (CPHĐ) cho thấy mối quan hệ đồng biến rất mạnh theo quy mô. Cụ thể, khi DT Lãi Thuần đạt mức tối đa 58.007,58 Tỷ VND, CP HĐ cũng ở mức tối đa tuyệt đối là -27.966,82 Tỷ VND, phản ánh quy mô kinh doanh lớn. Ngược lại, DT Lãi Thuần tối thiểu 9.191,39 Tỷ VND đi kèm CPHĐ tối thiểu -5.545,62 Tỷ VND, cho thấy tăng trưởng doanh thu lãi thuần đi đôi với việc gia tăng chi phí hoạt động tương ứng. Điều này nhấn mạnh rằng việc mở rộng hoạt động tín dụng cần được quản lý chặt chẽ chi phí để tối ưu hóa hiệu quả ròng.
1. BIDV %>%
2. group_by(du_phong_rui_ro) %>%
3. summarise(median_von_chu_so_huu = median(von_chu_so_huu, na.rm = TRUE))
Giải thích kỹ thuật:
Thực hiện luồng xử lý tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị biến dự phòng rủi ro, phân chia bảng thành các nhóm riêng biệt.
Tính giá trị trung vị (median) của biến vốn chủ sở hữu cho từng nhóm, bỏ qua giá trị thiếu nếu có.
Nhận xét:
1. BIDV %>%
2. group_by(chi_phi_tin_dung) %>%
3. summarise(min_lc_tien_thuan_hdkd = min(lc_tien_thuan_hdkd, na.rm = TRUE))
Giải thích kỹ thuật:
Thực hiện các thao tác xử lý dữ liệu nối tiếp bằng cách sử dụng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến chỉ định, chia bảng thành các nhóm phân tích riêng biệt.
Tính giá trị nhỏ nhất cho biến chỉ định trong từng nhóm, bỏ qua giá trị thiếu nếu có.
Nhận xét: Chi phí tín dụng (CPTD) và Lưu chuyển tiền thuần từ hoạt động kinh doanh tối thiểu (Min LCTT HĐKD) có mối quan hệ phức tạp theo quy mô hoạt động. Mức Min LCTT HĐKD cao nhất (132.517,90 Tỷ VND) tương ứng với CPTD là -23.842,33 Tỷ VND. Tuy nhiên, mức CPTD tuyệt đối lớn nhất (-29.480,83 Tỷ VND) lại không dẫn đến LCTT HĐKD cao nhất. Đáng chú ý, Min LCTT HĐKD âm sâu nhất (-71.014,99 Tỷ VND) chỉ đi kèm với CPTD là -20.343,52 Tỷ VND, cho thấy LCTT HĐKD bị ảnh hưởng bởi nhiều yếu tố ngoài chi phí tín dụng, như các khoản phải thu/phải trả hay hàng tồn kho.
1. BIDV %>%
2. group_by(thu_nhap_phi_dich_vu) %>%
3. summarise(max_doanh_thu_lai_thuan = max(doanh_thu_lai_thuan, na.rm = TRUE))
Giải thích kỹ thuật:
Thực hiện chuỗi các bước xử lý dữ liệu tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến phân tích, chia bảng thành các nhóm riêng biệt.
Tính giá trị lớn nhất cho một biến trong từng nhóm, bỏ qua giá trị thiếu nếu có.
Nhận xét: Thu nhập phí dịch vụ (TNPDV) và Doanh thu lãi thuần (DT Lãi Thuần) có mối quan hệ đồng biến mạnh theo quy mô. Khi TNPDV ở mức thấp nhất (1.881,86 Tỷ VND), DT Lãi Thuần tối đa đạt 9.208,21 Tỷ VND. Tuy nhiên, khi TNPDV tăng lên mức tối đa (13.465,31 Tỷ VND), DT Lãi Thuần tối đa cũng tăng lên mức cao nhất là 58.007,58 Tỷ VND. Điều này gợi ý rằng các ngân hàng có quy mô lớn tạo ra thu nhập từ dịch vụ cao hơn, đồng thời mở rộng hoạt động tín dụng hiệu quả, qua đó tối đa hóa cả hai nguồn doanh thu chính.
##. Thống kê tỷ lệ nợ/tổng tài sản theo tổng nợ phải trả
1. BIDV %>%
2. group_by(tong_no_phai_tra) %>%
3. summarise(mean_ty_le_no_ts = mean(ty_le_no_ts, na.rm = TRUE))
Giải thích kỹ thuật:
Thực hiện chuỗi thao tác xử lý dữ liệu bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến để phân tích từng nhóm riêng biệt.
Tính giá trị trung bình của một biến chỉ định (ở đây là tỷ lệ nợ trên tài sản), bỏ qua giá trị thiếu nếu có.
Nhận xét: Dữ liệu cho thấy có sự khác biệt giữa quy mô nợ tuyệt đối và tỷ trọng nợ tương đối so với tài sản. Tổng nợ phải trả có biên độ rất lớn, từ tối thiểu 341.898,60 Tỷ VND đến tối đa 2.615.881,00 Tỷ VND. Tuy nhiên, tỷ lệ Nợ/Tài sản lại ổn định ở mức rất cao, dao động chỉ trong khoảng hẹp từ 93,35% đến 95,94%, cho thấy các doanh nghiệp đều có mức độ đòn bẩy tài chính cực lớn. Đáng chú ý, tỷ lệ Nợ/TS tối đa (95,94%) lại không xảy ra ở mức Tổng nợ tối đa; thay vào đó, nó tương ứng với Tổng nợ là 1.153.450,00 Tỷ VND.
1. BIDV %>%
2. group_by(du_phong_rui_ro) %>%
3. summarise(Q1_du_no_cho_vay = quantile(du_no_cho_vay, 0.25, na.rm = TRUE))
Giải thích kỹ thuật:
Thực hiện luồng thao tác dữ liệu liên tiếp bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến dự phòng rủi ro, chia bảng thành các nhóm dựa trên giá trị này.
Tính tứ phân vị thứ nhất (Q1 - tức giá trị tại vị trí 25%) cho biến dư nợ cho vay trong từng nhóm, đồng thời bỏ qua giá trị thiếu nếu có.
Nhận xét: Dự phòng rủi ro (DPRR) và Dư nợ cho vay thể hiện mối quan hệ đồng biến rõ ràng theo quy mô. Khoản DPRR lớn nhất -40.469,06 Tỷ VND tương ứng với một trong những mức Dư nợ cho vay rất lớn (1.737.196,00 Tỷ VND). Ngược lại, Dự phòng thấp nhất -5.293,09 Tỷ VND đi kèm với Dư nợ tối thiểu 248.898,50 Tỷ VND. Dữ liệu cho thấy để duy trì quy mô kinh doanh lớn (cho vay), doanh nghiệp bắt buộc phải dành ra một khoản dự phòng tương xứng để đối phó với rủi ro tín dụng.
1. BIDV %>%
2. group_by(chi_phi_hoat_dong) %>%
3. summarise(max_lc_tien_thuan_hdkd = max(lc_tien_thuan_hdkd, na.rm = TRUE))
Giải thích kỹ thuật:
Thực hiện chuỗi thao tác xử lý dữ liệu tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của một biến, chia bảng thành các nhóm phân tích riêng biệt.
Tính giá trị lớn nhất của một biến trong từng nhóm, đồng thời bỏ qua giá trị thiếu nếu có.
Nhận xét: Dữ liệu cho thấy chi phí hoạt động (CP HĐ) có mối liên hệ với biên độ của Lưu chuyển tiền thuần từ hoạt động kinh doanh (LCTT HĐKD). Mức LCTT HĐKD tối đa cao nhất là 132.517,90 Tỷ VND lại tương ứng với mức CP HĐ rất cao (-22.714,60 Tỷ VND), cho thấy quy mô hoạt động lớn tạo ra khả năng sinh tiền mặt cực đại. Tuy nhiên, CP HĐ cao cũng đi kèm với rủi ro lớn: CP HĐ -25.080,60 Tỷ VND lại dẫn đến LCTT HĐKD tối đa là -71.014,99 Tỷ VND (giá trị âm lớn nhất). Điều này cho thấy quy mô hoạt động càng lớn, biên độ rủi ro và tiềm năng sinh lời từ dòng tiền càng cao, đòi hỏi quản trị rủi ro dòng tiền rất chặt chẽ.
1. BIDV %>%
2. group_by(hieu_qua_ROE) %>%
3. summarise(mean_ty_le_no_ts = mean(ty_le_no_ts, na.rm = TRUE),
4. sd_ty_le_no_ts = sd(ty_le_no_ts, na.rm = TRUE))
Giải thích kỹ thuật:
Thực hiện chuỗi thao tác xử lý dữ liệu tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến hiệu quả ROE, chia bảng thành các nhóm tương ứng để phân tích từng loại hiệu quả.
Tính đồng thời hai thống kê tổng hợp cho từng nhóm: Trung vị tổng tài sản (median). Tứ phân vị thứ ba tổng tài sản (quantile với 0.75). Các phép tính đều bỏ qua giá trị thiếu (NA) nếu có.
Nhận xét: Tỷ lệ Nợ/Tổng Tài sản (Đòn bẩy) ở tất cả các nhóm ROE đều rất cao, dao động quanh mức 94,57% đến 95,02% tài sản được tài trợ bằng nợ. Đáng chú ý, nhóm ROE “Tốt” lại có tỷ lệ nợ trung bình thấp nhất (94,57%), thấp hơn nhóm “Trung bình” (95,02%), cho thấy việc tối đa hóa đòn bẩy không đảm bảo hiệu quả ROE cao nhất. Về tính ổn định, nhóm “Thấp” có độ lệch chuẩn (SD) thấp nhất (0,18%), trong khi ROE “Tốt” và “Trung bình” có SD cao hơn (0,71% - 0,75%), chỉ ra rằng hiệu quả ROE cao hơn đi kèm với sự biến động lớn hơn trong cơ cấu nợ.
1. BIDV %>%
2. group_by(hieu_qua_ROE) %>%
3. summarise(median_tong_tai_san = median(tong_tai_san, na.rm = TRUE),
4. Q3_tong_tai_san = quantile(tong_tai_san, 0.75, na.rm = TRUE))
Giải thích kỹ thuật:
Chuỗi các thao tác được thực hiện tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến hieu_qua_ROE,
chia bảng thành các nhóm tương ứng.
Tính đồng thời hai giá trị tổng hợp cho mỗi nhóm: trung vị và tứ phân vị thứ ba (Q3), bỏ qua các giá trị thiếu.
Nhận xét: Hiệu quả ROE cho thấy mối tương quan rõ ràng với quy mô tổng tài sản (TTS), với các doanh nghiệp có ROE “Tốt” sở hữu quy mô TTS lớn nhất. Cụ thể, TTS trung vị (median) của nhóm “Tốt” là 2.120.677,00 Tỷ VND, cao hơn gấp đôi so với nhóm “Thấp” (1.000.735,00 Tỷ VND). Ranh giới giữa nhóm “Thấp” và “Trung bình” không quá lớn ở mức trung vị (khoảng 1.000.000 - 1.100.000 Tỷ VND), nhưng nhóm “Tốt” có sự nhảy vọt về quy mô. Điều này gợi ý rằng, việc đạt được hiệu suất sinh lời cao trên vốn chủ sở hữu thường đi kèm với việc mở rộng và quản lý một quy mô tài sản khổng lồ.
1. BIDV %>%
2. group_by(hieu_qua_ROA) %>%
3. summarise(mean_loi_nhuan_sau_thue = mean(loi_nhuan_sau_thue, na.rm = TRUE),
4. max_loi_nhuan_sau_thue = max(loi_nhuan_sau_thue, na.rm = TRUE))
Giải thích kỹ thuật:
Chuỗi các thao tác được thực hiện tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến phân tích, chia thành các nhóm dựa trên hiệu quả ROA.
Tính đồng thời hai giá trị tổng hợp cho mỗi nhóm: trung bình và giá trị lớn nhất của biến lợi nhuận sau thuế, và bỏ qua giá trị thiếu nếu có.
Nhận xét: Hiệu quả ROA “Tốt” lại có Lợi nhuận sau thuế (LNST) trung bình thấp nhất, chỉ đạt 3.760,72 Tỷ VND, thấp hơn đáng kể so với nhóm “Thấp” (7.223,57 Tỷ VND). Điều này gợi ý rằng quy mô lợi nhuận không phải là yếu tố quyết định ROA; thay vào đó, khả năng sinh lời trên tài sản mới là cốt lõi. Nhóm “Trung bình” có LNST tối đa cao nhất, lên tới 25.604,04 Tỷ VND, cho thấy việc kiểm soát quy mô tài sản (mẫu số của ROA) hiệu quả hơn mới giúp chuyển hóa LNST thành ROA cao.
1. BIDV %>%
2. group_by(hieu_qua_ROA) %>%
3. summarise(Q1_du_no_cho_vay = quantile(du_no_cho_vay, 0.25, na.rm = TRUE),
4. Q3_du_no_cho_vay = quantile(du_no_cho_vay, 0.75, na.rm = TRUE))
Giải thích kỹ thuật:
Chuỗi các thao tác được thực hiện tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến phân tích, chia thành từng nhóm tương ứng.
Tính đồng thời hai giá trị tổng hợp cho mỗi nhóm: tứ phân vị thứ nhất (Q1) và tứ phân vị thứ ba (Q3); bỏ qua giá trị thiếu nếu có.
Nhận xét: Dư nợ cho vay thể hiện mối tương quan nghịch rõ rệt với hiệu quả ROA khi xét ở các ngưỡng tập trung \(Q1\) và \(Q3\). Cụ thể, nhóm ROA “Tốt” chỉ xuất hiện ở mức dư nợ thấp, tập trung tại \(248.898,50\) Tỷ VND, trong khi nhóm ROA “Thấp” lại tập trung ở mức dư nợ cao hơn nhiều, tại \(1.195.240,00\) Tỷ VND. Đáng chú ý, nhóm “Trung bình” có biên độ rộng nhất (từ \(439.070,10\) Tỷ VND đến \(1.325.529,00\) Tỷ VND) và chứa giá trị dư nợ tối đa. Điều này cho thấy việc kiểm soát quy mô dư nợ cho vay (ở mức thấp) có thể là yếu tố quan trọng để đạt được hiệu quả ROA cao.
1. BIDV %>%
2. group_by(hieu_qua_ROE) %>%
3. summarise(min_lc_tien_thuan_hdkd = min(lc_tien_thuan_hdkd, na.rm = TRUE),
4. max_lc_tien_thuan_hdkd = max(lc_tien_thuan_hdkd, na.rm = TRUE))
Giải thích kỹ thuật:
Chuỗi các thao tác được thực hiện tuần tự bằng toán tử pipe.
Nhóm dữ liệu theo giá trị của biến, chia thành các nhóm tương ứng theo hiệu quả ROE trong dataset.
Tính đồng thời hai giá trị tổng hợp cho mỗi nhóm: giá trị nhỏ nhất và giá trị lớn nhất của biến, bỏ qua giá trị thiếu nếu có.
Nhận xét: Lưu chuyển tiền thuần từ hoạt động kinh doanh (LCTT HĐKD) cho thấy sự biến động rất lớn giữa các nhóm hiệu quả ROE. Cụ thể, nhóm “Tốt” có phạm vi LCTT HĐKD cực kỳ rộng, từ tối thiểu là -71.015 tỷ VND đến tối đa là 132.517,90 tỷ VND. Điều này đặc biệt đáng chú ý vì cả ba nhóm (“Thấp”, “Trung bình”, “Tốt”) đều bao gồm các mức LCTT HĐKD âm (ví dụ, nhóm “Thấp” có tối thiểu -67.912,81 tỷ VND), cho thấy rõ ràng ROE không chỉ phụ thuộc vào LCTT HĐKD dương trong kỳ mà còn liên quan đến các hoạt động tài chính/đầu tư và cơ cấu vốn của doanh nghiệp.
1. BIDV %>%
2. group_by(hieu_qua_ROE, hieu_qua_ROA) %>%
3. summarise(trung_binh_tong_tai_san = mean(tong_tai_san, na.rm = TRUE))
Giải thích kỹ thuật:
1–2. Chia dữ liệu thành các nhóm dựa theo hai biến phân loại: hiệu quả ROE và hiệu quả ROA.
Nhận xét: Hiệu quả hoạt động có mối quan hệ ngược với quy mô Tổng Tài sản (TTS) trong một số nhóm. Cụ thể, nhóm có hiệu quả sinh lời kém nhất (ROE Thấp / ROA Thấp) lại có TTS lớn thứ hai (1.516.686,00 Tỷ VND), chỉ đứng sau nhóm có sự kết hợp cao nhất (ROE Tốt / ROA Trung bình là 2.008.211,00 Tỷ VND). Đáng chú ý, các tổ chức có hiệu quả Tốt ở cả hai tiêu chí (ROE Tốt / ROA Tốt) lại có TTS trung bình thấp nhất (366.267,80 Tỷ VND). Điều này cho thấy khả năng sinh lời hiệu quả nhất (Tốt/Tốt) thường đạt được ở các tổ chức có quy mô tài sản khiêm tốn hơn, tập trung vào hiệu suất.
1. BIDV %>%
2. group_by(hieu_qua_ROE, hieu_qua_ROA) %>%
3. summarise(
4. tb_von_chu_so_huu = mean(von_chu_so_huu, na.rm = TRUE),
5. )
Giải thích kỹ thuật:
1–2. Chia dữ liệu thành từng nhóm theo hai biến chất lượng: hiệu quả ROE và hiệu quả ROA.
3–4. Ttính giá trị trung bình cột von_chu_so_huu cho mỗi tổ hợp nhóm, dùng mean(…, na.rm = TRUE) để bỏ qua giá trị thiếu.
Nhận xét: Dữ liệu cho thấy hiệu suất sinh lời cao nhất (ROE Tốt / ROA Tốt) lại đi kèm với mức Vốn chủ sở hữu trung bình thấp nhất (24.219,73 Tỷ VND). Ngược lại, nhóm đạt ROE Tốt nhưng ROA chỉ Trung bình lại yêu cầu VCSH lớn nhất (103.558,00 Tỷ VND). Thậm chí, nhóm hiệu quả kém nhất (ROE Thấp / ROA Thấp) có VCSH cao thứ hai (79.646,61 Tỷ VND). Điều này gợi ý rằng hiệu quả sinh lời tối ưu (Tốt/Tốt) đạt được là nhờ sử dụng hiệu quả đòn bẩy trên quy mô vốn nhỏ, chứ không phải dựa vào quy mô vốn tuyệt đối lớn.
1. BIDV %>%
2. group_by(hieu_qua_ROE, hieu_qua_ROA) %>%
3. summarise(
4. median_tong_no_phai_tra = median(tong_no_phai_tra, na.rm = TRUE)
5. )
Giải thích kỹ thuật:
1–2. Dùng để nhóm dữ liệu theo hai biến phân loại: hiệu quả ROE và hiệu quả ROA.
3–5. Dùng để tính trung vị tổng nợ phải trả bằng công thức. Việc này giúp tìm giá trị đại diện cho từng nhóm, bỏ qua giá trị thiếu nếu có.
Nhận xét: Trung vị tổng nợ phải trả có sự phân hóa rõ rệt giữa các nhóm hiệu quả. Nhóm đạt hiệu quả Tốt ở cả hai tiêu chí (ROE Tốt / ROA Tốt) lại có mức nợ thấp nhất (341.898,60 Tỷ VND), cho thấy đây là nhóm sử dụng nợ hiệu quả nhất. Ngược lại, để đạt ROE Tốt nhưng ROA chỉ Trung bình, doanh nghiệp chấp nhận quy mô nợ trung vị lớn nhất (2.097.280,00 Tỷ VND). Điều này củng cố nhận định rằng hiệu suất sinh lời cao nhất (Tốt/Tốt) thường đi kèm với việc kiểm soát và sử dụng đòn bẩy một cách tối ưu chứ không phải mở rộng quy mô nợ vô hạn.
1. thongke1p <- BIDV %>%
2. group_by(hieu_qua_ROE) %>%
3. summarise(
4. Soquansat = n(),
5. Giatritrungbinh = mean(ROE, na.rm = TRUE),
6. min = min(ROE, na.rm = TRUE),
7. max = max(ROE, na.rm = TRUE),
8. Trungvi = median(ROE, na.rm = TRUE),
9. Dolechchuan = sd(ROE, na.rm = TRUE),
10. Q1 = quantile(ROE, 0.25, na.rm = TRUE),
11. Q3 = quantile(ROE, 0.75, na.rm = TRUE)
12. ) %>%
13. arrange(hieu_qua_ROE)
14. thongke1p
Giải thích kỹ thuật:
2–11. Nhóm dữ liệu theo giá trị của biến hiệu quả ROE, rồi tính lần lượt các chỉ số tổng hợp cho từng nhóm: số quan sát, giá trị trung bình, nhỏ nhất, lớn nhất, trung vị, độ lệch chuẩn, Q1 và Q3 của ROE; các phép tính đều bỏ qua giá trị thiếu.
12–13. Sắp xếp bảng kết quả theo thứ tự của biến nhóm, giúp trình bày dữ liệu dễ theo dõi.
Nhận xét: Thống kê mô tả ROE cho thấy Nhóm “Thấp” (2 quan sát) có ROE trung bình \(\text{0,0949}\) và độ lệch chuẩn thấp, phản ánh khả năng sinh lời yếu và ổn định. Nhóm “Trung bình” (8 quan sát) có ROE trung bình \(\text{0,1327}\), với độ lệch chuẩn \(\text{0,0121}\), thể hiện hiệu quả sinh lời ổn định nhưng chưa nổi bật. Nhóm “Tốt” (5 quan sát) đạt ROE trung bình cao nhất \(\text{0,1675}\) (dao động \(\text{0,1506}\) - \(\text{0,1789}\)), chứng tỏ mức sinh lời vượt trội và ổn định, khẳng định năng lực tài chính mạnh mẽ và khả năng tối ưu hóa vốn tốt.
1. thongke2p <- BIDV %>%
2. group_by(hieu_qua_ROA) %>%
3. summarise(
4. Soquansat = n(),
5. Giatritrungbinh = mean(ROA, na.rm = TRUE),
6. min = min(ROA, na.rm = TRUE),
7. max = max(ROA, na.rm = TRUE),
8. Trungvi = median(ROA, na.rm = TRUE),
9. Dolechchuan = sd(ROA, na.rm = TRUE),
10. Q1 = quantile(ROA, 0.25, na.rm = TRUE),
11. Q3 = quantile(ROA, 0.75, na.rm = TRUE)
12. ) %>%
13. arrange(hieu_qua_ROA)
14. thongke2p
Giải thích kỹ thuật:
2–11. Nhóm dữ liệu theo giá trị của biến hiệu quả ROA, rồi tính lần lượt các chỉ số tổng hợp cho từng nhóm: số quan sát, giá trị trung bình, nhỏ nhất, lớn nhất, trung vị, độ lệch chuẩn, Q1 và Q3 của ROA; các phép tính đều bỏ qua giá trị thiếu.
12–13. Sắp xếp bảng kết quả theo thứ tự của biến nhóm.
Nhận xét: Thống kê mô tả ROA cho thấy Nhóm “Thấp” (1 quan sát) có ROA trung bình \(\text{0,0047}\), phản ánh mức sinh lời rất thấp trên tổng tài sản và hiệu quả hoạt động còn hạn chế. Nhóm “Trung bình” (14 quan sát) có ROA trung bình \(\text{0,0073}\), với độ lệch chuẩn \(\text{0,0015}\) cho thấy mức sinh lời ổn định (dao động \(\text{0,0053}\) - \(\text{0,0097}\)). Tuy nhiên, mức ROA này vẫn còn thấp, phản ánh hiệu quả sử dụng tài sản chỉ ở mức trung bình, chưa tối ưu được giá trị gia tăng từ nguồn lực.
1. data_group1 <- BIDV %>%
2. group_by(nam, hieu_qua_ROE) %>%
3. summarise(
4. tong_loi_nhuan = sum(loi_nhuan_sau_thue, na.rm = TRUE),
5. tong_doanh_thu = sum(doanh_thu_lai_thuan, na.rm = TRUE)
6. )
7. data_group1
Giải thích kỹ thuật:
2–6. Nhóm dữ liệu theo hai biến năm và hiệu quả ROE, sau đó tổng hợp cho từng nhóm bằng cách tính tổng lợi nhuận sau thuế và tổng doanh thu lãi thuần; các phép tính đều bỏ qua giá trị thiếu nếu có.
Nhận xét: Giai đoạn \(\text{2010}\)–\(\text{2024}\) cho thấy hiệu quả ROE của BIDV có xu hướng cải thiện rõ rệt. Ban đầu, ngân hàng đạt ROE “Tốt” (\(\text{2010}\)) nhưng sau đó giảm xuống “Thấp” (\(\text{2012}\)) do biên lợi nhuận suy giảm (LNST còn \(\text{2,57}\) nghìn tỷ đồng). Giai đoạn \(\text{2013}\)–\(\text{2019}\) duy trì ROE “Trung bình” trong quá trình mở rộng quy mô. Từ \(\text{2020}\)–\(\text{2024}\), hiệu quả ROE cải thiện mạnh, với LNST tăng từ \(\text{18,35}\) nghìn tỷ (\(\text{2022}\)) lên \(\text{25,60}\) nghìn tỷ đồng (\(\text{2024}\)). Xu hướng này khẳng định BIDV đã chuyển sang tối ưu hóa hiệu quả sinh lời trên vốn, phản ánh năng lực quản trị ngày càng vững chắc.
1. data_group2 <- BIDV %>%
2. group_by(hieu_qua_ROE, hieu_qua_ROA) %>%
3. summarise(
4. trungbinh_tong_tai_san = mean(tong_tai_san, na.rm = TRUE),
5. trungbinh_loi_nhuan_sau_thue = mean(loi_nhuan_sau_thue, na.rm = TRUE),
6. trungbinh_ROE = mean(ROE, na.rm = TRUE),
7. trungbinh_ROA = mean(ROA, na.rm = TRUE)
8. )
9. data_group2
Giải thích kỹ thuật:
2–8. Nhóm dữ liệu theo hai biến hiệu quả ROE và hiệu quả ROA, sau đó tính đồng thời các giá trị trung bình cho từng nhóm: tổng tài sản, lợi nhuận sau thuế, ROE, ROA; các phép tính đều bỏ qua giá trị thiếu nếu có.
Nhận xét: Kết quả cho thấy mối quan hệ đồng biến chặt chẽ giữa ROA, ROE và quy mô tài sản bình quân của BIDV. Ở nhóm ROE/ROA Thấp, tài sản trung bình \(\text{1,52}\) triệu tỷ đồng chỉ mang lại \(\text{7,22}\) nghìn tỷ đồng LNST (ROA \(\text{0,0048}\)). Khi chuyển sang nhóm Tốt, tài sản bình quân đạt \(\text{1,68}\) triệu tỷ đồng, LNST tăng mạnh lên \(\text{15,21}\) nghìn tỷ đồng (ROA \(\text{0,00895}\)), tương đương tăng \(\text{88}\%\) so với nhóm Thấp. Điều này chứng tỏ khi quy mô tài sản mở rộng, BIDV tận dụng vốn tốt hơn và kiểm soát chi phí hiệu quả, nâng cao năng lực sinh lời không chỉ nhờ đòn bẩy mà còn từ hiệu quả hoạt động cốt lõi.
1. y_max <- max(BIDV$tong_tai_san) * 1.1
2. bp <- barplot(BIDV$tong_tai_san,
3. names.arg = BIDV$nam,
4. col = "blue",
5. space = 1.2,
6. width = 0.5,
7. ylim = c(0, y_max),
8. main = "Hình 1. Tổng tài sản BIDV theo năm",
9. xlab = "Năm",
10. ylab = "Tổng tài sản (VND)")
11. grid()
12. text(bp,
13. BIDV$tong_tai_san,
14. labels = formatC(BIDV$tong_tai_san, format = "e", digits = 2),
15. pos = 3,
16. offset = 0.2,
17. cex = 0.5,
18. font = 2)
Giải thích kỹ thuật:
2-10. Tạo biểu đồ cột (barplot) hiển thị tổng tài sản theo năm với: Trục x đặt tên theo năm. Màu cột xanh. Khoảng cách và bề rộng cột cỡ 1,2. Giới hạn trục y từ 0 đến giá trị trần . Tiêu đề, nhãn trục x và y rõ ràng, đầy đủ thông tin.
12-18. Ghi chú giá trị tổng tài sản phía trên mỗi cột theo dạng số khoa học, với vị trí, kích cỡ và font chữ phù hợp giúp dễ đọc và trực quan hóa thông tin.
Nhận xét: Biểu đồ ghi nhận Tổng tài sản của BIDV có xu hướng tăng trưởng mạnh mẽ và liên tục trong giai đoạn \(\text{2010}\)–\(\text{2024}\). Cụ thể, quy mô tài sản đã tăng hơn \(\text{7}\) lần, từ khoảng \(\text{385.000}\) tỷ VND (\(\text{2010}\)) lên \(\text{2.76}\) triệu tỷ VND (\(\text{2024}\)). Tốc độ tăng trưởng này được nhận định là đặc biệt nhanh sau năm \(\text{2018}\). Về ý nghĩa kinh tế, sự gia tăng này khẳng định chiến lược mở rộng quy mô thành công của BIDV. Qua đó, ngân hàng đã củng cố vị thế dẫn đầu và tạo nền tảng tài chính vững chắc để tiếp tục mở rộng tín dụng và sinh lời trong tương lai.
1. boxplot(BIDV$chi_phi_hoat_dong,
2. main = "Hình 2. Chi phí hoạt động",
3. ylab = "Chi phí hoạt động (VND)",
4. col = "violet")
5. grid()
6. stripchart(BIDV$chi_phi_hoat_dong,
7. method = "jitter",
8. add = TRUE,
9. vertical = TRUE,
10. col = "red",
11. pch = 20)
Giải thích kỹ thuật:
1-4. Vẽ biểu đồ hộp với màu nền là violet, thể hiện các giá trị trung vị, khoảng tứ phân vị và các điểm ngoại lai.
6-11. Thêm stripchart chồng lên boxplot để hiển thị từng điểm dữ liệu
trên đồ thị. method = "jitter" giúp các điểm không bị đè
lên nhau khi có giá trị trùng. Chấm tròn đầy (pch = 20) và
màu đỏ (col = "red").
Nhận xét: Biểu đồ Boxplot cho thấy Chi phí hoạt động (CPHĐ) của BIDV (\(\text{2010}\)–\(\text{2024}\)) có biến động đáng kể. Giá trị trung vị CPHĐ là khoảng \(-\text{15.000}\) tỷ VND, thể hiện mức chi phí tiêu biểu. Khoảng \(\text{50}\%\) chi phí tập trung trong một biên độ biến động rộng (\(\text{IQR}\) từ \(-\text{17.000}\) đến \(-\text{7.500}\) tỷ VND). Về kinh tế, điều này chỉ ra BIDV là ngân hàng quy mô lớn với chi phí vận hành cao để duy trì mạng lưới và đầu tư công nghệ. Ngân hàng cần quản lý chi phí chặt chẽ để tối ưu hóa lợi nhuận cuối cùng.
1. plot(BIDV$tong_tai_san,
2. BIDV$loi_nhuan_sau_thue,
3. pch = 19,
4. col = "navy",
5. main = "Hình 3. Tổng tài sản và lợi nhuận sau thuế",
6. xlab = "Tổng tài sản",
7. ylab = "Lợi nhuận sau thuế (VND)")
8. grid()
9. abline(lm(loi_nhuan_sau_thue ~ tong_tai_san, data = BIDV),
10. col = "darkred",
11. lwd = 2)
Giải thích kỹ thuật theo số thứ tự code:
1–7. Vẽ biểu đồ phân tán. Các điểm trên đồ thị được hiển thị bằng chấm tròn đầy (pch = 19) và màu xanh navy (col = “navy”). Đặt tiêu đề, nhãn trục x và y nhằm mô tả rõ nội dung biểu đồ.
9–11. Thêm đường hồi quy tuyến tính lên biểu đồ bằng
abline(lm(...)), đường này được tô màu đỏ đậm (col =
“darkred”) và vẽ nét dày (lwd = 2).
Nhận xét: Biểu đồ Scatter Plot cho thấy mối tương quan dương mạnh mẽ giữa Tổng tài sản và Lợi nhuận sau thuế (LN sau thuế) của BIDV. Đường hồi quy tuyến tính khẳng định: khi Tổng tài sản tăng, LN sau thuế có xu hướng tăng theo, đặc biệt chặt chẽ ở mức tài sản cao (trên \(\text{2.000.000}\) tỷ VND). Mối tương quan này chứng minh chiến lược mở rộng quy mô của BIDV là hiệu quả. Sự gia tăng tài sản đã được chuyển hóa thành lợi nhuận ròng, khẳng định năng lực sinh lời và khả năng vận hành của ngân hàng.
1. vals <- rbind(BIDV$von_chu_so_huu,
2. BIDV$tong_no_phai_tra)
3. barplot(vals,
4. beside = TRUE,
5. names.arg = BIDV$nam,
6. col = c("red", "green"),
7. main = "Hình 4. Vốn chủ sở hữu và Tổng nợ phải trả theo năm",
8. xlab = "Năm",
9. ylab = "Giá trị (VND)")
10. grid()
11. legend("topright",
12. legend = c("Vốn chủ sở hữu", "Nợ phải trả"),
13. fill = c("red", "green"),
14. bty = "n")
Giải thích kỹ thuật:
1–2. Ghép hai biến “vốn chủ sở hữu” và “tổng nợ phải trả” nhiều năm vào ma trận để vẽ cột nhóm.
3–4. Vẽ biểu đồ cột nhóm (barplot), mỗi năm có hai cột đặt cạnh nhau (beside = TRUE), màu “red” cho vốn, “green” cho nợ, so sánh trực quan qua các năm.
Đặt nhãn năm cho trục x.
Mỗi biến là một màu phân biệt, dễ theo dõi.
7–9. Thêm tiêu đề, nhãn trục x/y cho đủ ý nghĩa của biểu đồ.
11–14. Thêm chú giải màu ở góc trên, làm rõ ý nghĩa từng cột màu.
Nhận xét: Biểu đồ cột nhóm cho thấy Nợ phải trả (NPT) của BIDV luôn chiếm ưu thế tuyệt đối và tăng trưởng với quy mô vượt trội so với Vốn chủ sở hữu (VCSH) trong giai đoạn \(\text{2010}\)–\(\text{2024}\). NPT đạt khoảng \(\text{2.760.000}\) tỷ VND (năm \(\text{2024}\)), trong khi VCSH chỉ tăng nhẹ lên \(\text{140.000}\) tỷ VND. Hàm ý kinh tế cho thấy BIDV hoạt động chủ yếu dựa vào tiền gửi khách hàng, phản ánh đòn bẩy tài chính rất cao. Đòn bẩy này giúp tăng khả năng sinh lời (ROE) nhưng đồng thời làm tăng rủi ro nếu xảy ra sự cố, do đó quản lý an toàn vốn là ưu tiên hàng đầu
1. matplot(BIDV$nam,
2. cbind(BIDV$loi_nhuan_sau_thue,
3. BIDV$doanh_thu_lai_thuan,
4. BIDV$chi_phi_hoat_dong),
5. type = "l",
6. lwd = 2,
7. col = c("darkred", "blue", "#FFD700"),
8. lty = 1,
9. main = "Hình 5. Lợi nhuận sau thuế, Doanh thu lãi thuần, Chi phí hoạt động",
10. xlab = "Năm",
11. ylab = "Giá trị (VND)")
12. grid()
13. legend("topright",
14. legend = c("Lợi nhuận sau thuế", "Doanh thu lãi thuần", "Chi phí hoạt động"),
15. col = c("darkred", "blue", "#FFD700"),
16. lty = 1,
17. lwd = 2,
18. bty = "n")
Giải thích kỹ thuật theo số thứ tự code:
1-4. Vẽ biểu đồ đường cho ba chỉ số theo thời gian bằng
matplot, các đường nét liền, độ dày 2, màu lần lượt là đỏ
đậm (“darkred”), xanh dương (“blue”), vàng (“#FFD700”).
5-11. Đặt tiêu đề, nhãn trục x và y giúp biểu đồ rõ ý nghĩa.
13-18. Thêm chú thích (legend) ở góc trên phải, ghi rõ tên và màu từng biến.
Nhận xét: Biểu đồ đường so sánh cho thấy Doanh thu lãi thuần (DT lãi thuần) và Lợi nhuận sau thuế (LNST) của BIDV đều có xu hướng tăng trưởng dương rõ rệt (\(\text{2010}\)–\(\text{2024}\)), đặc biệt tăng tốc sau năm \(\text{2020}\). DT lãi thuần duy trì quy mô lớn nhất (\(\text{63.000}\) tỷ VND năm \(\text{2024}\)), trong khi Chi phí hoạt động (CP hoạt động) có xu hướng tăng chậm hơn. Hàm ý kinh tế cho thấy: Doanh thu cốt lõi tăng nhanh hơn chi phí, dẫn đến LNST tăng trưởng mạnh (\(\text{29.000}\) tỷ VND năm \(\text{2024}\)). Điều này khẳng định BIDV đã quản lý chi phí hiệu quả, củng cố khả năng sinh lời bền vững.
1. vals_3_other <- rbind(BIDV$thu_nhap_phi_dich_vu,
2. BIDV$chi_phi_tin_dung,
3. BIDV$loi_nhuan_sau_thue)
4. par(mar = c(9, 5, 4, 4), xpd = TRUE)
5. bp <- barplot(vals_3_other,
6. beside = TRUE,
7. names.arg = BIDV$nam,
8. col = c("darkorange", "#32CD32", "#E6E"),
9. main = "Hình 6. Thu nhập phí dịch vụ, chi phí tín dụng, lợi nhuận sau thuế",
10. xlab = "Năm",
11. ylab = "Giá trị (VND)")
12. grid()
13. legend("bottom",
14. inset = c(0, -0.45),
15. horiz = TRUE,
16. legend = c("Thu nhập phí dịch vụ", "Chi phí tín dụng", "Lợi nhuận sau thuế"),
17. fill = c("darkorange", "#32CD32", "#E6E"),
18. bty = "n",
19. cex = 0.9,
20. x.intersp = 0.8)
Giải thích kỹ thuật theo số thứ tự code:
1–3. Gộp số liệu ba biến thành ma trận để vẽ biểu đồ cột nhóm song song.
Thiết lập lề rộng để dễ bố trí chú thích dưới biểu đồ.
5–11. Vẽ barplot ba chỉ số cho từng năm, ba màu: cam (“darkorange”), xanh lá (“#32CD32”), tím nhạt (“#E6E”); đặt tiêu đề, trục.
Thêm lưới giúp so sánh giá trị trên trục y.
13–20. Thêm chú thích ngang ở dưới, giải thích từng màu ứng với từng chỉ số tài chính, giúp người xem phân biệt rõ.
Nhận xét: Biểu đồ so sánh cho thấy LNST (\(\text{28.000}\) tỷ VND năm \(\text{2024}\)) và Thu nhập phí DV của BIDV đều có xu hướng tăng trưởng tích cực (\(\text{2010}\)–\(\text{2024}\)), thể hiện đa dạng hóa nguồn thu thành công. Tuy nhiên, Chi phí tín dụng (CPTD) có mức biến động lớn và thường xuyên rất cao (chạm \(-\text{20.000}\) tỷ VND năm \(\text{2021}\)), phản ánh các khoản trích lập dự phòng lớn. Hàm ý kinh tế cho thấy ngân hàng phải quản lý rủi ro tín dụng chặt chẽ để các khoản trích lập không ăn mòn lợi nhuận. Sự tăng trưởng vượt trội của LNST sau \(\text{2021}\) khẳng định BIDV đã kiểm soát rủi ro hiệu quả để đạt lợi nhuận ròng cao.
1. ggplot(BIDV, aes(x = nam, y = loi_nhuan_sau_thue)) +
2. geom_line(color = "orangered", size = 1.7) +
3. geom_point(color = "magenta", size = 4) +
4. geom_text(aes(label = formatC(loi_nhuan_sau_thue,
5. format = 'e',
6. digits = 2)),
7. vjust = -1.2,
8. color = "navy",
9. size = 3.8) +
10. labs(title = "Hình 7. Lợi nhuận sau thuế BIDV theo năm",
11. x = "Năm",
12. y = "Lợi nhuận sau thuế (VND)") +
13. theme_minimal(base_size = 14)
Giải thích kỹ thuật theo số thứ tự code:
Dùng ggplot() chọn dữ liệu, gán trục x là năm, trục
y là lợi nhuận sau thuế.
Vẽ đường biểu diễn xu hướng lợi nhuận theo năm bằng màu cam đỏ, nét dày, giúp nổi bật diễn biến chính.
Vẽ các điểm dữ liệu màu hồng tím, kích thước lớn để thấy rõ từng năm. 4–9. Thêm nhãn số liệu trên từng điểm, định dạng số khoa học, màu xanh đậm cho dễ phân biệt.
10–12. Đặt tiêu đề và nhãn trục x, y để biểu đồ đầy đủ thông tin.
Nhận xét: Biểu đồ đường cho thấy LNST của BIDV có xu hướng tăng trưởng mạnh mẽ và gần như liên tục từ \(\text{2010}\) đến \(\text{2024}\). Mặc dù có sụt giảm nhẹ trong giai đoạn \(\text{2019}\)–\(\text{2020}\), LNST đã tăng trưởng đột phá sau năm \(\text{2020}\). LNST tăng từ \(\text{7.220}\) tỷ VND lên mức kỷ lục khoảng \(\text{25.000}\) tỷ VND (\(\text{2024}\)), tăng gấp \(\text{3.5}\) lần trong \(\text{4}\) năm. Sự tăng trưởng này khẳng định hiệu quả hoạt động cốt lõi và năng lực kiểm soát chi phí của BIDV. Điều này chứng minh ngân hàng đã thành công trong việc tối ưu hóa hoạt động và tạo ra giá trị lớn cho cổ đông.
1. ggplot(BIDV, aes(x = nam, y = ROA)) +
2. geom_line(color = "purple", size = 1.6) +
3. geom_point(color = "deepskyblue", size = 3) +
4. geom_text(aes(label = round(ROA, 4)),
5. vjust = -1.3,
6. color = "magenta",
7. size = 3.5) +
8. labs(title = "Hình 8. ROA của BIDV qua các năm",
9. x = "Năm",
10. y = "ROA") +
11. theme_minimal(base_size = 14)
Giải thích kỹ thuật theo số thứ tự code:
Dùng ggplot() chọn dữ liệu, gán trục x là năm, trục
y là ROA.
Vẽ đường biểu diễn xu hướng ROA các năm, màu tím, nét dày.
Vẽ các điểm thực tế từng năm bằng chấm tròn xanh nước biển.
4–7. Gắn nhãn giá trị ROA tại từng điểm (làm tròn bốn chữ số, màu magenta, lệch lên cho dễ nhìn).
8–10. Đặt tiêu đề và nhãn trục, giúp biểu đồ dễ hiểu, rõ nội dung.
Nhận xét: Biểu đồ đường thể hiện Tỷ suất sinh lời trên Tổng tài sản (ROA) của BIDV có biến động rõ rệt qua các chu kỳ (\(\text{2010}\)–\(\text{2024}\)). ROA đạt đỉnh (\(\text{0.96}\%\)) vào \(\text{2022}\) và chạm đáy (\(\text{0.48}\%\)) vào \(\text{2020}\). Xu hướng chia làm hai giai đoạn: \(\text{2010}\)–\(\text{2020}\) giảm sút và \(\text{2021}\)–\(\text{2024}\) phục hồi mạnh mẽ. Mức ROA thấp là đặc điểm chung của các ngân hàng lớn. Sự phục hồi sau \(\text{2020}\) khẳng định hiệu quả quản lý tài sản đã được cải thiện, cho thấy BIDV đã tận dụng vốn hiệu quả hơn, củng cố năng lực sinh lời tổng thể.
1. ggplot(BIDV, aes(
2. x = factor(substr(nam, 3, 4)),
3. y = chi_phi_tin_dung,
4. fill = chi_phi_tin_dung
5. )) +
6. geom_bar(stat = "identity") +
7. geom_text(
8. aes(label = formatC(chi_phi_tin_dung, format = 'e', digits = 2)),
9. vjust = -0.3,
10. color = "darkblue",
11. size = 3.2
12. ) +
13. scale_fill_gradient(low = "yellow",
14. high = "purple") +
15. labs(
16. title = "Hình 9. Chi phí tín dụng của BIDV qua các năm",
17. x = "Năm",
18. y = "Chi phí tín dụng (VND)"
19. ) +
20. theme_minimal(base_size = 14)
Giải thích kỹ thuật:
1–4. Dùng ggplot() vẽ biểu đồ cột cho chi phí tín dụng
từng năm, trục x là hai số cuối của năm, trục y là chi phí tín dụng. Màu
cột chuyển từ vàng (thấp) đến tím (cao) theo giá trị chi phí.
7–11. Thêm nhãn số khoa học trên mỗi cột, màu xanh đậm, dễ nhìn.
13–14. Đổi màu cột theo mức chi phí: giá trị thấp màu vàng, giá trị cao màu tím.
15–20. Đặt tiêu đề, nhãn trục, giao diện tối giản cho biểu đồ rõ ràng.
Nhận xét: Biểu đồ cột cho thấy Chi phí tín dụng (CPTD) của BIDV (khoản trích lập dự phòng) có xu hướng tăng quy mô tuyệt đối và luôn mang giá trị âm (\(\text{2010}\)–\(\text{2024}\)). CPTD tăng từ \(-\text{1.320}\) tỷ VND (\(\text{2010}\)) lên đỉnh \(-\text{29.500}\) tỷ VND (\(\text{2021}\)), sau đó duy trì ở mức rất cao (khoảng \(-\text{20.000}\) tỷ VND). Sự gia tăng này phản ánh tăng trưởng dư nợ và quản lý rủi ro thận trọng của BIDV. Tuy nhiên, CPTD ở mức cao gần đây cho thấy áp lực từ nợ xấu hoặc ngân hàng đang chủ động tăng cường dự phòng, điều này làm giảm trực tiếp lợi nhuận ròng trong ngắn hạn.
1. ggplot(BIDV, aes(x = tien_tuong_duong_cuoi_ky)) +
2. geom_histogram(bins = 7,
3. fill = "springgreen",
4. color = "gold3",
5. size = 1.1) +
6. geom_rug(color = "darkorange", size = 1.2) +
7. labs(
8. title = "Hình 10. Tiền và tương đương tiền cuối kỳ BIDV",
9. x = "Tiền cuối kỳ (VND)",
10. y = "Tần suất"
11. ) +
12. theme_minimal(base_size = 14)
Giải thích kỹ thuật theo số thứ tự code:
ggplot() chọn dữ liệu, trục x là giá trị “tiền
tương đương cuối kỳ”.2–5. Vẽ histogram phân phối tiền cuối kỳ, chia thành 7 khoảng, cột màu xanh lá non (springgreen), viền cột vàng (gold3), nét viền dày.
7–11. Đặt tiêu đề, nhãn trục x, trục y để mô tả rõ nội dung.
theme_minimal), dễ
nhìn.Nhận xét: Biểu đồ Histogram cho thấy Tiền và tương đương tiền cuối kỳ (TTCK) của BIDV có phân phối lệch phải, với phần lớn dữ liệu (6 năm) tập trung ở mức thấp (dưới \(\text{50.000}\) tỷ VND). Mặc dù có những năm TTCK đạt mức rất cao (trên \(\text{300.000}\) tỷ VND), tần suất là rất thấp. Hàm ý kinh tế cho thấy BIDV tối ưu hóa sử dụng vốn bằng cách nhanh chóng chuyển tiền mặt vào các tài sản sinh lời (như tín dụng). Tuy nhiên, sự xuất hiện các đỉnh cao TTCK phản ánh những thời điểm thận trọng về thanh khoản hoặc chờ đợi cơ hội đầu tư, khẳng định quản lý thanh khoản linh hoạt.
1. roe_data <- BIDV %>%
2. count(hieu_qua_ROE) %>%
3. mutate(pct = n / sum(n) * 100,
4. label = paste0(round(pct, 1), "%"))
5. ggplot(roe_data, aes(x = "", y = pct, fill = hieu_qua_ROE)) +
6. geom_col(width = 1, color = "white") +
7. coord_polar(theta = "y") +
8. geom_text(aes(label = label),
9. position = position_stack(vjust = 0.5),
10. color = "black", size = 4, fontface = "bold") +
11. scale_fill_manual(values = c("#00FFFF", "#FF00FF", "#39FF14")) +
12. theme_void() +
13. labs(title = "Hình 11. Biểu đồ tròn thể hiện các mức hiệu quả ROE", fill = "Mức ROE")
Giải thích kỹ thuật:
1–4. Nhóm dữ liệu theo mức hiệu quả ROE, đếm và tính phần trăm của từng mức; tạo nhãn phần trăm để hiển thị trên biểu đồ.
5–6. Vẽ biểu đồ tròn bằng ggplot2, mỗi lát đại diện một
mức ROE, màu phân biệt theo từng nhóm; cột rộng, viền trắng cho rõ các
lát.
coord_polar(theta = "y").8–10. Thêm nhãn phần trăm vào mỗi lát, căn vị trí giữa lát, chữ đậm, cỡ lớn, dễ đọc.
Chỉ định thủ công màu các nhóm ROE với ba tông màu nổi bật.
Loại bỏ toàn bộ trục, lưới phụ cho biểu đồ thoáng với
theme_void().
Thêm tiêu đề, chú giải tên nhóm mức ROE.
Nhận xét: Biểu đồ Pie Chart mô tả Hiệu quả ROE của BIDV (\(\text{2010}\)–\(\text{2024}\)) với phần lớn các năm nằm ở mức Trung bình (\(\text{53.3}\%\)) và Tốt (\(\text{33.3}\%\)). Tổng cộng \(\text{86.6}\%\) hoạt động cho thấy hiệu quả sinh lời trên vốn chủ sở hữu ổn định và tốt. Tỷ lệ Thấp chỉ chiếm \(\text{13.3}\%\) cho thấy khả năng sinh lời hiếm khi đáng báo động. Hàm ý kinh tế khẳng định BIDV đã sử dụng đòn bẩy tài chính hiệu quả để tối ưu hóa lợi nhuận ròng cho cổ đông và củng cố khả năng tạo ra giá trị cho nhà đầu tư.
1. ggplot(BIDV, aes(x = doanh_thu_lai_thuan, y = ROA)) +
2. geom_point(color = "deepskyblue", size = 5, alpha = 0.9) +
3. geom_smooth(method = "lm", se = FALSE, color = "magenta", linetype = "dashed", size = 1.2) +
4. labs(title = "Hình 12. Doanh thu lãi thuần và ROA BIDV",
5. x = "Doanh thu lãi thuần (VND)", y = "ROA") +
6. theme_minimal(base_size = 14)
Giải thích kỹ thuật theo số thứ tự dòng code:
Khởi tạo ggplot với dữ liệu BIDV, trục x là doanh thu lãi thuần, trục y là ROA.
Vẽ các điểm (scatter), mỗi quan sát là một chấm màu xanh nước biển, cỡ lớn, alpha 0,9 giúp dễ nhìn.
Vẽ đường hồi quy tuyến tính (lm), nét đứt, màu magenta, dày và bỏ phần bóng dự báo (se = FALSE).
4–5. Đặt tiêu đề và nhãn hai trục cho biểu đồ thể hiện rõ ý nghĩa.
Nhận xét: Biểu đồ Scatter Plot mô tả mối tương quan dương không mạnh giữa DT lãi thuần và ROA của BIDV. Sự phân tán rộng của dữ liệu ở mức DT lãi thuần \(\text{50.000}\) tỷ VND cho thấy ROA có thể là \(\text{0.9}\%\) (cao) hoặc \(\text{0.6}\%\) (thấp). Hàm ý kinh tế cho thấy sự gia tăng DT lãi thuần chưa tự động đảm bảo cải thiện ROA. Điều này ngụ ý rằng, các yếu tố khác như quản lý chi phí hoạt động và chi phí tín dụng có ảnh hưởng lớn hơn đến hiệu suất tổng thể của BIDV.
1. df_roa_roe <- BIDV %>%
2. select(nam, ROA, ROE) %>%
3. pivot_longer(-nam, names_to = "bien", values_to = "giatri")
4. ggplot(df_roa_roe, aes(x = nam, y = giatri, color = bien, group = bien)) +
5. geom_line(size = 1.6) +
6. geom_point(size = 3.5, shape = 21, fill = "gold") +
7. labs(title = "Hình 13. Biểu đồ đường của ROA và ROE", x = "Năm", y = "Tỷ suất (%)") +
8. scale_color_manual(values = c("magenta", "deepskyblue")) +
9. theme_minimal(base_size = 14)
Giải thích kỹ thuật:
1–3. Tạo bảng mới gồm năm, ROA, ROE và chuyển dữ liệu thành dạng dài để vẽ hai chỉ số trên cùng trục.
Khởi tạo biểu đồ, trục x là năm, y là giá trị; phân biệt ROA/ROE bằng màu và nhóm.
Vẽ hai đường biểu diễn ROA, ROE với nét dày, so sánh dễ dàng.
Thêm các điểm thực tế, nền vàng giúp nổi bật từng giá trị.
Đặt tiêu đề, nhãn trục x/y.
Tô màu riêng ROA (magenta) và ROE (deepskyblue).
Dùng giao diện tối giản cho biểu đồ sáng, dễ nhìn.
Nhận xét: Biểu đồ so sánh cho thấy ROE luôn cao hơn ROA một khoảng cách rất lớn (\(\text{2010}\)–\(\text{2024}\)). Về thống kê, ROA duy trì ở mức rất thấp, gần \(\text{1}\%\), trong khi ROE biến động mạnh và đạt đỉnh gần \(\text{17}\%\) (\(\text{2022}\)–\(\text{2024}\)). Cả hai chỉ số đều đạt đáy khoảng năm \(\text{2020}\), sau đó phục hồi và tăng trưởng đột phá sau \(\text{2021}\). Hàm ý kinh tế: Khoảng cách lớn này khẳng định BIDV đã sử dụng đòn bẩy tài chính cao hiệu quả để khuếch đại lợi nhuận cho cổ đông. Mức ROE cao sau \(\text{2021}\) cho thấy hiệu suất sinh lời tuyệt vời trên vốn cổ đông, củng cố vị thế tài chính và khả năng tạo ra giá trị lớn.
1. df_bar2 <- BIDV %>%
2. select(nam, thu_nhap_phi_dich_vu, chi_phi_hoat_dong) %>%
3. pivot_longer(-nam, names_to = "bien", values_to = "giatri")
4. ggplot(df_bar2, aes(x = factor(substr(nam, 3, 4)),
5. y = giatri,
6. fill = bien)) +
7. geom_bar(stat = "identity", position = "dodge") +
8. scale_fill_manual(values = c("orange", "royalblue")) +
9. labs(title = "Hình 14. Phí dịch vụ và Chi phí hoạt động của BIDV",
10. x = "Năm", y = "Giá trị (VND)") +
11. theme_minimal(base_size = 14)
Giải thích kỹ thuật theo số thứ tự dòng code:
1–3. Tạo bảng dữ liệu dạng dài gồm năm, thu nhập phí dịch vụ, chi phí hoạt động.
4–6. Vẽ biểu đồ cột nhóm: mỗi năm có hai cột đứng cạnh, màu cam cho phí dịch vụ, xanh dương cho chi phí hoạt động.
Hiển thị hai cột nhóm cạnh nhau giúp so sánh hai chỉ số mỗi năm.
Đặt màu riêng cho từng biến để dễ phân biệt.
9–10. Thêm tiêu đề, nhãn trục x/y cho rõ nội dung.
Nhận xét: Biểu đồ so sánh cho thấy cả Thu nhập phí DV và Chi phí hoạt động (CPHĐ) của BIDV đều có xu hướng tăng quy mô tuyệt đối (\(\text{2010}\)–\(\text{2024}\)). Thu nhập phí DV tăng ổn định từ \(\text{2.410}\) tỷ VND lên \(\text{13.500}\) tỷ VND, khẳng định đa dạng hóa nguồn thu hiệu quả. Cùng lúc đó, CPHĐ tăng từ \(-\text{5.550}\) tỷ VND lên \(-\text{28.700}\) tỷ VND, phản ánh ngân hàng đầu tư lớn vào công nghệ, nhân sự và mạng lưới. Sự tăng trưởng ổn định của Thu nhập phí DV giúp BIDV kiểm soát hiệu quả đòn bẩy chi phí, củng cố khả năng sinh lời bền vững.
1. df_line3_gapkhuc <- BIDV %>%
2. select(nam, tong_tai_san, tong_no_phai_tra, du_no_cho_vay) %>%
3. pivot_longer(-nam, names_to = "bien", values_to = "giatri")
4. ggplot(df_line3_gapkhuc, aes(x = nam, y = giatri, color = bien, group = bien)) +
5. geom_line(size = 1.1, linetype = "solid") +
6. geom_point(size = 3, shape = 16) +
7. labs(title = "Hình 15. Tổng tài sản - Tổng nợ phải trả - Dư nợ cho vay",
8. x = "Năm", y = "Giá trị (VND)") +
9. scale_color_manual(values = c("magenta", "cyan", "gold")) +
10. theme_minimal()
Giải thích kỹ thuật theo số thứ tự dòng code:
1–3. Tạo dữ liệu dài gồm năm, tổng tài sản, tổng nợ, dư nợ cho vay để vẽ ba chỉ số tài chính trên cùng biểu đồ.
Vẽ biểu đồ đường với ggplot, phân biệt màu và nhóm cho từng chỉ số.
Vẽ ba đường nét liền, dễ so sánh xu hướng qua các năm.
Thêm các điểm thực tế trên mỗi đường để nổi bật từng giá
7–8. Thêm tiêu đề, nhãn trục x/y rõ ràng (năm, giá trị).
Chọn màu riêng cho từng chỉ số: magenta (tổng tài sản), cyan (tổng nợ phải trả), gold (dư nợ cho vay).
Dùng giao diện tối giản để biểu đồ sáng, dễ đọc.
Nhận xét: Đồ thị đường cho thấy Tổng tài sản, Nợ phải trả (NPT), và Dư nợ cho vay của BIDV đều tăng trưởng cực kỳ mạnh mẽ (\(\text{2010}\)–\(\text{2024}\)), tăng từ khoảng \(\text{385.000}\) tỷ VND lên \(\text{2.760.000}\) tỷ VND. Ba chỉ số này có mối tương quan rất chặt chẽ và gần như bằng nhau. Hàm ý kinh tế khẳng định BIDV liên tục phát triển và hoạt động với đòn bẩy rất cao, dựa chủ yếu vào tiền huy động (NPT). Sự tăng trưởng sát sao của Dư nợ cho vay chứng minh ngân hàng sử dụng tiền huy động hiệu quả để đẩy mạnh tín dụng, đây là nguồn sinh lời chính giúp đạt quy mô khổng lồ.
1. df_bar <- BIDV %>%
2. select(nam, doanh_thu_lai_thuan, chi_phi_hoat_dong, loi_nhuan_truoc_thue) %>%
3. pivot_longer(-nam, names_to = "bien", values_to = "giatri") %>%
4. mutate(nam_2so = substr(as.character(nam), 3, 4))
5. ggplot(df_bar, aes(x=nam_2so, y=giatri, fill=bien)) +
6. geom_bar(stat="identity", position=position_dodge(width=0.9), width=0.7) +
7. geom_text(aes(label = formatC(giatri, format='e', digits=2)),
8. position = position_dodge(width=0.9), vjust=-0.4, color="navy", size=2.2, fontface="bold") +
9. scale_fill_manual(values=c("goldenrod","mediumorchid","firebrick")) +
10. labs(title="Hình 16. Biểu đồ cột ba cho 3 biến của BIDV", x="Năm", y="Giá trị (VND)") +
11. theme_light(base_size=15) +
12. theme(panel.background=element_rect(fill="mintcream"),
13. axis.text.x=element_text(size=13, face="bold", color="salmon"),
14. legend.position="top")
Giải thích kỹ thuật theo số thứ tự dòng code:
1–4. Tạo dữ liệu dài gồm năm, doanh thu lãi thuần, chi phí hoạt động, lợi nhuận trước thuế; thêm biến hai số cuối của năm để cột trục x ngắn gọn.
5–6. Vẽ biểu đồ cột nhóm cạnh nhau; mỗi năm có ba cột với ba màu rõ rệt (vàng đậm, tím nhạt, đỏ gạch) đại diện cho từng biến tài chính; chiều rộng cột vừa phải.
7–8. Thêm nhãn số liệu dạng khoa học trên từng cột (màu xanh đậm, font đậm).
9–10. Đặt màu cột cho mỗi biến, tiêu đề và nhãn trục x/y giúp biểu đồ rõ ràng.
11–13. Dùng theme sáng, nền nhẹ; chỉnh font, màu trục x nổi bật, đưa chú thích lên trên làm nội dung biểu đồ rõ ràng.
Nhận xét: Biểu đồ so sánh cho thấy DT lãi thuần và Lợi nhuận trước thuế (LNTT) của BIDV đều có xu hướng tăng trưởng mạnh mẽ, đặc biệt tăng tốc sau năm \(\text{2020}\). DT lãi thuần duy trì quy mô lớn nhất (\(\text{58.000}\) tỷ VND năm \(\text{2024}\)), trong khi CPHĐ cũng tăng quy mô chi tiêu (đạt \(-\text{26.600}\) tỷ VND). Hàm ý kinh tế khẳng định hiệu quả hoạt động cốt lõi: Doanh thu tăng trưởng nhanh hơn chi phí, dẫn đến LNTT tăng mạnh (\(\text{32.000}\) tỷ VND năm \(\text{2024}\)). Điều này chứng minh BIDV đã quản lý hiệu quả đòn bẩy chi phí và duy trì khả năng sinh lời bền vững.
1. df_log5 <- BIDV %>%
2. select(nam, chi_phi_hoat_dong, chi_phi_tin_dung, du_phong_rui_ro, thu_nhap_phi_dich_vu, lc_tien_thuan_hdkd) %>%
3. pivot_longer(-nam, names_to = "bien", values_to = "giatri") %>%
4. mutate(log_giatri = log(abs(giatri)+1),
5. nam_2so = substr(as.character(nam), 3, 4))
6. ggplot(df_log5, aes(x = nam_2so, y = log_giatri, color = bien, group = bien)) +
7. geom_line(size = 1.2) +
8. geom_point(size = 2.7) +
9. scale_color_brewer(palette = "Set1") +
10. labs(title = "Hình 17. Line plot (log): 5 biến của BIDV", x = "Năm", y = "log(Giá trị") +
11. theme_light(base_size = 15) +
12. theme(panel.background = element_rect(fill = "azure"),
13. axis.text.x = element_text(size = 12, face = "bold", color = "forestgreen"),
14. legend.position = "top")
Giải thích kỹ thuật theo số thứ tự dòng code:
1–2. Chọn các biến tài chính nhiều giá trị lớn và chênh lệch, chuyển sang dữ liệu dài để vẽ nhiều biến trên cùng một biểu đồ.
3–4. Lấy logarit giá trị (log(abs(x)+1)) để dễ so sánh các biến có độ lớn khác nhau, lấy hai số cuối của năm cho trục x gọn.
5–6. Vẽ biểu đồ đường cho 5 biến, phân biệt rõ từng biến bằng màu sắc bằng bảng màu Set1.
7–8. Thêm điểm dữ liệu trên mỗi đường giúp quan sát dễ hơn.
9–13. Đặt màu riêng, tiêu đề, nhãn trục, chỉnh nền và font cho biểu đồ sáng, trục x dễ đọc, chú thích trên.
Nhận xét: Biểu đồ đường cho thấy xu hướng tăng trưởng dương rõ rệt của hầu hết năm chỉ số tài chính (log-transform) của BIDV (\(\text{2010}\)–\(\text{2024}\)), phản ánh quy mô hoạt động mở rộng. Trong đó, Dòng tiền thuần HĐKD có biến động mạnh nhất, sụt giảm giai đoạn \(\text{2011}\)–\(\text{2013}\) (từ \(\text{30.23}\) xuống \(\text{28.51}\) trên thang log), trước khi phục hồi và đạt đỉnh (\(\text{32.52}\) năm \(\text{2022}\)). Thu nhập phí dịch vụ tăng trưởng ổn định nhưng ở mức thấp nhất. Sự phục hồi và duy trì mức cao của các chỉ số trong các năm cuối khẳng định BIDV đã cải thiện đáng kể hiệu quả hoạt động tổng thể, đặc biệt là chất lượng lợi nhuận.
1. df_heatmap <- BIDV %>%
2. count(hieu_qua_ROE, hieu_qua_ROA, name = "So_luong")
3. ggplot(df_heatmap, aes(x=hieu_qua_ROA, y=hieu_qua_ROE, fill=So_luong)) +
4. geom_tile(color="white", width=0.95, height=0.95) +
5. scale_fill_gradient(low="#FFF7EC", high="#7F0000") +
6. labs(title="Hình 18. Số lượng theo hiệu quả ROE và ROA",
7. x="Hiệu quả ROA",
8. y="Hiệu quả ROE",
9. fill="Số lượng") +
10. theme_minimal(base_size=16) +
11. theme(axis.text.x=element_text(size=14, face="bold", color="brown"),
12. axis.text.y=element_text(size=14, face="bold", color="navy"),
13. panel.background=element_rect(fill="antiquewhite"))
Giải thích kỹ thuật:
1–2. Đếm số lượng mẫu ứng với từng nhóm hiệu quả ROE và ROA, tạo dữ liệu cho heatmap.
3–4. Vẽ biểu đồ heatmap, mỗi ô đại diện một cặp mức hiệu quả, tô màu theo số mẫu, viền trắng giúp tách biệt từng ô.
6–9. Thêm tiêu đề, nhãn trục x/y và chú thích màu số lượng cho biểu đồ đầy đủ thông tin.
10–13. Trang trí giao diện sáng, trục x/y tô đậm màu nổi, nền bảng màu sáng giúp biểu đồ rõ ràng.
Nhận xét: Biểu đồ Heatmap cho thấy hiệu quả hoạt động phổ biến nhất của BIDV (\(\text{2010}\)–\(\text{2024}\)) là ROA Trung bình và ROE Trung bình (tương đương \(\text{8}\) năm), khẳng định tính ổn định trong hiệu suất. Điều đáng chú ý là BIDV thường xuyên đạt ROE Tốt ngay cả khi ROA chỉ ở mức Trung bình (khoảng \(\text{4}\)–\(\text{6}\) năm). Hàm ý kinh tế: Việc tập trung ở khu vực ROA Trung bình khẳng định ngân hàng duy trì hiệu suất sử dụng tài sản ổn định. Sự kết hợp ROA Trung bình/ROE Tốt chứng minh chiến lược đòn bẩy tài chính của BIDV là hiệu quả, giúp tối ưu hóa lợi nhuận cho cổ đông.
1. ggplot(BIDV, aes(x = tong_tai_san)) +
2. geom_histogram(binwidth = 5e13, fill = 'blue', color = 'red') +
3. facet_wrap(~hieu_qua_ROE) +
4. labs(x = 'Tổng tài sản (VND)', y = 'Tần suất', title = 'Hình 19. Tổng tài sản theo từng loại hiệu quả ROE') +
5. theme_minimal()
Dùng ggplot() lấy dữ liệu BIDV, trục x là tổng tài
sản.
Vẽ biểu đồ histogram phân phối tổng tài sản với cột màu xanh, viền đỏ, mỗi bin rộng 50 nghìn tỷ VND.
facet_wrap(~hieu_qua_ROE): chia thành các biểu đồ
nhỏ, mỗi nhóm ứng với một mức hiệu quả ROE.
Thêm tiêu đề, nhãn trục x/y cho biểu đồ.
Dùng theme tối giản giúp biểu đồ thoáng, dễ đọc.
Nhận xét: Biểu đồ Histogram so sánh cho thấy ROE Thấp chỉ xảy ra khi Tổng tài sản (TS) ở mức thấp (khoảng \(\text{400.000}\) tỷ VND đến \(\text{1.300.000}\) tỷ VND). Ngược lại, ROE Tốt và Trung bình xảy ra ở tất cả các mức TS, kể cả khi TS đã đạt rất cao (lên đến \(\text{2.500.000}\) tỷ VND). Hàm ý kinh tế: Quy mô tài sản không phải là yếu tố quyết định hiệu quả ROE. Điều này chứng tỏ BIDV duy trì được hiệu quả sinh lời trên vốn ngay cả khi quy mô mở rộng. Vai trò của quản lý đòn bẩy tài chính và kiểm soát rủi ro quan trọng hơn việc chỉ mở rộng quy mô TS trong việc quyết định chất lượng sinh lời cho cổ đông.
1. BIDV_long <- BIDV %>%
2. filter(nam >= 2019 & nam <= 2023) %>%
3. mutate(nam2 = substr(as.character(nam), 3, 4)) %>%
4. select(nam2, tong_tai_san, von_chu_so_huu, du_no_cho_vay) %>%
5. pivot_longer(
6. cols = c(tong_tai_san, von_chu_so_huu, du_no_cho_vay),
7. names_to = "chitieu", values_to = "giatri"
8. ) %>%
9. mutate(giatri_nghin_ty = giatri / 1e12)
10. color_vec <- c(
11. "tong_tai_san" = "#00FFFF",
12. "von_chu_so_huu" = "#FF00FF",
13. "du_no_cho_vay" = "#39FF14"
14. )
15. ggplot(BIDV_long, aes(x = chitieu, y = giatri_nghin_ty, fill = chitieu)) +
16. geom_col(width = 0.7, position = "dodge") +
17. geom_text(aes(label = round(giatri_nghin_ty, 1)),
18. vjust = -0.5, size = 3) +
19. facet_wrap(~nam2) +
20. scale_y_continuous(
21. breaks = seq(0, max(BIDV_long$giatri_nghin_ty, na.rm = TRUE) * 1.2, 500),
22. labels = scales::comma_format(suffix = "K", accuracy = 1)
23. ) +
24. scale_fill_manual(
25. name = "Chỉ tiêu",
26. values = color_vec,
27. labels = c(
28. "tong_tai_san" = "Tổng tài sản",
29. "von_chu_so_huu" = "Vốn chủ sở hữu",
30. "du_no_cho_vay" = "Dư nợ cho vay"
31. )
32. ) +
33. labs(
34. x = NULL,
35. y = 'Giá trị (nghìn tỷ VND)',
36. title = 'Hình 20. Tổng tài sản, Vốn chủ sở hữu, Dư nợ cho vay từ 2019-2023'
37. ) +
38. theme_minimal() +
39. theme(
40. legend.position = "bottom",
41. axis.title.x = element_blank(),
42. axis.text.x = element_blank(),
43. axis.ticks.x = element_blank()
44. )
Giải thích kỹ thuật:
1–4. Lọc dữ liệu từ 2019–2023, lấy ba biến tài chính, đổi thành hai số cuối năm để trục x gọn.
5–9. Chuyển dữ liệu sang dạng dài và chuẩn hóa số liệu theo nghìn tỷ (giúp dễ nhìn hơn).
10–14. Xác định màu riêng cho từng chỉ tiêu để cột phân biệt rõ ràng.
15–18. Vẽ nhóm cột, mỗi năm có ba cột cạnh nhau (theo chỉ tiêu), thêm nhãn số liệu trên cột.
20–23. Tùy chỉnh trục y (dạng nghìn tỷ, nhãn rõ).
24–32. Đặt tên chú thích, màu, nhãn biến tiếng Việt.
33–44. Đặt tiêu đề, chỉnh theme tối giản, bỏ trục x số, chú thích ở dưới.
Nhận xét: Biểu đồ so sánh ba chỉ số quy mô chính của BIDV (\(\text{2019}\)–\(\text{2023}\)) cho thấy xu hướng tăng trưởng liên tục và mạnh mẽ. Tổng tài sản (\(\text{2.508,8}\) nghìn tỷ VND) và Dư nợ cho vay (\(\text{1.737,2}\) nghìn tỷ VND) có quy mô áp đảo năm \(\text{2023}\). Ngược lại, Vốn chủ sở hữu (VCSH) duy trì ở mức rất thấp (\(\text{122,9}\) nghìn tỷ VND), dù vẫn tăng trưởng. Hàm ý kinh tế: Xu hướng này khẳng định chiến lược mở rộng quy mô và đẩy mạnh tín dụng là hiệu quả. Tỷ lệ VCSH nhỏ phản ánh đòn bẩy tài chính cao, đòi hỏi ngân hàng phải quản lý rủi ro và vốn cẩn thận để duy trì sự ổn định.