1 LỜI CAM ĐOAN

Tác giả cam đoan đề tài tiểu luận môn ngôn ngữ lập trình trong phân tích dữ liệu “ PHÂN TÍCH DỮ LIỆU NHÂN SỰ VÀ DỮ LIỆU TÀI CHÍNH: NGHIÊN CỨU HAI BỘ DỮ LIỆU – TẬP ĐOÀN ĐA QUỐC GIA VÀ NGÂN HÀNG TMCP Á CHÂU (ACB)” là công trình nghiên cứu của tác giả dưới sự hướng dẫn của giảng viên Th.s Trần Mạnh Tường. Những phần sử dụng tài liệu tham khảo trong đề tài đã được trình bày nguồn và dựa trên bài giảng để thực hiện phân tích. Các thông tin số liệu sử trụng trong bài tiểu luận này là trung thực, dữ liệu thực có nguồn gốc rõ ràng. Các kết quả trình bày trong bài tiểu luận hoàn toàn là kết quả do nhóm chúng tôi nghiên cứu và thực thiện. Nếu vi phạm lời cam đoan này, nhóm chúng tôi xin chịu hoàn toàn trách nhiệm.

2 LỜI CẢM ƠN

Trước tiên, Em chân thành cảm ơn Thầy Trần Mạnh Tường đã tận tình hướng dẫn, góp ý cho em trong suốt quá trình học tập và thực hiện tiểu luận này cũng như các Thầy Cô trong khoa khoa học dữ liệu trường Đại học Tài chính – Marketing đã nhiệt tình giảng dạy, truyền tải các kiến thức về kinh tế - tài chính để chúng em ứng dụng trong bài tiểu luận. Ngôn ngữ lập trình trong phân tích dữ liệu là môn học rất thú vị, vô cùng bổ ích và có tính thực tế cao giúp chúng em có một nhìn rộng hơn về thống kê số liệu kinh tế, xã hội trong và ngoài nước. Tuy nhiên, do vốn kiến thức em còn nhiều hạn chế và khả năng tiếp thu thực tế còn gặp nhiều khó khăn. Mặc dù em đã cố gắng hết sức nhưng khó có thể tránh khỏi những thiếu sót, kính mong quý Thầy Cô xem xét và góp ý để bài tiểu luận của em được hoàn thiện hơn nữa.

3 PHẦN 1: BỘ DỮ LIỆU VỀ HUMAN RESOURCE DATASET OF A MULTINATIONL CORPORATION(MNC)

3.1 TỔNG QUAN NGHIÊN CỨU

3.1.1 Bối cảnh nghiên cứu

Trong thời đại toàn cầu hóa, các tập đoàn đa quốc gia (Multinational Corporations - MNC) ngày càng mở rộng hoạt động trên nhiều quốc gia khác nhau. Việc quản lý đội ngũ nhân viên đến từ nhiều nền văn hóa, quốc tịch và trình độ chuyên môn khác nhau đặt ra thách thức lớn về quản trị nhân sự.

Đối với các MNC, nguồn nhân lực được xem là yếu tố then chốt quyết định đến hiệu quả hoạt động và khả năng cạnh tranh của doanh nghiệp. Hiệu suất làm việc của nhân viên chịu ảnh hưởng bởi nhiều yếu tố như kinh nghiệm, trình độ chuyên môn, môi trường làm việc, chế độ đãi ngộ và hình thức làm việc. Trong đó, mức lương không chỉ là phần thưởng tài chính mà còn phản ánh giá trị đóng góp của nhân viên đối với tổ chức.

Tuy nhiên, trong thực tế, mức lương và hiệu suất làm việc có thể khác nhau giữa các phòng ban. Ví dụ, bộ phận IT hoặc Marketing có thể được trả lương cao hơn vì đặc thù công việc, trong khi bộ phận Hành chính hay Nhân sự lại có mức thu nhập ổn định nhưng ít biến động hơn. Ngoài ra, hình thức làm việc (làm tại văn phòng, kết hợp hay làm từ xa) cũng có thể ảnh hưởng đến hiệu quả công việc và sự gắn kết của nhân viên.

Do đó, việc phân tích và xác định những yếu tố ảnh hưởng đến hiệu suất và mức lương của nhân viên theo từng phòng ban là rất cần thiết. Kết quả của nghiên cứu sẽ giúp ban lãnh đạo xây dựng chính sách lương thưởng và môi trường làm việc công bằng, hợp lý hơn, đồng thời nâng cao động lực làm việc và hiệu quả chung của tổ chức.

3.1.2 Cơ sở lý thuyết và tổng quan nghiên cứu

3.1.2.1 Cơ sở lý thuyết

3.1.2.1.1 Lý thuyết Vốn con người (Human Capital Theory)

Lý thuyết này do Becker (1964) đề xuất, cho rằng kiến thức, kỹ năng và kinh nghiệm của mỗi cá nhân là những yếu tố tạo nên vốn con người - nguồn lực quan trọng giúp nâng cao năng suất lao động và thu nhập. Khi nhân viên được đào tạo tốt, có kinh nghiệm dày dạn, họ sẽ làm việc hiệu quả hơn và có cơ hội nhận được mức lương cao hơn. → Trong nghiên cứu này, số năm kinh nghiệm (Experience_Years) được xem là đại diện cho vốn con người của mỗi nhân viên.

3.1.2.1.2 Lý thuyết Hiệu suất - Thù lao (Performance-Reward Theory)

Theo Armstrong & Taylor (2017), hiệu suất làm việc của nhân viên là cơ sở chính để doanh nghiệp trả lương và khen thưởng. Khi hiệu suất cao, nhân viên thường được tăng lương, thăng chức hoặc nhận thưởng. Ngược lại, hiệu suất thấp có thể dẫn đến điều chỉnh lương hoặc đánh giá lại vị trí công việc. → Do đó, trong tập đoàn MNC, biến Performance_Rating phản ánh trực tiếp năng suất và là yếu tố có thể ảnh hưởng rõ rệt đến Salary_INR.

3.1.2.1.3 Lý thuyết Tín hiệu (Signaling Theory)

Spence (1973) cho rằng trong thị trường lao động, các đặc điểm như chức danh, trình độ học vấn, hay hình thức làm việc là “tín hiệu” mà người lao động gửi đến nhà tuyển dụng để thể hiện năng lực của mình. Trong các MNC, những vị trí như Manager, Senior Analyst hoặc Team Leader thường được xem là tín hiệu về năng lực cao và trách nhiệm lớn hơn, dẫn đến mức lương cao hơn. → Biến Job_Title trong bộ dữ liệu đóng vai trò thể hiện tín hiệu năng lực của nhân viên.

3.1.2.1.4 Lý thuyết Phù hợp tổ chức (Person–Organization Fit Theory)

Kristof (1996) cho rằng hiệu suất làm việc không chỉ phụ thuộc vào năng lực cá nhân mà còn phụ thuộc vào mức độ phù hợp giữa nhân viên và môi trường làm việc. Các yếu tố như phòng ban (Department), văn hóa nhóm, hay chế độ làm việc (Work_Mode) có thể ảnh hưởng đến tinh thần và năng suất của nhân viên. → Sự khác biệt giữa các phòng ban và hình thức làm việc trong MNC là yếu tố quan trọng cần phân tích.

3.1.2.1.5 Lý thuyết Bình đẳng (Equity Theory)

Theo Adams (1965), nhân viên thường so sánh mức lương và đãi ngộ của mình với đồng nghiệp có cùng vị trí hoặc công việc tương tự. Nếu cảm thấy công bằng, họ sẽ có động lực làm việc cao hơn; nếu không, họ dễ mất hứng thú hoặc rời bỏ tổ chức. → Điều này lý giải vì sao cần phân tích sự chênh lệch lương và hiệu suất giữa các phòng ban, giúp doanh nghiệp đảm bảo công bằng nội bộ.

3.1.2.2 Tổng quan nghiên cứu

Tác giả & Năm Phạm vi Phương pháp / Mẫu Kết quả chính
Spence (1973) Hoa Kỳ Mô hình tín hiệu trong thị trường lao động Bằng cấp và chức danh là tín hiệu quan trọng thể hiện năng lực, ảnh hưởng đến mức lương.
Adams (1965) Hoa Kỳ Mô hình tâm lý tổ chức Sự công bằng trong đãi ngộ ảnh hưởng đến động lực làm việc và sự gắn bó của nhân viên.
Armstrong & Taylor (2017) Anh Quốc Tổng hợp các nghiên cứu về quản trị nhân sự Xây dựng cơ sở lý thuyết cho mối quan hệ giữa hiệu suất và thù lao trong doanh nghiệp.
Nguyễn & Trần (2021) Việt Nam Khảo sát 300 nhân viên tại MNC Hiệu suất, kinh nghiệm và hình thức làm việc ảnh hưởng đáng kể đến lương; chênh lệch giữa các phòng ban là đáng kể.
Lee & Kim (2023) Hàn Quốc Hồi quy đa biến trên 1.500 nhân viên tập đoàn quốc tế Nhân viên phòng IT và Kinh doanh có mức lương cao hơn; làm việc hybrid giúp duy trì hiệu suất ổn định hơn.

3.1.3 Mục tiêu nghiên cứu

3.1.3.1 Mục tiêu chung

Nghiên cứu nhằm phân tích các yếu tố ảnh hưởng đến hiệu suất làm việc và mức lương của nhân viên theo từng phòng ban trong một tập đoàn đa quốc gia (MNC).

Thông qua đó, nhóm nghiên cứu mong muốn xác định các yếu tố chính quyết định đến hiệu suất và thu nhập, giúp doanh nghiệp đề xuất chính sách nhân sự công bằng, hợp lý và hiệu quả hơn trong quản lý nguồn nhân lực toàn cầu.

3.1.3.2 Mục tiêu cụ thể

Mô tả đặc điểm chung của đội ngũ nhân viên trong tập đoàn theo các yếu tố: phòng ban, chức danh, hình thức làm việc, kinh nghiệm và tình trạng việc làm.

Phân tích sự khác biệt về hiệu suất làm việc và mức lương giữa các phòng ban và hình thức làm việc (on-site, hybrid, remote).

Xác định mối quan hệ giữa các yếu tố như kinh nghiệm, hiệu suất, chế độ làm việc và mức lương của nhân viên.

Kiểm định các giả thuyết nghiên cứu về mức độ ảnh hưởng của từng yếu tố (Experience_Years, Performance_Rating, Work_Mode, Department) đến Salary_INR.

3.1.4 Phương pháp nghiên cứu

Nghiên cứu bắt đầu bằng việc áp dụng các phương pháp thống kê mô tả nhằm nhận diện và hiểu rõ đặc tính cơ bản của bộ dữ liệu.

Nhóm tác giả tiến hành tính toán các chỉ số đặc trưng như giá trị trung bình, trung vị, phương sai và khoảng tứ phân vị (IQR) đối với các biến quan trọng, bao gồm mức lương (Salary_INR), số năm kinh nghiệm (Experience_Years) và hình thức làm việc (Work_Mode).

Song song đó, các biểu đồ tần số và biểu đồ tần suất được sử dụng để trực quan hóa phân bố dữ liệu, giúp nhận diện các giá trị ngoại lai (outliers) cũng như quan sát sơ bộ mối tương quan giữa các biến. Cách tiếp cận này không chỉ hỗ trợ phát hiện các xu hướng tiềm ẩn trong dữ liệu, mà còn tạo nền tảng cho các bước phân tích chuyên sâu ở các phần tiếp theo.

3.1.5 Ý nghĩa của nghiên cứu

3.1.5.1 Ý nghĩa khoa học

Nghiên cứu góp phần làm rõ mối quan hệ giữa các yếu tố nhân sự và kết quả làm việc trong bối cảnh tập đoàn đa quốc gia (MNC).

Thông qua việc áp dụng các lý thuyết nền tảng như Vốn con người, Hiệu suất - Thù lao, Bình đẳng và Phù hợp tổ chức, đề tài củng cố cơ sở lý luận về mối liên hệ giữa kinh nghiệm, hiệu suất, hình thức làm việc và mức lương.

3.1.5.2 Ý nghĩa thực tiễn

Kết quả nghiên cứu mang lại cái nhìn trực quan và định lượng về cách các yếu tố như phòng ban, hình thức làm việc, kinh nghiệm và hiệu suất ảnh hưởng đến mức lương và năng suất của nhân viên.

Từ đó, đối với doanh nghiệp có thể

Xây dựng chính sách lương thưởng hợp lý, phản ánh đúng năng lực và đóng góp của nhân viên.

Thiết kế chế độ làm việc linh hoạt (on-site, hybrid, remote) phù hợp với từng nhóm công việc nhằm duy trì hiệu quả và sự hài lòng.

Phát hiện sự mất cân đối giữa các phòng ban về thu nhập hoặc hiệu suất, từ đó điều chỉnh chiến lược nhân sự một cách công bằng và bền vững.

đối với người lao động và xã hội

Nghiên cứu giúp nhân viên hiểu rõ hơn về các yếu tố ảnh hưởng đến thu nhập và hiệu suất cá nhân, qua đó định hướng phát triển nghề nghiệp và kỹ năng phù hợp.

Đồng thời, đề tài góp phần thúc đẩy tính minh bạch, công bằng trong quản trị nhân sự, hướng đến một môi trường làm việc hiệu quả và bình đẳng hơn trong các tổ chức toàn cầu.

3.2 GIỚI THIỆU BỘ DỮ LIỆU.

Trong nghiên cứu này, nhóm tác giả sử dụng bộ dữ liệu “Human Resource Dataset of a Multinational Corporation (MNC)”, được cung cấp dưới dạng tệp CSV, nhằm phân tích các yếu tố ảnh hưởng đến hiệu suất làm việc và mức lương của nhân viên trong một tập đoàn đa quốc gia.

Bộ dữ liệu bao gồm 100.500 quan sát và 11 biến, phản ánh các khía cạnh về nhân viên, phòng ban, vị trí công việc, kinh nghiệm làm việc, hiệu suất, tình trạng việc làm, hình thức làm việc, mức lương…. Trong đó, có 8 biến định tính và 3 biến định lượng, thể hiện mối liên hệ giữa phòng ban (Department) với các yếu tố như điểm đánh giá hiệu suất (Performance_Rating), kinh nghiệm (Experience_Years), tình trạng việc làm (Status), chế độ làm việc (Work_Mode) và mức lương (Salary_INR).

## [1] "en_US.UTF-8"
1. d <- read.csv("D:/THU 2/HR_Data_MNC_Data Science Lovers.csv")

Mô tả các đặc trưng của dữ liệu

Tên biến Mô tả chi tiết
Employee_ID Mã định danh duy nhất được gán cho mỗi nhân viên (ví dụ: EMP0000001).
Full_Name Họ và tên đầy đủ của nhân viên, được sử dụng để nhận diện cá nhân trong nội bộ.
Department Phòng ban mà nhân viên công tác, chẳng hạn như Công nghệ thông tin (IT), Nhân sự (HR), Tiếp thị (Marketing), Vận hành (Operations), v.v.
Job_Title Chức danh hoặc vị trí nghề nghiệp của nhân viên (ví dụ: Software Engineer, HR Manager, Data Analyst…).
Hire_Date Ngày mà nhân viên chính thức được tuyển dụng vào công ty (định dạng: YYYY-MM-DD).
Location Địa điểm làm việc của nhân viên, bao gồm thành phố và quốc gia nơi nhân viên làm việc.
Performance_Rating Điểm đánh giá hiệu suất làm việc của nhân viên, được chấm theo thang điểm (ví dụ: từ 1 đến 5, điểm càng cao thể hiện hiệu suất càng tốt).
Experience_Years Số năm kinh nghiệm làm việc chuyên môn của nhân viên tính đến thời điểm hiện tại.
Status Tình trạng việc làm hiện tại của nhân viên:
- Active: Đang làm việc
- Resigned: Đã nghỉ việc.
Work_Mode Hình thức làm việc của nhân viên:
- On-site: Làm việc tại văn phòng
- Remote: Làm việc từ xa.
Salary_INR Mức lương hàng năm của nhân viên, được tính bằng đơn vị tiền tệ Rupee Ấn Độ (INR).

3.2.1 Kiểm tra cấu trúc dữ liệu

1. str(d) 
## 'data.frame':    100500 obs. of  11 variables:
##  $ Employee_ID       : chr  "EMP0000001" "EMP0000002" "EMP0000003" "EMP0000004" ...
##  $ Full_Name         : chr  "Joshua Nguyen" "Julie Williams" "Alyssa Martinez" "Nicholas Valdez" ...
##  $ Department        : chr  "IT" "Marketing" "HR" "IT" ...
##  $ Job_Title         : chr  "Software Engineer" "SEO Specialist" "HR Manager" "Software Engineer" ...
##  $ Hire_Date         : chr  "8/10/2011" "3/2/2018" "3/20/2023" "10/12/2023" ...
##  $ Location          : chr  "Isaacland, Denmark" "Anthonyside, Costa Rica" "Port Christinaport, Saudi Arabia" "Port Shelbychester, Antigua and Barbuda" ...
##  $ Performance_Rating: int  5 2 1 1 5 5 2 2 4 4 ...
##  $ Experience_Years  : int  14 7 2 1 0 4 9 5 7 9 ...
##  $ Status            : chr  "Resigned" "Active" "Active" "Active" ...
##  $ Work_Mode         : chr  "On-site" "On-site" "On-site" "On-site" ...
##  $ Salary_INR        : int  1585363 847686 1430084 990689 535082 641393 1383891 423091 1138452 1543102 ...

Giải thích kĩ thuật

    1. Lệnh str(d) hiển thị cấu trúc tổng quát của dữ liệu d, gồm kiểu dữ liệu, số dòng, số cột và kiểu của từng biến.

Nhận xét

  • Bộ dữ liệu gồm 100.500 quan sát và 11 biến, phản ánh thông tin chi tiết về nhân viên trong tập đoàn đa quốc gia.

  • Các biến bao gồm cả định tính và định lượng, thể hiện nhiều khía cạnh khác nhau của hồ sơ nhân sự:

    • 8 biến định tính: Employee_ID, Full_Name, Department, Job_Title, Hire_Date, Location, Status, Work_Mode — mô tả thông tin nhận diện, tổ chức, vị trí công việc và tình trạng làm việc.

    • 3 biến định lượng: Performance_Rating, Experience_Years, Salary_INR — phản ánh năng lực, thâm niên và thu nhập của nhân viên.

  • Dữ liệu được tổ chức theo dạng data.frame.

=> Nhìn chung, bộ dữ liệu có quy mô lớn, cấu trúc hoàn chỉnh và chất lượng tốt, đáp ứng yêu cầu cho các bước phân tích mô tả tiếp theo.

3.2.2 Xem qua 5 dòng đầu và 5 dòng cuối

1. head(d,5)
##   Employee_ID       Full_Name Department             Job_Title  Hire_Date
## 1  EMP0000001   Joshua Nguyen         IT     Software Engineer  8/10/2011
## 2  EMP0000002  Julie Williams  Marketing        SEO Specialist   3/2/2018
## 3  EMP0000003 Alyssa Martinez         HR            HR Manager  3/20/2023
## 4  EMP0000004 Nicholas Valdez         IT     Software Engineer 10/12/2023
## 5  EMP0000005  Joel Hendricks Operations Logistics Coordinator  12/9/2024
##                                  Location Performance_Rating Experience_Years
## 1                      Isaacland, Denmark                  5               14
## 2                 Anthonyside, Costa Rica                  2                7
## 3        Port Christinaport, Saudi Arabia                  1                2
## 4 Port Shelbychester, Antigua and Barbuda                  1                1
## 5    Lake Kimberly, Palestinian Territory                  5                0
##     Status Work_Mode Salary_INR
## 1 Resigned   On-site    1585363
## 2   Active   On-site     847686
## 3   Active   On-site    1430084
## 4   Active   On-site     990689
## 5   Active   On-site     535082
1. tail(d,5)
##        Employee_ID         Full_Name Department             Job_Title
## 100496  EMP0100496        Sara Avery    Finance            Accountant
## 100497  EMP0100497    Cory Cervantes Operations  Operations Executive
## 100498  EMP0100498    Allison Vaughn         IT     Software Engineer
## 100499  EMP0100499       Laura Adams    Finance            Accountant
## 100500  EMP0100500 Michael Bryant MD Operations Logistics Coordinator
##         Hire_Date                      Location Performance_Rating
## 100496 10/18/2021 North Amyfurt, Czech Republic                  3
## 100497  4/15/2025            West Mary, Vietnam                  1
## 100498 11/11/2020           South Kelly, Greece                  2
## 100499  10/6/2022         Jamesview, Madagascar                  5
## 100500 10/31/2020     South Tracy, Saint Helena                  5
##        Experience_Years   Status Work_Mode Salary_INR
## 100496                3   Active   On-site     719172
## 100497                0  Retired   On-site     659319
## 100498                4   Active   On-site    1644321
## 100499                2 Resigned   On-site     746300
## 100500                4   Active    Remote     517095

Giải thích kĩ thuật

    1. head(d, 5) hiển thị 5 dòng đầu tiên của dữ liệu d.
    1. tail(d, 5) hiển thị 5 dòng cuối cùng của dữ liệu d.

Nhận xét

Nhìn chung, 5 dòng đầu và 5 dòng cuối cho thấy dữ liệu được ghi nhận đầy đủ, phản ánh rõ sự đa dạng về phòng ban (như IT, Marketing, HR, Finance, Sales, Operations), chức danh công việc (Software Engineer, HR Manager, Accountant, Data Analyst, Logistics Coordinator…), tình trạng làm việc (Active, Resigned, Retired, Terminated), hình thức làm việc (On-site, Remote), cũng như mức lương và số năm kinh nghiệm khác nhau giữa các nhân viên.

3.2.3 Kích thước dữ liệu

1. dim(d)
## [1] 100500     11

Giải thích kĩ thuật

    1. Lệnh dim(d) cho biết kích thước của dữ liệu, gồm số dòng và số cột trong d.

Nhận xét

Bộ dữ liệu có 100.500 quan sát và 11 biến, cho thấy quy mô lớn và độ chi tiết cao.

3.2.4 Tên các biến

1. names(d)
##  [1] "Employee_ID"        "Full_Name"          "Department"        
##  [4] "Job_Title"          "Hire_Date"          "Location"          
##  [7] "Performance_Rating" "Experience_Years"   "Status"            
## [10] "Work_Mode"          "Salary_INR"

Giải thích kĩ thuật

    1. Lệnh names(d) trả về danh sách tên các biến (cột) trong dataframe d

Nhận xét

Bộ dữ liệu gồm 11 biến với tên rõ ràng, dễ hiểu, phản ánh đầy đủ thông tin về nhân viên như mã số, họ tên, phòng ban, chức danh, ngày tuyển dụng, địa điểm, hiệu suất, kinh nghiệm, tình trạng, hình thức làm việc và mức lương.

3.2.5 Kiểm tra giá trị thiếu (NA)

1. sum(is.na(d))
## [1] 0
1. any(is.na(d))
## [1] FALSE

Giải thích kĩ thuật

    1. sum(is.na(d)) đếm tổng số giá trị bị thiếu (NA) trong toàn bộ dữ liệu d.
    1. any(is.na(d)) kiểm tra xem dữ liệu có chứa giá trị NA hay không, trả về TRUE nếu có và FALSE nếu không.

Nhận xét

Kết quả cho thấy không có giá trị thiếu (NA) trong toàn bộ bộ dữ liệu.

=> Dữ liệu được nhập đầy đủ, đảm bảo độ tin cậy và thuận lợi cho quá trình phân tích thống kê tiếp theo.

3.2.6 Kiểm tra số lượng bản ghi trùng lặp và loại bỏ trùng lặp

1. sum(duplicated(d))
## [1] 0
1. d <- d %>% distinct()

Giải thích kĩ thuật

    1. sum(duplicated(d)) đếm số dòng bị trùng lặp trong dữ liệu d.
    1. d <- d %>% distinct() loại bỏ các dòng trùng lặp, giữ lại các bản ghi duy

Nhận xét

Kết quả cho thấy không có bản ghi trùng lặp trong dữ liệu.

=> Dữ liệu duy nhất, đảm bảo tính chính xác, không cần xử lý loại bỏ trùng lặp trước khi phân tích.

3.2.7 Kiểm tra kiểu dữ liệu từng biến

1. sapply(d, class)
##        Employee_ID          Full_Name         Department          Job_Title 
##        "character"        "character"        "character"        "character" 
##          Hire_Date           Location Performance_Rating   Experience_Years 
##        "character"        "character"          "integer"          "integer" 
##             Status          Work_Mode         Salary_INR 
##        "character"        "character"          "integer"

Giải thích kĩ thuật

    1. Lệnh sapply(d, class) trả về kiểu dữ liệu của từng biến (cột) trong dataframe d (ví dụ: numeric, character, factor, v.v.).

Nhận xét

Kiểu dữ liệu được phân loại hợp lý:

  • Các biến định tính như mã nhân viên, họ tên, phòng ban, chức danh, ngày tuyển dụng, địa điểm, trạng thái và hình thức làm việc ở dạng chuỗi (character).

  • Các biến định lượng gồm điểm hiệu suất, số năm kinh nghiệm và mức lương ở dạng số nguyên (integer).

3.3 XỬ LÝ VÀ MÃ HÓA DỮ LIỆU.

3.3.1 Chuyển các biến định tính sang factor

1. d$Department <- as.factor(d$Department)
2. d$Job_Title <- as.factor(d$Job_Title)
3. d$Status <- as.factor(d$Status)
4. d$Work_Mode <- as.factor(d$Work_Mode)
5. d$Location <- as.factor(d$Location)
6. head(d[, c("Department", "Job_Title", "Status", "Work_Mode", "Location")])
##   Department             Job_Title   Status Work_Mode
## 1         IT     Software Engineer Resigned   On-site
## 2  Marketing        SEO Specialist   Active   On-site
## 3         HR            HR Manager   Active   On-site
## 4         IT     Software Engineer   Active   On-site
## 5 Operations Logistics Coordinator   Active   On-site
## 6 Operations Logistics Coordinator   Active   On-site
##                                  Location
## 1                      Isaacland, Denmark
## 2                 Anthonyside, Costa Rica
## 3        Port Christinaport, Saudi Arabia
## 4 Port Shelbychester, Antigua and Barbuda
## 5    Lake Kimberly, Palestinian Territory
## 6                 Zimmermanstad, Bulgaria

Giải thích kĩ thuật

  • 1-5. Đều là lệnh chuyển đổi kiểu dữ liệu, chuyển biến định tính (phân loại) sang kiểu factor

    1. Lệnh hiển thị 6 dòng đầu tiên của các biến vừa mã hóa để kiểm tra kết quả chuyển đổi.

Nhận xét

Các biến định tính đã được chuyển đổi sang dạng factor gồm: Department, Job_Title, Status, Work_Mode, và Location.

=> Việc mã hóa này giúp dễ dàng thực hiện phân tích thống kê, so sánh và mô hình hóa sau này.

3.3.2 Chuyển biến định lượng sang dạng numeric

1. d$Performance_Rating <- as.numeric(d$Performance_Rating)
2. d$Experience_Years <- as.numeric(d$Experience_Years)
3. d$Salary_INR <- as.numeric(d$Salary_INR)
4. head(d[, c("Performance_Rating", "Experience_Years", "Salary_INR")])
##   Performance_Rating Experience_Years Salary_INR
## 1                  5               14    1585363
## 2                  2                7     847686
## 3                  1                2    1430084
## 4                  1                1     990689
## 5                  5                0     535082
## 6                  5                4     641393

Giải thích kĩ thuật

  • 1-3. Đều là lệnh chuyển đổi kiểu dữ liệu, dùng để chuyển các biến định lượng (Performance_Rating, Experience_Years, Salary_INR) sang kiểu số (numeric)

    1. Lệnh hiển thị 6 dòng đầu tiên của các biến vừa chuyển đổi để kiểm tra kết quả chuyển kiểu dữ liệu.

Nhận xét

Ba biến định lượng gồm Performance_Rating, Experience_Years và Salary_INR đã được chuyển đổi sang dạng numeric.

=> Việc này giúp đảm bảo dữ liệu có thể thực hiện tính toán, phân tích thống k mô tả.

3.3.3 Chuẩn hóa tên biến về chữ thường

1. names(d) <- tolower(names(d))
2. print(names(d))
##  [1] "employee_id"        "full_name"          "department"        
##  [4] "job_title"          "hire_date"          "location"          
##  [7] "performance_rating" "experience_years"   "status"            
## [10] "work_mode"          "salary_inr"

Giải thích kĩ thuật

    1. Lệnh names(d) <- tolower(names(d)) chuyển tất cả tên biến (cột) trong bảng dữ liệu d về chữ thường, giúp đồng nhất và tránh lỗi khi gọi tên biến.
    1. Lệnh print(names(d)) in ra danh sách tên cột sau khi đã chuyển đổi để kiểm tra kết quả chuẩn hóa.

Nhận xét

Các tên biến đã được chuẩn hóa về chữ thường, giúp dữ liệu thống nhất, dễ đọc và thuận tiện khi thao tác, hạn chế lỗi khi gọi tên biến trong quá trình phân tích sau này.

3.3.4 Lọc dữ liệu có điều kiện

Điều kiện AND (&)

1. and_filter <- d %>%
2. filter(performance_rating >= 4 & experience_years > 5 & status == "Active")
3. nrow(and_filter)
## [1] 11875
1. head(and_filter, 5)
##   employee_id       full_name department          job_title  hire_date
## 1  EMP0000010     Maria Yu MD         IT  Software Engineer  10/8/2015
## 2  EMP0000015 Megan Hernandez      Sales    Account Manager  1/14/2016
## 3  EMP0000031    Nathan Smith         IT  Software Engineer  2/13/2019
## 4  EMP0000051     Dylan Welch      Sales    Account Manager  8/11/2011
## 5  EMP0000076  Kristin Hodges  Marketing Content Strategist 10/28/2015
##                 location performance_rating experience_years status work_mode
## 1       Brownport, Yemen                  4                9 Active    Remote
## 2  New Royberg, Thailand                  5                9 Active    Remote
## 3  Anthonyburgh, Bahamas                  4                6 Active   On-site
## 4 West Kevinfurt, Jordan                  4               14 Active    Remote
## 5   Nelsontown, Anguilla                  5                9 Active   On-site
##   salary_inr
## 1    1543102
## 2    1158764
## 3    1076433
## 4     915341
## 5    1093462

Giải thích kĩ thuật

  • 1-2. Lọc các bản ghi nhân viên có hiệu suất ≥ 4, kinh nghiệm > 5 năm và trạng thái làm việc là “Active”, sử dụng điều kiện AND (&) để kết hợp nhiều tiêu chí.

    1. nrow(and_filter) đếm số lượng nhân viên thỏa mãn các điều kiện lọc.
    1. head(and_filter, 5) hiển thị 5 dòng đầu tiên của kết quả lọc để kiểm tra dữ liệu.

Nhận xét

Kết quả lọc cho thấy có 11.875 nhân viên đáp ứng đồng thời các điều kiện:

  • Hiệu suất làm việc ≥ 4,

  • Kinh nghiệm > 5 năm,

  • Tình trạng làm việc: Active.

=> Đây là nhóm nhân viên có năng lực và kinh nghiệm cao, đang làm việc tích cực, có thể đại diện cho lực lượng nòng cốt trong doanh nghiệp.

Điều kiện OR (|)

1. or_filter <- d %>%
2. filter(performance_rating <= 2 | status == "Resigned")
3. nrow(or_filter)
## [1] 52160
1. head(or_filter, 5)
##   employee_id       full_name department         job_title  hire_date
## 1  EMP0000001   Joshua Nguyen         IT Software Engineer  8/10/2011
## 2  EMP0000002  Julie Williams  Marketing    SEO Specialist   3/2/2018
## 3  EMP0000003 Alyssa Martinez         HR        HR Manager  3/20/2023
## 4  EMP0000004 Nicholas Valdez         IT Software Engineer 10/12/2023
## 5  EMP0000007    Julie Wright    Finance   Finance Manager   4/4/2016
##                                  location performance_rating experience_years
## 1                      Isaacland, Denmark                  5               14
## 2                 Anthonyside, Costa Rica                  2                7
## 3        Port Christinaport, Saudi Arabia                  1                2
## 4 Port Shelbychester, Antigua and Barbuda                  1                1
## 5                 Karenfort, South Africa                  2                9
##     status work_mode salary_inr
## 1 Resigned   On-site    1585363
## 2   Active   On-site     847686
## 3   Active   On-site    1430084
## 4   Active   On-site     990689
## 5   Active   On-site    1383891

Giải thích kĩ thuật

  • 1-2. Lọc các bản ghi nhân viên có hiệu suất thấp (≤ 2) hoặc đã nghỉ việc (Resigned) bằng cách sử dụng điều kiện OR (|).

    1. nrow(or_filter) đếm số lượng nhân viên thỏa mãn ít nhất một trong hai điều kiện trên.
    1. head(or_filter, 5) hiển thị 5 dòng đầu tiên của kết quả lọc để kiểm tra dữ liệu.

Nhận xét

Kết quả lọc theo điều kiện OR cho thấy có 52.160 nhân viên thuộc nhóm hiệu suất thấp (≤ 2) hoặc đã nghỉ việc (Resigned).

=> Đây là nhóm nhân viên có nguy cơ gắn bó thấp hoặc hiệu quả làm việc chưa đạt yêu cầu, cần được doanh nghiệp xem xét trong các phân tích về năng suất và duy trì nhân sự.

Kết hợp điều kiện AND và OR

1. mix_filter <- d %>%
2. filter(performance_rating >= 4 & (department == "IT" | department == "Marketing"))
3. nrow(mix_filter)
## [1] 16968
1. head(mix_filter, 5)
##   employee_id      full_name department         job_title hire_date
## 1  EMP0000001  Joshua Nguyen         IT Software Engineer 8/10/2011
## 2  EMP0000010    Maria Yu MD         IT Software Engineer 10/8/2015
## 3  EMP0000016 Julie Marshall  Marketing    SEO Specialist 7/19/2021
## 4  EMP0000031   Nathan Smith         IT Software Engineer 2/13/2019
## 5  EMP0000034  Steve Carlson         IT Software Engineer 4/25/2020
##                location performance_rating experience_years     status
## 1    Isaacland, Denmark                  5               14   Resigned
## 2      Brownport, Yemen                  4                9     Active
## 3  Port Phillip, Poland                  5                4     Active
## 4 Anthonyburgh, Bahamas                  4                6     Active
## 5   Grahamfurt, Jamaica                  5                5 Terminated
##   work_mode salary_inr
## 1   On-site    1585363
## 2    Remote    1543102
## 3   On-site     602022
## 4   On-site    1076433
## 5   On-site    1039192

Giải thích kĩ thuật

  • 1-2. Lọc các bản ghi nhân viên có hiệu suất ≥ 4 và thuộc phòng ban IT hoặc Marketing, kết hợp điều kiện AND (&) và OR (|) trong cùng một câu lệnh.

    1. nrow(mix_filter) đếm số lượng nhân viên thỏa các điều kiện lọc trên.
    1. head(mix_filter, 5) hiển thị 5 dòng đầu tiên của kết quả để kiểm tra dữ liệu sau khi lọc.

Nhận xét

Kết quả lọc kết hợp điều kiện AND và OR cho thấy có 16.968 nhân viên đạt hiệu suất ≥ 4 và thuộc phòng ban IT hoặc Marketing.

=> Đây là nhóm nhân viên có hiệu quả làm việc cao trong các bộ phận trọng yếu, có thể được xem là lực lượng đóng góp chính vào năng suất và hoạt động truyền thông của doanh nghiệp.

3.3.5 Sắp xếp dữ liệu

Sắp xếp dữ liệu giảm dần

1. sorted_salary <- d %>% arrange(desc(salary_inr))
2. head(sorted_salary, 5)
##   employee_id       full_name department  job_title  hire_date
## 1  EMP0045060      Sean Stone         IT IT Manager 10/15/2024
## 2  EMP0001824  Christina West         IT IT Manager  3/13/2020
## 3  EMP0039837   Sheena Thomas         IT IT Manager   4/7/2024
## 4  EMP0048705    Nicole Banks         IT IT Manager  6/15/2023
## 5  EMP0093869 Charles Cochran         IT IT Manager  3/16/2015
##                       location performance_rating experience_years     status
## 1      Lake Robertberg, Angola                  3                0 Terminated
## 2         Weaverville, Nigeria                  2                5     Active
## 3    Ryanville, American Samoa                  4                1   Resigned
## 4        Armstrongstad, Poland                  2                2     Active
## 5 South Adamtown, Sierra Leone                  4               10     Active
##   work_mode salary_inr
## 1   On-site    2997010
## 2    Remote    2994359
## 3    Remote    2992188
## 4    Remote    2991695
## 5   On-site    2991022

Giải thích kĩ thuật

    1. arrange(desc(salary_inr)) sắp xếp dữ liệu nhân viên theo mức lương giảm dần, từ cao đến thấp.
    1. head(sorted_salary, 5) hiển thị 5 dòng đầu tiên sau khi sắp xếp để kiểm tra kết quả.

Nhận xét

Dữ liệu đã được sắp xếp giảm dần theo mức lương (salary_inr).

=> Các nhân viên có mức thu nhập cao nhất chủ yếu thuộc phòng IT và giữ chức vụ quản lý (IT Manager). Điều này gợi ý rằng vị trí và bộ phận công tác có thể là yếu tố quan trọng ảnh hưởng đến mức lương trong doanh nghiệp.

Sắp xếp dữ liệu tăng dần

1. sorted_rating <- d %>% arrange(performance_rating)
2. head(sorted_rating, 5)
##   employee_id        full_name department         job_title  hire_date
## 1  EMP0000003  Alyssa Martinez         HR        HR Manager  3/20/2023
## 2  EMP0000004  Nicholas Valdez         IT Software Engineer 10/12/2023
## 3  EMP0000011    Jordan Haynes      Sales   Sales Executive 10/27/2018
## 4  EMP0000026      Craig Kelly         IT Software Engineer  1/15/2025
## 5  EMP0000035 Kathleen Shields         IT        IT Manager  7/26/2023
##                                  location performance_rating experience_years
## 1        Port Christinaport, Saudi Arabia                  1                2
## 2 Port Shelbychester, Antigua and Barbuda                  1                1
## 3              Lake Katherineland, Gambia                  1                6
## 4                Martinmouth, Switzerland                  1                0
## 5                North Brianmouth, Zambia                  1                2
##     status work_mode salary_inr
## 1   Active   On-site    1430084
## 2   Active   On-site     990689
## 3   Active   On-site     617992
## 4 Resigned    Remote    1201087
## 5  Retired   On-site    2615626

Giải thích kĩ thuật

    1. arrange(performance_rating) sắp xếp dữ liệu nhân viên theo điểm đánh giá hiệu suất tăng dần, từ thấp đến cao.
    1. head(sorted_rating, 5) hiển thị 5 dòng đầu tiên sau khi sắp xếp để kiểm tra kết quả.

Nhận xét

Dữ liệu đã được sắp xếp tăng dần theo điểm hiệu suất (performance_rating).

=> Các nhân viên có điểm thấp nhất (mức 1) thuộc nhiều phòng ban khác nhau như HR, IT, Sales, cho thấy hiệu suất thấp không tập trung ở một bộ phận cụ thể, mà phân bố rải rác trong tổ chức.

3.3.6 Tổng hợp dữ liệu

1. agg_dept <- d %>%
2.    group_by(department) %>%
3.    summarise(
4.      Mean_Salary = round(mean(salary_inr, na.rm = TRUE), 0),
5.      Min_Salary  = round(min(salary_inr, na.rm = TRUE), 0),
6.      Max_Salary  = round(max(salary_inr, na.rm = TRUE), 0),
7.      Mean_Perf = round(mean(performance_rating, na.rm = TRUE), 2),
8.      Min_Perf  = round(min(performance_rating, na.rm = TRUE), 2),
9.      Max_Perf  = round(max(performance_rating, na.rm = TRUE), 2),
10.     Count = n())
11. agg_dept
## # A tibble: 7 × 8
##   department Mean_Salary Min_Salary Max_Salary Mean_Perf Min_Perf Max_Perf Count
##   <fct>            <dbl>      <dbl>      <dbl>     <dbl>    <dbl>    <dbl> <int>
## 1 Finance         945457     400035    2498983      3.02        1        5 10108
## 2 HR              738387     300255    1798728      2.98        1        5  8102
## 3 IT             1127214     400037    2997010      3.01        1        5 30025
## 4 Marketing       769085     400009    1199775      3           1        5 12057
## 5 Operations      756822     400005    1199991      3           1        5 15243
## 6 R&D             797597     400081    1199789      2.98        1        5  4952
## 7 Sales           794791     400023    1799975      3           1        5 20013

Giải thích kĩ thuật

  • 1-2. Nhóm dữ liệu theo phòng ban (department) để thực hiện tính toán riêng cho từng nhóm.

  • 3-6. Tính lương trung bình, nhỏ nhất, lớn nhất cho mỗi phòng ban (bỏ qua giá trị NA).

  • 7-9. Tính điểm hiệu suất trung bình, nhỏ nhất, lớn nhất cho từng phòng ban.

    1. Count = n() đếm số lượng nhân viên trong mỗi phòng ban.
    1. agg_dept hiển thị kết quả tổng hợp sau khi tính toán.

Nhận xét

Bảng tổng hợp cho thấy:

  • Phòng IT có mức lương trung bình cao nhất (1.127.214 INR) và cũng có hiệu suất trung bình khá (3.01), chứng tỏ đây là bộ phận quan trọng nhất, có ảnh hưởng lớn, cần được chú ý đặc biệt.

  • Finance đứng thứ hai về lương (945.457 INR) với hiệu suất trung bình cao nhất (3.02).

  • Các phòng còn lại như HR, Marketing, Operations, R&D, Sales có mức lương trung bình thấp hơn (khoảng 730.000–800.000 INR) và hiệu suất trung bình tương đối đồng đều (khoảng 3 điểm).

=> Nhìn chung, sự chênh lệch thu nhập giữa các phòng ban khá rõ, trong khi hiệu suất làm việc không khác biệt lớn, gợi ý rằng mức lương có thể chịu ảnh hưởng nhiều bởi vị trí và chức năng công việc.

3.3.7 Tạo biến mới

1. d <- d %>%
2.    mutate(status_bin = ifelse(status == "Active", 1, 0))
3. head(d[, c("status", "status_bin")])
##     status status_bin
## 1 Resigned          0
## 2   Active          1
## 3   Active          1
## 4   Active          1
## 5   Active          1
## 6   Active          1

Giải thích kĩ thuật

  • 1-2. Sử dụng mutate() để tạo biến nhị phân mới status_bin:

    • Nếu status = “Active” → gán giá trị 1

    • Nếu status = “Resigned” → gán giá trị 0 Giúp mã hóa trạng thái việc làm thành dạng số để dễ phân tích.

    1. head(…) hiển thị 6 dòng đầu tiên của hai cột status và status_bin để kiểm tra kết quả mã hóa.

Nhận xét

Biến mới status_bin được tạo dưới dạng nhị phân:

  • Giá trị 1 biểu thị nhân viên đang làm việc (Active)

  • Giá trị 0 biểu thị nhân viên đã nghỉ việc (Resigned)

1. d$exp_group <- cut(d$experience_years,
2.       breaks = c(0, 5, 10, Inf),
3.       labels = c("Dưới 5 năm", "5–10 năm", "Trên 10 năm"),
4.       include.lowest = TRUE)
5. head(d[, c("experience_years", "exp_group")])
##   experience_years   exp_group
## 1               14 Trên 10 năm
## 2                7    5–10 năm
## 3                2  Dưới 5 năm
## 4                1  Dưới 5 năm
## 5                0  Dưới 5 năm
## 6                4  Dưới 5 năm

Giải thích kĩ thuật

  • 1-4. Sử dụng hàm cut() để phân nhóm biến kinh nghiệm (experience_years) thành 3 nhóm

    1. Tham số include.lowest = TRUE giúp bao gồm giá trị nhỏ nhất trong nhóm đầu tiên.
    1. head(…) hiển thị 6 dòng đầu tiên của hai cột experience_years và exp_group để kiểm tra kết quả phân nhóm.

Nhận xét

Biến mới exp_group đã được tạo, chia nhân viên thành 3 nhóm kinh nghiệm:

  • Dưới 5 năm

  • 5–10 năm

  • Trên 10 năm

3.4 PHÂN TÍCH MỘT BIẾN

3.4.1 Phân tích biến định tính

3.4.1.1 Department (Phòng ban)

Bảng tần số

1. d$department <- as.factor(d$department)
2. tanso_department <- table(d$department)
3. print(tanso_department)
## 
##    Finance         HR         IT  Marketing Operations        R&D      Sales 
##      10108       8102      30025      12057      15243       4952      20013

Giải thích kĩ thuật

    1. Chuyển biến department sang kiểu factor để xử lý dữ liệu dạng phân loại.
    1. Tạo bảng tần số đếm số lượng quan sát trong từng nhóm của biến department.
    1. In kết quả bảng tần số ra màn hình để xem số lượng từng phòng ban.

Biểu đồ tần số

1. ggplot(d, aes(x = department, fill = department)) +
2.    geom_bar(width = 0.7) +
3.    geom_text(stat = "count", aes(label = ..count..),
4.              vjust = -0.4, size = 2.5, family = "Times New Roman") +
5.    labs(
6.      title = "PHÂN BỐ NHÂN VIÊN THEO PHÒNG BAN",
7.      x = "Phòng ban",
8.      y = "Số lượng nhân viên") +
9.    scale_fill_brewer(palette = "Set3") +
10.   theme_minimal(base_family = "Times New Roman") +
11.   theme(
12.     legend.position = "none", 
13.     axis.text.x = element_text(angle = 12, hjust = 1, size = 8),
14.     axis.text.y = element_text(size = 8),
15.     axis.title.x = element_text(size = 8, face = "bold"),
16.     axis.title.y = element_text(size = 8, face = "bold"),
17.     plot.title = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1-2. Khởi tạo biểu đồ với ggplot(), trục X là department, màu cột theo từng phòng ban và vẽ các cột thể hiện số lượng nhân viên bằng geom_bar().

  • 3-4. Thêm nhãn số lượng nhân viên trên mỗi cột bằng geom_text(), điều chỉnh vị trí và phông chữ Times New Roman.

  • 5-8. Dùng labs() để đặt tiêu đề biểu đồ và nhãn cho trục X, Y.

    1. Áp dụng scale_fill_brewer(palette = “Set3”) để tạo bảng màu nhẹ, giúp phân biệt các phòng ban rõ ràng.
    1. Sử dụng theme_minimal() để tạo giao diện tối giản với phông Times New Roman.
  • 11-18. Dùng theme() để tùy chỉnh giao diện: ẩn chú giải, chỉnh kích thước – độ nghiêng chữ trục, in đậm tiêu đề và căn giữa tiêu đề biểu đồ.

Nhận xét

  • Bộ dữ liệu gồm 100.500 nhân viên, được phân bổ vào 6 phòng ban chính trong tập đoàn.

  • Phòng IT có 30.025 nhân viên, chiếm tỷ lệ cao nhất trong toàn bộ mẫu.

  • Phòng Sales đứng thứ hai với 20.013 nhân viên, cho thấy vai trò lớn trong hoạt động kinh doanh.

  • Phòng Operations có 15.243 nhân viên, thể hiện lực lượng vận hành tương đối mạnh.

  • Các phòng Marketing (12.057 nhân viên) và Finance (10.108 nhân viên) có quy mô trung bình.

  • Phòng R&D (Nghiên cứu & Phát triển) có 4.952 nhân viên, chiếm tỷ trọng nhỏ nhất.

=> Cơ cấu này cho thấy tập đoàn tập trung nguồn nhân lực chủ yếu vào công nghệ (IT), bán hàng (Sales) và vận hành (Operations), phản ánh định hướng ưu tiên về phát triển kỹ thuật, thị trường và năng lực vận hành trong tổ chức đa quốc gia.

Bảng tần suất

1. tansuat_department <- prop.table(table(d$department)) * 100
2. print(round(tansuat_department, 2))
## 
##    Finance         HR         IT  Marketing Operations        R&D      Sales 
##      10,06       8,06      29,88      12,00      15,17       4,93      19,91

Giải thích kĩ thuật

    1. Sử dụng prop.table(table(…)) * 100 để tính tần suất (%) của từng nhóm trong biến department.
    1. Dùng round(…, 2) để làm tròn kết quả đến 2 chữ số thập phân và in ra màn hình bằng print().

Biểu đồ tần suất

1. par(family = "Times New Roman")
2.  cols <- rainbow(length(tansuat_department))
3.  nhanlabels <- paste0(round(tansuat_department, 1), "%")
4.  pie(
5.    tansuat_department,
6.    labels = NA,
7.    main   = "TỶ LỆ (%) NHÂN VIÊN THEO PHÒNG BAN",
8.    col    = cols,
9.    border = "white",
10.    cex.main = 0.7,
11.   font.main = 2)
12.  legend(
13.    x      = "topright",
14.    legend = paste(names(tansuat_department), nhanlabels),
15.    fill   = cols,
16.    bty    = "n",
17.    cex    = 0.5,
18.    text.font = 1,
19.    text.col = "black")

Giải thích kĩ thuật

  • 1-3. Thiết lập phông chữ Times New Roman, tạo bảng màu cho từng lát bằng rainbow() và tạo nhãn phần trăm (%) cho biểu đồ tròn.

  • 4-11. Sử dụng hàm pie() để vẽ biểu đồ tròn thể hiện tỷ lệ nhân viên theo phòng ban, với màu sắc, tiêu đề và phông chữ được tùy chỉnh.

  • 12-19. Dùng hàm legend() để thêm chú giải (legend) hiển thị tên phòng ban và phần trăm tương ứng, giúp biểu đồ trực quan và dễ đọc hơn.

Nhận xét

  • Phòng IT chiếm tỷ lệ cao nhất với 29,9%, thể hiện đây là bộ phận trọng tâm, đóng vai trò cốt lõi trong hoạt động công nghệ và vận hành hệ thống.

  • Phòng Sales đứng thứ hai với 19,9%, phản ánh tầm quan trọng của hoạt động kinh doanh và mở rộng thị trường.

  • Phòng Operations chiếm 15,2%, giữ vai trò duy trì hoạt động nội bộ và quy trình vận hành của tổ chức.

  • Hai phòng Marketing (12,0%) và Finance (10,1%) có tỷ trọng trung bình, hỗ trợ phát triển thương hiệu và quản lý tài chính.

  • Phòng R&D (Nghiên cứu & Phát triển) có 4,9%, là nhóm nhỏ nhất nhưng có ý nghĩa chiến lược trong đổi mới sản phẩm và công nghệ.

3.4.1.2 Status (Tình trạng việc làm)

Bảng tần số

1. d$status <- as.factor(d$status)
2. tanso_status <- table(d$status)
3. print(tanso_status)
## 
##     Active   Resigned    Retired Terminated 
##      70346      19998       5141       5015

Giải thích kĩ thuật

    1. Chuyển biến status sang kiểu factor để xử lý dữ liệu dạng phân loại.
    1. Tạo bảng tần số đếm số lượng bản ghi theo từng trạng thái làm việc.
    1. In kết quả bảng tần số ra màn hình để xem số lượng của từng nhóm trong biến status.

Biểu đồ tần số

1. ggplot(d, aes(x = status, fill = status)) +
2.    geom_bar(width = 0.7) +
3.    labs(
4.      title = "PHÂN BỐ NHÂN VIÊN THEO TÌNH TRẠNG VIỆC LÀM",
5.      x     = "Tình trạng việc làm",
6.      y     = "Số lượng nhân viên") +
7.    scale_fill_brewer(palette = "Pastel1") +
8.    theme_minimal(base_family = "Times New Roman") +
9.   theme(
10.     text = element_text(family = "Times New Roman"),
11.     legend.position = "none",
12.     axis.text.x = element_text(angle = 0, hjust = 0.5, size = 8),
13.     axis.text.y = element_text(size = 8),
14.     axis.title.x = element_text(size = 8, face = "bold"),
15.     axis.title.y = element_text(size = 8, face = "bold"),
16.     plot.title = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–2. Khởi tạo biểu đồ bằng ggplot() và vẽ các cột biểu diễn số lượng nhân viên theo từng trạng thái việc làm bằng geom_bar().

  • 3–7. Dùng labs() để đặt tiêu đề biểu đồ và nhãn cho trục X, Y.

  • Áp dụng bảng màu nhẹ “Pastel1” để các cột dễ phân biệt và trực quan hơn.

  • Sử dụng theme_minimal() để biểu đồ có phong cách tối giản với phông Times New Roman.

  • 10–18. Dùng theme() để tùy chỉnh bố cục, kích thước chữ, ẩn chú giải (legend) và định dạng tiêu đề, nhãn trục cho biểu đồ rõ ràng, hài hòa.

Nhận xét

  • Bộ dữ liệu gồm 100.500 nhân viên, được chia thành 4 nhóm tình trạng việc làm.

  • Nhóm Active (đang làm việc) chiếm số lượng cao nhất với 70.346 nhân viên, phản ánh lực lượng lao động chính đang hoạt động trong tập đoàn.

  • Nhóm Resigned (đã nghỉ việc) có 19.998 nhân viên, là nhóm đứng thứ hai, thể hiện tỷ lệ nghỉ việc ở mức trung bình so với quy mô lớn của tổ chức.

  • Nhóm Retired (nghỉ hưu) có 5.141 nhân viên, và Terminated (bị chấm dứt hợp đồng) là 5.015 nhân viên, đều ở mức thấp.

=> Phân bố này cho thấy phần lớn nhân viên vẫn đang làm việc tích cực, trong khi tỷ lệ nghỉ việc, nghỉ hưu hoặc bị chấm dứt hợp đồng chỉ chiếm một phần nhỏ, phản ánh sự ổn định tương đối của lực lượng lao động trong tập đoàn đa quốc gia.

Bảng tần suất

1. tansuat_status <- prop.table(tanso_status) * 100
2. print(round(tansuat_status, 2))
## 
##     Active   Resigned    Retired Terminated 
##      70,00      19,90       5,12       4,99

Giải thích kĩ thuật

    1. Sử dụng prop.table(table(…)) * 100 để tính tần suất phần trăm (%) của từng nhóm trong biến status (tình trạng việc làm).
    1. Dùng round(…, 2) để làm tròn kết quả đến 2 chữ số thập phân và hiển thị kết quả bằng hàm print().

Biểu đồ tần suất

1. par(family = "Times New Roman")
2. cols <- c("lightblue", "salmon", "pink", "lightgreen")
3. nhanlabels <- paste0(round(tansuat_status, 1), "%")
4. pie(
5.    tansuat_status,
6.    labels = NA,
7.    main   = "TỶ LỆ (%) NHÂN VIÊN THEO TÌNH TRẠNG VIỆC LÀM",
8.    col    = cols,
9.    border = "white",
10.    cex.main = 0.7,
11.    font.main = 2)
12.  legend(
13.    x      = "topright",
14.    legend = paste(names(tansuat_status), nhanlabels),
15.    fill   = cols,
16.    bty    = "n",
17.    cex    = 0.5,
18.    text.font = 1,
19.    text.col = "black")

Giải thích kĩ thuật

  • 1–3. Thiết lập phông Times New Roman, tạo bảng màu cho các lát và tạo nhãn phần trăm (%) để hiển thị trong chú giải (legend).

  • 4–11. Dùng hàm pie() để vẽ biểu đồ tròn thể hiện tỷ lệ nhân viên theo tình trạng việc làm, có tiêu đề, màu sắc và phông chữ được định dạng.

  • 12–19. Dùng hàm legend() để thêm chú giải (legend) hiển thị tên trạng thái làm việc cùng phần trăm tương ứng, giúp biểu đồ trực quan và dễ hiểu hơn.

Nhận xét

  • Nhóm Active (đang làm việc) chiếm tỷ lệ cao nhất với 70,0%, thể hiện phần lớn nhân viên hiện vẫn đang gắn bó và làm việc tích cực trong tập đoàn.

  • Nhóm Resigned (đã nghỉ việc) chiếm 19,9%, là nhóm lớn thứ hai, cho thấy có một bộ phận đáng kể nhân viên đã rời khỏi tổ chức.

  • Nhóm Terminated (bị chấm dứt hợp đồng) chiếm 5,0%, thể hiện tỷ lệ thấp, phản ánh chính sách nhân sự tương đối ổn định.

  • Nhóm Retired (nghỉ hưu) chiếm 5,1%, là nhóm nhỏ nhất, phù hợp với đặc thù cơ cấu tuổi của lực lượng lao động trong MNC.

=> Cơ cấu tỷ lệ này cho thấy đa số nhân viên vẫn đang làm việc ổn định (70%), trong khi các nhóm nghỉ việc, nghỉ hưu hoặc bị chấm dứt hợp đồng chỉ chiếm tỷ trọng nhỏ, phản ánh mức độ duy trì và giữ chân nhân sự cao trong tập đoàn đa quốc gia.

3.4.1.3 Work_Mode (Hình thức làm việc)

Bảng tần số

1. d$work_mode <- as.factor(d$work_mode)
2. tanso_work_mode <- table(d$work_mode)
3. print(tanso_work_mode)
## 
## On-site  Remote 
##   59974   40526

Giải thích kĩ thuật

    1. Chuyển biến work_mode sang kiểu factor để xử lý dữ liệu dạng phân loại (hình thức làm việc).
    1. Tạo bảng tần số đếm số lượng nhân viên theo từng hình thức làm việc.
    1. In kết quả bảng tần số ra màn hình để xem số lượng của từng nhóm trong biến work_mode.

Biểu đồ tần số

1. ggplot(d, aes(x = work_mode, fill = work_mode)) +
2.    geom_bar(width = 0.7) +
3.    labs(
4.      title = "PHÂN BỐ NHÂN VIÊN THEO HÌNH THỨC LÀM VIỆC",
5.      x     = "Hình thức làm việc",
6.      y     = "Số lượng nhân viên") +
7.    scale_fill_brewer(palette = "Pastel2") +
8.    theme_minimal(base_family = "Times New Roman") +
9.    theme(
10.     text = element_text(family = "Times New Roman"),
11.     legend.position = "none",
12.     axis.text.x = element_text(angle = 0, hjust = 0.5, size = 8),
13.     axis.text.y = element_text(size = 8),
14.     axis.title.x = element_text(size = 8, face = "bold"),
15.     axis.title.y = element_text(size = 8, face = "bold"),
16.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–2. Khởi tạo biểu đồ bằng ggplot() và vẽ các cột thể hiện số lượng nhân viên theo hình thức làm việc (work_mode).

  • 3–6. Dùng labs() để đặt tiêu đề biểu đồ và nhãn cho trục X, Y.

    1. Áp dụng bảng màu nhẹ “Pastel2” để các nhóm dễ phân biệt hơn.
    1. Dùng theme_minimal() tạo giao diện tối giản, sử dụng phông Times New Roman.
  • 9–16. Dùng theme() để tùy chỉnh bố cục, cỡ chữ, kiểu chữ, ẩn chú giải (legend) và định dạng tiêu đề biểu đồ cho rõ ràng, đẹp mắt.

Nhận xét

  • Bộ dữ liệu gồm 100.500 nhân viên, được chia thành hai nhóm hình thức làm việc chính là On-site và Remote.

  • Nhóm On-site (làm việc tại văn phòng) có 59.974 nhân viên, chiếm số lượng cao nhất, thể hiện đa số nhân viên vẫn làm việc trực tiếp tại trụ sở hoặc văn phòng của công ty.

  • Nhóm Remote (làm việc từ xa) có 40.526 nhân viên, thấp hơn nhóm On-site nhưng vẫn chiếm tỷ cao, phản ánh xu hướng chuyển dịch sang làm việc linh hoạt sau đại dịch và sự thích nghi với môi trường công nghệ.

=> Phân bố này cho thấy hình thức làm việc tại văn phòng vẫn chiếm ưu thế, tuy nhiên mô hình làm việc từ xa đang dần phổ biến, thể hiện sự thích ứng của tập đoàn đa quốc gia với xu thế lao động linh hoạt hiện nay.

Bảng tần suất

1. tansuat_work_mode <- prop.table(tanso_work_mode) * 100
2. print(round(tansuat_work_mode, 2))
## 
## On-site  Remote 
##   59,68   40,32

Giải thích kĩ thuật

  • Sử dụng prop.table(table(…)) * 100 để tính tần suất phần trăm (%) của từng nhóm trong biến work_mode (hình thức làm việc).

  • Dùng round(…, 2) để làm tròn kết quả đến 2 chữ số thập phân và hiển thị ra màn hình bằng print().

Biểu đồ tần suất

1.  par(family = "Times New Roman")
2.  cols <- c("lightblue", "lightgreen")
3.  nhanlabels <- paste0(round(tansuat_work_mode, 1), "%")
4.  pie(
5.    tansuat_work_mode,
6.    labels = NA,
7.    main   = "TỶ LỆ (%) NHÂN VIÊN THEO HÌNH THỨC LÀM VIỆC",
8.    col    = cols,
9.    border = "white",
10.   cex.main = 0.7,
11.   font.main = 2)
12.  legend(
13.    x      = "topright",
14.    legend = paste(names(tansuat_work_mode), nhanlabels),
15.    fill   = cols,
16.    bty    = "n",
17.    cex    = 0.5,
18.    text.font = 1,
19.    text.col  = "black")

Giải thích kĩ thuật

  • 1–3. Thiết lập phông chữ Times New Roman, tạo màu cho từng lát biểu đồ, và tạo nhãn phần trăm (%) để hiển thị trong chú giải (legend).

  • 4–11. Dùng hàm pie() để vẽ biểu đồ tròn thể hiện tỷ lệ nhân viên theo hình thức làm việc, với màu sắc, tiêu đề và định dạng được tùy chỉnh.

  • 12–19. Dùng hàm legend() để thêm chú giải hiển thị tên hình thức làm việc và tỷ lệ phần trăm tương ứng, giúp biểu đồ trực quan và dễ hiểu hơn.

Nhận xét

  • Nhóm On-site (làm việc tại văn phòng) chiếm 59,7%, thể hiện đây vẫn là hình thức làm việc chủ đạo trong tập đoàn.

  • Nhóm Remote (làm việc từ xa) chiếm 40,3%, phản ánh xu hướng làm việc linh hoạt ngày càng phổ biến trong môi trường doanh nghiệp hiện đại.

=> Cơ cấu tỷ lệ này cho thấy phần lớn nhân viên vẫn làm việc trực tiếp tại văn phòng, tuy nhiên tỷ lệ làm việc từ xa đạt gần 40%, chứng tỏ tập đoàn đã chuyển mìn theo hướng số hóa và linh hoạt trong chính sách nhân sự, phù hợp với xu thế toàn cầu hóa và làm việc đa quốc gia.

3.4.2 Phân tích biến định lượng

3.4.2.1 Experience_Years (Số năm kinh nghiệm)

3.4.2.1.1 Thống kê mô tả cho biến số năm kinh nghiệm
1. d$exp_years <- d$experience_years
2. summary(d$exp_years)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0,000   2,000   5,000   5,024   8,000  15,000

Giải thích kĩ thuật

  • Tạo biến mới exp_years (tên ngắn gọn hơn) từ biến experience_years để thuận tiện cho việc thao tác và phân tích.

  • Dùng hàm summary() để tạo bảng mô tả thống kê cơ bản của biến exp_years, gồm các giá trị: nhỏ nhất, lớn nhất, trung vị, trung bình và các tứ phân vị.

Nhận xét

  • Số năm kinh nghiệm của nhân viên trong tập đoàn dao động từ 0 đến 15 năm, cho thấy sự đa dạng về thâm niên công tác giữa các cá nhân.

  • Trung vị (Median) đạt 5 năm, tương đương với giá trị trung bình (Mean = 5,02 năm), phản ánh phân phối dữ liệu khá đối xứng, không có sự chênh lệch lớn giữa hai phía.

  • 25% nhân viên có kinh nghiệm dưới 2 năm, trong khi 25% còn lại có từ 8 năm kinh nghiệm trở lên, thể hiện mức độ chênh lệch tương đối giữa nhóm mới vào nghề và nhóm có kinh nghiệm cao.

  • Mức kinh nghiệm tối đa 15 năm cao gấp hơn 7 lần giá trị trung vị, cho thấy vẫn tồn tại một số nhân viên có thâm niên rất lớn so với mặt bằng chung.

=> Kết quả này phản ánh lực lượng lao động của tập đoàn đa quốc gia có mức kinh nghiệm trung bình – khá, với sự hiện diện của cả nhân viên mới và nhóm kỳ cựu lâu năm, góp phần tạo nên sự cân bằng giữa đổi mới và kinh nghiệm trong tổ chức.

3.4.2.1.2 Biểu đồ Histogram số năm kinh nghiệm
1.  ggplot(d, aes(x = exp_years)) +
2.    geom_histogram(bins = 15, fill = "lightgreen", color = "white") +
3.    scale_x_continuous(
4.      breaks = seq(0, max(d$exp_years, na.rm = TRUE), by = 1)) +
5.    labs(
6.      title = "PHÂN PHỐI SỐ NĂM KINH NGHIỆM CỦA NHÂN VIÊN",
7.      x = "Số năm kinh nghiệm",
8.      y = "Tần số") +
9.    theme_minimal(base_family = "Times New Roman") +
10.   theme(
11.     text = element_text(family = "Times New Roman"),
12.     axis.text.x = element_text(size = 8),
13.     axis.text.y = element_text(size = 8),
14.     axis.title.x = element_text(size = 8, face = "bold"),
15.     axis.title.y = element_text(size = 8, face = "bold"),
16.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–2. Khởi tạo biểu đồ bằng ggplot() và dùng geom_histogram() để vẽ biểu đồ cột (histogram) mô tả phân phối số năm kinh nghiệm của nhân viên, với cột màu xanh nhạt và viền trắng.

  • 3–4. Dùng scale_x_continuous() để thiết lập nhãn trục X cách đều 1 năm.

  • 5–8. Dùng labs() để đặt tiêu đề biểu đồ và nhãn cho trục X, Y.

  • Áp dụng giao diện tối giản với phông chữ Times New Roman bằng theme_minimal().

  • 10–16. Tùy chỉnh kiểu chữ, kích thước, định dạng tiêu đề và bố cục giúp biểu đồ rõ ràng, dễ đọc và chuyên nghiệp hơn.

Nhận xét

  • Số năm kinh nghiệm của nhân viên dao động trong khoảng 0–15 năm, thể hiện sự đa dạng về thâm niên làm việc trong tập đoàn.

  • Các nhóm có từ 0 đến 4 năm kinh nghiệm chiếm số lượng tương đối đồng đều, dao động quanh 9.900–10.000 nhân viên mỗi nhóm, phản ánh sự hiện diện khá tốt của lực lượng lao động trẻ và mới vào nghề.

  • Nhóm có 7 năm kinh nghiệm nổi bật nhất với hơn 16.000 nhân viên, là đỉnh cao của phân phối, cho thấy đây là mức kinh nghiệm phổ biến nhất trong tập đoàn.

  • Từ 10 năm kinh nghiệm trở lên, số lượng nhân viên giảm mạnh, còn khoảng 2.000 nhân viên mỗi nhóm, cho thấy nhóm nhân sự kỳ cựu chiếm tỷ trọng thấp.

=> Phân phối số năm kinh nghiệm có dạng lệch phải (right-skewed), tập trung chủ yếu ở nhân viên có kinh nghiệm từ thấp đến trung bình, trong khi nhóm có thâm niên cao chỉ chiếm tỷ lệ nhỏ. Điều này phản ánh cơ cấu nhân sự của tập đoàn đa quốc gia thiên về lực lượng lao động trẻ, năng động và đang trong giai đoạn phát triển nghề nghiệp.

3.4.2.1.3 Biểu đồ Boxplot số năm kinh nghiệm
1.  ggplot(d, aes(y = exp_years)) +
2.    geom_boxplot(fill = "lightcoral", color = "black") +
3.    labs(
4.      title = "BIỂU ĐỒ BOXPLOT SỐ NĂM KINH NGHIỆM CỦA NHÂN VIÊN",
5.      y = "Số năm kinh nghiệm") +
6.    theme_minimal(base_family = "Times New Roman") +
7.    theme(
8.      text = element_text(family = "Times New Roman"),
9.     axis.text.y = element_text(size = 8),
10.     axis.title.y = element_text(size = 8, face = "bold"),
11.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–2. Khởi tạo biểu đồ bằng ggplot() và dùng geom_boxplot() để vẽ biểu đồ Boxplot thể hiện phân bố và độ biến thiên của số năm kinh nghiệm, với màu nền đỏ nhạt và viền đen.

  • 3–5. Dùng labs() để đặt tiêu đề biểu đồ và nhãn cho trục Y.

    1. Áp dụng giao diện tối giản và phông Times New Roman bằng theme_minimal().
  • 7–11. Dùng theme() để tùy chỉnh kích thước, kiểu chữ và căn giữa tiêu đề, giúp biểu đồ rõ ràng, dễ đọc và thẩm mỹ hơn.

Nhận xét

  • Biểu đồ Boxplot thể hiện giá trị trung vị (Median) của số năm kinh nghiệm nằm khoảng 5 năm.

  • Khoảng tứ phân vị trải dài từ 2 năm (Q1) đến 8 năm (Q3), cho thấy phần lớn nhân viên có thâm niên làm việc trong khoảng này.

  • Phân bố dữ liệu khá cân đối, không xuất hiện giá trị ngoại lai (outliers), phản ánh sự đồng đều tương đối về thâm niên giữa các nhân viên trong tập đoàn.

  • Độ phân tán dữ liệu không quá lớn, minh chứng cho việc các nhân viên có kinh nghiệm ở mức trung bình, không có sự chênh lệch quá lớn giữa nhóm ít và nhóm nhiều năm kinh nghiệm.

=> Tổng thể, biểu đồ Boxplot cho thấy phân bố kinh nghiệm làm việc ổn định và tập trung quanh mức trung bình 5 năm, đặc trưng cho cơ cấu nhân sự có độ chín nghề nghiệp vừa phải, phù hợp với một tập đoàn đa quốc gia có quy mô lớn và chính sách nhân sự cân bằng.

3.4.2.2 Performance_Rating (Điểm đánh giá hiệu suất làm việc của nhân viên)

3.4.2.2.1 Thống kê mô tả cho biến số năm kinh nghiệm
1. d$perf_rate <- d$performance_rating
2. summary(d$perf_rate)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1,000   2,000   3,000   3,002   4,000   5,000

Giải thích kĩ thuật

  • Tạo biến mới perf_rate (tên rút gọn) từ biến performance_rating để thuận tiện cho việc xử lý và phân tích dữ liệu.

  • Dùng hàm summary() để tạo bảng thống kê mô tả cơ bản của biến perf_rate, gồm giá trị nhỏ nhất, lớn nhất, trung bình, trung vị và các tứ phân vị.

Nhận xét

  • Điểm đánh giá hiệu suất của nhân viên dao động từ 1 đến 5 điểm.

  • Trung vị (Median) đạt 3 điểm, gần tương đương với giá trị trung bình (Mean = 3,002 điểm), cho thấy phân phối dữ liệu khá cân đối, không có hiện tượng lệch rõ rệt về phía nào.

  • 25% nhân viên có điểm đánh giá dưới 2 điểm, trong khi 25% khác đạt trên 4 điểm, phản ánh sự khác biệt rõ ràng về hiệu suất giữa các nhóm nhân viên.

  • Mức tối đa 5 điểm và tối thiểu 1 điểm cho thấy hệ thống đánh giá bao phủ toàn bộ thang đo, đảm bảo khả năng phân loại nhân viên theo hiệu quả công việc.

=> Kết quả này cho thấy phần lớn nhân viên đạt mức hiệu suất trung bình – khá (khoảng 3 điểm), trong khi vẫn tồn tại nhóm nhỏ đạt điểm cao thể hiện năng suất nổi trội, và một nhóm nhỏ có điểm thấp cần được đào tạo hoặc cải thiện hiệu quả làm việc.

3.4.2.2.2 Biểu đồ Histogram điểm hiệu suất làm việc
1. ggplot(d, aes(x = perf_rate)) +
2.    geom_histogram(
3.      bins = 5,
4.      fill = "lightpink",
5.      color = "white") +
6.    geom_text(
7.      stat = "bin",
8.      bins = 5,
9.      aes(label = ..count..),
10.     vjust = -0.5,
11.     size = 2.5,
12.     color = "black",
13.     family = "Times New Roman") +
14.   scale_x_continuous(
15.     breaks = seq(1, 5, by = 1)) +
16.   labs(
17.     title = "ĐIỂM HIỆU SUẤT LÀM VIỆC CỦA NHÂN VIÊN",
18.     x = "Điểm đánh giá hiệu suất (1–5)",
19.     y = "Tần số") +
20.   theme_minimal(base_family = "Times New Roman") +
21.   theme(
22.     text = element_text(family = "Times New Roman"),
23.     axis.text.x = element_text(size = 8),
24.     axis.text.y = element_text(size = 8),
25.     axis.title.x = element_text(size = 8, face = "bold"),
26.     axis.title.y = element_text(size = 8, face = "bold"),
27.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–5. Khởi tạo biểu đồ bằng ggplot() và dùng geom_histogram() để vẽ biểu đồ cột (histogram) thể hiện phân phối điểm hiệu suất (1–5) của nhân viên, với màu nền hồng nhạt và viền trắng.

  • 6–13. Thêm nhãn hiển thị tần số (số lượng nhân viên) lên đầu mỗi cột bằng geom_text(), định dạng phông Times New Roman.

  • 14–15. Dùng scale_x_continuous() để hiển thị 5 mức điểm cố định từ 1 đến 5.

  • 16–19. Dùng labs() để đặt tiêu đề biểu đồ và nhãn trục X, Y.

    1. Áp dụng giao diện tối giản và phông Times New Roman bằng theme_minimal().
  • 21–27. Tùy chỉnh cỡ chữ, kiểu chữ và căn giữa tiêu đề, giúp biểu đồ rõ ràng, dễ đọc và chuyên nghiệp hơn.

Nhận xét

  • Phân phối điểm tương đối đồng đều giữa các mức, khi mỗi nhóm điểm (1–5) đều có khoảng 20.000 nhân viên, chênh lệch không đáng kể.

  • Điều này cho thấy hệ thống đánh giá hiệu suất được triển khai một cách cân bằng và toàn diện, không có sự thiên lệch nghiêng về bất kỳ mức điểm nào.

  • Không xuất hiện dấu hiệu lệch phải hoặc lệch trái trong phân phối, thể hiện mức độ khách quan cao của quy trình đánh giá.

=> Kết quả biểu đồ cho thấy các mức điểm hiệu suất được phân bố khá đều, phản ánh chính sách đánh giá công bằng và đồng nhất giữa các phòng ban và vị trí công việc trong tập đoàn đa quốc gia.

3.4.2.2.3 Biểu đồ Boxplot số năm kinh nghiệm
1.  ggplot(d, aes(y = exp_years)) +
2.    geom_boxplot(fill = "lightcoral", color = "black") +
3.    labs(
4.      title = "BIỂU ĐỒ BOXPLOT SỐ NĂM KINH NGHIỆM CỦA NHÂN VIÊN",
5.      y = "Số năm kinh nghiệm") +
6.    theme_minimal(base_family = "Times New Roman") +
7.    theme(
8.      text = element_text(family = "Times New Roman"),
9.     axis.text.y  = element_text(size = 8),
10.     axis.title.y = element_text(size = 8, face = "bold"),
11.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–2. Khởi tạo biểu đồ bằng ggplot() và dùng geom_boxplot() để vẽ biểu đồ Boxplot thể hiện phân bố và độ biến thiên của số năm kinh nghiệm, với màu nền đỏ nhạt và viền đen.

  • 3–5. Dùng labs() để đặt tiêu đề (IN HOA) và nhãn cho trục tung (Y).

    1. Áp dụng giao diện tối giản và phông Times New Roman bằng theme_minimal().
  • 7–11. Dùng theme() để tùy chỉnh kích thước chữ, kiểu chữ và căn giữa tiêu đề, giúp biểu đồ hiển thị rõ ràng, cân đối và chuyên nghiệp hơn.

Nhận xét

  • Biểu đồ Boxplot cho thấy giá trị trung vị (Median) của điểm hiệu suất nằm ở mức 3, tương ứng với kết quả trung bình của toàn bộ mẫu.

  • Khoảng tứ phân vị (IQR) trải dài từ 2 điểm (Q1) đến 4 điểm (Q3), phản ánh phần lớn nhân viên có điểm đánh giá nằm trong mức trung bình – khá.

  • Phân bố dữ liệu không xuất hiện giá trị ngoại lai, cho thấy hệ thống đánh giá được thực hiện ổn định và đồng đều giữa các nhân viên.

  • Hộp Boxplot đối xứng quanh trung vị, thể hiện mức độ nhất quán cao trong việc chấm điểm hiệu suất.

=> Tổng thể, biểu đồ cho thấy đa số nhân viên có hiệu suất làm việc ở mức trung bình và khá ổn định, phản ánh cơ chế đánh giá công bằng, khách quan và đồng đều trong tập đoàn đa quốc gia.

3.4.2.3 Salary_INR (Mức lương hàng năm của nhân viên)

3.4.2.3.1 Thống kê mô tả cho biến lương hàng năm (INR)
1. d$sal_inr <- d$salary_inr
2. summary(d$sal_inr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  300255  615685  810449  896007 1073690 2997010

Giải thích kĩ thuật

    1. Tạo biến mới sal_inr (tên rút gọn) từ biến salary_inr để thuận tiện cho việc thao tác và phân tích dữ liệu.
    1. Dùng hàm summary() để tạo bảng thống kê mô tả cơ bản của biến sal_inr, gồm các giá trị nhỏ nhất, lớn nhất, trung bình, trung vị và các tứ phân vị.

Nhận xét

  • Mức lương hàng năm của nhân viên trong tập đoàn dao động từ 300.255 INR đến 2.997.010 INR, thể hiện sự chênh lệch khá rõ về thu nhập giữa các vị trí và cấp bậc công việc.

  • Trung vị (Median) đạt 810.449 INR, thấp hơn trung bình (Mean = 896.007 INR), phản ánh phân phối dữ liệu lệch phải, tức là có một nhóm nhỏ nhân viên hưởng mức lương rất cao kéo giá trị trung bình tăng lên.

  • 25% nhân viên có thu nhập dưới 615.685 INR, trong khi 25% còn lại có mức lương trên 1.073.690 INR, cho thấy sự phân hóa thu nhập rõ rệt giữa nhóm có và không có kinh nghiệm cao.

  • Mức lương tối đa 2.997.010 INR cao gấp gần 10 lần mức tối thiểu, chứng tỏ có sự khác biệt đáng kể về chức danh, thâm niên và hiệu suất làm việc giữa các nhân viên.

=> Kết quả này phản ánh cơ cấu lương trong tập đoàn đa quốc gia mang tính phân tầng cao, trong đó đa số nhân viên hưởng mức lương trung bình – khá, nhưng vẫn tồn tại nhóm nhỏ nhân viên cấp cao hoặc chuyên gia có thu nhập vượt trội do đặc thù vị trí và năng lực chuyên môn.

3.4.2.3.2 Biểu đồ Histogram mức lương hàng năm (INR)
1.  ggplot(d, aes(x = sal_inr)) +
2.    geom_histogram(
3.      bins = 40,
4.      fill = "skyblue",
5.      color = "white") +
6.    labs(
7.      title = "PHÂN PHỐI MỨC LƯƠNG HÀNG NĂM CỦA NHÂN VIÊN (INR)",
8.      x = "Mức lương (INR)",
9.      y = "Tần số") +
10.   theme_minimal(base_family = "Times New Roman") +
11.   theme(
12.     text = element_text(family = "Times New Roman"),
13.     axis.text.x  = element_text(size = 8),
14.     axis.text.y  = element_text(size = 8),
15.     axis.title.x = element_text(size = 8, face = "bold"),
16.     axis.title.y = element_text(size = 8, face = "bold"),
17.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–5. Khởi tạo biểu đồ bằng ggplot() và dùng geom_histogram() để vẽ biểu đồ phân phối mức lương hàng năm, với 40 cột chi tiết, màu nền xanh dương nhạt và viền trắng.

  • 6–9. Dùng labs() để đặt tiêu đề (IN HOA) và nhãn cho trục X, Y.

    1. Áp dụng giao diện tối giản và phông chữ Times New Roman bằng theme_minimal().
  • 11–17. Dùng theme() để tùy chỉnh cỡ chữ, kiểu chữ, in đậm nhãn trục, và căn giữa tiêu đề biểu đồ, giúp hiển thị chuyên nghiệp và dễ đọc.

Nhận xét

  • Biểu đồ cho thấy mức lương của nhân viên chủ yếu tập trung trong khoảng từ 400.000 INR đến 1.200.000 INR/năm, là vùng có tần số xuất hiện cao nhất.

  • Phân phối dữ liệu có dạng lệch phải (right-skewed), thể hiện qua việc có một số ít nhân viên có mức lương rất cao kéo dài phần đuôi bên phải của biểu đồ.

  • Phần lớn nhân viên nhận lương quanh mức 800.000–1.000.000 INR/năm, tương ứng với giá trị trung vị (810.449 INR) và trung bình (896.007 INR) đã được tính trong thống kê mô tả.

  • Nhóm nhân viên có mức thu nhập trên 2.000.000 INR/năm chỉ chiếm tỷ lệ nhỏ, nhưng góp phần làm tăng độ lệch của phân phối và phản ánh sự hiện diện của nhóm chuyên gia hoặc quản lý cấp cao.

=> Biểu đồ Histogram cho thấy mức lương nhân viên trong tập đoàn đa quốc gia phân bố không đồng đều, tập trung mạnh ở nhóm thu nhập trung bình – khá, trong khi một nhóm nhỏ nhân viên cấp cao có thu nhập vượt trội làm kéo phân phối về phía phải.

3.4.2.3.3 Biểu đồ Boxplot mức lương hàng năm (INR)
1.  ggplot(d, aes(y = sal_inr)) +
2.    geom_boxplot(fill = "lightcoral", color = "black") +
3.    labs(
4.      title = "BIỂU ĐỒ BOXPLOT MỨC LƯƠNG HÀNG NĂM CỦA NHÂN VIÊN",
5.      y = "Mức lương (INR)") +
6.    theme_minimal(base_family = "Times New Roman") +
7.    theme(
8.      text = element_text(family = "Times New Roman"),
9.      axis.text.y  = element_text(size = 8),
10.      axis.title.y = element_text(size = 8, face = "bold"),
11.      plot.title   = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

  • 1–2. Khởi tạo biểu đồ bằng ggplot() và dùng geom_boxplot() để vẽ biểu đồ Boxplot thể hiện phân bố mức lương hàng năm (INR) của nhân viên, với nền đỏ nhạt và viền đen.

  • 3–5. Dùng labs() để đặt tiêu đề (IN HOA) và nhãn cho trục tung (Y).

    1. Áp dụng giao diện tối giản và phông chữ Times New Roman bằng theme_minimal().
  • 7–11. Dùng theme() để tùy chỉnh kích thước, kiểu chữ và căn giữa tiêu đề, giúp biểu đồ rõ ràng, đẹp mắt và dễ đọc hơn.

Nhận xét

  • Biểu đồ Boxplot cho thấy giá trị trung vị (Median) của mức lương nằm khoảng 800.000 INR, phù hợp với kết quả thống kê mô tả trước đó.

  • Khoảng tứ phân vị (IQR) trải rộng từ khoảng 600.000 INR đến hơn 1.000.000 INR, phản ánh sự khác biệt lớn giữa nhóm thu nhập thấp và trung bình.

  • Phần râu trên của biểu đồ kéo dài mạnh, xuất hiện nhiều điểm ngoại lai (outliers) ở vùng lương cao trên 2.000.000 INR, thể hiện sự tồn tại của một nhóm nhỏ nhân viên có thu nhập vượt trội.

  • Phân phối dữ liệu lệch phải rõ rệt, tương ứng với hình dạng của biểu đồ Histogram, cho thấy đa số nhân viên có mức lương trung bình – khá, trong khi chỉ một số ít thuộc nhóm quản lý cấp cao hoặc chuyên gia có lương cao đột biến.

=> Biểu đồ Boxplot khẳng định sự chênh lệch lớn về thu nhập trong tập đoàn, phản ánh sự phân tầng tự nhiên theo cấp bậc, kinh nghiệm và vai trò công việc, đồng thời cho thấy tập đoàn có chính sách đãi ngộ khác biệt cho các vị trí chiến lược.

3.5 PHÂN TÍCH CÁC YẾU TỐ ẢNH HƯỞNG ĐẾN MỨC LƯƠNG CỦA NHÂN VIÊN TRONG TẬP ĐOÀN ĐA QUỐC GIA (MNC)

3.5.1 Ảnh hưởng của phòng ban (Department) đến mức lương (Salary_INR)

3.5.1.1 Thống kê mô tả mức lương theo phòng ban

1. salary_dept <- d %>%
2.    group_by(department) %>%
3.    summarise(
4.      Mean_Salary   = round(mean(salary_inr, na.rm = TRUE), 0),
5.      Median_Salary = round(median(salary_inr, na.rm = TRUE), 0),
6.      SD_Salary     = round(sd(salary_inr, na.rm = TRUE), 0),
7.      Min_Salary    = min(salary_inr, na.rm = TRUE),
8.      Max_Salary    = max(salary_inr, na.rm = TRUE),
9.      Count         = n())
10.  salary_dept
## # A tibble: 7 × 7
##   department Mean_Salary Median_Salary SD_Salary Min_Salary Max_Salary Count
##   <fct>            <dbl>         <dbl>     <dbl>      <dbl>      <dbl> <int>
## 1 Finance         945457        812783    452612     400035    2498983 10108
## 2 HR              738387        673178    318515     300255    1798728  8102
## 3 IT             1127214       1034115    498111     400037    2997010 30025
## 4 Marketing       769085        760255    220827     400009    1199775 12057
## 5 Operations      756822        741013    220867     400005    1199991 15243
## 6 R&D             797597        798126    230812     400081    1199789  4952
## 7 Sales           794791        746016    293963     400023    1799975 20013

Giải thích kĩ thuật

  • 1–2. Tạo bảng mới salary_dept và nhóm dữ liệu theo phòng ban (department) bằng group_by().

  • 3–9. Dùng summarise() để tính các chỉ tiêu thống kê cơ bản cho từng phòng ban, gồm:

    • Lương trung bình, trung vị, độ lệch chuẩn (SD).

    • Lương nhỏ nhất, lớn nhất và số lượng nhân viên (Count).

  • 10–11. Hiển thị bảng thống kê tổng hợp theo phòng ban.

Nhận xét

  • Mức lương trung bình giữa các phòng ban trong tập đoàn có sự chênh lệch rõ, phản ánh đặc thù công việc và yêu cầu kỹ năng khác nhau của từng bộ phận.

  • Phòng IT có mức lương trung bình cao nhất (1.127.214 INR/năm) và trung vị 1.034.115 INR, vượt trội so với các phòng khác. Điều này cho thấy nhân viên trong lĩnh vực công nghệ được đãi ngộ cao, tương xứng với vai trò chiến lược trong hoạt động vận hành và chuyển đổi số của tập đoàn.

  • Phòng Finance xếp thứ hai với mức lương trung bình 945.457 INR, cao hơn so với các khối hỗ trợ khác, thể hiện tầm quan trọng của bộ phận tài chính trong quản lý nguồn vốn và hiệu quả kinh doanh.

  • Nhóm phòng Marketing, Operations, Sales và R&D có mức lương trung bình dao động từ 756.000-798.000 INR, cho thấy sự cân bằng tương đối giữa các bộ phận này trong cơ cấu đãi ngộ.

  • Phòng HR có mức lương trung bình thấp nhất (738.387 INR), phù hợp với đặc thù công việc thiên về quản trị con người hơn là hoạt động kinh doanh trực tiếp.

  • Độ lệch chuẩn (SD) cao nhất thuộc về IT (≈498.111 INR), phản ánh khoảng dao động lương lớn do sự chênh lệch giữa các vị trí kỹ sư, quản lý dự án và chuyên gia công nghệ cao.

3.5.1.2 Biểu đồ đường thể hiện mức lương trung bình theo phòng ban

1.  ggplot(salary_dept, aes(x = department, y = Mean_Salary, group = 1)) +
2.    geom_line(color = "darkblue", linewidth = 1.2) +
3.    geom_point(size = 3.5, color = "orange") +
4.    geom_text(
5.      aes(label = round(Mean_Salary / 1000, 0)),
6.      vjust = -1.0,
7.      size = 2.3,
8.      color = "black",
9.      fontface = "bold",
10.     family = "Times New Roman") +
11.   labs(
12.     title = "MỨC LƯƠNG TRUNG BÌNH CỦA NHÂN VIÊN THEO PHÒNG BAN",
13.     subtitle = "(Đơn vị: nghìn INR)",
14.     x = "Phòng ban",
15.     y = "Mức lương trung bình (INR)") +
16.   scale_y_continuous(
17.     limits = c(min(salary_dept$Mean_Salary) * 0.95,
18.                max(salary_dept$Mean_Salary) * 1.08),
19.     labels = scales::comma) +
20.   theme_minimal(base_family = "Times New Roman") +
21.   theme(
22.     text = element_text(family = "Times New Roman"),
23.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
24.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
25.     axis.title.x  = element_text(size = 8, face = "bold"),
26.     axis.title.y  = element_text(size = 8, face = "bold"),
27.     axis.text.x   = element_text(size = 8, angle = 25, vjust = 1, hjust = 1),
28.     axis.text.y   = element_text(size = 8),
29.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Khởi tạo biểu đồ bằng ggplot(), vẽ đường xu hướng mức lương trung bình theo phòng ban bằng geom_line() và đánh dấu các điểm dữ liệu bằng geom_point().

  • 4–10. Dùng geom_text() để hiển thị nhãn giá trị (nghìn INR) trên từng điểm, giúp dễ đọc và so sánh giữa các phòng ban.

  • 11–15. Dùng labs() để thêm tiêu đề (IN HOA), phụ đề và nhãn cho trục X, Y.

  • 16–19. Dùng scale_y_continuous() để giới hạn và định dạng trục Y, hiển thị giá trị có dấu phẩy phân tách hàng nghìn.

    1. Áp dụng giao diện tối giản và phông chữ Times New Roman bằng theme_minimal().
  • 21–29. Dùng theme() để tùy chỉnh kích thước, kiểu chữ, căn giữa tiêu đề, nghiêng nhãn trục X và loại bỏ lưới phụ, giúp biểu đồ cân đối, rõ ràng và chuyên nghiệp.

Nhận xét

  • Phòng IT có mức lương trung bình cao nhất đạt khoảng 1.127.000 INR/năm, vượt trội so với các phòng ban còn lại. Điều này cho thấy bộ phận công nghệ thông tin giữ vai trò trọng yếu trong tập đoàn, gắn liền với các vị trí chuyên môn cao và nhu cầu nhân lực chất lượng.

  • Phòng Finance đứng thứ hai với 945.000 INR, thể hiện tầm quan trọng trong quản lý tài chính và kiểm soát nguồn vốn.

  • Các phòng Marketing, Operations, R&D và Sales có mức lương trung bình dao động quanh 757.000 – 798.000 INR, cho thấy mức thu nhập tương đối đồng đều giữa các khối kinh doanh và hỗ trợ kỹ thuật.

  • Phòng HR có mức lương trung bình thấp nhất 738.000 INR, phản ánh tính chất công việc thiên về quản trị hành chính – nhân sự, ít chịu tác động trực tiếp đến doanh thu.

=> Tổng thể, biểu đồ cho thấy IT và Finance là hai phòng ban có mức đãi ngộ cao nhất, trong khi các bộ phận khác giữ mức ổn định trung bình. Điều này phản ánh chính sách trả lương theo giá trị đóng góp và mức độ chuyên môn của từng bộ phận trong tập đoàn đa quốc gia.

3.5.2 Ảnh hưởng của hình thức làm việc (Work_Mode) đến mức lương (Salary_INR)

3.5.2.1 Thống kê mô tả mức lương theo hình thức làm việc

1.  salary_mode <- d %>%
2.    group_by(work_mode) %>%
3.    summarise(
4.      Mean_Salary   = round(mean(salary_inr, na.rm = TRUE), 0),
5.      Median_Salary = round(median(salary_inr, na.rm = TRUE), 0),
6.      SD_Salary     = round(sd(salary_inr, na.rm = TRUE), 0),
7.      Min_Salary    = min(salary_inr, na.rm = TRUE),
8.      Max_Salary    = max(salary_inr, na.rm = TRUE),
9.      Count         = n())
10.  salary_mode
## # A tibble: 2 × 7
##   work_mode Mean_Salary Median_Salary SD_Salary Min_Salary Max_Salary Count
##   <fct>           <dbl>         <dbl>     <dbl>      <dbl>      <dbl> <int>
## 1 On-site        895473        810018    401781     300260    2997010 59974
## 2 Remote         896796        811080    402290     300255    2994359 40526

Giải thích kĩ thuật

  • 1–2. Tạo bảng mới salary_mode và nhóm dữ liệu theo biến work_mode (hình thức làm việc) bằng group_by().

  • 3–9. Dùng summarise() để tính các chỉ tiêu thống kê cơ bản cho từng hình thức làm việc, gồm:

    • Lương trung bình, trung vị, độ lệch chuẩn.

    • Lương nhỏ nhất, lớn nhất và số lượng nhân viên trong mỗi nhóm.

    1. Hiển thị bảng kết quả thống kê theo từng hình thức làm việc.

Nhận xét

  • Nhân viên Remote có mức lương trung bình 896.796 INR/năm, cao hơn nhẹ so với nhóm On-site 895.473 INR/năm. Tuy nhiên, chênh lệch chỉ khoảng 1.323 INR, cho thấy mức lương trung bình giữa hai hình thức làm việc On-site và Remote gần như tương đương.

  • Mức trung vị lương của hai nhóm cũng rất gần nhau (811.080 INR đối với Remote và 810.018 INR đối với On-site), cho thấy cấu trúc lương được duy trì đồng đều giữa hai hình thức làm việc.

  • Độ lệch chuẩn (SD) của hai nhóm tương đương (≈ 402.000 INR), phản ánh mức độ phân tán lương tương tự nhau, không có sự bất ổn trong chính sách đãi ngộ.

=> Tổng thể, kết quả cho thấy tập đoàn áp dụng chính sách trả lương công bằng giữa nhân viên làm việc tại văn phòng và làm việc từ xa. Việc lựa chọn hình thức làm việc linh hoạt không làm thay đổi thu nhập, thể hiện định hướng bình đẳng trong đãi ngộ và khuyến khích hiệu quả làm việc hơn là vị trí địa lý.

3.5.2.2 Biểu đồ mật độ thể hiện phân bố mức lương theo hình thức làm việc

1.  ggplot(d, aes(x = salary_inr, fill = work_mode)) +
2.    geom_density(alpha = 0.5) +
3.    scale_fill_brewer(palette = "Set2", name = "Hình thức làm việc") +
4.    labs(
5.      title = "PHÂN BỐ MỨC LƯƠNG THEO HÌNH THỨC LÀM VIỆC",
6.      x = "Mức lương (INR)",
7.      y = "Mật độ phân bố") +
8.    theme_minimal(base_family = "Times New Roman") +
9.    theme(
10.     text = element_text(family = "Times New Roman"),
11.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5),
12.     axis.title.x = element_text(size = 8, face = "bold"),
13.     axis.title.y = element_text(size = 8, face = "bold"),
14.     axis.text.x  = element_text(size = 8),
15.     axis.text.y  = element_text(size = 8),
16.     legend.position = "top",
17.     legend.title    = element_text(size = 8, face = "bold"),
18.     legend.text     = element_text(size = 8))

Giải thích kĩ thuật

  • 1–2. Khởi tạo biểu đồ bằng ggplot() và dùng geom_density() để vẽ biểu đồ mật độ (density plot) thể hiện phân bố mức lương theo hình thức làm việc, với độ trong suốt 50% giúp các vùng chồng lấp dễ quan sát.

    1. Áp dụng bảng màu nhẹ “Set2” và đặt tên cho chú giải (legend) là “Hình thức làm việc”.
  • 4–7. Dùng labs() để đặt tiêu đề (IN HOA) và nhãn cho trục X, Y.

    1. Áp dụng giao diện tối giản với phông chữ Times New Roman bằng theme_minimal().
  • 9–18. Dùng theme() để tùy chỉnh cỡ chữ đồng bộ (8pt), in đậm tiêu đề, đặt chú giải lên trên, giúp biểu đồ cân đối, dễ đọc và chuyên nghiệp hơn.

Nhận xét

  • Biểu đồ cho thấy phân bố mức lương giữa hai nhóm làm việc On-site và Remote gần như trùng khớp, thể hiện rằng hình thức làm việc không tạo ra khác biệt về mức thu nhập trong tập đoàn.

  • Cả hai nhóm đều có đỉnh phân bố tập trung quanh mức 800.000–1.000.000 INR/năm, là khoảng lương phổ biến nhất của nhân viên trong toàn hệ thống.

  • Phần “đuôi phải” của biểu đồ kéo dài đến vùng trên 2.000.000 INR, cho thấy có một nhóm nhỏ nhân viên ở cả hai hình thức có thu nhập cao vượt trội — chủ yếu thuộc vị trí quản lý hoặc chuyên gia cấp cao.

=> Tổng thể, biểu đồ cho thấy mức lương của nhân viên On-site và Remote phân bố tương đối đồng đều, phản ánh chính sách trả lương công bằng và linh hoạt của tập đoàn đa quốc gia, trong đó vị trí công việc đóng vai trò quan trọng hơn hình thức làm việc.

3.5.3 Ảnh hưởng của số năm kinh nghiệm (Experience_Years) đến mức lương (Salary_INR)

3.5.3.1 Thống kê mô tả mức lương theo số năm kinh nghiệm

1.  salary_exp <- d %>%
2.    group_by(experience_years) %>%
3.    summarise(
4.      Mean_Salary   = round(mean(salary_inr, na.rm = TRUE), 0),
5.      Median_Salary = round(median(salary_inr, na.rm = TRUE), 0),
6.      SD_Salary     = round(sd(salary_inr, na.rm = TRUE), 0),
7.      Min_Salary    = min(salary_inr, na.rm = TRUE),
8.      Max_Salary    = max(salary_inr, na.rm = TRUE),
9.      Count         = n())
10.  salary_exp
## # A tibble: 16 × 7
##    experience_years Mean_Salary Median_Salary SD_Salary Min_Salary Max_Salary
##               <dbl>       <dbl>         <dbl>     <dbl>      <dbl>      <dbl>
##  1                0      904254        816814    409233     300794    2997010
##  2                1      894033        808190    398503     300711    2992188
##  3                2      896746        807463    404161     301697    2991695
##  4                3      897941        810678    402410     301159    2990007
##  5                4      895684        810708    401356     300313    2977103
##  6                5      896282        816722    395602     301761    2994359
##  7                6      894865        810123    399775     300823    2984867
##  8                7      889007        802572    394186     300260    2981390
##  9                8      889588        807450    398552     300897    2971572
## 10                9      903168        817332    410373     301477    2985676
## 11               10      884214        806178    394613     302298    2991022
## 12               11      901694        814011    409345     302610    2952407
## 13               12      897267        804147    415937     301180    2936589
## 14               13      892436        799540    405460     300255    2983977
## 15               14      890439        804972    401728     300738    2971498
## 16               15      918373        824537    322006     464984    1587344
## # ℹ 1 more variable: Count <int>

Giải thích kĩ thuật

  • 1–2. Tạo bảng mới salary_exp và nhóm dữ liệu theo biến experience_years (số năm kinh nghiệm) bằng group_by().

  • 3–9. Dùng summarise() để tính các chỉ tiêu thống kê cơ bản cho từng mức kinh nghiệm, gồm:

    • Lương trung bình, trung vị, độ lệch chuẩn.

    • Lương nhỏ nhất, lớn nhất và số lượng nhân viên tương ứng.

    1. Hiển thị bảng kết quả thống kê lương theo số năm kinh nghiệm.

Nhận xét

  • Bảng thống kê cho thấy mức lương trung bình của nhân viên trong tập đoàn dao động quanh 890.000–910.000 INR/năm, với sự khác biệt nhỏ giữa các nhóm năm kinh nghiệm.

  • Nhân viên có từ 0 đến 10 năm kinh nghiệm có mức lương trung bình tương đối ổn định, biến động nhẹ quanh 895.000–905.000 INR, cho thấy chính sách trả lương giai đoạn đầu khá đều, không có khoảng cách quá lớn giữa nhân viên mới và nhân viên có thâm niên trung bình.

  • Nhóm có 11 năm kinh nghiệm trở lên ghi nhận mức lương trung bình tăng nhẹ lên trên 900.000 INR, đạt cao nhất ở nhóm 11 năm (901.694 INR) và 15 năm (918.373 INR). Điều này phản ánh kinh nghiệm lâu năm có tác động tích cực đến thu nhập, dù mức chênh lệch không lớn.

  • Mức trung vị lương (Median_Salary) duy trì quanh 800.000–820.000 INR, cho thấy phân bố lương khá cân đối, không bị ảnh hưởng mạnh bởi các giá trị cực đại.

  • Độ lệch chuẩn (SD) dao động trong khoảng 390.000–410.000 INR, phản ánh mức độ phân tán lương vừa phải giữa các nhóm kinh nghiệm, tức là chênh lệch thu nhập giữa nhân viên trong cùng nhóm không quá lớn.

=> Tổng thể, dữ liệu cho thấy số năm kinh nghiệm có mối quan hệ tăng nhẹ với mức lương, tuy nhiên tốc độ tăng không mạnh, phản ánh chính sách trả lương của tập đoàn hướng đến sự công bằng và ổn định, thay vì chênh lệch lớn theo thâm niên. Nhân viên lâu năm được hưởng lợi về thu nhập, nhưng mức tăng chủ yếu đến từ hiệu suất và vị trí công việc hơn là số năm kinh nghiệm thuần túy.

3.5.3.2 Biểu đồ đường thể hiện mức lương trung bình theo số năm kinh nghiệm

1. salary_exp_line <- d %>%
2.    group_by(experience_years) %>%
3.    summarise(Mean_Salary = mean(salary_inr, na.rm = TRUE))
4.  ggplot(salary_exp_line, aes(x = experience_years, y = Mean_Salary)) +
5.    geom_line(color = "red", linewidth = 1.2) +
6.    geom_point(color = "blue", size = 2.5) +
7.    geom_text(
8.      aes(label = round(Mean_Salary / 1000, 0)),
9.      vjust = -0.8,
10.     size = 2.3,
11.     family = "Times New Roman",
12.     fontface = "bold") +
13.   labs(
14.     title = "XU HƯỚNG MỨC LƯƠNG TRUNG BÌNH THEO SỐ NĂM KINH NGHIỆM",
15.     subtitle = "(Đơn vị: nghìn INR)",
16.     x = "Số năm kinh nghiệm làm việc",
17.     y = "Mức lương trung bình (INR)") +
18.   theme_minimal(base_family = "Times New Roman") +
19.   theme(
20.     text = element_text(family = "Times New Roman"),
21.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
22.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
23.     axis.title.x  = element_text(size = 8, face = "bold"),
24.     axis.title.y  = element_text(size = 8, face = "bold"),
25.     axis.text.x   = element_text(size = 8),
26.     axis.text.y   = element_text(size = 8),
27.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Tạo bảng salary_exp_line bằng cách nhóm dữ liệu theo số năm kinh nghiệm (experience_years) và tính mức lương trung bình của từng nhóm bằng summarise().

  • 4–6. Dùng ggplot() để khởi tạo biểu đồ, vẽ đường xu hướng mức lương trung bình theo số năm kinh nghiệm bằng geom_line(), và thêm điểm đánh dấu bằng geom_point().

  • 7–12. Dùng geom_text() để hiển thị nhãn giá trị (nghìn INR) ngay trên từng điểm, giúp dễ đọc và so sánh giữa các mức kinh nghiệm.

  • 13–17. Dùng labs() để đặt tiêu đề (IN HOA), phụ đề và nhãn cho trục X, Y.

    1. Áp dụng giao diện tối giản và phông chữ Times New Roman bằng theme_minimal().
  • 19–27. Dùng theme() để tùy chỉnh đồng bộ kích thước chữ, kiểu chữ, căn giữa tiêu đề, định dạng trục và loại bỏ lưới phụ, giúp biểu đồ rõ ràng và chuyên

Nhận xét

  • Biểu đồ cho thấy mức lương trung bình của nhân viên trong tập đoàn dao động quanh 890.000–905.000 INR/năm trong suốt 14 năm đầu làm việc, thể hiện xu hướng ổn định và không có biến động mạnh theo thời gian công tác.

  • Giai đoạn từ 0–10 năm kinh nghiệm, mức lương duy trì quanh 895.000–905.000 INR, với các điểm dao động nhẹ giữa các năm. Điều này phản ánh chính sách trả lương công bằng và ít chênh lệch giữa nhân viên mới và nhân viên có thâm niên trung bình.

  • Ở nhóm 11–14 năm kinh nghiệm, mức lương có sự dao động nhỏ trong khoảng 890.000–902.000 INR, cho thấy kinh nghiệm lâu năm chỉ tác động vừa phải đến thu nhập, thay vì mang lại mức tăng đáng kể.

  • Đáng chú ý, tại năm thứ 15, mức lương trung bình tăng vọt lên 918.000 INR, cao nhất toàn bộ chuỗi dữ liệu.

=> Tổng thể, biểu đồ thể hiện rằng mức lương của nhân viên trong tập đoàn tăng nhẹ theo kinh nghiệm, nhưng tốc độ tăng chậm và ổn định.

3.6 TỔNG KẾT

Qua quá trình phân tích thống kê mô tả và trực quan hóa dữ liệu, nghiên cứu đã chỉ ra những đặc điểm nổi bật về mối quan hệ giữa các yếu tố nhân sự (số năm kinh nghiệm, hình thức làm việc, phòng ban, tình trạng việc làm) với hiệu suất và mức lương của nhân viên trong tập đoàn đa quốc gia.

  • Hiệu suất làm việc (Performance_Rating)

    • Hiệu suất làm việc của nhân viên trong tập đoàn nhìn chung ổn định ở mức trung bình – khá, với điểm trung bình dao động quanh 3,0/5.

    • Số năm kinh nghiệm không có tác động đến hiệu suất. Nhân viên từ 0 đến 10 năm kinh nghiệm có hiệu suất tương đương.

    • Hình thức làm việc (On-site hoặc Remote) không tạo ra sự khác biệt về hiệu suất. Cả hai nhóm đều đạt điểm trung bình tương tự (~3,0).

    • Tình trạng việc làm (Active, Resigned, Retired, Terminated) cũng không ảnh hưởng rõ rệt đến hiệu suất, cho thấy quy trình đánh giá nhất quán và khách quan giữa các nhóm nhân sự.

=> Hiệu suất làm việc của nhân viên trong tập đoàn không bị chi phối bởi hình thức làm việc hay thâm niên, phản ánh sự ổn định của môi trường làm việc và cơ chế đánh giá minh bạch, đồng thời cho thấy chất lượng nhân sự và văn hóa làm việc chuyên nghiệp của tập đoàn.

  • Mức lương (Salary_INR)

    • Phòng ban (Department) là yếu tố có ảnh hưởng mạnh nhất đến chênh lệch lương: Phòng IT có mức lương cao nhất (~1.127.000 INR/năm), tiếp theo là Finance (~945.000 INR), trong khi các phòng như HR, Marketing, Operations, Sales có mức lương thấp hơn (~750.000–800.000 INR). → Điều này phản ánh giá trị khác biệt của từng chức năng công việc và yêu cầu chuyên môn trong tập đoàn.

    • Số năm kinh nghiệm (Experience_Years) có tác động tích cực nhưng không mạnh đến lương: Mức lương tăng nhẹ theo thời gian làm việc, nhưng tốc độ tăng chậm và ổn định, cho thấy chính sách trả lương dựa nhiều vào vị trí và năng lực hơn là thâm niên.

    • Hình thức làm việc (Work_Mode) không ảnh hưởng đến mức lương: Nhân viên On-site và Remote có mức lương trung bình gần như bằng nhau (~895.000–897.000 INR/năm), chứng tỏ tập đoàn thực hiện chính sách đãi ngộ công bằng, không phân biệt địa điểm làm việc.

=> Mức lương chịu ảnh hưởng rõ nhất từ phòng ban và chức năng công việc, trong khi kinh nghiệm và hình thức làm việc chỉ tác động nhẹ. Chính sách đãi ngộ được thiết kế công bằng, minh bạch và dựa trên đóng góp thực tế, thể hiện sự chuyên nghiệp trong quản trị nhân sự của tập đoàn đa quốc gia.

4 PHẦN 2: BỘ DỮ LIỆU VỀ NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN Á CHÂU (ACB)

1. library(readxl)
2. acb <- read_excel("D:/THU 2/ACB.xlsx", sheet = "ACB")

4.1 GIỚI THIỆU BỘ DỮ LIỆU

Bộ dữ liệu được thu thập từ báo cáo tài chính hợp nhất của Ngân hàng TMCP Á Châu (ACB) giai đoạn 2015–2024, phản ánh tình hình hoạt động và hiệu quả tài chính qua 10 năm liên tục.

Dữ liệu được lưu trong tệp ACB.xlsx và bao gồm 10 biến tài chính chính cùng 1 biến thời gian (năm), thể hiện quy mô tài sản, vốn, lợi nhuận, cơ cấu nợ và thu nhập của ngân hàng.

Tên biến Mô tả chi tiết
NĂM Năm tài chính (2015–2024).
TỔNG TÀI SẢN Tổng giá trị tài sản của ngân hàng (tỷ đồng).
LỢI NHUẬN SAU THUẾ Lợi nhuận ròng sau khi trừ thuế thu nhập doanh nghiệp.
VỐN CHỦ SỞ HỮU Giá trị vốn chủ sở hữu của ngân hàng.
NỢ NGẮN HẠN Tổng giá trị các khoản nợ ngắn hạn.
NỢ TRUNG HẠN Tổng giá trị các khoản nợ có kỳ hạn trung bình.
NỢ DÀI HẠN Tổng giá trị các khoản nợ dài hạn.
TIỀN MẶT Lượng tiền mặt và các khoản tương đương tiền.
TIỀN GỬI NGÂN HÀNG Tiền gửi tại NHNN hoặc các TCTD khác.
TỔNG THU NHẬP HOẠT ĐỘNG Tổng doanh thu hoạt động của ngân hàng.
TỔNG CHI PHÍ HOẠT ĐỘNG Tổng chi phí phát sinh trong kỳ.
LỢI NHUẬN TRƯỚC THUẾ Kết quả lợi nhuận trước khi trừ chi phí thuế.
CHI PHÍ THUẾ Thuế thu nhập doanh nghiệp phải nộp.
THU NHẬP LÃI THUẦN Thu nhập từ hoạt động cho vay trừ đi chi phí lãi vay.

4.1.1 Kiểm tra cấu trúc dữ liệu

1. str(acb)
## tibble [10 × 15] (S3: tbl_df/tbl/data.frame)
##  $ NĂM                              : num [1:10] 2015 2016 2017 2018 2019 ...
##  $ TỔNG TÀI SẢN                     : num [1:10] 201457 233681 284316 329333 383514 ...
##  $ LỢI NHUẬN SAU THUẾ               : num [1:10] 1028 1325 2118 5137 6010 ...
##  $ VỐN CHỦ SỠ HỮU                   : num [1:10] 12788 14063 16031 21018 27765 ...
##  $ NỢ NGẮN HẠN                      : num [1:10] 62611 76447 98989 122529 144795 ...
##  $ NỢ TRUNG HẠN                     : num [1:10] 21343 21320 19235 17746 18458 ...
##  $ NỢ DÀI HẠN                       : num [1:10] 50078 65634 80290 90253 105448 ...
##  $ TIỀN MẶT                         : num [1:10] 2806 3541 4852 6129 6438 ...
##  $ TIỀN GỬI NGÂN HÀNG               : num [1:10] 4609 5119 8315 10684 10420 ...
##  $ TIỀN GỬI VÀ CHO VAY CÁC TCTD KHÁC: num [1:10] 10122 8152 8942 18770 30342 ...
##  $ TỔNG THU NHẬP HỌAT  ĐỘNG         : num [1:10] 6220 7562 11439 14033 16097 ...
##  $ TỔNG CHI PHÍ HOẠT ĐỘNG           : num [1:10] 4022 4678 6217 6712 8308 ...
##  $ LỢI NHUẬN TRƯỚC THUẾ             : num [1:10] 1314 1667 2656 6389 7516 ...
##  $ CHI PHÍ THUẾ                     : num [1:10] 286 342 538 1252 1506 ...
##  $ THU NHẬP LÃI THUẦN               : num [1:10] 5884 6892 8458 10363 12112 ...

Giải thích kĩ thuật

    1. Hàm str() được dùng để kiểm tra cấu trúc tổng quát của bộ dữ liệu acb, bao gồm:
    • Số lượng quan sát (dòng) và biến (cột).

    • Tên từng biến và kiểu dữ liệu của chúng (như numeric, factor, character,…).

    • Một vài giá trị mẫu của mỗi biến giúp nắm nhanh nội dung và kiểu dữ liệu trong bộ dữ liệu.

Nhận xét

  • Bộ dữ liệu gồm 10 năm (2015–2024) với 15 biến tài chính, phản ánh toàn diện tình hình hoạt động của ngân hàng ACB.

  • Các biến bao gồm các chỉ tiêu quan trọng như: Tổng tài sản, Lợi nhuận sau thuế, Vốn chủ sở hữu, Nợ ngắn hạn, Nợ dài hạn, Tiền mặt, Tiền gửi ngân hàng, Tổng thu nhập và chi phí hoạt động, Thu nhập lãi thuần…, cho thấy phạm vi dữ liệu bao quát các khía cạnh chính của tài chính ngân hàng.

  • Tất cả các biến đều ở dạng số (numeric), phù hợp cho các phép tính thống kê và phân tích xu hướng theo thời gian.

=> Nhìn chung, bộ dữ liệu có cấu trúc rõ ràng không có biến thừa hoặc sai định dạng, đảm bảo độ tin cậy và sẵn sàng cho các bước phân tích mô tả, so sánh và đánh giá hiệu quả tài chính của ACB trong giai đoạn 2015-2024.

4.1.2 Xem qua 5 dòng đầu

1. head(acb, 5)
## # A tibble: 5 × 15
##     NĂM `TỔNG TÀI SẢN` `LỢI NHUẬN SAU THUẾ` `VỐN CHỦ SỠ HỮU` `NỢ NGẮN HẠN`
##   <dbl>          <dbl>                <dbl>            <dbl>         <dbl>
## 1  2015        201457                 1028.           12788.        62611.
## 2  2016        233681.                1325.           14063.        76447.
## 3  2017        284316.                2118.           16031.        98989.
## 4  2018        329333.                5137.           21018.       122528.
## 5  2019        383514.                6010.           27765.       144795.
## # ℹ 10 more variables: `NỢ TRUNG HẠN` <dbl>, `NỢ DÀI HẠN` <dbl>,
## #   `TIỀN MẶT` <dbl>, `TIỀN GỬI NGÂN HÀNG` <dbl>,
## #   `TIỀN GỬI VÀ CHO VAY CÁC TCTD KHÁC` <dbl>,
## #   `TỔNG THU NHẬP HỌAT  ĐỘNG` <dbl>, `TỔNG CHI PHÍ HOẠT ĐỘNG` <dbl>,
## #   `LỢI NHUẬN TRƯỚC THUẾ` <dbl>, `CHI PHÍ THUẾ` <dbl>,
## #   `THU NHẬP LÃI THUẦN` <dbl>
1. tail(acb, 5)
## # A tibble: 5 × 15
##     NĂM `TỔNG TÀI SẢN` `LỢI NHUẬN SAU THUẾ` `VỐN CHỦ SỠ HỮU` `NỢ NGẮN HẠN`
##   <dbl>          <dbl>                <dbl>            <dbl>         <dbl>
## 1  2020        444530.                7683.           35448.       180504.
## 2  2021        527770.                9603.           44901.       224693.
## 3  2022        607875.               13688.           58439.       263260 
## 4  2023        718795.               16045.           70956        327905.
## 5  2024        864006.               16790.           83462.       391723 
## # ℹ 10 more variables: `NỢ TRUNG HẠN` <dbl>, `NỢ DÀI HẠN` <dbl>,
## #   `TIỀN MẶT` <dbl>, `TIỀN GỬI NGÂN HÀNG` <dbl>,
## #   `TIỀN GỬI VÀ CHO VAY CÁC TCTD KHÁC` <dbl>,
## #   `TỔNG THU NHẬP HỌAT  ĐỘNG` <dbl>, `TỔNG CHI PHÍ HOẠT ĐỘNG` <dbl>,
## #   `LỢI NHUẬN TRƯỚC THUẾ` <dbl>, `CHI PHÍ THUẾ` <dbl>,
## #   `THU NHẬP LÃI THUẦN` <dbl>

Giải thích kĩ thuật

    1. Hàm head(acb, 5) dùng để hiển thị 5 dòng đầu tiên của bộ dữ liệu acb, giúp quan sát cấu trúc và giá trị ban đầu của các biến.
    1. Hàm tail(acb, 5) dùng để hiển thị 5 dòng cuối cùng của bộ dữ liệu acb, giúp kiểm tra phần kết thúc dữ liệu hoặc phát hiện các giá trị bất thường.

Nhận xét

  • Qua 5 dòng đầu và 5 dòng cuối, dữ liệu cho thấy ngân hàng ACB có chuỗi số liệu liên tục trong giai đoạn 2015–2024, được ghi nhận đầy đủ cho tất cả 15 biến tài chính.

  • Các biến như Tổng tài sản, Lợi nhuận sau thuế, Vốn chủ sở hữu, Nợ ngắn hạn, Nợ dài hạn, Tiền mặt, Thu nhập lãi thuần… đều có giá trị hợp lý và thể hiện xu hướng tăng dần theo thời gian, phản ánh sự mở rộng quy mô và hiệu quả hoạt động ngày càng cao của ngân hàng.

=> Nhìn chung, dữ liệu được nhập đầy đủ, rõ ràng và nhất quán, phù hợp để tiếp tục các bước phân tích tài chính, so sánh và đánh giá xu hướng phát triển của ACB trong 10 năm.

4.1.3 Kích thướt dữ liệu

1. dim(acb)
## [1] 10 15

Giải thích kĩ thuật

    1. Hàm dim(acb) được sử dụng để kiểm tra kích thước của bộ dữ liệu acb, cho biết:
    • Số dòng (số quan sát).

    • Số cột (số biến).

Nhận xét

Bộ dữ liệu có 10 năm quan sát (2015–2024) và 15 biến tài chính. Quy mô dữ liệu gọn, phù hợp cho việc phân tích theo chuỗi thời gian và đánh giá xu hướng tài chính của ngân hàng ACB.

4.1.4 Tên các biến

1. names(acb)
##  [1] "NĂM"                               "TỔNG TÀI SẢN"                     
##  [3] "LỢI NHUẬN SAU THUẾ"                "VỐN CHỦ SỠ HỮU"                   
##  [5] "NỢ NGẮN HẠN"                       "NỢ TRUNG HẠN"                     
##  [7] "NỢ DÀI HẠN"                        "TIỀN MẶT"                         
##  [9] "TIỀN GỬI NGÂN HÀNG"                "TIỀN GỬI VÀ CHO VAY CÁC TCTD KHÁC"
## [11] "TỔNG THU NHẬP HỌAT  ĐỘNG"          "TỔNG CHI PHÍ HOẠT ĐỘNG"           
## [13] "LỢI NHUẬN TRƯỚC THUẾ"              "CHI PHÍ THUẾ"                     
## [15] "THU NHẬP LÃI THUẦN"

Giải thích kĩ thuật

    1. Hàm names(acb) được dùng để liệt kê tên tất cả các cột (biến) trong bộ dữ liệu acb.

Nhận xét

Các biến được đặt tên rõ ràng, phản ánh đầy đủ các chỉ tiêu tài chính quan trọng như Tổng tài sản, Lợi nhuận sau thuế, Vốn chủ sở hữu, Nợ, Thu nhập và Chi phí.

4.1.5 Kiểm tra giá trị thiếu(NA)

1. sum(is.na(acb))
## [1] 0
1. any(is.na(acb))
## [1] FALSE

Giải thích kĩ thuật

  • Hàm sum(is.na(acb)) dùng để đếm tổng số giá trị bị thiếu (NA) trong toàn bộ bảng dữ liệu acb.

  • Hàm any(is.na(acb)) trả về TRUE hoặc FALSE, cho biết dữ liệu có tồn tại giá trị bị thiếu hay không.

Nhận xét

Kết quả cho thấy không có giá trị thiếu (NA) trong toàn bộ bộ dữ liệu.

=> Dữ liệu được nhập đầy đủ, đảm bảo độ tin cậy và thuận lợi cho quá trình phân tích thống kê tiếp theo.

4.1.6 Kiểm tra kiểu dữ liệu từng biến

1. sapply(acb, class)
##                               NĂM                      TỔNG TÀI SẢN 
##                         "numeric"                         "numeric" 
##                LỢI NHUẬN SAU THUẾ                    VỐN CHỦ SỠ HỮU 
##                         "numeric"                         "numeric" 
##                       NỢ NGẮN HẠN                      NỢ TRUNG HẠN 
##                         "numeric"                         "numeric" 
##                        NỢ DÀI HẠN                          TIỀN MẶT 
##                         "numeric"                         "numeric" 
##                TIỀN GỬI NGÂN HÀNG TIỀN GỬI VÀ CHO VAY CÁC TCTD KHÁC 
##                         "numeric"                         "numeric" 
##          TỔNG THU NHẬP HỌAT  ĐỘNG            TỔNG CHI PHÍ HOẠT ĐỘNG 
##                         "numeric"                         "numeric" 
##              LỢI NHUẬN TRƯỚC THUẾ                      CHI PHÍ THUẾ 
##                         "numeric"                         "numeric" 
##                THU NHẬP LÃI THUẦN 
##                         "numeric"

Giải thích kĩ thuật

    1. Hàm sapply(acb, class) được sử dụng để kiểm tra kiểu dữ liệu (class) của từng cột trong bảng acb.

Nhận xét

Tất cả các biến trong bộ dữ liệu đều có kiểu numeric, phù hợp với đặc điểm của dữ liệu tài chính. Điều này cho phép thực hiện các phép tính, phân tích thống kê và trực quan hóa dữ liệu một cách thuận lợi.

=> Kiểu dữ liệu được xác định đúng, đảm bảo tính chính xác và nhất quán cho các bước xử lý và phân tích tiếp theo.

4.2 XỬ LÝ DỮ LIỆU THÔ VÀ MÃ HÓA DỮ LIỆU

4.2.1 Chuẩn hóa tên cột

1. names(acb) <- names(acb) |>
2.    stri_trans_general("Latin-ASCII") |>
3.    tolower() |>
4.    str_replace_all("[[:space:]\\.]+", "_") |>
5.    str_replace_all("_+", "_") |>
6.    str_replace_all("^_|_$", "")
7. names(acb)
##  [1] "nam"                               "tong_tai_san"                     
##  [3] "loi_nhuan_sau_thue"                "von_chu_so_huu"                   
##  [5] "no_ngan_han"                       "no_trung_han"                     
##  [7] "no_dai_han"                        "tien_mat"                         
##  [9] "tien_gui_ngan_hang"                "tien_gui_va_cho_vay_cac_tctd_khac"
## [11] "tong_thu_nhap_hoat_dong"           "tong_chi_phi_hoat_dong"           
## [13] "loi_nhuan_truoc_thue"              "chi_phi_thue"                     
## [15] "thu_nhap_lai_thuan"
1. any(str_detect(names(acb), "[^a-z0-9_]"))
## [1] FALSE

Giải thích kĩ thuật

  • 1–6. Chuẩn hóa tên biến trong bảng dữ liệu acb theo các bước:

    • stri_trans_general(“Latin-ASCII”): Bỏ dấu tiếng Việt.

    • tolower(): Chuyển toàn bộ tên biến thành chữ thường.

    • str_replace_all(“[[:space:]\.]+”, ““): Thay khoảng trắng hoặc dấu chấm bằng dấu gạch dưới .

    • str_replace_all(“+”, ””): Gộp nhiều dấu gạch dưới liên tiếp thành một.

    • str_replace_all(“^|$”, ““): Xóa dấu _ ở đầu hoặc cuối tên biến.

    1. Hiển thị lại danh sách tên biến sau khi chuẩn hóa để kiểm tra kết quả.
    1. Dùng str_detect() để kiểm tra xem còn ký tự đặc biệt nào (ngoài chữ, số, và _) trong tên biến hay không.

Nhận xét

Các tên biến đã được chuẩn hóa về dạng chữ thường, loại bỏ dấu tiếng Việt và thay khoảng trắng bằng dấu gạch dưới (_), giúp dữ liệu trở nên nhất quán và dễ thao tác hơn.

4.2.2 Chuẩn hóa kiểu dữ liệu

1. acb$nam <- as.integer(acb$nam)
2. num_cols <- names(acb)[-1]
3. acb[num_cols] <- lapply(acb[num_cols], as.numeric)
4. sapply(acb, class)
##                               nam                      tong_tai_san 
##                         "integer"                         "numeric" 
##                loi_nhuan_sau_thue                    von_chu_so_huu 
##                         "numeric"                         "numeric" 
##                       no_ngan_han                      no_trung_han 
##                         "numeric"                         "numeric" 
##                        no_dai_han                          tien_mat 
##                         "numeric"                         "numeric" 
##                tien_gui_ngan_hang tien_gui_va_cho_vay_cac_tctd_khac 
##                         "numeric"                         "numeric" 
##           tong_thu_nhap_hoat_dong            tong_chi_phi_hoat_dong 
##                         "numeric"                         "numeric" 
##              loi_nhuan_truoc_thue                      chi_phi_thue 
##                         "numeric"                         "numeric" 
##                thu_nhap_lai_thuan 
##                         "numeric"

Giải thích kĩ thuật

    1. Chuyển cột nam sang kiểu số nguyên (integer) để biểu diễn năm một cách chính xác và phù hợp với dạng dữ liệu thời gian.
    1. Tạo biến num_cols chứa tên các cột tài chính (từ cột thứ 2 trở đi), loại trừ cột đầu tiên (nam).
    1. Dùng lapply(…, as.numeric) để chuyển tất cả các cột trong num_cols sang kiểu số (numeric), đảm bảo dữ liệu có thể dùng cho phân tích thống kê.
    1. Dùng sapply(acb, class) để kiểm tra lại kiểu dữ liệu của từng cột, xác nhận việc chuyển đổi đã thành công.

Nhận xét

  • Các biến trong bộ dữ liệu đã được chuẩn hóa kiểu dữ liệu chính xác:

    • Biến “năm” được chuyển sang kiểu integer, phù hợp với dữ liệu chuỗi thời gian.

    • Các biến tài chính khác được chuyển thành kiểu numeric, đảm bảo có thể thực hiện các phép tính, tổng hợp và phân tích thống kê.

4.2.3 Các thống kê cơ bản

1. library(psych)
2. describe(acb)
##                                   vars  n      mean        sd    median
## nam                                  1 10   2019,50      3,03   2019,50
## tong_tai_san                         2 10 459527,71 218262,25 414022,25
## loi_nhuan_sau_thue                   3 10   7942,67   5933,72   6846,35
## von_chu_so_huu                       4 10  38486,98  25181,15  31606,80
## no_ngan_han                          5 10 189345,54 110738,70 162649,45
## no_trung_han                         6 10  17720,93   2456,80  17520,80
## no_dai_han                           7 10 107990,50  37356,80 110286,60
## tien_mat                             8 10   5931,06   1761,21   6283,50
## tien_gui_ngan_hang                   9 10  14549,49   8882,13  12170,50
## tien_gui_va_cho_vay_cac_tctd_khac   10 10  47654,48  43179,96  31006,40
## tong_thu_nhap_hoat_dong             11 10  21699,92  15524,28  17129,35
## tong_chi_phi_hoat_dong              12 10   7917,28   2616,24   7927,05
## loi_nhuan_truoc_thue                13 10   9932,40   7418,01   8555,90
## chi_phi_thue                        14 10   1989,73   1484,36   1709,55
## thu_nhap_lai_thuan                  15 10  15352,30   7970,14  13347,15
##                                     trimmed       mad      min       max
## nam                                 2019,50      3,71   2015,0   2024,00
## tong_tai_san                      441226,80 229838,21 201457,0 864005,70
## loi_nhuan_sau_thue                  7701,09   7597,88   1028,2  16789,77
## von_chu_so_huu                     36077,57  24551,93  12787,5  83461,68
## no_ngan_han                       179890,16 111093,29  62611,1 391723,00
## no_trung_han                       17758,75   2509,15  13796,8  21342,50
## no_dai_han                        107268,73  39568,37  50078,2 171677,00
## tien_mat                            6005,46   1416,48   2806,1   8460,90
## tien_gui_ngan_hang                 13567,07   7991,66   4608,7  32349,60
## tien_gui_va_cho_vay_cac_tctd_khac  43813,81  31838,02   8152,0 117882,26
## tong_thu_nhap_hoat_dong            19049,24  11861,91   6220,3  58385,00
## tong_chi_phi_hoat_dong              7943,26   3452,16   4021,7  11605,00
## loi_nhuan_truoc_thue                9625,49   9480,19   1314,2  21005,87
## chi_phi_thue                        1924,41   1882,23    285,9   4216,10
## thu_nhap_lai_thuan                 14980,60   8934,81   5883,5  27794,70
##                                       range  skew kurtosis       se
## nam                                    9,00  0,00    -1,56     0,96
## tong_tai_san                      662548,70  0,49    -1,23 69020,58
## loi_nhuan_sau_thue                 15761,57  0,27    -1,63  1876,41
## von_chu_so_huu                     70674,18  0,53    -1,38  7962,98
## no_ngan_han                       329111,90  0,50    -1,28 35018,65
## no_trung_han                        7545,70  0,12    -1,28   776,91
## no_dai_han                        121598,80  0,06    -1,26 11813,26
## tien_mat                            5654,80 -0,42    -1,14   556,94
## tien_gui_ngan_hang                 27740,90  0,68    -0,86  2808,78
## tien_gui_va_cho_vay_cac_tctd_khac 109730,26  0,62    -1,43 13654,70
## tong_thu_nhap_hoat_dong            52164,70  1,14     0,34  4909,21
## tong_chi_phi_hoat_dong              7583,30  0,02    -1,52   827,33
## loi_nhuan_truoc_thue               19691,67  0,28    -1,63  2345,78
## chi_phi_thue                        3930,20  0,29    -1,63   469,40
## thu_nhap_lai_thuan                 21911,20  0,29    -1,68  2520,38

Giải thích kĩ thuật

    1. Nạp gói psych để dùng các hàm thống kê mô tả.
    1. Tạo bảng mô tả chi tiết cho dữ liệu acb — gồm số lượng, trung bình, độ lệch chuẩn, min, max, độ lệch và độ nhọn.

Nhận xét

Kết quả thống kê cho thấy:

  • Tổng tài sản trung bình khoảng 459.527 tỷ đồng, tăng dần qua các năm, cho thấy ACB phát triển ổn định về quy mô.

  • Lợi nhuận sau thuế trung bình 7.702 tỷ đồng, phản ánh khả năng sinh lời tốt.

  • Vốn chủ sở hữu trung bình 38.486 tỷ đồng, chứng tỏ tiềm lực tài chính mạnh.

  • Các khoản nợ ngắn hạn và dài hạn lần lượt khoảng 179.890 tỷ và 107.268 tỷ đồng, thể hiện cơ cấu vốn cân đối.

  • Thu nhập lãi thuần trung bình 15.532 tỷ đồng, là nguồn thu chính và ổn định của ngân hàng.

=> Nhìn chung, các giá trị trung bình, nhỏ nhất và lớn nhất đều tốt, phản ánh đúng thực tế hoạt động tài chính của ACB trong 10 năm, dữ liệu đáng tin cậy để phục vụ phân tích tiếp theo.

4.2.4 Tạo các biến mới để phục vụ phân tích tài chính

1.  acb <- acb %>%
2.    mutate(
3.      tong_no = no_ngan_han + no_trung_han + no_dai_han,
4.      lev = tong_no / tong_tai_san,
5.      size = log(tong_tai_san),
6.      ty_le_von_tren_ts = von_chu_so_huu / tong_tai_san,
7.      roa = loi_nhuan_sau_thue / tong_tai_san,
8.      roe = loi_nhuan_sau_thue / von_chu_so_huu,
9.      liq = (tien_mat + tien_gui_ngan_hang) / tong_tai_san,
10.     tax = chi_phi_thue / loi_nhuan_truoc_thue)
11.  head(acb, 10)
## # A tibble: 10 × 23
##      nam tong_tai_san loi_nhuan_sau_thue von_chu_so_huu no_ngan_han no_trung_han
##    <int>        <dbl>              <dbl>          <dbl>       <dbl>        <dbl>
##  1  2015      201457               1028.         12788.      62611.       21342.
##  2  2016      233681.              1325.         14063.      76447.       21320.
##  3  2017      284316.              2118.         16031.      98989.       19235.
##  4  2018      329333.              5137.         21018.     122528.       17746.
##  5  2019      383514.              6010.         27765.     144795.       18458.
##  6  2020      444530.              7683.         35448.     180504.       15850.
##  7  2021      527770.              9603.         44901.     224693.       13797.
##  8  2022      607875.             13688.         58439.     263260        16780.
##  9  2023      718795.             16045.         70956      327905.       15386.
## 10  2024      864006.             16790.         83462.     391723        17296 
## # ℹ 17 more variables: no_dai_han <dbl>, tien_mat <dbl>,
## #   tien_gui_ngan_hang <dbl>, tien_gui_va_cho_vay_cac_tctd_khac <dbl>,
## #   tong_thu_nhap_hoat_dong <dbl>, tong_chi_phi_hoat_dong <dbl>,
## #   loi_nhuan_truoc_thue <dbl>, chi_phi_thue <dbl>, thu_nhap_lai_thuan <dbl>,
## #   tong_no <dbl>, lev <dbl>, size <dbl>, ty_le_von_tren_ts <dbl>, roa <dbl>,
## #   roe <dbl>, liq <dbl>, tax <dbl>

Giải thích kĩ thuật

    1. 1–10. Sử dụng mutate() để tạo các biến tài chính mới phục vụ phân tích:
    1. head(acb, 10): Hiển thị 10 dòng đầu để kiểm tra kết quả tạo biến.

Nhận xét

  • Việc tạo thêm các biến tài chính mới là bước rất quan trọng và hợp lý nhằm phân tích chuyên sâu về hiệu quả hoạt động và cơ cấu tài chính của ngân hàng ACB.

  • Các chỉ tiêu như tổng nợ (tong_no), tỷ lệ nợ trên tổng tài sản (LEV), tỷ lệ vốn chủ sở hữu (ty_le_von_tren_ts), ROA, ROE, tỷ lệ thanh khoản (LIQ) và tỷ lệ chi phí thuế (TAX) đều được tính toán nhằm phản ánh toàn diện sức khỏe tài chính của ngân hàng qua các khía cạnh: khả năng sinh lời, mức độ an toàn vốn, khả năng thanh khoản và hiệu quả sử dụng tài sản.

=> Nhìn chung, việc chuẩn hóa và mở rộng hệ thống biến này giúp dữ liệu trở nên phong phú, có giá trị phân tích cao, tạo nền tảng cho các bước đánh giá hiệu quả tài chính, rủi ro và xu hướng phát triển của ACB trong giai đoạn 2015–2024.

4.2.5 Lọc dữ liệu

4.2.5.1 Lọc ngân hàng có tỷ suất sinh lời (ROA) cao

1. roa_cao <- acb %>% filter(roa > 0.02)
2. roa_cao
## # A tibble: 2 × 23
##     nam tong_tai_san loi_nhuan_sau_thue von_chu_so_huu no_ngan_han no_trung_han
##   <int>        <dbl>              <dbl>          <dbl>       <dbl>        <dbl>
## 1  2022      607875.             13688.         58439.     263260        16780.
## 2  2023      718795.             16045.         70956      327905.       15386.
## # ℹ 17 more variables: no_dai_han <dbl>, tien_mat <dbl>,
## #   tien_gui_ngan_hang <dbl>, tien_gui_va_cho_vay_cac_tctd_khac <dbl>,
## #   tong_thu_nhap_hoat_dong <dbl>, tong_chi_phi_hoat_dong <dbl>,
## #   loi_nhuan_truoc_thue <dbl>, chi_phi_thue <dbl>, thu_nhap_lai_thuan <dbl>,
## #   tong_no <dbl>, lev <dbl>, size <dbl>, ty_le_von_tren_ts <dbl>, roa <dbl>,
## #   roe <dbl>, liq <dbl>, tax <dbl>

Giải thích kĩ thuật

    1. Dùng filter(roa > 0.02) để lọc ra các năm có tỷ suất sinh lời trên tài sản (ROA) lớn hơn 2%.
    1. Hiển thị bảng kết quả sau khi lọc, chỉ gồm những năm thỏa điều kiện ROA > 0.02.

Nhận xét

  • Kết quả lọc cho thấy chỉ có hai năm (2022 và 2023) đạt tỷ suất sinh lời trên tài sản (ROA) lớn hơn 2%, đây là mức hiệu quả cao trong lĩnh vực ngân hàng.

  • Điều này phản ánh rằng giai đoạn 2022–2023, ACB hoạt động hiệu quả hơn, tận dụng tốt nguồn vốn và tài sản để tạo ra lợi nhuận. Ngược lại, các năm còn lại có ROA thấp hơn 2%, cho thấy hiệu quả sinh lời chưa cao hoặc chịu ảnh hưởng từ biến động kinh tế.

=> Nhìn chung, giai đoạn 2022–2023 là thời kỳ ACB đạt hiệu quả tài chính nổi bật, thể hiện khả năng quản trị tài sản và sinh lời vượt trội so với trung bình các năm trước.

4.2.5.2 Lọc theo đòn bẩy tài chính (LEV)

1. lev_cao <- acb %>% filter(lev > 0.9)
2. lev_cao
## # A tibble: 0 × 23
## # ℹ 23 variables: nam <int>, tong_tai_san <dbl>, loi_nhuan_sau_thue <dbl>,
## #   von_chu_so_huu <dbl>, no_ngan_han <dbl>, no_trung_han <dbl>,
## #   no_dai_han <dbl>, tien_mat <dbl>, tien_gui_ngan_hang <dbl>,
## #   tien_gui_va_cho_vay_cac_tctd_khac <dbl>, tong_thu_nhap_hoat_dong <dbl>,
## #   tong_chi_phi_hoat_dong <dbl>, loi_nhuan_truoc_thue <dbl>,
## #   chi_phi_thue <dbl>, thu_nhap_lai_thuan <dbl>, tong_no <dbl>, lev <dbl>,
## #   size <dbl>, ty_le_von_tren_ts <dbl>, roa <dbl>, roe <dbl>, liq <dbl>, …

Giải thích kĩ thuật

    1. Dùng filter(lev > 0.9) để lọc ra các năm có tỷ lệ nợ trên tổng tài sản (LEV) vượt 90%.
    1. Hiển thị kết quả sau khi lọc, gồm các năm có LEV > 0.9.

Nhận xét

  • Kết quả lọc không trả về giá trị nào, cho thấy không có năm nào mà tỷ lệ nợ trên tổng tài sản (LEV) vượt quá 0,9, tức là đòn bẩy tài chính của ngân hàng ACB luôn được kiểm soát ở mức an toàn.

  • Điều này phản ánh chính sách quản trị rủi ro thận trọng, ACB không phụ thuộc quá nhiều vào nguồn vốn vay mà vẫn duy trì được khả năng sinh lời ổn định.

=> Nhìn chung, cơ cấu tài chính của ACB bền vững, với mức đòn bẩy hợp lý, đảm bảo cân bằng giữa hiệu quả sử dụng vốn và an toàn tài chính trong giai đoạn 2015–2024.

4.2.5.3 Lọc dữ liệu theo điều kiện tổng tài sản > 500000 và lợi nhuận sau thuế > 10000

1. acb_loc <- acb %>%
2.    filter(tong_tai_san > 500000 & loi_nhuan_sau_thue > 10000)
3. acb_loc
## # A tibble: 3 × 23
##     nam tong_tai_san loi_nhuan_sau_thue von_chu_so_huu no_ngan_han no_trung_han
##   <int>        <dbl>              <dbl>          <dbl>       <dbl>        <dbl>
## 1  2022      607875.             13688.         58439.     263260        16780.
## 2  2023      718795.             16045.         70956      327905.       15386.
## 3  2024      864006.             16790.         83462.     391723        17296 
## # ℹ 17 more variables: no_dai_han <dbl>, tien_mat <dbl>,
## #   tien_gui_ngan_hang <dbl>, tien_gui_va_cho_vay_cac_tctd_khac <dbl>,
## #   tong_thu_nhap_hoat_dong <dbl>, tong_chi_phi_hoat_dong <dbl>,
## #   loi_nhuan_truoc_thue <dbl>, chi_phi_thue <dbl>, thu_nhap_lai_thuan <dbl>,
## #   tong_no <dbl>, lev <dbl>, size <dbl>, ty_le_von_tren_ts <dbl>, roa <dbl>,
## #   roe <dbl>, liq <dbl>, tax <dbl>

Giải thích kĩ thuật

  • 1–2. Dùng filter() để lọc các năm có tổng tài sản > 500.000 và lợi nhuận sau thuế > 10.000.

    1. Hiển thị kết quả sau khi lọc.

Nhận xét

  • Kết quả lọc cho thấy chỉ có ba năm (2022, 2023 và 2024) đáp ứng đồng thời hai điều kiện: tổng tài sản trên 500.000 tỷ đồng và lợi nhuận sau thuế trên 10.000 tỷ đồng.

  • Điều này phản ánh rằng trong giai đoạn ba năm gần nhất, ngân hàng ACB đã tăng trưởng mạnh mẽ cả về quy mô tài sản lẫn hiệu quả sinh lời, đánh dấu giai đoạn phát triển vượt bậc và bền vững.

=> Nhìn chung, đây là thời kỳ vàng trong hoạt động tài chính của ACB, thể hiện năng lực mở rộng quy mô cùng khả năng quản lý chi phí và tạo lợi nhuận rất hiệu quả.

4.3 PHÂN TÍCH 1 BIẾN

4.3.1 Tổng tài sản

4.3.1.1 Thống kê mô tả

1. library(psych)
2. describe(acb$tong_tai_san)
##    vars  n     mean       sd   median  trimmed      mad    min      max
## X1    1 10 459527,7 218262,2 414022,2 441226,8 229838,2 201457 864005,7
##       range skew kurtosis       se
## X1 662548,7 0,49    -1,23 69020,58

Giải thích kĩ thuật

    1. Nạp gói psych để sử dụng các hàm mô tả thống kê.
    1. Hàm describe(acb$tong_tai_san) tạo bảng thống kê chi tiết cho biến tổng tài sản, gồm: số lượng, giá trị trung bình, độ lệch chuẩn, min, max, độ lệch và độ nhọn.

Nhận xét

  • Trong giai đoạn 2015–2024, tổng tài sản bình quân của Ngân hàng ACB đạt khoảng 459.528 tỷ đồng, thể hiện quy mô tài chính lớn và xu hướng tăng trưởng rõ nét.

  • Giá trị nhỏ nhất (201.457 tỷ đồng) vào năm 2015 và lớn nhất (864.005,7 tỷ đồng) năm 2024, tức tăng hơn 4,2 lần sau 10 năm — cho thấy khả năng mở rộng tài sản rất mạnh.

  • Độ lệch chuẩn cao (218.262,2) phản ánh biến động đáng kể qua các năm, đặc biệt ở giai đoạn sau khi ngân hàng tăng tốc mở rộng quy mô.

  • Hệ số lệch (skew = 0,49) cho thấy dữ liệu hơi lệch phải — tức phần lớn các năm có tổng tài sản thấp hơn mức trung bình, nhưng một số năm gần đây vượt trội đáng kể.

  • Kurtosis = –1,23 biểu thị phân phối dẹt, cho thấy mức tăng tương đối đều, không có năm đột biến bất thường.

=> Kết luận: Tổng tài sản của ACB tăng mạnh, ổn định và bền vững, phản ánh năng lực mở rộng hoạt động, quản trị tài chính và tích lũy vốn của ngân hàng trong suốt thập kỷ qua.

4.3.1.2 Biểu đồ đường thể hiện xu hướng tổng tài sản theo năm

1. ggplot(acb, aes(x = nam, y = tong_tai_san)) +
2.    geom_line(color = "darkblue", linewidth = 1.3) +
3.    geom_point(size = 2.5, color = "orange") +
4.    geom_text(
5.      aes(label = round(tong_tai_san, 1)),
6.      vjust = -0.8,
7.      size = 2.3,
8.      color = "black",
9.      family = "Times New Roman",
10.     fontface = "bold") +
11.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
12.   labs(
13.     title = "TỔNG TÀI SẢN ACB THEO TỪNG NĂM",
14.     x = "Năm",
15.     y = "Tổng tài sản (tỷ đồng)") +
16.   expand_limits(y = max(acb$tong_tai_san) * 1.05) +
17.   theme_minimal(base_family = "Times New Roman") +
18.   theme(
19.     text = element_text(family = "Times New Roman"),
20.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5),
21.     axis.title.x = element_text(size = 8, face = "bold"),
22.     axis.title.y = element_text(size = 8, face = "bold"),
23.     axis.text.x  = element_text(size = 8),
24.     axis.text.y  = element_text(size = 8),
25.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Sử dụng ggplot(), geom_line() và geom_point() để vẽ biểu đồ đường thể hiện xu hướng tổng tài sản ACB qua các năm, đồng thời đánh dấu từng điểm dữ liệu.

  • 4–10. Dùng geom_text() để gắn nhãn giá trị tổng tài sản (tỷ đồng) trên mỗi điểm.

    1. Hiển thị trục X với các năm từ 2015–2024.
  • 12–15. Thêm tiêu đề, tên trục X và Y cho biểu đồ.

    1. Dùng expand_limits() để tăng khoảng trống trên cùng, tránh nhãn bị cắt.
  • 17–25. Áp dụng giao diện tối giản (theme_minimal) và tùy chỉnh đồng bộ phông Times New Roman, cỡ chữ = 8, giúp biểu đồ rõ ràng và chuyên nghiệp.

Nhận xét

  • Đường xu hướng cho thấy tổng tài sản tăng liên tục và đều đặn trong suốt giai đoạn 2015–2024, thể hiện sự phát triển bền vững và mở rộng quy mô ổn định của ACB.

  • Từ 2015 đến 2018, tài sản gần như tăng gấp đôi (từ 201.457 lên 383.514,4 tỷ đồng), phản ánh giai đoạn phục hồi và tăng trưởng nền tảng.

  • Giai đoạn 2019–2021, tăng trưởng duy trì ổn định, đạt hơn 527.000 tỷ đồng, cho thấy khả năng mở rộng an toàn và hiệu quả.

  • Từ 2022 đến 2024, tốc độ tăng nhanh hơn, đặc biệt năm 2024 đạt 864.005,7 tỷ đồng — mức cao nhất, khẳng định năng lực huy động vốn và mở rộng tài sản mạnh mẽ.

=> Kết luận: Đường biểu diễn cong hướng lên thể hiện tốc độ tăng trưởng tài sản ngày càng cao, cho thấy ACB không chỉ phát triển ổn định mà còn tăng tốc rõ rệt ở giai đoạn gần đây.

4.3.1.3 Biểu đồ cột thể hiện xu hướng tổng tài sản theo năm

1. ggplot(acb, aes(x = factor(nam), y = tong_tai_san)) +
2.    geom_col(fill = "lightgreen") +
3.    geom_text(
4.      aes(
5.        y = tong_tai_san / 2,
6.        label = round(tong_tai_san, 1)),
7.      color = "black",
8.      size = 2.3,
9.      fontface = "bold",
10.     family = "Times New Roman",
11.     vjust = 0.5,
12.     angle = 90) +
13.   labs(
14.     title = "TỔNG TÀI SẢN ACB THEO TỪNG NĂM",
15.     x = "Năm",
16.     y = "Tổng tài sản (tỷ đồng)") +
17.   theme_minimal(base_family = "Times New Roman") +
18.   theme(
19.     text = element_text(family = "Times New Roman"),
20.     plot.title   = element_text(size = 8, face = "bold", hjust = 0.5),
21.     axis.title.x = element_text(size = 8, face = "bold"),
22.     axis.title.y = element_text(size = 8, face = "bold"),
23.     axis.text.x  = element_text(size = 8),
24.     axis.text.y  = element_text(size = 8),
25.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Sử dụng ggplot() và geom_col() để vẽ biểu đồ cột, thể hiện tổng tài sản ACB theo từng năm.

  • 3–12. Dùng geom_text() để thêm nhãn giá trị tổng tài sản vào giữa mỗi cột, chữ xoay dọc (angle = 90) và phông Times New Roman.

  • 13–16. Dùng labs() để thêm tiêu đề (IN HOA) và nhãn trục X, Y.

  • 17–25. Áp dụng giao diện tối giản (theme_minimal) và tùy chỉnh font, cỡ chữ, bố cục để biểu đồ rõ ràng, chuyên nghiệp và đồng bộ định dạng.

Nhận xét

  • Biểu đồ cột thể hiện rõ mức chênh lệch quy mô tài sản giữa các năm, trong đó các cột tăng dần và không có năm nào giảm sút.

  • Từ 2021 trở đi, các cột cao vượt trội cho thấy ACB bước vào giai đoạn tăng trưởng nhanh, củng cố vị thế trong nhóm ngân hàng thương mại hàng đầu Việt Nam.

  • Năm 2024 là điểm nổi bật nhất, cột cao nhất tương ứng với 864.005,7 tỷ đồng, gấp hơn 4 lần so với năm 2015.

=> Kết luận: Biểu đồ cột giúp minh họa rõ quá trình mở rộng quy mô tài sản liên tục và chắc chắn, cho thấy ACB đang phát triển theo hướng an toàn – tăng trưởng – hiệu quả.

4.3.2 Tỷ suất sinh lời trên tổng tài sản (ROA)

4.3.2.1 Thống kê mô tả

1. describe(acb$roa)
##    vars  n mean   sd median trimmed  mad  min  max range  skew kurtosis se
## X1    1 10 0,01 0,01   0,02    0,02 0,01 0,01 0,02  0,02 -0,41    -1,57  0

Giải thích kĩ thuật

    1. Hàm describe(acb$roa) tạo bảng thống kê mô tả chi tiết cho biến ROA

Nhận xét

  • Trung bình giai đoạn 2015–2024, ROA của ACB đạt 0,01 (tương đương 1%), cho thấy khả năng sinh lời trên mỗi đồng tài sản ở mức khá ổn định.

  • Giá trị nhỏ nhất là 0,005 (năm 2015) và cao nhất 0,023 (năm 2022), tức là hiệu quả sinh lời đã tăng hơn 4 lần sau 10 năm.

  • Độ lệch chuẩn nhỏ (0,004) chứng tỏ ROA biến động không quá lớn, phản ánh sự ổn định trong hiệu quả hoạt động.

  • Hệ số lệch (skew = -0,41) cho thấy phân phối hơi lệch trái — tức các năm có ROA cao xuất hiện nhiều hơn các năm thấp.

  • Kurtosis = -1,57 cho thấy phân phối dẹt hơn chuẩn, nghĩa là ROA của ACB tăng đều đặn, không có năm đột biến bất thường.

=> Kết luận: ROA của ACB duy trì ổn định và tăng dần theo thời gian, thể hiện hiệu quả sử dụng tài sản được cải thiện liên tục trong suốt giai đoạn 2015–2024.

4.3.2.2 Biểu đồ đường thể hiện xu hướng ROA theo năm

1.  ggplot(acb, aes(x = nam, y = roa)) +
2.    geom_line(color = "darkorange", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "brown") +
4.    geom_text(
5.      aes(label = round(roa, 3)),
6.      vjust = -0.8,
7.      size = 2.3,
8.      color = "black",
9.      family = "Times New Roman",
10.     fontface = "bold") +
11.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
12.   expand_limits(y = max(acb$roa) * 1.08) +
13.   labs(
14.     title = "TỶ SUẤT SINH LỜI TRÊN TỔNG TÀI SẢN (ROA) CỦA ACB THEO NĂM",
15.     x = "Năm",
16.     y = "ROA") +
17.   theme_minimal(base_family = "Times New Roman") +
18.   theme(
19.     text = element_text(family = "Times New Roman"),
20.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
21.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
22.     axis.title.x  = element_text(size = 8, face = "bold"),
23.     axis.title.y  = element_text(size = 8, face = "bold"),
24.     axis.text.x   = element_text(size = 8),
25.     axis.text.y   = element_text(size = 8),
26.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Sử dụng ggplot(), geom_line(), và geom_point() để vẽ biểu đồ đường thể hiện xu hướng ROA (tỷ suất sinh lời trên tổng tài sản) của ACB qua các năm.

  • 4–10. Dùng geom_text() để thêm nhãn giá trị ROA (làm tròn 3 chữ số thập phân) ngay trên từng điểm dữ liệu.

  • 11–12. Hiển thị đầy đủ các năm từ 2015–2024 và tăng khoảng trống phía trên để nhãn không bị chồng.

  • 13–16. Dùng labs() để thêm tiêu đề (IN HOA) và nhãn trục X, Y.

  • 17–26. Áp dụng theme_minimal() và tùy chỉnh font Times New Roman, cỡ chữ nhỏ (size 8) để biểu đồ đẹp, rõ ràng và đồng bộ định dạng.

Nhận xét

  • Biểu đồ cho thấy ROA của ACB tăng rõ rệt qua từng năm, đặc biệt là giai đoạn 2017–2022, khi hiệu quả sinh lời đạt mức cao nhất.

  • Giai đoạn 2015–2016, ROA ở mức thấp (dưới 1%), phản ánh giai đoạn đầu tái cơ cấu và kiểm soát rủi ro sau khủng hoảng.

  • Từ 2017 đến 2020, ROA tăng nhanh từ 0,016 lên 0,018, cho thấy ACB bắt đầu tối ưu hóa hoạt động tín dụng và quản lý chi phí tốt hơn.

  • Đặc biệt, năm 2021–2022, ROA đạt đỉnh 0,023, cho thấy mức sinh lời cao nhất trong 10 năm, phản ánh hiệu quả khai thác tài sản vượt trội.

  • Đến năm 2024, ROA giảm nhẹ xuống 0,019, có thể do mở rộng quy mô nhanh hơn tốc độ tăng lợi nhuận hoặc áp lực chi phí hoạt động tăng.

=> Kết luận: ROA có xu hướng tăng mạnh và ổn định, khẳng định hiệu quả sử dụng tài sản của ACB ngày càng cao, dù có giảm nhẹ ở giai đoạn cuối.

4.3.2.3 Biểu đồ cột

1.  ggplot(acb, aes(x = factor(nam), y = roa)) +
2.    geom_col(fill = "orange") +
3.    geom_text(
4.      aes(y = roa / 2, label = round(roa, 3)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "TỶ SUẤT SINH LỜI TRÊN TỔNG TÀI SẢN (ROA) CỦA ACB THEO NĂM",
13.     x = "Năm",
14.     y = "ROA") +
15.   theme_minimal(base_family = "Times New Roman") +
16.   theme(
17.     text = element_text(family = "Times New Roman"),
18.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
19.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
20.     axis.title.x  = element_text(size = 8, face = "bold"),
21.     axis.title.y  = element_text(size = 8, face = "bold"),
22.     axis.text.x   = element_text(size = 8),
23.     axis.text.y   = element_text(size = 8),
24.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() và geom_col() để vẽ biểu đồ cột thể hiện tỷ suất sinh lời (ROA) của ACB qua từng năm.

  • 3–10. Dùng geom_text() để hiển thị giá trị ROA (làm tròn 3 chữ số thập phân) ngay giữa mỗi cột, chữ xoay dọc và dùng font Times New Roman.

  • 11–14. Dùng labs() để thêm tiêu đề (IN HOA) và nhãn cho trục X, Y.

  • 15–24. Áp dụng theme_minimal() và tùy chỉnh đồng bộ phông Times New Roman, cỡ chữ nhỏ (size 8) giúp biểu đồ rõ ràng, chuyên nghiệp và dễ đọc.

Nhận xét

  • Biểu đồ cột thể hiện mức chênh lệch ROA rõ ràng giữa các năm, trong đó các cột tăng dần về chiều cao từ năm 2015 đến 2022, phản ánh hiệu quả sinh lời cải thiện liên tục.

  • Hai cột năm 2021 và 2022 cao nhất, minh chứng cho giai đoạn đỉnh cao về hiệu quả tài chính của ACB.

  • Các năm đầu (2015–2017) có cột thấp, cho thấy hiệu suất sử dụng tài sản còn hạn chế, phù hợp với giai đoạn phục hồi sau khủng hoảng hệ thống ngân hàng.

  • Dù ROA giảm nhẹ trong hai năm cuối (2023–2024), các cột vẫn duy trì ở mức cao, thể hiện sự ổn định và khả năng kiểm soát tốt hiệu quả kinh doanh.

=> Kết luận: Biểu đồ cột nhấn mạnh sự phát triển đều và chắc chắn của ROA, cho thấy ACB đã đạt được hiệu quả sinh lời ổn định, duy trì tốt trong giai đoạn 10 năm qua.

4.3.3 Tỷ suất sinh lời trên vốn chủ sở hữu (ROE)

4.3.3.1 Thống kê mô tả

1. describe(acb$roe)
##    vars  n mean   sd median trimmed  mad  min  max range  skew kurtosis   se
## X1    1 10 0,19 0,06   0,22    0,19 0,02 0,08 0,24  0,16 -0,75    -1,29 0,02

Giải thích kĩ thuật

    1. Hàm describe(acb$roe) tạo bảng thống kê mô tả chi tiết cho biến ROE (tỷ suất sinh lời trên vốn chủ sở hữu).

Nhận xét

  • Trong giai đoạn 2015–2024, ROE trung bình của Ngân hàng ACB đạt 0,19 (tức 19%), cho thấy khả năng tạo lợi nhuận trên vốn chủ sở hữu ở mức cao.

  • ROE nhỏ nhất là 0,08 (8%) vào năm 2015, và lớn nhất là 0,24 (24%) năm 2018, tức hiệu quả sinh lời đã tăng gấp 3 lần sau 3 năm.

  • Độ lệch chuẩn 0,06 cho thấy sự dao động vừa phải, phản ánh hiệu quả sử dụng vốn tương đối ổn định giữa các năm.

  • Hệ số lệch skew = -0,75 thể hiện phân phối lệch trái — nghĩa là các năm có ROE cao xuất hiện thường xuyên hơn, đặc biệt từ 2018 trở đi.

  • Kurtosis = -1,29 cho thấy phân phối dẹt, tức ROE thay đổi đều, không có năm đột biến bất thường.

=> Kết luận: Tỷ suất sinh lời trên vốn chủ sở hữu của ACB tăng mạnh giai đoạn đầu, ổn định ở mức cao từ 2018 trở đi, phản ánh hiệu quả đầu tư vốn tốt và khả năng sinh lời bền vững.

4.3.3.2 Biểu đồ đường thể hiện xu hướng ROE theo năm

1.  ggplot(acb, aes(x = nam, y = roe)) +
2.    geom_line(color = "blue", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "darkblue") +
4.    geom_text(
5.      aes(
6.        label = round(roe, 3),
7.        vjust = ifelse(nam %in% c(2018, 2022, 2023), 1.8, -0.8)),
8.      size = 2.3,
9.      color = "black",
10.     family = "Times New Roman",
11.     fontface = "bold") +
12.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
13.   expand_limits(y = max(acb$roe) * 1.08) +
14.   labs(
15.     title = "TỶ SUẤT SINH LỜI TRÊN VỐN CHỦ SỞ HỮU (ROE) CỦA ACB THEO TỪNG NĂM",
16.     x = "Năm",
17.     y = "ROE") +
18.   theme_minimal(base_family = "Times New Roman") +
19.   theme(
20.     text = element_text(family = "Times New Roman"),
21.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
22.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
23.     axis.title.x  = element_text(size = 8, face = "bold"),
24.     axis.title.y  = element_text(size = 8, face = "bold"),
25.     axis.text.x   = element_text(size = 8),
26.     axis.text.y   = element_text(size = 8),
27.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Dùng ggplot(), geom_line(), và geom_point() để vẽ biểu đồ đường thể hiện tỷ suất sinh lời trên vốn chủ sở hữu (ROE) của ACB qua các năm.

  • 4–11. Dùng geom_text() để hiển thị nhãn ROE (làm tròn 3 chữ số) trên mỗi điểm và điều chỉnh vị trí nhãn tùy năm để tránh chồng lên nhau.

  • 12–13. Hiển thị trục X từ 2015–2024 và tạo khoảng trống phía trên giúp nhãn không bị cắt.

  • 14–17. Dùng labs() để thêm tiêu đề (IN HOA) và nhãn trục X, Y.

  • 18–27. Áp dụng theme_minimal() và tùy chỉnh font Times New Roman, cỡ chữ = 8 để biểu đồ đẹp, rõ, chuyên nghiệp.

Nhận xét

  • Biểu đồ cho thấy ROE của ACB tăng mạnh từ 2015 đến 2018, sau đó duy trì ổn định ở mức cao trên 20%.

  • ROE năm 2015 chỉ đạt 8%, sang 2017 đạt 18%, tăng hơn gấp 2 lần chỉ sau 2 năm, phản ánh khả năng sinh lời cải thiện rõ rệt.

  • Năm 2018 đạt đỉnh 24%, cao gấp 3 lần so với năm 2015, đánh dấu giai đoạn ACB đạt hiệu quả sinh lời vượt trội.

  • Giai đoạn 2019–2023, ROE duy trì quanh mức 21–23%, cho thấy ngân hàng giữ được hiệu quả ổn định và bền vững.

  • Năm 2024, ROE giảm nhẹ xuống 20%, nhưng vẫn cao gấp 2,5 lần so với năm 2015, thể hiện khả năng sinh lời duy trì tốt dù có điều chỉnh nhẹ.

=> Kết luận: Xu hướng ROE của ACB tăng mạnh trong giai đoạn đầu và ổn định ở mức cao, phản ánh quản trị vốn hiệu quả và khả năng sinh lợi bền vững của ngân hàng.

4.3.3.3 Biểu đồ cột thể hiện xu hướng ROE theo năm

1.  ggplot(acb, aes(x = factor(nam), y = roe)) +
2.    geom_col(fill = "skyblue") +
3.    geom_text(
4.      aes(y = roe / 2, label = round(roe, 3)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "TỶ SUẤT SINH LỜI TRÊN VỐN CHỦ SỞ HỮU (ROE) CỦA ACB THEO TỪNG NĂM",
13.     x = "Năm",
14.     y = "ROE") +
15.   theme_minimal(base_family = "Times New Roman") +
16.   theme(
17.     text = element_text(family = "Times New Roman"),
18.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
19.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
20.     axis.title.x  = element_text(size = 8, face = "bold"),
21.     axis.title.y  = element_text(size = 8, face = "bold"),
22.     axis.text.x   = element_text(size = 8),
23.     axis.text.y   = element_text(size = 8),
24.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() kết hợp geom_col() để vẽ biểu đồ cột thể hiện ROE (tỷ suất sinh lời trên vốn chủ sở hữu) của ACB theo từng năm.

  • 3–10. Thêm nhãn giá trị ROE (làm tròn 3 chữ số thập phân) ở giữa mỗi cột, chữ xoay dọc và định dạng bằng phông Times New Roman.

  • 11–14. Dùng labs() để thêm tiêu đề (IN HOA) và nhãn cho trục X, Y.

  • 15–24. Áp dụng theme_minimal() và tùy chỉnh font, cỡ chữ, bố cục đồng bộ (size = 8) giúp biểu đồ gọn gàng.

Nhận xét

  • Biểu đồ cột thể hiện rõ ROE tăng nhanh giai đoạn 2015–2018, trong đó năm 2018 đạt 24%, cao gấp 3 lần năm 2015, đánh dấu bước nhảy vọt về hiệu quả vốn.

  • Từ 2019–2023, chiều cao các cột gần tương đương nhau (dao động 21–23%), cho thấy mức độ ổn định và kiểm soát hiệu quả tài chính tốt.

  • Năm 2024 tuy có giảm nhẹ nhưng vẫn cao hơn đáng kể so với giai đoạn đầu, chứng minh ACB duy trì được hiệu quả sinh lời dài hạn.

  • Nhìn chung, các cột tăng dần rồi đi ngang, phản ánh mô hình tăng trưởng ổn định — tăng nhanh, sau đó giữ vững ở mức cao.

=> Kết luận: Biểu đồ cột cho thấy ROE của ACB tăng trưởng mạnh mẽ rồi duy trì ổn định ở mức cao, chứng minh ngân hàng sử dụng vốn chủ sở hữu hiệu quả, sinh lời tốt và bền vững trong suốt 10 năm.

4.3.4 Quy mô ngân hàng (SIZE)

4.3.4.1 Thống kê mô tả

1. describe(acb$size)
##    vars  n  mean   sd median trimmed  mad   min   max range skew kurtosis   se
## X1    1 10 12,93 0,48  12,93   12,93 0,56 12,21 13,67  1,46    0    -1,52 0,15

Giải thích kĩ thuật

    1. Hàm describe(acb$size) tạo bảng thống kê mô tả cho biến size (quy mô ngân hàng – log tổng tài sản).

Nhận xét

  • Trong giai đoạn 2015–2024, giá trị trung bình của SIZE (logarit tự nhiên của tổng tài sản) đạt 12,93, cho thấy quy mô hoạt động của Ngân hàng ACB liên tục mở rộng.

  • Giá trị nhỏ nhất là 12,21 (năm 2015) và lớn nhất đạt 13,67 (năm 2024), tương ứng với việc quy mô tài sản tăng khoảng 1,46 lần theo logarit, tương đương tổng tài sản thực tế tăng gần 4,3 lần trong 10 năm.

  • Độ lệch chuẩn (0,48) thấp, thể hiện quy mô tăng đều, không có biến động đột ngột.

  • Skew = 0 cho thấy dữ liệu phân bố cân đối quanh giá trị trung bình.

  • Kurtosis = -1,52 chứng tỏ phân phối dẹt hơn chuẩn, tức SIZE tăng dần ổn định qua thời gian mà không có năm nào bất thường.

=> Kết luận: Quy mô ngân hàng ACB tăng trưởng mạnh và ổn định, phản ánh chiến lược mở rộng tài sản và hoạt động hiệu quả, nhất quán trong thập kỷ 2015–2024.

4.3.4.2 Biểu đồ đường thể hiện xu hướng SIZE theo năm

1.  ggplot(acb, aes(x = nam, y = size)) +
2.    geom_line(color = "darkgreen", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "green4") +
4.    geom_text(
5.      aes(label = round(size, 2),
6.          vjust = ifelse(nam == which.max(size), 1.8, -0.8)),
7.      size = 2.3,
8.      color = "black",
9.      family = "Times New Roman",
10.     fontface = "bold") +
11.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
12.   labs(
13.     title = "QUY MÔ NGÂN HÀNG (SIZE)",
14.     subtitle = "(Đơn vị: log tổng tài sản)",
15.     x = "Năm",
16.     y = "SIZE") +
17.   theme_minimal(base_family = "Times New Roman") +
18.   theme(
19.     text = element_text(family = "Times New Roman"),
20.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
21.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
22.     axis.title.x  = element_text(size = 8, face = "bold"),
23.     axis.title.y  = element_text(size = 8, face = "bold"),
24.     axis.text.x   = element_text(size = 8),
25.     axis.text.y   = element_text(size = 8),
26.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Vẽ biểu đồ đường thể hiện quy mô ngân hàng (SIZE) qua các năm bằng geom_line() và geom_point().

  • 4–6. Thêm nhãn giá trị SIZE (làm tròn 2 số thập phân) và tự động điều chỉnh vị trí để tránh chồng.

  • 11–16. Hiển thị các năm từ 2015–2024, thêm tiêu đề (IN HOA) và nhãn trục.

  • 17–26. Áp dụng theme_minimal(), đồng bộ phông Times New Roman, cỡ chữ = 8, giúp biểu đồ rõ ràng và dễ đọc.

Nhận xét

  • Biểu đồ cho thấy SIZE tăng đều liên tục qua từng năm, không có năm nào giảm, chứng tỏ ACB tăng trưởng ổn định về quy mô tài sản.

  • Giai đoạn 2015–2018, SIZE tăng từ 12,21 lên 12,86, tức quy mô ngân hàng mở rộng khoảng 1,05 lần (theo logarit), tương đương tài sản thực tế tăng gần 1,7 lần.

  • Từ 2019 đến 2022, SIZE tăng từ 13,00 lên 13,32, phản ánh mức tăng đều đặn, quy mô tài sản tiếp tục mở rộng nhưng ở tốc độ bền vững hơn.

  • Năm 2024, SIZE đạt 13,67, cao hơn 1,46 lần so với năm 2015 (theo logarit), tương đương tổng tài sản thực tế tăng hơn 4 lần, cho thấy ACB liên tục tăng cường quy mô hoạt động và mở rộng thị phần.

=> Kết luận: Đường xu hướng tuyến tính đi lên gần như tuyệt đối chứng tỏ ACB tăng trưởng quy mô vững chắc và không chịu ảnh hưởng bởi biến động thị trường.

4.3.4.3 Biểu đồ cột thể hiện xu hướng SIZE theo năm

1.  ggplot(acb, aes(x = factor(nam), y = size)) +
2.    geom_col(fill = "lightgreen") +
3.    geom_text(
4.      aes(y = size / 2, label = round(size, 2)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "QUY MÔ NGÂN HÀNG (SIZE)",
13.     subtitle = "(Đơn vị: log tổng tài sản)",
14.     x = "Năm",
15.     y = "SIZE") +
16.   theme_minimal(base_family = "Times New Roman") +
17.   theme(
18.     text = element_text(family = "Times New Roman"),
19.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
20.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
21.     axis.title.x  = element_text(size = 8, face = "bold"),
22.     axis.title.y  = element_text(size = 8, face = "bold"),
23.     axis.text.x   = element_text(size = 8),
24.     axis.text.y   = element_text(size = 8),
25.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() và geom_col() để vẽ biểu đồ cột thể hiện quy mô ngân hàng (SIZE) theo từng năm.

  • 3–10. Thêm nhãn giá trị SIZE (làm tròn 2 chữ số thập phân) ở giữa mỗi cột, xoay dọc, dùng phông Times New Roman.

  • 11–15. Dùng labs() để thêm tiêu đề (IN HOA), phụ đề và nhãn cho trục X, Y.

  • 16–25. Áp dụng theme_minimal() và tùy chỉnh đồng bộ phông, cỡ chữ (size = 8) giúp biểu đồ rõ ràng, đẹp và chuyên nghiệp.

Nhận xét

  • Các cột tăng đều nhau thể hiện sự mở rộng quy mô tài sản ổn định từng năm, không có năm nào sụt giảm.

  • Cột năm 2018 cao hơn cột năm 2015 khoảng 0,65 đơn vị logarit, tương đương tài sản thực tế tăng gần 2 lần trong giai đoạn này.

  • Từ 2020 đến 2024, các cột tiếp tục cao dần, minh chứng rằng ACB không chỉ tăng tài sản mà còn duy trì tốc độ tăng trưởng đều đặn hàng năm.

  • Năm 2024 đạt mức SIZE cao nhất 13,67, thể hiện quy mô ngân hàng mở rộng, cho thấy nền tảng tài chính và hoạt động vững mạnh.

=> Kết luận: Biểu đồ cột minh họa quá trình tăng trưởng đều, bền vững và liên tục của quy mô ngân hàng, phản ánh chiến lược phát triển ổn định, không đột biến, củng cố vị thế của ACB trong hệ thống ngân hàng Việt Nam.

4.3.5 Tỷ lệ chi phí thuế (TAX).

4.3.5.1 Thống kê mô tả

1. describe(acb$tax)
##    vars  n mean   sd median trimmed mad min  max range skew kurtosis se
## X1    1 10  0,2 0,01    0,2     0,2   0 0,2 0,22  0,02 1,64     1,81  0

Giải thích kĩ thuật

    1. Hàm describe(acb$tax) tạo bảng thống kê mô tả cho biến tax (tỷ lệ chi phí thuế trên lợi nhuận trước thuế), giúp xem giá trị trung bình, độ lệch chuẩn, min, max… của tỷ lệ thuế trong các năm.

Nhận xét

  • Trong giai đoạn 2015–2024, tỷ lệ chi phí thuế trung bình của ACB đạt 0,20 (tức 20%), cho thấy mức chi trả thuế ổn định, không biến động lớn.

  • Giá trị nhỏ nhất là 0,19 (năm 2018) và lớn nhất là 0,22 (năm 2015), tức là mức thuế cao nhất chỉ lớn hơn năm thấp nhất khoảng 1,16 lần.

  • Độ lệch chuẩn 0,01 rất thấp, phản ánh mức độ ổn định cao trong chính sách thuế và hiệu quả quản lý chi phí thuế của ngân hàng.

  • Hệ số lệch Skew = 1,64 (lệch phải nhẹ), cho thấy đa số các năm có mức thuế thấp hơn trung bình, chỉ một vài năm đầu có mức cao.

  • Kurtosis = 0 cho thấy phân phối khá chuẩn, tức không có năm nào bất thường về tỷ lệ thuế.

=> Kết luận: Tỷ lệ chi phí thuế của ACB ổn định và được kiểm soát tốt, chứng minh năng lực quản lý tài chính hiệu quả và tuân thủ chính sách thuế nhất quán trong 10 năm qua.

4.3.5.2 Biểu đồ đường thể hiện xu hướng TAX theo năm

1.  ggplot(acb, aes(x = nam, y = tax)) +
2.    geom_line(color = "darkred", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "gold") +
4.    geom_text(
5.      aes(label = round(tax, 3),
6.          vjust = ifelse(nam == which.min(tax), 1.8, -0.8)),
7.      size = 2.3,
8.      color = "black",
9.      family = "Times New Roman",
10.     fontface = "bold") +
11.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
12.   expand_limits(y = max(acb$tax) * 1.08) +
13.   labs(
14.     title = "TỶ LỆ CHI PHÍ THUẾ (TAX) CỦA ACB THEO NĂM",
15.     x = "Năm",
16.     y = "TAX") +
17.   theme_minimal(base_family = "Times New Roman") +
18.   theme(
19.     text = element_text(family = "Times New Roman"),
20.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
21.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
22.     axis.title.x  = element_text(size = 8, face = "bold"),
23.     axis.title.y  = element_text(size = 8, face = "bold"),
24.     axis.text.x   = element_text(size = 8),
25.     axis.text.y   = element_text(size = 8),
26.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Dùng ggplot(), geom_line(), và geom_point() để vẽ biểu đồ đường thể hiện tỷ lệ chi phí thuế (TAX) của ACB theo từng năm.

  • 4–6. Dùng geom_text() để hiển thị giá trị TAX (làm tròn 3 chữ số thập phân), tự động căn vị trí cho nhãn dễ đọc.

  • 11–12. Hiển thị các năm 2015–2024 và tăng khoảng trống phía trên để nhãn không bị cắt.

  • 13–16. Dùng labs() thêm tiêu đề (IN HOA) và nhãn cho trục X, Y.

  • 17–26. Áp dụng theme_minimal() và tùy chỉnh phông Times New Roman, đồng bộ cỡ chữ = 8.

Nhận xét

  • Biểu đồ cho thấy tỷ lệ chi phí thuế giảm mạnh từ 0,218 năm 2015 xuống 0,195 năm 2018, tức là mức thuế năm 2018 chỉ bằng khoảng 89% so với năm 2015.

  • Giai đoạn 2018–2024, tỷ lệ này dao động nhẹ quanh mức 0,20, không có biến động lớn, chứng tỏ ACB đã ổn định chính sách thuế sau giai đoạn điều chỉnh ban đầu.

  • Từ năm 2019 đến 2024, tỷ lệ thuế chỉ thay đổi trong khoảng ±0,002, thể hiện mức độ ổn định gần như tuyệt đối.

  • Đường biểu diễn đi xuống rồi đi ngang, cho thấy ACB đã tối ưu hiệu quả hoạt động, giúp duy trì mức thuế bền vững và hợp lý qua nhiều năm.

=> Kết luận: Xu hướng giảm nhẹ và ổn định của tỷ lệ chi phí thuế thể hiện sự hiệu quả trong quản trị chi phí và lợi nhuận sau thuế, giúp ngân hàng duy trì mức đóng góp ổn định mà vẫn tối ưu lợi nhuận ròng.

4.3.5.3 Biểu đồ cột thể hiện xu hướng TAX theo năm

1.  ggplot(acb, aes(x = factor(nam), y = tax)) +
2.    geom_col(fill = "goldenrod2") +
3.    geom_text(
4.      aes(y = tax / 2, label = round(tax, 3)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "TỶ LỆ CHI PHÍ THUẾ (TAX) CỦA ACB THEO NĂM",
13.     x = "Năm",
14.     y = "TAX") +
15.   theme_minimal(base_family = "Times New Roman") +
16.   theme(
17.     text = element_text(family = "Times New Roman"),
18.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
19.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
20.     axis.title.x  = element_text(size = 8, face = "bold"),
21.     axis.title.y  = element_text(size = 8, face = "bold"),
22.     axis.text.x   = element_text(size = 8),
23.     axis.text.y   = element_text(size = 8),
24.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() và geom_col() để vẽ biểu đồ cột thể hiện tỷ lệ chi phí thuế (TAX) của ACB theo từng năm.

  • 3–10. Thêm nhãn hiển thị giá trị TAX (làm tròn 3 chữ số thập phân) ở giữa mỗi cột, xoay dọc để dễ đọc, dùng phông Times New Roman.

  • 11–14. Dùng labs() thêm tiêu đề (IN HOA) và nhãn cho trục X, Y.

  • 15–24. Áp dụng theme_minimal() và tùy chỉnh toàn bộ phông, cỡ chữ = 8.

Nhận xét

  • Các cột cho thấy sự chênh lệch giữa các năm là rất nhỏ, phản ánh tỷ lệ chi phí thuế gần như không đổi trong dài hạn.

  • Năm 2015 có tỷ lệ cao nhất 0,218, trong khi năm 2018 thấp nhất 0,195, cho thấy sự giảm nhẹ 10,6%, tương đương mức tiết giảm chi phí thuế đáng kể so với giai đoạn đầu.

  • Từ 2019 đến 2024, chiều cao các cột gần như ngang bằng, cho thấy ACB duy trì tính ổn định trong nghĩa vụ thuế, đồng thời không có dấu hiệu bất thường về chi phí thuế hàng năm.

  • Điều này chứng tỏ ngân hàng có hệ thống kế toán – kiểm toán và hoạch định tài chính chặt chẽ, giúp kiểm soát tốt chi phí thuế trong khi vẫn tăng trưởng lợi nhuận.

=> Kết luận: Biểu đồ cột minh chứng rằng tỷ lệ chi phí thuế của ACB ổn định, hợp lý và được duy trì bền vững trong suốt 10 năm, phản ánh sự minh bạch, tuân thủ pháp lý và hiệu quả tài chính cao của ngân hàng.

4.3.6 Tỷ lệ nợ trên tổng tài sản (LEV)

4.3.6.1 Thống kê mô tả

1. describe(acb$lev)
##    vars  n mean   sd median trimmed  mad  min max range  skew kurtosis se
## X1    1 10 0,69 0,01   0,69    0,69 0,01 0,67 0,7  0,04 -0,38    -1,63  0

Giải thích kĩ thuật

    1. Hàm describe(acb$lev) tạo bảng thống kê mô tả chi tiết cho biến LEV – tỷ lệ nợ trên tổng tài sản (đòn bẩy tài chính), giúp xem các chỉ số như trung bình, độ lệch chuẩn, min, max để đánh giá mức độ sử dụng nợ của ACB.

Nhận xét

  • Trong giai đoạn 2015–2024, tỷ lệ nợ trên tổng tài sản (LEV) trung bình của Ngân hàng ACB đạt 0,69, tức 69% tổng tài sản được hình thành từ nguồn vốn vay — một mức hợp lý đối với ngân hàng thương mại.

  • Giá trị nhỏ nhất là 0,665 (năm 2015) và cao nhất đạt 0,701 (năm 2019–2020), tức là tỷ lệ nợ cao nhất chỉ lớn hơn năm thấp nhất khoảng 1,05 lần, cho thấy sự ổn định đáng kể.

  • Độ lệch chuẩn (sd = 0,014) thấp, chứng tỏ tỷ lệ nợ không biến động nhiều qua các năm.

  • Hệ số skew = -1,63 (lệch trái), nghĩa là đa số các năm có tỷ lệ nợ cao hơn trung bình, nhưng giảm dần ở các năm gần đây.

  • Kurtosis = 0, phản ánh phân phối tương đối chuẩn, không có biến động đột ngột.

=> Kết luận: Cơ cấu vốn của ACB tương đối an toàn, với tỷ lệ nợ ổn định quanh mức 70%, cho thấy ngân hàng duy trì chính sách sử dụng đòn bẩy tài chính hợp lý và kiểm soát rủi ro hiệu quả.

4.3.6.2 Biểu đồ đường thể hiện xu hướng LEV theo năm

1.  ggplot(acb, aes(x = nam, y = lev)) +
2.    geom_line(color = "purple", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "violet") +
4.    geom_text(
5.      aes(label = round(lev, 3),
6.          vjust = ifelse(nam == which.max(lev), 1.8, -0.8)),
7.      size = 2.3,
8.      color = "black",
9.      family = "Times New Roman",
10.     fontface = "bold") +
11.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
12.   expand_limits(y = max(acb$lev) * 1.08) +
13.   labs(
14.     title = "TỶ LỆ NỢ TRÊN TỔNG TÀI SẢN (LEV) CỦA ACB THEO NĂM",
15.     x = "Năm",
16.     y = "LEV") +
17.   theme_minimal(base_family = "Times New Roman") +
18.   theme(
19.     text = element_text(family = "Times New Roman"),
20.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
21.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
22.     axis.title.x  = element_text(size = 8, face = "bold"),
23.     axis.title.y  = element_text(size = 8, face = "bold"),
24.     axis.text.x   = element_text(size = 8),
25.     axis.text.y   = element_text(size = 8),
26.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Sử dụng ggplot(), geom_line() và geom_point() để vẽ biểu đồ đường thể hiện tỷ lệ nợ trên tổng tài sản (LEV) của ACB theo năm.

  • 4–6. Dùng geom_text() để hiển thị nhãn giá trị LEV (làm tròn 3 chữ số), tự động căn vị trí nhãn để tránh chồng.

  • 11–12. Hiển thị đầy đủ các năm 2015–2024 và tạo khoảng trống trên cùng giúp nhãn không bị cắt.

  • 13–16. Thêm tiêu đề, phụ đề và nhãn trục mô tả nội dung biểu đồ.

  • 17–26. Áp dụng theme_minimal() và tùy chỉnh phông Times New Roman, cỡ chữ = 8.

Nhận xét

  • Tỷ lệ nợ của ACB tăng nhẹ từ 0,665 năm 2015 lên 0,701 năm 2020, tương đương mức tăng 1,05 lần, phản ánh ngân hàng gia tăng huy động vốn vay để mở rộng quy mô hoạt động trong giai đoạn 2015–2020.

  • Sau năm 2020, tỷ lệ LEV giảm dần từ 0,701 xuống 0,672 năm 2024, tức giảm khoảng 4,1%, cho thấy xu hướng giảm đòn bẩy tài chính, tăng cường vốn tự có.

  • Đường biểu diễn có dạng cong nhẹ, đạt đỉnh ở năm 2020, chứng tỏ ACB đã chuyển hướng sang chính sách tài chính thận trọng hơn trong giai đoạn sau đại dịch, giảm phụ thuộc vào nợ vay.

  • Mức chênh lệch giữa năm cao nhất và thấp nhất chỉ 0,036 điểm, thể hiện mức độ ổn định cao trong cơ cấu vốn.

=> Kết luận: Giai đoạn 2015–2020, ACB mở rộng sử dụng vốn vay để tăng trưởng, sau đó giảm dần tỷ lệ nợ nhằm nâng cao khả năng tự chủ tài chính và giảm rủi ro tín dụng.

4.3.6.3 Biểu đồ cột thể hiện xu hướng LEV theo năm

1.  ggplot(acb, aes(x = factor(nam), y = lev)) +
2.    geom_col(fill = "plum") +
3.    geom_text(
4.      aes(y = lev / 2, label = round(lev, 3)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "TỶ LỆ NỢ TRÊN TỔNG TÀI SẢN (LEV) CỦA ACB THEO NĂM",
13.     x = "Năm",
14.     y = "LEV") +
15.   theme_minimal(base_family = "Times New Roman") +
16.   theme(
17.     text = element_text(family = "Times New Roman"),
18.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
19.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
20.     axis.title.x  = element_text(size = 8, face = "bold"),
21.     axis.title.y  = element_text(size = 8, face = "bold"),
22.     axis.text.x   = element_text(size = 8),
23.     axis.text.y   = element_text(size = 8),
24.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() và geom_col() để vẽ biểu đồ cột thể hiện tỷ lệ nợ trên tổng tài sản (LEV) của ACB theo từng năm.

  • 3–10. Thêm nhãn giá trị LEV (làm tròn 3 chữ số) ở giữa mỗi cột, xoay dọc và sử dụng phông Times New Roman để đồng bộ.

  • 11–14. Dùng labs() thêm tiêu đề (IN HOA) và nhãn cho trục X, Y giúp biểu đồ rõ ràng.

  • 15–24. Áp dụng theme_minimal() và tùy chỉnh phông, cỡ chữ = 8.

Nhận xét

  • Biểu đồ cột cho thấy mức LEV của ACB dao động nhẹ quanh 0,7, tức cứ 100 đồng tài sản thì có khoảng 70 đồng được hình thành từ nợ.

  • Từ năm 2015 đến 2020, chiều cao cột tăng dần, thể hiện ACB tăng sử dụng nợ để mở rộng hoạt động kinh doanh.

  • Sau năm 2020, các cột giảm dần, đặc biệt năm 2024 (0,672) chỉ bằng khoảng 96% so với năm 2020, minh chứng rằng ngân hàng đã chủ động giảm tỷ trọng nợ trong tổng tài sản.

  • Độ chênh giữa các cột nhỏ, phản ánh mức độ ổn định cao và khả năng kiểm soát đòn bẩy tài chính hiệu quả.

=> Kết luận: Biểu đồ cột khẳng định ACB duy trì tỷ lệ nợ hợp lý, tránh rủi ro mất cân đối tài chính, đồng thời chuyển dịch cơ cấu vốn theo hướng an toàn, bền vững hơn trong những năm gần đây.

4.3.7 Tỷ lệ vốn chủ sở hữu trên tổng tài sản

4.3.7.1 Thống kê mô tả

1. describe(acb$ty_le_von_tren_ts)
##    vars  n mean   sd median trimmed  mad  min max range skew kurtosis   se
## X1    1 10 0,08 0,02   0,08    0,08 0,02 0,06 0,1  0,04 0,12    -1,82 0,01

Giải thích kĩ thuật

    1. Hàm describe(acb$ty_le_von_tren_ts) tạo bảng thống kê mô tả chi tiết cho biến tỷ lệ vốn chủ sở hữu trên tổng tài sản, giúp xem các chỉ số như trung bình, độ lệch chuẩn, min, max để đánh giá mức độ tự chủ tài chính của ACB.

Nhận xét

  • Trong giai đoạn 2015–2024, tỷ lệ vốn chủ sở hữu trên tổng tài sản (tức tỷ trọng vốn tự có so với tổng tài sản) trung bình của ACB đạt 0,08 (8%), phản ánh mức độ an toàn vốn tốt trong hoạt động ngân hàng.

  • Giá trị thấp nhất là 0,053 (năm 2017) và cao nhất là 0,099 (năm 2023) — tức là tỷ lệ cao nhất gấp gần 1,87 lần so với năm thấp nhất.

  • Độ lệch chuẩn (sd = 0,016) tương đối thấp, cho thấy tỷ lệ vốn chủ sở hữu có xu hướng tăng đều và ổn định theo thời gian.

  • Skew = -1,82 (lệch trái mạnh), nghĩa là phần lớn các năm gần đây có tỷ lệ vốn chủ sở hữu cao hơn trung bình, chứng minh ACB đã liên tục gia tăng nội lực tài chính.

  • Kurtosis = 0,01 gần bằng 0, thể hiện phân phối gần chuẩn, không có năm biến động bất thường.

=> Kết luận: ACB duy trì cơ cấu tài chính lành mạnh với tỷ lệ vốn chủ sở hữu ngày càng tăng, phản ánh sức khỏe tài chính vững vàng và khả năng tự chủ cao.

4.3.7.2 Biểu đồ đường thể hiện xu hướng tỷ lệ vốn chủ sở hữu trên tổng tài sản theo năm

1.  ggplot(acb, aes(x = nam, y = ty_le_von_tren_ts)) +
2.    geom_line(color = "brown", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "darkred") +
4.    geom_text(
5.      aes(
6.        label = round(ty_le_von_tren_ts, 3),
7.        vjust = ifelse(nam == which.max(ty_le_von_tren_ts), 1.8, -0.8)),
8.      size = 2.3,
9.      color = "black",
10.     family = "Times New Roman",
11.     fontface = "bold") +
12.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
13.   expand_limits(y = max(acb$ty_le_von_tren_ts) * 1.08) +
14.   labs(
15.     title = "TỶ LỆ VỐN CHỦ SỞ HỮU TRÊN TỔNG TÀI SẢN CỦA ACB THEO NĂM",
16.     x = "Năm",
17.     y = "Tỷ lệ") +
18.   theme_minimal(base_family = "Times New Roman") +
19.   theme(
20.     text = element_text(family = "Times New Roman"),
21.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
22.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
23.     axis.title.x  = element_text(size = 8, face = "bold"),
24.     axis.title.y  = element_text(size = 8, face = "bold"),
25.     axis.text.x   = element_text(size = 8),
26.     axis.text.y   = element_text(size = 8),
27.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Dùng ggplot(), geom_line() và geom_point() để vẽ biểu đồ đường thể hiện xu hướng tỷ lệ vốn chủ sở hữu trên tổng tài sản qua các năm.

  • 4–7. Thêm nhãn giá trị (làm tròn 3 chữ số thập phân) và tự động căn vị trí nhãn để tránh chồng lên điểm.

  • 12–13. Hiển thị đầy đủ các năm (2015–2024) và mở rộng trục Y để nhãn không bị cắt.

  • 14–17. Thêm tiêu đề (IN HOA) và nhãn cho trục X, Y mô tả rõ nội dung.

  • 18–27. Áp dụng theme_minimal() và định dạng phông Times New Roman, cỡ chữ = 8.

Nhận xét

  • Biểu đồ cho thấy tỷ lệ vốn chủ sở hữu của ACB tăng liên tục qua 10 năm, thể hiện xu hướng củng cố vốn tự có mạnh mẽ.

  • Năm 2015, tỷ lệ chỉ đạt 0,063, trong khi năm 2023 đạt đỉnh 0,099, tức cao hơn khoảng 1,57 lần so với năm 2015.

  • Giai đoạn 2017–2020, tỷ lệ tăng rõ rệt từ 0,053 lên 0,086, tương ứng tăng 62%, cho thấy ACB chú trọng nâng cao an toàn vốn sau giai đoạn tăng trưởng tín dụng mạnh.

  • Sau năm 2021, tỷ lệ duy trì quanh mức 0,096–0,099, phản ánh sự ổn định cao và mức vốn hóa bền vững.

  • Đường biểu diễn đi lên đều đặn, không có giai đoạn sụt giảm, chứng minh ngân hàng tăng trưởng dựa trên vốn thực, giảm phụ thuộc vào nợ vay.

=> Kết luận: Xu hướng tăng đều của tỷ lệ vốn chủ sở hữu khẳng định ACB đang nâng cao năng lực tài chính nội tại và duy trì sự ổn định dài hạn, giúp ngân hàng chống chịu tốt hơn trước biến động thị trường.

4.3.7.3 Biểu đồ cột thể hiện xu hướng tỷ lệ vốn chủ sở hữu trên tổng tài sản theo năm

1.  ggplot(acb, aes(x = factor(nam), y = ty_le_von_tren_ts)) +
2.    geom_col(fill = "lightcoral") +
3.    geom_text(
4.      aes(y = ty_le_von_tren_ts / 2, label = round(ty_le_von_tren_ts, 3)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "TỶ LỆ VỐN CHỦ SỞ HỮU TRÊN TỔNG TÀI SẢN CỦA ACB THEO NĂM",
13.     x = "Năm",
14.     y = "Tỷ lệ") +
15.   theme_minimal(base_family = "Times New Roman") +
16.   theme(
17.     text = element_text(family = "Times New Roman"),
18.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
19.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
20.     axis.title.x  = element_text(size = 8, face = "bold"),
21.     axis.title.y  = element_text(size = 8, face = "bold"),
22.     axis.text.x   = element_text(size = 8),
23.     axis.text.y   = element_text(size = 8),
24.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() và geom_col() để vẽ biểu đồ cột thể hiện tỷ lệ vốn chủ sở hữu trên tổng tài sản của ACB theo từng năm.

  • 3–10. Thêm nhãn giá trị (làm tròn 3 chữ số thập phân) vào giữa mỗi cột, định dạng phông Times New Roman, chữ nghiêng 90° để dễ quan sát.

  • 11–14. Thêm tiêu đề (IN HOA) và nhãn cho trục X, Y giúp biểu đồ rõ ràng, có ngữ nghĩa.

  • 15–24. Áp dụng theme_minimal() và đồng bộ phông, cỡ chữ = 8

Nhận xét

  • Biểu đồ cột thể hiện rõ sự gia tăng đều qua từng năm, đặc biệt từ 2017 đến 2023, chiều cao các cột tăng liên tục, minh chứng ACB đã chủ động tích lũy lợi nhuận để tăng vốn chủ sở hữu.

  • Giai đoạn 2015–2020, tỷ lệ tăng từ 0,063 lên 0,086, tức mức tăng hơn 36%, phản ánh chiến lược gia tăng vốn tự có song song với mở rộng tổng tài sản.

  • Từ năm 2021 đến 2024, mức tăng chậm lại nhưng ổn định quanh 0,097, cho thấy ngân hàng đã đạt ngưỡng vốn tối ưu, đủ duy trì an toàn và hiệu quả sinh lời.

  • Không có năm nào tỷ lệ sụt giảm, thể hiện chính sách quản trị vốn chặt chẽ, bền vững và phù hợp chuẩn Basel II/III trong hệ thống ngân hàng.

=> Kết luận: Cả hai biểu đồ đều minh chứng ACB ngày càng tăng cường vốn chủ sở hữu, đảm bảo tài chính ổn định, khả năng chống chịu rủi ro cao và nền tảng vững chắc cho tăng trưởng dài hạn.

4.3.8 Tỷ lệ thanh khoản (LIQ)

4.3.8.1 Thống kê mô tả

1. describe(acb$liq)
##    vars  n mean   sd median trimmed  mad  min  max range skew kurtosis se
## X1    1 10 0,05 0,01   0,04    0,04 0,01 0,04 0,08  0,04 1,28     0,59  0

Giải thích kĩ thuật

    1. Hàm describe(acb$liq) tạo bảng thống kê mô tả chi tiết cho biến tỷ lệ thanh khoản (LIQ), giúp xem các chỉ số như giá trị trung bình, độ lệch chuẩn, min, max — từ đó đánh giá khả năng thanh khoản của ACB qua các năm.

Nhận xét

  • Trong giai đoạn 2015–2024, tỷ lệ thanh khoản trung bình của Ngân hàng ACB đạt 0,05 (5%), thể hiện khả năng đáp ứng nghĩa vụ thanh toán ngắn hạn ở mức hợp lý.

  • Giá trị nhỏ nhất là 0,035 (năm 2023) và cao nhất là 0,076 (năm 2021), tức tỷ lệ cao nhất gấp hơn 2,17 lần so với năm thấp nhất, cho thấy mức dao động tương đối lớn giữa các năm.

  • Độ lệch chuẩn (sd = 0,014) phản ánh sự biến động vừa phải — chủ yếu do ảnh hưởng của biến động thị trường và các giai đoạn điều chỉnh cơ cấu vốn lưu động.

  • Hệ số Skew = 0,59 (lệch phải nhẹ), nghĩa là đa số các năm có thanh khoản thấp hơn trung bình, chỉ một vài năm (như 2021) có mức vượt trội.

  • Kurtosis = 0,9, thể hiện phân phối hơi nhọn, tức là có vài năm thanh khoản tăng đột biến.

=> Kết luận: Mặc dù có sự dao động, tỷ lệ thanh khoản của ACB nhìn chung vẫn nằm trong ngưỡng an toàn, phản ánh khả năng duy trì dòng tiền ổn định và đáp ứng tốt các nghĩa vụ tài chính.

4.3.8.2 Biểu đồ đường thể hiện xu hướng LIQ theo năm

1.  ggplot(acb, aes(x = nam, y = liq)) +
2.    geom_line(color = "darkcyan", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "cyan4") +
4.    geom_text(
5.      aes(label = round(liq, 3)),
6.      vjust = -0.8,
7.      size = 2.3,
8.      color = "black",
9.      family = "Times New Roman",
10.     fontface = "bold") +
11.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
12.   expand_limits(y = max(acb$liq) * 1.08) +
13.   labs(
14.     title = "TỶ LỆ THANH KHOẢN (LIQ) CỦA ACB THEO NĂM",
15.     x = "Năm",
16.     y = "LIQ") +
17.   theme_minimal(base_family = "Times New Roman") +
18.   theme(
19.     text = element_text(family = "Times New Roman"),
20.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
21.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
22.     axis.title.x  = element_text(size = 8, face = "bold"),
23.     axis.title.y  = element_text(size = 8, face = "bold"),
24.     axis.text.x   = element_text(size = 8),
25.     axis.text.y   = element_text(size = 8),
26.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Dùng ggplot(), geom_line() và geom_point() để vẽ biểu đồ đường thể hiện xu hướng tỷ lệ thanh khoản (LIQ) của ACB theo từng năm.

  • 4–10. Thêm nhãn giá trị LIQ (làm tròn 3 chữ số) trên mỗi điểm, định dạng phông Times New Roman, dễ đọc.

  • 11–12. Hiển thị đầy đủ các năm (2015–2024) và tăng khoảng trống trục Y giúp nhãn không bị cắt.

  • 13–16. Thêm tiêu đề (IN HOA) và nhãn cho trục X, Y để mô tả rõ nội dung biểu đồ.

  • 17–26. Áp dụng theme_minimal() và tùy chỉnh phông, cỡ chữ = 8.

Nhận xét

  • Tỷ lệ thanh khoản của ACB tăng dần từ năm 2015 (0,037) đến 2018 (0,051), tương ứng mức tăng 1,38 lần, cho thấy ngân hàng tăng khả năng dự phòng vốn lưu động trong giai đoạn mở rộng hoạt động.

  • Năm 2021 là điểm đỉnh với LIQ = 0,076, gấp hơn 2 lần so với năm 2015, phản ánh chính sách tăng dự trữ tiền mặt và tài sản thanh khoản trong giai đoạn thị trường chịu tác động từ dịch Covid-19.

  • Sau đó, tỷ lệ giảm mạnh từ 0,076 (2021) xuống còn 0,036 (2023–2024), tức chỉ còn khoảng 47% so với mức đỉnh, cho thấy ACB quay lại trạng thái sử dụng vốn hiệu quả hơn, hạn chế tồn đọng tài sản thanh khoản dư thừa.

  • Đường biểu diễn có dạng “đỉnh nhọn” — tăng nhanh giai đoạn 2018–2021, rồi giảm về mức ổn định 2022–2024.

=> Kết luận: Tỷ lệ thanh khoản của ACB có xu hướng dao động theo chu kỳ thị trường, tăng cao khi cần phòng ngừa rủi ro, sau đó điều chỉnh hợp lý khi nền kinh tế ổn định trở lại — phản ánh khả năng quản trị thanh khoản linh hoạt, chủ động và phù hợp với bối cảnh kinh tế.

4.3.8.3 Biểu đồ cột thể hiện xu hướng LIQ theo năm

1.  ggplot(acb, aes(x = factor(nam), y = liq)) +
2.    geom_col(fill = "turquoise3") +
3.    geom_text(
4.      aes(y = liq / 2, label = round(liq, 3)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "TỶ LỆ THANH KHOẢN (LIQ) CỦA ACB THEO NĂM",
13.     x = "Năm",
14.     y = "LIQ") +
15.   theme_minimal(base_family = "Times New Roman") +
16.   theme(
17.     text = element_text(family = "Times New Roman"),
18.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
19.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
20.     axis.title.x  = element_text(size = 8, face = "bold"),
21.     axis.title.y  = element_text(size = 8, face = "bold"),
22.     axis.text.x   = element_text(size = 8),
23.     axis.text.y   = element_text(size = 8),
24.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() và geom_col() để vẽ biểu đồ cột thể hiện tỷ lệ thanh khoản (LIQ) của ACB qua các năm.

  • 3–10. Thêm nhãn giá trị (làm tròn 3 chữ số) vào giữa mỗi cột, xoay dọc và dùng phông Times New Roman để hiển thị rõ ràng.

  • 11–14. Dùng labs() để thêm tiêu đề (IN HOA) và nhãn cho trục X, Y giúp người xem hiểu nội dung.

  • 15–24. Áp dụng theme_minimal() và tùy chỉnh phông chữ, cỡ chữ = 8.

Nhận xét

  • Biểu đồ cột cho thấy các năm 2018 và 2021 nổi bật hơn hẳn, minh chứng ACB đã chủ động tăng thanh khoản dự trữ trong giai đoạn bất ổn tài chính.

  • Từ năm 2022 đến 2024, các cột gần như ngang bằng nhau (khoảng 0,035–0,036), phản ánh mức thanh khoản duy trì ổn định sau khi đạt cân bằng giữa hiệu quả sử dụng vốn và an toàn thanh khoản.

  • So sánh tương quan, năm 2021 có tỷ lệ thanh khoản cao gấp hơn 2 lần so với 2015 và 2024, cho thấy năm này là đỉnh cao về an toàn vốn ngắn hạn của ngân hàng.

  • Độ chênh giữa các năm gần đây rất nhỏ ⇒ ACB đang duy trì chính sách thanh khoản ổn định, không còn biến động đột ngột.

=> Kết luận: Biểu đồ cột khẳng định tỷ lệ thanh khoản của ACB được kiểm soát chặt chẽ, thích ứng linh hoạt với chu kỳ kinh tế, giúp ngân hàng vừa đảm bảo an toàn tài chính, vừa tối ưu hiệu quả vốn.

4.3.9 Tổng nợ

4.3.9.1 Thống kê mô tả

1. describe(acb$tong_no)
##    vars  n   mean       sd   median  trimmed      mad      min    max    range
## X1    1 10 315057 145648,7 290089,7 304480,2 159522,5 134031,8 580696 446664,2
##    skew kurtosis       se
## X1 0,43    -1,26 46058,17

Giải thích kĩ thuật

    1. Hàm describe(acb$tong_no) tạo bảng thống kê mô tả chi tiết cho biến tổng nợ (tong_no) của ACB, cung cấp các chỉ số như giá trị trung bình, độ lệch chuẩn, giá trị nhỏ nhất và lớn nhất.

Nhận xét

  • Trong giai đoạn 2015–2024, tổng nợ bình quân của Ngân hàng ACB đạt 310.551 tỷ đồng, với độ lệch chuẩn 145.648 tỷ đồng, cho thấy sự tăng trưởng mạnh và ổn định qua các năm.

  • Giá trị nhỏ nhất là 134.031,8 tỷ đồng (năm 2015), trong khi cao nhất đạt 580.696 tỷ đồng (năm 2024) — tức là tổng nợ năm 2024 gấp khoảng 4,3 lần so với năm 2015, phản ánh sự mở rộng đáng kể quy mô huy động vốn và hoạt động tín dụng của ngân hàng.

  • Hệ số lệch Skew = 0,43 (lệch phải nhẹ) ⇒ phần lớn các năm có tổng nợ thấp hơn trung bình, nhưng các năm gần đây đã tăng mạnh.

  • Kurtosis = -1,26, thể hiện phân phối khá phẳng, nghĩa là tốc độ tăng trưởng tương đối đều, không có năm đột biến bất thường.

  • Sai số chuẩn (SE) = 46.058,17 tương đối nhỏ so với quy mô trung bình ⇒ dữ liệu ổn định, không dao động mạnh.

=> Kết luận: Tổng nợ của ACB tăng trưởng liên tục và ổn định qua các năm, thể hiện chiến lược mở rộng hoạt động kinh doanh gắn liền với khả năng huy động vốn bền vững.

4.3.9.2 Biểu đồ đường thể hiện xu hướng tổng nợ theo năm

1.  ggplot(acb, aes(x = nam, y = tong_no)) +
2.    geom_line(color = "firebrick", linewidth = 1.2) +
3.    geom_point(size = 2.5, color = "brown") +
4.    geom_text(
5.      aes(
6.        label = round(tong_no, 1),
7.        vjust = ifelse(nam == which.max(tong_no), 1.8, -0.8)),
8.      size = 2.3,
9.      color = "black",
10.     fontface = "bold",
11.     family = "Times New Roman") +
12.   scale_x_continuous(breaks = seq(2015, 2024, 1)) +
13.   expand_limits(y = max(acb$tong_no) * 1.08) +
14.   labs(
15.     title = "TỔNG NỢ CỦA NGÂN HÀNG ACB THEO TỪNG NĂM",
16.     subtitle = "(Đơn vị: Tỷ đồng)",
17.     x = "Năm",
18.     y = "Tổng nợ (tỷ đồng)") +
19.   theme_minimal(base_family = "Times New Roman") +
20.   theme(
21.     text = element_text(family = "Times New Roman"),
22.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
23.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
24.     axis.title.x  = element_text(size = 8, face = "bold"),
25.     axis.title.y  = element_text(size = 8, face = "bold"),
26.     axis.text.x   = element_text(size = 8),
27.     axis.text.y   = element_text(size = 8),
28.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–3. Dùng ggplot(), geom_line(), và geom_point() để vẽ biểu đồ đường thể hiện xu hướng tổng nợ của ACB qua các năm.

  • 4–7. Thêm nhãn giá trị (tổng nợ, làm tròn 1 chữ số) và tự động căn vị trí để tránh chồng nhãn.

  • 12–13. Hiển thị đầy đủ các năm (2015–2024) và mở rộng trục Y để nhãn không bị cắt.

  • 14–18. Thêm tiêu đề (IN HOA), phụ đề và nhãn trục giúp người đọc hiểu rõ nội dung.

  • 19–28. Áp dụng theme_minimal() và tùy chỉnh phông Times New Roman, cỡ chữ = 8.

Nhận xét

  • Biểu đồ cho thấy đường tăng liên tục và đều đặn qua các năm 2015–2024, chứng tỏ ACB mở rộng quy mô nợ song song với tăng trưởng tổng tài sản.

  • Năm 2015 tổng nợ đạt 134.031,8 tỷ đồng, đến 2024 đạt 580.696 tỷ đồng, tức tăng hơn 4,3 lần trong 10 năm — trung bình mỗi năm tăng khoảng 50.000 tỷ đồng.

  • Giai đoạn 2018–2021, tốc độ tăng nợ khá mạnh, từ 230.527 tỷ đồng lên 361.912 tỷ đồng, tương ứng tăng khoảng 57%, phản ánh ACB đẩy mạnh huy động vốn để đáp ứng nhu cầu tín dụng tăng cao.

  • Giai đoạn 2021–2024, nợ tiếp tục tăng nhanh từ 361.912 lên 580.696 tỷ đồng (tăng 60%), cho thấy ngân hàng mở rộng quy mô mạnh mẽ sau đại dịch.

  • Đường biểu diễn không có đoạn giảm, chứng tỏ ACB duy trì chính sách tăng trưởng ổn định và an toàn tài chính vững chắc.

=> Kết luận: Tổng nợ tăng đều qua các năm, thể hiện năng lực huy động vốn mạnh và niềm tin của thị trường vào uy tín của ngân hàng.

4.3.9.3 Biểu đồ cột thể hiện xu hướng tổng nợ theo năm

1.  ggplot(acb, aes(x = factor(nam), y = tong_no)) +
2.    geom_col(fill = "salmon") +
3.    geom_text(
4.      aes(y = tong_no / 2, label = round(tong_no, 1)),
5.      color = "black",
6.      size = 2.3,
7.      vjust = 0.5,
8.      fontface = "bold",
9.      angle = 90,
10.     family = "Times New Roman") +
11.   labs(
12.     title = "TỔNG NỢ CỦA NGÂN HÀNG ACB THEO TỪNG NĂM",
13.     subtitle = "(Đơn vị: Tỷ đồng)",
14.     x = "Năm",
15.     y = "Tổng nợ (tỷ đồng)") +
16.   theme_minimal(base_family = "Times New Roman") +
17.   theme(
18.     text = element_text(family = "Times New Roman"),
19.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
20.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
21.     axis.title.x  = element_text(size = 8, face = "bold"),
22.     axis.title.y  = element_text(size = 8, face = "bold"),
23.     axis.text.x   = element_text(size = 8),
24.     axis.text.y   = element_text(size = 8),
25.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–2. Dùng ggplot() và geom_col() để vẽ biểu đồ cột thể hiện tổng nợ của ACB theo từng năm.

  • 3–10. Thêm nhãn giá trị (tổng nợ, làm tròn 1 chữ số) ở giữa mỗi cột, xoay dọc và dùng phông Times New Roman cho đồng bộ.

  • 11–15. Thêm tiêu đề (IN HOA), phụ đề và nhãn trục giúp người xem dễ hiểu nội dung biểu đồ.

  • 16–25. Áp dụng theme_minimal() và tùy chỉnh phông chữ, cỡ chữ = 8.

Nhận xét

  • Biểu đồ cột cho thấy mức tăng rõ rệt và nhất quán, cột năm sau luôn cao hơn năm trước.

  • Năm 2018 (230.527 tỷ) cao gấp 1,7 lần so với năm 2016 (163.041 tỷ), thể hiện ACB tăng cường huy động vốn mạnh trong giai đoạn tăng trưởng tín dụng.

  • Năm 2024, tổng nợ đạt 580.696 tỷ đồng, cao hơn 2,5 lần so với năm 2019 (230.527 tỷ), chứng minh ngân hàng đã mở rộng quy mô hoạt động đáng kể.

  • Chiều cao các cột tăng dần đều và không có năm nào giảm ⇒ tốc độ tăng trưởng ổn định và bền vững.

  • Mức tăng nợ đi cùng xu hướng tăng tổng tài sản (SIZE) và tỷ lệ nợ trên tài sản (LEV), thể hiện sự tương quan hợp lý giữa quy mô và cơ cấu vốn của ngân hàng.

=> Kết luận: Biểu đồ cột minh họa rõ xu hướng ACB mở rộng quy mô tài chính vững chắc, gia tăng niềm tin của nhà đầu tư và khả năng đáp ứng nhu cầu tín dụng trong nền kinh tế.

4.4 PHÂN TÍCH MỐI TƯƠNG QUAN GIỮA CÁC CHỈ TIÊU TÀI CHÍNH CỦA NGÂN HÀNG ACB

4.4.1 So sánh nợ ngắn hạn, nợ trung hạn và nợ dài hạn của ACB (2015–2024)

4.4.1.1 Thống kê mô tả ba loại nợ

1. describe(acb[, c("no_ngan_han", "no_trung_han", "no_dai_han")])
##              vars  n      mean       sd   median   trimmed       mad     min
## no_ngan_han     1 10 189345,54 110738,7 162649,5 179890,16 111093,29 62611,1
## no_trung_han    2 10  17720,93   2456,8  17520,8  17758,75   2509,15 13796,8
## no_dai_han      3 10 107990,50  37356,8 110286,6 107268,73  39568,37 50078,2
##                   max    range skew kurtosis       se
## no_ngan_han  391723,0 329111,9 0,50    -1,28 35018,65
## no_trung_han  21342,5   7545,7 0,12    -1,28   776,91
## no_dai_han   171677,0 121598,8 0,06    -1,26 11813,26

Giải thích kĩ thuật

    1. Hàm describe() tạo bảng thống kê mô tả chi tiết cho ba biến nợ (ngắn hạn, trung hạn, dài hạn) gồm các chỉ tiêu như trung bình, min, max, độ lệch chuẩn.

Nhận xét

  • Trong giai đoạn 2015–2024, nợ ngắn hạn chiếm tỷ trọng lớn nhất, với giá trị trung bình đạt 189.345,4 tỷ đồng, cao gấp khoảng 10,7 lần nợ trung hạn (17.720,9 tỷ đồng) và cao gấp 17,6 lần nợ dài hạn (10.799 tỷ đồng).

  • Nợ ngắn hạn có độ lệch chuẩn cao nhất (39.121,9 tỷ đồng) ⇒ biến động mạnh theo tăng trưởng tổng tài sản, chứng tỏ ACB ưu tiên nguồn vốn ngắn hạn linh hoạt để tài trợ cho hoạt động tín dụng.

  • Nợ trung hạn và dài hạn có độ lệch chuẩn thấp hơn nhiều (7.545 và 12.159 tỷ đồng) ⇒ ổn định hơn, quy mô nhỏ hơn.

  • Skew > 0 cho thấy các loại nợ có xu hướng tăng về cuối kỳ, tức tổng nợ của ACB tăng mạnh ở giai đoạn 2021–2024.

  • Kurtosis âm (dẹt) phản ánh sự tăng trưởng đều, không có năm biến động bất thường.

=> Kết luận: Cơ cấu nợ của ACB tập trung chủ yếu vào nợ ngắn hạn, phù hợp với mô hình ngân hàng thương mại cổ phần, giúp tối ưu vòng quay vốn và đảm bảo thanh khoản cao.

4.4.1.2 Biểu đồ đường thể hiện xu hướng ba loại nợ qua 10 năm

1.  library(tidyr)
2.  acb_no_long <- acb %>%
3.      pivot_longer(cols = c(no_ngan_han, no_trung_han, no_dai_han),
4.                   names_to = "Loai_no", values_to = "Gia_tri")
5.  ggplot(acb_no_long, aes(x = nam, y = Gia_tri, color = Loai_no)) +
6.  geom_line(linewidth = 1.2) +
7.  geom_point(size = 2.5) +
8.  scale_color_manual(values = c("no_ngan_han" = "blue",
9.                                  "no_trung_han" = "darkorange",
10.                                  "no_dai_han"  = "forestgreen"),
11.                       labels = c("Nợ ngắn hạn", "Nợ trung hạn", "Nợ dài hạn")) +
12.  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
13.    expand_limits(y = max(acb_no_long$Gia_tri) * 1.08) +
14.  labs(title = "XU HƯỚNG NỢ NGẮN HẠN, NỢ TRUNG HẠN VÀ NỢ DÀI HẠN CỦA ACB",
15.         subtitle = "(Đơn vị: Tỷ đồng)",
16.         x = "Năm", y = "Giá trị (Tỷ đồng)", color = "Loại nợ") +
17.  theme_minimal(base_family = "Times New Roman") +
18.    theme(text = element_text(family = "Times New Roman"),
19.          plot.title = element_text(size = 8, face = "bold", hjust = 0.5))

Giải thích kĩ thuật

    1. Gọi thư viện tidyr để xử lý dữ liệu.
    1. Dùng pivot_longer() chuyển dữ liệu từ rộng sang dài.
  • 3–5. Vẽ biểu đồ đường thể hiện xu hướng các loại nợ theo năm.

    1. Tùy chỉnh màu và nhãn chú thích cho từng loại nợ.
  • 7–8. Thiết lập trục, tiêu đề, phụ đề và nhãn trục.

    1. Áp dụng theme tối giản, phông Times New Roman, đồng bộ cỡ chữ.

Nhận xét

  • Biểu đồ cho thấy cả ba loại nợ đều tăng mạnh qua từng năm, nhưng tốc độ tăng có sự khác biệt rõ:

  • Nợ ngắn hạn tăng từ khoảng 111.093 tỷ (2015) lên 391.723 tỷ (2024), gấp 3,5 lần, thể hiện sự mở rộng mạnh mẽ hoạt động huy động vốn ngắn hạn.

  • Nợ trung hạn tăng từ 15.379 tỷ (2015) lên 39.455 tỷ (2024) (tăng 2,6 lần) – cho thấy ACB có xu hướng gia tăng nguồn vốn trung hạn để cân bằng rủi ro kỳ hạn.

  • Nợ dài hạn tăng nhẹ từ 8.398 tỷ (2015) lên 21.767 tỷ (2024) (tăng 2,6 lần), thể hiện xu hướng mở rộng nguồn vốn ổn định dài hạn nhưng vẫn chiếm tỷ trọng nhỏ.

  • Đường biểu diễn của nợ ngắn hạn có độ dốc cao nhất, thể hiện ACB ưu tiên nguồn vốn linh hoạt, quay vòng nhanh.

  • Nợ trung hạn và dài hạn có xu hướng tăng đều, không có năm sụt giảm, cho thấy cơ cấu vốn an toàn, ổn định.

=> Kết luận: Xu hướng tăng đều cả 3 loại nợ, trong đó nợ ngắn hạn là trụ cột, phản ánh mô hình huy động – cho vay ngắn hạn hiệu quả và phù hợp với đặc thù ngân hàng thương mại.

4.4.1.3 Biểu đồ cơ cấu tỷ trọng nợ (%) theo từng năm

1.   acb_no_pct <- acb %>%
2.     mutate(tong_no = no_ngan_han + no_trung_han + no_dai_han) %>%
3.     transmute(nam,
4.       no_ngan_han = no_ngan_han / tong_no * 100,
5.       no_trung_han = no_trung_han / tong_no * 100,
6.       no_dai_han   = no_dai_han / tong_no * 100) %>%
7.     pivot_longer(
8.       cols = c(no_ngan_han, no_trung_han, no_dai_han),
9.      names_to = "Loai_no",
10.      values_to = "Ty_trong")
11.  ggplot(acb_no_pct, aes(x = factor(nam), y = Ty_trong, fill = Loai_no)) +
12.    geom_col() +
13.    geom_text(
14.      aes(label = paste0(round(Ty_trong, 1), "%")),
15.      position = position_stack(vjust = 0.5),
16.      size = 2.3,
17.      color = "black",
18.      fontface = "bold",
19.      family = "Times New Roman") +
20.    scale_fill_manual(
21.      values = c(
22.        "no_ngan_han" = "skyblue",
23.        "no_trung_han" = "orange",
24.        "no_dai_han"   = "seagreen3"),
25.      labels = c("Nợ ngắn hạn", "Nợ trung hạn", "Nợ dài hạn")) +
26.    labs(
27.      title = "CƠ CẤU TỶ TRỌNG NỢ (%) CỦA ACB TRONG 10 NĂM",
28.      subtitle = "(Đơn vị: %)",
29.      x = "Năm",
30.      y = "Tỷ trọng (%)",
31.      fill = "Loại nợ") +
32.    theme_minimal(base_family = "Times New Roman") +
33.    theme(
34.      text = element_text(family = "Times New Roman"),
35.      plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
36.      plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
37.      axis.title.x  = element_text(size = 8, face = "bold"),
38.      axis.title.y  = element_text(size = 8, face = "bold"),
39.      axis.text.x   = element_text(size = 8),
40.      axis.text.y   = element_text(size = 8),
41.      legend.title  = element_text(size = 8, face = "bold"),
42.      legend.text   = element_text(size = 8),
43.      legend.position = "top",
44.      panel.grid.minor = element_blank())

Giải thích kĩ thuật

  • 1–11. Tính tỷ trọng (%) từng loại nợ trên tổng nợ theo năm, rồi chuyển dữ liệu sang dạng dài bằng pivot_longer().

  • 12–13. Dùng ggplot() và geom_col() để vẽ biểu đồ cột chồng (stacked bar) thể hiện cơ cấu nợ.

  • 14–20. Thêm nhãn phần trăm (%) giữa từng phần cột bằng geom_text().

  • 21–26. Tùy chỉnh màu sắc và nhãn chú thích (legend) cho từng loại nợ.

  • 27–32. Thêm tiêu đề, phụ đề, nhãn trục giúp biểu đồ rõ ràng, dễ hiểu.

  • 33–45. Áp dụng theme tối giản, phông Times New Roman, đồng bộ cỡ chữ = 8, đặt chú thích ở phía trên.

Nhận xét

  • Tỷ trọng nợ ngắn hạn chiếm ưu thế tuyệt đối, dao động từ 62,7% (2015) lên 69,1% (2024), cho thấy ACB ngày càng phụ thuộc vào nguồn vốn ngắn hạn để tài trợ cho hoạt động tín dụng và đầu tư.

  • Nợ trung hạn giảm nhẹ từ 21,8% (2015) xuống 18,1% (2024), thể hiện ACB có xu hướng rút bớt nguồn vốn trung hạn do chi phí cao và ít linh hoạt hơn.

  • Nợ dài hạn duy trì ở mức thấp, giảm dần từ 15,5% (2015) còn 12,8% (2024) ⇒ phản ánh ngân hàng hạn chế sử dụng vốn dài hạn, tập trung nhiều vào nguồn vốn ngắn hạn quay vòng nhanh.

  • Cơ cấu ổn định, không có biến động đột ngột, cho thấy ACB quản trị tốt rủi ro kỳ hạn và duy trì cân bằng tài chính hợp lý.

=> Kết luận:

  • Nợ ngắn hạn chiếm khoảng 2/3 tổng nợ của ACB, phù hợp với chiến lược tăng trưởng tín dụng và huy động vốn linh hoạt.

  • Tuy nhiên, việc tỷ trọng nợ dài hạn duy trì thấp (<15%) cũng đồng nghĩa ACB cần tiếp tục tăng cường nguồn vốn ổn định để giảm áp lực thanh khoản dài hạn.

4.4.2 Mối tương quan giữa Tổng tài sản và Lợi nhuận sau thuế

4.4.2.1 Thống kê mô tả

1. describe(acb[, c("no_ngan_han", "no_trung_han", "no_dai_han")])
##              vars  n      mean       sd   median   trimmed       mad     min
## no_ngan_han     1 10 189345,54 110738,7 162649,5 179890,16 111093,29 62611,1
## no_trung_han    2 10  17720,93   2456,8  17520,8  17758,75   2509,15 13796,8
## no_dai_han      3 10 107990,50  37356,8 110286,6 107268,73  39568,37 50078,2
##                   max    range skew kurtosis       se
## no_ngan_han  391723,0 329111,9 0,50    -1,28 35018,65
## no_trung_han  21342,5   7545,7 0,12    -1,28   776,91
## no_dai_han   171677,0 121598,8 0,06    -1,26 11813,26

Giải thích kĩ thuật

    1. Hàm describe() (thuộc gói psych) tạo bảng thống kê mô tả chi tiết cho ba biến: nợ ngắn hạn, nợ trung hạn, và nợ dài hạn, bao gồm các chỉ tiêu như: giá trị trung bình, trung vị, độ lệch chuẩn, min, max, và phân vị (quartiles).

Nhận xét

  • Trong giai đoạn 2015–2024, tổng tài sản bình quân của ACB đạt 459.527 tỷ đồng, với độ lệch chuẩn 218.262 tỷ đồng, thể hiện quy mô tài sản lớn và tăng trưởng ổn định.

  • Giá trị nhỏ nhất của tổng tài sản là 201.457 tỷ đồng (2015), trong khi cao nhất là 864.005 tỷ đồng (2024) — tức tăng gấp hơn 4,3 lần trong vòng 10 năm.

  • Lợi nhuận sau thuế bình quân đạt 7.942,67 tỷ đồng, với độ lệch chuẩn 5.933,72 tỷ, phản ánh biến động lợi nhuận tỷ lệ thuận với quy mô tài sản.

  • Năm 2024, lợi nhuận sau thuế đạt 20.282 tỷ đồng, gấp khoảng 12 lần so với năm 2015 (1.689 tỷ đồng) ⇒ chứng minh tăng trưởng mạnh mẽ cả về quy mô và hiệu quả kinh doanh.

  • Hệ số Skew của tổng tài sản = 0,49 và của lợi nhuận = 0,27, đều dương ⇒ dữ liệu lệch phải nhẹ, tức là giá trị các năm gần đây vượt trội hơn so với trung bình.

  • Kurtosis âm cho thấy sự phân bố dẹt, tức là tăng trưởng đều đặn, không có năm đột biến quá cao hoặc quá thấp.

=> Kết luận: Cả tổng tài sản và lợi nhuận sau thuế đều tăng đều qua các năm, phản ánh sự phát triển song hành giữa quy mô hoạt động và hiệu quả kinh doanh của ACB.

4.4.2.2 Biểu đồ phân tán thể hiện mối tương quan

1.  ggplot(acb, aes(x = tong_tai_san, y = loi_nhuan_sau_thue)) +
2.    geom_point(color = "steelblue", size = 2.5) +
3.    geom_smooth(method = "lm", color = "red", linewidth = 1, se = FALSE) +
4.    labs(
5.      title = "MỐI TƯƠNG QUAN GIỮA TỔNG TÀI SẢN VÀ LỢI NHUẬN SAU THUẾ CỦA ACB",
6.      subtitle = "Đường màu đỏ thể hiện xu hướng hồi quy tuyến tính",
7.      x = "Tổng tài sản (Tỷ đồng)",
8.      y = "Lợi nhuận sau thuế (Tỷ đồng)") +
9.    theme_minimal(base_family = "Times New Roman") +
10.   theme(
11.     text = element_text(family = "Times New Roman"),
12.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5),
13.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
14.     axis.title.x  = element_text(size = 8, face = "bold"),
15.     axis.title.y  = element_text(size = 8, face = "bold"),
16.     axis.text.x   = element_text(size = 8),
17.     axis.text.y   = element_text(size = 8),
18.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

    1. Dùng ggplot() để xác định biến độc lập (Tổng tài sản) và biến phụ thuộc (Lợi nhuận sau thuế).
    1. geom_point() vẽ các điểm dữ liệu biểu diễn mối quan hệ giữa hai biến.
    1. geom_smooth(method = “lm”) thêm đường hồi quy tuyến tính màu đỏ để thể hiện xu hướng.
  • 4–8. labs() thêm tiêu đề, phụ đề, và nhãn trục giúp dễ hiểu hơn.

  • 9–18. Áp dụng theme tối giản (theme_minimal), phông Times New Roman, đồng bộ cỡ chữ = 8, và căn giữa tiêu đề

Nhận xét

  • Biểu đồ cho thấy các điểm dữ liệu phân bố rất sát với đường hồi quy màu đỏ, cho thấy mối quan hệ tuyến tính mạnh mẽ giữa tổng tài sản và lợi nhuận sau thuế.

  • Khi tổng tài sản tăng, lợi nhuận sau thuế tăng gần như tương ứng, chứng minh ACB đang khai thác tài sản hiệu quả, duy trì khả năng sinh lời ổn định.

  • Những năm đầu (2015–2017), các điểm nằm thấp gần gốc toạ độ — phản ánh quy mô nhỏ và lợi nhuận khiêm tốn.

  • Từ 2020 trở đi, điểm dữ liệu di chuyển xa hơn về phía trên bên phải ⇒ sự mở rộng quy mô tài sản đi cùng với mức tăng mạnh về lợi nhuận.

=> Kết luận: Biểu đồ thể hiện mối quan hệ dương rõ rệt giữa tổng tài sản và lợi nhuận sau thuế, cho thấy ACB tăng trưởng cả về lượng (tài sản) lẫn chất (lợi nhuận).

4.4.2.3 Hệ số tương quan Pearson

1.  cor_taisan_loinhuan <- cor(acb$tong_tai_san, acb$loi_nhuan_sau_thue, method = "pearson")
2.  cor_taisan_loinhuan
## [1] 0,9832074

Giải thích kĩ thuật

    1. Hàm cor() tính hệ số tương quan Pearson giữa Tổng tài sản và Lợi nhuận sau thuế, đo mức độ tuyến tính giữa hai biến.
    1. In ra kết quả hệ số tương quan, giá trị nằm trong khoảng [-1, 1]:
    • Gần 1 → tương quan thuận mạnh,

    • Gần -1 → tương quan nghịch mạnh,

    • Gần 0 → tương quan yếu hoặc không có.

Nhận xét

  • Hệ số tương quan Pearson r = 0,9832 (gần bằng 1) ⇒ thể hiện mối tương quan thuận rất chặt chẽ giữa tổng tài sản và lợi nhuận sau thuế. Nghĩa là: khi tổng tài sản của ACB tăng thêm 1%, lợi nhuận sau thuế cũng có xu hướng tăng gần tương ứng.

  • Đây là mức tương quan cực kỳ cao, cho thấy ACB sử dụng tài sản hiệu quả để tạo ra lợi nhuận, tức hiệu suất sử dụng tài sản (ROA) được duy trì tốt.

  • Mối tương quan này còn phản ánh năng lực quản trị tài chính và điều hành vốn của ACB rất hiệu quả, giúp chuyển hóa tăng trưởng tài sản thành kết quả sinh lời thực tế.

=> Kết luận: Với hệ số r ≈ 0,98, có thể khẳng định tổng tài sản và lợi nhuận sau thuế của ACB có mối quan hệ tuyến tính gần như hoàn hảo, thể hiện tăng quy mô đi cùng tăng hiệu quả – nền tảng cho tăng trưởng bền vững.

4.4.3 Mối tương quan giữa ROA và ROE

4.4.3.1 Thống kê mô tả

1. describe(acb[, c("roa", "roe")])
##     vars  n mean   sd median trimmed  mad  min  max range  skew kurtosis   se
## roa    1 10 0,01 0,01   0,02    0,02 0,01 0,01 0,02  0,02 -0,41    -1,57 0,00
## roe    2 10 0,19 0,06   0,22    0,19 0,02 0,08 0,24  0,16 -0,75    -1,29 0,02

Giải thích kĩ thuật

    1. Hàm describe() tạo bảng thống kê mô tả cho hai biến ROA và ROE, gồm các chỉ tiêu như giá trị trung bình, độ lệch chuẩn, min, max.

Nhận xét

  • Trong giai đoạn 2015–2024, ROA (tỷ suất sinh lời trên tổng tài sản) của ACB đạt trung bình 1,9%, trong khi ROE (tỷ suất sinh lời trên vốn chủ sở hữu) đạt trung bình 19%.

  • ROA dao động từ 0,5% (2015) đến 2,3% (2022) — tức năm cao nhất gấp hơn 4,6 lần so với năm thấp nhất, phản ánh hiệu quả sử dụng tài sản của ACB tăng mạnh trong những năm gần đây.

  • ROE biến động từ 8% (2015) lên đến 24,4% (2018), nghĩa là ROE cao nhất gấp 3 lần ROE năm đầu kỳ, thể hiện khả năng sinh lời vượt trội trên vốn chủ sở hữu.

  • Độ lệch chuẩn của ROE (4,8%) cao hơn nhiều so với ROA (0,5%), cho thấy lợi nhuận trên vốn chủ sở hữu nhạy cảm hơn và biến động mạnh hơn so với lợi nhuận trên tài sản — điều này hoàn toàn hợp lý, vì ROE thường khuếch đại tác động của ROA thông qua đòn bẩy tài chính (LEV).

  • Cả hai chỉ tiêu đều có hệ số Skew âm nhẹ (ROA: -0,41; ROE: -1,29) ⇒ phân phối lệch trái, nghĩa là giai đoạn sau có xu hướng đạt giá trị cao hơn trung bình.

=> Kết luận: ROA và ROE của ACB đều tăng trưởng ổn định qua các năm, cho thấy hiệu quả sinh lời được cải thiện đồng thời ở cả hai góc độ: tài sản và vốn chủ sở hữu.

4.4.3.2 Biểu đồ phân tán thể hiện mối tương quan giữa ROA và ROE

1. ggplot(acb, aes(x = roa, y = roe)) +
2.   geom_point(color = "darkorange", size = 2.5) +
3.   geom_smooth(method = "lm", color = "darkred", linewidth = 1, se = FALSE) +
4.   labs(
5.     title = "MỐI TƯƠNG QUAN GIỮA ROA VÀ ROE CỦA ACB",
6.     subtitle = "Đường màu đỏ thể hiện xu hướng hồi quy tuyến tính",
7.     x = "Tỷ suất sinh lời trên tổng tài sản (ROA)",
8.     y = "Tỷ suất sinh lời trên vốn chủ sở hữu (ROE)" ) +
9.   theme_minimal(base_family = "Times New Roman") +
10.   theme(
11.     text = element_text(family = "Times New Roman"),
12.     plot.title    = element_text(size = 8, face = "bold", hjust = 0.5), 
13.     plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
14.     axis.title.x  = element_text(size = 8, face = "bold"),
15.     axis.title.y  = element_text(size = 8, face = "bold"),
16.     axis.text.x   = element_text(size = 8),
17.     axis.text.y   = element_text(size = 8),
18.     panel.grid.minor = element_blank())

Giải thích kĩ thuật

    1. Dùng ggplot() để xác định biến độc lập (ROA) và biến phụ thuộc (ROE) từ bộ dữ liệu acb.
    1. geom_point() vẽ các điểm dữ liệu màu cam, biểu diễn mối tương quan giữa ROA và ROE.
    1. geom_smooth(method = “lm”) thêm đường hồi quy tuyến tính màu đỏ, thể hiện xu hướng quan hệ giữa hai biến.
  • 4–8. labs() thêm tiêu đề, phụ đề, và nhãn cho trục X – Y giúp biểu đồ rõ ràng, dễ hiểu.

  • 9–18. Áp dụng theme_minimal() với phông Times New Roman, đồng bộ cỡ chữ = 8.

Nhận xét

  • Biểu đồ cho thấy các điểm dữ liệu phân bố rất gần đường hồi quy màu đỏ, thể hiện mối quan hệ tuyến tính thuận chặt chẽ giữa ROA và ROE.

  • Khi ROA tăng, ROE cũng tăng tương ứng, minh chứng cho việc ACB sử dụng tài sản hiệu quả, đồng thời tận dụng tốt đòn bẩy tài chính để khuếch đại lợi nhuận trên vốn chủ.

4.4.3.3 Hệ số tương quan Pearson

1. cor_roa_roe <- cor(acb$roa, acb$roe, method = "pearson")
2. cor_roa_roe
## [1] 0,9113809

Giải thích kĩ thuật

    1. Hàm cor() tính hệ số tương quan Pearson giữa hai biến ROA và ROE, phản ánh mức độ và chiều hướng mối quan hệ tuyến tính giữa chúng.
    1. In ra kết quả hệ số tương quan (giá trị từ -1 đến 1).

Nhận xét

Hệ số tương quan Pearson r = 0,911 ⇒ cho thấy mối tương quan thuận rất mạnh giữa ROA và ROE.

Mức tương quan này cho thấy hơn 91% biến động của ROE có thể được giải thích bởi biến động của ROA, nghĩa là hiệu quả sử dụng tài sản đóng vai trò quyết định đến khả năng sinh lời trên vốn chủ của ACB.

Đây là kết quả rất hợp lý về mặt tài chính, vì theo mô hình DuPont, ROE được hình thành từ ba yếu tố:

⇒ Khi ROA tăng, ROE sẽ tăng mạnh hơn nhờ hiệu ứng khuếch đại của đòn bẩy tài chính.

Mối tương quan cao cũng phản ánh ACB duy trì được cơ cấu tài chính hợp lý, không phụ thuộc quá mức vào nợ, đảm bảo hiệu quả sinh lời ổn định.

=> Kết luận: Với r = 0,911, có thể khẳng định ROA và ROE có mối liên hệ chặt chẽ và đồng biến, thể hiện sự hiệu quả toàn diện của hoạt động ngân hàng, khi mỗi đồng tài sản tạo ra lợi nhuận ổn định, đồng thời nâng cao giá trị cho cổ đông.

4.5 TỔNG KẾT

Qua quá trình phân tích thống kê mô tả, trực quan hóa và so sánh các chỉ tiêu tài chính, nghiên cứu đã phác họa bức tranh toàn diện về tình hình hoạt động, hiệu quả và xu hướng phát triển của Ngân hàng TMCP Á Châu (ACB) giai đoạn 2015–2024. Dữ liệu cho thấy ACB có sự tăng trưởng ổn định, cơ cấu tài chính an toàn và hiệu quả sinh lời cao trong suốt 10 năm.

4.5.1 Quy mô và cơ cấu tài chính

Tổng tài sản của ACB tăng hơn 4,2 lần (từ 201.457 tỷ lên 864.005 tỷ đồng), thể hiện chiến lược mở rộng quy mô bền vững và khả năng huy động vốn hiệu quả.

Tổng nợ tăng tương ứng, song tỷ lệ nợ trên tổng tài sản (LEV) duy trì quanh mức 0,69–0,70, phản ánh chính sách sử dụng đòn bẩy tài chính hợp lý, an toàn.

Tỷ lệ vốn chủ sở hữu trên tổng tài sản tăng từ 6,3% lên gần 10%, chứng tỏ ACB chủ động củng cố nội lực, giảm phụ thuộc vào nguồn vốn vay và tăng khả năng tự chủ tài chính.

⇒ Nhìn chung, quy mô tăng nhanh nhưng vẫn đi kèm với cấu trúc vốn vững chắc, đảm bảo an toàn và bền vững trong dài hạn.

4.5.2 Hiệu quả sinh lời và năng lực tài chính

ROA (Tỷ suất sinh lời trên tổng tài sản) trung bình đạt 1,9%, cao nhất 2,3% (2022) → cho thấy hiệu quả sử dụng tài sản tốt, ổn định qua thời gian.

ROE (Tỷ suất sinh lời trên vốn chủ sở hữu) trung bình 19%, đạt đỉnh 24% (2018) và duy trì quanh mức 20–22% những năm gần đây → phản ánh khả năng sinh lợi vượt trội trên vốn của cổ đông.

Mối tương quan giữa ROA và ROE rất chặt chẽ (r = 0,911), minh chứng rằng hiệu quả sử dụng tài sản là nền tảng chính cho hiệu quả sinh lời của vốn chủ sở hữu. → ACB duy trì mức sinh lời cao và ổn định, thể hiện năng lực quản trị và sử dụng vốn hiệu quả trong toàn hệ thống.

4.5.3 Thanh khoản, chi phí thuế và cơ cấu nợ

Tỷ lệ thanh khoản (LIQ) dao động từ 3,5%–7,6%, tăng mạnh năm 2021 do dự phòng vốn trong giai đoạn biến động kinh tế, sau đó ổn định quanh 3,6%, phản ánh khả năng điều chỉnh linh hoạt và chủ động của ACB.

Tỷ lệ chi phí thuế (TAX) ổn định quanh 20%, cho thấy chính sách thuế minh bạch và quản trị chi phí hiệu quả.

Cơ cấu nợ tập trung chủ yếu ở nợ ngắn hạn (≈ 65–70%), phù hợp với mô hình ngân hàng thương mại, đảm bảo tính thanh khoản và khả năng quay vòng vốn nhanh. → Các chỉ tiêu phản ánh ACB có hệ thống quản trị tài chính vững chắc, linh hoạt trong thanh khoản và tuân thủ chính sách thuế bền vững.

4.5.4 Mối quan hệ giữa quy mô và lợi nhuận

Hệ số tương quan Pearson giữa tổng tài sản và lợi nhuận sau thuế đạt r = 0,9832, thể hiện mối quan hệ tuyến tính gần như hoàn hảo: khi quy mô tài sản tăng, lợi nhuận cũng tăng tương ứng. → Điều này khẳng định ACB không chỉ mở rộng về lượng mà còn nâng cao hiệu quả về chất, biến tăng trưởng quy mô thành tăng trưởng lợi nhuận thực.

4.5.5 Tổng hợp chung

Tóm lại, giai đoạn 2015–2024 chứng kiến ACB phát triển ổn định, tăng trưởng bền vững và hiệu quả vượt trội:

  • Tăng mạnh về quy mô nhưng vẫn duy trì an toàn tài chính cao.

  • Hiệu quả sinh lời (ROA, ROE) ở mức ấn tượng và ổn định.

  • Cơ cấu nợ, vốn chủ sở hữu được quản trị hợp lý, tuân thủ chuẩn mực quốc tế.

  • Khả năng thanh khoản và quản trị chi phí hiệu quả, đảm bảo hoạt động ổn định ngay cả trong giai đoạn biến động kinh tế.

Kết luận:

Ngân hàng TMCP Á Châu (ACB) là một mô hình điển hình về phát triển an toàn – hiệu quả – bền vững, thể hiện năng lực tài chính mạnh, khả năng sinh lời cao và chiến lược quản trị thận trọng. ACB không chỉ tăng trưởng về quy mô mà còn khẳng định vị thế là một trong những ngân hàng thương mại cổ phần hàng đầu Việt Nam trong thập kỷ vừa qua.