Phần 1: Phân tích bộ dữ liệu Hotel Bookings

1 Giới thiệu tổng quan về bộ dữ liệu

– Trong bối cảnh ngành khách sạn ngày càng cạnh tranh, việc ra quyết định dựa trên dữ liệu đã trở thành yếu tố sống còn để tối ưu hóa vận hành, tối đa hóa doanh thu và nâng cao trải nghiệm khách hàng. Để phục vụ cho mục đích nghiên cứu và phân tích các yếu tố ảnh hưởng đến hành vi đặt phòng, bài luận này sử dụng bộ dữ liệu công khai có tên “Hotel Booking Demand”.

– Bộ dữ liệu này được cung cấp bởi Nuno Antonio, Ana Almeida, và Luis Nunes trong bài báo khoa học “Hotel booking demand datasets” đăng trên tạp chí Data in Brief, và đã được phổ biến rộng rãi trên các nền tảng khoa học dữ liệu như Kaggle và TidyTuesday. Dữ liệu ghi lại các giao dịch đặt phòng thực tế tại hai khách sạn: một khách sạn nghỉ dưỡng (Resort Hotel) và một khách sạn thành phố (City Hotel), đều tọa lạc tại Bồ Đào Nha.

2 Các thư viện sử dụng cho 2 phần

library(dplyr)
library(ggplot2)
library(tidyr)
library(lubridate)
library(countrycode)
library(DT)
library(knitr)
library(scales)
library(broom)
library(tidyverse)
library(waterfalls)
library(viridis)
library(ggthemes)

– tidyverse: Một “siêu thư viện” dùng để tải một bộ sưu tập các thư viện cốt lõi (dplyr, ggplot2, tidyr…) cho việc phân tích dữ liệu cùng một lúc.

– dplyr: Dùng để xử lý và thao tác dữ liệu (lọc hàng, chọn cột, tạo biến mới, sắp xếp, nhóm và tóm tắt). Đây là thư viện xử lý dữ liệu chính.

– ggplot2: Dùng để trực quan hóa dữ liệu và vẽ các loại biểu đồ một cách linh hoạt theo từng lớp (layers).

– tidyr: Dùng để dọn dẹp và tái cấu trúc layout của bảng dữ liệu, chủ yếu là chuyển đổi giữa dạng “rộng” (wide) và “dài” (long).

– lubridate: Dùng để làm việc với dữ liệu ngày tháng và thời gian một cách dễ dàng.

– countrycode: Dùng để chuyển đổi tên và mã quốc gia giữa các hệ thống mã hóa khác nhau (ví dụ: “Vietnam” sang “VNM”).

– DT: Dùng để tạo ra các bảng dữ liệu tương tác (có thể sắp xếp, tìm kiếm, phân trang) trên các báo cáo dạng web (HTML).

– knitr: Là “động cơ” chạy R Markdown, dùng để “dệt” code R và kết quả của nó (văn bản, bảng, biểu đồ) thành một báo cáo hoàn chỉnh (HTML, PDF, Word). Hàm kable() của nó dùng để tạo bảng biểu đẹp.

– scales: Dùng để định dạng lại các nhãn trên trục và chú giải của biểu đồ ggplot2 cho dễ đọc hơn (ví dụ: định dạng phần trăm, nghìn tỷ).

– broom: Dùng để “dọn dẹp” kết quả đầu ra của các mô hình thống kê (như hồi quy) và chuyển chúng thành các bảng dữ liệu sạch sẽ, dễ sử dụng.

– waterfalls: Cung cấp hàm chuyên dụng để vẽ biểu đồ thác nước một cách đơn giản.

– viridis: Cung cấp các bảng màu (color palettes) đẹp mắt, khoa học và thân thiện với người mù màu cho các biểu đồ.

– ggthemes: Cung cấp một bộ sưu tập các chủ đề (themes) được thiết kế sẵn cho ggplot2, mô phỏng phong cách của các ấn phẩm nổi tiếng (The Economist, The Wall Street Journal…).

3 Trích xuất dữ liệu sử dụng

hotels <- read.csv("C:/Users/LSB/Downloads/hotel_bookings (1).csv")

4 Những thông tin cơ bản

4.1 Tổng quan về dữ liệu

str(hotels)
## 'data.frame':    119390 obs. of  32 variables:
##  $ hotel                         : chr  "Resort Hotel" "Resort Hotel" "Resort Hotel" "Resort Hotel" ...
##  $ is_canceled                   : int  0 0 0 0 0 0 0 0 1 1 ...
##  $ lead_time                     : int  342 737 7 13 14 14 0 9 85 75 ...
##  $ arrival_date_year             : int  2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
##  $ arrival_date_month            : chr  "July" "July" "July" "July" ...
##  $ arrival_date_week_number      : int  27 27 27 27 27 27 27 27 27 27 ...
##  $ arrival_date_day_of_month     : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ stays_in_weekend_nights       : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ stays_in_week_nights          : int  0 0 1 1 2 2 2 2 3 3 ...
##  $ adults                        : int  2 2 1 1 2 2 2 2 2 2 ...
##  $ children                      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ babies                        : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ meal                          : chr  "BB" "BB" "BB" "BB" ...
##  $ country                       : chr  "PRT" "PRT" "GBR" "GBR" ...
##  $ market_segment                : chr  "Direct" "Direct" "Direct" "Corporate" ...
##  $ distribution_channel          : chr  "Direct" "Direct" "Direct" "Corporate" ...
##  $ is_repeated_guest             : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ previous_cancellations        : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ previous_bookings_not_canceled: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ reserved_room_type            : chr  "C" "C" "A" "A" ...
##  $ assigned_room_type            : chr  "C" "C" "C" "A" ...
##  $ booking_changes               : int  3 4 0 0 0 0 0 0 0 0 ...
##  $ deposit_type                  : chr  "No Deposit" "No Deposit" "No Deposit" "No Deposit" ...
##  $ agent                         : chr  "NULL" "NULL" "NULL" "304" ...
##  $ company                       : chr  "NULL" "NULL" "NULL" "NULL" ...
##  $ days_in_waiting_list          : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ customer_type                 : chr  "Transient" "Transient" "Transient" "Transient" ...
##  $ adr                           : num  0 0 75 75 98 ...
##  $ required_car_parking_spaces   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ total_of_special_requests     : int  0 0 0 0 1 1 0 1 1 0 ...
##  $ reservation_status            : chr  "Check-Out" "Check-Out" "Check-Out" "Check-Out" ...
##  $ reservation_status_date       : chr  "2015-07-01" "2015-07-01" "2015-07-02" "2015-07-02" ...

Về mặt kỹ thuật: Đầu tiên, dữ liệu được đọc vào từ tệp hotel_bookings.csv và kiểm tra cấu trúc bằng hàm str(hotels). Kết quả cho thấy bộ dữ liệu có hơn 119.000 dòng (tương ứng với số lượt đặt phòng) và 32 cột thông tin (tương ứng với các đặc điểm mô tả từng lượt đặt). Mỗi cột thể hiện một khía cạnh của hành vi khách hàng: loại khách sạn, thời gian đặt, quốc gia, giá phòng, tình trạng hủy, số người ở, loại kênh bán, v.v.

Về mặt ý nghĩa thống kê – thực tế: Có thể hình dung bộ dữ liệu này như một “bức tranh toàn cảnh” về hoạt động kinh doanh của hai khách sạn: City Hotel (ở trung tâm thành phố, phục vụ khách công tác hoặc du lịch ngắn ngày), Resort Hotel (ở khu nghỉ dưỡng, phục vụ khách nghỉ dài ngày).

Dữ liệu phản ánh hàng chục nghìn quyết định của khách hàng từ thời điểm đặt, giá phòng, đến khả năng hủy để giúp khách sạn hiểu hành vi tiêu dùng và tối ưu chiến lược kinh doanh.

4.2 Số biến và số quan sát

dim(hotels)
## [1] 119390     32

Về mặt kỹ thuật: Khi sử dụng lệnh dim(hotels), kết quả trả về 119.390 dòng và 32 cột. Dòng thể hiện từng lượt đặt phòng riêng biệt, còn cột là các đặc điểm mô tả.

Về mặt ý nghĩa thực tế: Điều này cho thấy bộ dữ liệu có quy mô rất lớn.Số lượng quan sát dồi dào cho phép rút ra các kết luận có độ tin cậy cao và giúp phát hiện các quy luật hành vi của khách hàng trong nhiều điều kiện khác nhau (mùa, giá, loại khách, quốc gia…). Kết quả trên cho thấy bộ dữ liệu có 119390 quan sát và 32 biến.

4.3 Kiểm tra dữ liệu trùng lặp

so_dong_trung_lap <- sum(duplicated(hotels))
print(so_dong_trung_lap)
## [1] 31994

Về mặt kỹ thuật: Sử dụng hàm duplicated() để xác định các dòng trùng nhau. Kết quả cho thấy có khoảng 31.994 lượt đặt bị trùng, tức là những dòng có thông tin hoàn toàn giống nhau ở mọi cột.

Về mặt ý nghĩa thực tế: Sự trùng lặp này có thể phát sinh khi dữ liệu được nhập nhiều lần hoặc lưu trữ sau mỗi lần cập nhật trạng thái (ví dụ: đặt – hủy – đặt lại). Nếu không loại bỏ, dữ liệu sẽ phóng đại tần suất và làm sai lệch tỷ lệ hủy phòng hoặc doanh thu trung bình. Việc nhận diện sớm giúp đảm bảo dữ liệu phản ánh đúng thực tế hoạt động của khách sạn.

4.4 Tra cứu các dữ liệu bị trùng lặp

phan_tich_trung_lap <- hotels %>%
  count(across(everything()), sort = TRUE) %>%
  filter(n > 1)
datatable(phan_tich_trung_lap)
## Warning in instance$preRenderHook(instance): It seems your data is too big for
## client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html

Về mặt kỹ thuật: Các dòng bị trùng được nhóm lại bằng count(across(everything())) và hiển thị bằng bảng tương tác datatable(). Cách làm này giúp xem trực tiếp nội dung của các dòng bị lặp để xác định nguyên nhân.

Về mặt ý nghĩa thực tế: Qua bảng kết quả, ta có thể nhận thấy nhiều bản ghi giống hệt nhau về ngày đến, loại phòng và kênh đặt phòng. Điều này thường xảy ra khi khách hoặc đại lý gửi nhiều yêu cầu giống nhau để “giữ chỗ” trước khi xác nhận chính thức. Do đó, loại bỏ những bản ghi này giúp dữ liệu “sạch” và phản ánh chính xác lượng đặt thực tế.

4.5 Kiểm tra dữ liệu bị thiếu

colSums(is.na(hotels))
##                          hotel                    is_canceled 
##                              0                              0 
##                      lead_time              arrival_date_year 
##                              0                              0 
##             arrival_date_month       arrival_date_week_number 
##                              0                              0 
##      arrival_date_day_of_month        stays_in_weekend_nights 
##                              0                              0 
##           stays_in_week_nights                         adults 
##                              0                              0 
##                       children                         babies 
##                              4                              0 
##                           meal                        country 
##                              0                              0 
##                 market_segment           distribution_channel 
##                              0                              0 
##              is_repeated_guest         previous_cancellations 
##                              0                              0 
## previous_bookings_not_canceled             reserved_room_type 
##                              0                              0 
##             assigned_room_type                booking_changes 
##                              0                              0 
##                   deposit_type                          agent 
##                              0                              0 
##                        company           days_in_waiting_list 
##                              0                              0 
##                  customer_type                            adr 
##                              0                              0 
##    required_car_parking_spaces      total_of_special_requests 
##                              0                              0 
##             reservation_status        reservation_status_date 
##                              0                              0

Về mặt kỹ thuật: Sử dụng colSums(is.na(hotels)) để đếm số giá trị bị thiếu ở từng cột. Kết quả cho thấy chỉ có cột “Children” xuất hiện giá trị bị thiếu.

Về mặt ý nghĩa thực tế: Việc thiếu dữ liệu ở cột “Children” là dễ hiểu, vì nhiều lượt đặt chỉ có người lớn và không ghi rõ số trẻ em. Nếu không xử lý, các giá trị trống này có thể gây lỗi khi tính toán trung bình hoặc thống kê mô tả. Do đó, việc xác định sớm biến có dữ liệu thiếu là bước quan trọng trước khi phân tích.

4.6 Làm sạch dữ liệu

analyzed <- hotels %>%
  distinct() %>%
  mutate(children = replace_na(children, 0)) %>%
  filter(!(adults == 0 & children == 0 & babies == 0), adr > 0)

Về mặt kỹ thuật: Quá trình làm sạch được thực hiện qua ba bước:

Loại bỏ dòng trùng lặp bằng distinct().

Thay thế giá trị thiếu của “Children” bằng 0 để đảm bảo các phép tính không bị lỗi.

Loại bỏ những dòng dữ liệu không hợp lý, chẳng hạn như tổng số người lớn, trẻ em, em bé đều bằng 0 hoặc giá phòng bằng 0.

Về mặt ý nghĩa thực tế: Sau khi làm sạch, dữ liệu chỉ còn lại những lượt đặt phòng hợp lệ – tức là có ít nhất một khách và có giá trị thanh toán thật. Điều này giúp loại bỏ các bản ghi “ảo” (test hệ thống hoặc nhập sai), đảm bảo rằng các phân tích sau phản ánh chính xác hoạt động kinh doanh thực tế của khách sạn.

4.7 Ý nghĩa của các biến

full_data_dictionary <- tibble::tribble(
  ~`Tên Biến`, ~`Ý Nghĩa`,
  "hotel", "Loại khách sạn (Resort Hotel hoặc City Hotel).",
  "is_canceled", "Biến nhị phân cho biết lượt đặt phòng có bị hủy không (1 = Đã hủy, 0 = Không hủy).",
  "lead_time", "Số ngày tính từ lúc đặt phòng đến ngày khách nhận phòng.",
  "arrival_date_year", "Năm khách đến nhận phòng.",
  "arrival_date_month", "Tháng khách đến nhận phòng.",
  "arrival_date_week_number", "Số thứ tự của tuần trong năm mà khách đến.",
  "arrival_date_day_of_month", "Ngày trong tháng mà khách đến.",
  "stays_in_weekend_nights", "Số đêm khách ở vào các ngày cuối tuần (Thứ 7 hoặc Chủ Nhật).",
  "stays_in_week_nights", "Số đêm khách ở vào các ngày trong tuần (Thứ 2 - Thứ 6).",
  "adults", "Số lượng người lớn.",
  "children", "Số lượng trẻ em.",
  "babies", "Số lượng em bé.",
  "meal", "Loại bữa ăn đã đặt. (BB: Bed & Breakfast; HB: Half board; FB: Full board; SC: No meal).",
  "country", "Quốc gia của khách hàng (định dạng mã ISO 3166-1 alpha-3).",
  "market_segment", "Kênh thị trường tạo ra lượt đặt phòng (ví dụ: TA/TO - Đại lý du lịch).",
  "distribution_channel", "Kênh phân phối của lượt đặt phòng (ví dụ: Direct, Corporate).",
  "is_repeated_guest", "Biến nhị phân cho biết khách có phải là khách đã từng ở trước đây không (1 = Có, 0 = Không).",
  "previous_cancellations", "Số lượng các lượt đặt phòng trước đó đã bị hủy bởi khách hàng.",
  "previous_bookings_not_canceled", "Số lượng các lượt đặt phòng trước đó không bị hủy bởi khách hàng.",
  "reserved_room_type", "Mã loại phòng đã được đặt.",
  "assigned_room_type", "Mã loại phòng được chỉ định tại thời điểm nhận phòng (có thể khác với phòng đã đặt).",
  "booking_changes", "Số lượng thay đổi được thực hiện đối với việc đặt phòng.",
  "deposit_type", "Loại tiền đặt cọc (No Deposit: Không cọc; Non Refund: Cọc không hoàn lại; Refundable: Cọc hoàn lại).",
  "agent", "Mã ID của đại lý du lịch đã đặt phòng.",
  "company", "Mã ID của công ty đã đặt phòng hoặc chịu trách nhiệm thanh toán.",
  "days_in_waiting_list", "Số ngày chờ trong danh sách chờ trước khi lượt đặt phòng được xác nhận.",
  "customer_type", "Phân khúc khách hàng (Transient, Contract, Transient-Party, Group).",
  "adr", "Giá phòng trung bình mỗi ngày (Average Daily Rate = Tổng doanh thu phòng / Tổng số đêm ở).",
  "required_car_parking_spaces", "Số lượng chỗ đỗ xe được khách yêu cầu.",
  "total_of_special_requests", "Tổng số các yêu cầu đặc biệt được khách đưa ra (ví dụ: phòng tầng cao, giường phụ).",
  "reservation_status", "Trạng thái cuối cùng của lượt đặt phòng (Canceled, Check-Out, No-Show).",
  "reservation_status_date", "Ngày của trạng thái cuối cùng."
)
ten_bien_da_su_dung <- c(
  "hotel", "lead_time", "arrival_date_month", "country", "market_segment", "is_canceled", "adr",
  "arrival_date_year", "stays_in_weekend_nights", "stays_in_week_nights", "children", "babies",
  "is_repeated_guest", "reserved_room_type", "deposit_type", "required_car_parking_spaces",
  "total_of_special_requests"
)
data_dictionary_selected <- full_data_dictionary %>%
  filter(`Tên Biến` %in% ten_bien_da_su_dung)
kieu_du_lieu_selected <- sapply(analyzed[ten_bien_da_su_dung], class)
vi_du_thuc_te_selected <- sapply(ten_bien_da_su_dung, function(bien) {
  analyzed %>%
    pull(all_of(bien)) %>%
    unique() %>%
    na.omit() %>%
    head(3) %>%
    paste(collapse = ", ")
})

data_dictionary_selected <- data_dictionary_selected %>%
  slice(match(ten_bien_da_su_dung, `Tên Biến`))

data_dictionary_final <- data_dictionary_selected %>%
  mutate(
    `Kiểu Dữ liệu` = kieu_du_lieu_selected,
    `Ví dụ Giá trị` = vi_du_thuc_te_selected
  )
kable(data_dictionary_final, n = 20)
Tên Biến Ý Nghĩa Kiểu Dữ liệu Ví dụ Giá trị
hotel Loại khách sạn (Resort Hotel hoặc City Hotel). character Resort Hotel, City Hotel
lead_time Số ngày tính từ lúc đặt phòng đến ngày khách nhận phòng. integer 7, 13, 14
arrival_date_month Tháng khách đến nhận phòng. character July, August, September
country Quốc gia của khách hàng (định dạng mã ISO 3166-1 alpha-3). character GBR, PRT, USA
market_segment Kênh thị trường tạo ra lượt đặt phòng (ví dụ: TA/TO - Đại lý du lịch). character Direct, Corporate, Online TA
is_canceled Biến nhị phân cho biết lượt đặt phòng có bị hủy không (1 = Đã hủy, 0 = Không hủy). integer 0, 1
adr Giá phòng trung bình mỗi ngày (Average Daily Rate = Tổng doanh thu phòng / Tổng số đêm ở). numeric 75, 98, 107
arrival_date_year Năm khách đến nhận phòng. integer 2015, 2016, 2017
stays_in_weekend_nights Số đêm khách ở vào các ngày cuối tuần (Thứ 7 hoặc Chủ Nhật). integer 0, 1, 2
stays_in_week_nights Số đêm khách ở vào các ngày trong tuần (Thứ 2 - Thứ 6). integer 1, 2, 3
children Số lượng trẻ em. integer 0, 1, 2
babies Số lượng em bé. integer 0, 1, 2
is_repeated_guest Biến nhị phân cho biết khách có phải là khách đã từng ở trước đây không (1 = Có, 0 = Không). integer 0, 1
reserved_room_type Mã loại phòng đã được đặt. character A, C, D
deposit_type Loại tiền đặt cọc (No Deposit: Không cọc; Non Refund: Cọc không hoàn lại; Refundable: Cọc hoàn lại). character No Deposit, Refundable, Non Refund
required_car_parking_spaces Số lượng chỗ đỗ xe được khách yêu cầu. integer 0, 1, 2
total_of_special_requests Tổng số các yêu cầu đặc biệt được khách đưa ra (ví dụ: phòng tầng cao, giường phụ). integer 0, 1, 3

Về mặt kỹ thuật: Danh sách các biến được chọn ra nhằm phục vụ cho các phần phân tích tiếp theo, bao gồm thông tin về:

Đặc điểm đặt phòng (thời gian đặt, thời gian lưu trú, giá phòng, loại phòng),

Nguồn khách (quốc gia, kênh đặt),

Tình trạng (đã hủy hay không, có phải khách quay lại, có yêu cầu đặc biệt…).

Về mặt ý nghĩa thực tế: Các biến này bao trùm toàn bộ chu trình đặt phòng – từ lúc khách lên kế hoạch (lead_time), chọn kênh (market_segment), xác nhận đặt (deposit_type), đến khi trả phòng (reservation_status). Nhờ đó, khách sạn có thể hiểu:

Ai là nhóm khách đặt sớm và có xu hướng hủy nhiều;

Kênh nào mang lại doanh thu cao hơn;

Phân khúc nào có khả năng quay lại cao;

Và yếu tố nào ảnh hưởng đến giá phòng trung bình.

Tập biến được chọn này chính là cơ sở cho các phân tích hành vi, thống kê và biểu đồ sau đó.

5 Phân tổ các biến

Sau khi dữ liệu đã được làm sạch và xử lý ở phần trước, bước tiếp theo là phân tổ dữ liệu, tức là chia tập dữ liệu lớn thành các nhóm nhỏ có đặc điểm tương đồng để nhận diện mối quan hệ, xu hướng và sự khác biệt giữa các nhóm. Trong R, việc phân tổ không chỉ giúp tóm tắt dữ liệu hiệu quả mà còn chuẩn bị cho các kiểm định và trực quan hóa ở phần 6. ## Rủi ro hủy phòng theo thời gian đặt trước

5.0.1 Xem xét rủi ro hủy phòng thay đổi như thế nào theo các khoảng thời gian đặt trước khác nhau

Ý nghĩa kỹ thuật: Trước tiên, ta tạo ra các nhóm thời gian đặt trước (lead_time) bằng hàm mutate() kết hợp case_when().

mutate() được dùng để thêm hoặc sửa cột trong khung dữ liệu mà không làm thay đổi các cột khác.

case_when() giúp phân loại điều kiện logic:

< 7 ngày: “Đặt trong 1 tuần”

7–90 ngày: “Đặt trong 3 tháng”

90 ngày: “Đặt rất sớm (>3 tháng)”

Sau đó, ta dùng group_by(lead_time_group) để gom các dòng dữ liệu có cùng nhóm thời gian lại, rồi dùng summarise() để tính trung bình tỷ lệ hủy (is_canceled) cho từng nhóm.

ruirohuyphong <- analyzed %>%
  mutate(lead_time_group = case_when(
    lead_time <= 7 ~ "Đặt trong 1 tuần",
    lead_time <= 90 ~ "Đặt trong 3 tháng",
    TRUE ~ "Đặt rất sớm (>3 tháng)"
  )) %>%
  group_by(lead_time_group) %>%
  summarise(ty_le_huy = mean(is_canceled)) %>%
  mutate(lead_time_group = factor(lead_time_group, levels = c("Đặt trong 1 tuần", "Đặt trong 3 tháng", "Đặt rất sớm (>3 tháng)"))) %>%
  arrange(lead_time_group)
kable(ruirohuyphong)
lead_time_group ty_le_huy
Đặt trong 1 tuần 0.0843032
Đặt trong 3 tháng 0.2948239
Đặt rất sớm (>3 tháng) 0.3702148

Ý nghĩa thống kê – kinh tế: Kết quả cho thấy tỷ lệ hủy phòng tăng dần theo thời gian đặt trước:

Đặt trong 1 tuần: tỷ lệ hủy rất thấp,

Đặt 1–3 tháng: trung bình,

Đặt sớm trên 3 tháng: cao nhất.

Điều này phản ánh hành vi không chắc chắn của khách hàng đặt sớm – họ thường đặt trước để “giữ chỗ”, sau đó có thể thay đổi khi tìm được ưu đãi hoặc kế hoạch khác. Trong khi đó, khách đặt sát ngày đến thường đã xác định chắc chắn chuyến đi nên ít hủy.

Kết quả này gợi ý cho khách sạn hai hướng chiến lược:

Điều chỉnh chính sách giá động (Dynamic Pricing): Cho phép hủy linh hoạt với khách đặt cận ngày (để tăng công suất). Hạn chế hủy hoặc yêu cầu đặt cọc với khách đặt sớm.

Ứng dụng mô hình dự báo: Dựa trên phân tổ này, khách sạn có thể dự đoán trước lượng hủy tiềm năng để điều chỉnh số phòng mở bán.

Sự khác biệt này sẽ được kiểm chứng bằng kiểm định thống kê ở mục kế tiếp.

5.0.2 Kiểm định sự khác biệt rủi ro hủy giữa các nhóm thời gian đặt

Ý nghĩa kỹ thuật: Để kiểm tra xem sự khác biệt tỷ lệ hủy giữa các nhóm trên có phải ngẫu nhiên hay có thật, ta sử dụng kiểm định Chi-bình phương (Chi-squared test).

Hàm table(lead_time_group, is_canceled) tạo bảng chéo tần số giữa hai biến.

Hàm chisq.test() thực hiện phép kiểm định độc lập giữa hai biến phân loại.

Giả thuyết được đặt ra:

Giả thuyết H₀: Không có mối liên hệ nào giữa nhóm thời gian đặt phòng và việc hủy phòng. Chúng độc lập với nhau.

Công cụ: Kiểm định Chi-bình phương (Chi-squared Test), vì cả hai đều là biến phân loại.

lead_time_data_for_test <- analyzed %>%
  mutate(lead_time_group = case_when(
    lead_time <= 7 ~ "Trong 1 tuần",
    lead_time <= 90 ~ "Trong 3 tháng",
    TRUE ~ "Trên 3 tháng"
  ))
chi_table_lead_time <- table(lead_time_data_for_test$lead_time_group, lead_time_data_for_test$is_canceled)
chisq.test(chi_table_lead_time)
## 
##  Pearson's Chi-squared test
## 
## data:  chi_table_lead_time
## X-squared = 4537.6, df = 2, p-value < 2.2e-16

Kết quả p-value < 2.2e−16 → bác bỏ H₀.

Ý nghĩa thống kê – kinh tế: Điều này khẳng định mối liên hệ giữa thời gian đặt và rủi ro hủy không phải ngẫu nhiên. Càng đặt sớm, khách càng có khả năng thay đổi kế hoạch. Kết quả này giúp khách sạn lượng hóa được mức độ rủi ro theo nhóm thời gian, làm cơ sở cho các mô hình dự báo hoặc điều chỉnh giá.

5.1 Hành vi khách hàng ở các nhóm giá khác nhau

5.1.1 Xem xét sự phân bổ của các mức giá “Rẻ”, “Trung bình”, “Cao” ở City Hotel và Resort Hotel

Ý nghĩa kỹ thuật: Đầu tiên, ta lọc dữ liệu loại bỏ các giá trị adr bất thường (adr > 0 & adr < 500) để tránh sai lệch. Sau đó, dùng mutate() + cut() để phân chia giá thành ba nhóm:

< 80: Giá rẻ,

80–150: Giá trung bình,

150: Giá cao.

Hàm cut() chia giá trị số thành các khoảng rời rạc (bins), giúp so sánh dễ dàng. Tiếp theo, group_by(hotel, price_group) + summarise() đếm số lượt đặt của mỗi loại khách sạn trong từng mức giá.

phanbomucgia <- analyzed %>%
  filter(adr > 0 & adr < 500) %>%
  mutate(price_group = cut(adr,
                           breaks = c(0, 80, 150, 500),
                           labels = c("Giá rẻ (<$80)", "Giá trung bình ($80-$150)", "Giá cao (>$150)"))) %>%
  count(hotel, price_group)
kable(phanbomucgia)
hotel price_group n
City Hotel Giá rẻ (<$80) 10589
City Hotel Giá trung bình ($80-$150) 33589
City Hotel Giá cao (>$150) 8141
Resort Hotel Giá rẻ (<$80) 16610
Resort Hotel Giá trung bình ($80-$150) 9688
Resort Hotel Giá cao (>$150) 6966

Ý nghĩa thống kê – kinh tế: Kết quả cho thấy City Hotel tập trung ở nhóm giá trung bình, trong khi Resort Hotel chiếm tỷ trọng cao hơn ở nhóm giá rẻ. Điều này phản ánh rõ chiến lược định vị:

City Hotel phục vụ khách công tác và du lịch ngắn ngày – mức chi trả cao hơn.

Resort Hotel hướng đến du lịch nghỉ dưỡng đại trà, cạnh tranh bằng giá.

Phân tổ này bổ sung cho kết quả mục 5.1: khách đặt sớm (thường chọn gói giá thấp) cũng là nhóm có tỷ lệ hủy cao → giá phòng và rủi ro hủy có mối quan hệ tiềm ẩn.

5.1.2 Sự khác biệt về số đêm ở trung bình giữa ba nhóm giá (“Rẻ”, “Trung bình”, “Cao”) có ý nghĩa thống kê không?

Ý nghĩa kỹ thuật: Để xem khách ở bao lâu trong từng mức giá, ta dùng phân tích phương sai (ANOVA):

aov(total_nights ~ price_group, data = df) → so sánh trung bình số đêm (total_nights) giữa ba nhóm giá.

Hàm summary() cho kết quả p-value để kiểm định sự khác biệt.

ANOVA được chọn vì:

Biến phụ thuộc là liên tục (số đêm),

Biến độc lập là phân loại (mức giá).

Giả thuyết được đặt ra: Giả thuyết H₀: Số đêm ở trung bình của cả ba nhóm giá là như nhau.

price_data_for_test <- analyzed %>%
  filter(adr > 0 & adr < 500) %>%
  mutate(
    price_group = cut(adr, breaks = c(0, 80, 150, 500), labels = c("Giá rẻ", "Giá trung bình", "Giá cao")),
    total_nights = stays_in_weekend_nights + stays_in_week_nights
  ) %>%
  filter(total_nights > 0)
aov_price_nights <- aov(total_nights ~ price_group, data = price_data_for_test)
summary(aov_price_nights)
##                Df Sum Sq Mean Sq F value Pr(>F)    
## price_group     2   1237   618.4    83.2 <2e-16 ***
## Residuals   85580 636133     7.4                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ý nghĩa thống kê – kinh tế: Kết quả p-value < 2e−16 → có sự khác biệt rõ ràng. Cụ thể:

Khách ở nhóm giá rẻ lưu trú lâu hơn (thường là khách du lịch nghỉ dưỡng).

Nhóm giá cao ở ngắn hơn (do đi công tác hoặc kỳ nghỉ ngắn).

Điều này liên kết trực tiếp với chính sách định giá theo thời gian ở (length-of-stay pricing): khách sạn có thể ưu đãi giảm giá cho khách ở dài để tối ưu công suất, và tăng giá với lưu trú ngắn hạn trong mùa cao điểm.

5.2 Hành vi khách nội địa và quốc tế

5.2.1 So sánh hành vi đặt phòng: Khách quốc tế có đặt sớm hơn khách nội địa không?

Ý nghĩa kỹ thuật: Sử dụng mutate() để tạo biến mới loai_khach dựa trên country:

“Nội địa” nếu là “PRT”,

“Quốc tế” cho các mã quốc gia khác.

Sau đó group_by(loai_khach) và summarise(lead_time_trung_binh = mean(lead_time)) để tính thời gian đặt trung bình cho mỗi nhóm.

hanhvidatphong <- analyzed %>%
  mutate(customer_location = ifelse(country == "PRT", "Nội địa (Bồ Đào Nha)", "Quốc tế")) %>%
  filter(!is.na(customer_location)) %>%
  group_by(customer_location) %>%
  summarise(lead_time_trung_binh = mean(lead_time))
kable(hanhvidatphong)
customer_location lead_time_trung_binh
Nội địa (Bồ Đào Nha) 66.70629
Quốc tế 86.84226

Ý nghĩa thống kê – kinh tế: Kết quả cho thấy khách quốc tế đặt sớm hơn rõ rệt (~87 ngày so với ~67 ngày của khách nội địa). Điều này hoàn toàn hợp lý: khách quốc tế cần sắp xếp vé, visa, kế hoạch di chuyển.

Kết quả này nối tiếp logic từ phần 5.1: → Thời gian đặt ảnh hưởng đến tỷ lệ hủy. → Khách quốc tế đặt sớm hơn → có thể mang rủi ro hủy cao hơn nếu không có chính sách ràng buộc rõ ràng. Phần sau sẽ kiểm định chặt chẽ hơn sự khác biệt này.

5.2.2 Thời gian đặt phòng trước của khách quốc tế có thực sự dài hơn khách nội địa về mặt thống kê không?

Ý nghĩa kỹ thuật: Dùng kiểm định T-test hai mẫu độc lập (t.test(lead_time ~ loai_khach)) để so sánh trung bình thời gian đặt giữa hai nhóm. T-test phù hợp khi:

Hai nhóm độc lập,

Dữ liệu gần phân phối chuẩn,

Biến phụ thuộc liên tục.

Giả thuyết được đặt ra: Giả thuyết H₀: lead_time_trung_binh của hai nhóm là như nhau.

location_data_for_test <- analyzed %>%
  mutate(customer_location = ifelse(country == "PRT", "Nội địa", "Quốc tế")) %>%
  filter(!is.na(customer_location))
t.test(lead_time ~ customer_location, data = location_data_for_test) %>% tidy()
## # A tibble: 1 × 10
##   estimate estimate1 estimate2 statistic   p.value parameter conf.low conf.high
##      <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>    <dbl>     <dbl>
## 1    -20.1      66.7      86.8     -31.2 5.62e-212    47866.    -21.4     -18.9
## # ℹ 2 more variables: method <chr>, alternative <chr>

Ý nghĩa thống kê – kinh tế: P-value cực nhỏ (5.62e−212) → bác bỏ H₀, xác nhận khách quốc tế đặt sớm hơn một cách có ý nghĩa thống kê.

Kết quả này củng cố mạch phân tích:

Ở 5.1, ta thấy đặt sớm dễ hủy.

Ở 5.3, ta thấy khách quốc tế đặt sớm hơn. → Do đó, khách quốc tế có thể là nhóm cần kiểm soát rủi ro hủy mạnh hơn.

Điều này mở hướng cho quản lý: áp dụng chính sách đặt cọc, hoàn hủy riêng cho từng thị trường quốc gia.

5.3 So sánh mức giá trung bình giữa các kênh bán hàng

5.3.1 So sánh mức giá trung bình giữa các kênh bán hàng chính: “Online”, “Offline/Groups”, và “Direct/Corporate”

Ý nghĩa kỹ thuật: Dùng mutate() để gom nhóm các kênh trong biến market_segment:

Online (OTA)

Offline/Groups

Direct/Corporate

Others

Tiếp theo, group_by(kenh_ban) và summarise(gia_trung_binh = mean(adr)) để tính giá trung bình mỗi nhóm, sau đó arrange(desc(gia_trung_binh)) để sắp xếp giảm dần.

mucgiatrungbinh <- analyzed %>%
  filter(adr > 0) %>%
  mutate(segment_group = case_when(
    market_segment == "Online TA" ~ "Kênh Online",
    market_segment %in% c("Offline TA/TO", "Groups") ~ "Kênh Offline & Đoàn",
    market_segment %in% c("Direct", "Corporate") ~ "Kênh Trực tiếp & Doanh nghiệp",
    TRUE ~ "Kênh khác"
  )) %>%
  group_by(segment_group) %>%
  summarise(gia_trung_binh = mean(adr)) %>%
  arrange(desc(gia_trung_binh))
kable(mucgiatrungbinh)
segment_group gia_trung_binh
Kênh Online 119.00709
Kênh Trực tiếp & Doanh nghiệp 105.85448
Kênh khác 87.09528
Kênh Offline & Đoàn 82.05070

Ý nghĩa thống kê – kinh tế: Kết quả cho thấy OTA (kênh online) có giá trung bình cao nhất (~119 USD), còn Offline/Groups thấp hơn (~82 USD). Điều này phản ánh mô hình thị trường hiện đại:

OTA thu hút khách lẻ, sẵn sàng chi trả cao,

Nhóm doanh nghiệp/đoàn được giảm giá theo hợp đồng.

Kết quả này nối tiếp logic từ phần 5.2: → Mức giá ảnh hưởng đến thời gian ở và tỷ lệ hủy, → Giờ ta thấy thêm rằng kênh bán hàng cũng tác động mạnh đến mức giá. Điều này giúp hình thành khung nhìn tổng thể: giá – kênh – hành vi khách hàng.

5.3.2 Sự khác biệt về giá phòng trung bình giữa các nhóm kênh bán hàng có ý nghĩa thống kê không?

Ý nghĩa kỹ thuật: Dùng aov(adr ~ kenh_ban) để thực hiện phân tích phương sai (ANOVA) nhằm xác định sự khác biệt giá trung bình giữa các kênh. ANOVA được chọn vì có nhiều hơn hai nhóm và biến phụ thuộc là liên tục.

Giả thuyết được đặt ra: Giả thuyết H₀: Giá phòng trung bình (adr) là như nhau ở tất cả các nhóm kênh bán hàng.

segment_data_for_test <- analyzed %>%
  filter(adr > 0) %>%
  mutate(segment_group = case_when(
    market_segment == "Online TA" ~ "Kênh Online",
    market_segment %in% c("Offline TA/TO", "Groups") ~ "Kênh Offline & Đoàn",
    market_segment %in% c("Direct", "Corporate") ~ "Kênh Trực tiếp & Doanh nghiệp",
    TRUE ~ "Kênh khác"
  ))
aov_segment_adr <- aov(adr ~ segment_group, data = segment_data_for_test)
summary(aov_segment_adr)
##                  Df    Sum Sq Mean Sq F value Pr(>F)    
## segment_group     3  18732939 6244313    2374 <2e-16 ***
## Residuals     85582 225079420    2630                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ý nghĩa thống kê – kinh tế: P-value < 2e−16 → giá phòng khác biệt có ý nghĩa thống kê giữa các kênh. Điều này xác nhận rằng việc lựa chọn kênh bán hàng ảnh hưởng trực tiếp đến doanh thu.

Từ đây, khách sạn có thể điều chỉnh:

Ưu tiên kênh trực tiếp để giảm chi phí hoa hồng,

Tận dụng OTA trong mùa thấp điểm để kích cầu,

Và cân bằng doanh thu tổng thể bằng phân bổ hợp lý giữa các kênh.

5.4 Rủi ro hủy phòng theo giá trị đặt phòng

5.4.1 Quan sát rủi ro hủy theo nhóm giá trị đặt phòng

Ý nghĩa kỹ thuật: Dùng quantile() để chia giá trị adr thành 3 nhóm dựa trên tứ phân vị (25%, 75%, 100%). Sau đó mutate(price_group) gắn nhãn “Thấp – Trung bình – Cao”. group_by(price_group) + summarise(ty_le_huy = mean(is_canceled)) cho ta tỷ lệ hủy theo từng nhóm.

giatridatphong <- analyzed %>%
  filter(adr > 0) %>%
  mutate(price_group = cut(adr,
                           breaks = quantile(adr, probs = c(0, 0.25, 0.75, 1)),
                           labels = c("Giá thấp", "Giá trung bình", "Giá cao"))) %>%
  filter(!is.na(price_group)) %>%
  group_by(price_group) %>%
  summarise(ty_le_huy = mean(is_canceled))
kable(giatridatphong)
price_group ty_le_huy
Giá thấp 0.1880374
Giá trung bình 0.2912317
Giá cao 0.3445314

Ý nghĩa thống kê – kinh tế: Kết quả cho thấy nhóm giá cao có tỷ lệ hủy lớn nhất (~34%), nhóm thấp chỉ khoảng 18%. Điều này logic với kết quả 5.1 & 5.2:

Khách đặt sớm (giá tốt) dễ hủy,

Giá cao → thường đặt sớm để chọn phòng đẹp, nhưng cũng dễ thay đổi kế hoạch.

Điều này gợi ý khách sạn nên quản lý rủi ro hủy theo phân khúc giá:

Với giá cao: áp dụng đặt cọc hoặc không hoàn hủy,

Với giá thấp: linh hoạt để thu hút khách ngắn hạn.

5.4.2 Mối liên hệ giữa nhóm giá phòng và việc hủy phòng có ý nghĩa thống kê không?

Ý nghĩa kỹ thuật: Dùng chisq.test(table(price_group, is_canceled)) để thực hiện kiểm định Chi-bình phương giữa nhóm giá và tình trạng hủy. Vì cả hai biến là phân loại, nên Chi-square là phương pháp phù hợp nhất.

Giả thuyết được đặt ra: Giả thuyết H₀: Nhóm giá phòng và việc hủy phòng là hai biến độc lập. Tỷ lệ hủy phòng là như nhau ở tất cả các nhóm giá.

price_data_for_test <- analyzed %>%
  filter(adr > 0) %>%
  mutate(price_group = cut(adr,
                           breaks = quantile(adr, probs = c(0, 0.25, 0.75, 1), na.rm = TRUE),
                           labels = c("Giá thấp", "Giá trung bình", "Giá cao"))) %>%
  filter(!is.na(price_group))
chi_table_price <- table(price_data_for_test$price_group, price_data_for_test$is_canceled)
chisq.test(chi_table_price)
## 
##  Pearson's Chi-squared test
## 
## data:  chi_table_price
## X-squared = 1363.5, df = 2, p-value < 2.2e-16

Ý nghĩa thống kê – kinh tế: P-value < 2.2e−16 → mối liên hệ là có thật, không phải ngẫu nhiên. Giá phòng và khả năng hủy có liên hệ chặt chẽ.

Điều này hoàn thiện mạch phân tích:

Từ thời gian đặt (5.1) → giá phòng (5.2) → loại khách (5.3) → kênh bán (5.4) → đến giá trị đặt phòng (5.5), ta thấy hành vi hủy chịu ảnh hưởng đa chiều, nhưng nhất quán: khách đặt sớm, giá cao, qua kênh online thường hủy nhiều hơn.

Nhận định này là nền tảng cho phân tích trực quan và mô hình dự báo ở phần 6, nơi các yếu tố này được thể hiện sinh động bằng biểu đồ và đồ thị.

5.5 Hoạt động của khách sạn theo mùa

5.5.1 Xem xét loại khách sạn nào hoạt động tốt hơn trong “Mùa cao điểm” so với “Mùa thấp điểm”

hoatdongtheomua <- analyzed %>%
  mutate(season = case_when(
    arrival_date_month %in% c("June", "July", "August") ~ "Mùa hè (Cao điểm)",
    arrival_date_month %in% c("December", "January", "February") ~ "Mùa đông (Thấp điểm)",
    TRUE ~ "Mùa chuyển tiếp"
  )) %>%
  count(hotel, season)
kable(hoatdongtheomua)
hotel season n
City Hotel Mùa chuyển tiếp 26174
City Hotel Mùa hè (Cao điểm) 17049
City Hotel Mùa đông (Thấp điểm) 9098
Resort Hotel Mùa chuyển tiếp 15297
Resort Hotel Mùa hè (Cao điểm) 11599
Resort Hotel Mùa đông (Thấp điểm) 6369

Về mặt kỹ thuật: Ở bước này, dữ liệu được phân loại theo mùa dựa trên tháng khách đến (biến arrival_date_month). Cụ thể, các tháng 6, 7, 8 được quy ước là “mùa hè – mùa cao điểm”; các tháng 12, 1, 2 là “mùa đông – mùa thấp điểm”; những tháng còn lại được xếp vào “mùa chuyển tiếp”. Việc nhóm dữ liệu theo mùa được thực hiện bằng hàm mutate() kết hợp case_when() trong R. Sau đó, sử dụng group_by(hotel, season) và count() để xác định số lượng đặt phòng tương ứng với từng loại khách sạn ở mỗi mùa. Cách phân tổ này giúp đánh giá sự khác biệt về mức độ hoạt động của hai loại hình khách sạn (City Hotel và Resort Hotel) trong từng giai đoạn của năm.

Về mặt thống kê – kinh tế: Kết quả cho thấy Resort Hotel có số lượng đặt phòng tăng mạnh trong mùa hè và mùa chuyển tiếp, trong khi City Hotel duy trì công suất ổn định hơn quanh năm. Điều này phản ánh đặc điểm sản phẩm: Resort Hotel phụ thuộc chủ yếu vào khách du lịch nghỉ dưỡng, vốn tập trung vào mùa cao điểm; trong khi City Hotel phục vụ cả khách công vụ lẫn khách du lịch ngắn ngày nên ít chịu ảnh hưởng bởi yếu tố mùa vụ. Từ kết quả này, có thể rút ra khuyến nghị quản trị: vào mùa thấp điểm (đặc biệt là mùa đông), Resort Hotel nên triển khai các gói khuyến mãi, dịch vụ kết hợp (spa, hội nghị, team-building) để bù đắp công suất giảm. Ngược lại, City Hotel nên khai thác nhóm khách du lịch nội địa cuối tuần để duy trì công suất phòng. Như vậy, việc hiểu rõ tính mùa vụ giúp khách sạn xây dựng chiến lược giá, quảng cáo và phân bổ nhân sự phù hợp hơn trong năm.

5.5.2 Mối liên hệ giữa mùa trong năm và loại khách sạn mà khách hàng lựa chọn có ý nghĩa thống kê không?

Về mặt kỹ thuật: Để kiểm chứng sự khác biệt trên có mang ý nghĩa thống kê hay không, ta thực hiện kiểm định Chi-bình phương (Chi-squared test). Bảng chéo tần suất giữa hai biến season (mùa) và hotel (loại khách sạn) được tạo bằng hàm table(), sau đó áp dụng chisq.test() để xác định xem hai biến có độc lập với nhau hay không. Giả thuyết kiểm định được đặt ra như sau: Giả thuyết H₀: Việc khách hàng chọn loại khách sạn nào không phụ thuộc vào mùa. Hai biến này độc lập với nhau.

Công cụ: Kiểm định Chi-bình phương.

season_data_for_test <- analyzed %>%
  mutate(season = case_when(
    arrival_date_month %in% c("June", "July", "August") ~ "Mùa hè (Cao điểm)",
    arrival_date_month %in% c("December", "January", "February") ~ "Mùa đông (Thấp điểm)",
    TRUE ~ "Mùa chuyển tiếp"
  ))
chi_table_season <- table(season_data_for_test$season, season_data_for_test$hotel)
chisq.test(chi_table_season)
## 
##  Pearson's Chi-squared test
## 
## data:  chi_table_season
## X-squared = 134.94, df = 2, p-value < 2.2e-16

Về mặt thống kê – kinh tế: Kết quả trả về giá trị p rất nhỏ (p-value < 2.2e-16), cho phép bác bỏ giả thuyết H₀. Như vậy, có bằng chứng thống kê mạnh mẽ cho thấy mùa trong năm thực sự ảnh hưởng đến việc khách chọn loại hình khách sạn. Điều này xác nhận nhận định trước đó rằng nhu cầu đặt phòng tại Resort Hotel và City Hotel có tính mùa vụ rõ rệt. Từ góc nhìn kinh tế, điều này có ý nghĩa lớn đối với chiến lược vận hành: các nhà quản lý cần xây dựng kế hoạch kinh doanh, nhân sự và marketing theo mùa. Ví dụ, tăng ngân sách quảng cáo trực tuyến cho Resort Hotel vào mùa hè, trong khi City Hotel có thể tập trung vào các chiến dịch dài hạn hướng đến khách công tác quanh năm.

5.6 Hành vi chọn kênh theo khu vực khách hàng

5.6.1 Xem xét hành vi chọn kênh đặt phòng của khách hàng từ các khu vực khác nhau (ví dụ: Châu Âu vs. các nơi khác)

european_countries <- c("PRT", "GBR", "FRA", "ESP", "DEU", "ITA", "BEL", "NLD", "CHE", "AUT", "IRL")
kenhdatphong <- analyzed %>%
  filter(!is.na(country)) %>%
  mutate(region = ifelse(country %in% european_countries, "Châu Âu", "Ngoài Châu Âu")) %>%
  group_by(region) %>%
  summarise(ty_le_online_ta = mean(market_segment == "Online TA"))
kable(kenhdatphong)
region ty_le_online_ta
Châu Âu 0.5705685
Ngoài Châu Âu 0.7279489

Về mặt kỹ thuật: Để so sánh hành vi chọn kênh, dữ liệu được chia thành hai nhóm khu vực dựa trên quốc tịch khách hàng (biến country). Các quốc gia thuộc Liên minh Châu Âu như Bồ Đào Nha, Anh, Pháp, Đức, Tây Ban Nha, Ý… được nhóm vào “Châu Âu”, các quốc gia còn lại được xếp vào “Ngoài Châu Âu”. Sau đó, tỷ lệ khách đặt qua các nền tảng trực tuyến (Online Travel Agency – OTA) được tính bằng hàm summarise() với biểu thức mean(market_segment == “Online TA”). Phương pháp này cho phép đo lường mức độ phụ thuộc vào kênh trực tuyến của từng nhóm khu vực.

Về mặt thống kê – kinh tế: Kết quả cho thấy khách đến từ ngoài Châu Âu có tỷ lệ đặt phòng qua kênh OTA cao hơn đáng kể so với khách Châu Âu. Diễn giải về mặt hành vi, khách ở xa thường ít quen thuộc với địa điểm, nên họ có xu hướng sử dụng các nền tảng trung gian có uy tín (Booking, Agoda, Expedia) để đảm bảo an toàn và thuận tiện. Ngược lại, khách Châu Âu, đặc biệt là khách nội địa hoặc lân cận, có thể đặt trực tiếp với khách sạn hoặc qua đại lý truyền thống. Từ đó, chiến lược marketing cần được điều chỉnh: với thị trường ngoài Châu Âu, khách sạn nên tăng cường quảng bá trên OTA, đầu tư vào SEO và các chương trình ưu đãi trực tuyến. Với khách Châu Âu, nên ưu tiên xây dựng hệ thống đặt phòng trực tiếp thân thiện, liên kết với các công ty du lịch địa phương để giảm chi phí hoa hồng.

5.6.2 Mối liên hệ giữa khu vực địa lý của khách hàng và kênh thị trường họ sử dụng có ý nghĩa thống kê không?

Về mặt kỹ thuật: Để kiểm định xem khu vực xuất xứ và kênh đặt phòng có độc lập với nhau hay không, ta áp dụng kiểm định Chi-bình phương trên bảng chéo region × market_segment. Cách thực hiện tương tự phần 5.5.2. Giả thuyết được đặt ra: Giả thuyết H₀: Khu vực địa lý và kênh thị trường là hai biến độc lập. Việc chọn kênh không phụ thuộc vào việc khách đến từ Châu Âu hay không.

Công cụ: Kiểm định Chi-bình phương (Chi-squared Test).

european_countries <- c("PRT", "GBR", "FRA", "ESP", "DEU", "ITA", "BEL", "NLD", "CHE", "AUT", "IRL")
region_data_for_test <- analyzed %>%
  filter(!is.na(country)) %>%
  mutate(region = ifelse(country %in% european_countries, "Châu Âu", "Ngoài Châu Âu"))
chi_table_region <- table(region_data_for_test$region, region_data_for_test$market_segment)
chisq.test(chi_table_region)
## Warning in chisq.test(chi_table_region): Chi-squared approximation may be
## incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  chi_table_region
## X-squared = 1451.8, df = 7, p-value < 2.2e-16

Về mặt thống kê – kinh tế: Giá trị p-value < 2.2e-16 cho thấy ta bác bỏ giả thuyết H₀, nghĩa là khu vực khách hàng thực sự ảnh hưởng đến kênh đặt phòng mà họ lựa chọn. Điều này một lần nữa củng cố kết quả ở mục 5.6.1. Từ góc nhìn quản trị, khách sạn có thể tối ưu chiến lược tiếp cận: đẩy mạnh OTA ở các thị trường xa, đồng thời phát triển kênh đặt trực tiếp và đại lý cho thị trường gần. Việc hiểu rõ mối liên hệ này giúp khách sạn phân bổ chi phí marketing hiệu quả hơn và kiểm soát được lợi nhuận ròng sau chiết khấu hoa hồng.

5.7 Giá phòng thay đổi thế nào theo thời điểm đặt

5.7.1 Xem xét chiến lược “giá động” (đặt sớm giá khác đặt muộn) được áp dụng khác nhau như thế nào ở City Hotel và Resort Hotel

chienluocgiadong <- analyzed %>%
  filter(adr > 0) %>%
  mutate(lead_time_group = ifelse(lead_time > 90, "Đặt xa (>90 ngày)", "Đặt gần (<=90 ngày)")) %>%
  group_by(hotel, lead_time_group) %>%
  summarise(gia_trung_binh = mean(adr))
## `summarise()` has grouped output by 'hotel'. You can override using the
## `.groups` argument.
kable(chienluocgiadong)
hotel lead_time_group gia_trung_binh
City Hotel Đặt gần (<=90 ngày) 114.04416
City Hotel Đặt xa (>90 ngày) 111.84156
Resort Hotel Đặt gần (<=90 ngày) 97.00181
Resort Hotel Đặt xa (>90 ngày) 108.36708

Về mặt kỹ thuật: Để kiểm tra chiến lược “giá động” (dynamic pricing), dữ liệu được chia thành hai nhóm thời gian đặt: “đặt sớm” (hơn 90 ngày trước khi đến) và “đặt gần” (dưới hoặc bằng 90 ngày). Việc tạo biến nhóm được thực hiện bằng mutate() kết hợp ifelse(). Sau đó, dùng group_by(hotel, lead_time_group) và summarise(mean(adr)) để tính giá phòng trung bình theo từng nhóm.

Về mặt thống kê – kinh tế: Kết quả cho thấy tại Resort Hotel, giá trung bình của nhóm đặt sớm cao hơn đáng kể so với nhóm đặt gần, trong khi tại City Hotel, sự chênh lệch không lớn. Điều này hàm ý rằng Resort Hotel đang áp dụng chiến lược giá động theo hướng khuyến khích đặt sớm (early-booking premium), giúp khách sạn kiểm soát công suất trong mùa cao điểm. Ngược lại, City Hotel chủ yếu phục vụ khách công tác, nên giá phòng ít phụ thuộc vào thời điểm đặt mà chịu tác động nhiều hơn từ các sự kiện, hội nghị hay mùa du lịch ngắn ngày. Sự khác biệt này cho thấy chính sách giá của khách sạn không chỉ chịu tác động bởi thời gian đặt mà còn phụ thuộc vào đặc điểm sản phẩm và thị trường mục tiêu.

5.7.2 Liệu ảnh hưởng của thời gian đặt phòng lên giá có thực sự khác biệt giữa hai loại khách sạn không?

Để xác định liệu ảnh hưởng của thời gian đặt lên giá có khác nhau giữa hai loại khách sạn hay không, ta sử dụng phân tích phương sai hai yếu tố (Two-Way ANOVA) với mô hình: adr ~ hotel * lead_time_group. Trong đó, biến phụ thuộc là giá phòng trung bình (adr), hai biến độc lập là loại khách sạn và nhóm thời gian đặt, còn dấu nhân thể hiện kiểm tra hiệu ứng tương tác giữa hai yếu tố.

Giả thuyết đưa ra: Giả thuyết H₀: Ảnh hưởng của thời gian đặt phòng lên giá là như nhau ở cả hai loại khách sạn (không có sự tương tác).

Công cụ: Phân tích phương sai hai yếu tố (Two-Way ANOVA), để kiểm tra ảnh hưởng của cả hotel, lead_time_group và sự tương tác giữa chúng.

dynamic_price_data_for_test <- analyzed %>%
  filter(adr > 0) %>%
  mutate(lead_time_group = ifelse(lead_time > 90, "Đặt xa (>90 ngày)", "Đặt gần (<=90 ngày)"))
aov_dynamic_price <- aov(adr ~ hotel * lead_time_group, data = dynamic_price_data_for_test)
summary(aov_dynamic_price)
##                          Df    Sum Sq Mean Sq F value Pr(>F)    
## hotel                     1   3017505 3017505 1077.16 <2e-16 ***
## lead_time_group           1    195150  195150   69.66 <2e-16 ***
## hotel:lead_time_group     1    854201  854201  304.92 <2e-16 ***
## Residuals             85582 239745502    2801                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Về mặt thống kê – kinh tế: Kết quả cho thấy giá trị p-value của hiệu ứng tương tác rất nhỏ (p < 0.001), chứng minh sự khác biệt có ý nghĩa thống kê. Điều này khẳng định rằng tác động của thời gian đặt lên giá không đồng nhất giữa hai loại khách sạn. Cụ thể, Resort Hotel tăng giá đáng kể với nhóm đặt sớm, trong khi City Hotel giữ giá ổn định. Từ kết quả này, có thể thấy mỗi loại hình khách sạn cần áp dụng chiến lược giá riêng: Resort nên tiếp tục khai thác chính sách giá đặt sớm kèm ưu đãi giới hạn, còn City Hotel nên duy trì mức giá linh hoạt theo sự kiện hoặc nhu cầu đột xuất.

5.8 Mức chi tiêu của khách hàng trung thành

5.8.1 Mức giá phổ biến của khách hàng trung thành

chitieu <- analyzed %>%
  filter(adr > 0) %>%
  mutate(price_group = cut(adr,
                           breaks = quantile(adr, probs = c(0, 0.5, 1)),
                           labels = c("Nửa giá thấp", "Nửa giá cao"))) %>%
  filter(!is.na(price_group)) %>%
  group_by(price_group) %>%
  summarise(ty_le_khach_lap_lai = mean(is_repeated_guest == 1))
kable(chitieu)
price_group ty_le_khach_lap_lai
Nửa giá thấp 0.0558118
Nửa giá cao 0.0123081

Về mặt kỹ thuật: Để xác định mối quan hệ giữa mức giá và khả năng khách quay lại, dữ liệu được chia thành hai nhóm giá dựa trên trung vị của biến adr: “nửa giá thấp” và “nửa giá cao”. Sau đó, sử dụng group_by(price_group) và summarise(mean(is_repeated_guest == 1)) để tính tỷ lệ khách lặp lại trong mỗi nhóm.

Về mặt thống kê – kinh tế: Kết quả cho thấy nhóm khách trả mức giá thấp có tỷ lệ quay lại cao hơn nhóm giá cao. Điều này phản ánh rằng khách hàng trung thành của khách sạn thường là những người nhạy cảm về giá, quan tâm đến giá trị nhận được hơn là yếu tố xa xỉ. Từ đó, các chương trình giữ chân khách hàng nên tập trung vào ưu đãi về giá, giảm giá thành viên hoặc chính sách “tích điểm đổi đêm nghỉ”. Điều này không chỉ giúp tăng tỷ lệ quay lại mà còn nâng cao hình ảnh khách sạn trong nhóm khách hàng bền vững.

5.8.2 Kiểm định mối liên hệ giữa mức giá và việc quay lại khách sạn

Về mặt kỹ thuật: Để kiểm tra xem mức giá và việc khách quay lại có mối liên hệ thống kê hay không, ta thực hiện kiểm định Chi-bình phương giữa hai biến price_group và is_repeated_guest. Giả thuyết được đặt ra như sau: Giả thuyết H₀: Việc là khách lặp lại không phụ thuộc vào nhóm giá mà khách chi trả. Hai biến này độc lập.

Công cụ: Kiểm định Chi-bình phương.

loyalty_price_data_for_test <- analyzed %>%
  filter(adr > 0) %>%
  mutate(price_group = cut(adr,
                           breaks = quantile(adr, probs = c(0, 0.5, 1), na.rm = TRUE),
                           labels = c("Nửa giá thấp", "Nửa giá cao"))) %>%
  filter(!is.na(price_group))
chi_table_loyalty_price <- table(loyalty_price_data_for_test$price_group, loyalty_price_data_for_test$is_repeated_guest)
chisq.test(chi_table_loyalty_price)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  chi_table_loyalty_price
## X-squared = 1227.1, df = 1, p-value < 2.2e-16

Về mặt thống kê – kinh tế: Giá trị p-value < 2.2e-16 cho phép bác bỏ giả thuyết H₀. Điều này khẳng định rằng mức giá thực sự ảnh hưởng đến khả năng khách hàng quay lại. Từ góc nhìn kinh tế, điều này cho thấy khách hàng trung thành của khách sạn chủ yếu hình thành trong nhóm khách hàng có thu nhập trung bình, tìm kiếm “giá trị hợp lý”. Vì vậy, để mở rộng tệp khách trung thành, khách sạn nên duy trì chính sách giá cạnh tranh, song song với cải thiện trải nghiệm dịch vụ nhằm tăng giá trị cảm nhận.

5.9 Rủi ro hủy phòng theo quý

5.9.1 Xem xét rủi ro hủy phòng có thay đổi theo các quý trong năm không

ruirohuyphongtheoquy <- analyzed %>%
  mutate(quarter = case_when(
    arrival_date_month %in% c("January", "February", "March") ~ "Quý 1",
    arrival_date_month %in% c("April", "May", "June") ~ "Quý 2",
    arrival_date_month %in% c("July", "August", "September") ~ "Quý 3",
    TRUE ~ "Quý 4"
  )) %>%
  group_by(quarter) %>%
  summarise(ty_le_huy = mean(is_canceled))
kable(ruirohuyphongtheoquy)
quarter ty_le_huy
Quý 1 0.2369642
Quý 2 0.3030790
Quý 3 0.3056252
Quý 4 0.2433382

Về mặt kỹ thuật: Dữ liệu được chia thành bốn quý dựa trên tháng đến của khách hàng. Quý I bao gồm các tháng 1–3, Quý II gồm tháng 4–6, Quý III gồm tháng 7–9 và Quý IV gồm tháng 10–12. Sau đó, sử dụng group_by(quarter) và summarise(mean(is_canceled)) để tính tỷ lệ hủy phòng trung bình trong từng quý.

Về mặt thống kê – kinh tế: Kết quả cho thấy tỷ lệ hủy phòng tăng cao rõ rệt trong Quý III – thời điểm trùng với mùa hè và mùa du lịch cao điểm. Nguyên nhân có thể đến từ việc khách hàng đặt nhiều khách sạn cùng lúc để giữ chỗ, sau đó hủy bớt khi chốt kế hoạch. Điều này cũng phù hợp với xu hướng đã quan sát ở phần 5.1 và 5.7: khách đặt sớm, giá cao thường có xu hướng hủy nhiều hơn. Từ đó, khách sạn có thể điều chỉnh chính sách quản lý rủi ro: trong Quý III, nên yêu cầu đặt cọc cao hơn hoặc áp dụng chính sách hủy chặt chẽ hơn nhằm hạn chế thất thu và tối ưu tỷ lệ lấp đầy phòng.

5.9.2 Mối liên hệ giữa các quý trong năm và việc hủy phòng có ý nghĩa thống kê không?

Để xác định xem sự khác biệt về tỷ lệ hủy giữa các quý có mang ý nghĩa thống kê hay không, kiểm định Chi-bình phương được áp dụng cho bảng chéo giữa hai biến quarter và is_canceled. Giả thuyết được đặt ra: Giả thuyết H₀: Việc hủy phòng không phụ thuộc vào quý. Tỷ lệ hủy phòng là như nhau ở tất cả các quý.

Công cụ: Kiểm định Chi-bình phương.

quarter_data_for_test <- analyzed %>%
  mutate(quarter = case_when(
    arrival_date_month %in% c("January", "February", "March") ~ "Quý 1",
    arrival_date_month %in% c("April", "May", "June") ~ "Quý 2",
    arrival_date_month %in% c("July", "August", "September") ~ "Quý 3",
    TRUE ~ "Quý 4"
  ))
chi_table_quarter <- table(quarter_data_for_test$quarter, quarter_data_for_test$is_canceled)
chisq.test(chi_table_quarter)
## 
##  Pearson's Chi-squared test
## 
## data:  chi_table_quarter
## X-squared = 427.09, df = 3, p-value < 2.2e-16

Về mặt thống kê – kinh tế: Giá trị p-value rất nhỏ (p < 2.2e-16) cho phép bác bỏ giả thuyết H₀. Như vậy, rủi ro hủy phòng có tính thời vụ rõ rệt, thay đổi theo từng quý. Đặc biệt, Quý III là giai đoạn nhạy cảm nhất. Kết quả này cung cấp cơ sở khoa học cho việc lập kế hoạch doanh thu và chiến lược quản lý rủi ro của khách sạn. Nhà quản lý có thể áp dụng chính sách “overbooking” có kiểm soát trong Quý III hoặc đưa ra các gói khuyến mãi không hoàn hủy để bảo đảm doanh thu trong mùa cao điểm.

6 Phân tích các biến

6.1 Hiểu hành vi và rủi ro của các nhóm khách hàng dựa trên thời gian họ đặt phòng trước

6.1.1 Giá trung bình và tỷ lệ hủy ở từng nhóm thời gian đặt

lead_time_data <- analyzed %>%
  mutate(lead_time_group = case_when(
    lead_time <= 7 ~ "Trong 1 tuần",
    lead_time <= 90 ~ "Trong 3 tháng",
    TRUE ~ "Trên 3 tháng"
  ))
lead_time_summary <- lead_time_data %>%
  group_by(lead_time_group) %>%
  summarise(
    so_luong = n(),
    adr_trung_binh = mean(adr),
    ty_le_huy = mean(is_canceled)
  )
kable(lead_time_summary, digits = 2)
lead_time_group so_luong adr_trung_binh ty_le_huy
Trong 1 tuần 17271 96.62 0.08
Trong 3 tháng 38562 112.47 0.29
Trên 3 tháng 29753 110.43 0.37

Ý nghĩa kỹ thuật

Phần này sử dụng biến lead_time để đo khoảng cách giữa ngày đặt phòng và ngày đến. Dữ liệu được chia nhóm bằng hàm mutate() và case_when(), tạo thành ba khoảng: “Trong 1 tuần”, “Trong 3 tháng” và “Trên 3 tháng”. Sau đó, hàm summarise() tính các chỉ tiêu như số lượng đặt, giá trung bình (ADR) và tỷ lệ hủy. Tiếp đó, hàm group_by() giúp gom dữ liệu theo nhóm, và ggplot() trực quan hóa kết quả qua biểu đồ cột thể hiện xu hướng tỷ lệ hủy.

Ý nghĩa kinh tế

Kết quả cho thấy khách đặt càng sớm thì tỷ lệ hủy càng cao, đặc biệt nhóm “Trên 3 tháng” có tỷ lệ hủy tới 37%, cao gấp 4,6 lần nhóm đặt trong 1 tuần. Điều này phản ánh rủi ro doanh thu từ các đặt sớm, do kế hoạch khách hàng dễ thay đổi. Tuy nhiên, nhóm này lại có ADR cao hơn, nghĩa là họ thường chọn phòng đắt hơn hoặc đặt trong mùa cao điểm. Về mặt chiến lược, khách sạn cần áp dụng chính sách đặt cọc hoặc điều khoản hủy nghiêm ngặt hơn cho nhóm đặt sớm, nhằm bảo toàn doanh thu. Mặt khác, khách cận ngày thường ít hủy và linh hoạt, nên có thể ưu tiên khuyến mãi phút chót (last-minute) để tối đa công suất phòng.

6.1.2 Xem cơ cấu loại khách sạn (hotel) trong mỗi nhóm

Phân tích mối quan hệ giữa thời gian đặt phòng và loại khách sạn mà khách lựa chọn (City Hotel hoặc Resort Hotel), nhằm xem liệu khách đặt sớm hay muộn có xu hướng chọn loại khách sạn khác nhau hay không.

lead_time_crosstab <- lead_time_data %>%
  count(lead_time_group, hotel) %>%
  group_by(lead_time_group) %>%
  mutate(ty_le = n / sum(n))
kable(lead_time_crosstab, digits = 2)
lead_time_group hotel n ty_le
Trong 1 tuần City Hotel 9190 0.53
Trong 1 tuần Resort Hotel 8081 0.47
Trong 3 tháng City Hotel 25424 0.66
Trong 3 tháng Resort Hotel 13138 0.34
Trên 3 tháng City Hotel 17707 0.60
Trên 3 tháng Resort Hotel 12046 0.40

Ý nghĩa kỹ thuật

Trong phần này, dữ liệu được chia nhóm theo biến “thời gian đặt phòng trước” (lead_time), phản ánh số ngày từ khi khách đặt phòng đến khi nhận phòng thực tế. Biến này được xử lý bằng hàm case_when() trong ngôn ngữ R để tạo thành ba nhóm:

Nhóm đặt trong vòng 1 tuần,

Nhóm đặt trong 3 tháng,

Nhóm đặt trước hơn 3 tháng.

Sau đó, các chỉ tiêu trung bình như giá phòng trung bình (ADR – Average Daily Rate) và tỷ lệ hủy phòng được tính bằng summarise() kết hợp với group_by(). Biểu đồ cột được vẽ bằng ggplot() thể hiện tỷ lệ hủy theo từng nhóm thời gian đặt phòng. Quy trình này giúp chuyển hóa dữ liệu rời rạc thành dạng có cấu trúc, dễ dàng quan sát xu hướng và đưa ra nhận định trực quan về hành vi khách hàng.

Ý nghĩa kinh tế

Trong bảng phân tích có hai loại hình khách sạn gồm City Hotel- Nằm ở khu vực trung tâm thành phố, gần khu thương mại, văn phòng, bến xe, sân bay. Resort Hotel- Nằm ở khu du lịch nghỉ dưỡng (ven biển, vùng núi, khu sinh thái…). City Hotel chiếm tỷ trọng lớn hơn trong mọi nhóm thời gian đặt phòng, dao động từ 53% đến 66%.

Điều này cho thấy khách hàng có xu hướng chọn City Hotel nhiều hơn, đặc biệt khi đặt sớm (chiếm 66% trong nhóm “Trong 3 tháng”). Lý giải cho điều này là do đối tượng khách là doanh nhân hoặc người đi công tác, họ có lịch trình cố định nên dễ lập kế hoạch sớm.

Resort Hotel có xu hướng được đặt nhiều hơn khi gần ngày đến, thể hiện qua việc tỷ trọng tăng từ 34% lên 47% ở nhóm “Trong 1 tuần” vì Resort thường phục vụ nghỉ dưỡng ngắn hạn, khách thường quyết định sát ngày hơn (đặt cuối tuần, nghỉ ngắn, v.v.).

6.1.3 Biểu đồ cột so sánh tỷ lệ hủy phòng giữa các nhóm

ggplot(lead_time_summary, aes(x = reorder(lead_time_group, ty_le_huy), y = ty_le_huy, fill = lead_time_group)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  geom_text(aes(label = scales::percent(ty_le_huy, accuracy = 1)), vjust = -0.5) +
  labs(title = "Tỷ lệ hủy phòng tăng theo thời gian đặt trước",
       x = "Nhóm Thời gian Đặt phòng", y = "Tỷ lệ Hủy phòng")

Ý nghĩa kỹ thuật

Trong đó:

lead_time_summary là bảng dữ liệu tóm tắt, chứa thông tin về từng nhóm thời gian đặt phòng và tỷ lệ hủy tương ứng.

aes() định nghĩa cấu trúc trực quan: trục hoành là nhóm thời gian đặt phòng, trục tung là tỷ lệ hủy phòng.

geom_bar(stat = “identity”) vẽ biểu đồ cột với chiều cao cột thể hiện tỷ lệ hủy thực tế của từng nhóm.

geom_text() hiển thị phần trăm ngay trên đầu cột, giúp người đọc dễ dàng so sánh trực tiếp.

labs() được dùng để đặt tiêu đề và nhãn trục, làm cho biểu đồ rõ ràng, dễ hiểu hơn.

Cuối cùng, reorder() sắp xếp các nhóm theo giá trị tỷ lệ hủy tăng dần, giúp người xem dễ nhận diện xu hướng tổng thể.

Nhờ các bước xử lý này, biểu đồ thể hiện một cách trực quan và khoa học mối quan hệ giữa khoảng cách đặt phòng và khả năng hủy, giúp người phân tích nhanh chóng nhận biết nhóm khách hàng có rủi ro cao.

Ý nghĩa kinh tế

Biểu đồ cho thấy một xu hướng tỷ lệ hủy phòng tăng dần theo thời gian đặt trước. Cụ thể, nhóm khách đặt phòng trước hơn 3 tháng có tỷ lệ hủy cao nhất, trong khi nhóm đặt trong vòng 1 tuần có tỷ lệ thấp nhất. Điều này phản ánh hành vi thực tế của khách hàng: những người đặt sớm thường chưa chắc chắn kế hoạch, dễ thay đổi lịch trình hoặc chọn lựa khách sạn khác khi tìm được ưu đãi hấp dẫn hơn. Ngược lại, nhóm khách đặt cận ngày có xu hướng ra quyết định chắc chắn và mang tính bắt buộc cao hơn (chẳng hạn do nhu cầu công tác hoặc du lịch đã được chốt).

Từ góc độ quản lý, kết quả biểu đồ mang lại ý nghĩa rõ ràng:

Các đặt phòng sớm tuy có giá trị cao nhưng rủi ro doanh thu lớn do tỷ lệ hủy cao.

Các đặt phòng muộn ổn định hơn, góp phần duy trì doanh thu thực tế và công suất phòng.

6.2 Phân tích đặc điểm của các phân khúc khách hàng theo mức giá họ chi trả

6.2.1 Tính số đêm ở trung bình và thời gian đặt phòng trước trung bình cho mỗi nhóm giá

Ý nghĩa kỹ thuật

Trong phần này, dữ liệu được xử lý để phân loại khách hàng theo mức giá phòng trung bình mỗi đêm (ADR – Average Daily Rate). Đầu tiên, đoạn mã lọc bỏ các giá trị bất thường (adr > 0 & adr < 500) để đảm bảo tính chính xác của kết quả, sau đó sử dụng hàm mutate() kết hợp với cut() để chia khách hàng thành ba nhóm:

Giá rẻ (dưới 80€),

Giá trung bình (từ 80€ đến dưới 150€),

Giá cao (từ 150€ đến dưới 500€).

Tiếp theo, dữ liệu được nhóm theo price_group bằng group_by(), sau đó sử dụng summarise() để tính hai chỉ tiêu quan trọng:

Số đêm ở trung bình: trung bình cộng của tổng số đêm trong tuần và cuối tuần (stays_in_weekend_nights + stays_in_week_nights),

Thời gian đặt phòng trước trung bình (lead_time_tb): số ngày trung bình khách đặt trước khi đến.

Kết quả được trình bày bằng bảng tóm tắt (kable()), thể hiện rõ hành vi lưu trú và thời điểm đặt phòng của từng nhóm khách hàng.

price_data <- analyzed %>%
  filter(adr > 0 & adr < 500) %>%
  mutate(price_group = cut(adr,
                           breaks = c(0, 80, 150, 500),
                           labels = c("Giá rẻ", "Giá trung bình", "Giá cao")))
price_summary <- price_data %>%
  group_by(price_group) %>%
  summarise(
    so_dem_tb = mean(stays_in_weekend_nights + stays_in_week_nights),
    lead_time_tb = mean(lead_time)
  )
kable(price_summary, digits = 2)
price_group so_dem_tb lead_time_tb
Giá rẻ 3.68 73.44
Giá trung bình 3.58 87.22
Giá cao 3.91 75.21

Ý nghĩa kinh tế

Từ kết quả trên có thể nhận thấy rằng phần lớn khách hàng lưu trú ngắn ngày, trung bình chỉ từ 3 đến 4 đêm. Trong đó, nhóm “Giá cao” có thời gian ở dài nhất (3,91 đêm), cho thấy họ thường là khách nghỉ dưỡng hoặc khách có ngân sách cao, mong muốn trải nghiệm thoải mái và lâu hơn. Đáng chú ý, nhóm “Giá trung bình” có thời gian đặt trước cao nhất (87 ngày) – đây có thể là nhóm khách du lịch phổ thông hoặc gia đình đặt qua các kênh trực tuyến, có kế hoạch sớm để tận dụng giá ưu đãi. Ngược lại, nhóm giá rẻ thường đặt phòng muộn hơn, phù hợp với khách công tác ngắn hạn hoặc khách du lịch tiết kiệm.

Kết quả này mang ý nghĩa quan trọng trong quản trị doanh thu và chiến lược giá:

Với nhóm giá cao, khách sạn có thể phát triển gói nghỉ dưỡng dài ngày, kết hợp các dịch vụ cao cấp như spa, ẩm thực, và trải nghiệm trọn gói.

Với nhóm giá trung bình, cần tăng cường khuyến mãi đặt sớm và hợp tác chặt chẽ với các nền tảng du lịch trực tuyến.

Với nhóm giá rẻ, nên duy trì chính sách linh hoạt và giảm giá ngắn hạn, giúp tối ưu công suất phòng vào các thời điểm thấp điểm.

Như vậy, việc phân tích theo mức giá không chỉ giúp nhận diện đặc điểm hành vi lưu trú của từng nhóm khách hàng mà còn hỗ trợ khách sạn xây dựng chính sách giá và tiếp thị phù hợp với từng phân khúc thị trường.

6.2.2 Tỷ lệ khách quay lại theo nhóm giá

Ý nghĩa kỹ thuật

Trong phần này, dữ liệu được nhóm theo price_group và tính tỷ lệ khách quay lại (is_repeated_guest) để đánh giá mức độ trung thành của từng nhóm khách hàng. Các chỉ tiêu được tính bằng summarise() gồm:

Số lượng đặt phòng (so_luong): tổng số bản ghi trong mỗi nhóm,

Tỷ lệ khách quay lại (ty_le_khach_lap_lai): trung bình giá trị của biến is_repeated_guest, trong đó 1 biểu thị khách đã từng ở, 0 là khách mới.

price_crosstab <- price_data %>%
  group_by(price_group) %>%
  summarise(
    so_luong = n(),
    ty_le_khach_lap_lai = mean(is_repeated_guest)
  )
kable(price_crosstab, digits = 2)
price_group so_luong ty_le_khach_lap_lai
Giá rẻ 27199 0.08
Giá trung bình 43277 0.02
Giá cao 15107 0.01

Ý nghĩa kinh tế

Bảng kết quả cho thấy nhóm giá rẻ có tỷ lệ khách quay lại cao nhất (8%), gấp 4 lần nhóm giá trung bình và 8 lần nhóm giá cao. Điều này phản ánh rằng giá cả hợp lý là yếu tố then chốt trong việc duy trì lòng trung thành của khách hàng, đặc biệt đối với khách hàng nội địa hoặc khách công tác thường xuyên. Ngược lại, nhóm giá trung bình và cao chủ yếu là khách du lịch hoặc nghỉ dưỡng ngắn hạn, họ thường thay đổi điểm đến trong mỗi kỳ nghỉ, do đó khả năng quay lại thấp hơn.

Từ góc độ kinh doanh, kết quả này gợi ý rằng khách sạn nên:

Duy trì mức giá cạnh tranh cho nhóm giá rẻ, kết hợp chính sách tích điểm hoặc giảm giá cho khách quay lại để tăng tỷ lệ trung thành.

Đối với nhóm giá trung bình và cao, nên tập trung vào nâng cao chất lượng trải nghiệm dịch vụ, tạo ấn tượng mạnh mẽ để khách sẵn sàng quay lại hoặc giới thiệu bạn bè.

Nhìn chung, dữ liệu cho thấy mức giá càng cao thì tỷ lệ khách quay lại càng thấp, phản ánh hai phân khúc khách hàng khác biệt rõ ràng:

Khách nghỉ dưỡng ngắn hạn (chi tiêu cao, ít trung thành) và

Khách công tác hoặc khách quen (chi tiêu thấp hơn nhưng ổn định, gắn bó lâu dài).

Từ đó, khách sạn có thể xây dựng chiến lược giữ chân khách hàng theo phân khúc, vừa tối đa hóa doanh thu, vừa duy trì tệp khách ổn định cho hoạt động lâu dài.

6.2.3 Biểu đồ hộp (boxplot) thể hiện sự phân bổ thời gian đặt phòng trước cho mỗi nhóm giá

ggplot(price_data, aes(x = price_group, y = lead_time, fill = price_group)) +
  geom_boxplot(show.legend = FALSE) +
  labs(title = "Khách trả giá cao hơn có xu hướng đặt phòng sớm hơn",
       x = "Nhóm Giá phòng", y = "Số ngày đặt trước (Lead Time)")

Ý nghĩa kỹ thuật

Trước hết, dữ liệu được chuẩn hóa và chia thành ba nhóm giá (“Giá rẻ”, “Giá trung bình” và “Giá cao”) trong bảng price_data. Hàm aes() trong ggplot() xác định cấu trúc hiển thị, trong đó trục hoành (x) biểu diễn nhóm giá và trục tung (y) biểu diễn số ngày khách đặt trước khi nhận phòng. Tiếp đó, geom_boxplot() được dùng để vẽ biểu đồ hộp, một công cụ thống kê giúp thể hiện phân bố dữ liệu, vị trí trung vị và mức độ biến động của từng nhóm. Mỗi hộp đại diện cho phạm vi giữa hai tứ phân vị (Q1–Q3), đường ngang giữa hộp là giá trị trung vị (median), còn các chấm nhỏ phía trên hoặc dưới là giá trị ngoại lệ – thể hiện các trường hợp đặt phòng sớm hoặc muộn bất thường. Việc tô màu bằng đối số fill = price_group giúp phân biệt các nhóm giá một cách trực quan, trong khi labs() được sử dụng để đặt tiêu đề và nhãn trục rõ ràng, đảm bảo biểu đồ có tính thẩm mỹ và dễ đọc.

Nhờ cách biểu diễn này, biểu đồ hộp cho phép người phân tích quan sát sự chênh lệch trong hành vi đặt phòng giữa các nhóm khách hàng không chỉ ở mức trung bình, mà còn ở mức độ phân tán dữ liệu, qua đó nhận diện rõ xu hướng đặt phòng sớm hay muộn của từng phân khúc giá.

Ý nghĩa kinh tế

Quan sát biểu đồ cho thấy, phân bố thời gian đặt phòng của ba nhóm giá có sự khác biệt đáng kể:

Nhóm giá trung bình có trung vị (đường giữa hộp) cao nhất, cho thấy khách hàng ở nhóm này có xu hướng đặt phòng sớm nhất, thường trước từ 80–90 ngày. Đây thường là các gia đình hoặc nhóm khách du lịch phổ thông, đặt qua các nền tảng trực tuyến, có kế hoạch du lịch được chuẩn bị kỹ lưỡng.

Nhóm giá cao cũng có xu hướng đặt phòng tương đối sớm, nhưng độ biến động lớn hơn. Điều này cho thấy trong nhóm này tồn tại hai nhóm hành vi khác biệt: một nhóm đặt rất sớm (đặt trước nhiều tháng để đảm bảo phòng cao cấp), và một nhóm nhỏ đặt muộn nhưng có khả năng chi trả cao, ít quan tâm đến giá.

Nhóm giá rẻ có giá trị trung vị thấp nhất và hộp phân bố hẹp hơn, thể hiện hành vi đặt phòng cận ngày, phù hợp với khách đi công tác ngắn hạn hoặc khách du lịch tiết kiệm.

Biểu đồ này mang ý nghĩa kinh tế rõ rệt:

Khách sạn có thể dự đoán nhu cầu theo thời điểm đặt: nhóm giá trung bình đặt sớm → nên có ưu đãi early-bird (đặt sớm); nhóm giá rẻ đặt muộn → nên tận dụng chiến dịch giảm giá phút chót (last-minute promotion) để tối đa công suất.

Ngoài ra, việc nhận diện độ biến động đặt phòng cao của nhóm giá cao giúp khách sạn điều chỉnh chính sách đặt cọc phù hợp, nhằm giảm rủi ro hủy phòng và ổn định doanh thu.

Tóm lại, biểu đồ hộp không chỉ thể hiện rõ ràng mức độ khác biệt trong hành vi đặt phòng giữa các nhóm giá, mà còn cung cấp bằng chứng trực quan để hoạch định chiến lược giá, chính sách đặt cọc và chương trình khuyến mãi linh hoạt, hướng đến mục tiêu tối đa hóa doanh thu và giảm thiểu rủi ro kinh doanh.

6.3 So sánh hành vi giữa khách nội địa (Bồ Đào Nha) và khách quốc tế

6.3.1 Tính thời gian đặt phòng trước trung bình và tỷ lệ hủy phòng

Ý nghĩa kỹ thuật

Mục tiêu của phần này là so sánh hành vi đặt phòng và tỷ lệ hủy giữa hai nhóm khách: nội địa (Bồ Đào Nha) và quốc tế. Đầu tiên, dữ liệu được xử lý bằng hàm mutate() để tạo biến mới customer_location, trong đó khách có mã quốc gia “PRT” được gán nhãn “Nội địa”, còn lại được gán là “Quốc tế”. Sau đó, dữ liệu được làm sạch bằng cách loại bỏ các giá trị thiếu (filter(!is.na(customer_location))).

Tiếp theo, dữ liệu được nhóm theo customer_location bằng group_by(), rồi tính toán hai chỉ tiêu quan trọng bằng summarise():

lead_time_tb – thời gian đặt phòng trung bình (số ngày từ khi đặt đến khi nhận phòng).

ty_le_huy – tỷ lệ hủy trung bình (phần trăm đặt phòng bị hủy).

Kết quả được hiển thị bằng bảng tóm tắt:

location_data <- analyzed %>%
  mutate(customer_location = ifelse(country == "PRT", "Nội địa", "Quốc tế")) %>%
  filter(!is.na(customer_location))
location_summary <- location_data %>%
  group_by(customer_location) %>%
  summarise(
    lead_time_tb = mean(lead_time),
    ty_le_huy = mean(is_canceled)
  )
kable(location_summary, digits = 2)
customer_location lead_time_tb ty_le_huy
Nội địa 66.71 0.37
Quốc tế 86.84 0.24

Ý nghĩa kinh tế

Từ kết quả trên, có thể thấy khách quốc tế đặt phòng sớm hơn đáng kể so với khách nội địa (trung bình 86,8 ngày so với 66,7 ngày). Điều này phản ánh đặc điểm thực tế: khách quốc tế thường phải lên kế hoạch từ sớm do liên quan đến đặt vé máy bay, xin visa và lịch trình di chuyển dài ngày. Ngược lại, khách nội địa có xu hướng đặt phòng muộn hơn, thường phục vụ nhu cầu ngắn hạn như công tác, nghỉ cuối tuần hoặc du lịch gần, nên họ ra quyết định sát ngày hơn.

Đáng chú ý, tỷ lệ hủy phòng của khách quốc tế thấp hơn (24%) trong khi khách nội địa có tỷ lệ hủy cao tới 37%. Nguyên nhân là vì khách nội địa linh hoạt trong lịch trình, thường đặt nhiều lựa chọn để so sánh và dễ dàng hủy khi có thay đổi.

Kết quả này gợi ý cho khách sạn những hướng hành động cụ thể:

Với khách quốc tế, nên duy trì chính sách đặt sớm kèm ưu đãi hoặc “early-bird”, vì họ có khả năng lên kế hoạch sớm và ít hủy.

Với khách nội địa, nên giữ chính sách linh hoạt, cho phép thay đổi hoặc hoàn tiền một phần, đồng thời khuyến khích đặt trực tiếp qua website hoặc ứng dụng của khách sạn để giảm chi phí hoa hồng.

Như vậy, việc hiểu rõ sự khác biệt trong hành vi đặt phòng giữa khách nội địa và quốc tế giúp khách sạn thiết kế chính sách giá, điều khoản hủy và chiến lược marketing phù hợp, tối ưu hóa cả doanh thu và trải nghiệm khách hàng.mary, digits = 2)

6.3.2 Xem cơ cấu kênh thị trường (market_segment) của hai nhóm khách

Ý nghĩa kỹ thuật

Phần này nhằm phân tích kênh đặt phòng phổ biến của khách nội địa và quốc tế. Dữ liệu được nhóm theo hai biến: customer_location (phân loại nội địa/quốc tế) và market_segment (kênh bán hàng). Hàm count() được sử dụng để đếm số lượng đặt phòng của từng tổ hợp, sau đó mutate() tính tỷ lệ phần trăm (ty_le = n / sum(n)) trong mỗi nhóm.

Cuối cùng, để tập trung vào các kênh chính, dữ liệu được lọc (filter()) chỉ giữ lại ba kênh phổ biến nhất:

Online TA (Đại lý du lịch trực tuyến),

Direct (Đặt trực tiếp),

Offline TA/TO (Đại lý hoặc nhà điều hành tour truyền thống).

location_crosstab <- location_data %>%
  count(customer_location, market_segment) %>%
  group_by(customer_location) %>%
  mutate(ty_le = n / sum(n)) %>%
  filter(market_segment %in% c("Online TA", "Direct", "Offline TA/TO"))
kable(location_crosstab, digits = 2)
customer_location market_segment n ty_le
Nội địa Direct 5319 0.20
Nội địa Offline TA/TO 4440 0.17
Nội địa Online TA 10848 0.42
Quốc tế Direct 6253 0.10
Quốc tế Offline TA/TO 9187 0.15
Quốc tế Online TA 40397 0.68

Ý nghĩa kinh tế

Bảng số liệu cho thấy khách quốc tế phụ thuộc mạnh vào các kênh trực tuyến (Online TA), chiếm tới 68% tổng lượng đặt phòng, trong khi khách nội địa chỉ ở mức 42%. Điều này phản ánh thực tế rằng khách quốc tế thường tin tưởng các nền tảng đặt phòng toàn cầu như Booking.com, Agoda hay Expedia – nơi họ có thể so sánh giá, xem đánh giá và thanh toán dễ dàng bằng ngoại tệ.

Ngược lại, khách nội địa lại ưu tiên kênh đặt trực tiếp (20%) hoặc đại lý truyền thống (17%), do yếu tố quen thuộc, dễ trao đổi và ít rào cản ngôn ngữ. Điều này cũng cho thấy thị trường trong nước vẫn giữ được vai trò của kênh Offline TA/TO, nhất là trong nhóm khách lớn tuổi hoặc đặt tour nội địa.

Từ góc độ kinh doanh, sự khác biệt này giúp khách sạn xác định chiến lược kênh phân phối hợp lý:

Với thị trường quốc tế, nên tăng cường hợp tác với các OTA lớn, kết hợp chiến dịch quảng bá song ngữ và hình ảnh chuyên nghiệp để nâng cao tỷ lệ chuyển đổi.

Với thị trường nội địa, cần đầu tư vào hệ thống đặt phòng trực tiếp (Direct Booking) qua website hoặc ứng dụng di động, kèm chính sách giảm giá và điểm thưởng để khuyến khích khách hàng quay lại.

Như vậy, phân tích cơ cấu kênh thị trường không chỉ cho thấy hành vi tiếp cận khác biệt giữa khách nội địa và quốc tế, mà còn cung cấp cơ sở quan trọng để khách sạn đa dạng hóa kênh bán hàng, giảm phụ thuộc vào OTA và nâng cao biên lợi nhuận.

6.3.3 Biểu đồ cột: giá trung bình của khách nội địa vs quốc tế

location_data %>%
  filter(adr > 0) %>%
  group_by(customer_location, hotel) %>%
  summarise(adr_tb = mean(adr)) %>%
  ggplot(aes(x = hotel, y = adr_tb, fill = customer_location)) +
  geom_bar(stat = "identity", position = "dodge") +
   geom_text(aes(label = round(adr_tb, 1)), 
            position = position_dodge(width = 0.9), vjust = -0.5) +
  labs(title = "Khách quốc tế thường trả giá cao hơn ở cả hai loại khách sạn",
       x = "Loại Khách sạn", y = "Giá phòng trung bình (ADR)")
## `summarise()` has grouped output by 'customer_location'. You can override using
## the `.groups` argument.

Ý nghĩa kĩ thuật

Trong mục này, biểu đồ cột được sử dụng để minh họa sự khác biệt về giá phòng trung bình (ADR – Average Daily Rate) giữa hai nhóm khách hàng — nội địa và quốc tế, tại hai loại khách sạn là City Hotel và Resort Hotel. Dữ liệu được xử lý trong R bằng một chuỗi lệnh kết hợp giữa các hàm filter(), group_by(), summarise() và ggplot() nhằm đảm bảo kết quả vừa chính xác, vừa trực quan.

Cụ thể, dữ liệu được lọc để loại bỏ các giá trị bất thường, sau đó được nhóm theo nguồn khách (customer_location) và loại khách sạn (hotel) để tính giá phòng trung bình (ADR) cho từng nhóm. Kết quả được truyền vào hàm ggplot() với trục hoành biểu diễn loại khách sạn và trục tung thể hiện giá trung bình, trong khi biến fill = customer_location dùng để phân biệt hai nhóm khách bằng màu sắc. Các cột được đặt cạnh nhau (position = “dodge”) để người xem có thể so sánh trực tiếp, còn hàm geom_text() hiển thị giá trị trung bình cụ thể ngay trên đầu cột, giúp biểu đồ rõ ràng và dễ đọc hơn.

Ý nghĩa kinh tế

Kết quả thu được cho thấy khách quốc tế luôn có mức chi tiêu cao hơn khách nội địa ở cả hai loại hình khách sạn. Ở City Hotel, giá phòng trung bình của khách quốc tế là 101,4€, chỉ nhỉnh hơn đôi chút so với khách nội địa (100,7€). Tuy nhiên, tại Resort Hotel, mức chênh lệch trở nên rõ rệt hơn: khách quốc tế trả trung bình 116,9€, cao hơn đáng kể so với 101,4€ của khách nội địa.

Sự khác biệt này phản ánh rõ đặc điểm hành vi tiêu dùng giữa hai nhóm khách. Khách quốc tế thường có ngân sách du lịch lớn hơn và ít nhạy cảm về giá, vì chi phí cho vé máy bay, visa, hay thời gian lưu trú dài đã chiếm phần lớn tổng chi tiêu của họ. Do đó, họ ưu tiên lựa chọn chất lượng dịch vụ, vị trí và trải nghiệm tổng thể, thay vì chỉ quan tâm đến giá phòng. Ngược lại, khách nội địa có xu hướng đặt phòng dựa trên yếu tố chi phí, đặc biệt là trong City Hotel – nơi phần lớn khách đến vì mục đích công tác hoặc du lịch ngắn ngày, nên họ thường chọn mức giá hợp lý và ưu đãi ngắn hạn.

6.4 Hiểu rõ sự khác biệt trong hoạt động kinh doanh giữa mùa cao điểm và thấp điểm

6.4.1 Tính số lượng đặt phòng, adr trung bình và tỷ lệ hủy

season_data <- analyzed %>%
  mutate(season = case_when(
    arrival_date_month %in% c("June", "July", "August") ~ "Mùa hè",
    arrival_date_month %in% c("December", "January", "February") ~ "Mùa đông",
    TRUE ~ "Mùa chuyển tiếp"
  ))
season_summary <- season_data %>%
  group_by(season) %>%
  summarise(
    so_luong = n(),
    adr_tb = mean(adr),
    ty_le_huy = mean(is_canceled)
  )
kable(season_summary, digits = 2)
season so_luong adr_tb ty_le_huy
Mùa chuyển tiếp 41471 98.84 0.26
Mùa hè 28648 139.30 0.32
Mùa đông 15467 77.71 0.24

Ý nghĩa kỹ thuật

Phần này sử dụng biến arrival_date_month để xác định mùa du lịch của từng đặt phòng. Thông qua hàm case_when(), dữ liệu được chia thành ba nhóm chính: “Mùa hè” (tháng 6–8), “Mùa đông” (tháng 12–2) và “Mùa chuyển tiếp” (các tháng còn lại). Sau đó, hàm group_by(season) kết hợp với summarise() được dùng để tính toán ba chỉ tiêu tổng hợp: số lượng đặt phòng, giá trung bình (ADR) và tỷ lệ hủy trung bình. Kết quả thể hiện sự biến động rõ rệt giữa các mùa, qua đó cung cấp cơ sở cho việc dự báo nhu cầu và hoạch định giá linh hoạt.

Ý nghĩa kinh tế

Kết quả cho thấy, mùa hè là thời điểm cao điểm du lịch, khi ADR trung bình đạt mức cao nhất (139,3€), nhưng tỷ lệ hủy cũng tăng mạnh (32%). Ngược lại, mùa đông ghi nhận ADR thấp (77,7€) và tỷ lệ hủy thấp nhất (24%), phản ánh nhu cầu yếu. Mùa chuyển tiếp duy trì lượng đặt phòng lớn nhất, đóng vai trò “đệm” giữa hai mùa cực trị. Về mặt kinh tế, sự phân hóa này giúp xác định chu kỳ doanh thu và quản trị dòng tiền theo mùa. Khách sạn nên áp dụng chính sách giá linh hoạt: nâng giá và thắt chặt điều khoản hủy trong mùa cao điểm, đồng thời tung ra gói khuyến mãi dài ngày hoặc combo dịch vụ trong mùa thấp điểm để kích cầu và duy trì công suất phòng ổn định quanh năm.

6.4.2 Xem số lượng khách từ 3 quốc gia hàng đầu trong mỗi mùa

season_crosstab <- season_data %>%
  filter(country %in% c("PRT", "GBR", "FRA")) %>%
  count(season, country)
kable(season_crosstab)
season country n
Mùa chuyển tiếp FRA 4486
Mùa chuyển tiếp GBR 5541
Mùa chuyển tiếp PRT 11740
Mùa hè FRA 2617
Mùa hè GBR 3430
Mùa hè PRT 8702
Mùa đông FRA 1682
Mùa đông GBR 1389
Mùa đông PRT 5584

Ý nghĩa kỹ thuật

Dữ liệu được lọc để tập trung vào ba quốc gia có lượng đặt phòng lớn nhất là Bồ Đào Nha (PRT), Anh (GBR) và Pháp (FRA). Sau đó, nhóm season được kết hợp với country trong hàm count() nhằm thống kê số lượt đặt phòng theo mùa. Cách tiếp cận này giúp thể hiện phân bố nguồn khách theo từng giai đoạn trong năm, hỗ trợ chiến lược marketing theo thị trường.

Ý nghĩa kinh tế

Phân tích cho thấy, khách nội địa (PRT) chiếm tỷ trọng cao nhất ở tất cả các mùa, đặc biệt là mùa chuyển tiếp và mùa hè. Khách từ Anh và Pháp lại có xu hướng tập trung mạnh vào mùa hè – thời điểm kỳ nghỉ truyền thống của châu Âu. Kết quả này cho phép khách sạn lên kế hoạch chiến dịch quảng bá theo thị trường trọng điểm: đẩy mạnh tiếp cận thị trường Anh và Pháp vào quý II–III, trong khi tập trung các chương trình kích cầu nội địa trong mùa đông. Việc đồng bộ hóa thông điệp marketing theo từng mùa sẽ giúp tối ưu hóa chi phí quảng cáo và nâng cao hiệu quả khai thác nguồn khách.

6.4.3 Biểu đồ cột thể hiện số lượng đặt phòng của City Hotel và Resort Hotel theo mùa

season_data %>%
  count(season, hotel) %>%
  ggplot(aes(x = season, y = n, fill = hotel)) +
  geom_bar(stat = "identity", position = "dodge") +
   geom_text(aes(label = n), 
            position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
  labs(title = "Resort Hotel hoạt động mạnh vào mùa hè, City Hotel ổn định hơn",
       x = "Mùa", y = "Số lượng Đặt phòng")

Ý nghĩa kỹ thuật

Từ biến season đã được xác định, dữ liệu tiếp tục được nhóm theo hotel để đếm số lượng đặt phòng từng loại khách sạn trong mỗi mùa. Biểu đồ cột nhóm (geom_bar(position = “dodge”)) được sử dụng để minh họa sự khác biệt này. Cách thể hiện song song giúp quan sát nhanh mức độ hoạt động giữa hai loại hình trong từng giai đoạn.

Ý nghĩa kinh tế

Biểu đồ cho thấy Resort Hotel hoạt động mạnh nhất trong mùa hè, trong khi City Hotel duy trì lượng khách ổn định quanh năm. Điều này phản ánh đúng đặc điểm của hai loại hình: Resort phụ thuộc vào du lịch nghỉ dưỡng và thời tiết, còn City Hotel phục vụ khách công tác, hội nghị, ít chịu tác động mùa vụ. Từ góc độ quản trị, khách sạn có thể phân bổ nguồn lực nhân sự và ngân sách quảng bá theo chu kỳ: Resort cần chiến dịch cao điểm ngắn nhưng tập trung, trong khi City Hotel nên đầu tư vào chương trình khách hàng doanh nghiệp dài hạn để giữ công suất ổn định.

6.5 So sánh hiệu quả giữa các nhóm kênh bán hàng chính

6.5.1 Tính tỷ lệ hủy phòng và tỷ lệ khách lặp lại cho mỗi nhóm kênh

segment_data <- analyzed %>%
  mutate(segment_group = case_when(
    market_segment == "Online TA" ~ "Online",
    market_segment %in% c("Direct", "Corporate") ~ "Trực tiếp & DN",
    TRUE ~ "Kênh khác"
  ))
segment_summary <- segment_data %>%
  group_by(segment_group) %>%
  summarise(
    ty_le_huy = mean(is_canceled),
    ty_le_khach_lap_lai = mean(is_repeated_guest)
  )
kable(segment_summary, digits = 3)
segment_group ty_le_huy ty_le_khach_lap_lai
Kênh khác 0.182 0.018
Online 0.356 0.009
Trực tiếp & DN 0.141 0.135

Ý nghĩa kỹ thuật

Dữ liệu được phân nhóm dựa trên biến market_segment. Bằng cách sử dụng case_when(), các kênh được gom thành ba nhóm chính: “Online” (Online TA), “Trực tiếp & Doanh nghiệp” (Direct và Corporate), và “Kênh khác” (Offline TA/TO, nhóm khác). Sau khi nhóm, hàm summarise() được áp dụng để tính trung bình hai chỉ tiêu: tỷ lệ hủy (is_canceled) và tỷ lệ khách quay lại (is_repeated_guest). Kết quả giúp so sánh hiệu quả và độ ổn định giữa các kênh bán hàng – yếu tố trọng yếu trong quản lý doanh thu khách sạn.

Ý nghĩa kinh tế

Phân tích cho thấy kênh Online có tỷ lệ hủy cao nhất (35,6%) và khách quay lại thấp nhất (0,9%), trong khi kênh Trực tiếp & Doanh nghiệp có tỷ lệ hủy thấp (14,1%) và khách trung thành cao vượt trội (13,5%). Điều này chứng tỏ rằng các nền tảng OTA tuy giúp tăng lượng đặt phòng nhưng mang lại rủi ro và chi phí cao, trong khi các kênh trực tiếp lại đảm bảo doanh thu bền vững và ổn định hơn. Khách sạn nên triển khai chính sách khuyến khích đặt trực tiếp như ưu đãi giá nhẹ, tặng dịch vụ bổ sung hoặc chương trình tích điểm. Đồng thời, cần kiểm soát mức phụ thuộc vào OTA bằng giới hạn tỷ trọng bán phòng online trong tổng doanh thu.

6.5.2 Xem tỷ lệ các loại tiền đặt cọc (deposit_type) được áp dụng cho mỗi kênh

segment_crosstab <- segment_data %>%
  count(segment_group, deposit_type) %>%
  group_by(segment_group) %>%
  mutate(ty_le = n / sum(n))
kable(segment_crosstab, digits = 2)
segment_group deposit_type n ty_le
Kênh khác No Deposit 17603 0.94
Kênh khác Non Refund 946 0.05
Kênh khác Refundable 84 0.00
Online No Deposit 51213 1.00
Online Non Refund 18 0.00
Online Refundable 14 0.00
Trực tiếp & DN No Deposit 15625 0.99
Trực tiếp & DN Non Refund 74 0.00
Trực tiếp & DN Refundable 9 0.00

Ý nghĩa kỹ thuật

Để kiểm tra mối quan hệ giữa chính sách đặt cọc và kênh bán, dữ liệu được nhóm theo segment_group và deposit_type. Hàm count() đếm số lượng từng loại, sau đó tỷ lệ phần trăm được tính qua mutate(ty_le = n / sum(n)). Phương pháp này giúp nhận biết xem kênh nào áp dụng chính sách “No Deposit”, “Non Refund” hoặc “Refundable” phổ biến nhất, từ đó phân tích nguyên nhân ảnh hưởng đến tỷ lệ hủy.

Ý nghĩa kinh tế

Kết quả cho thấy gần như tất cả các kênh Online (100%) và phần lớn kênh Trực tiếp (99%) sử dụng hình thức “No Deposit”. Chính điều này làm tăng rủi ro hủy, đặc biệt ở kênh OTA. Trong khi đó, một tỷ lệ nhỏ của các kênh khác sử dụng “Non Refund”, cho thấy họ có xu hướng ràng buộc tốt hơn. Khách sạn có thể xây dựng chính sách đặt cọc linh hoạt tùy theo kênh: vẫn giữ “No Deposit” cho kênh Online để đảm bảo khả năng cạnh tranh, nhưng yêu cầu đặt cọc nhỏ hoặc không hoàn hủy cho nhóm khách đặt sớm hoặc đoàn lớn nhằm giảm thiểu rủi ro.

6.5.3 Biểu đồ cột so sánh giá trung bình giữa các nhóm kênh

segment_data %>%
  filter(adr > 0) %>%
  group_by(segment_group) %>%
  summarise(adr_tb = mean(adr)) %>%
  ggplot(aes(x = reorder(segment_group, -adr_tb), y = adr_tb, fill = segment_group)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
   geom_text(aes(label = round(adr_tb, 1)), vjust = -0.5) +
  labs(title = "Kênh Trực tiếp & Doanh nghiệp mang lại giá trị cao nhất",
       x = "Nhóm Kênh bán hàng", y = "Giá phòng trung bình (ADR)")

Ý nghĩa kỹ thuật

Hàm group_by(segment_group) và summarise() được sử dụng để tính ADR trung bình cho từng nhóm kênh. Sau đó, biểu đồ cột được sắp xếp giảm dần theo giá trị ADR nhằm thể hiện trực quan kênh mang lại doanh thu cao nhất.

Ý nghĩa kinh tế

Kênh Trực tiếp & Doanh nghiệp cho thấy mức ADR trung bình cao nhất, phản ánh chất lượng và giá trị giao dịch vượt trội. Trong khi đó, kênh Online tuy mang lại lượng khách lớn nhưng giá trung bình thấp hơn do ảnh hưởng của chiết khấu và cạnh tranh giá. Từ góc độ chiến lược, khách sạn nên định hướng tăng tỷ trọng đặt trực tiếp và khách doanh nghiệp, vì đây là nhóm khách vừa ổn định vừa có khả năng chi trả cao, đồng thời giảm chi phí hoa hồng và tăng hiệu quả biên lợi nhuận. ## Phân tích hành vi của khách ở ngắn ngày, trung bình và dài ngày

6.5.4 Tính adr trung bình và tỷ lệ hủy phòng

stay_data <- analyzed %>%
  mutate(total_nights = stays_in_weekend_nights + stays_in_week_nights) %>%
  filter(total_nights > 0) %>%
  mutate(stay_duration_group = case_when(
    total_nights <= 2 ~ "Ngắn ngày",
    total_nights <= 7 ~ "Trung bình",
    TRUE ~ "Dài ngày"
  ))
stay_summary <- stay_data %>%
  group_by(stay_duration_group) %>%
  summarise(
    adr_tb = mean(adr),
    ty_le_huy = mean(is_canceled)
  )
kable(stay_summary, digits = 2)
stay_duration_group adr_tb ty_le_huy
Dài ngày 108.84 0.34
Ngắn ngày 103.66 0.23
Trung bình 111.77 0.31

Ý nghĩa kỹ thuật

Biến total_nights được tạo bằng tổng số đêm ở cuối tuần và trong tuần. Dựa trên giá trị này, hàm case_when() chia dữ liệu thành ba nhóm: “Ngắn ngày” (≤2 đêm), “Trung bình” (3–7 đêm) và “Dài ngày” (>7 đêm). Tiếp đó, summarise() được dùng để tính ADR trung bình và tỷ lệ hủy của từng nhóm. Việc phân nhóm theo thời gian lưu trú cho phép đánh giá mối liên hệ giữa độ dài kỳ nghỉ và mức độ rủi ro hủy phòng.

Ý nghĩa kinh tế

Kết quả cho thấy khách ở trung bình từ 3–7 đêm có mức ADR cao nhất (111,77€), trong khi nhóm ở dài ngày có tỷ lệ hủy cao nhất (34%). Ngược lại, khách ở ngắn ngày hủy ít nhất (23%), phản ánh tính ổn định của nhóm khách công tác hoặc đi ngắn hạn. Từ kết quả này, khách sạn có thể thiết kế chính sách giá và ưu đãi theo độ dài lưu trú: giảm nhẹ giá cho kỳ nghỉ dài để giữ chân khách, trong khi nhóm ngắn ngày có thể được nhắm đến bằng các gói “quick-stay” hoặc “weekend deal” để tăng tốc độ lấp phòng.

6.5.5 Xem tỷ lệ khách có yêu cầu đặc biệt trong mỗi nhóm

stay_crosstab <- stay_data %>%
  group_by(stay_duration_group) %>%
  summarise(ty_le_co_yeu_cau = mean(total_of_special_requests > 0))
kable(stay_crosstab, digits = 2)
stay_duration_group ty_le_co_yeu_cau
Dài ngày 0.50
Ngắn ngày 0.46
Trung bình 0.53

Ý nghĩa kỹ thuật

Sử dụng điều kiện logic total_of_special_requests > 0, dữ liệu được chia thành hai nhóm: có hoặc không có yêu cầu đặc biệt. Tỷ lệ phần trăm được tính trung bình trong từng nhóm lưu trú (mean()), giúp xác định mức độ tương tác của khách với khách sạn trước ngày đến.

Ý nghĩa kinh tế

Khoảng 50–53% khách ở trung bình hoặc dài ngày có yêu cầu đặc biệt, cao hơn nhóm ngắn ngày (46%). Điều này cho thấy khách ở lâu thường mong muốn trải nghiệm cá nhân hóa hơn, từ vị trí phòng, hướng nhìn, cho đến dịch vụ ăn uống. Khách sạn có thể tận dụng nhóm khách này bằng cách chào bán dịch vụ bổ sung (add-on) và chính sách chăm sóc cá nhân như ưu tiên chọn phòng, hỗ trợ đặc biệt, qua đó nâng cao mức độ hài lòng và giá trị đơn hàng trung bình. ### Biểu đồ cột chồng thể hiện cơ cấu loại khách sạn (hotel) cho mỗi nhóm

ggplot(stay_data, aes(x = stay_duration_group, fill = hotel)) +
  geom_bar(position = "fill") +
  scale_y_continuous(labels = scales::percent) +
  labs(title = "Khách ở dài ngày có xu hướng chọn Resort Hotel",
       x = "Nhóm Thời gian Lưu trú", y = "Tỷ lệ")

Ý nghĩa kỹ thuật

Hàm geom_bar(position = “fill”) được sử dụng để thể hiện tỷ trọng khách chọn City Hotel hoặc Resort Hotel trong từng nhóm lưu trú. Cách hiển thị này cho thấy rõ xu hướng lựa chọn loại hình khách sạn theo độ dài kỳ nghỉ.

Ý nghĩa kinh tế

Kết quả chỉ ra rằng khách lưu trú dài ngày có xu hướng chọn Resort Hotel nhiều hơn, trong khi City Hotel phổ biến ở nhóm lưu trú ngắn ngày. Xu hướng này phù hợp với bản chất thị trường: Resort đáp ứng nhu cầu nghỉ dưỡng, còn City phục vụ khách công tác hoặc di chuyển nhanh. Từ đó, khách sạn có thể phân bổ sản phẩm và chiến dịch tiếp thị phù hợp: đẩy mạnh các gói “long-stay” tại Resort trong mùa hè, và triển khai “short-stay business combo” cho City Hotel trong mùa hội nghị hoặc công tác.

6.6 So sánh nhóm khách hàng có tương tác và không có tương tác

6.6.1 Tính lead_time trung bình, adr trung bình và tỷ lệ hủy

request_data <- analyzed %>%
  mutate(has_request = ifelse(total_of_special_requests > 0, "Có yêu cầu", "Không yêu cầu"))
request_summary <- request_data %>%
  group_by(has_request) %>%
  summarise(
    lead_time_tb = mean(lead_time),
    adr_tb = mean(adr),
    ty_le_huy = mean(is_canceled)
  )
kable(request_summary, digits = 2)
has_request lead_time_tb adr_tb ty_le_huy
Có yêu cầu 82.32 115.07 0.22
Không yêu cầu 79.12 102.08 0.34

Ý nghĩa kỹ thuật

Dữ liệu được phân nhóm dựa trên số lượng yêu cầu đặc biệt (total_of_special_requests). Bằng điều kiện ifelse(total_of_special_requests > 0, “Có yêu cầu”, “Không yêu cầu”), chương trình chia khách hàng thành hai nhóm tương tác khác nhau. Sau đó, các chỉ tiêu thời gian đặt phòng trung bình (lead_time_tb), giá phòng trung bình (adr_tb) và tỷ lệ hủy (ty_le_huy) được tính toán bằng summarise() để phản ánh sự khác biệt hành vi giữa hai nhóm. Phần trực quan hóa bằng ggplot() với cột biểu diễn tỷ lệ hủy giúp minh họa rõ xu hướng của nhóm khách có và không có tương tác trước khi đến.

Ý nghĩa kinh tế

Kết quả cho thấy khách có yêu cầu đặc biệt không chỉ trả giá cao hơn (115,07€ so với 102,08€) mà còn có tỷ lệ hủy thấp hơn đáng kể (22% so với 34%). Điều này phản ánh rằng việc trao đổi thông tin và thể hiện nhu cầu trước chuyến đi là chỉ báo của sự cam kết và mong muốn trải nghiệm nghiêm túc. Về mặt kinh tế, đây là nhóm khách có giá trị cao và rủi ro thấp, nên cần được ưu tiên chăm sóc. Khách sạn có thể tận dụng điều này bằng cách khuyến khích khách nhập yêu cầu ngay khi đặt, đồng thời đề xuất dịch vụ bổ sung tự động (add-on) như chọn phòng, view, bữa sáng hay xe đưa đón, nhằm tăng doanh thu phụ trợ và mức độ hài lòng.

6.6.2 Xem tỷ lệ khách lặp lại trong mỗi nhóm

request_crosstab <- request_data %>%
  group_by(has_request) %>%
  summarise(ty_le_khach_lap_lai = mean(is_repeated_guest))
kable(request_crosstab, digits = 3)
has_request ty_le_khach_lap_lai
Có yêu cầu 0.030
Không yêu cầu 0.038

Ý nghĩa kỹ thuật

Dữ liệu được phân nhóm dựa trên số lượng yêu cầu đặc biệt (total_of_special_requests). Bằng điều kiện ifelse(total_of_special_requests > 0, “Có yêu cầu”, “Không yêu cầu”), chương trình chia khách hàng thành hai nhóm tương tác khác nhau. Sau đó, các chỉ tiêu thời gian đặt phòng trung bình (lead_time_tb), giá phòng trung bình (adr_tb) và tỷ lệ hủy (ty_le_huy) được tính toán bằng summarise() để phản ánh sự khác biệt hành vi giữa hai nhóm. Phần trực quan hóa bằng ggplot() với cột biểu diễn tỷ lệ hủy giúp minh họa rõ xu hướng của nhóm khách có và không có tương tác trước khi đến.

Ý nghĩa kinh tế

Kết quả cho thấy khách có yêu cầu đặc biệt không chỉ trả giá cao hơn (115,07€ so với 102,08€) mà còn có tỷ lệ hủy thấp hơn đáng kể (22% so với 34%). Điều này phản ánh rằng việc trao đổi thông tin và thể hiện nhu cầu trước chuyến đi là chỉ báo của sự cam kết và mong muốn trải nghiệm nghiêm túc. Về mặt kinh tế, đây là nhóm khách có giá trị cao và rủi ro thấp, nên cần được ưu tiên chăm sóc. Khách sạn có thể tận dụng điều này bằng cách khuyến khích khách nhập yêu cầu ngay khi đặt, đồng thời đề xuất dịch vụ bổ sung tự động (add-on) như chọn phòng, view, bữa sáng hay xe đưa đón, nhằm tăng doanh thu phụ trợ và mức độ hài lòng.

6.6.3 Biểu đồ cột so sánh tỷ lệ hủy phòng

ggplot(request_summary, aes(x = has_request, y = ty_le_huy, fill = has_request)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
    geom_text(aes(label = scales::percent(ty_le_huy, accuracy = 1)), vjust = -0.5) +
  scale_y_continuous(labels = scales::percent) +
  labs(title = "Khách không có yêu cầu đặc biệt có rủi ro hủy phòng cao hơn nhiều",
       x = "", y = "Tỷ lệ Hủy phòng")

Ý nghĩa kỹ thuật

Biểu đồ được vẽ bằng geom_bar() và gắn nhãn phần trăm thông qua geom_text(), giúp thể hiện trực quan sự chênh lệch tỷ lệ hủy giữa hai nhóm khách. Đây là công cụ trực quan hóa hiệu quả, nhấn mạnh sự khác biệt hành vi dựa trên mức độ tương tác.

Ý nghĩa kinh tế

Biểu đồ cho thấy nhóm không có yêu cầu đặc biệt hủy phòng nhiều hơn đáng kể. Điều này củng cố nhận định rằng mức độ tương tác của khách phản ánh mức độ quan tâm và gắn bó thực sự. Từ đó, khách sạn có thể chủ động tạo tương tác bằng cách gửi email xác nhận, lời chào hoặc câu hỏi trước ngày đến. Các biện pháp này vừa tăng khả năng giữ chỗ, vừa nâng cao ấn tượng chuyên nghiệp, giảm nguy cơ hủy sát ngày.

6.7 Phân tích sự khác biệt giữa khách đi một mình, cặp đôi và nhóm/gia đình

6.7.1 Tính số đêm ở trung bình và adr trung bình

guest_data <- analyzed %>%
  mutate(total_guests = adults + children) %>%
  filter(total_guests > 0 & total_guests < 5) %>%
  mutate(guest_group = case_when(
    total_guests == 1 ~ "Một mình",
    total_guests == 2 ~ "Cặp đôi",
    TRUE ~ "Nhóm/Gia đình"
  ))
guest_summary <- guest_data %>%
  group_by(guest_group) %>%
  summarise(
    so_dem_tb = mean(stays_in_weekend_nights + stays_in_week_nights),
    adr_tb = mean(adr)
  )
kable(guest_summary, digits = 2)
guest_group so_dem_tb adr_tb
Cặp đôi 3.87 103.47
Một mình 2.74 82.87
Nhóm/Gia đình 3.87 159.67

Ý nghĩa kỹ thuật

Biến total_guests được tính từ tổng số người lớn (adults) và trẻ em (children). Dữ liệu sau đó được phân nhóm bằng case_when() thành ba nhóm khách: “Một mình”, “Cặp đôi” và “Nhóm/Gia đình”. Các chỉ tiêu số đêm ở trung bình (so_dem_tb) và giá trung bình (adr_tb) được tính bằng summarise() để xác định đặc trưng hành vi của từng nhóm khách. Các kết quả này cung cấp nền tảng cho việc xây dựng sản phẩm dịch vụ phù hợp với quy mô khách.

Ý nghĩa kinh tế

Phân tích cho thấy cặp đôi và nhóm/gia đình có thời gian lưu trú dài hơn (3,87 đêm), trong khi khách đi một mình chỉ ở trung bình 2,74 đêm. Về giá, nhóm gia đình chi trả cao nhất (159,67€), gần gấp đôi nhóm cặp đôi. Điều này phản ánh rằng nhóm khách đi cùng người thân hoặc nhóm lớn thường chi tiêu cao hơn và có nhu cầu đa dạng hơn (phòng lớn, giường phụ, dịch vụ ăn uống). Do đó, khách sạn nên phát triển gói combo gia đình hoặc ưu đãi dài ngày cho nhóm, nhằm tối ưu hóa doanh thu từ phân khúc này.

6.7.2 Xem loại phòng (reserved_room_type) phổ biến nhất cho mỗi nhóm

guest_crosstab <- guest_data %>%
  count(guest_group, reserved_room_type, sort = TRUE) %>%
  group_by(guest_group) %>%
  slice(1)
kable(guest_crosstab)
guest_group reserved_room_type n
Cặp đôi A 38298
Một mình A 13194
Nhóm/Gia đình D 4020

Ý nghĩa kỹ thuật

Hàm count() được sử dụng để thống kê loại phòng (reserved_room_type) phổ biến nhất trong từng nhóm khách, sau đó slice(1) chọn ra loại phòng có số lượt đặt cao nhất. Cách làm này giúp nhận biết sở thích lựa chọn phòng của từng phân khúc.

Ý nghĩa kinh tế

Kết quả cho thấy khách đi một mình và cặp đôi chủ yếu chọn phòng loại A (phòng tiêu chuẩn), trong khi nhóm/gia đình ưu tiên phòng loại D (diện tích lớn, nhiều tiện nghi). Từ đó, khách sạn có thể điều chỉnh chính sách phân bổ phòng (inventory) phù hợp hơn: tăng tỷ lệ phòng tiêu chuẩn vào mùa công tác, và tập trung phòng lớn cho kỳ nghỉ cuối tuần hoặc mùa hè. Đây là cách giúp tối ưu hóa cơ cấu phòng và nâng cao hiệu quả vận hành.

6.7.3 Biểu đồ cột thể hiện số đêm ở trung bình

ggplot(guest_summary, aes(x = guest_group, y = so_dem_tb, fill = guest_group)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  geom_text(aes(label = round(so_dem_tb, 2)), vjust = -0.5) +
  labs(title = "Nhóm/Gia đình và cặp đôi có xu hướng ở lại lâu hơn",
       x = "Kích thước Nhóm khách", y = "Số đêm ở trung bình")

Ý nghĩa kỹ thuật

Biểu đồ cột geom_bar() thể hiện giá trị trung bình so_dem_tb của từng nhóm khách, kèm nhãn số liệu hiển thị phía trên cột để dễ đọc. Cách trình bày này giúp nhận diện nhanh xu hướng lưu trú giữa các nhóm.

Ý nghĩa kinh tế

Biểu đồ cho thấy cặp đôi và nhóm/gia đình ở lâu hơn khách đi một mình, khẳng định tiềm năng doanh thu cao hơn của hai nhóm này. Vì vậy, khách sạn nên triển khai chương trình khuyến khích lưu trú dài ngày (ở 3 đêm tính 2, giảm giá đêm thứ 4, v.v.) và ưu đãi dành riêng cho cặp đôi (dịch vụ spa, bữa tối lãng mạn), qua đó gia tăng trải nghiệm và kéo dài thời gian ở trung bình.

6.8 Tìm hiểu sâu hơn về hành vi của khách hàng lặp lại so với khách mới

6.8.1 Tính lead_time trung bình và tỷ lệ hủy phòng

loyalty_data <- analyzed %>%
  mutate(loyalty_group = ifelse(is_repeated_guest == 1, "Khách lặp lại", "Khách mới"))
loyalty_summary <- loyalty_data %>%
  group_by(loyalty_group) %>%
  summarise(
    lead_time_tb = mean(lead_time),
    ty_le_huy = mean(is_canceled)
  )
kable(loyalty_summary, digits = 2)
loyalty_group lead_time_tb ty_le_huy
Khách lặp lại 19.18 0.08
Khách mới 82.89 0.29

Ý nghĩa kỹ thuật

Biến is_repeated_guest được dùng để chia dữ liệu thành hai nhóm: “Khách lặp lại” và “Khách mới”. Với mỗi nhóm, các chỉ tiêu thời gian đặt phòng trung bình (lead_time_tb) và tỷ lệ hủy (ty_le_huy) được tính bằng summarise(). Việc này giúp làm rõ mối quan hệ giữa mức độ trung thành và hành vi rủi ro.

Ý nghĩa kinh tế

Kết quả cho thấy khách lặp lại có lead time ngắn hơn nhiều (19,18 ngày so với 82,89 ngày) và tỷ lệ hủy thấp hơn đáng kể (8% so với 29%). Điều này cho thấy nhóm khách quen đặt phòng gần ngày đến, tự tin và ít rủi ro hơn do đã quen quy trình và tin tưởng dịch vụ. Về quản trị, đây là nhóm khách ổn định và đáng giá, nên cần được duy trì thông qua chương trình tri ân, ưu đãi thành viên hoặc tích điểm thưởng, từ đó gia tăng tỷ lệ quay lại và giảm chi phí thu hút khách mới.

6.8.2 Xem cơ cấu kênh bán hàng (market_segment) của hai nhóm này

loyalty_crosstab <- loyalty_data %>%
  count(loyalty_group, market_segment, sort = TRUE) %>%
  group_by(loyalty_group) %>%
  mutate(ty_le = n / sum(n)) %>%
  filter(market_segment %in% c("Online TA", "Direct", "Corporate"))
kable(loyalty_crosstab, digits = 2)
loyalty_group market_segment n ty_le
Khách mới Online TA 50765 0.61
Khách mới Direct 10875 0.13
Khách mới Corporate 2719 0.03
Khách lặp lại Corporate 1417 0.49
Khách lặp lại Direct 697 0.24
Khách lặp lại Online TA 480 0.16

Ý nghĩa kỹ thuật

Dữ liệu được nhóm theo loyalty_group và market_segment, sau đó tính tỷ trọng bằng mutate(ty_le = n / sum(n)) để xác định kênh đặt phòng phổ biến của từng nhóm. Cách làm này giúp tìm ra kênh chính tạo ra khách trung thành.

Ý nghĩa kinh tế

Kết quả cho thấy khách lặp lại chủ yếu đến từ kênh Corporate (49%) và Direct (24%), trong khi khách mới chủ yếu từ kênh Online TA (61%). Điều này phản ánh vai trò khác nhau của các kênh: OTA phù hợp thu hút khách mới, còn Corporate và Direct là nguồn duy trì khách quen. Vì vậy, chiến lược tối ưu là sử dụng OTA như kênh thu hút ban đầu, sau đó chuyển đổi sang kênh trực tiếp hoặc hợp đồng doanh nghiệp thông qua dịch vụ tốt và chính sách khuyến khích quay lại.

6.8.3 Biểu đồ cột so sánh tỷ lệ hủy phòng

ggplot(loyalty_summary, aes(x = loyalty_group, y = ty_le_huy, fill = loyalty_group)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  geom_text(aes(label = scales::percent(ty_le_huy, accuracy = 1)), vjust = -0.5) +
  scale_y_continuous(labels = scales::percent) +
  labs(title = "Khách lặp lại có tỷ lệ hủy phòng thấp hơn đáng kể",
       x = "", y = "Tỷ lệ Hủy phòng")

Ý nghĩa kỹ thuật

Biểu đồ cột geom_bar() minh họa tỷ lệ hủy của hai nhóm khách, với nhãn phần trăm được gắn trực tiếp lên cột (geom_text()), giúp làm nổi bật sự khác biệt rõ ràng giữa khách mới và khách lặp lại.

Ý nghĩa kinh tế

Biểu đồ khẳng định khách lặp lại ít hủy hơn đáng kể so với khách mới. Đây là bằng chứng cho giá trị kinh tế của lòng trung thành khách hàng: giảm chi phí marketing, tăng khả năng dự đoán công suất và doanh thu ổn định hơn. Do đó, khách sạn nên coi khách lặp lại là nguồn doanh thu chiến lược, tập trung vào giữ chân thông qua ưu tiên dịch vụ, phản hồi nhanh và chính sách cá nhân hóa.

6.9 Đánh giá tác động của các chính sách đặt cọc khác nhau

6.9.1 Tính lead_time trung bình và tỷ lệ hủy phòng

deposit_summary <- analyzed %>%
  group_by(deposit_type) %>%
  summarise(
    lead_time_tb = mean(lead_time),
    ty_le_huy = mean(is_canceled)
  )
kable(deposit_summary, digits = 2)
deposit_type lead_time_tb ty_le_huy
No Deposit 79.03 0.27
Non Refund 211.30 0.95
Refundable 145.39 0.24

Ý nghĩa kỹ thuật

Phân tích này nhóm dữ liệu theo biến deposit_type để tính lead_time_tb và ty_le_huy. Các nhóm gồm “No Deposit”, “Non Refund” và “Refundable”. Kết quả được biểu diễn bằng bảng và biểu đồ cột nhằm so sánh mức độ ảnh hưởng của chính sách đặt cọc đến tỷ lệ hủy.

Ý nghĩa kinh tế

Kết quả cho thấy chính sách Non Refund có tỷ lệ hủy cao (do đặt sớm nhưng thiếu ràng buộc thực thi), trong khi Refundable và No Deposit có tỷ lệ hủy thấp hơn. Điều này khẳng định tầm quan trọng của việc áp dụng điều khoản cọc đúng và kiểm soát quy trình hoàn hủy. Khách sạn nên kết hợp chính sách Non Refund với ưu đãi đặt sớm để vừa tăng cam kết của khách, vừa khuyến khích hành vi đặt phòng sớm.

6.9.2 Xem cơ cấu loại khách sạn (hotel) cho mỗi loại đặt cọc

deposit_crosstab <- analyzed %>%
  count(deposit_type, hotel) %>%
  group_by(deposit_type) %>%
  mutate(ty_le = n / sum(n))
kable(deposit_crosstab, digits = 2)
deposit_type hotel n ty_le
No Deposit City Hotel 51461 0.61
No Deposit Resort Hotel 32980 0.39
Non Refund City Hotel 845 0.81
Non Refund Resort Hotel 193 0.19
Refundable City Hotel 15 0.14
Refundable Resort Hotel 92 0.86

Ý nghĩa kỹ thuật

Dữ liệu được nhóm theo deposit_type và hotel, sau đó tính tỷ lệ trong từng nhóm để xem loại khách sạn nào áp dụng chính sách nào phổ biến.

Ý nghĩa kinh tế

Kết quả cho thấy City Hotel chủ yếu dùng No Deposit, còn Resort Hotel áp dụng Refundable nhiều hơn (86%). Điều này phản ánh đặc thù kinh doanh: City hướng đến khách công tác (linh hoạt, ít hủy), còn Resort phục vụ khách nghỉ dưỡng cần sự bảo đảm và hoàn tiền linh hoạt. Việc phân bổ chính sách đặt cọc theo loại hình giúp tối ưu trải nghiệm khách hàng và kiểm soát rủi ro tài chính.

6.9.3 Biểu đồ cột so sánh tỷ lệ hủy phòng

ggplot(deposit_summary, aes(x = reorder(deposit_type, ty_le_huy), y = ty_le_huy, fill = deposit_type)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
   geom_text(aes(label = scales::percent(ty_le_huy, accuracy = 1)), vjust = -0.5) +
  scale_y_continuous(labels = scales::percent) +
  labs(title = "Chính sách 'Non Refund' gần như loại bỏ hoàn toàn việc hủy phòng",
       x = "Loại tiền Đặt cọc", y = "Tỷ lệ Hủy phòng")

Ý nghĩa kỹ thuật

Biểu đồ cột geom_bar() sắp xếp các loại đặt cọc theo tỷ lệ hủy tăng dần, có nhãn phần trăm hiển thị trực tiếp, giúp dễ dàng xác định loại chính sách hiệu quả nhất.

Ý nghĩa kinh tế

Biểu đồ khẳng định rằng các chính sách “Non Refund” hoặc “Partial Refund” giảm đáng kể tỷ lệ hủy phòng. Tuy nhiên, nếu áp dụng cứng nhắc có thể khiến khách e ngại đặt sớm. Do đó, nên cân bằng giữa ràng buộc và ưu đãi giá, ví dụ: giảm 10–15% cho đặt sớm không hoàn hủy.

6.9.4 Xu hướng tỷ lệ hủy phòng theo tháng

monthly_cancel <- analyzed %>%
  group_by(arrival_date_month) %>%
  summarise(ty_le_huy = mean(is_canceled))

ggplot(monthly_cancel, aes(x = arrival_date_month, y = ty_le_huy, group = 1)) +
  geom_line(color = "steelblue", linewidth = 1.2) +           # Layer 1: đường xu hướng
  geom_point(color = "red", size = 3) +                       # Layer 2: điểm dữ liệu
  geom_text(aes(label = scales::percent(ty_le_huy, 1)),       # Layer 3: nhãn phần trăm
            vjust = -0.7, size = 3) +
  scale_y_continuous(labels = scales::percent) +              # Layer 4: định dạng %
  labs(title = "Xu hướng tỷ lệ hủy phòng theo tháng",
       x = "Tháng khách đến", y = "Tỷ lệ hủy phòng") +        # Layer 5: tiêu đề, nhãn
  theme_minimal()

Ý nghĩa kỹ thuật

Dữ liệu được nhóm theo arrival_date_month và tính tỷ lệ hủy trung bình, sau đó thể hiện bằng biểu đồ đường (geom_line()) với điểm đánh dấu (geom_point()).

Ý nghĩa kinh tế

Biểu đồ thể hiện xu hướng hủy tăng vào các tháng cao điểm du lịch, phản ánh áp lực đặt sớm và cạnh tranh giá. Kết quả này giúp khách sạn lập kế hoạch giá và chính sách cọc theo chu kỳ tháng, tối ưu dự báo công suất và dòng tiền.

6.9.5 Cơ cấu loại khách hàng theo loại khách sạn

customer_hotel <- analyzed %>%
  group_by(hotel, customer_type) %>%
  summarise(ty_le = n() / nrow(analyzed), .groups = "drop")

ggplot(customer_hotel, aes(x = hotel, y = ty_le, fill = customer_type)) +
  geom_bar(stat = "identity", position = "fill") +                    # 1️⃣ Cột chồng thể hiện tỷ trọng
  geom_text(aes(label = scales::percent(ty_le, 1)), 
            position = position_fill(vjust = 0.5), color = "white", size = 3) + # 2️⃣ Nhãn %
  scale_fill_viridis_d() +                                            # 3️⃣ Bảng màu viridis đồng bộ
  scale_y_continuous(labels = scales::percent) +                      # 4️⃣ Trục %
  labs(title = "Cơ cấu loại khách hàng theo loại khách sạn",
       subtitle = "Phân tích tỷ trọng khách doanh nghiệp, nhóm, cá nhân tại từng loại khách sạn",
       x = "Loại khách sạn", y = "Tỷ trọng khách hàng", fill = "Loại khách") +  # 5️⃣ Nhãn
  theme_light(base_size = 13) +                                       # 6️⃣ Giữ phong cách theme đồng bộ
  theme(legend.position = "bottom")

nghĩa kỹ thuật

Dữ liệu được nhóm theo hai biến là loại khách sạn (hotel) và loại khách hàng (customer_type). Biến loại khách hàng chia khách thành bốn nhóm chính: doanh nghiệp (Corporate), đoàn khách (Groups), khách lẻ (Transient) và khách lẻ đi theo đoàn (Transient-Party). Sử dụng hàm count() để thống kê số lượng từng loại khách hàng trong mỗi loại khách sạn, sau đó chuẩn hóa tỷ trọng bằng mutate(ty_le = n / sum(n)). Kết quả được thể hiện bằng biểu đồ cột chồng, giúp quan sát tỷ lệ của từng nhóm khách hàng trong tổng thể từng loại khách sạn.

Ý nghĩa kinh tế

Kết quả cho thấy City Hotel (khách sạn trong thành phố) có tỷ lệ cao ở nhóm khách doanh nghiệp và khách lẻ, phản ánh đặc trưng phục vụ khách công tác, hội nghị hoặc di chuyển ngắn ngày. Ngược lại, Resort Hotel (khách sạn nghỉ dưỡng) có tỷ trọng lớn hơn ở nhóm đoàn khách và khách đi theo nhóm gia đình, phù hợp với đặc điểm du lịch nghỉ ngơi, kỳ nghỉ dài ngày. Từ đó, mỗi loại khách sạn cần xác định chiến lược phục vụ và tiếp thị riêng:

City Hotel nên tập trung duy trì quan hệ với doanh nghiệp, tổ chức sự kiện và công ty du lịch công tác.

Resort Hotel nên đẩy mạnh các gói nghỉ dưỡng nhóm, gia đình và tour trọn gói. Việc hiểu rõ cơ cấu khách hàng theo từng loại hình giúp khách sạn định vị sản phẩm chính xác, tối ưu hóa công suất phòng và doanh thu.

6.9.6 Ảnh hưởng của loại đặt cọc đến tỷ lệ hủy phòng

deposit_cancel <- analyzed %>%
  group_by(deposit_type, hotel) %>%
  summarise(ty_le_huy = mean(is_canceled), .groups = "drop")

ggplot(deposit_cancel, aes(x = deposit_type, y = ty_le_huy, fill = hotel)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +      # 1️⃣ Biểu đồ cột nhóm
  geom_text(aes(label = scales::percent(ty_le_huy, 1)), 
            position = position_dodge(0.8), vjust = -0.5, size = 3) +  # 2️⃣ Nhãn %
  scale_fill_viridis_d() +                                             # 3️⃣ Màu gradient đồng bộ
  scale_y_continuous(labels = scales::percent) +                       # 4️⃣ Định dạng trục %
  labs(title = "Ảnh hưởng của loại đặt cọc đến tỷ lệ hủy phòng",
       subtitle = "Khách không cọc hoặc cọc một phần có xu hướng hủy nhiều hơn",
       x = "Loại đặt cọc", y = "Tỷ lệ hủy phòng", fill = "Loại khách sạn") +   # 5️⃣ Nhãn
  theme_light(base_size = 13) +
  theme(legend.position = "bottom")

Ý nghĩa kỹ thuật

Dữ liệu được nhóm theo hai biến deposit_type (loại đặt cọc) và hotel để tính tỷ lệ hủy trung bình của từng nhóm. Ba loại đặt cọc được xem xét gồm:

Không đặt cọc (No Deposit),

Không hoàn tiền (Non Refund),

Hoàn tiền (Refundable). Hàm group_by(deposit_type, hotel) kết hợp với summarise() được sử dụng để tính tỷ lệ hủy trung bình (mean(is_canceled)), sau đó kết quả được minh họa bằng biểu đồ cột nhóm.

Ý nghĩa kinh tế

Phân tích cho thấy hiệu quả của các chính sách đặt cọc khác nhau giữa hai loại khách sạn:

Tại City Hotel, chính sách “Không đặt cọc” vẫn duy trì tỷ lệ hủy thấp, do nhóm khách công tác thường chắc chắn về lịch trình.

Ở Resort Hotel, sự khác biệt rõ ràng hơn: “Hoàn tiền” giúp thu hút nhiều đặt phòng, trong khi “Không hoàn tiền” giúp giảm mạnh tình trạng hủy phòng. Từ đó, mỗi khách sạn nên xây dựng chính sách đặt cọc riêng phù hợp với đối tượng khách hàng chính. City Hotel nên giữ chính sách linh hoạt, trong khi Resort Hotel có thể áp dụng “Không hoàn tiền” cho các gói nghỉ dưỡng hoặc đặt sớm để đảm bảo doanh thu chắc chắn.

6.9.7 Tỷ lệ hủy phòng của khách nội địa và quốc tế theo loại khách sạn

cancel_by_location <- analyzed %>%
  mutate(Khach = ifelse(country == "PRT", "Nội địa", "Quốc tế")) %>%
  group_by(hotel, Khach) %>%
  summarise(TyLeHuy = mean(is_canceled), .groups = "drop")

ggplot(cancel_by_location, aes(x = hotel, y = TyLeHuy, fill = Khach)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +      # 1️⃣ Cột nhóm so sánh
  geom_text(aes(label = scales::percent(TyLeHuy, 1)), 
            position = position_dodge(0.8), vjust = -0.5, size = 3) +  # 2️⃣ Nhãn %
  scale_fill_viridis_d() +                                             # 3️⃣ Màu viridis đồng bộ
  scale_y_continuous(labels = scales::percent) +                       # 4️⃣ Trục %
  labs(title = "Tỷ lệ hủy phòng của khách nội địa và quốc tế theo loại khách sạn",
       subtitle = "So sánh hành vi hủy phòng giữa hai nhóm khách hàng",
       x = "Loại khách sạn", y = "Tỷ lệ hủy phòng", fill = "Nhóm khách") +     # 5️⃣ Nhãn
  theme_light(base_size = 13) +
  theme(legend.position = "bottom")

Ý nghĩa kỹ thuật

Từ biến quốc gia (country), dữ liệu được phân thành hai nhóm: khách nội địa (quốc tịch Bồ Đào Nha) và khách quốc tế (các quốc gia khác). Sau đó, chương trình nhóm theo loại khách sạn (hotel) và tính tỷ lệ hủy trung bình của từng nhóm bằng summarise(). Biểu đồ cột nhóm được sử dụng để thể hiện sự khác biệt tỷ lệ hủy giữa hai nhóm khách tại mỗi loại khách sạn.

Ý nghĩa kinh tế

Kết quả cho thấy khách quốc tế có tỷ lệ hủy thấp hơn đáng kể so với khách nội địa, ở cả hai loại khách sạn. Khách quốc tế thường có kế hoạch du lịch rõ ràng và thời gian chuẩn bị dài hơn, trong khi khách nội địa có xu hướng đặt phòng muộn và dễ thay đổi kế hoạch. Vì vậy, khách sạn nên thiết kế chính sách đặt phòng khác nhau cho từng nhóm khách:

Với khách quốc tế, có thể áp dụng ưu đãi đặt sớm kèm điều khoản không hoàn tiền để tăng cam kết và doanh thu sớm.

Với khách nội địa, nên giữ chính sách linh hoạt hoặc hoàn tiền một phần, nhằm khuyến khích họ đặt phòng nhiều hơn mà không lo rủi ro. Điều chỉnh chính sách theo nguồn khách và loại hình khách sạn giúp cân bằng giữa rủi ro hủy phòng và khả năng cạnh tranh giá.

6.9.8 Tỷ lệ yêu cầu đặc biệt theo loại khách hàng và loại khách sạn

request_bubble <- analyzed %>%
  group_by(hotel, customer_type) %>%
  summarise(tb_request = mean(total_of_special_requests, na.rm = TRUE), .groups = "drop")

ggplot(request_bubble, aes(x = customer_type, y = hotel, size = tb_request, color = tb_request)) +
  geom_point(alpha = 0.7) +                                            # 1️⃣ Bong bóng
  geom_text(aes(label = round(tb_request, 2)), 
            color = "black", size = 3, vjust = -1) +                   # 2️⃣ Nhãn số yêu cầu TB
  scale_size_continuous(range = c(3, 15)) +                            # 3️⃣ Kích thước bong bóng
  scale_color_viridis_c(option = "C") +                                # 4️⃣ Bảng màu viridis đồng bộ
  labs(title = "Tỷ lệ yêu cầu đặc biệt theo loại khách hàng và loại khách sạn",
       subtitle = "Nhóm khách Family và Corporate có nhiều yêu cầu bổ sung nhất",
       x = "Loại khách hàng", y = "Loại khách sạn", 
       size = "Số yêu cầu trung bình", color = "Số yêu cầu trung bình") +   # 5️⃣ Nhãn
  theme_light(base_size = 13) +                                        # 6️⃣ Theme thống nhất
  theme(legend.position = "right",
        panel.grid.minor = element_blank())

Ý nghĩa kỹ thuật

Phần này nhóm dữ liệu theo hai biến hotel và customer_type, sau đó tính tỷ lệ trung bình khách có yêu cầu đặc biệt bằng công thức mean(total_of_special_requests > 0). Kết quả được thể hiện bằng biểu đồ dạng điểm (bubble chart), trong đó kích thước điểm phản ánh tỷ lệ khách có yêu cầu riêng biệt ở từng nhóm khách hàng và từng loại khách sạn.

Ý nghĩa kinh tế

Kết quả cho thấy nhóm khách doanh nghiệp (Corporate) và gia đình (Family) có nhiều yêu cầu đặc biệt hơn, nhất là tại Resort Hotel. Các yêu cầu phổ biến thường liên quan đến vị trí phòng, hướng nhìn, giường phụ, dịch vụ ăn uống hoặc hỗ trợ phương tiện di chuyển. Điều này cho thấy những nhóm khách trên có mức độ kỳ vọng và khả năng chi trả cao hơn, do đó khách sạn nên xây dựng chính sách phục vụ cá nhân hóa như: chọn phòng trước, ưu tiên check-in sớm, hỗ trợ xe đưa đón, hoặc dịch vụ doanh nghiệp riêng. Đáp ứng tốt các yêu cầu đặc biệt không chỉ nâng cao trải nghiệm khách hàng mà còn gia tăng khả năng khách quay lại và giới thiệu dịch vụ, góp phần củng cố uy tín thương hiệu.

6.9.9 Top những quốc gia đặt phòng nhiều nhất

# ---- bar_top_quoc_gia_dat_phong_5layers ----
library(countrycode)
library(forcats)
# 1) Chuẩn bị dữ liệu
top_country <- analyzed %>%
  filter(!is.na(country), country != "NULL") %>%
  count(country, name = "so_dat") %>%
  mutate(ten_qg = countrycode(country, "iso3c", "country.name", warn = FALSE)) %>%
  mutate(ten_qg = ifelse(is.na(ten_qg), country, ten_qg)) %>%
  slice_max(so_dat, n = 12) %>%
  arrange(so_dat) %>%
  mutate(ten_qg = fct_inorder(ten_qg))

muc_tb <- mean(top_country$so_dat)
top_1 <- top_country %>% slice_max(so_dat, n = 1)

# 2) Vẽ (≥5 layers):
ggplot(top_country, aes(x = ten_qg, y = so_dat)) +
  geom_col(alpha = 0.9) +                                              # LAYER 1: cột
  geom_text(aes(label = scales::comma(so_dat)),                        # LAYER 2: nhãn số
            hjust = -0.1, size = 3) +
  geom_point(aes(y = so_dat), size = 2) +                              # LAYER 3: chấm nhấn nhá
  geom_hline(yintercept = muc_tb, linetype = 2) +                      # LAYER 4: đường trung bình
  annotate("label",                                                     # LAYER 5: nhãn "nhiều nhất"
           x = top_1$ten_qg, y = top_1$so_dat,
           label = "Nhiều nhất",
           vjust = -0.3, size = 3) +
  coord_flip() +
  labs(
    title = "Top 12 quốc gia đặt phòng nhiều nhất",
    subtitle = "Thanh dài = đặt nhiều; đường nét đứt = mức trung bình của Top 12",
    x = NULL, y = "Số lượt đặt (đếm)"
  ) +
  theme_minimal(base_size = 12)

Ý nghĩa kỹ thuật

Sử dụng hàm countrycode() để chuyển đổi mã quốc gia từ ký hiệu sang tên đầy đủ. Sau đó, dữ liệu được nhóm theo quốc gia (country) và thống kê số lượng đặt phòng (count()). Danh sách được sắp xếp giảm dần để lấy 12 quốc gia có số lượng đặt phòng cao nhất. Biểu đồ cột ngang thể hiện thứ hạng, kết hợp đường trung bình (geom_hline()) và nhãn chú thích “Quốc gia đặt nhiều nhất” để làm nổi bật nhóm đầu.

Ý nghĩa kinh tế

Kết quả cho thấy Bồ Đào Nha, Anh, Pháp, Đức và Tây Ban Nha là những thị trường trọng điểm, trong đó khách nội địa chiếm tỷ lệ lớn nhất. Nhóm khách châu Âu chiếm phần lớn lượng đặt phòng, phản ánh vị trí địa lý thuận lợi và xu hướng du lịch mùa hè tại khu vực Nam Âu. Từ kết quả này, khách sạn có thể:

Duy trì chiến dịch quảng bá nội địa vào mùa thấp điểm (mùa đông) để giữ công suất.

Tăng cường truyền thông trực tuyến tại các thị trường Anh, Pháp, Đức trong mùa hè – giai đoạn cao điểm du lịch.

Bổ sung nhiều phương thức thanh toán và nội dung hỗ trợ bằng ngôn ngữ bản địa để tăng tính thuận tiện cho khách quốc tế. Như vậy, việc hiểu rõ cơ cấu quốc gia giúp khách sạn phân bổ ngân sách tiếp thị hợp lý và mở rộng thị trường hiệu quả.

6.9.10 Tỷ trọng kênh đặt phòng theo loại khách sạn

# ---- stacked_pct_segment_theo_hotel ----
segment_share_by_hotel <- analyzed %>%
  mutate(segment_group = case_when(
    market_segment == "Online TA" ~ "Kênh Online",
    market_segment %in% c("Offline TA/TO", "Groups") ~ "Kênh Offline & Đoàn",
    market_segment %in% c("Direct", "Corporate") ~ "Kênh Trực tiếp & DN",
    TRUE ~ "Kênh khác"
  )) %>%
  count(hotel, segment_group) %>%
  group_by(hotel) %>%
  mutate(pct = n / sum(n))

ggplot(segment_share_by_hotel,
       aes(x = hotel, y = pct, fill = segment_group)) +
  geom_col() +
  geom_text(aes(label = scales::percent(pct, 1)),
            position = position_stack(vjust = 0.5), size = 3, color = "white") +
  scale_y_continuous(labels = scales::percent) +
  labs(
    title = "Kênh chiếm tỷ trọng lớn ở từng loại khách sạn",
    x = NULL, y = "Tỷ trọng", fill = "Nhóm kênh"
  ) +
  theme_minimal(base_size = 12)

Ý nghĩa kỹ thuật

Biến market_segment được phân thành bốn nhóm chính:

Kênh trực tuyến (Online),

Kênh trực tiếp (Direct),

Kênh doanh nghiệp (Corporate),

Kênh khác (Others). Sau đó, dữ liệu được nhóm theo hotel và tính tỷ lệ phần trăm số đặt phòng của từng kênh trong tổng số đặt của mỗi loại khách sạn. Biểu đồ cột (geom_col()) được sử dụng để thể hiện rõ sự khác biệt trong cấu trúc kênh bán hàng giữa hai loại khách sạn.

Ý nghĩa kinh tế

Kết quả cho thấy Resort Hotel phụ thuộc nhiều vào kênh trực tuyến, do phần lớn khách nghỉ dưỡng tìm kiếm và đặt qua các nền tảng OTA (đại lý du lịch trực tuyến). Trong khi đó, City Hotel có tỷ lệ đặt trực tiếp và qua doanh nghiệp cao hơn, phản ánh đặc trưng phục vụ khách công tác, hội họp và sự kiện. Điều này cho thấy chiến lược bán hàng cần được điều chỉnh phù hợp:

Với Resort Hotel, nên tăng cường hợp tác chiến lược với các OTA lớn, đồng thời phát triển hệ thống đặt phòng trực tiếp riêng, tặng ưu đãi nhỏ để giảm phụ thuộc vào bên thứ ba.

Với City Hotel, cần tập trung vào hợp đồng doanh nghiệp dài hạn, chương trình khách hàng thân thiết, và chính sách ưu đãi dành cho khách công tác. Việc nắm rõ tỷ trọng từng kênh giúp khách sạn cân đối ngân sách tiếp thị, tối ưu chi phí hoa hồng và nâng cao lợi nhuận ròng.

Phần 2: Phân tích bộ dữ liệu về báo cáo của chứng khoán MWG

7 Giới thiệu tổng quan về bộ dữ liệu

Phân tích này sử dụng bộ dữ liệu tài chính của một doanh nghiệp trong giai đoạn 10 năm, từ 2015 đến 2024. Để tập trung vào việc đánh giá sức khỏe và hiệu quả hoạt động thực chất, bài phân tích sẽ xoáy sâu vào 31 chỉ tiêu cốt lõi được trích xuất từ Báo cáo Lưu chuyển tiền tệ. Bộ dữ liệu này với đầy đủ thông tin cho phép chúng ta phân tích chi tiết về cách doanh nghiệp tạo ra và sử dụng tiền mặt qua ba hoạt động chính: kinh doanh, đầu tư và tài chính. Mục tiêu là để nhận diện các mô hình chiến lược, đánh giá “chất lượng” của lợi nhuận và hiểu rõ hơn về sự tiến hóa trong mô hình tài chính của công ty trong suốt một thập kỷ qua.

8 Trích xuất dữ liệu sử dụng

raw_data <- read.csv2("C:/Users/LSB/Downloads/Dữ liệu ck.csv", header = TRUE, check.names = FALSE)

9 Giới thiệu bộ dữ liệu

9.1 Xem kích thước của dữ liệu thô

dim(raw_data)
## [1]  10 168

Giải thích kỹ thuật:

– Hàm dim() (viết tắt của dimensions) là một hàm cơ bản trong R, dùng để truy xuất kích thước của một đối tượng có dạng ma trận hoặc data frame (bảng dữ liệu).

– Kết quả trả về là một vector số nguyên gồm hai phần tử: [số dòng, số cột].

Ý nghĩa thống kê/kinh tế:

– Thống kê: Đây là bước đầu tiên để xác định quy mô của tập dữ liệu. Con số [10, 168] cho chúng ta biết đây là một tập dữ liệu có kích thước trung bình, với 10 quan sát (observation) và 168 biến (variable). Việc biết kích thước giúp ước lượng độ phức tạp và tài nguyên cần thiết cho các bước xử lý sau này.

– Kinh tế: Về mặt kinh tế, 168 cột tương ứng với 168 chỉ tiêu tài chính khác nhau, cho thấy mức độ chi tiết và toàn diện của bộ báo cáo tài chính này. 11 dòng bao gồm 1 dòng định danh (tên chỉ tiêu) và 10 dòng giá trị tương ứng với 10 năm dữ liệu tài chính.

9.2 Liệt kê tên các dữ liệu đã chọn

selected_columns <- c(
  "Năm",
  "Lợi nhuận kế toán trước thuế",
  "Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại)",
  "Dự phòng (hoàn nhập các khoản dự phòng)",
  "Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ",
  "Lãi từ hoạt động đầu tư",
  "Chi phí lãi vay",
  "Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động",
  "Giảm các khoản phải thu",
  "(Tăng) giảm hàng tồn kho",
  "Tăng (giảm) các khoản phải trả",
  "Giảm chi phí trả trước",
  "Tiền lãi vay đã trả",
  "Thuế thu nhập doanh nghiệp đã nộp",
  "Lưu chuyển tiền thuần từ hoạt động kinh doanh",
  "Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác",
  "Tiền thu do thanh lý, nhượng bán TSCĐ",
  "Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn",
  "Thu hồi tiền gửi ngân hàng có kỳ hạn",
  "Tiền chi đầu tư góp vốn vào đơn vị khác",
  "Tiền thu lãi từ tiền gửi, cho vay",
  "Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư",
  "Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát",
  "Mua lại cổ phiếu của doanh nghiệp đã phát hành",
  "Tiền thu từ đi vay",
  "Tiền chi trả nợ gốc vay",
  "Cổ tức đã trả",
  "Lưu chuyển tiền thuần từ hoạt động tài chính",
  "Lưu chuyển tiền thuần trong năm",
  "Tiền và tương đương tiền đầu năm",
  "Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ",
  "Tiền và tương đương tiền cuối năm"
)
focused_data <- raw_data %>%
  select(all_of(selected_columns))

9.3 Xem kích thước của bộ dữ liệu đã lọc

dim(focused_data)
## [1] 10 32

Giải thích kỹ thuật:

– Hàm dim() (dimensions) là một hàm cơ bản trong R, dùng để truy xuất kích thước của một đối tượng có cấu trúc dạng bảng (data frame, matrix).

– Kết quả trả về là một vector số nguyên, phần tử đầu tiên là số dòng, phần tử thứ hai là số cột.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Kết quả [10, 32] xác định quy mô chính xác của tập dữ liệu chúng ta sẽ phân tích. Nó gồm 10 quan sát (observations), mỗi quan sát tương ứng với một năm, và 32 biến (variables), bao gồm 1 biến định danh (năm) và 31 biến đo lường (các chỉ tiêu tài chính). Đây là một tập dữ liệu nhỏ nhưng có chiều sâu (nhiều biến), phù hợp cho phân tích chuỗi thời gian.

– Kinh tế: Về mặt kinh tế, chúng ta đang xem xét một giai đoạn kinh doanh kéo dài một thập kỷ (10 năm) của doanh nghiệp, thông qua lăng kính của 31 chỉ số quan trọng nhất về dòng tiền. Cấu trúc này cho phép chúng ta phân tích xu hướng và sự thay đổi trong cách doanh nghiệp tạo ra và sử dụng tiền mặt qua một chu kỳ kinh doanh tương đối dài.

9.4 Liệt kê tên của tất cả các cột đã được chọn

names(focused_data)
##  [1] "Năm"                                                                                
##  [2] "Lợi nhuận kế toán trước thuế"                                                       
##  [3] "Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại)"           
##  [4] "Dự phòng (hoàn nhập các khoản dự phòng)"                                            
##  [5] "Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ"
##  [6] "Lãi từ hoạt động đầu tư"                                                            
##  [7] "Chi phí lãi vay"                                                                    
##  [8] "Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động"                      
##  [9] "Giảm các khoản phải thu"                                                            
## [10] "(Tăng) giảm hàng tồn kho"                                                           
## [11] "Tăng (giảm) các khoản phải trả"                                                     
## [12] "Giảm chi phí trả trước"                                                             
## [13] "Tiền lãi vay đã trả"                                                                
## [14] "Thuế thu nhập doanh nghiệp đã nộp"                                                  
## [15] "Lưu chuyển tiền thuần từ hoạt động kinh doanh"                                      
## [16] "Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác"                     
## [17] "Tiền thu do thanh lý, nhượng bán TSCĐ"                                              
## [18] "Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn"                                   
## [19] "Thu hồi tiền gửi ngân hàng có kỳ hạn"                                               
## [20] "Tiền chi đầu tư góp vốn vào đơn vị khác"                                            
## [21] "Tiền thu lãi từ tiền gửi, cho vay"                                                  
## [22] "Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư"                                 
## [23] "Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát"              
## [24] "Mua lại cổ phiếu của doanh nghiệp đã phát hành"                                     
## [25] "Tiền thu từ đi vay"                                                                 
## [26] "Tiền chi trả nợ gốc vay"                                                            
## [27] "Cổ tức đã trả"                                                                      
## [28] "Lưu chuyển tiền thuần từ hoạt động tài chính"                                       
## [29] "Lưu chuyển tiền thuần trong năm"                                                    
## [30] "Tiền và tương đương tiền đầu năm"                                                   
## [31] "Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ"                            
## [32] "Tiền và tương đương tiền cuối năm"

Giải thích kỹ thuật: Hàm names() trả về một vector chuỗi ký tự (character vector), chứa tên của tất cả các cột trong data frame theo thứ tự.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Cung cấp một danh sách đầy đủ các biến có trong tập dữ liệu. Đây là một bước kiểm tra quan trọng để đảm bảo rằng thao tác select() ở phần trước đã hoạt động chính xác và chúng ta có đúng 31 biến đo lường cùng với biến định danh năm.

– Kinh tế: Danh sách này chính là dòng tiền của chúng ta. Nó bao gồm các chỉ số từ cả ba hoạt động cốt lõi: kinh doanh, đầu tư và tài chính. Việc xem lại danh sách này giúp nhà phân tích hình dung được phạm vi phân tích và các câu chuyện có thể kể từ dữ liệu.

9.5 Xem cấu trúc chi tiết

glimpse(focused_data)
## Rows: 10
## Columns: 32
## $ Năm                                                                                   <int> …
## $ `Lợi nhuận kế toán trước thuế`                                                        <dbl> …
## $ `Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại)`            <dbl> …
## $ `Dự phòng (hoàn nhập các khoản dự phòng)`                                             <dbl> …
## $ `Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ` <dbl> …
## $ `Lãi từ hoạt động đầu tư`                                                             <dbl> …
## $ `Chi phí lãi vay`                                                                     <dbl> …
## $ `Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động`                       <dbl> …
## $ `Giảm các khoản phải thu`                                                             <dbl> …
## $ `(Tăng) giảm hàng tồn kho`                                                            <dbl> …
## $ `Tăng (giảm) các khoản phải trả`                                                      <dbl> …
## $ `Giảm chi phí trả trước`                                                              <dbl> …
## $ `Tiền lãi vay đã trả`                                                                 <dbl> …
## $ `Thuế thu nhập doanh nghiệp đã nộp`                                                   <dbl> …
## $ `Lưu chuyển tiền thuần từ hoạt động kinh doanh`                                       <dbl> …
## $ `Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác`                      <dbl> …
## $ `Tiền thu do thanh lý, nhượng bán TSCĐ`                                               <dbl> …
## $ `Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn`                                    <dbl> …
## $ `Thu hồi tiền gửi ngân hàng có kỳ hạn`                                                <dbl> …
## $ `Tiền chi đầu tư góp vốn vào đơn vị khác`                                             <dbl> …
## $ `Tiền thu lãi từ tiền gửi, cho vay`                                                   <dbl> …
## $ `Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư`                                  <dbl> …
## $ `Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát`               <dbl> …
## $ `Mua lại cổ phiếu của doanh nghiệp đã phát hành`                                      <dbl> …
## $ `Tiền thu từ đi vay`                                                                  <dbl> …
## $ `Tiền chi trả nợ gốc vay`                                                             <dbl> …
## $ `Cổ tức đã trả`                                                                       <dbl> …
## $ `Lưu chuyển tiền thuần từ hoạt động tài chính`                                        <dbl> …
## $ `Lưu chuyển tiền thuần trong năm`                                                     <dbl> …
## $ `Tiền và tương đương tiền đầu năm`                                                    <dbl> …
## $ `Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ`                             <int> …
## $ `Tiền và tương đương tiền cuối năm`                                                   <dbl> …

Giải thích kỹ thuật: glimpse() là một hàm từ gói dplyr, cung cấp một bản tóm tắt theo chiều dọc, hiển thị tên cột, kiểu dữ liệu (, , etc.) và một vài giá trị mẫu. Nó thường dễ đọc hơn hàm str() cơ bản của R.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là bước “chẩn đoán” quan trọng nhất. Kết quả của glimpse sẽ cho chúng ta biết kiểu dữ liệu mà R đang hiểu cho mỗi cột. Rất có thể, các cột chỉ tiêu sẽ là (character) do file CSV gốc. Đây là một “lỗi kiểu dữ liệu” (type mismatch) nghiêm trọng, vì các biến đáng lẽ phải là biến số (numeric) lại đang được coi là biến phân loại (categorical).

– Kinh tế: Nếu các cột chỉ tiêu là , bộ dữ liệu hiện tại không thể được sử dụng để phân tích định lượng. Chúng ta không thể tính tổng, trung bình, hay bất kỳ tỷ lệ nào. Ví dụ, không thể tính xem “Tiền chi trả nợ gốc vay” chiếm bao nhiêu phần trăm “Tiền thu từ đi vay”. Việc phát hiện ra vấn đề này là lý do chính để tiến hành các bước làm sạch ở phần sau.

9.6 Xem toàn bộ dữ liệu của năm 2024 (dòng đầu tiên)

focused_data %>% filter(grepl("2024", Năm)) %>%
format_table()
## Warning: There were 32 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(where(is.numeric), ~number(., big.mark = "."))`.
## Caused by warning in `prettyNum()`:
## ! 'big.mark' and 'decimal.mark' are both '.', which could be confusing
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 31 remaining warnings.
Năm Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm
2.024 4.825.763.013.078 2.913.419.081.483 220.952.651.591 25.689.580.954 -1.729.164.103.487 1.137.236.129.748 7.393.896.353.367 151.205.190.961 -636.927.914.305 3.581.806.724.649 127.788.870.902 -1.141.521.540.734 -958.914.978.098 8.517.332.706.742 -303.747.827.395 54.661.690.191 -52.159.250.994.595 38.289.265.386.964 NA 2.377.309.655.485 -11.743.285.670.418 1.771.634.338.542 -9.141.790.000 74.756.279.079.533 -73.030.338.420.383 -730.957.694.000 2.757.475.513.692 -468.477.449.984 5.365.704.857.172 104.133.542 4.897.331.540.730

Giải thích kỹ thuật:

– Toán tử %>% (pipe) chuyển kết quả của vế bên trái (focused_data) làm đầu vào cho hàm bên phải (filter).

– filter() là hàm của dplyr dùng để lọc các dòng dựa trên một hoặc nhiều điều kiện.

– grepl(“2024”, năm) là một hàm tìm kiếm chuỗi, nó sẽ trả về TRUE cho dòng nào mà cột năm có chứa chuỗi “2024”.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một ví dụ về cách truy vấn và trích xuất một bản ghi (record) hoặc một quan sát cụ thể từ tập dữ liệu.

– Kinh tế: Thao tác này cung cấp một “bức ảnh chụp nhanh” (snapshot) toàn diện về tình hình lưu chuyển tiền tệ của công ty trong năm tài chính gần nhất. Nhà phân tích có thể thấy ngay các con số chính: dòng tiền từ kinh doanh là dương hay âm, công ty đã chi bao nhiêu cho đầu tư, và đã huy động/trả bao nhiêu nợ.

9.7 Xem toàn bộ dữ liệu của năm 2015 (dòng cuối cùng)

focused_data %>% tail(1) %>%
format_table()
## Warning: There were 32 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(where(is.numeric), ~number(., big.mark = "."))`.
## Caused by warning in `prettyNum()`:
## ! 'big.mark' and 'decimal.mark' are both '.', which could be confusing
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 31 remaining warnings.
Năm Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm
10 2.015 1.385.783.787.694 197.056.011.824 32.187.455.819 -138.916.487 -856.415.030 38.893.852.014 1.652.925.775.834 -476.685.311.770 -2.756.191.562.693 1.235.357.266.488 -63.386.564.833 -37.442.521.379 -196.048.457.727 -641.471.376.080 -586.517.897.472 NA NA NA -72.239.580.000 913.660.286 -657.843.817.186 NA -2.153.900.000 8.129.261.915.021 -6.695.006.247.613 -1.834.225.628 1.430.267.541.780 130.952.348.514 212.920.620.191 NA 343.872.968.705

Giải thích kỹ thuật:

– Hàm tail(data, n) được dùng để xem n dòng cuối cùng của bảng dữ liệu.

– tail(focused_data, 1) sẽ lấy ra duy nhất dòng cuối cùng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tương tự head(), tail() là một công cụ để kiểm tra nhanh dữ liệu ở điểm cuối của tập dữ liệu.

– Kinh tế: Cung cấp thông tin về tình hình lưu chuyển tiền tệ tại điểm khởi đầu của giai đoạn phân tích. Bằng cách so sánh dữ liệu năm 2015 (Thao tác 5) và năm 2024 (Thao tác 4), nhà phân tích có thể đưa ra những nhận định sơ bộ đầu tiên về sự thay đổi trong chiến lược tài chính của công ty trong một thập kỷ. Ví dụ: “10 năm trước công ty chủ yếu đi vay để đầu tư, còn bây giờ thì dùng tiền từ hoạt động kinh doanh để trả nợ”.

9.8 Trích xuất chuỗi thời gian của chỉ tiêu “Lưu chuyển tiền thuần từ hoạt động kinh doanh”

focused_data %>%
  select(Năm, `Lưu chuyển tiền thuần từ hoạt động kinh doanh`) %>%
format_table()
## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(where(is.numeric), ~number(., big.mark = "."))`.
## Caused by warning in `prettyNum()`:
## ! 'big.mark' and 'decimal.mark' are both '.', which could be confusing
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
Năm Lưu chuyển tiền thuần từ hoạt động kinh doanh
2.024 8.517.332.706.742
2.023 3.435.827.176.070
2.022 7.976.298.801.645
2.021 171.390.435.922
2.020 10.792.429.218.774
2.019 -1.286.080.778.045
2.018 2.261.134.531.069
2.017 2.663.663.956.855
2.016 -586.481.629.900
2.015 -641.471.376.080

Giải thích kỹ thuật:

– Hàm select() của dplyr được dùng để chọn ra một tập hợp con các cột từ data frame.

– Dấu `` (backticks) là bắt buộc để bao quanh tên cột có chứa khoảng trắng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Thao tác này tạo ra một chuỗi thời gian (time series) đơn biến. Đây là một cấu trúc dữ liệu cơ bản, là đầu vào cho rất nhiều mô hình thống kê và phương pháp trực quan hóa (như biểu đồ đường).

– Kinh tế: Dữ liệu cho thấy một sự cải thiện rõ rệt về khả năng tạo tiền của doanh nghiệp. Công ty đã chuyển từ trạng thái “đốt tiền” (dòng tiền âm) trong giai đoạn đầu (2015, 2016, 2019) sang trạng thái tạo ra dòng tiền dương rất mạnh trong những năm gần đây, đặc biệt là các năm 2020, 2022 và 2024. Mặc dù xu hướng là tích cực, dòng tiền từ hoạt động kinh doanh của công ty thể hiện sự biến động rất lớn qua các năm. Điển hình là sự sụt giảm nghiêm trọng vào năm 2021 so với năm đỉnh cao 2020. Điều này cho thấy hoạt động kinh doanh có thể nhạy cảm với các yếu tố chu kỳ hoặc có rủi ro trong quản lý vốn lưu động. Doanh nghiệp có sức khỏe tài chính cốt lõi ngày càng mạnh mẽ nhưng tiềm ẩn sự bất ổn.

9.9 Xem tóm tắt thống kê của 5 cột chỉ tiêu đầu tiên

summary(focused_data[, 2:6])
##  Lợi nhuận kế toán trước thuế
##  Min.   : 689692367896       
##  1st Qu.:2206763594350       
##  Median :4306040791000       
##  Mean   :3849390562130       
##  3rd Qu.:5320663356690       
##  Max.   :6471583750540       
##  Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại)
##  Min.   : 197056011824                                                   
##  1st Qu.: 823002452403                                                   
##  Median :1819205004990                                                   
##  Mean   :1886045462060                                                   
##  3rd Qu.:2918889976680                                                   
##  Max.   :3540324726290                                                   
##  Dự phòng (hoàn nhập các khoản dự phòng)
##  Min.   :-321799366884                  
##  1st Qu.:  38732256711                  
##  Median :  84463636732                  
##  Mean   :  42430799185                  
##  3rd Qu.: 126054980770                  
##  Max.   : 220952651591                  
##  Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ
##  Min.   : -146653994                                                                
##  1st Qu.: -103140124                                                                
##  Median :  -32017471                                                                
##  Mean   :10996894482                                                                
##  3rd Qu.:  754917023                                                                
##  Max.   :83631272202                                                                
##  Lãi từ hoạt động đầu tư 
##  Min.   :-1729164103490  
##  1st Qu.: -858899472609  
##  Median : -344897203094  
##  Mean   : -556616075427  
##  3rd Qu.:  -47716875876  
##  Max.   :       2261763

Giải thích kỹ thuật:

– focused_data[, 2:6] là cú pháp của R cơ bản để chọn “tất cả các dòng” (phần trước dấu phẩy để trống) và “các cột từ 2 đến 6”.

– summary() là một hàm đa hình, nó sẽ cung cấp bản tóm tắt phù hợp với kiểu dữ liệu của các cột được chọn.

Ý nghĩa thống kê và kinh tế:

– Thống kê: summary() cung cấp các đại lượng thống kê mô tả cơ bản: Min (giá trị nhỏ nhất), Q1 (phân vị thứ 25), Median (trung vị), Mean (trung bình), Q3 (phân vị thứ 75), và Max (giá trị lớn nhất). Các thông số này cho ta biết về khuynh hướng trung tâm (Mean, Median) và độ phân tán (khoảng cách giữa Min và Max, Q1 và Q3) của dữ liệu. Lưu ý quan trọng: Nếu các cột này đang là , kết quả sẽ chỉ có Length và Class, cho thấy chúng không phải là biến số và các thống kê trên không thể được tính toán.

– Kinh tế:

  • Lợi nhuận kế toán trước thuế: Cho thấy lợi nhuận của công ty rất biến động, với sự chênh lệch lớn giữa năm thấp nhất và năm cao nhất.

  • Khấu hao và hao mòn: Là một khoản chi phí phi tiền mặt lớn và tương đối ổn định, phản ánh quy mô tài sản cố định đáng kể của công ty. Đây là một nguồn cộng vào dòng tiền quan trọng.

  • Dự phòng & Lỗ chênh lệch tỷ giá: Cả hai khoản mục này đều có giá trị nhỏ và dao động quanh 0, cho thấy chúng không có ảnh hưởng lớn và nhất quán đến kết quả kinh doanh chung.

  • Lãi từ hoạt động đầu tư: Các giá trị thống kê hầu hết là âm, có nghĩa là công ty thường xuyên có lãi từ hoạt động đầu tư. Khoản lãi này sẽ được loại trừ khi tính dòng tiền từ kinh doanh.

9.10 Tìm năm có “Lưu chuyển tiền thuần trong năm” cao nhất

focused_data %>%
  arrange(desc(`Lưu chuyển tiền thuần trong năm`)) %>%
  select(Năm, `Lưu chuyển tiền thuần trong năm`) %>%
  head(1) %>%
format_table()
## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(where(is.numeric), ~number(., big.mark = "."))`.
## Caused by warning in `prettyNum()`:
## ! 'big.mark' and 'decimal.mark' are both '.', which could be confusing
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
Năm Lưu chuyển tiền thuần trong năm
2.020 4.232.583.706.879

Giải thích kỹ thuật:

– arrange() của dplyr dùng để sắp xếp các dòng của data frame.

– desc() (descending) được dùng bên trong arrange để sắp xếp theo thứ tự giảm dần.

– head(1) lấy ra dòng đầu tiên sau khi đã sắp xếp, tức là dòng có giá trị lớn nhất.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là thao tác tìm giá trị lớn nhất (Maximum) và quan sát tương ứng trong tập dữ liệu.

– Kinh tế: Kết quả cho thấy năm 2020 là “năm hoàng kim” của công ty về mặt tạo ra tiền mặt trong suốt thập kỷ qua. Trong năm này, lượng tiền và tương đương tiền của công ty đã tăng ròng một cách đột biến, lên tới hơn 4,232 tỷ đồng.

9.11 Tìm năm có “Lưu chuyển tiền thuần trong năm” thấp nhất

focused_data %>%
  arrange(`Lưu chuyển tiền thuần trong năm`) %>%
  select(Năm, `Lưu chuyển tiền thuần trong năm`) %>%
  head(1) %>%
format_table()
## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(where(is.numeric), ~number(., big.mark = "."))`.
## Caused by warning in `prettyNum()`:
## ! 'big.mark' and 'decimal.mark' are both '.', which could be confusing
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
Năm Lưu chuyển tiền thuần trong năm
2.021 -3.205.988.289.364

Giải thích kỹ thuật:

  • Tương tự Thao tác 8, nhưng arrange không có desc(), nghĩa là nó sẽ sắp xếp theo thứ tự tăng dần (mặc định).

  • head(1) sẽ lấy ra dòng có giá trị nhỏ nhất.

  • Thao tác này cũng sẽ cho kết quả SAI nếu dữ liệu là dạng văn bản.

Ý nghĩa thống kê và kinh tế:

  • Thống kê: Đây là thao tác tìm giá trị nhỏ nhất (Minimum) và quan sát tương ứng.

  • Kinh tế: Kết quả chỉ ra năm 2021 là năm khó khăn nhất của công ty về mặt dòng tiền trong cả thập kỷ. Lượng tiền và tương đương tiền của công ty đã sụt giảm ròng hơn 3,205 tỷ đồng. ## Kiểm tra giá trị bị thiếu (NA) theo từng cột

colSums(is.na(focused_data))
##                                                                                 Năm 
##                                                                                   0 
##                                                        Lợi nhuận kế toán trước thuế 
##                                                                                   0 
##            Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 
##                                                                                   0 
##                                             Dự phòng (hoàn nhập các khoản dự phòng) 
##                                                                                   0 
## Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 
##                                                                                   0 
##                                                             Lãi từ hoạt động đầu tư 
##                                                                                   0 
##                                                                     Chi phí lãi vay 
##                                                                                   0 
##                       Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 
##                                                                                   0 
##                                                             Giảm các khoản phải thu 
##                                                                                   0 
##                                                            (Tăng) giảm hàng tồn kho 
##                                                                                   0 
##                                                      Tăng (giảm) các khoản phải trả 
##                                                                                   0 
##                                                              Giảm chi phí trả trước 
##                                                                                   0 
##                                                                 Tiền lãi vay đã trả 
##                                                                                   0 
##                                                   Thuế thu nhập doanh nghiệp đã nộp 
##                                                                                   0 
##                                       Lưu chuyển tiền thuần từ hoạt động kinh doanh 
##                                                                                   0 
##                      Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác 
##                                                                                   0 
##                                               Tiền thu do thanh lý, nhượng bán TSCĐ 
##                                                                                   1 
##                                    Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 
##                                                                                   2 
##                                                Thu hồi tiền gửi ngân hàng có kỳ hạn 
##                                                                                   3 
##                                             Tiền chi đầu tư góp vốn vào đơn vị khác 
##                                                                                   5 
##                                                   Tiền thu lãi từ tiền gửi, cho vay 
##                                                                                   0 
##                                  Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư 
##                                                                                   0 
##               Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 
##                                                                                   2 
##                                      Mua lại cổ phiếu của doanh nghiệp đã phát hành 
##                                                                                   1 
##                                                                  Tiền thu từ đi vay 
##                                                                                   0 
##                                                             Tiền chi trả nợ gốc vay 
##                                                                                   0 
##                                                                       Cổ tức đã trả 
##                                                                                   0 
##                                        Lưu chuyển tiền thuần từ hoạt động tài chính 
##                                                                                   0 
##                                                     Lưu chuyển tiền thuần trong năm 
##                                                                                   0 
##                                                    Tiền và tương đương tiền đầu năm 
##                                                                                   0 
##                             Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 
##                                                                                   1 
##                                                   Tiền và tương đương tiền cuối năm 
##                                                                                   0

Giải thích kỹ thuật:

– is.na(focused_data) tạo ra một bảng dữ liệu logic (TRUE/FALSE) có cùng kích thước.

– colSums() là một hàm hiệu quả, nó tính tổng các giá trị trong mỗi cột. Khi áp dụng trên một bảng logic, nó sẽ đếm số lượng giá trị TRUE trong từng cột.

Ý nghĩa thống kê và kinh tế: Một số chỉ tiêu, đặc biệt là trong phần Hoạt động Đầu tư và Hoạt động Tài chính, có các giá trị lớn hơn 0 (ví dụ: Tiền chi đầu tư góp vốn vào đơn vị khác bị thiếu 5 năm, Thu hồi tiền gửi thiếu 3 năm).

– Thống kê: Đây là một trường hợp của “dữ liệu bị thiếu” (missing data). Nếu chúng ta thực hiện các phép tính như mean() (tính trung bình) trên các cột này, kết quả mặc định sẽ là NA. Điều này đòi hỏi chúng ta phải có một bước xử lý ở phần sau

– Kinh tế: Đây là một phát hiện cực kỳ thực tế. Trong báo cáo tài chính, nếu một hoạt động không phát sinh trong một năm nào đó, công ty có thể sẽ để trống chỉ tiêu đó thay vì ghi số 0. Ví dụ: Kết quả cho thấy chỉ tiêu “Tiền chi đầu tư góp vốn vào đơn vị khác” bị thiếu dữ liệu trong 5/10 năm. Điều này có thể hiểu là trong 5 năm đó, công ty không thực hiện bất kỳ hoạt động đầu tư góp vốn nào. Tương tự, “Tiền thu do thanh lý, nhượng bán TSCĐ” bị thiếu 1 năm, nghĩa là trong năm đó công ty không bán bất kỳ tài sản cố định nào.

10 Xử lý dữ liệu thô, mã hóa dữ liệu

10.1 Chuẩn hóa cột “năm”

data_cleaned <- focused_data %>%
  mutate(Nam = as.integer(str_extract(Năm, "\\d{4}")))
kable(data_cleaned)
Năm Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm Nam
2024 4825763013078 2913419081483 220952651591 25689580954 -1729164103487 1137236129748 7393896353367 151205190961 -636927914305 3581806724649 127788870902 -1141521540734 -958914978098 8517332706742 -303747827395 54661690191 -52159250994595 38289265386964 NA 2377309655485 -11743285670418 1771634338542 -9141790000 74756279079533 -73030338420383 -730957694000 2757475513692 -468477449984 5365704857172 104133542 4897331540730 2024
2023 689692367896 3351314267883 -165930068132 83631272202 -1509203341265 1447718354797 3897222853381 672440536688 4169031757473 -3136706601092 130000103455 -1435731870616 -860429603219 3435827176070 -523383330794 31276790650 -34151374180637 22805115462454 -105597412729 1114378023007 -10831294696942 443220000 -9783280000 70373733043570 -61933329857245 -731280023500 7699783102825 304315581953 5061020547422 368727797 5365704857172 2023
2022 6056355373558 3540324726294 -321799366884 284374414 -348599792355 1362143909103 10288709224130 -588827639446 3791937421033 -2286756979213 -101041271147 -1322381109404 -1805340844308 7976298801645 -4465359523505 5331159526 -20799334065331 25851966071069 -181034840000 1137542621557 1549111423316 192628370000 -5025640000 65251647851081 -73313739286999 -731854815000 -8606343520918 919066704043 4142015762555 -61919176 5061020547422 2022
2021 6471583750543 2920713608410 179550717177 -146653994 -959323580633 674427746189 9286805587692 -827596105467 -9923705315353 3781614904801 -27490477725 -585136035219 -1533102122807 171390435922 -4976876590016 1107020670 -19225219180045 12163993969618 -16385001737 796626468011 -11254869604436 228253030000 -2320000000 63936208247950 -56045130957737 -239519441063 7877490879150 -3205988289364 7347857397925 146653994 4142015762555 2021
2020 5409735407353 2195583071035 58366659387 -36874578 -557627148536 594003821021 7700024935682 850493238036 6269571171518 -1894206905085 -75119169600 -563748612045 -1494585439732 10792429218774 -3911358160002 2018075304 -11512468958904 6512150136986 NA 335398013989 -8574260892627 105200450000 -6040930000 51168161383884 -48573996682152 -678908841000 2014415380732 4232583706879 3115236816468 36874578 7347857397925 2020
2019 5053447204696 1442826938954 90495782206 -27160364 -341194613832 568136717134 6813684868794 -675979882201 -8374797030131 2823942311184 -227805034461 -537997464046 -1092128547184 -1286080778045 -3066921164140 1290807344 -8997466863016 5911392314754 NA 278946264804 -5872761640253 90454820000 -4850060000 45905952301242 -38801961791867 -665093453185 6524501816190 -634340602108 3749550258212 27160364 3115236816468 2019
2018 3786318568918 1222868683717 126083626828 -107059306 -84857279584 436416577674 5486723118247 1246646823981 -4672944194460 1331042865781 126753313780 -427564376510 -829523019750 2261134531069 -1495931919038 1339965525 -85922451739 NA -828166470141 64286835061 -2344394040332 705355067200 -729700000 31893805156672 -31690848740269 -485862426827 421719356776 338459847513 3410983351393 107059306 3749550258212 2018
2017 2809312032646 689713708632 125969042598 911764559 -35336741307 233202340492 3823772147620 -1322949244960 -2796297892101 3970336761157 -96805747662 -223723867627 -690668199572 2663663956855 -2065069567410 180000000 -210280000000 125580000000 NA 29374580928 -2120214986482 92466480000 NA 29465789268692 -27456000269116 -231718927130 1870536552446 2413985522819 996983462012 14366562 3410983351393 2017
2016 2005914114923 386634522356 78431491258 -91382580 2261763 119645695306 2590536703026 -989517728630 -4503949077200 3124564571480 -164867267201 -112394627462 -530854203913 -586481629900 -1278788918537 951588323 NA NA NA 1799386697 -1276037943517 NA -315300000 19961551061988 -17225505287912 -220130282800 2515600191276 653080617859 343872968705 29875448 996983462012 2016
2015 1385783787694 197056011824 32187455819 -138916487 -856415030 38893852014 1652925775834 -476685311770 -2756191562693 1235357266488 -63386564833 -37442521379 -196048457727 -641471376080 -586517897472 NA NA NA -72239580000 913660286 -657843817186 NA -2153900000 8129261915021 -6695006247613 -1834225628 1430267541780 130952348514 212920620191 NA 343872968705 2015

Giải thích kỹ thuật:

– mutate(): Tạo hoặc chỉnh sửa một cột.

– str_extract(năm, “\d{4}”): Là một hàm xử lý chuỗi. Nó tìm trong cột năm (ví dụ: “năm 2024”) một mẫu (pattern) là \d{4} (nghĩa là 4 chữ số liên tiếp) và trích xuất nó ra (“2024”).

– as.integer(): Chuyển đổi chuỗi ký tự vừa trích xuất (“2024”) thành dạng số nguyên (2024).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuyển đổi một biến định danh dạng chữ (character) thành một biến số nguyên (integer). Điều này là bắt buộc để R có thể hiểu được đây là một trục thời gian, cho phép sắp xếp theo thứ tự thời gian và sử dụng làm trục hoành trong các biểu đồ.

– Kinh tế: Chuẩn hóa biến thời gian là bước cơ bản nhất trong phân tích tài chính theo chuỗi thời gian, giúp chúng ta có thể phân tích xu hướng và tốc độ tăng trưởng một cách chính xác.

10.2 Chuyển đổi tất cả các cột chỉ tiêu sang dạng số

data_cleaned <- data_cleaned %>%
mutate(across(.cols = -c(Năm, Nam), .fns = as.numeric))
kable(data_cleaned)
Năm Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm Nam
2024 4825763013078 2913419081483 220952651591 25689580954 -1729164103487 1137236129748 7393896353367 151205190961 -636927914305 3581806724649 127788870902 -1141521540734 -958914978098 8517332706742 -303747827395 54661690191 -52159250994595 38289265386964 NA 2377309655485 -11743285670418 1771634338542 -9141790000 74756279079533 -73030338420383 -730957694000 2757475513692 -468477449984 5365704857172 104133542 4897331540730 2024
2023 689692367896 3351314267883 -165930068132 83631272202 -1509203341265 1447718354797 3897222853381 672440536688 4169031757473 -3136706601092 130000103455 -1435731870616 -860429603219 3435827176070 -523383330794 31276790650 -34151374180637 22805115462454 -105597412729 1114378023007 -10831294696942 443220000 -9783280000 70373733043570 -61933329857245 -731280023500 7699783102825 304315581953 5061020547422 368727797 5365704857172 2023
2022 6056355373558 3540324726294 -321799366884 284374414 -348599792355 1362143909103 10288709224130 -588827639446 3791937421033 -2286756979213 -101041271147 -1322381109404 -1805340844308 7976298801645 -4465359523505 5331159526 -20799334065331 25851966071069 -181034840000 1137542621557 1549111423316 192628370000 -5025640000 65251647851081 -73313739286999 -731854815000 -8606343520918 919066704043 4142015762555 -61919176 5061020547422 2022
2021 6471583750543 2920713608410 179550717177 -146653994 -959323580633 674427746189 9286805587692 -827596105467 -9923705315353 3781614904801 -27490477725 -585136035219 -1533102122807 171390435922 -4976876590016 1107020670 -19225219180045 12163993969618 -16385001737 796626468011 -11254869604436 228253030000 -2320000000 63936208247950 -56045130957737 -239519441063 7877490879150 -3205988289364 7347857397925 146653994 4142015762555 2021
2020 5409735407353 2195583071035 58366659387 -36874578 -557627148536 594003821021 7700024935682 850493238036 6269571171518 -1894206905085 -75119169600 -563748612045 -1494585439732 10792429218774 -3911358160002 2018075304 -11512468958904 6512150136986 NA 335398013989 -8574260892627 105200450000 -6040930000 51168161383884 -48573996682152 -678908841000 2014415380732 4232583706879 3115236816468 36874578 7347857397925 2020
2019 5053447204696 1442826938954 90495782206 -27160364 -341194613832 568136717134 6813684868794 -675979882201 -8374797030131 2823942311184 -227805034461 -537997464046 -1092128547184 -1286080778045 -3066921164140 1290807344 -8997466863016 5911392314754 NA 278946264804 -5872761640253 90454820000 -4850060000 45905952301242 -38801961791867 -665093453185 6524501816190 -634340602108 3749550258212 27160364 3115236816468 2019
2018 3786318568918 1222868683717 126083626828 -107059306 -84857279584 436416577674 5486723118247 1246646823981 -4672944194460 1331042865781 126753313780 -427564376510 -829523019750 2261134531069 -1495931919038 1339965525 -85922451739 NA -828166470141 64286835061 -2344394040332 705355067200 -729700000 31893805156672 -31690848740269 -485862426827 421719356776 338459847513 3410983351393 107059306 3749550258212 2018
2017 2809312032646 689713708632 125969042598 911764559 -35336741307 233202340492 3823772147620 -1322949244960 -2796297892101 3970336761157 -96805747662 -223723867627 -690668199572 2663663956855 -2065069567410 180000000 -210280000000 125580000000 NA 29374580928 -2120214986482 92466480000 NA 29465789268692 -27456000269116 -231718927130 1870536552446 2413985522819 996983462012 14366562 3410983351393 2017
2016 2005914114923 386634522356 78431491258 -91382580 2261763 119645695306 2590536703026 -989517728630 -4503949077200 3124564571480 -164867267201 -112394627462 -530854203913 -586481629900 -1278788918537 951588323 NA NA NA 1799386697 -1276037943517 NA -315300000 19961551061988 -17225505287912 -220130282800 2515600191276 653080617859 343872968705 29875448 996983462012 2016
2015 1385783787694 197056011824 32187455819 -138916487 -856415030 38893852014 1652925775834 -476685311770 -2756191562693 1235357266488 -63386564833 -37442521379 -196048457727 -641471376080 -586517897472 NA NA NA -72239580000 913660286 -657843817186 NA -2153900000 8129261915021 -6695006247613 -1834225628 1430267541780 130952348514 212920620191 NA 343872968705 2015

Giải thích kỹ thuật:

– across(): Là một hàm rất mạnh của dplyr, cho phép áp dụng cùng một hàm lên nhiều cột cùng lúc.

– .cols = -c(năm, Nam): Lựa chọn mục tiêu là “tất cả các cột TRỪ cột năm và cột Nam”.

– .fns = as.numeric: Hàm được áp dụng lên các cột đã chọn là as.numeric, ép kiểu chúng thành dạng số.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là bước chuyển đổi kiểu dữ liệu quan trọng nhất. Nó biến 31 biến character thành 31 biến số (numeric), cho phép thực hiện mọi phép toán thống kê (tính tổng, trung bình, phương sai…).

– Kinh tế: Thao tác này “kích hoạt” toàn bộ dữ liệu tài chính. Từ những con chữ vô tri, chúng ta đã có được những con số thực sự, sẵn sàng để tính toán các tỷ số, phân tích hiệu quả hoạt động và định giá doanh nghiệp.

10.3 Xử lý các giá trị bị thiếu (NA)

data_cleaned <- data_cleaned %>%
  mutate(across(where(is.numeric), ~replace_na(., 0)))
kable(data_cleaned)
Năm Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm Nam
2024 4825763013078 2913419081483 220952651591 25689580954 -1729164103487 1137236129748 7393896353367 151205190961 -636927914305 3581806724649 127788870902 -1141521540734 -958914978098 8517332706742 -303747827395 54661690191 -52159250994595 38289265386964 0 2377309655485 -11743285670418 1771634338542 -9141790000 74756279079533 -73030338420383 -730957694000 2757475513692 -468477449984 5365704857172 104133542 4897331540730 2024
2023 689692367896 3351314267883 -165930068132 83631272202 -1509203341265 1447718354797 3897222853381 672440536688 4169031757473 -3136706601092 130000103455 -1435731870616 -860429603219 3435827176070 -523383330794 31276790650 -34151374180637 22805115462454 -105597412729 1114378023007 -10831294696942 443220000 -9783280000 70373733043570 -61933329857245 -731280023500 7699783102825 304315581953 5061020547422 368727797 5365704857172 2023
2022 6056355373558 3540324726294 -321799366884 284374414 -348599792355 1362143909103 10288709224130 -588827639446 3791937421033 -2286756979213 -101041271147 -1322381109404 -1805340844308 7976298801645 -4465359523505 5331159526 -20799334065331 25851966071069 -181034840000 1137542621557 1549111423316 192628370000 -5025640000 65251647851081 -73313739286999 -731854815000 -8606343520918 919066704043 4142015762555 -61919176 5061020547422 2022
2021 6471583750543 2920713608410 179550717177 -146653994 -959323580633 674427746189 9286805587692 -827596105467 -9923705315353 3781614904801 -27490477725 -585136035219 -1533102122807 171390435922 -4976876590016 1107020670 -19225219180045 12163993969618 -16385001737 796626468011 -11254869604436 228253030000 -2320000000 63936208247950 -56045130957737 -239519441063 7877490879150 -3205988289364 7347857397925 146653994 4142015762555 2021
2020 5409735407353 2195583071035 58366659387 -36874578 -557627148536 594003821021 7700024935682 850493238036 6269571171518 -1894206905085 -75119169600 -563748612045 -1494585439732 10792429218774 -3911358160002 2018075304 -11512468958904 6512150136986 0 335398013989 -8574260892627 105200450000 -6040930000 51168161383884 -48573996682152 -678908841000 2014415380732 4232583706879 3115236816468 36874578 7347857397925 2020
2019 5053447204696 1442826938954 90495782206 -27160364 -341194613832 568136717134 6813684868794 -675979882201 -8374797030131 2823942311184 -227805034461 -537997464046 -1092128547184 -1286080778045 -3066921164140 1290807344 -8997466863016 5911392314754 0 278946264804 -5872761640253 90454820000 -4850060000 45905952301242 -38801961791867 -665093453185 6524501816190 -634340602108 3749550258212 27160364 3115236816468 2019
2018 3786318568918 1222868683717 126083626828 -107059306 -84857279584 436416577674 5486723118247 1246646823981 -4672944194460 1331042865781 126753313780 -427564376510 -829523019750 2261134531069 -1495931919038 1339965525 -85922451739 0 -828166470141 64286835061 -2344394040332 705355067200 -729700000 31893805156672 -31690848740269 -485862426827 421719356776 338459847513 3410983351393 107059306 3749550258212 2018
2017 2809312032646 689713708632 125969042598 911764559 -35336741307 233202340492 3823772147620 -1322949244960 -2796297892101 3970336761157 -96805747662 -223723867627 -690668199572 2663663956855 -2065069567410 180000000 -210280000000 125580000000 0 29374580928 -2120214986482 92466480000 0 29465789268692 -27456000269116 -231718927130 1870536552446 2413985522819 996983462012 14366562 3410983351393 2017
2016 2005914114923 386634522356 78431491258 -91382580 2261763 119645695306 2590536703026 -989517728630 -4503949077200 3124564571480 -164867267201 -112394627462 -530854203913 -586481629900 -1278788918537 951588323 0 0 0 1799386697 -1276037943517 0 -315300000 19961551061988 -17225505287912 -220130282800 2515600191276 653080617859 343872968705 29875448 996983462012 2016
2015 1385783787694 197056011824 32187455819 -138916487 -856415030 38893852014 1652925775834 -476685311770 -2756191562693 1235357266488 -63386564833 -37442521379 -196048457727 -641471376080 -586517897472 0 0 0 -72239580000 913660286 -657843817186 0 -2153900000 8129261915021 -6695006247613 -1834225628 1430267541780 130952348514 212920620191 0 343872968705 2015

Giải thích kỹ thuật:

– where(is.numeric): Là một “selection helper”, giúp across chỉ chọn những cột là dạng số.

– ~replace_na(., 0): Là một công thức ngắn gọn. Dấu ~ báo hiệu một hàm, . đại diện cho cột đang được xử lý. Lệnh này có nghĩa là “với mỗi cột số, hãy thay thế các giá trị NA bằng số 0”.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một kỹ thuật xử lý dữ liệu bị thiếu gọi là thay thế. Việc chọn thay thế bằng 0 là một quyết định dựa trên giả định nghiệp vụ.

– Kinh tế: Như đã phân tích ở phần trước, trong báo cáo tài chính, một ô trống thường có nghĩa là hoạt động đó không phát sinh. Do đó, việc thay thế NA bằng 0 là một giả định hợp lý, giúp dữ liệu trở nên hoàn chỉnh và có thể tính toán được mà không làm sai lệch ý nghĩa kinh tế.

10.4 Loại bỏ cột “Năm” văn bản gốc

data_cleaned <- data_cleaned %>%
  select(-Năm)
kable(data_cleaned)
Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm Nam
4825763013078 2913419081483 220952651591 25689580954 -1729164103487 1137236129748 7393896353367 151205190961 -636927914305 3581806724649 127788870902 -1141521540734 -958914978098 8517332706742 -303747827395 54661690191 -52159250994595 38289265386964 0 2377309655485 -11743285670418 1771634338542 -9141790000 74756279079533 -73030338420383 -730957694000 2757475513692 -468477449984 5365704857172 104133542 4897331540730 2024
689692367896 3351314267883 -165930068132 83631272202 -1509203341265 1447718354797 3897222853381 672440536688 4169031757473 -3136706601092 130000103455 -1435731870616 -860429603219 3435827176070 -523383330794 31276790650 -34151374180637 22805115462454 -105597412729 1114378023007 -10831294696942 443220000 -9783280000 70373733043570 -61933329857245 -731280023500 7699783102825 304315581953 5061020547422 368727797 5365704857172 2023
6056355373558 3540324726294 -321799366884 284374414 -348599792355 1362143909103 10288709224130 -588827639446 3791937421033 -2286756979213 -101041271147 -1322381109404 -1805340844308 7976298801645 -4465359523505 5331159526 -20799334065331 25851966071069 -181034840000 1137542621557 1549111423316 192628370000 -5025640000 65251647851081 -73313739286999 -731854815000 -8606343520918 919066704043 4142015762555 -61919176 5061020547422 2022
6471583750543 2920713608410 179550717177 -146653994 -959323580633 674427746189 9286805587692 -827596105467 -9923705315353 3781614904801 -27490477725 -585136035219 -1533102122807 171390435922 -4976876590016 1107020670 -19225219180045 12163993969618 -16385001737 796626468011 -11254869604436 228253030000 -2320000000 63936208247950 -56045130957737 -239519441063 7877490879150 -3205988289364 7347857397925 146653994 4142015762555 2021
5409735407353 2195583071035 58366659387 -36874578 -557627148536 594003821021 7700024935682 850493238036 6269571171518 -1894206905085 -75119169600 -563748612045 -1494585439732 10792429218774 -3911358160002 2018075304 -11512468958904 6512150136986 0 335398013989 -8574260892627 105200450000 -6040930000 51168161383884 -48573996682152 -678908841000 2014415380732 4232583706879 3115236816468 36874578 7347857397925 2020
5053447204696 1442826938954 90495782206 -27160364 -341194613832 568136717134 6813684868794 -675979882201 -8374797030131 2823942311184 -227805034461 -537997464046 -1092128547184 -1286080778045 -3066921164140 1290807344 -8997466863016 5911392314754 0 278946264804 -5872761640253 90454820000 -4850060000 45905952301242 -38801961791867 -665093453185 6524501816190 -634340602108 3749550258212 27160364 3115236816468 2019
3786318568918 1222868683717 126083626828 -107059306 -84857279584 436416577674 5486723118247 1246646823981 -4672944194460 1331042865781 126753313780 -427564376510 -829523019750 2261134531069 -1495931919038 1339965525 -85922451739 0 -828166470141 64286835061 -2344394040332 705355067200 -729700000 31893805156672 -31690848740269 -485862426827 421719356776 338459847513 3410983351393 107059306 3749550258212 2018
2809312032646 689713708632 125969042598 911764559 -35336741307 233202340492 3823772147620 -1322949244960 -2796297892101 3970336761157 -96805747662 -223723867627 -690668199572 2663663956855 -2065069567410 180000000 -210280000000 125580000000 0 29374580928 -2120214986482 92466480000 0 29465789268692 -27456000269116 -231718927130 1870536552446 2413985522819 996983462012 14366562 3410983351393 2017
2005914114923 386634522356 78431491258 -91382580 2261763 119645695306 2590536703026 -989517728630 -4503949077200 3124564571480 -164867267201 -112394627462 -530854203913 -586481629900 -1278788918537 951588323 0 0 0 1799386697 -1276037943517 0 -315300000 19961551061988 -17225505287912 -220130282800 2515600191276 653080617859 343872968705 29875448 996983462012 2016
1385783787694 197056011824 32187455819 -138916487 -856415030 38893852014 1652925775834 -476685311770 -2756191562693 1235357266488 -63386564833 -37442521379 -196048457727 -641471376080 -586517897472 0 0 0 -72239580000 913660286 -657843817186 0 -2153900000 8129261915021 -6695006247613 -1834225628 1430267541780 130952348514 212920620191 0 343872968705 2015

Giải thích kỹ thuật:

– select(): Dùng để chọn hoặc loại bỏ cột.

– Dấu - trước tên cột có nghĩa là “loại bỏ cột này”.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Là một bước dọn dẹp (tidying), loại bỏ thông tin thừa để data frame trở nên gọn gàng, chỉ chứa những thông tin cần thiết và không trùng lặp.

– Kinh tế: Giúp bảng dữ liệu phân tích trở nên chuyên nghiệp và rõ ràng hơn, chỉ giữ lại cột Nam (số) làm định danh thời gian duy nhất.

10.5 Sắp xếp lại dữ liệu theo năm tăng dần

data_cleaned <- data_cleaned %>%
  arrange(Nam)
kable(data_cleaned)
Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm Nam
1385783787694 197056011824 32187455819 -138916487 -856415030 38893852014 1652925775834 -476685311770 -2756191562693 1235357266488 -63386564833 -37442521379 -196048457727 -641471376080 -586517897472 0 0 0 -72239580000 913660286 -657843817186 0 -2153900000 8129261915021 -6695006247613 -1834225628 1430267541780 130952348514 212920620191 0 343872968705 2015
2005914114923 386634522356 78431491258 -91382580 2261763 119645695306 2590536703026 -989517728630 -4503949077200 3124564571480 -164867267201 -112394627462 -530854203913 -586481629900 -1278788918537 951588323 0 0 0 1799386697 -1276037943517 0 -315300000 19961551061988 -17225505287912 -220130282800 2515600191276 653080617859 343872968705 29875448 996983462012 2016
2809312032646 689713708632 125969042598 911764559 -35336741307 233202340492 3823772147620 -1322949244960 -2796297892101 3970336761157 -96805747662 -223723867627 -690668199572 2663663956855 -2065069567410 180000000 -210280000000 125580000000 0 29374580928 -2120214986482 92466480000 0 29465789268692 -27456000269116 -231718927130 1870536552446 2413985522819 996983462012 14366562 3410983351393 2017
3786318568918 1222868683717 126083626828 -107059306 -84857279584 436416577674 5486723118247 1246646823981 -4672944194460 1331042865781 126753313780 -427564376510 -829523019750 2261134531069 -1495931919038 1339965525 -85922451739 0 -828166470141 64286835061 -2344394040332 705355067200 -729700000 31893805156672 -31690848740269 -485862426827 421719356776 338459847513 3410983351393 107059306 3749550258212 2018
5053447204696 1442826938954 90495782206 -27160364 -341194613832 568136717134 6813684868794 -675979882201 -8374797030131 2823942311184 -227805034461 -537997464046 -1092128547184 -1286080778045 -3066921164140 1290807344 -8997466863016 5911392314754 0 278946264804 -5872761640253 90454820000 -4850060000 45905952301242 -38801961791867 -665093453185 6524501816190 -634340602108 3749550258212 27160364 3115236816468 2019
5409735407353 2195583071035 58366659387 -36874578 -557627148536 594003821021 7700024935682 850493238036 6269571171518 -1894206905085 -75119169600 -563748612045 -1494585439732 10792429218774 -3911358160002 2018075304 -11512468958904 6512150136986 0 335398013989 -8574260892627 105200450000 -6040930000 51168161383884 -48573996682152 -678908841000 2014415380732 4232583706879 3115236816468 36874578 7347857397925 2020
6471583750543 2920713608410 179550717177 -146653994 -959323580633 674427746189 9286805587692 -827596105467 -9923705315353 3781614904801 -27490477725 -585136035219 -1533102122807 171390435922 -4976876590016 1107020670 -19225219180045 12163993969618 -16385001737 796626468011 -11254869604436 228253030000 -2320000000 63936208247950 -56045130957737 -239519441063 7877490879150 -3205988289364 7347857397925 146653994 4142015762555 2021
6056355373558 3540324726294 -321799366884 284374414 -348599792355 1362143909103 10288709224130 -588827639446 3791937421033 -2286756979213 -101041271147 -1322381109404 -1805340844308 7976298801645 -4465359523505 5331159526 -20799334065331 25851966071069 -181034840000 1137542621557 1549111423316 192628370000 -5025640000 65251647851081 -73313739286999 -731854815000 -8606343520918 919066704043 4142015762555 -61919176 5061020547422 2022
689692367896 3351314267883 -165930068132 83631272202 -1509203341265 1447718354797 3897222853381 672440536688 4169031757473 -3136706601092 130000103455 -1435731870616 -860429603219 3435827176070 -523383330794 31276790650 -34151374180637 22805115462454 -105597412729 1114378023007 -10831294696942 443220000 -9783280000 70373733043570 -61933329857245 -731280023500 7699783102825 304315581953 5061020547422 368727797 5365704857172 2023
4825763013078 2913419081483 220952651591 25689580954 -1729164103487 1137236129748 7393896353367 151205190961 -636927914305 3581806724649 127788870902 -1141521540734 -958914978098 8517332706742 -303747827395 54661690191 -52159250994595 38289265386964 0 2377309655485 -11743285670418 1771634338542 -9141790000 74756279079533 -73030338420383 -730957694000 2757475513692 -468477449984 5365704857172 104133542 4897331540730 2024

Giải thích kỹ thuật: arrange(Nam): Sắp xếp lại toàn bộ các dòng của data frame dựa trên giá trị của cột Nam theo thứ tự tăng dần (mặc định).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Thiết lập một trật tự thời gian cho các quan sát. Đây là điều kiện tiên quyết cho các hàm phân tích chuỗi thời gian như lag() (lấy giá trị kỳ trước) hay lead() (lấy giá trị kỳ sau).

– Kinh tế: Đảm bảo rằng khi chúng ta đọc hay vẽ biểu đồ, câu chuyện tài chính của công ty được kể theo đúng trình tự thời gian, từ quá khứ (2015) đến hiện tại (2024).

10.6 Tái cấu trúc dữ liệu từ “rộng” sang “dài”

data_long <- data_cleaned %>%
  pivot_longer(
    cols = -Nam,
    names_to = "ChiTieu",
    values_to = "GiaTri"
  )
kable(data_long)
Nam ChiTieu GiaTri
2015 Lợi nhuận kế toán trước thuế 1385783787694
2015 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 197056011824
2015 Dự phòng (hoàn nhập các khoản dự phòng) 32187455819
2015 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -138916487
2015 Lãi từ hoạt động đầu tư -856415030
2015 Chi phí lãi vay 38893852014
2015 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 1652925775834
2015 Giảm các khoản phải thu -476685311770
2015 (Tăng) giảm hàng tồn kho -2756191562693
2015 Tăng (giảm) các khoản phải trả 1235357266488
2015 Giảm chi phí trả trước -63386564833
2015 Tiền lãi vay đã trả -37442521379
2015 Thuế thu nhập doanh nghiệp đã nộp -196048457727
2015 Lưu chuyển tiền thuần từ hoạt động kinh doanh -641471376080
2015 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -586517897472
2015 Tiền thu do thanh lý, nhượng bán TSCĐ 0
2015 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0
2015 Thu hồi tiền gửi ngân hàng có kỳ hạn 0
2015 Tiền chi đầu tư góp vốn vào đơn vị khác -72239580000
2015 Tiền thu lãi từ tiền gửi, cho vay 913660286
2015 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -657843817186
2015 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0
2015 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2153900000
2015 Tiền thu từ đi vay 8129261915021
2015 Tiền chi trả nợ gốc vay -6695006247613
2015 Cổ tức đã trả -1834225628
2015 Lưu chuyển tiền thuần từ hoạt động tài chính 1430267541780
2015 Lưu chuyển tiền thuần trong năm 130952348514
2015 Tiền và tương đương tiền đầu năm 212920620191
2015 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 0
2015 Tiền và tương đương tiền cuối năm 343872968705
2016 Lợi nhuận kế toán trước thuế 2005914114923
2016 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 386634522356
2016 Dự phòng (hoàn nhập các khoản dự phòng) 78431491258
2016 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -91382580
2016 Lãi từ hoạt động đầu tư 2261763
2016 Chi phí lãi vay 119645695306
2016 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 2590536703026
2016 Giảm các khoản phải thu -989517728630
2016 (Tăng) giảm hàng tồn kho -4503949077200
2016 Tăng (giảm) các khoản phải trả 3124564571480
2016 Giảm chi phí trả trước -164867267201
2016 Tiền lãi vay đã trả -112394627462
2016 Thuế thu nhập doanh nghiệp đã nộp -530854203913
2016 Lưu chuyển tiền thuần từ hoạt động kinh doanh -586481629900
2016 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -1278788918537
2016 Tiền thu do thanh lý, nhượng bán TSCĐ 951588323
2016 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0
2016 Thu hồi tiền gửi ngân hàng có kỳ hạn 0
2016 Tiền chi đầu tư góp vốn vào đơn vị khác 0
2016 Tiền thu lãi từ tiền gửi, cho vay 1799386697
2016 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -1276037943517
2016 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0
2016 Mua lại cổ phiếu của doanh nghiệp đã phát hành -315300000
2016 Tiền thu từ đi vay 19961551061988
2016 Tiền chi trả nợ gốc vay -17225505287912
2016 Cổ tức đã trả -220130282800
2016 Lưu chuyển tiền thuần từ hoạt động tài chính 2515600191276
2016 Lưu chuyển tiền thuần trong năm 653080617859
2016 Tiền và tương đương tiền đầu năm 343872968705
2016 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 29875448
2016 Tiền và tương đương tiền cuối năm 996983462012
2017 Lợi nhuận kế toán trước thuế 2809312032646
2017 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 689713708632
2017 Dự phòng (hoàn nhập các khoản dự phòng) 125969042598
2017 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 911764559
2017 Lãi từ hoạt động đầu tư -35336741307
2017 Chi phí lãi vay 233202340492
2017 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 3823772147620
2017 Giảm các khoản phải thu -1322949244960
2017 (Tăng) giảm hàng tồn kho -2796297892101
2017 Tăng (giảm) các khoản phải trả 3970336761157
2017 Giảm chi phí trả trước -96805747662
2017 Tiền lãi vay đã trả -223723867627
2017 Thuế thu nhập doanh nghiệp đã nộp -690668199572
2017 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2663663956855
2017 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -2065069567410
2017 Tiền thu do thanh lý, nhượng bán TSCĐ 180000000
2017 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -210280000000
2017 Thu hồi tiền gửi ngân hàng có kỳ hạn 125580000000
2017 Tiền chi đầu tư góp vốn vào đơn vị khác 0
2017 Tiền thu lãi từ tiền gửi, cho vay 29374580928
2017 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2120214986482
2017 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 92466480000
2017 Mua lại cổ phiếu của doanh nghiệp đã phát hành 0
2017 Tiền thu từ đi vay 29465789268692
2017 Tiền chi trả nợ gốc vay -27456000269116
2017 Cổ tức đã trả -231718927130
2017 Lưu chuyển tiền thuần từ hoạt động tài chính 1870536552446
2017 Lưu chuyển tiền thuần trong năm 2413985522819
2017 Tiền và tương đương tiền đầu năm 996983462012
2017 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 14366562
2017 Tiền và tương đương tiền cuối năm 3410983351393
2018 Lợi nhuận kế toán trước thuế 3786318568918
2018 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 1222868683717
2018 Dự phòng (hoàn nhập các khoản dự phòng) 126083626828
2018 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -107059306
2018 Lãi từ hoạt động đầu tư -84857279584
2018 Chi phí lãi vay 436416577674
2018 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 5486723118247
2018 Giảm các khoản phải thu 1246646823981
2018 (Tăng) giảm hàng tồn kho -4672944194460
2018 Tăng (giảm) các khoản phải trả 1331042865781
2018 Giảm chi phí trả trước 126753313780
2018 Tiền lãi vay đã trả -427564376510
2018 Thuế thu nhập doanh nghiệp đã nộp -829523019750
2018 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2261134531069
2018 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -1495931919038
2018 Tiền thu do thanh lý, nhượng bán TSCĐ 1339965525
2018 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -85922451739
2018 Thu hồi tiền gửi ngân hàng có kỳ hạn 0
2018 Tiền chi đầu tư góp vốn vào đơn vị khác -828166470141
2018 Tiền thu lãi từ tiền gửi, cho vay 64286835061
2018 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2344394040332
2018 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 705355067200
2018 Mua lại cổ phiếu của doanh nghiệp đã phát hành -729700000
2018 Tiền thu từ đi vay 31893805156672
2018 Tiền chi trả nợ gốc vay -31690848740269
2018 Cổ tức đã trả -485862426827
2018 Lưu chuyển tiền thuần từ hoạt động tài chính 421719356776
2018 Lưu chuyển tiền thuần trong năm 338459847513
2018 Tiền và tương đương tiền đầu năm 3410983351393
2018 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 107059306
2018 Tiền và tương đương tiền cuối năm 3749550258212
2019 Lợi nhuận kế toán trước thuế 5053447204696
2019 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 1442826938954
2019 Dự phòng (hoàn nhập các khoản dự phòng) 90495782206
2019 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -27160364
2019 Lãi từ hoạt động đầu tư -341194613832
2019 Chi phí lãi vay 568136717134
2019 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 6813684868794
2019 Giảm các khoản phải thu -675979882201
2019 (Tăng) giảm hàng tồn kho -8374797030131
2019 Tăng (giảm) các khoản phải trả 2823942311184
2019 Giảm chi phí trả trước -227805034461
2019 Tiền lãi vay đã trả -537997464046
2019 Thuế thu nhập doanh nghiệp đã nộp -1092128547184
2019 Lưu chuyển tiền thuần từ hoạt động kinh doanh -1286080778045
2019 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -3066921164140
2019 Tiền thu do thanh lý, nhượng bán TSCĐ 1290807344
2019 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -8997466863016
2019 Thu hồi tiền gửi ngân hàng có kỳ hạn 5911392314754
2019 Tiền chi đầu tư góp vốn vào đơn vị khác 0
2019 Tiền thu lãi từ tiền gửi, cho vay 278946264804
2019 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -5872761640253
2019 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 90454820000
2019 Mua lại cổ phiếu của doanh nghiệp đã phát hành -4850060000
2019 Tiền thu từ đi vay 45905952301242
2019 Tiền chi trả nợ gốc vay -38801961791867
2019 Cổ tức đã trả -665093453185
2019 Lưu chuyển tiền thuần từ hoạt động tài chính 6524501816190
2019 Lưu chuyển tiền thuần trong năm -634340602108
2019 Tiền và tương đương tiền đầu năm 3749550258212
2019 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 27160364
2019 Tiền và tương đương tiền cuối năm 3115236816468
2020 Lợi nhuận kế toán trước thuế 5409735407353
2020 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2195583071035
2020 Dự phòng (hoàn nhập các khoản dự phòng) 58366659387
2020 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -36874578
2020 Lãi từ hoạt động đầu tư -557627148536
2020 Chi phí lãi vay 594003821021
2020 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 7700024935682
2020 Giảm các khoản phải thu 850493238036
2020 (Tăng) giảm hàng tồn kho 6269571171518
2020 Tăng (giảm) các khoản phải trả -1894206905085
2020 Giảm chi phí trả trước -75119169600
2020 Tiền lãi vay đã trả -563748612045
2020 Thuế thu nhập doanh nghiệp đã nộp -1494585439732
2020 Lưu chuyển tiền thuần từ hoạt động kinh doanh 10792429218774
2020 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -3911358160002
2020 Tiền thu do thanh lý, nhượng bán TSCĐ 2018075304
2020 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -11512468958904
2020 Thu hồi tiền gửi ngân hàng có kỳ hạn 6512150136986
2020 Tiền chi đầu tư góp vốn vào đơn vị khác 0
2020 Tiền thu lãi từ tiền gửi, cho vay 335398013989
2020 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -8574260892627
2020 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 105200450000
2020 Mua lại cổ phiếu của doanh nghiệp đã phát hành -6040930000
2020 Tiền thu từ đi vay 51168161383884
2020 Tiền chi trả nợ gốc vay -48573996682152
2020 Cổ tức đã trả -678908841000
2020 Lưu chuyển tiền thuần từ hoạt động tài chính 2014415380732
2020 Lưu chuyển tiền thuần trong năm 4232583706879
2020 Tiền và tương đương tiền đầu năm 3115236816468
2020 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 36874578
2020 Tiền và tương đương tiền cuối năm 7347857397925
2021 Lợi nhuận kế toán trước thuế 6471583750543
2021 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2920713608410
2021 Dự phòng (hoàn nhập các khoản dự phòng) 179550717177
2021 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -146653994
2021 Lãi từ hoạt động đầu tư -959323580633
2021 Chi phí lãi vay 674427746189
2021 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 9286805587692
2021 Giảm các khoản phải thu -827596105467
2021 (Tăng) giảm hàng tồn kho -9923705315353
2021 Tăng (giảm) các khoản phải trả 3781614904801
2021 Giảm chi phí trả trước -27490477725
2021 Tiền lãi vay đã trả -585136035219
2021 Thuế thu nhập doanh nghiệp đã nộp -1533102122807
2021 Lưu chuyển tiền thuần từ hoạt động kinh doanh 171390435922
2021 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -4976876590016
2021 Tiền thu do thanh lý, nhượng bán TSCĐ 1107020670
2021 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -19225219180045
2021 Thu hồi tiền gửi ngân hàng có kỳ hạn 12163993969618
2021 Tiền chi đầu tư góp vốn vào đơn vị khác -16385001737
2021 Tiền thu lãi từ tiền gửi, cho vay 796626468011
2021 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11254869604436
2021 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 228253030000
2021 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2320000000
2021 Tiền thu từ đi vay 63936208247950
2021 Tiền chi trả nợ gốc vay -56045130957737
2021 Cổ tức đã trả -239519441063
2021 Lưu chuyển tiền thuần từ hoạt động tài chính 7877490879150
2021 Lưu chuyển tiền thuần trong năm -3205988289364
2021 Tiền và tương đương tiền đầu năm 7347857397925
2021 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 146653994
2021 Tiền và tương đương tiền cuối năm 4142015762555
2022 Lợi nhuận kế toán trước thuế 6056355373558
2022 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 3540324726294
2022 Dự phòng (hoàn nhập các khoản dự phòng) -321799366884
2022 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 284374414
2022 Lãi từ hoạt động đầu tư -348599792355
2022 Chi phí lãi vay 1362143909103
2022 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 10288709224130
2022 Giảm các khoản phải thu -588827639446
2022 (Tăng) giảm hàng tồn kho 3791937421033
2022 Tăng (giảm) các khoản phải trả -2286756979213
2022 Giảm chi phí trả trước -101041271147
2022 Tiền lãi vay đã trả -1322381109404
2022 Thuế thu nhập doanh nghiệp đã nộp -1805340844308
2022 Lưu chuyển tiền thuần từ hoạt động kinh doanh 7976298801645
2022 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -4465359523505
2022 Tiền thu do thanh lý, nhượng bán TSCĐ 5331159526
2022 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -20799334065331
2022 Thu hồi tiền gửi ngân hàng có kỳ hạn 25851966071069
2022 Tiền chi đầu tư góp vốn vào đơn vị khác -181034840000
2022 Tiền thu lãi từ tiền gửi, cho vay 1137542621557
2022 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư 1549111423316
2022 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 192628370000
2022 Mua lại cổ phiếu của doanh nghiệp đã phát hành -5025640000
2022 Tiền thu từ đi vay 65251647851081
2022 Tiền chi trả nợ gốc vay -73313739286999
2022 Cổ tức đã trả -731854815000
2022 Lưu chuyển tiền thuần từ hoạt động tài chính -8606343520918
2022 Lưu chuyển tiền thuần trong năm 919066704043
2022 Tiền và tương đương tiền đầu năm 4142015762555
2022 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ -61919176
2022 Tiền và tương đương tiền cuối năm 5061020547422
2023 Lợi nhuận kế toán trước thuế 689692367896
2023 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 3351314267883
2023 Dự phòng (hoàn nhập các khoản dự phòng) -165930068132
2023 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 83631272202
2023 Lãi từ hoạt động đầu tư -1509203341265
2023 Chi phí lãi vay 1447718354797
2023 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 3897222853381
2023 Giảm các khoản phải thu 672440536688
2023 (Tăng) giảm hàng tồn kho 4169031757473
2023 Tăng (giảm) các khoản phải trả -3136706601092
2023 Giảm chi phí trả trước 130000103455
2023 Tiền lãi vay đã trả -1435731870616
2023 Thuế thu nhập doanh nghiệp đã nộp -860429603219
2023 Lưu chuyển tiền thuần từ hoạt động kinh doanh 3435827176070
2023 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -523383330794
2023 Tiền thu do thanh lý, nhượng bán TSCĐ 31276790650
2023 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -34151374180637
2023 Thu hồi tiền gửi ngân hàng có kỳ hạn 22805115462454
2023 Tiền chi đầu tư góp vốn vào đơn vị khác -105597412729
2023 Tiền thu lãi từ tiền gửi, cho vay 1114378023007
2023 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -10831294696942
2023 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 443220000
2023 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9783280000
2023 Tiền thu từ đi vay 70373733043570
2023 Tiền chi trả nợ gốc vay -61933329857245
2023 Cổ tức đã trả -731280023500
2023 Lưu chuyển tiền thuần từ hoạt động tài chính 7699783102825
2023 Lưu chuyển tiền thuần trong năm 304315581953
2023 Tiền và tương đương tiền đầu năm 5061020547422
2023 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 368727797
2023 Tiền và tương đương tiền cuối năm 5365704857172
2024 Lợi nhuận kế toán trước thuế 4825763013078
2024 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2913419081483
2024 Dự phòng (hoàn nhập các khoản dự phòng) 220952651591
2024 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 25689580954
2024 Lãi từ hoạt động đầu tư -1729164103487
2024 Chi phí lãi vay 1137236129748
2024 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 7393896353367
2024 Giảm các khoản phải thu 151205190961
2024 (Tăng) giảm hàng tồn kho -636927914305
2024 Tăng (giảm) các khoản phải trả 3581806724649
2024 Giảm chi phí trả trước 127788870902
2024 Tiền lãi vay đã trả -1141521540734
2024 Thuế thu nhập doanh nghiệp đã nộp -958914978098
2024 Lưu chuyển tiền thuần từ hoạt động kinh doanh 8517332706742
2024 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -303747827395
2024 Tiền thu do thanh lý, nhượng bán TSCĐ 54661690191
2024 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -52159250994595
2024 Thu hồi tiền gửi ngân hàng có kỳ hạn 38289265386964
2024 Tiền chi đầu tư góp vốn vào đơn vị khác 0
2024 Tiền thu lãi từ tiền gửi, cho vay 2377309655485
2024 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11743285670418
2024 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 1771634338542
2024 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9141790000
2024 Tiền thu từ đi vay 74756279079533
2024 Tiền chi trả nợ gốc vay -73030338420383
2024 Cổ tức đã trả -730957694000
2024 Lưu chuyển tiền thuần từ hoạt động tài chính 2757475513692
2024 Lưu chuyển tiền thuần trong năm -468477449984
2024 Tiền và tương đương tiền đầu năm 5365704857172
2024 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 104133542
2024 Tiền và tương đương tiền cuối năm 4897331540730

Giải thích kỹ thuật: pivot_longer(): Là một hàm tái cấu trúc dữ liệu cơ bản. Nó lấy các cột được chỉ định (tất cả trừ cột Nam), và “xoay” chúng thành 2 cột mới: một cột ChiTieu chứa tên của các cột cũ, và một cột GiaTri chứa các giá trị tương ứng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuyển đổi dữ liệu sang định dạng “Tidy Data”. Trong định dạng này, mỗi hàng là một quan sát duy nhất (một chỉ tiêu, trong một năm). Đây là cấu trúc dữ liệu chuẩn, tối ưu cho việc nhóm (group_by), tổng hợp (summarise) và là đầu vào lý tưởng cho thư viện vẽ đồ thị ggplot2.

– Kinh tế: Cấu trúc này cho phép chúng ta trả lời các câu hỏi phân tích một cách linh hoạt hơn. Ví dụ: “Hãy nhóm tất cả các chỉ tiêu liên quan đến đầu tư và tính tổng theo từng năm” - một việc rất khó làm ở định dạng rộng.

10.7 Tính tổng dòng tiền vào và ra của từng hoạt động

data_long %>%
  filter(grepl("Tiền chi|Tiền thu", ChiTieu)) %>%
  group_by(Nam) %>%
  summarise(TongTienThu = sum(GiaTri[GiaTri > 0]),
            TongTienChi = sum(GiaTri[GiaTri < 0]))
## # A tibble: 10 × 3
##      Nam TongTienThu TongTienChi
##    <int>       <dbl>       <dbl>
##  1  2015     8.13e12    -7.35e12
##  2  2016     2.00e13    -1.85e13
##  3  2017     2.96e13    -2.97e13
##  4  2018     3.27e13    -3.41e13
##  5  2019     4.63e13    -5.09e13
##  6  2020     5.16e13    -6.40e13
##  7  2021     6.50e13    -8.03e13
##  8  2022     6.66e13    -9.88e13
##  9  2023     7.15e13    -9.67e13
## 10  2024     7.90e13    -1.25e14

Giải thích kỹ thuật:

– filter(grepl(“Tiền chi|Tiền thu”, ChiTieu)): Lọc ra các dòng có tên chỉ tiêu chứa “Tiền chi” HOẶC “Tiền thu”.

– group_by(Nam): Nhóm các dòng lại theo từng năm để tính toán riêng cho mỗi năm.

– summarise(): Tạo bảng tóm tắt. sum(GiaTri[GiaTri > 0]) chỉ tính tổng các giá trị dương (thu vào) trong mỗi nhóm. Tương tự cho giá trị âm.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một ví dụ về tổng hợp có điều kiện, cho phép tính toán trên các tập con của dữ liệu trong mỗi nhóm.

– Kinh tế:

  • Tăng trưởng quy mô vượt bậc: Cả tổng tiền thu và tổng tiền chi đều tăng gần 10 lần trong 10 năm, cho thấy quy mô hoạt động (kinh doanh, đầu tư, tài chính) của công ty đã mở rộng một cách ngoạn mục.

  • Chiến lược tăng trưởng “nóng”: Trong những năm gần đây, tổng tiền chi ra luôn lớn hơn đáng kể so với tổng tiền thu về. Điều này phản ánh một chiến lược tăng trưởng mạnh mẽ, chấp nhận thâm hụt dòng tiền để liên tục mở rộng.

  • Rủi ro tiềm ẩn: Việc chi ra nhiều hơn thu vào cho thấy công ty phụ thuộc nhiều vào các nguồn vốn bên ngoài (như vốn vay) để tài trợ cho hoạt động. Điều này tiềm ẩn rủi ro về thanh khoản nếu các nguồn vốn này bị gián đoạn.

10.8 Tính toán Tốc độ Tăng trưởng của “Lưu chuyển tiền thuần từ HĐKD”

cfo_growth <- data_long %>%
  filter(ChiTieu == "Lưu chuyển tiền thuần từ hoạt động kinh doanh") %>%
  mutate(TangTruong_CFO_Pct = (GiaTri / lag(GiaTri) - 1) * 100)
kable(cfo_growth)
Nam ChiTieu GiaTri TangTruong_CFO_Pct
2015 Lưu chuyển tiền thuần từ hoạt động kinh doanh -641471376080 NA
2016 Lưu chuyển tiền thuần từ hoạt động kinh doanh -586481629900 -8.57244
2017 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2663663956855 -554.17688
2018 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2261134531069 -15.11187
2019 Lưu chuyển tiền thuần từ hoạt động kinh doanh -1286080778045 -156.87768
2020 Lưu chuyển tiền thuần từ hoạt động kinh doanh 10792429218774 -939.17196
2021 Lưu chuyển tiền thuần từ hoạt động kinh doanh 171390435922 -98.41194
2022 Lưu chuyển tiền thuần từ hoạt động kinh doanh 7976298801645 4553.87626
2023 Lưu chuyển tiền thuần từ hoạt động kinh doanh 3435827176070 -56.92454
2024 Lưu chuyển tiền thuần từ hoạt động kinh doanh 8517332706742 147.89759

Giải thích kỹ thuật:

– filter(): Lọc ra chuỗi thời gian của chỉ tiêu cần phân tích.

– lag(GiaTri): Là một hàm cửa sổ (window function), nó lấy giá trị của dòng ngay phía trước trong cùng cột GiaTri (tức là giá trị của năm trước đó, vì dữ liệu đã được sắp xếp).

– Công thức (Hiện tại / Quá khứ - 1) * 100 là công thức tính phần trăm tăng trưởng chuẩn.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Thao tác này tạo ra một biến phái sinh mới, là một chuỗi thời gian về tốc độ thay đổi.

– Kinh tế:

  • Sự Bất ổn Cực độ: Thay vì một con đường tăng trưởng ổn định, cột TangTruong_CFO_Pct cho thấy sự biến động dữ dội trong khả năng tạo tiền của công ty. Các con số nhảy vọt từ tăng trưởng âm hàng trăm phần trăm (-554%, -156%, -939%) sang tăng trưởng dương hàng nghìn phần trăm (+4553%).

  • Những “Cú Sốc” Dòng tiền: Năm 2017 và 2020 có tốc độ tăng trưởng âm cực lớn (-554% và -939%). Điều này xảy ra khi CFO chuyển từ âm (năm trước) sang dương (năm hiện tại), phản ánh một sự phục hồi đột biến. Đặc biệt năm 2020 là một cú nhảy vọt phi thường. Năm 2022 ghi nhận mức tăng trưởng dương khổng lồ +4553%. Đây là một cú phục hồi cực kỳ mạnh mẽ sau kết quả yếu kém của năm 2021, cho thấy khả năng xoay chuyển tình thế nhanh chóng của doanh nghiệp.

  • Tín hiệu Tích cực Gần đây: Năm 2024 ghi nhận mức tăng trưởng +147.89%. Đây là một tín hiệu rất tích cực, cho thấy sau một năm chững lại (2023), công ty đã tìm lại được đà tăng trưởng mạnh mẽ cho dòng tiền cốt lõi của mình.

  • Cột tăng trưởng này không cho thấy một sự phát triển bền vững, mà là một chuỗi các cú sốc và phục hồi. Điều này củng cố nhận định rằng mô hình kinh doanh của công ty có khả năng tạo ra dòng tiền rất lớn, nhưng cũng tiềm ẩn rủi ro biến động cao và khó dự đoán.

10.9 Tạo một cờ (flag) cho những năm có dòng tiền từ kinh doanh âm

cfo_status <- data_long %>%
filter(ChiTieu == "Lưu chuyển tiền thuần từ hoạt động kinh doanh") %>%
mutate(CFO_Am = ifelse(GiaTri < 0, TRUE, FALSE))
kable(cfo_status)
Nam ChiTieu GiaTri CFO_Am
2015 Lưu chuyển tiền thuần từ hoạt động kinh doanh -641471376080 TRUE
2016 Lưu chuyển tiền thuần từ hoạt động kinh doanh -586481629900 TRUE
2017 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2663663956855 FALSE
2018 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2261134531069 FALSE
2019 Lưu chuyển tiền thuần từ hoạt động kinh doanh -1286080778045 TRUE
2020 Lưu chuyển tiền thuần từ hoạt động kinh doanh 10792429218774 FALSE
2021 Lưu chuyển tiền thuần từ hoạt động kinh doanh 171390435922 FALSE
2022 Lưu chuyển tiền thuần từ hoạt động kinh doanh 7976298801645 FALSE
2023 Lưu chuyển tiền thuần từ hoạt động kinh doanh 3435827176070 FALSE
2024 Lưu chuyển tiền thuần từ hoạt động kinh doanh 8517332706742 FALSE

Giải thích kỹ thuật: ifelse(condition, value_if_true, value_if_false): Là một hàm logic cơ bản để tạo giá trị mới dựa trên một điều kiện.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là quá trình rời rạc hóa hay phân loại. Chúng ta đã biến một biến số liên tục (GiaTri) thành một biến logic/nhị phân (CFO_Am).

– Kinh tế:

  • Mã hóa Rủi ro: Cột CFO_Am đã mã hóa một thông tin kinh tế cực kỳ quan trọng: những năm công ty “đốt tiền” từ hoạt động kinh doanh cốt lõi. Thay vì phải đọc các con số, giờ đây chúng ta có thể lọc và đếm các năm rủi ro này một cách dễ dàng.

  • Xác định các năm khó khăn: Kết quả cho thấy rõ ràng các năm 2015, 2016, và 2019 là những năm khó khăn nhất, khi hoạt động kinh doanh chính không tạo ra đủ tiền để trang trải chi phí. Đây là những “cờ đỏ” (red flags) mà bất kỳ nhà phân tích nào cũng phải xem xét kỹ lưỡng.

  • Khẳng định sự cải thiện: Việc cột CFO_Am liên tục là FALSE từ năm 2020 trở đi (trừ năm 2019 là một điểm bất thường) cho thấy một sự cải thiện bền vững trong khả năng tạo tiền từ hoạt động kinh doanh của công ty trong giai đoạn gần đây.

10.10 Tính toán Dòng tiền thuần trung bình trong 3 năm gần nhất

net_cash_flow <- data_long %>%
  filter(ChiTieu == "Lưu chuyển tiền thuần trong năm")
net_cash_flow_avg <- net_cash_flow %>%
  mutate(TrungBinhTruot_3Nam = (GiaTri + lag(GiaTri, 1) + lag(GiaTri, 2)) / 3)
kable(net_cash_flow_avg)
Nam ChiTieu GiaTri TrungBinhTruot_3Nam
2015 Lưu chuyển tiền thuần trong năm 130952348514 NA
2016 Lưu chuyển tiền thuần trong năm 653080617859 NA
2017 Lưu chuyển tiền thuần trong năm 2413985522819 1066006163064
2018 Lưu chuyển tiền thuần trong năm 338459847513 1135175329397
2019 Lưu chuyển tiền thuần trong năm -634340602108 706034922741
2020 Lưu chuyển tiền thuần trong năm 4232583706879 1312234317428
2021 Lưu chuyển tiền thuần trong năm -3205988289364 130751605136
2022 Lưu chuyển tiền thuần trong năm 919066704043 648554040519
2023 Lưu chuyển tiền thuần trong năm 304315581953 -660868667789
2024 Lưu chuyển tiền thuần trong năm -468477449984 251634945337

Giải thích kỹ thuật:

– Sử dụng lag() với các độ trễ khác nhau: lag(GiaTri, 1) lấy giá trị năm trước, lag(GiaTri, 2) lấy giá trị 2 năm trước.

– Sau đó tính trung bình cộng của 3 giá trị: hiện tại, năm trước, và 2 năm trước.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một kỹ thuật làm mịn chuỗi thời gian đơn giản, gọi là trung bình trượt. Nó giúp giảm thiểu ảnh hưởng của các biến động ngẫu nhiên, ngắn hạn để làm nổi bật xu hướng dài hạn của dữ liệu.

– Kinh tế:

  • Làm mịn sự biến động: Cột TrungBinhTruot_3Nam giúp “làm phẳng” những biến động sốc của dòng tiền hàng năm. Ví dụ, dù năm 2021 dòng tiền âm nặng (-3,205 tỷ), trung bình trượt 3 năm tại thời điểm đó vẫn dương (~130 tỷ) nhờ kết quả tốt của 2 năm trước. Điều này giúp nhìn ra xu hướng dài hạn thay vì chỉ tập trung vào các sự kiện riêng lẻ.

  • Xác định xu hướng thực: Từ 2017 đến 2020, trung bình trượt luôn dương và có xu hướng tăng, cho thấy về cơ bản công ty đang trong giai đoạn cải thiện khả năng tạo tiền. Sự sụt giảm mạnh của trung bình trượt vào năm 2023 (xuống mức âm) là một tín hiệu cảnh báo quan trọng. Nó cho thấy tác động tiêu cực của năm 2021 và 2019 đã ảnh hưởng sâu sắc đến hiệu suất trung bình dài hạn. Trung bình trượt dương trở lại vào năm 2024 cho thấy có dấu hiệu phục hồi.

  • Chỉ số trung bình trượt cho thấy một câu chuyện rõ ràng hơn: công ty có một giai đoạn cải thiện dòng tiền bền vững (2017-2020), sau đó gặp một cú sốc lớn mà ảnh hưởng của nó kéo dài đến tận năm 2023, và hiện đang có dấu hiệu phục hồi trở lại.

10.11 Mã hóa các chỉ tiêu thành 3 Nhóm Hoạt động chính

data_long <- data_long %>%
  mutate(NhomHoatDong = case_when(
    grepl("kinh doanh", ChiTieu, ignore.case = TRUE) ~ "HĐ Kinh Doanh",
    grepl("đầu tư", ChiTieu, ignore.case = TRUE) ~ "HĐ Đầu Tư",
    grepl("tài chính", ChiTieu, ignore.case = TRUE) ~ "HĐ Tài Chính",
    TRUE ~ "Điều chỉnh / Tổng hợp"
  ))
kable(data_long)
Nam ChiTieu GiaTri NhomHoatDong
2015 Lợi nhuận kế toán trước thuế 1385783787694 Điều chỉnh / Tổng hợp
2015 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 197056011824 Điều chỉnh / Tổng hợp
2015 Dự phòng (hoàn nhập các khoản dự phòng) 32187455819 Điều chỉnh / Tổng hợp
2015 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -138916487 Điều chỉnh / Tổng hợp
2015 Lãi từ hoạt động đầu tư -856415030 HĐ Đầu Tư
2015 Chi phí lãi vay 38893852014 Điều chỉnh / Tổng hợp
2015 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 1652925775834 HĐ Kinh Doanh
2015 Giảm các khoản phải thu -476685311770 Điều chỉnh / Tổng hợp
2015 (Tăng) giảm hàng tồn kho -2756191562693 Điều chỉnh / Tổng hợp
2015 Tăng (giảm) các khoản phải trả 1235357266488 Điều chỉnh / Tổng hợp
2015 Giảm chi phí trả trước -63386564833 Điều chỉnh / Tổng hợp
2015 Tiền lãi vay đã trả -37442521379 Điều chỉnh / Tổng hợp
2015 Thuế thu nhập doanh nghiệp đã nộp -196048457727 Điều chỉnh / Tổng hợp
2015 Lưu chuyển tiền thuần từ hoạt động kinh doanh -641471376080 HĐ Kinh Doanh
2015 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -586517897472 Điều chỉnh / Tổng hợp
2015 Tiền thu do thanh lý, nhượng bán TSCĐ 0 Điều chỉnh / Tổng hợp
2015 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp
2015 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp
2015 Tiền chi đầu tư góp vốn vào đơn vị khác -72239580000 HĐ Đầu Tư
2015 Tiền thu lãi từ tiền gửi, cho vay 913660286 Điều chỉnh / Tổng hợp
2015 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -657843817186 HĐ Đầu Tư
2015 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp
2015 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2153900000 Điều chỉnh / Tổng hợp
2015 Tiền thu từ đi vay 8129261915021 Điều chỉnh / Tổng hợp
2015 Tiền chi trả nợ gốc vay -6695006247613 Điều chỉnh / Tổng hợp
2015 Cổ tức đã trả -1834225628 Điều chỉnh / Tổng hợp
2015 Lưu chuyển tiền thuần từ hoạt động tài chính 1430267541780 HĐ Tài Chính
2015 Lưu chuyển tiền thuần trong năm 130952348514 Điều chỉnh / Tổng hợp
2015 Tiền và tương đương tiền đầu năm 212920620191 Điều chỉnh / Tổng hợp
2015 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 0 Điều chỉnh / Tổng hợp
2015 Tiền và tương đương tiền cuối năm 343872968705 Điều chỉnh / Tổng hợp
2016 Lợi nhuận kế toán trước thuế 2005914114923 Điều chỉnh / Tổng hợp
2016 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 386634522356 Điều chỉnh / Tổng hợp
2016 Dự phòng (hoàn nhập các khoản dự phòng) 78431491258 Điều chỉnh / Tổng hợp
2016 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -91382580 Điều chỉnh / Tổng hợp
2016 Lãi từ hoạt động đầu tư 2261763 HĐ Đầu Tư
2016 Chi phí lãi vay 119645695306 Điều chỉnh / Tổng hợp
2016 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 2590536703026 HĐ Kinh Doanh
2016 Giảm các khoản phải thu -989517728630 Điều chỉnh / Tổng hợp
2016 (Tăng) giảm hàng tồn kho -4503949077200 Điều chỉnh / Tổng hợp
2016 Tăng (giảm) các khoản phải trả 3124564571480 Điều chỉnh / Tổng hợp
2016 Giảm chi phí trả trước -164867267201 Điều chỉnh / Tổng hợp
2016 Tiền lãi vay đã trả -112394627462 Điều chỉnh / Tổng hợp
2016 Thuế thu nhập doanh nghiệp đã nộp -530854203913 Điều chỉnh / Tổng hợp
2016 Lưu chuyển tiền thuần từ hoạt động kinh doanh -586481629900 HĐ Kinh Doanh
2016 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -1278788918537 Điều chỉnh / Tổng hợp
2016 Tiền thu do thanh lý, nhượng bán TSCĐ 951588323 Điều chỉnh / Tổng hợp
2016 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp
2016 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp
2016 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư
2016 Tiền thu lãi từ tiền gửi, cho vay 1799386697 Điều chỉnh / Tổng hợp
2016 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -1276037943517 HĐ Đầu Tư
2016 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp
2016 Mua lại cổ phiếu của doanh nghiệp đã phát hành -315300000 Điều chỉnh / Tổng hợp
2016 Tiền thu từ đi vay 19961551061988 Điều chỉnh / Tổng hợp
2016 Tiền chi trả nợ gốc vay -17225505287912 Điều chỉnh / Tổng hợp
2016 Cổ tức đã trả -220130282800 Điều chỉnh / Tổng hợp
2016 Lưu chuyển tiền thuần từ hoạt động tài chính 2515600191276 HĐ Tài Chính
2016 Lưu chuyển tiền thuần trong năm 653080617859 Điều chỉnh / Tổng hợp
2016 Tiền và tương đương tiền đầu năm 343872968705 Điều chỉnh / Tổng hợp
2016 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 29875448 Điều chỉnh / Tổng hợp
2016 Tiền và tương đương tiền cuối năm 996983462012 Điều chỉnh / Tổng hợp
2017 Lợi nhuận kế toán trước thuế 2809312032646 Điều chỉnh / Tổng hợp
2017 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 689713708632 Điều chỉnh / Tổng hợp
2017 Dự phòng (hoàn nhập các khoản dự phòng) 125969042598 Điều chỉnh / Tổng hợp
2017 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 911764559 Điều chỉnh / Tổng hợp
2017 Lãi từ hoạt động đầu tư -35336741307 HĐ Đầu Tư
2017 Chi phí lãi vay 233202340492 Điều chỉnh / Tổng hợp
2017 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 3823772147620 HĐ Kinh Doanh
2017 Giảm các khoản phải thu -1322949244960 Điều chỉnh / Tổng hợp
2017 (Tăng) giảm hàng tồn kho -2796297892101 Điều chỉnh / Tổng hợp
2017 Tăng (giảm) các khoản phải trả 3970336761157 Điều chỉnh / Tổng hợp
2017 Giảm chi phí trả trước -96805747662 Điều chỉnh / Tổng hợp
2017 Tiền lãi vay đã trả -223723867627 Điều chỉnh / Tổng hợp
2017 Thuế thu nhập doanh nghiệp đã nộp -690668199572 Điều chỉnh / Tổng hợp
2017 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2663663956855 HĐ Kinh Doanh
2017 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -2065069567410 Điều chỉnh / Tổng hợp
2017 Tiền thu do thanh lý, nhượng bán TSCĐ 180000000 Điều chỉnh / Tổng hợp
2017 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -210280000000 Điều chỉnh / Tổng hợp
2017 Thu hồi tiền gửi ngân hàng có kỳ hạn 125580000000 Điều chỉnh / Tổng hợp
2017 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư
2017 Tiền thu lãi từ tiền gửi, cho vay 29374580928 Điều chỉnh / Tổng hợp
2017 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2120214986482 HĐ Đầu Tư
2017 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 92466480000 Điều chỉnh / Tổng hợp
2017 Mua lại cổ phiếu của doanh nghiệp đã phát hành 0 Điều chỉnh / Tổng hợp
2017 Tiền thu từ đi vay 29465789268692 Điều chỉnh / Tổng hợp
2017 Tiền chi trả nợ gốc vay -27456000269116 Điều chỉnh / Tổng hợp
2017 Cổ tức đã trả -231718927130 Điều chỉnh / Tổng hợp
2017 Lưu chuyển tiền thuần từ hoạt động tài chính 1870536552446 HĐ Tài Chính
2017 Lưu chuyển tiền thuần trong năm 2413985522819 Điều chỉnh / Tổng hợp
2017 Tiền và tương đương tiền đầu năm 996983462012 Điều chỉnh / Tổng hợp
2017 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 14366562 Điều chỉnh / Tổng hợp
2017 Tiền và tương đương tiền cuối năm 3410983351393 Điều chỉnh / Tổng hợp
2018 Lợi nhuận kế toán trước thuế 3786318568918 Điều chỉnh / Tổng hợp
2018 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 1222868683717 Điều chỉnh / Tổng hợp
2018 Dự phòng (hoàn nhập các khoản dự phòng) 126083626828 Điều chỉnh / Tổng hợp
2018 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -107059306 Điều chỉnh / Tổng hợp
2018 Lãi từ hoạt động đầu tư -84857279584 HĐ Đầu Tư
2018 Chi phí lãi vay 436416577674 Điều chỉnh / Tổng hợp
2018 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 5486723118247 HĐ Kinh Doanh
2018 Giảm các khoản phải thu 1246646823981 Điều chỉnh / Tổng hợp
2018 (Tăng) giảm hàng tồn kho -4672944194460 Điều chỉnh / Tổng hợp
2018 Tăng (giảm) các khoản phải trả 1331042865781 Điều chỉnh / Tổng hợp
2018 Giảm chi phí trả trước 126753313780 Điều chỉnh / Tổng hợp
2018 Tiền lãi vay đã trả -427564376510 Điều chỉnh / Tổng hợp
2018 Thuế thu nhập doanh nghiệp đã nộp -829523019750 Điều chỉnh / Tổng hợp
2018 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2261134531069 HĐ Kinh Doanh
2018 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -1495931919038 Điều chỉnh / Tổng hợp
2018 Tiền thu do thanh lý, nhượng bán TSCĐ 1339965525 Điều chỉnh / Tổng hợp
2018 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -85922451739 Điều chỉnh / Tổng hợp
2018 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp
2018 Tiền chi đầu tư góp vốn vào đơn vị khác -828166470141 HĐ Đầu Tư
2018 Tiền thu lãi từ tiền gửi, cho vay 64286835061 Điều chỉnh / Tổng hợp
2018 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2344394040332 HĐ Đầu Tư
2018 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 705355067200 Điều chỉnh / Tổng hợp
2018 Mua lại cổ phiếu của doanh nghiệp đã phát hành -729700000 Điều chỉnh / Tổng hợp
2018 Tiền thu từ đi vay 31893805156672 Điều chỉnh / Tổng hợp
2018 Tiền chi trả nợ gốc vay -31690848740269 Điều chỉnh / Tổng hợp
2018 Cổ tức đã trả -485862426827 Điều chỉnh / Tổng hợp
2018 Lưu chuyển tiền thuần từ hoạt động tài chính 421719356776 HĐ Tài Chính
2018 Lưu chuyển tiền thuần trong năm 338459847513 Điều chỉnh / Tổng hợp
2018 Tiền và tương đương tiền đầu năm 3410983351393 Điều chỉnh / Tổng hợp
2018 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 107059306 Điều chỉnh / Tổng hợp
2018 Tiền và tương đương tiền cuối năm 3749550258212 Điều chỉnh / Tổng hợp
2019 Lợi nhuận kế toán trước thuế 5053447204696 Điều chỉnh / Tổng hợp
2019 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 1442826938954 Điều chỉnh / Tổng hợp
2019 Dự phòng (hoàn nhập các khoản dự phòng) 90495782206 Điều chỉnh / Tổng hợp
2019 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -27160364 Điều chỉnh / Tổng hợp
2019 Lãi từ hoạt động đầu tư -341194613832 HĐ Đầu Tư
2019 Chi phí lãi vay 568136717134 Điều chỉnh / Tổng hợp
2019 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 6813684868794 HĐ Kinh Doanh
2019 Giảm các khoản phải thu -675979882201 Điều chỉnh / Tổng hợp
2019 (Tăng) giảm hàng tồn kho -8374797030131 Điều chỉnh / Tổng hợp
2019 Tăng (giảm) các khoản phải trả 2823942311184 Điều chỉnh / Tổng hợp
2019 Giảm chi phí trả trước -227805034461 Điều chỉnh / Tổng hợp
2019 Tiền lãi vay đã trả -537997464046 Điều chỉnh / Tổng hợp
2019 Thuế thu nhập doanh nghiệp đã nộp -1092128547184 Điều chỉnh / Tổng hợp
2019 Lưu chuyển tiền thuần từ hoạt động kinh doanh -1286080778045 HĐ Kinh Doanh
2019 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -3066921164140 Điều chỉnh / Tổng hợp
2019 Tiền thu do thanh lý, nhượng bán TSCĐ 1290807344 Điều chỉnh / Tổng hợp
2019 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -8997466863016 Điều chỉnh / Tổng hợp
2019 Thu hồi tiền gửi ngân hàng có kỳ hạn 5911392314754 Điều chỉnh / Tổng hợp
2019 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư
2019 Tiền thu lãi từ tiền gửi, cho vay 278946264804 Điều chỉnh / Tổng hợp
2019 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -5872761640253 HĐ Đầu Tư
2019 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 90454820000 Điều chỉnh / Tổng hợp
2019 Mua lại cổ phiếu của doanh nghiệp đã phát hành -4850060000 Điều chỉnh / Tổng hợp
2019 Tiền thu từ đi vay 45905952301242 Điều chỉnh / Tổng hợp
2019 Tiền chi trả nợ gốc vay -38801961791867 Điều chỉnh / Tổng hợp
2019 Cổ tức đã trả -665093453185 Điều chỉnh / Tổng hợp
2019 Lưu chuyển tiền thuần từ hoạt động tài chính 6524501816190 HĐ Tài Chính
2019 Lưu chuyển tiền thuần trong năm -634340602108 Điều chỉnh / Tổng hợp
2019 Tiền và tương đương tiền đầu năm 3749550258212 Điều chỉnh / Tổng hợp
2019 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 27160364 Điều chỉnh / Tổng hợp
2019 Tiền và tương đương tiền cuối năm 3115236816468 Điều chỉnh / Tổng hợp
2020 Lợi nhuận kế toán trước thuế 5409735407353 Điều chỉnh / Tổng hợp
2020 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2195583071035 Điều chỉnh / Tổng hợp
2020 Dự phòng (hoàn nhập các khoản dự phòng) 58366659387 Điều chỉnh / Tổng hợp
2020 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -36874578 Điều chỉnh / Tổng hợp
2020 Lãi từ hoạt động đầu tư -557627148536 HĐ Đầu Tư
2020 Chi phí lãi vay 594003821021 Điều chỉnh / Tổng hợp
2020 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 7700024935682 HĐ Kinh Doanh
2020 Giảm các khoản phải thu 850493238036 Điều chỉnh / Tổng hợp
2020 (Tăng) giảm hàng tồn kho 6269571171518 Điều chỉnh / Tổng hợp
2020 Tăng (giảm) các khoản phải trả -1894206905085 Điều chỉnh / Tổng hợp
2020 Giảm chi phí trả trước -75119169600 Điều chỉnh / Tổng hợp
2020 Tiền lãi vay đã trả -563748612045 Điều chỉnh / Tổng hợp
2020 Thuế thu nhập doanh nghiệp đã nộp -1494585439732 Điều chỉnh / Tổng hợp
2020 Lưu chuyển tiền thuần từ hoạt động kinh doanh 10792429218774 HĐ Kinh Doanh
2020 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -3911358160002 Điều chỉnh / Tổng hợp
2020 Tiền thu do thanh lý, nhượng bán TSCĐ 2018075304 Điều chỉnh / Tổng hợp
2020 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -11512468958904 Điều chỉnh / Tổng hợp
2020 Thu hồi tiền gửi ngân hàng có kỳ hạn 6512150136986 Điều chỉnh / Tổng hợp
2020 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư
2020 Tiền thu lãi từ tiền gửi, cho vay 335398013989 Điều chỉnh / Tổng hợp
2020 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -8574260892627 HĐ Đầu Tư
2020 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 105200450000 Điều chỉnh / Tổng hợp
2020 Mua lại cổ phiếu của doanh nghiệp đã phát hành -6040930000 Điều chỉnh / Tổng hợp
2020 Tiền thu từ đi vay 51168161383884 Điều chỉnh / Tổng hợp
2020 Tiền chi trả nợ gốc vay -48573996682152 Điều chỉnh / Tổng hợp
2020 Cổ tức đã trả -678908841000 Điều chỉnh / Tổng hợp
2020 Lưu chuyển tiền thuần từ hoạt động tài chính 2014415380732 HĐ Tài Chính
2020 Lưu chuyển tiền thuần trong năm 4232583706879 Điều chỉnh / Tổng hợp
2020 Tiền và tương đương tiền đầu năm 3115236816468 Điều chỉnh / Tổng hợp
2020 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 36874578 Điều chỉnh / Tổng hợp
2020 Tiền và tương đương tiền cuối năm 7347857397925 Điều chỉnh / Tổng hợp
2021 Lợi nhuận kế toán trước thuế 6471583750543 Điều chỉnh / Tổng hợp
2021 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2920713608410 Điều chỉnh / Tổng hợp
2021 Dự phòng (hoàn nhập các khoản dự phòng) 179550717177 Điều chỉnh / Tổng hợp
2021 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -146653994 Điều chỉnh / Tổng hợp
2021 Lãi từ hoạt động đầu tư -959323580633 HĐ Đầu Tư
2021 Chi phí lãi vay 674427746189 Điều chỉnh / Tổng hợp
2021 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 9286805587692 HĐ Kinh Doanh
2021 Giảm các khoản phải thu -827596105467 Điều chỉnh / Tổng hợp
2021 (Tăng) giảm hàng tồn kho -9923705315353 Điều chỉnh / Tổng hợp
2021 Tăng (giảm) các khoản phải trả 3781614904801 Điều chỉnh / Tổng hợp
2021 Giảm chi phí trả trước -27490477725 Điều chỉnh / Tổng hợp
2021 Tiền lãi vay đã trả -585136035219 Điều chỉnh / Tổng hợp
2021 Thuế thu nhập doanh nghiệp đã nộp -1533102122807 Điều chỉnh / Tổng hợp
2021 Lưu chuyển tiền thuần từ hoạt động kinh doanh 171390435922 HĐ Kinh Doanh
2021 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -4976876590016 Điều chỉnh / Tổng hợp
2021 Tiền thu do thanh lý, nhượng bán TSCĐ 1107020670 Điều chỉnh / Tổng hợp
2021 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -19225219180045 Điều chỉnh / Tổng hợp
2021 Thu hồi tiền gửi ngân hàng có kỳ hạn 12163993969618 Điều chỉnh / Tổng hợp
2021 Tiền chi đầu tư góp vốn vào đơn vị khác -16385001737 HĐ Đầu Tư
2021 Tiền thu lãi từ tiền gửi, cho vay 796626468011 Điều chỉnh / Tổng hợp
2021 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11254869604436 HĐ Đầu Tư
2021 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 228253030000 Điều chỉnh / Tổng hợp
2021 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2320000000 Điều chỉnh / Tổng hợp
2021 Tiền thu từ đi vay 63936208247950 Điều chỉnh / Tổng hợp
2021 Tiền chi trả nợ gốc vay -56045130957737 Điều chỉnh / Tổng hợp
2021 Cổ tức đã trả -239519441063 Điều chỉnh / Tổng hợp
2021 Lưu chuyển tiền thuần từ hoạt động tài chính 7877490879150 HĐ Tài Chính
2021 Lưu chuyển tiền thuần trong năm -3205988289364 Điều chỉnh / Tổng hợp
2021 Tiền và tương đương tiền đầu năm 7347857397925 Điều chỉnh / Tổng hợp
2021 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 146653994 Điều chỉnh / Tổng hợp
2021 Tiền và tương đương tiền cuối năm 4142015762555 Điều chỉnh / Tổng hợp
2022 Lợi nhuận kế toán trước thuế 6056355373558 Điều chỉnh / Tổng hợp
2022 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 3540324726294 Điều chỉnh / Tổng hợp
2022 Dự phòng (hoàn nhập các khoản dự phòng) -321799366884 Điều chỉnh / Tổng hợp
2022 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 284374414 Điều chỉnh / Tổng hợp
2022 Lãi từ hoạt động đầu tư -348599792355 HĐ Đầu Tư
2022 Chi phí lãi vay 1362143909103 Điều chỉnh / Tổng hợp
2022 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 10288709224130 HĐ Kinh Doanh
2022 Giảm các khoản phải thu -588827639446 Điều chỉnh / Tổng hợp
2022 (Tăng) giảm hàng tồn kho 3791937421033 Điều chỉnh / Tổng hợp
2022 Tăng (giảm) các khoản phải trả -2286756979213 Điều chỉnh / Tổng hợp
2022 Giảm chi phí trả trước -101041271147 Điều chỉnh / Tổng hợp
2022 Tiền lãi vay đã trả -1322381109404 Điều chỉnh / Tổng hợp
2022 Thuế thu nhập doanh nghiệp đã nộp -1805340844308 Điều chỉnh / Tổng hợp
2022 Lưu chuyển tiền thuần từ hoạt động kinh doanh 7976298801645 HĐ Kinh Doanh
2022 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -4465359523505 Điều chỉnh / Tổng hợp
2022 Tiền thu do thanh lý, nhượng bán TSCĐ 5331159526 Điều chỉnh / Tổng hợp
2022 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -20799334065331 Điều chỉnh / Tổng hợp
2022 Thu hồi tiền gửi ngân hàng có kỳ hạn 25851966071069 Điều chỉnh / Tổng hợp
2022 Tiền chi đầu tư góp vốn vào đơn vị khác -181034840000 HĐ Đầu Tư
2022 Tiền thu lãi từ tiền gửi, cho vay 1137542621557 Điều chỉnh / Tổng hợp
2022 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư 1549111423316 HĐ Đầu Tư
2022 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 192628370000 Điều chỉnh / Tổng hợp
2022 Mua lại cổ phiếu của doanh nghiệp đã phát hành -5025640000 Điều chỉnh / Tổng hợp
2022 Tiền thu từ đi vay 65251647851081 Điều chỉnh / Tổng hợp
2022 Tiền chi trả nợ gốc vay -73313739286999 Điều chỉnh / Tổng hợp
2022 Cổ tức đã trả -731854815000 Điều chỉnh / Tổng hợp
2022 Lưu chuyển tiền thuần từ hoạt động tài chính -8606343520918 HĐ Tài Chính
2022 Lưu chuyển tiền thuần trong năm 919066704043 Điều chỉnh / Tổng hợp
2022 Tiền và tương đương tiền đầu năm 4142015762555 Điều chỉnh / Tổng hợp
2022 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ -61919176 Điều chỉnh / Tổng hợp
2022 Tiền và tương đương tiền cuối năm 5061020547422 Điều chỉnh / Tổng hợp
2023 Lợi nhuận kế toán trước thuế 689692367896 Điều chỉnh / Tổng hợp
2023 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 3351314267883 Điều chỉnh / Tổng hợp
2023 Dự phòng (hoàn nhập các khoản dự phòng) -165930068132 Điều chỉnh / Tổng hợp
2023 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 83631272202 Điều chỉnh / Tổng hợp
2023 Lãi từ hoạt động đầu tư -1509203341265 HĐ Đầu Tư
2023 Chi phí lãi vay 1447718354797 Điều chỉnh / Tổng hợp
2023 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 3897222853381 HĐ Kinh Doanh
2023 Giảm các khoản phải thu 672440536688 Điều chỉnh / Tổng hợp
2023 (Tăng) giảm hàng tồn kho 4169031757473 Điều chỉnh / Tổng hợp
2023 Tăng (giảm) các khoản phải trả -3136706601092 Điều chỉnh / Tổng hợp
2023 Giảm chi phí trả trước 130000103455 Điều chỉnh / Tổng hợp
2023 Tiền lãi vay đã trả -1435731870616 Điều chỉnh / Tổng hợp
2023 Thuế thu nhập doanh nghiệp đã nộp -860429603219 Điều chỉnh / Tổng hợp
2023 Lưu chuyển tiền thuần từ hoạt động kinh doanh 3435827176070 HĐ Kinh Doanh
2023 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -523383330794 Điều chỉnh / Tổng hợp
2023 Tiền thu do thanh lý, nhượng bán TSCĐ 31276790650 Điều chỉnh / Tổng hợp
2023 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -34151374180637 Điều chỉnh / Tổng hợp
2023 Thu hồi tiền gửi ngân hàng có kỳ hạn 22805115462454 Điều chỉnh / Tổng hợp
2023 Tiền chi đầu tư góp vốn vào đơn vị khác -105597412729 HĐ Đầu Tư
2023 Tiền thu lãi từ tiền gửi, cho vay 1114378023007 Điều chỉnh / Tổng hợp
2023 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -10831294696942 HĐ Đầu Tư
2023 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 443220000 Điều chỉnh / Tổng hợp
2023 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9783280000 Điều chỉnh / Tổng hợp
2023 Tiền thu từ đi vay 70373733043570 Điều chỉnh / Tổng hợp
2023 Tiền chi trả nợ gốc vay -61933329857245 Điều chỉnh / Tổng hợp
2023 Cổ tức đã trả -731280023500 Điều chỉnh / Tổng hợp
2023 Lưu chuyển tiền thuần từ hoạt động tài chính 7699783102825 HĐ Tài Chính
2023 Lưu chuyển tiền thuần trong năm 304315581953 Điều chỉnh / Tổng hợp
2023 Tiền và tương đương tiền đầu năm 5061020547422 Điều chỉnh / Tổng hợp
2023 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 368727797 Điều chỉnh / Tổng hợp
2023 Tiền và tương đương tiền cuối năm 5365704857172 Điều chỉnh / Tổng hợp
2024 Lợi nhuận kế toán trước thuế 4825763013078 Điều chỉnh / Tổng hợp
2024 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2913419081483 Điều chỉnh / Tổng hợp
2024 Dự phòng (hoàn nhập các khoản dự phòng) 220952651591 Điều chỉnh / Tổng hợp
2024 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 25689580954 Điều chỉnh / Tổng hợp
2024 Lãi từ hoạt động đầu tư -1729164103487 HĐ Đầu Tư
2024 Chi phí lãi vay 1137236129748 Điều chỉnh / Tổng hợp
2024 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 7393896353367 HĐ Kinh Doanh
2024 Giảm các khoản phải thu 151205190961 Điều chỉnh / Tổng hợp
2024 (Tăng) giảm hàng tồn kho -636927914305 Điều chỉnh / Tổng hợp
2024 Tăng (giảm) các khoản phải trả 3581806724649 Điều chỉnh / Tổng hợp
2024 Giảm chi phí trả trước 127788870902 Điều chỉnh / Tổng hợp
2024 Tiền lãi vay đã trả -1141521540734 Điều chỉnh / Tổng hợp
2024 Thuế thu nhập doanh nghiệp đã nộp -958914978098 Điều chỉnh / Tổng hợp
2024 Lưu chuyển tiền thuần từ hoạt động kinh doanh 8517332706742 HĐ Kinh Doanh
2024 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -303747827395 Điều chỉnh / Tổng hợp
2024 Tiền thu do thanh lý, nhượng bán TSCĐ 54661690191 Điều chỉnh / Tổng hợp
2024 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -52159250994595 Điều chỉnh / Tổng hợp
2024 Thu hồi tiền gửi ngân hàng có kỳ hạn 38289265386964 Điều chỉnh / Tổng hợp
2024 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư
2024 Tiền thu lãi từ tiền gửi, cho vay 2377309655485 Điều chỉnh / Tổng hợp
2024 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11743285670418 HĐ Đầu Tư
2024 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 1771634338542 Điều chỉnh / Tổng hợp
2024 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9141790000 Điều chỉnh / Tổng hợp
2024 Tiền thu từ đi vay 74756279079533 Điều chỉnh / Tổng hợp
2024 Tiền chi trả nợ gốc vay -73030338420383 Điều chỉnh / Tổng hợp
2024 Cổ tức đã trả -730957694000 Điều chỉnh / Tổng hợp
2024 Lưu chuyển tiền thuần từ hoạt động tài chính 2757475513692 HĐ Tài Chính
2024 Lưu chuyển tiền thuần trong năm -468477449984 Điều chỉnh / Tổng hợp
2024 Tiền và tương đương tiền đầu năm 5365704857172 Điều chỉnh / Tổng hợp
2024 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 104133542 Điều chỉnh / Tổng hợp
2024 Tiền và tương đương tiền cuối năm 4897331540730 Điều chỉnh / Tổng hợp

Giải thích kỹ thuật:

– case_when(): Hoạt động như một chuỗi lệnh if-else lồng nhau, rất dễ đọc. Nó kiểm tra từng điều kiện từ trên xuống.

– grepl(“pattern”, text, ignore.case = TRUE): Tìm kiếm một pattern (ví dụ: “kinh doanh”) trong text (cột ChiTieu). ignore.case = TRUE giúp tìm kiếm không phân biệt chữ hoa/thường.

– TRUE ~ “…”: Điều kiện cuối cùng, nếu không thỏa mãn các điều kiện trên, nó sẽ được gán giá trị này.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một ví dụ điển hình của việc tạo một biến phân loại mới từ một biến văn bản có sẵn. Chúng ta đang phân nhóm 31 chỉ tiêu chi tiết vào 4 nhóm lớn, giúp giảm chiều dữ liệu và tạo điều kiện cho phân tích tổng hợp theo nhóm.

– Kinh tế: Thao tác này có ý nghĩa cực kỳ quan trọng vì nó tái tạo lại cấu trúc logic của Báo cáo Lưu chuyển tiền tệ. Nó cho phép nhà phân tích nhìn vào “bức tranh lớn”: công ty đang tạo tiền từ đâu (kinh doanh) và sử dụng tiền vào việc gì (đầu tư, tài chính), từ đó hiểu được chiến lược tài chính của công ty trong từng giai đoạn.

10.12 Mã hóa các chỉ tiêu thành Dòng tiền “Vào” hoặc “Ra”

data_long <- data_long %>% mutate(LoaiDongTien = case_when( grepl("Tiền thu|Giảm các khoản|Tăng.*phải trả", ChiTieu) ~ "Dòng tiền vào", grepl("Tiền chi|Tăng.*hàng tồn kho|Giảm chi phí", ChiTieu) ~ "Dòng tiền ra", TRUE ~ "Khác" ))
kable(data_long)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2015 Lợi nhuận kế toán trước thuế 1385783787694 Điều chỉnh / Tổng hợp Khác
2015 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 197056011824 Điều chỉnh / Tổng hợp Khác
2015 Dự phòng (hoàn nhập các khoản dự phòng) 32187455819 Điều chỉnh / Tổng hợp Khác
2015 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -138916487 Điều chỉnh / Tổng hợp Khác
2015 Lãi từ hoạt động đầu tư -856415030 HĐ Đầu Tư Khác
2015 Chi phí lãi vay 38893852014 Điều chỉnh / Tổng hợp Khác
2015 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 1652925775834 HĐ Kinh Doanh Khác
2015 Giảm các khoản phải thu -476685311770 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 (Tăng) giảm hàng tồn kho -2756191562693 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Tăng (giảm) các khoản phải trả 1235357266488 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Giảm chi phí trả trước -63386564833 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Tiền lãi vay đã trả -37442521379 Điều chỉnh / Tổng hợp Khác
2015 Thuế thu nhập doanh nghiệp đã nộp -196048457727 Điều chỉnh / Tổng hợp Khác
2015 Lưu chuyển tiền thuần từ hoạt động kinh doanh -641471376080 HĐ Kinh Doanh Khác
2015 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -586517897472 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Tiền thu do thanh lý, nhượng bán TSCĐ 0 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Khác
2015 Tiền chi đầu tư góp vốn vào đơn vị khác -72239580000 HĐ Đầu Tư Dòng tiền ra
2015 Tiền thu lãi từ tiền gửi, cho vay 913660286 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -657843817186 HĐ Đầu Tư Khác
2015 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2153900000 Điều chỉnh / Tổng hợp Khác
2015 Tiền thu từ đi vay 8129261915021 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Tiền chi trả nợ gốc vay -6695006247613 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Cổ tức đã trả -1834225628 Điều chỉnh / Tổng hợp Khác
2015 Lưu chuyển tiền thuần từ hoạt động tài chính 1430267541780 HĐ Tài Chính Khác
2015 Lưu chuyển tiền thuần trong năm 130952348514 Điều chỉnh / Tổng hợp Khác
2015 Tiền và tương đương tiền đầu năm 212920620191 Điều chỉnh / Tổng hợp Khác
2015 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 0 Điều chỉnh / Tổng hợp Khác
2015 Tiền và tương đương tiền cuối năm 343872968705 Điều chỉnh / Tổng hợp Khác
2016 Lợi nhuận kế toán trước thuế 2005914114923 Điều chỉnh / Tổng hợp Khác
2016 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 386634522356 Điều chỉnh / Tổng hợp Khác
2016 Dự phòng (hoàn nhập các khoản dự phòng) 78431491258 Điều chỉnh / Tổng hợp Khác
2016 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -91382580 Điều chỉnh / Tổng hợp Khác
2016 Lãi từ hoạt động đầu tư 2261763 HĐ Đầu Tư Khác
2016 Chi phí lãi vay 119645695306 Điều chỉnh / Tổng hợp Khác
2016 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 2590536703026 HĐ Kinh Doanh Khác
2016 Giảm các khoản phải thu -989517728630 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 (Tăng) giảm hàng tồn kho -4503949077200 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Tăng (giảm) các khoản phải trả 3124564571480 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Giảm chi phí trả trước -164867267201 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Tiền lãi vay đã trả -112394627462 Điều chỉnh / Tổng hợp Khác
2016 Thuế thu nhập doanh nghiệp đã nộp -530854203913 Điều chỉnh / Tổng hợp Khác
2016 Lưu chuyển tiền thuần từ hoạt động kinh doanh -586481629900 HĐ Kinh Doanh Khác
2016 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -1278788918537 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Tiền thu do thanh lý, nhượng bán TSCĐ 951588323 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Khác
2016 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2016 Tiền thu lãi từ tiền gửi, cho vay 1799386697 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -1276037943517 HĐ Đầu Tư Khác
2016 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Mua lại cổ phiếu của doanh nghiệp đã phát hành -315300000 Điều chỉnh / Tổng hợp Khác
2016 Tiền thu từ đi vay 19961551061988 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Tiền chi trả nợ gốc vay -17225505287912 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Cổ tức đã trả -220130282800 Điều chỉnh / Tổng hợp Khác
2016 Lưu chuyển tiền thuần từ hoạt động tài chính 2515600191276 HĐ Tài Chính Khác
2016 Lưu chuyển tiền thuần trong năm 653080617859 Điều chỉnh / Tổng hợp Khác
2016 Tiền và tương đương tiền đầu năm 343872968705 Điều chỉnh / Tổng hợp Khác
2016 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 29875448 Điều chỉnh / Tổng hợp Khác
2016 Tiền và tương đương tiền cuối năm 996983462012 Điều chỉnh / Tổng hợp Khác
2017 Lợi nhuận kế toán trước thuế 2809312032646 Điều chỉnh / Tổng hợp Khác
2017 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 689713708632 Điều chỉnh / Tổng hợp Khác
2017 Dự phòng (hoàn nhập các khoản dự phòng) 125969042598 Điều chỉnh / Tổng hợp Khác
2017 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 911764559 Điều chỉnh / Tổng hợp Khác
2017 Lãi từ hoạt động đầu tư -35336741307 HĐ Đầu Tư Khác
2017 Chi phí lãi vay 233202340492 Điều chỉnh / Tổng hợp Khác
2017 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 3823772147620 HĐ Kinh Doanh Khác
2017 Giảm các khoản phải thu -1322949244960 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 (Tăng) giảm hàng tồn kho -2796297892101 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Tăng (giảm) các khoản phải trả 3970336761157 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Giảm chi phí trả trước -96805747662 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Tiền lãi vay đã trả -223723867627 Điều chỉnh / Tổng hợp Khác
2017 Thuế thu nhập doanh nghiệp đã nộp -690668199572 Điều chỉnh / Tổng hợp Khác
2017 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2663663956855 HĐ Kinh Doanh Khác
2017 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -2065069567410 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Tiền thu do thanh lý, nhượng bán TSCĐ 180000000 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -210280000000 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Thu hồi tiền gửi ngân hàng có kỳ hạn 125580000000 Điều chỉnh / Tổng hợp Khác
2017 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2017 Tiền thu lãi từ tiền gửi, cho vay 29374580928 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2120214986482 HĐ Đầu Tư Khác
2017 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 92466480000 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Mua lại cổ phiếu của doanh nghiệp đã phát hành 0 Điều chỉnh / Tổng hợp Khác
2017 Tiền thu từ đi vay 29465789268692 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Tiền chi trả nợ gốc vay -27456000269116 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Cổ tức đã trả -231718927130 Điều chỉnh / Tổng hợp Khác
2017 Lưu chuyển tiền thuần từ hoạt động tài chính 1870536552446 HĐ Tài Chính Khác
2017 Lưu chuyển tiền thuần trong năm 2413985522819 Điều chỉnh / Tổng hợp Khác
2017 Tiền và tương đương tiền đầu năm 996983462012 Điều chỉnh / Tổng hợp Khác
2017 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 14366562 Điều chỉnh / Tổng hợp Khác
2017 Tiền và tương đương tiền cuối năm 3410983351393 Điều chỉnh / Tổng hợp Khác
2018 Lợi nhuận kế toán trước thuế 3786318568918 Điều chỉnh / Tổng hợp Khác
2018 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 1222868683717 Điều chỉnh / Tổng hợp Khác
2018 Dự phòng (hoàn nhập các khoản dự phòng) 126083626828 Điều chỉnh / Tổng hợp Khác
2018 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -107059306 Điều chỉnh / Tổng hợp Khác
2018 Lãi từ hoạt động đầu tư -84857279584 HĐ Đầu Tư Khác
2018 Chi phí lãi vay 436416577674 Điều chỉnh / Tổng hợp Khác
2018 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 5486723118247 HĐ Kinh Doanh Khác
2018 Giảm các khoản phải thu 1246646823981 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 (Tăng) giảm hàng tồn kho -4672944194460 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Tăng (giảm) các khoản phải trả 1331042865781 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Giảm chi phí trả trước 126753313780 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Tiền lãi vay đã trả -427564376510 Điều chỉnh / Tổng hợp Khác
2018 Thuế thu nhập doanh nghiệp đã nộp -829523019750 Điều chỉnh / Tổng hợp Khác
2018 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2261134531069 HĐ Kinh Doanh Khác
2018 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -1495931919038 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Tiền thu do thanh lý, nhượng bán TSCĐ 1339965525 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -85922451739 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Khác
2018 Tiền chi đầu tư góp vốn vào đơn vị khác -828166470141 HĐ Đầu Tư Dòng tiền ra
2018 Tiền thu lãi từ tiền gửi, cho vay 64286835061 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2344394040332 HĐ Đầu Tư Khác
2018 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 705355067200 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Mua lại cổ phiếu của doanh nghiệp đã phát hành -729700000 Điều chỉnh / Tổng hợp Khác
2018 Tiền thu từ đi vay 31893805156672 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Tiền chi trả nợ gốc vay -31690848740269 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Cổ tức đã trả -485862426827 Điều chỉnh / Tổng hợp Khác
2018 Lưu chuyển tiền thuần từ hoạt động tài chính 421719356776 HĐ Tài Chính Khác
2018 Lưu chuyển tiền thuần trong năm 338459847513 Điều chỉnh / Tổng hợp Khác
2018 Tiền và tương đương tiền đầu năm 3410983351393 Điều chỉnh / Tổng hợp Khác
2018 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 107059306 Điều chỉnh / Tổng hợp Khác
2018 Tiền và tương đương tiền cuối năm 3749550258212 Điều chỉnh / Tổng hợp Khác
2019 Lợi nhuận kế toán trước thuế 5053447204696 Điều chỉnh / Tổng hợp Khác
2019 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 1442826938954 Điều chỉnh / Tổng hợp Khác
2019 Dự phòng (hoàn nhập các khoản dự phòng) 90495782206 Điều chỉnh / Tổng hợp Khác
2019 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -27160364 Điều chỉnh / Tổng hợp Khác
2019 Lãi từ hoạt động đầu tư -341194613832 HĐ Đầu Tư Khác
2019 Chi phí lãi vay 568136717134 Điều chỉnh / Tổng hợp Khác
2019 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 6813684868794 HĐ Kinh Doanh Khác
2019 Giảm các khoản phải thu -675979882201 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 (Tăng) giảm hàng tồn kho -8374797030131 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Tăng (giảm) các khoản phải trả 2823942311184 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Giảm chi phí trả trước -227805034461 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Tiền lãi vay đã trả -537997464046 Điều chỉnh / Tổng hợp Khác
2019 Thuế thu nhập doanh nghiệp đã nộp -1092128547184 Điều chỉnh / Tổng hợp Khác
2019 Lưu chuyển tiền thuần từ hoạt động kinh doanh -1286080778045 HĐ Kinh Doanh Khác
2019 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -3066921164140 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Tiền thu do thanh lý, nhượng bán TSCĐ 1290807344 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -8997466863016 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Thu hồi tiền gửi ngân hàng có kỳ hạn 5911392314754 Điều chỉnh / Tổng hợp Khác
2019 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2019 Tiền thu lãi từ tiền gửi, cho vay 278946264804 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -5872761640253 HĐ Đầu Tư Khác
2019 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 90454820000 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Mua lại cổ phiếu của doanh nghiệp đã phát hành -4850060000 Điều chỉnh / Tổng hợp Khác
2019 Tiền thu từ đi vay 45905952301242 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Tiền chi trả nợ gốc vay -38801961791867 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Cổ tức đã trả -665093453185 Điều chỉnh / Tổng hợp Khác
2019 Lưu chuyển tiền thuần từ hoạt động tài chính 6524501816190 HĐ Tài Chính Khác
2019 Lưu chuyển tiền thuần trong năm -634340602108 Điều chỉnh / Tổng hợp Khác
2019 Tiền và tương đương tiền đầu năm 3749550258212 Điều chỉnh / Tổng hợp Khác
2019 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 27160364 Điều chỉnh / Tổng hợp Khác
2019 Tiền và tương đương tiền cuối năm 3115236816468 Điều chỉnh / Tổng hợp Khác
2020 Lợi nhuận kế toán trước thuế 5409735407353 Điều chỉnh / Tổng hợp Khác
2020 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2195583071035 Điều chỉnh / Tổng hợp Khác
2020 Dự phòng (hoàn nhập các khoản dự phòng) 58366659387 Điều chỉnh / Tổng hợp Khác
2020 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -36874578 Điều chỉnh / Tổng hợp Khác
2020 Lãi từ hoạt động đầu tư -557627148536 HĐ Đầu Tư Khác
2020 Chi phí lãi vay 594003821021 Điều chỉnh / Tổng hợp Khác
2020 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 7700024935682 HĐ Kinh Doanh Khác
2020 Giảm các khoản phải thu 850493238036 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 (Tăng) giảm hàng tồn kho 6269571171518 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Tăng (giảm) các khoản phải trả -1894206905085 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Giảm chi phí trả trước -75119169600 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Tiền lãi vay đã trả -563748612045 Điều chỉnh / Tổng hợp Khác
2020 Thuế thu nhập doanh nghiệp đã nộp -1494585439732 Điều chỉnh / Tổng hợp Khác
2020 Lưu chuyển tiền thuần từ hoạt động kinh doanh 10792429218774 HĐ Kinh Doanh Khác
2020 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -3911358160002 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Tiền thu do thanh lý, nhượng bán TSCĐ 2018075304 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -11512468958904 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Thu hồi tiền gửi ngân hàng có kỳ hạn 6512150136986 Điều chỉnh / Tổng hợp Khác
2020 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2020 Tiền thu lãi từ tiền gửi, cho vay 335398013989 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -8574260892627 HĐ Đầu Tư Khác
2020 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 105200450000 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Mua lại cổ phiếu của doanh nghiệp đã phát hành -6040930000 Điều chỉnh / Tổng hợp Khác
2020 Tiền thu từ đi vay 51168161383884 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Tiền chi trả nợ gốc vay -48573996682152 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Cổ tức đã trả -678908841000 Điều chỉnh / Tổng hợp Khác
2020 Lưu chuyển tiền thuần từ hoạt động tài chính 2014415380732 HĐ Tài Chính Khác
2020 Lưu chuyển tiền thuần trong năm 4232583706879 Điều chỉnh / Tổng hợp Khác
2020 Tiền và tương đương tiền đầu năm 3115236816468 Điều chỉnh / Tổng hợp Khác
2020 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 36874578 Điều chỉnh / Tổng hợp Khác
2020 Tiền và tương đương tiền cuối năm 7347857397925 Điều chỉnh / Tổng hợp Khác
2021 Lợi nhuận kế toán trước thuế 6471583750543 Điều chỉnh / Tổng hợp Khác
2021 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2920713608410 Điều chỉnh / Tổng hợp Khác
2021 Dự phòng (hoàn nhập các khoản dự phòng) 179550717177 Điều chỉnh / Tổng hợp Khác
2021 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -146653994 Điều chỉnh / Tổng hợp Khác
2021 Lãi từ hoạt động đầu tư -959323580633 HĐ Đầu Tư Khác
2021 Chi phí lãi vay 674427746189 Điều chỉnh / Tổng hợp Khác
2021 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 9286805587692 HĐ Kinh Doanh Khác
2021 Giảm các khoản phải thu -827596105467 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 (Tăng) giảm hàng tồn kho -9923705315353 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Tăng (giảm) các khoản phải trả 3781614904801 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Giảm chi phí trả trước -27490477725 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Tiền lãi vay đã trả -585136035219 Điều chỉnh / Tổng hợp Khác
2021 Thuế thu nhập doanh nghiệp đã nộp -1533102122807 Điều chỉnh / Tổng hợp Khác
2021 Lưu chuyển tiền thuần từ hoạt động kinh doanh 171390435922 HĐ Kinh Doanh Khác
2021 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -4976876590016 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Tiền thu do thanh lý, nhượng bán TSCĐ 1107020670 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -19225219180045 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Thu hồi tiền gửi ngân hàng có kỳ hạn 12163993969618 Điều chỉnh / Tổng hợp Khác
2021 Tiền chi đầu tư góp vốn vào đơn vị khác -16385001737 HĐ Đầu Tư Dòng tiền ra
2021 Tiền thu lãi từ tiền gửi, cho vay 796626468011 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11254869604436 HĐ Đầu Tư Khác
2021 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 228253030000 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2320000000 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu từ đi vay 63936208247950 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Tiền chi trả nợ gốc vay -56045130957737 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Cổ tức đã trả -239519441063 Điều chỉnh / Tổng hợp Khác
2021 Lưu chuyển tiền thuần từ hoạt động tài chính 7877490879150 HĐ Tài Chính Khác
2021 Lưu chuyển tiền thuần trong năm -3205988289364 Điều chỉnh / Tổng hợp Khác
2021 Tiền và tương đương tiền đầu năm 7347857397925 Điều chỉnh / Tổng hợp Khác
2021 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 146653994 Điều chỉnh / Tổng hợp Khác
2021 Tiền và tương đương tiền cuối năm 4142015762555 Điều chỉnh / Tổng hợp Khác
2022 Lợi nhuận kế toán trước thuế 6056355373558 Điều chỉnh / Tổng hợp Khác
2022 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 3540324726294 Điều chỉnh / Tổng hợp Khác
2022 Dự phòng (hoàn nhập các khoản dự phòng) -321799366884 Điều chỉnh / Tổng hợp Khác
2022 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 284374414 Điều chỉnh / Tổng hợp Khác
2022 Lãi từ hoạt động đầu tư -348599792355 HĐ Đầu Tư Khác
2022 Chi phí lãi vay 1362143909103 Điều chỉnh / Tổng hợp Khác
2022 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 10288709224130 HĐ Kinh Doanh Khác
2022 Giảm các khoản phải thu -588827639446 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 (Tăng) giảm hàng tồn kho 3791937421033 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Tăng (giảm) các khoản phải trả -2286756979213 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Giảm chi phí trả trước -101041271147 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Tiền lãi vay đã trả -1322381109404 Điều chỉnh / Tổng hợp Khác
2022 Thuế thu nhập doanh nghiệp đã nộp -1805340844308 Điều chỉnh / Tổng hợp Khác
2022 Lưu chuyển tiền thuần từ hoạt động kinh doanh 7976298801645 HĐ Kinh Doanh Khác
2022 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -4465359523505 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Tiền thu do thanh lý, nhượng bán TSCĐ 5331159526 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -20799334065331 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Thu hồi tiền gửi ngân hàng có kỳ hạn 25851966071069 Điều chỉnh / Tổng hợp Khác
2022 Tiền chi đầu tư góp vốn vào đơn vị khác -181034840000 HĐ Đầu Tư Dòng tiền ra
2022 Tiền thu lãi từ tiền gửi, cho vay 1137542621557 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư 1549111423316 HĐ Đầu Tư Khác
2022 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 192628370000 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Mua lại cổ phiếu của doanh nghiệp đã phát hành -5025640000 Điều chỉnh / Tổng hợp Khác
2022 Tiền thu từ đi vay 65251647851081 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Tiền chi trả nợ gốc vay -73313739286999 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Cổ tức đã trả -731854815000 Điều chỉnh / Tổng hợp Khác
2022 Lưu chuyển tiền thuần từ hoạt động tài chính -8606343520918 HĐ Tài Chính Khác
2022 Lưu chuyển tiền thuần trong năm 919066704043 Điều chỉnh / Tổng hợp Khác
2022 Tiền và tương đương tiền đầu năm 4142015762555 Điều chỉnh / Tổng hợp Khác
2022 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ -61919176 Điều chỉnh / Tổng hợp Khác
2022 Tiền và tương đương tiền cuối năm 5061020547422 Điều chỉnh / Tổng hợp Khác
2023 Lợi nhuận kế toán trước thuế 689692367896 Điều chỉnh / Tổng hợp Khác
2023 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 3351314267883 Điều chỉnh / Tổng hợp Khác
2023 Dự phòng (hoàn nhập các khoản dự phòng) -165930068132 Điều chỉnh / Tổng hợp Khác
2023 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 83631272202 Điều chỉnh / Tổng hợp Khác
2023 Lãi từ hoạt động đầu tư -1509203341265 HĐ Đầu Tư Khác
2023 Chi phí lãi vay 1447718354797 Điều chỉnh / Tổng hợp Khác
2023 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 3897222853381 HĐ Kinh Doanh Khác
2023 Giảm các khoản phải thu 672440536688 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 (Tăng) giảm hàng tồn kho 4169031757473 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Tăng (giảm) các khoản phải trả -3136706601092 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Giảm chi phí trả trước 130000103455 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Tiền lãi vay đã trả -1435731870616 Điều chỉnh / Tổng hợp Khác
2023 Thuế thu nhập doanh nghiệp đã nộp -860429603219 Điều chỉnh / Tổng hợp Khác
2023 Lưu chuyển tiền thuần từ hoạt động kinh doanh 3435827176070 HĐ Kinh Doanh Khác
2023 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -523383330794 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Tiền thu do thanh lý, nhượng bán TSCĐ 31276790650 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -34151374180637 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Thu hồi tiền gửi ngân hàng có kỳ hạn 22805115462454 Điều chỉnh / Tổng hợp Khác
2023 Tiền chi đầu tư góp vốn vào đơn vị khác -105597412729 HĐ Đầu Tư Dòng tiền ra
2023 Tiền thu lãi từ tiền gửi, cho vay 1114378023007 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -10831294696942 HĐ Đầu Tư Khác
2023 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 443220000 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9783280000 Điều chỉnh / Tổng hợp Khác
2023 Tiền thu từ đi vay 70373733043570 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Tiền chi trả nợ gốc vay -61933329857245 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Cổ tức đã trả -731280023500 Điều chỉnh / Tổng hợp Khác
2023 Lưu chuyển tiền thuần từ hoạt động tài chính 7699783102825 HĐ Tài Chính Khác
2023 Lưu chuyển tiền thuần trong năm 304315581953 Điều chỉnh / Tổng hợp Khác
2023 Tiền và tương đương tiền đầu năm 5061020547422 Điều chỉnh / Tổng hợp Khác
2023 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 368727797 Điều chỉnh / Tổng hợp Khác
2023 Tiền và tương đương tiền cuối năm 5365704857172 Điều chỉnh / Tổng hợp Khác
2024 Lợi nhuận kế toán trước thuế 4825763013078 Điều chỉnh / Tổng hợp Khác
2024 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2913419081483 Điều chỉnh / Tổng hợp Khác
2024 Dự phòng (hoàn nhập các khoản dự phòng) 220952651591 Điều chỉnh / Tổng hợp Khác
2024 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ 25689580954 Điều chỉnh / Tổng hợp Khác
2024 Lãi từ hoạt động đầu tư -1729164103487 HĐ Đầu Tư Khác
2024 Chi phí lãi vay 1137236129748 Điều chỉnh / Tổng hợp Khác
2024 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 7393896353367 HĐ Kinh Doanh Khác
2024 Giảm các khoản phải thu 151205190961 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 (Tăng) giảm hàng tồn kho -636927914305 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Tăng (giảm) các khoản phải trả 3581806724649 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Giảm chi phí trả trước 127788870902 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Tiền lãi vay đã trả -1141521540734 Điều chỉnh / Tổng hợp Khác
2024 Thuế thu nhập doanh nghiệp đã nộp -958914978098 Điều chỉnh / Tổng hợp Khác
2024 Lưu chuyển tiền thuần từ hoạt động kinh doanh 8517332706742 HĐ Kinh Doanh Khác
2024 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -303747827395 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Tiền thu do thanh lý, nhượng bán TSCĐ 54661690191 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -52159250994595 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Thu hồi tiền gửi ngân hàng có kỳ hạn 38289265386964 Điều chỉnh / Tổng hợp Khác
2024 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2024 Tiền thu lãi từ tiền gửi, cho vay 2377309655485 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11743285670418 HĐ Đầu Tư Khác
2024 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 1771634338542 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9141790000 Điều chỉnh / Tổng hợp Khác
2024 Tiền thu từ đi vay 74756279079533 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Tiền chi trả nợ gốc vay -73030338420383 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Cổ tức đã trả -730957694000 Điều chỉnh / Tổng hợp Khác
2024 Lưu chuyển tiền thuần từ hoạt động tài chính 2757475513692 HĐ Tài Chính Khác
2024 Lưu chuyển tiền thuần trong năm -468477449984 Điều chỉnh / Tổng hợp Khác
2024 Tiền và tương đương tiền đầu năm 5365704857172 Điều chỉnh / Tổng hợp Khác
2024 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 104133542 Điều chỉnh / Tổng hợp Khác
2024 Tiền và tương đương tiền cuối năm 4897331540730 Điều chỉnh / Tổng hợp Khác

Giải thích kỹ thuật:

– Tương tự thao tác trên, nhưng sử dụng các từ khóa cụ thể hơn như “Tiền thu”, “Tiền chi”.

– Tăng.phải trả và Tăng.hàng tồn kho: Đây là biểu thức chính quy (regular expression) đơn giản, .* có nghĩa là “bất kỳ ký tự nào ở giữa”. Nó giúp khớp với cả Tăng (giảm) các khoản phải trả và (Tăng) giảm hàng tồn kho.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo ra một biến phân loại nhị phân mới (“Vào”/“Ra”), giúp đơn giản hóa việc phân tích hướng của các dòng tiền.

– Kinh tế: Việc phân loại này giúp chúng ta dễ dàng tính toán tổng các khoản thu và tổng các khoản chi trong một kỳ báo cáo. Ví dụ, chúng ta có thể nhanh chóng trả lời câu hỏi: “Trong năm 2024, tổng số tiền công ty chi cho hoạt động đầu tư là bao nhiêu?”.

10.13 Tính tổng dòng tiền theo từng Nhóm Hoạt động mỗi năm

summary_by_activity <- data_long %>%
  filter(ChiTieu %in% c("Lưu chuyển tiền thuần từ hoạt động kinh doanh",
                       "Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư",
                       "Lưu chuyển tiền thuần từ hoạt động tài chính")) %>%
  group_by(Nam, NhomHoatDong) %>%
  summarise(TongTien = sum(GiaTri), .groups = 'drop')
kable(summary_by_activity)
Nam NhomHoatDong TongTien
2015 HĐ Kinh Doanh -641471376080
2015 HĐ Tài Chính 1430267541780
2015 HĐ Đầu Tư -657843817186
2016 HĐ Kinh Doanh -586481629900
2016 HĐ Tài Chính 2515600191276
2016 HĐ Đầu Tư -1276037943517
2017 HĐ Kinh Doanh 2663663956855
2017 HĐ Tài Chính 1870536552446
2017 HĐ Đầu Tư -2120214986482
2018 HĐ Kinh Doanh 2261134531069
2018 HĐ Tài Chính 421719356776
2018 HĐ Đầu Tư -2344394040332
2019 HĐ Kinh Doanh -1286080778045
2019 HĐ Tài Chính 6524501816190
2019 HĐ Đầu Tư -5872761640253
2020 HĐ Kinh Doanh 10792429218774
2020 HĐ Tài Chính 2014415380732
2020 HĐ Đầu Tư -8574260892627
2021 HĐ Kinh Doanh 171390435922
2021 HĐ Tài Chính 7877490879150
2021 HĐ Đầu Tư -11254869604436
2022 HĐ Kinh Doanh 7976298801645
2022 HĐ Tài Chính -8606343520918
2022 HĐ Đầu Tư 1549111423316
2023 HĐ Kinh Doanh 3435827176070
2023 HĐ Tài Chính 7699783102825
2023 HĐ Đầu Tư -10831294696942
2024 HĐ Kinh Doanh 8517332706742
2024 HĐ Tài Chính 2757475513692
2024 HĐ Đầu Tư -11743285670418

Giải thích kỹ thuật:

– filter(): Lần này chúng ta chỉ chọn ra 3 chỉ tiêu tổng kết của 3 hoạt động chính.

– group_by(Nam, NhomHoatDong): Nhóm dữ liệu theo cả Nam và NhomHoatDong, tạo ra các “rổ” dữ liệu nhỏ (ví dụ: tất cả dữ liệu của “HĐ Kinh Doanh” trong năm 2024).

– summarise(TongTien = sum(GiaTri)): Tính tổng GiaTri cho mỗi “rổ” dữ liệu đó. .groups = ‘drop’ là một thực hành tốt để bỏ nhóm sau khi tính toán xong.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một ví dụ về tổng hợp dữ liệu. Từ một bảng dữ liệu chi tiết, chúng ta đã tạo ra một bảng tóm tắt cấp cao hơn, làm nổi bật các thông tin chính.

– Kinh tế:

  • Giai đoạn đầu (2015-2016): Mô hình “Lấy tài chính nuôi đầu tư”. HĐ Kinh Doanh âm (đốt tiền), HĐ Đầu Tư âm mạnh (chi tiêu lớn), trong khi HĐ Tài Chính dương mạnh (huy động vốn). Đây là mô hình kinh điển của một công ty trong giai đoạn đầu tư mở rộng. Hoạt động kinh doanh cốt lõi chưa tạo ra tiền, công ty vẫn đang chi mạnh tay cho việc đầu tư tài sản (HĐ Đầu Tư âm). Toàn bộ hoạt động này được tài trợ bằng cách huy động vốn từ bên ngoài (vay nợ, phát hành cổ phiếu - HĐ Tài Chính dương).

  • Giai đoạn hoàng kim (Ví dụ: 2020): Mô hình “Lấy kinh doanh nuôi đầu tư”. HĐ Kinh Doanh dương cực lớn (+10,792 tỷ), HĐ Đầu Tư âm rất mạnh (-8,574 tỷ), và HĐ Tài Chính vẫn dương. Đây là mô hình của một doanh nghiệp “trưởng thành” và đang tăng trưởng. Hoạt động kinh doanh cốt lõi đã trở thành cỗ máy tạo tiền chính, cung cấp nguồn lực khổng lồ để công ty tiếp tục tái đầu tư mạnh mẽ vào tài sản.

  • Giai đoạn gần đây (Ví dụ: 2024): Tăng trưởng quyết liệt. HĐ Kinh Doanh dương mạnh (+8,517 tỷ), nhưng HĐ Đầu Tư âm sâu kỷ lục (-11,743 tỷ), và HĐ Tài Chính dương để bù đắp. Trong năm 2024, công ty đang thực hiện một chiến lược đầu tư cực kỳ quyết liệt. Lượng tiền tạo ra từ hoạt động kinh doanh không đủ để tài trợ cho các tham vọng đầu tư, do đó công ty phải tiếp tục huy động thêm vốn từ các hoạt động tài chính.

  • Bảng tóm tắt này cho thấy một sự chuyển dịch chiến lược rõ ràng. Công ty đã đi từ việc phụ thuộc vào vốn ngoài để tồn tại và đầu tư, sang việc tự tạo ra nguồn tiền khổng lồ từ hoạt động kinh doanh để phục vụ cho các chiến lược đầu tư ngày càng tham vọng hơn.

10.14 Tạo cờ cho những năm có hoạt động đầu tư thâm hụt

investment_status <- summary_by_activity %>%
  filter(NhomHoatDong == "HĐ Đầu Tư") %>%
  mutate(ThamHutDauTu = ifelse(TongTien < 0, "Có", "Không"))
kable(investment_status)
Nam NhomHoatDong TongTien ThamHutDauTu
2015 HĐ Đầu Tư -657843817186
2016 HĐ Đầu Tư -1276037943517
2017 HĐ Đầu Tư -2120214986482
2018 HĐ Đầu Tư -2344394040332
2019 HĐ Đầu Tư -5872761640253
2020 HĐ Đầu Tư -8574260892627
2021 HĐ Đầu Tư -11254869604436
2022 HĐ Đầu Tư 1549111423316 Không
2023 HĐ Đầu Tư -10831294696942
2024 HĐ Đầu Tư -11743285670418

Giải thích kỹ thuật:

– Lọc ra các dòng chỉ liên quan đến “HĐ Đầu Tư”.

– Dùng hàm ifelse() để tạo một cột logic mới. Nếu TongTien < 0 (chi ròng), cột mới sẽ có giá trị “Có”, ngược lại là “Không”.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo một biến nhị phân để mã hóa một trạng thái kinh tế.

– Kinh tế:

  • Chiến lược Tăng trưởng Liên tục và Quyết liệt: Kết quả cho thấy công ty thâm hụt đầu tư trong 9 trên 10 năm. Điều này chứng tỏ một chiến lược tăng trưởng và mở rộng quy mô gần như không ngừng nghỉ. Công ty liên tục chi tiền mạnh tay để đầu tư vào tài sản cố định, góp vốn, cho vay… thay vì thu hẹp hoạt động. Quy mô thâm hụt ngày càng lớn, đặc biệt trong 2 năm gần nhất, cho thấy tham vọng tăng trưởng ngày càng cao.

  • Năm 2022 là Một Điểm Bất thường Cần Lưu ý: Năm 2022 là năm duy nhất có dòng tiền từ hoạt động đầu tư dương (+1,549 tỷ), tức là “Không” thâm hụt. Điều này có nghĩa là trong năm 2022, công ty đã thu về nhiều tiền hơn từ việc bán tài sản, thu hồi các khoản đầu tư… so với số tiền chi ra. Đây là một hành động trái ngược hoàn toàn với xu hướng chung.

10.15 Tạo cờ cho những năm công ty huy động vốn ròng từ hoạt động tài chính

financing_status <- summary_by_activity %>%
  filter(NhomHoatDong == "HĐ Tài Chính") %>%
  mutate(HuyDongRong = ifelse(TongTien > 0, "Có", "Không"))
kable(financing_status)
Nam NhomHoatDong TongTien HuyDongRong
2015 HĐ Tài Chính 1430267541780
2016 HĐ Tài Chính 2515600191276
2017 HĐ Tài Chính 1870536552446
2018 HĐ Tài Chính 421719356776
2019 HĐ Tài Chính 6524501816190
2020 HĐ Tài Chính 2014415380732
2021 HĐ Tài Chính 7877490879150
2022 HĐ Tài Chính -8606343520918 Không
2023 HĐ Tài Chính 7699783102825
2024 HĐ Tài Chính 2757475513692

Giải thích kỹ thuật: Tương tự thao tác trên, nhưng điều kiện là TongTien > 0 (thu ròng).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo thêm một biến nhị phân hữu ích.

– Kinh tế:

  • Sự phụ thuộc vào Nguồn vốn bên ngoài: Tương tự như hoạt động đầu tư, công ty đã huy động vốn ròng trong 9 trên 10 năm. Điều này cho thấy một sự phụ thuộc gần như liên tục vào các nguồn vốn từ bên ngoài (chủ nợ, cổ đông) để tài trợ cho các hoạt động của mình. Khi kết hợp với kết quả của Thao tác trên (luôn thâm hụt đầu tư), chúng ta có một bức tranh rõ ràng: Công ty liên tục vay nợ/huy động vốn để tài trợ cho chiến lược đầu tư mở rộng không ngừng nghỉ của mình.

  • Năm 2022 là Một sự đảo chiều chiến lược: Năm 2022 là năm duy nhất có dòng tiền tài chính âm (-8,606 nghìn tỷ), tức là “Không” huy động ròng. Điều này có nghĩa là trong năm 2022, công ty đã chi ra một lượng tiền khổng lồ để trả nợ gốc vay, trả cổ tức, hoặc mua lại cổ phiếu quỹ, lớn hơn nhiều so với số tiền huy động được.

  • Kết nối với Thao tác trên: Điều này xảy ra đúng vào năm duy nhất công ty có dòng tiền đầu tư dương (bán tài sản). Câu chuyện trở nên rõ ràng hơn: Rất có thể trong năm 2022, công ty đã bán đi một tài sản hoặc một khoản đầu tư lớn (tạo ra dòng tiền đầu tư dương) và dùng số tiền đó để thực hiện một khoản trả nợ khổng lồ (gây ra dòng tiền tài chính âm). Đây là một hành động tái cơ cấu tài chính rất đáng chú ý.

10.16 Tính toán Dòng tiền Tự do cho Doanh nghiệp

fcff_data <- data_long %>%
  filter(ChiTieu %in% c("Lưu chuyển tiền thuần từ hoạt động kinh doanh",
                       "Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác")) %>%
  select(Nam, ChiTieu, GiaTri) %>%
  pivot_wider(names_from = ChiTieu, values_from = GiaTri) %>%
  mutate(FCFF = `Lưu chuyển tiền thuần từ hoạt động kinh doanh` + `Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác`)
kable(fcff_data)
Nam Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác FCFF
2015 -641471376080 -586517897472 -1227989273552
2016 -586481629900 -1278788918537 -1865270548437
2017 2663663956855 -2065069567410 598594389445
2018 2261134531069 -1495931919038 765202612031
2019 -1286080778045 -3066921164140 -4353001942185
2020 10792429218774 -3911358160002 6881071058772
2021 171390435922 -4976876590016 -4805486154094
2022 7976298801645 -4465359523505 3510939278140
2023 3435827176070 -523383330794 2912443845276
2024 8517332706742 -303747827395 8213584879347

Giải thích kỹ thuật:

– Quy trình này kết hợp nhiều bước: filter để chọn 2 thành phần cần thiết, pivot_wider để đặt chúng trên cùng một hàng theo từng năm, và mutate để thực hiện phép toán.

– Lưu ý: “Tiền chi” đã là số âm, nên ta dùng phép cộng. CFO + (-Capex) = CFO - Capex.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một ví dụ về việc tạo ra một chỉ số tổng hợp từ hai biến có sẵn.

– Kinh tế:

  • Dòng tiền tự do (FCFF) là thước đo quan trọng nhất về giá trị, cho thấy lượng tiền mặt thực sự còn lại cho các nhà đầu tư (cổ đông và chủ nợ) sau khi đã trừ đi các khoản chi tiêu vốn cần thiết.

  • Giai đoạn “Đốt tiền” để tăng trưởng (2015, 2016, 2019): Trong những năm này, FCFF âm sâu. Điều này là do cả hoạt động kinh doanh cốt lõi (CFO) đều yếu kém và công ty vẫn chi tiêu mạnh cho đầu tư. Đây là giai đoạn “đốt tiền” điển hình để xây dựng nền tảng, hoàn toàn phụ thuộc vào vốn bên ngoài.

  • Bước ngoặt quan trọng (2017): Tự chủ về tài chính. Năm 2017 là năm đầu tiên FCFF chuyển sang dương. Đây là một cột mốc cực kỳ quan trọng, cho thấy dòng tiền từ hoạt động kinh doanh đã đủ lớn để không chỉ bù đắp cho các khoản đầu tư mở rộng mà còn tạo ra thặng dư. Công ty đã bắt đầu tự chủ về tài chính.

  • Giai đoạn “Cỗ máy tạo tiền” (2020 trở đi, trừ 2021): FCFF dương và đạt mức rất cao, đặc biệt vào các năm 2020 và 2024. Điều này cho thấy công ty đã trở thành một “cỗ máy tạo tiền” thực sự. Hoạt động kinh doanh cốt lõi tạo ra một lượng tiền mặt dồi dào, vượt xa nhu cầu chi tiêu vốn, tạo ra một lượng tiền mặt tự do khổng lồ để trả nợ, chia cổ tức hoặc tích lũy.

10.17 Tính Tỷ lệ CFO trên Lợi nhuận trước thuế

quality_ratio_data <- data_long %>%
  filter(ChiTieu %in% c("Lưu chuyển tiền thuần từ hoạt động kinh doanh",
                       "Lợi nhuận kế toán trước thuế")) %>%
  select(Nam, ChiTieu, GiaTri) %>%
  pivot_wider(names_from = ChiTieu, values_from = GiaTri) %>%
  mutate(CFO_to_PBT_Ratio = `Lưu chuyển tiền thuần từ hoạt động kinh doanh` / `Lợi nhuận kế toán trước thuế`)
kable(quality_ratio_data)
Nam Lợi nhuận kế toán trước thuế Lưu chuyển tiền thuần từ hoạt động kinh doanh CFO_to_PBT_Ratio
2015 1385783787694 -641471376080 -0.4628943
2016 2005914114923 -586481629900 -0.2923762
2017 2809312032646 2663663956855 0.9481553
2018 3786318568918 2261134531069 0.5971855
2019 5053447204696 -1286080778045 -0.2544957
2020 5409735407353 10792429218774 1.9950013
2021 6471583750543 171390435922 0.0264835
2022 6056355373558 7976298801645 1.3170130
2023 689692367896 3435827176070 4.9816807
2024 4825763013078 8517332706742 1.7649712

Giải thích kỹ thuật: Quy trình tương tự thao tác 16, nhưng thực hiện phép chia.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo ra một biến tỷ lệ, là một dạng chuẩn hóa (normalization) dữ liệu.

– Kinh tế:

  • Tỷ lệ CFO trên Lợi nhuận trước thuế (PBT) là một chỉ số quan trọng để đo lường “chất lượng của lợi nhuận”. Lợi nhuận kế toán có thể bao gồm nhiều khoản phi tiền mặt, nhưng CFO là tiền thật. Tỷ lệ này cho biết một đồng lợi nhuận kế toán tạo ra được bao nhiêu đồng tiền mặt từ hoạt động kinh doanh.

  • Giai đoạn đầu (2015-2016): Lợi nhuận “trên giấy”. Tỷ lệ này âm trong hai năm đầu. Mặc dù công ty báo cáo có lợi nhuận trước thuế (PBT dương), nhưng dòng tiền từ hoạt động kinh doanh lại âm. Điều này cho thấy lợi nhuận đó chỉ là “trên giấy”, chưa được chuyển hóa thành tiền mặt. Nguyên nhân có thể là do các khoản phải thu tăng cao (bán hàng nhưng chưa thu được tiền) hoặc hàng tồn kho tăng mạnh.

  • Giai đoạn cải thiện (Ví dụ: 2017): Lợi nhuận chất lượng cao. Tỷ lệ đạt 0.95 (tức 95%). Đây là một tỷ lệ rất tốt. Nó có nghĩa là cứ 100 đồng lợi nhuận kế toán, công ty đã tạo ra được 95 đồng tiền mặt thực. Điều này cho thấy lợi nhuận rất “chất lượng”, và công ty quản lý vốn lưu động hiệu quả.

  • Xu hướng chung: Việc theo dõi tỷ lệ này qua các năm giúp nhà đầu tư đánh giá xem liệu chất lượng lợi nhuận của công ty có đang được cải thiện và duy trì ở mức cao hay không. Một công ty có tỷ lệ này luôn dương và ổn định trên 80% thường được coi là có chất lượng lợi nhuận tốt và bền vững.

10.18 Tính Khả năng trả nợ gốc từ CFO

debt_payment_ratio <- data_long %>%
  filter(ChiTieu %in% c("Lưu chuyển tiền thuần từ hoạt động kinh doanh",
                       "Tiền chi trả nợ gốc vay")) %>%
  select(Nam, ChiTieu, GiaTri) %>%
  pivot_wider(names_from = ChiTieu, values_from = GiaTri) %>%
  mutate(CFO_to_DebtPayment_Ratio = `Lưu chuyển tiền thuần từ hoạt động kinh doanh` / abs(`Tiền chi trả nợ gốc vay`))
kable(debt_payment_ratio)
Nam Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi trả nợ gốc vay CFO_to_DebtPayment_Ratio
2015 -641471376080 -6695006247613 -0.0958134
2016 -586481629900 -17225505287912 -0.0340473
2017 2663663956855 -27456000269116 0.0970157
2018 2261134531069 -31690848740269 0.0713498
2019 -1286080778045 -38801961791867 -0.0331447
2020 10792429218774 -48573996682152 0.2221853
2021 171390435922 -56045130957737 0.0030581
2022 7976298801645 -73313739286999 0.1087968
2023 3435827176070 -61933329857245 0.0554762
2024 8517332706742 -73030338420383 0.1166273

Giải thích kỹ thuật: Tương tự, nhưng dùng hàm abs() để lấy giá trị tuyệt đối của khoản chi trả nợ (vì nó là số âm).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo một tỷ số khác để phân tích.

– Kinh tế:

  • Tỷ lệ CFO trên Nợ gốc đã trả đo lường khả năng của công ty trong việc sử dụng tiền từ hoạt động kinh doanh cốt lõi để trả các khoản nợ vay đến hạn.

  • Sự phụ thuộc Cao vào Nguồn vốn bên ngoài: Trong suốt 10 năm, tỷ lệ này luôn luôn nhỏ hơn 1.0 một cách đáng kể. Tỷ lệ cao nhất chỉ đạt 0.22 vào năm 2020. Điều này cho thấy một sự thật quan trọng: Dòng tiền từ hoạt động kinh doanh của công ty chưa bao giờ đủ để tự trang trải cho các khoản nợ gốc đã trả. Năm tốt nhất (2020), công ty cũng chỉ tạo ra được 22 đồng từ kinh doanh cho mỗi 100 đồng nợ gốc đã trả.

  • Mô hình “Đảo nợ”: Vì không thể dùng tiền từ kinh doanh để trả nợ, công ty bắt buộc phải liên tục huy động các nguồn vốn khác (vay nợ mới, phát hành cổ phiếu) để có tiền trả nợ cũ. Đây là một mô hình “đảo nợ” điển hình của các doanh nghiệp đang trong giai đoạn tăng trưởng nóng và sử dụng đòn bẩy tài chính cao.

  • Chỉ số này vẽ nên một bức tranh rõ ràng về rủi ro tài chính. Mặc dù công ty đang tăng trưởng mạnh, nhưng sức khỏe tài chính nội tại của nó còn yếu và phụ thuộc rất nhiều vào khả năng liên tục huy động vốn từ thị trường. Bất kỳ sự tắc nghẽn nào trong việc huy động vốn đều có thể tạo ra áp lực thanh khoản rất lớn cho công ty.

10.19 Tính Tỷ lệ Tái đầu tư từ CFO

reinvestment_ratio <- data_long %>%
   filter(ChiTieu %in% c("Lưu chuyển tiền thuần từ hoạt động kinh doanh",
                       "Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác")) %>%
  select(Nam, ChiTieu, GiaTri) %>%
  pivot_wider(names_from = ChiTieu, values_from = GiaTri) %>%
  mutate(Reinvestment_Ratio = abs(`Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác`) / `Lưu chuyển tiền thuần từ hoạt động kinh doanh`)
kable(reinvestment_ratio)
Nam Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Reinvestment_Ratio
2015 -641471376080 -586517897472 -0.9143321
2016 -586481629900 -1278788918537 -2.1804416
2017 2663663956855 -2065069567410 0.7752741
2018 2261134531069 -1495931919038 0.6615847
2019 -1286080778045 -3066921164140 -2.3847034
2020 10792429218774 -3911358160002 0.3624168
2021 171390435922 -4976876590016 29.0382399
2022 7976298801645 -4465359523505 0.5598285
2023 3435827176070 -523383330794 0.1523311
2024 8517332706742 -303747827395 0.0356623

Giải thích kỹ thuật: Tương tự, dùng abs() cho khoản chi.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Một tỷ lệ nữa để đánh giá.

– Kinh tế:

  • Tỷ lệ Tái đầu tư cho thấy mức độ công ty ưu tiên việc tái đầu tư vào tài sản so với dòng tiền mà nó tạo ra.

  • Giai đoạn đầu (2015, 2016, 2019): Đầu tư bất chấp. Tỷ lệ này là số âm. Tỷ lệ âm xảy ra vì mẫu số (CFO) là âm. Điều này có ý nghĩa kinh tế là: công ty không những không tạo ra tiền từ kinh doanh, mà còn chi tiêu rất mạnh cho đầu tư. Đây là giai đoạn “đốt tiền” quyết liệt nhất, hoàn toàn dựa vào vốn bên ngoài.

  • Điểm bất thường cực lớn (2021): Tỷ lệ tái đầu tư là 29.03, một con số khổng lồ. Điều này có nghĩa là trong năm 2021, số tiền công ty chi cho đầu tư lớn gấp 29 lần số tiền ít ỏi mà hoạt động kinh doanh tạo ra. Đây là năm công ty thực hiện một khoản đầu tư cực lớn, nhưng đồng thời hoạt động kinh doanh cốt lõi lại rất yếu. Đây là điểm rủi ro nhất trong cả chuỗi dữ liệu.

  • Giai đoạn “Trưởng thành” (2020, 2022-2024): Tỷ lệ này dương nhưng có xu hướng giảm dần, từ 0.36 (2020) xuống chỉ còn 0.035 (3.5%) vào năm 2024. Cho thấy một sự thay đổi rõ rệt trong chiến lược. Mặc dù CFO vẫn rất lớn, công ty đang dùng ngày càng ít phần trăm trong số đó để tái đầu tư vào tài sản cố định. Thay vào đó, lượng tiền mặt dồi dào này có thể đang được dùng để trả nợ, trả cổ tức, hoặc đầu tư tài chính. Đây là dấu hiệu của một doanh nghiệp đang dần bước vào giai đoạn bão hòa, ít cơ hội tăng trưởng bằng đầu tư tài sản hơn và tập trung vào việc tạo ra giá trị cho cổ đông.

10.20 Ghép tất cả các chỉ số đã tính vào một bảng tổng hợp cuối cùng

final_analytical_df <- data_cleaned %>%
  left_join(select(fcff_data, Nam, FCFF), by = "Nam") %>%
  left_join(select(quality_ratio_data, Nam, CFO_to_PBT_Ratio), by = "Nam") %>%
  left_join(select(debt_payment_ratio, Nam, CFO_to_DebtPayment_Ratio), by = "Nam") %>%
  left_join(select(reinvestment_ratio, Nam, Reinvestment_Ratio), by = "Nam")
kable(final_analytical_df)
Lợi nhuận kế toán trước thuế Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) Dự phòng (hoàn nhập các khoản dự phòng) Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ Lãi từ hoạt động đầu tư Chi phí lãi vay Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động Giảm các khoản phải thu (Tăng) giảm hàng tồn kho Tăng (giảm) các khoản phải trả Giảm chi phí trả trước Tiền lãi vay đã trả Thuế thu nhập doanh nghiệp đã nộp Lưu chuyển tiền thuần từ hoạt động kinh doanh Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác Tiền thu do thanh lý, nhượng bán TSCĐ Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn Thu hồi tiền gửi ngân hàng có kỳ hạn Tiền chi đầu tư góp vốn vào đơn vị khác Tiền thu lãi từ tiền gửi, cho vay Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát Mua lại cổ phiếu của doanh nghiệp đã phát hành Tiền thu từ đi vay Tiền chi trả nợ gốc vay Cổ tức đã trả Lưu chuyển tiền thuần từ hoạt động tài chính Lưu chuyển tiền thuần trong năm Tiền và tương đương tiền đầu năm Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ Tiền và tương đương tiền cuối năm Nam FCFF CFO_to_PBT_Ratio CFO_to_DebtPayment_Ratio Reinvestment_Ratio
1385783787694 197056011824 32187455819 -138916487 -856415030 38893852014 1652925775834 -476685311770 -2756191562693 1235357266488 -63386564833 -37442521379 -196048457727 -641471376080 -586517897472 0 0 0 -72239580000 913660286 -657843817186 0 -2153900000 8129261915021 -6695006247613 -1834225628 1430267541780 130952348514 212920620191 0 343872968705 2015 -1227989273552 -0.4628943 -0.0958134 -0.9143321
2005914114923 386634522356 78431491258 -91382580 2261763 119645695306 2590536703026 -989517728630 -4503949077200 3124564571480 -164867267201 -112394627462 -530854203913 -586481629900 -1278788918537 951588323 0 0 0 1799386697 -1276037943517 0 -315300000 19961551061988 -17225505287912 -220130282800 2515600191276 653080617859 343872968705 29875448 996983462012 2016 -1865270548437 -0.2923762 -0.0340473 -2.1804416
2809312032646 689713708632 125969042598 911764559 -35336741307 233202340492 3823772147620 -1322949244960 -2796297892101 3970336761157 -96805747662 -223723867627 -690668199572 2663663956855 -2065069567410 180000000 -210280000000 125580000000 0 29374580928 -2120214986482 92466480000 0 29465789268692 -27456000269116 -231718927130 1870536552446 2413985522819 996983462012 14366562 3410983351393 2017 598594389445 0.9481553 0.0970157 0.7752741
3786318568918 1222868683717 126083626828 -107059306 -84857279584 436416577674 5486723118247 1246646823981 -4672944194460 1331042865781 126753313780 -427564376510 -829523019750 2261134531069 -1495931919038 1339965525 -85922451739 0 -828166470141 64286835061 -2344394040332 705355067200 -729700000 31893805156672 -31690848740269 -485862426827 421719356776 338459847513 3410983351393 107059306 3749550258212 2018 765202612031 0.5971855 0.0713498 0.6615847
5053447204696 1442826938954 90495782206 -27160364 -341194613832 568136717134 6813684868794 -675979882201 -8374797030131 2823942311184 -227805034461 -537997464046 -1092128547184 -1286080778045 -3066921164140 1290807344 -8997466863016 5911392314754 0 278946264804 -5872761640253 90454820000 -4850060000 45905952301242 -38801961791867 -665093453185 6524501816190 -634340602108 3749550258212 27160364 3115236816468 2019 -4353001942185 -0.2544957 -0.0331447 -2.3847034
5409735407353 2195583071035 58366659387 -36874578 -557627148536 594003821021 7700024935682 850493238036 6269571171518 -1894206905085 -75119169600 -563748612045 -1494585439732 10792429218774 -3911358160002 2018075304 -11512468958904 6512150136986 0 335398013989 -8574260892627 105200450000 -6040930000 51168161383884 -48573996682152 -678908841000 2014415380732 4232583706879 3115236816468 36874578 7347857397925 2020 6881071058772 1.9950013 0.2221853 0.3624168
6471583750543 2920713608410 179550717177 -146653994 -959323580633 674427746189 9286805587692 -827596105467 -9923705315353 3781614904801 -27490477725 -585136035219 -1533102122807 171390435922 -4976876590016 1107020670 -19225219180045 12163993969618 -16385001737 796626468011 -11254869604436 228253030000 -2320000000 63936208247950 -56045130957737 -239519441063 7877490879150 -3205988289364 7347857397925 146653994 4142015762555 2021 -4805486154094 0.0264835 0.0030581 29.0382399
6056355373558 3540324726294 -321799366884 284374414 -348599792355 1362143909103 10288709224130 -588827639446 3791937421033 -2286756979213 -101041271147 -1322381109404 -1805340844308 7976298801645 -4465359523505 5331159526 -20799334065331 25851966071069 -181034840000 1137542621557 1549111423316 192628370000 -5025640000 65251647851081 -73313739286999 -731854815000 -8606343520918 919066704043 4142015762555 -61919176 5061020547422 2022 3510939278140 1.3170130 0.1087968 0.5598285
689692367896 3351314267883 -165930068132 83631272202 -1509203341265 1447718354797 3897222853381 672440536688 4169031757473 -3136706601092 130000103455 -1435731870616 -860429603219 3435827176070 -523383330794 31276790650 -34151374180637 22805115462454 -105597412729 1114378023007 -10831294696942 443220000 -9783280000 70373733043570 -61933329857245 -731280023500 7699783102825 304315581953 5061020547422 368727797 5365704857172 2023 2912443845276 4.9816807 0.0554762 0.1523311
4825763013078 2913419081483 220952651591 25689580954 -1729164103487 1137236129748 7393896353367 151205190961 -636927914305 3581806724649 127788870902 -1141521540734 -958914978098 8517332706742 -303747827395 54661690191 -52159250994595 38289265386964 0 2377309655485 -11743285670418 1771634338542 -9141790000 74756279079533 -73030338420383 -730957694000 2757475513692 -468477449984 5365704857172 104133542 4897331540730 2024 8213584879347 1.7649712 0.1166273 0.0356623

Giải thích kỹ thuật:

– left_join(bảng_A, bảng_B, by = “Nam”): Là một hàm ghép nối dữ liệu. Nó lấy tất cả các dòng từ bảng_A và tìm các dòng tương ứng trong bảng_B dựa trên cột chung (Nam) để ghép các cột từ bảng_B vào.

– select(…, Nam, TenCotMoi): Chọn cột chung Nam và cột chỉ số mới từ mỗi bảng đã tính toán để ghép vào.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một thao tác ghép nối (join) cơ sở dữ liệu, cho phép kết hợp thông tin từ nhiều nguồn (hoặc nhiều bước xử lý) vào một bảng duy nhất, thống nhất.

– Kinh tế: Thao tác này tạo ra một bảng dữ liệu phân tích tổng hợp. Bảng này chứa đựng cả dữ liệu gốc đã làm sạch và tất cả các chỉ số, tỷ lệ, và biến phái sinh mà chúng ta đã dày công tạo ra. Đây chính là sản phẩm cuối cùng của giai đoạn xử lý dữ liệu, một “bảng điều khiển” mạnh mẽ, sẵn sàng cho bước trực quan hóa và đưa ra kết luận cuối cùng.

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

11.1 Thống kê mô tả chi tiết cho các chỉ số quan trọng

desc_stats_cashflows <- final_analytical_df %>%
  select(
    `Lưu chuyển tiền thuần từ hoạt động kinh doanh`,
    `Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư`,
    `Lưu chuyển tiền thuần từ hoạt động tài chính`,
    FCFF
  ) %>%
  summary()
kable(desc_stats_cashflows)
Lưu chuyển tiền thuần từ hoạt động kinh doanh Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư Lưu chuyển tiền thuần từ hoạt động tài chính FCFF
Min. :-1286080778040 Min. :-11743285670400 Min. :-8606343520920 Min. :-4805486154090
1st Qu.: -397013613444 1st Qu.:-10267036245900 1st Qu.: 1540334794450 1st Qu.:-1705950229720
Median : 2462399243960 Median : -4108577840290 Median : 2265007786000 Median : 681898500738
Mean : 3330404304310 Mean : -5312585186890 Mean : 2450544681390 Mean : 1063008814470
3rd Qu.: 6841180895250 3rd Qu.: -1487082204260 3rd Qu.: 5582745240570 3rd Qu.: 3361315419920
Max. :10792429218800 Max. : 1549111423320 Max. : 7877490879150 Max. : 8213584879350

Giải thích kỹ thuật:

– select(): Chọn ra 4 cột số quan trọng từ bảng final_analytical_df. – summary(): Áp dụng lên data frame đã chọn, hàm này sẽ tự động tính toán 6 đại lượng thống kê mô tả cho mỗi cột: Giá trị nhỏ nhất (Min), Phân vị thứ nhất (1st Qu.), Trung vị (Median), Trung bình cộng (Mean), Phân vị thứ ba (3rd Qu.), và Giá trị lớn nhất (Max).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là bước cơ bản nhất của Phân tích Dữ liệu Khám phá. Nó giúp ta hiểu về khuynh hướng trung tâm (Mean, Median) và độ phân tán (khoảng cách Min-Max, khoảng tứ phân vị) của các biến chính. Sự chênh lệch giữa Mean và Median có thể gợi ý về sự hiện diện của các giá trị ngoại lai (những năm có kết quả bất thường).

– Kinh tế:

  • Lưu chuyển tiền từ HĐ Kinh doanh (CFO): Mean (Trung bình ~3,330 tỷ) và Median (Trung vị ~2,462 tỷ) đều dương, cho thấy về cơ bản hoạt động kinh doanh cốt lõi của công ty có tạo ra tiền. Tuy nhiên, Min (âm ~1,286 tỷ) cho thấy đã có những năm hoạt động này bị thua lỗ về mặt dòng tiền.

  • Lưu chuyển tiền từ HĐ Đầu tư (CFI): Mean và Median đều âm rất sâu. Điều này khẳng định một cách chắc chắn rằng chiến lược chủ đạo của công ty trong suốt 10 năm là liên tục chi tiền mạnh tay để đầu tư, mở rộng (mua sắm tài sản, góp vốn…). Max có giá trị dương cho thấy có ít nhất một năm công ty thu tiền ròng từ việc bán tài sản.

  • Lưu chuyển tiền từ HĐ Tài chính (CFF): Mean và Median đều dương, cho thấy công ty chủ yếu huy động vốn ròng từ bên ngoài (vay nợ, phát hành cổ phiếu) trong 10 năm qua. Đây là nguồn tiền chính để tài trợ cho hoạt động đầu tư thâm hụt ở trên.

  • Dòng tiền tự do (FCFF): Mean (~1,063 tỷ) và Median (~681 tỷ) đều dương. Đây là một tín hiệu rất tích cực, có nghĩa là sau khi trừ đi các chi phí đầu tư cần thiết, công ty vẫn tạo ra thặng dư tiền mặt cho các nhà đầu tư. Tuy nhiên, Min (âm ~4,805 tỷ) cho thấy đã có những năm chi tiêu đầu tư vượt xa khả năng tạo tiền từ kinh doanh.

  • Bảng thống kê vẽ nên bức tranh của một doanh nghiệp tăng trưởng: liên tục dùng tiền huy động được (CFF dương) để đầu tư mở rộng (CFI âm). Mặc dù có những năm khó khăn, nhưng về tổng thể, hoạt động kinh doanh (CFO dương) vẫn là nền tảng và công ty đã chứng tỏ được khả năng tạo ra tiền mặt tự do (FCFF dương) trong dài hạn.

11.2 Tính toán cơ cấu dòng tiền

cashflow_structure <- data_long %>%
  filter(ChiTieu %in% c("Lưu chuyển tiền thuần từ hoạt động kinh doanh",
                       "Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư",
                       "Lưu chuyển tiền thuần từ hoạt động tài chính")) %>%
  group_by(Nam) %>%
  mutate(TyTrong = abs(GiaTri) / sum(abs(GiaTri)) * 100) %>%
  ungroup()
kable(cashflow_structure)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien TyTrong
2015 Lưu chuyển tiền thuần từ hoạt động kinh doanh -641471376080 HĐ Kinh Doanh Khác 23.5007120
2015 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -657843817186 HĐ Đầu Tư Khác 24.1005267
2015 Lưu chuyển tiền thuần từ hoạt động tài chính 1430267541780 HĐ Tài Chính Khác 52.3987613
2016 Lưu chuyển tiền thuần từ hoạt động kinh doanh -586481629900 HĐ Kinh Doanh Khác 13.3957420
2016 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -1276037943517 HĐ Đầu Tư Khác 29.1457980
2016 Lưu chuyển tiền thuần từ hoạt động tài chính 2515600191276 HĐ Tài Chính Khác 57.4584599
2017 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2663663956855 HĐ Kinh Doanh Khác 40.0285188
2017 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2120214986482 HĐ Đầu Tư Khác 31.8617764
2017 Lưu chuyển tiền thuần từ hoạt động tài chính 1870536552446 HĐ Tài Chính Khác 28.1097048
2018 Lưu chuyển tiền thuần từ hoạt động kinh doanh 2261134531069 HĐ Kinh Doanh Khác 44.9775814
2018 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -2344394040332 HĐ Đầu Tư Khác 46.6337462
2018 Lưu chuyển tiền thuần từ hoạt động tài chính 421719356776 HĐ Tài Chính Khác 8.3886723
2019 Lưu chuyển tiền thuần từ hoạt động kinh doanh -1286080778045 HĐ Kinh Doanh Khác 9.3988776
2019 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -5872761640253 HĐ Đầu Tư Khác 42.9190521
2019 Lưu chuyển tiền thuần từ hoạt động tài chính 6524501816190 HĐ Tài Chính Khác 47.6820703
2020 Lưu chuyển tiền thuần từ hoạt động kinh doanh 10792429218774 HĐ Kinh Doanh Khác 50.4764790
2020 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -8574260892627 HĐ Đầu Tư Khác 40.1020466
2020 Lưu chuyển tiền thuần từ hoạt động tài chính 2014415380732 HĐ Tài Chính Khác 9.4214744
2021 Lưu chuyển tiền thuần từ hoạt động kinh doanh 171390435922 HĐ Kinh Doanh Khác 0.8878608
2021 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11254869604436 HĐ Đầu Tư Khác 58.3040553
2021 Lưu chuyển tiền thuần từ hoạt động tài chính 7877490879150 HĐ Tài Chính Khác 40.8080839
2022 Lưu chuyển tiền thuần từ hoạt động kinh doanh 7976298801645 HĐ Kinh Doanh Khác 43.9907739
2022 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư 1549111423316 HĐ Đầu Tư Khác 8.5436381
2022 Lưu chuyển tiền thuần từ hoạt động tài chính -8606343520918 HĐ Tài Chính Khác 47.4655879
2023 Lưu chuyển tiền thuần từ hoạt động kinh doanh 3435827176070 HĐ Kinh Doanh Khác 15.6409252
2023 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -10831294696942 HĐ Đầu Tư Khác 49.3073317
2023 Lưu chuyển tiền thuần từ hoạt động tài chính 7699783102825 HĐ Tài Chính Khác 35.0517431
2024 Lưu chuyển tiền thuần từ hoạt động kinh doanh 8517332706742 HĐ Kinh Doanh Khác 37.0027716
2024 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11743285670418 HĐ Đầu Tư Khác 51.0176287
2024 Lưu chuyển tiền thuần từ hoạt động tài chính 2757475513692 HĐ Tài Chính Khác 11.9795997

Giải thích kỹ thuật:

– Bắt đầu từ data_long (dạng dài).

– filter(): Lọc ra 3 chỉ tiêu dòng tiền thuần chính.

– group_by(Nam): Nhóm dữ liệu lại theo từng năm. Đây là bước quan trọng nhất, nó yêu cầu các phép tính sau đó phải được thực hiện riêng biệt cho mỗi năm.

– mutate(TyTrong = abs(GiaTri) / sum(abs(GiaTri)) * 100): Tạo một cột mới TyTrong. Trong mỗi nhóm năm, nó tính tổng giá trị tuyệt đối của 3 dòng tiền (sum(abs(GiaTri))), sau đó lấy giá trị tuyệt đối của từng dòng tiền chia cho tổng đó để ra tỷ trọng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một kỹ thuật chuẩn hóa. Chúng ta chuyển đổi các giá trị tuyệt đối thành các tỷ lệ phần trăm tương đối. Điều này cho phép so sánh công bằng cơ cấu dòng tiền giữa các năm, ngay cả khi quy mô tổng thể của công ty thay đổi.

– Kinh tế:

  • Giai đoạn đầu (2015-2016): Dựa vào “Tài chính” để sống và đầu tư. Tỷ trọng của HĐ Tài chính là lớn nhất (52% năm 2015, 57% năm 2016). Cho thấy công ty phụ thuộc chủ yếu vào việc huy động vốn bên ngoài (vay nợ, vốn góp) để tài trợ cho cả hoạt động kinh doanh (đang âm) và hoạt động đầu tư.

  • Giai đoạn trưởng thành (2020): “Kinh doanh” trở thành động lực chính. Tỷ trọng của HĐ Kinh doanh là lớn nhất (50.4%), vượt qua cả HĐ Đầu tư (40.1%). Đây là một sự chuyển dịch quan trọng. Hoạt động kinh doanh cốt lõi đã trở thành “cỗ máy” chính tạo ra sự luân chuyển tiền tệ, cung cấp nguồn lực cho các hoạt động khác.

  • Giai đoạn “Bùng nổ” Đầu tư (2021, 2024): Tỷ trọng của HĐ Đầu tư lại trở thành lớn nhất (58% năm 2021, 51% năm 2024). Cho thấy trong những năm này, các quyết định đầu tư (chi tiêu mua sắm tài sản) là hoạt động sử dụng vốn chủ đạo, lấn át cả dòng tiền tạo ra từ kinh doanh và huy động từ tài chính. Điều này khẳng định một chiến lược tăng trưởng rất quyết liệt.

  • Cơ cấu dòng tiền cho thấy sự trưởng thành của doanh nghiệp: từ phụ thuộc vào vốn ngoài, chuyển sang tự chủ bằng hoạt động kinh doanh, và sau đó sử dụng sức mạnh đó để thực hiện các chiến lược đầu tư ngày càng tham vọng hơn.

11.3 So sánh Dòng tiền từ HĐKD (CFO) và Lợi nhuận trước thuế (PBT)

cfo_vs_pbt <- final_analytical_df %>%
  select(Nam, 
         CFO = `Lưu chuyển tiền thuần từ hoạt động kinh doanh`,
         PBT = `Lợi nhuận kế toán trước thuế`)
kable(cfo_vs_pbt)
Nam CFO PBT
2015 -641471376080 1385783787694
2016 -586481629900 2005914114923
2017 2663663956855 2809312032646
2018 2261134531069 3786318568918
2019 -1286080778045 5053447204696
2020 10792429218774 5409735407353
2021 171390435922 6471583750543
2022 7976298801645 6056355373558
2023 3435827176070 689692367896
2024 8517332706742 4825763013078

Giải thích kỹ thuật:

– select(): Chọn ra 3 cột cần thiết từ final_analytical_df.

– CFO = …, PBT = …: Đây là một cú pháp tiện lợi trong select để đổi tên cột ngay trong lúc chọn, giúp tên cột ngắn gọn và dễ sử dụng hơn cho việc vẽ đồ thị sau này.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị một tập dữ liệu con sạch sẽ, chỉ chứa 2 chuỗi thời gian cần so sánh. Đây là bước chuẩn bị lý tưởng cho việc vẽ biểu đồ đường kép hoặc biểu đồ kết hợp cột và đường.

– Kinh tế:

  • Giai đoạn đầu (2015, 2016, 2019): Lợi nhuận “ảo”, Dòng tiền âm. Trong những năm này, công ty báo cáo có Lợi nhuận (PBT dương) nhưng Dòng tiền (CFO) lại âm. Đây là một “cờ đỏ” lớn. Nó cho thấy lợi nhuận của công ty trong giai đoạn này không đi kèm với tiền mặt. Nguyên nhân có thể là do các khoản phải thu tăng vọt (bán hàng chịu nhiều) hoặc hàng tồn kho bị ùn ứ, khiến tiền của công ty bị “kẹt” lại trong vốn lưu động.

  • Giai đoạn Chuyển đổi Tốt (2017, 2018): Cả PBT và CFO đều dương, và CFO gần bằng PBT. Đây là dấu hiệu của một doanh nghiệp khỏe mạnh. Lợi nhuận tạo ra được chuyển hóa gần như hoàn toàn thành tiền mặt, cho thấy hiệu quả trong cả hoạt động kinh doanh và quản lý vốn lưu động.

  • Giai đoạn Bùng nổ (2020, 2022, 2024): CFO vượt trội PBT. Trong những năm này, CFO lớn hơn đáng kể so với PBT. Đây là một tín hiệu cực kỳ tích cực, cho thấy “chất lượng lợi nhuận” rất cao. Công ty không chỉ chuyển đổi toàn bộ lợi nhuận thành tiền mặt mà còn “tạo” thêm tiền từ việc quản lý vốn lưu động hiệu quả (ví dụ: thu hồi được các khoản nợ cũ, giảm hàng tồn kho, chiếm dụng vốn của nhà cung cấp).

  • Dữ liệu cho thấy một sự cải thiện ngoạn mục về chất lượng lợi nhuận. Công ty đã đi từ giai đoạn có “lợi nhuận ảo” sang giai đoạn có khả năng tạo ra dòng tiền vượt trội so với lợi nhuận kế toán, một dấu hiệu của hiệu quả hoạt động và quản trị tài chính xuất sắc.

11.4 Phân tích các thành phần chính điều chỉnh từ PBT sang CFO trong năm gần nhất

cfo_adjustments_2024 <- data_long %>%
  filter(
    Nam == 2024,
    ChiTieu %in% c(
      "Lợi nhuận kế toán trước thuế",
      "Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại)",
      "Dự phòng (hoàn nhập các khoản dự phòng)",
      "Chi phí lãi vay",
      "Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động"
    )
  )
kable(cfo_adjustments_2024)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2024 Lợi nhuận kế toán trước thuế 4825763013078 Điều chỉnh / Tổng hợp Khác
2024 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2913419081483 Điều chỉnh / Tổng hợp Khác
2024 Dự phòng (hoàn nhập các khoản dự phòng) 220952651591 Điều chỉnh / Tổng hợp Khác
2024 Chi phí lãi vay 1137236129748 Điều chỉnh / Tổng hợp Khác
2024 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 7393896353367 HĐ Kinh Doanh Khác

Giải thích kỹ thuật:

– Bắt đầu từ data_long.

– filter(Nam == 2024, ChiTieu %in% c(…)): Áp dụng hai điều kiện lọc: chỉ lấy dữ liệu của năm 2024 VÀ chỉ lấy các chỉ tiêu nằm trong danh sách định sẵn.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một thao tác “drill-down”, đi sâu vào chi tiết của một điểm dữ liệu cụ thể (năm 2024) để hiểu rõ hơn về thành phần cấu tạo nên nó.

– Kinh tế:

  • Điểm khởi đầu: Công ty bắt đầu với Lợi nhuận kế toán trước thuế là ~4,825 tỷ. Đây là con số “trên giấy”.

  • Cộng lại các chi phí không bằng tiền: Khấu hao (~2,913 tỷ) và Chi phí lãi vay (~1,137 tỷ) là những chi phí đã được trừ ra khi tính lợi nhuận, nhưng thực tế công ty không chi ra bằng tiền mặt (hoặc phần tiền chi lãi vay sẽ được tính ở mục khác). Do đó, chúng được cộng ngược trở lại. Đây là hai khoản điều chỉnh lớn nhất, cho thấy chúng có ảnh hưởng đáng kể đến sự khác biệt giữa lợi nhuận và dòng tiền.

  • Điều chỉnh các khoản thu nhập/chi phí khác: Dự phòng (~220 tỷ) cũng được cộng lại vì nó là một chi phí ước tính, không phải chi tiền thực.

  • Kết quả: Sau khi thực hiện các điều chỉnh này, chúng ta có Lợi nhuận từ HĐKD trước thay đổi vốn lưu động là ~7,393 tỷ. Con số này cao hơn đáng kể so với lợi nhuận kế toán ban đầu, phản ánh đúng hơn sức mạnh tạo ra lợi nhuận từ hoạt động cốt lõi nếu bỏ qua các yếu tố kế toán. Đây là cơ sở để tiếp tục điều chỉnh các thay đổi về vốn lưu động (phải thu, phải trả, tồn kho) để ra được con số CFO cuối cùng.

11.5 Phân tích sự thay đổi Vốn lưu động (Working Capital) ảnh hưởng đến CFO

working_capital_effect <- data_long %>%
  filter(ChiTieu %in% c("Giảm các khoản phải thu",
                       "(Tăng) giảm hàng tồn kho",
                       "Tăng (giảm) các khoản phải trả"))
kable(working_capital_effect)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2015 Giảm các khoản phải thu -476685311770 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 (Tăng) giảm hàng tồn kho -2756191562693 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Tăng (giảm) các khoản phải trả 1235357266488 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Giảm các khoản phải thu -989517728630 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 (Tăng) giảm hàng tồn kho -4503949077200 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Tăng (giảm) các khoản phải trả 3124564571480 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Giảm các khoản phải thu -1322949244960 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 (Tăng) giảm hàng tồn kho -2796297892101 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Tăng (giảm) các khoản phải trả 3970336761157 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Giảm các khoản phải thu 1246646823981 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 (Tăng) giảm hàng tồn kho -4672944194460 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Tăng (giảm) các khoản phải trả 1331042865781 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Giảm các khoản phải thu -675979882201 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 (Tăng) giảm hàng tồn kho -8374797030131 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Tăng (giảm) các khoản phải trả 2823942311184 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Giảm các khoản phải thu 850493238036 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 (Tăng) giảm hàng tồn kho 6269571171518 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Tăng (giảm) các khoản phải trả -1894206905085 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Giảm các khoản phải thu -827596105467 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 (Tăng) giảm hàng tồn kho -9923705315353 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Tăng (giảm) các khoản phải trả 3781614904801 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Giảm các khoản phải thu -588827639446 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 (Tăng) giảm hàng tồn kho 3791937421033 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Tăng (giảm) các khoản phải trả -2286756979213 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Giảm các khoản phải thu 672440536688 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 (Tăng) giảm hàng tồn kho 4169031757473 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Tăng (giảm) các khoản phải trả -3136706601092 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Giảm các khoản phải thu 151205190961 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 (Tăng) giảm hàng tồn kho -636927914305 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Tăng (giảm) các khoản phải trả 3581806724649 Điều chỉnh / Tổng hợp Dòng tiền vào

Giải thích kỹ thuật:

– Bắt đầu từ data_long.

– filter(ChiTieu %in% c(…)): Lọc ra 3 chuỗi thời gian tương ứng với 3 thành phần chính của vốn lưu động trên báo cáo lưu chuyển tiền tệ.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Trích xuất một nhóm các chuỗi thời gian có liên quan để phân tích so sánh. Dữ liệu này sẵn sàng cho việc vẽ biểu đồ cột nhóm.

– Kinh tế:

  • Các khoản phải thu (Giảm): Khoản mục này thường xuyên âm, đặc biệt là trong giai đoạn đầu. Dấu âm ở “Giảm các khoản phải thu” có nghĩa là các khoản phải thu đã tăng lên. Điều này cho thấy công ty đang bán chịu nhiều hơn, tiền bị “kẹt” ở khách hàng và gây ảnh hưởng tiêu cực đến dòng tiền. Việc khoản mục này trở nên dương trong những năm gần đây là một tín hiệu quản lý tốt.

  • Hàng tồn kho ([Tăng] giảm): Khoản mục này cũng thường xuyên âm, đặc biệt là năm 2019 và 2024. Dấu âm ở đây có nghĩa là hàng tồn kho đã tăng lên. Việc tích trữ quá nhiều hàng tồn kho là một hình thức “giam tiền” mặt rất lớn. Đây là một trong những nguyên nhân chính khiến dòng tiền của công ty bị ảnh hưởng tiêu cực trong nhiều năm.

  • Các khoản phải trả (Tăng [giảm]): Khoản mục này thường xuyên dương (trừ 2020, 2022, 2023). Dấu dương ở đây có nghĩa là các khoản phải trả đã tăng lên. Đây là một tín hiệu tốt, cho thấy công ty đang “chiếm dụng vốn” của nhà cung cấp một cách hiệu quả (mua hàng nhưng trả tiền chậm), giúp tạo ra một nguồn tài trợ tiền mặt cho hoạt động.

  • Bảng dữ liệu cho thấy công ty thường xuyên bị ảnh hưởng tiêu cực đến dòng tiền do việc tăng các khoản phải thu và tăng hàng tồn kho. Tuy nhiên, công ty cũng đã quản lý tốt các khoản phải trả để bù đắp lại một phần. Việc kiểm soát tốt hơn các khoản phải thu và hàng tồn kho là chìa khóa để cải thiện dòng tiền của công ty trong tương lai.

11.6 So sánh giữa Chi mua sắm TSCĐ (Capex) và Khấu hao

capex_vs_deprecation <- final_analytical_df %>%
  select(
    Nam,
    Capex = `Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác`,
    KhauHao = `Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại)`
  )
kable(capex_vs_deprecation)
Nam Capex KhauHao
2015 -586517897472 197056011824
2016 -1278788918537 386634522356
2017 -2065069567410 689713708632
2018 -1495931919038 1222868683717
2019 -3066921164140 1442826938954
2020 -3911358160002 2195583071035
2021 -4976876590016 2920713608410
2022 -4465359523505 3540324726294
2023 -523383330794 3351314267883
2024 -303747827395 2913419081483

Giải thích kỹ thuật:

– select(): Chọn ra cột Nam và 2 cột chỉ tiêu quan tâm từ final_analytical_df.

– Capex = …, KhauHao = …: Đổi tên cột cho ngắn gọn.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị dữ liệu để so sánh hai chuỗi thời gian.

– Kinh tế:

  • Chiến lược Mở rộng Liên tục: Trong tất cả 10 năm, giá trị tuyệt đối của Capex (số tiền thực chi) luôn luôn lớn hơn KhauHao (mức hao mòn). Điều này chứng tỏ một chiến lược đầu tư và mở rộng quy mô tài sản sản xuất không ngừng nghỉ. Công ty không chỉ chi tiền để thay thế các tài sản đã cũ, mà còn liên tục đầu tư thêm để tăng cường năng lực sản xuất và kinh doanh.

  • Đỉnh điểm Đầu tư: Quy mô Capex đạt đỉnh điểm vào các năm 2021, 2022, 2023. Giai đoạn này cho thấy một sự đầu tư cực kỳ mạnh mẽ. Đây có thể là giai đoạn công ty thực hiện các dự án lớn như xây dựng nhà máy mới, mua sắm dây chuyền công nghệ hiện đại…

  • Dữ liệu cho thấy công ty có một chiến lược rất rõ ràng: liên tục tái đầu tư và mở rộng cơ sở vật chất. Đây là dấu hiệu của một doanh nghiệp đang trong giai đoạn tăng trưởng mạnh mẽ, luôn tìm cách nâng cao năng lực cạnh tranh thông qua việc đầu tư vào tài sản.

11.7 Cơ cấu các khoản mục trong Dòng tiền từ Hoạt động Đầu tư

investment_structure <- data_long %>%
  filter(NhomHoatDong == "HĐ Đầu Tư" & !grepl("thuần", ChiTieu))
kable(investment_structure)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2015 Lãi từ hoạt động đầu tư -856415030 HĐ Đầu Tư Khác
2015 Tiền chi đầu tư góp vốn vào đơn vị khác -72239580000 HĐ Đầu Tư Dòng tiền ra
2016 Lãi từ hoạt động đầu tư 2261763 HĐ Đầu Tư Khác
2016 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2017 Lãi từ hoạt động đầu tư -35336741307 HĐ Đầu Tư Khác
2017 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2018 Lãi từ hoạt động đầu tư -84857279584 HĐ Đầu Tư Khác
2018 Tiền chi đầu tư góp vốn vào đơn vị khác -828166470141 HĐ Đầu Tư Dòng tiền ra
2019 Lãi từ hoạt động đầu tư -341194613832 HĐ Đầu Tư Khác
2019 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2020 Lãi từ hoạt động đầu tư -557627148536 HĐ Đầu Tư Khác
2020 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra
2021 Lãi từ hoạt động đầu tư -959323580633 HĐ Đầu Tư Khác
2021 Tiền chi đầu tư góp vốn vào đơn vị khác -16385001737 HĐ Đầu Tư Dòng tiền ra
2022 Lãi từ hoạt động đầu tư -348599792355 HĐ Đầu Tư Khác
2022 Tiền chi đầu tư góp vốn vào đơn vị khác -181034840000 HĐ Đầu Tư Dòng tiền ra
2023 Lãi từ hoạt động đầu tư -1509203341265 HĐ Đầu Tư Khác
2023 Tiền chi đầu tư góp vốn vào đơn vị khác -105597412729 HĐ Đầu Tư Dòng tiền ra
2024 Lãi từ hoạt động đầu tư -1729164103487 HĐ Đầu Tư Khác
2024 Tiền chi đầu tư góp vốn vào đơn vị khác 0 HĐ Đầu Tư Dòng tiền ra

Giải thích kỹ thuật: filter(NhomHoatDong == “HĐ Đầu Tư” & !grepl(“thuần”, ChiTieu)): Lọc ra tất cả các chỉ tiêu thuộc nhóm “HĐ Đầu Tư” nhưng loại trừ (!) các dòng tổng hợp có chứa từ “thuần”.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Phân tách một nhóm lớn thành các thành phần chi tiết của nó.

– Kinh tế:

  • “Lãi từ hoạt động đầu tư”: Khoản mục này gần như luôn âm (trừ năm 2016). Trên báo cáo lưu chuyển tiền tệ, đây là một khoản điều chỉnh. Giá trị âm có nghĩa là công ty đã ghi nhận một khoản lãi từ hoạt động đầu tư vào trong lợi nhuận kế toán. Khoản này cần được trừ ra (cộng một số âm) để loại bỏ các yếu tố không thuộc về kinh doanh cốt lõi. Việc khoản này luôn âm cho thấy công ty thường xuyên có lãi từ các hoạt động đầu tư (như lãi tiền gửi, bán tài sản có lời…).

  • “Tiền chi đầu tư góp vốn vào đơn vị khác”: Khoản mục này thường xuyên bằng 0 hoặc âm. Đây là dòng tiền thực chi ra cho các thương vụ M&A hoặc đầu tư chiến lược. Các năm có giá trị 0 (như 2016, 2017, 2019, 2020, 2024): Trong những năm này, công ty không thực hiện hoạt động đầu tư góp vốn nào. Các năm có giá trị âm (như 2015, 2018, 2021…): Đây là những năm công ty đã chi tiền thực để đầu tư vào các công ty khác. Đặc biệt, các năm 2021, 2022, 2023 cho thấy các khoản chi đầu tư này có quy mô đáng kể.

  • Dữ liệu cho thấy công ty có hai mặt của hoạt động đầu tư. Một mặt, họ thường xuyên tạo ra lợi nhuận từ các khoản đầu tư của mình. Mặt khác, họ cũng có những năm chi tiền rất mạnh tay cho các hoạt động đầu tư chiến lược dài hạn, thể hiện tham vọng mở rộng và thâu tóm.

11.8 Thống kê số năm công ty có thu tiền ròng từ hoạt động đầu tư

investment_net_status <- final_analytical_df %>%
  mutate(TrangThaiDauTu = ifelse(`Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư` > 0, 
                                 "Thu ròng", "Chi ròng")) %>%
  count(TrangThaiDauTu)
kable(investment_net_status)
TrangThaiDauTu n
Chi ròng 9
Thu ròng 1

Giải thích kỹ thuật:

– mutate(TrangThaiDauTu = ifelse(…, “Thu ròng”, “Chi ròng”)): Tạo một cột phân loại mới dựa trên điều kiện dòng tiền đầu tư có dương hay không.

– count(TrangThaiDauTu): Đếm số lần xuất hiện của mỗi loại trong cột TrangThaiDauTu.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một phép tần suất, tóm tắt một biến liên tục thành một bảng đếm đơn giản.

– Kinh tế:

  • Chiến lược Nhất quán: Kết quả Chi ròng: 9, Thu ròng: 1 cho thấy một chiến lược đầu tư cực kỳ nhất quán trong suốt một thập kỷ. Công ty gần như luôn luôn chi tiền nhiều hơn thu về cho các hoạt động đầu tư.

  • Tập trung vào Tăng trưởng: Điều này khẳng định mạnh mẽ rằng công ty đang trong giai đoạn tăng trưởng và mở rộng. Ưu tiên hàng đầu của ban lãnh đạo là sử dụng tiền mặt để đầu tư vào tài sản mới, công nghệ mới, hoặc các công ty khác, thay vì thu hẹp hoạt động hay chốt lời từ các khoản đầu tư cũ.

  • Điểm Bất thường Cần Chú ý: Năm duy nhất có “Thu ròng” (chính là năm 2022 như đã thấy ở các thao tác trước) trở thành một sự kiện ngoại lệ rất đáng chú ý.

11.9 Phân tích dòng tiền liên quan đến tiền gửi ngân hàng

bank_deposit_flow <- data_long %>%
  filter(ChiTieu %in% c("Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn",
                       "Thu hồi tiền gửi ngân hàng có kỳ hạn"))
kable(bank_deposit_flow)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2015 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Khác
2016 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Khác
2017 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -210280000000 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Thu hồi tiền gửi ngân hàng có kỳ hạn 125580000000 Điều chỉnh / Tổng hợp Khác
2018 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -85922451739 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Thu hồi tiền gửi ngân hàng có kỳ hạn 0 Điều chỉnh / Tổng hợp Khác
2019 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -8997466863016 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Thu hồi tiền gửi ngân hàng có kỳ hạn 5911392314754 Điều chỉnh / Tổng hợp Khác
2020 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -11512468958904 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Thu hồi tiền gửi ngân hàng có kỳ hạn 6512150136986 Điều chỉnh / Tổng hợp Khác
2021 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -19225219180045 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Thu hồi tiền gửi ngân hàng có kỳ hạn 12163993969618 Điều chỉnh / Tổng hợp Khác
2022 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -20799334065331 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Thu hồi tiền gửi ngân hàng có kỳ hạn 25851966071069 Điều chỉnh / Tổng hợp Khác
2023 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -34151374180637 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Thu hồi tiền gửi ngân hàng có kỳ hạn 22805115462454 Điều chỉnh / Tổng hợp Khác
2024 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -52159250994595 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Thu hồi tiền gửi ngân hàng có kỳ hạn 38289265386964 Điều chỉnh / Tổng hợp Khác

Giải thích kỹ thuật:

– filter(): Lọc ra hai chỉ tiêu đối ứng: chi tiền gửi và thu hồi tiền gửi.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Trích xuất hai chuỗi thời gian để so sánh.

– Kinh tế:

  • Hoạt động không thường xuyên (2015-2016): Trong 2 năm đầu, cả hai chỉ tiêu này đều bằng 0. Cho thấy trong giai đoạn đầu, công ty có thể không có nhiều tiền mặt nhàn rỗi, hoặc tập trung toàn bộ nguồn lực vào hoạt động kinh doanh mà không thực hiện các hoạt động gửi tiền có kỳ hạn.

  • Bắt đầu hoạt động sôi nổi (2017 trở đi): Từ năm 2017, cả hai hoạt động chi gửi và thu hồi đều phát sinh với giá trị lớn. Điều này cho thấy quy mô tiền mặt của công ty đã lớn hơn, cho phép họ bắt đầu thực hiện các hoạt động tài chính ngắn hạn để tối ưu hóa lượng tiền nhàn rỗi.

  • Xu hướng “Gửi nhiều hơn Rút”: Trong hầu hết các năm (trừ 2017), giá trị tuyệt đối của Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn thường lớn hơn giá trị của Thu hồi tiền gửi ngân hàng có kỳ hạn. Điều này có nghĩa là công ty có xu hướng gửi thêm tiền vào ngân hàng nhiều hơn là rút ra. Đây có thể là một dấu hiệu cho thấy công ty đang tạo ra nhiều tiền mặt hơn nhu cầu chi tiêu trước mắt, và họ chọn cách gửi tiết kiệm để sinh lời thay vì đầu tư vào các dự án rủi ro hơn. Đây là một hành vi tài chính tương đối thận trọng.

11.10 Tỷ lệ Dòng tiền tự do trên Dòng tiền từ HĐKD

fcff_to_cfo_ratio <- final_analytical_df %>%
  mutate(FCFF_per_CFO = FCFF / `Lưu chuyển tiền thuần từ hoạt động kinh doanh`) %>%
  select(Nam, FCFF_per_CFO)
kable(fcff_to_cfo_ratio)
Nam FCFF_per_CFO
2015 1.9143321
2016 3.1804416
2017 0.2247259
2018 0.3384153
2019 3.3847034
2020 0.6375832
2021 -28.0382399
2022 0.4401715
2023 0.8476689
2024 0.9643377

Giải thích kỹ thuật:

– mutate(): Tạo một cột tỷ lệ mới bằng cách chia cột FCFF cho cột CFO.

– select(): Chỉ giữ lại các cột cần thiết cho việc vẽ đồ thị.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo một biến tỷ lệ để chuẩn hóa và phân tích.

– Kinh tế:

  • Giai đoạn đầu (2015, 2016) và năm bất thường (2019): Tỷ lệ > 1. Điều này xảy ra khi cả FCFF và CFO đều là số âm. Về mặt kinh tế, nó có nghĩa là mức độ “đốt tiền” của công ty còn trầm trọng hơn sau khi tính thêm chi tiêu vốn. Công ty không chỉ thâm hụt dòng tiền từ kinh doanh mà còn chi tiêu rất mạnh cho đầu tư.

  • Giai đoạn “Bùng nổ” Đầu tư (2017, 2018, 2020, 2022): Tỷ lệ thấp. Tỷ lệ dao động từ 0.22 đến 0.63. Cho thấy công ty đang dùng một phần rất lớn (từ 37% đến 78%) dòng tiền từ kinh doanh để tái đầu tư vào tài sản (Capex). Chỉ một phần nhỏ của CFO được chuyển đổi thành tiền mặt tự do. Đây là đặc điểm của một doanh nghiệp ưu tiên tăng trưởng.

  • Điểm dị thường (2021): Tỷ lệ âm cực lớn (-28.03). Tỷ lệ âm và có giá trị tuyệt đối rất lớn. Điều này xảy ra khi CFO dương nhưng rất nhỏ, trong khi Capex lại âm cực lớn. Nó có nghĩa là chi tiêu vốn trong năm 2021 lớn gấp 29 lần dòng tiền mà hoạt động kinh doanh tạo ra. Đây là một năm đầu tư “tất tay” và cực kỳ rủi ro, khiến Dòng tiền tự do bị âm nặng.

  • Giai đoạn “Trưởng thành” (2023, 2024): Tỷ lệ cao và ổn định. Tỷ lệ tăng lên mức rất cao, 0.84 và 0.96. Đây là một tín hiệu rất tích cực. Nó cho thấy công ty đang chi tiêu vốn một cách hiệu quả hơn. Phần lớn (84% - 96%) dòng tiền từ kinh doanh đã được chuyển hóa thành tiền mặt tự do. Công ty đang chuyển dịch từ mô hình “tăng trưởng bằng mọi giá” sang mô hình “tạo ra giá trị tiền mặt”, một dấu hiệu của sự trưởng thành.

11.11 Cơ cấu các khoản mục trong Dòng tiền từ Hoạt động Tài chính

financing_structure <- data_long %>%
    filter(ChiTieu %in% c(
    "Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát",
    "Mua lại cổ phiếu của doanh nghiệp đã phát hành",
    "Tiền thu từ đi vay",
    "Tiền chi trả nợ gốc vay",
    "Cổ tức đã trả"
  ))
kable(financing_structure)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2015 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2153900000 Điều chỉnh / Tổng hợp Khác
2015 Tiền thu từ đi vay 8129261915021 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Tiền chi trả nợ gốc vay -6695006247613 Điều chỉnh / Tổng hợp Dòng tiền ra
2015 Cổ tức đã trả -1834225628 Điều chỉnh / Tổng hợp Khác
2016 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Mua lại cổ phiếu của doanh nghiệp đã phát hành -315300000 Điều chỉnh / Tổng hợp Khác
2016 Tiền thu từ đi vay 19961551061988 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Tiền chi trả nợ gốc vay -17225505287912 Điều chỉnh / Tổng hợp Dòng tiền ra
2016 Cổ tức đã trả -220130282800 Điều chỉnh / Tổng hợp Khác
2017 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 92466480000 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Mua lại cổ phiếu của doanh nghiệp đã phát hành 0 Điều chỉnh / Tổng hợp Khác
2017 Tiền thu từ đi vay 29465789268692 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Tiền chi trả nợ gốc vay -27456000269116 Điều chỉnh / Tổng hợp Dòng tiền ra
2017 Cổ tức đã trả -231718927130 Điều chỉnh / Tổng hợp Khác
2018 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 705355067200 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Mua lại cổ phiếu của doanh nghiệp đã phát hành -729700000 Điều chỉnh / Tổng hợp Khác
2018 Tiền thu từ đi vay 31893805156672 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Tiền chi trả nợ gốc vay -31690848740269 Điều chỉnh / Tổng hợp Dòng tiền ra
2018 Cổ tức đã trả -485862426827 Điều chỉnh / Tổng hợp Khác
2019 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 90454820000 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Mua lại cổ phiếu của doanh nghiệp đã phát hành -4850060000 Điều chỉnh / Tổng hợp Khác
2019 Tiền thu từ đi vay 45905952301242 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Tiền chi trả nợ gốc vay -38801961791867 Điều chỉnh / Tổng hợp Dòng tiền ra
2019 Cổ tức đã trả -665093453185 Điều chỉnh / Tổng hợp Khác
2020 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 105200450000 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Mua lại cổ phiếu của doanh nghiệp đã phát hành -6040930000 Điều chỉnh / Tổng hợp Khác
2020 Tiền thu từ đi vay 51168161383884 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Tiền chi trả nợ gốc vay -48573996682152 Điều chỉnh / Tổng hợp Dòng tiền ra
2020 Cổ tức đã trả -678908841000 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 228253030000 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2320000000 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu từ đi vay 63936208247950 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Tiền chi trả nợ gốc vay -56045130957737 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Cổ tức đã trả -239519441063 Điều chỉnh / Tổng hợp Khác
2022 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 192628370000 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Mua lại cổ phiếu của doanh nghiệp đã phát hành -5025640000 Điều chỉnh / Tổng hợp Khác
2022 Tiền thu từ đi vay 65251647851081 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Tiền chi trả nợ gốc vay -73313739286999 Điều chỉnh / Tổng hợp Dòng tiền ra
2022 Cổ tức đã trả -731854815000 Điều chỉnh / Tổng hợp Khác
2023 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 443220000 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9783280000 Điều chỉnh / Tổng hợp Khác
2023 Tiền thu từ đi vay 70373733043570 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Tiền chi trả nợ gốc vay -61933329857245 Điều chỉnh / Tổng hợp Dòng tiền ra
2023 Cổ tức đã trả -731280023500 Điều chỉnh / Tổng hợp Khác
2024 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 1771634338542 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9141790000 Điều chỉnh / Tổng hợp Khác
2024 Tiền thu từ đi vay 74756279079533 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Tiền chi trả nợ gốc vay -73030338420383 Điều chỉnh / Tổng hợp Dòng tiền ra
2024 Cổ tức đã trả -730957694000 Điều chỉnh / Tổng hợp Khác

Giải thích kỹ thuật:

– Bắt đầu từ data_long.

– filter(ChiTieu %in% c(…)): Lọc ra các chuỗi thời gian của 5 chỉ tiêu chi tiết thuộc hoạt động tài chính. Thao tác này trích xuất một tập dữ liệu con để phân tích sâu hơn về thành phần của dòng tiền tài chính.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Là một bước phân tách, chia nhỏ một nhóm lớn (Dòng tiền từ HĐ Tài chính) thành các thành phần cấu tạo nên nó. Dữ liệu này sẵn sàng cho việc vẽ biểu đồ cột nhóm hoặc biểu đồ diện tích chồng để xem xét cơ cấu qua thời gian.

– Kinh tế:

  • Vay nợ là nguồn vốn chủ đạo: Trong mọi năm, “Tiền thu từ đi vay” luôn là khoản mục dòng tiền vào lớn nhất, vượt trội so với “Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát”. Điều này khẳng định chiến lược tài chính của công ty phụ thuộc chủ yếu vào vốn vay để tài trợ cho tăng trưởng, thay vì huy động vốn từ cổ đông. Công ty ưa thích sử dụng đòn bẩy nợ.

  • Trả nợ là mục tiêu chi tiêu chính: “Tiền chi trả nợ gốc vay” là khoản mục dòng tiền ra lớn nhất và nhất quán nhất qua các năm. Cho thấy công ty rất tích cực trong việc quản lý các khoản nợ của mình. Quy mô trả nợ khổng lồ tương ứng với quy mô vay nợ lớn, củng cố cho mô hình “đảo nợ” để duy trì hoạt động.

  • Chính sách cổ đông không nhất quán: Hoạt động “Mua lại cổ phiếu” và “Cổ tức đã trả” không diễn ra đều đặn và có quy mô nhỏ hơn nhiều so với các hoạt động liên quan đến nợ vay. Cho thấy việc trả lại tiền cho cổ đông (qua cổ tức hoặc mua lại cổ phiếu) không phải là ưu tiên hàng đầu của công ty trong giai đoạn này. Ưu tiên chính là sử dụng vốn cho việc trả nợ và tái đầu tư. Hoạt động phát hành cổ phiếu cũng không phải là kênh huy động vốn chính.

  • Cơ cấu dòng tiền tài chính cho thấy một doanh nghiệp điển hình đang trong giai đoạn tăng trưởng mạnh: tích cực sử dụng nợ vay làm nguồn vốn chính và ưu tiên việc trả nợ và tái đầu tư hơn là các chính sách dành cho cổ đông.

11.12 So sánh giữa Tiền thu từ đi vay và Tiền chi trả nợ gốc vay

debt_flow <- final_analytical_df %>%
  select(Nam, 
         VayNo = `Tiền thu từ đi vay`, 
         TraNo = `Tiền chi trả nợ gốc vay`)
kable(debt_flow)
Nam VayNo TraNo
2015 8129261915021 -6695006247613
2016 19961551061988 -17225505287912
2017 29465789268692 -27456000269116
2018 31893805156672 -31690848740269
2019 45905952301242 -38801961791867
2020 51168161383884 -48573996682152
2021 63936208247950 -56045130957737
2022 65251647851081 -73313739286999
2023 70373733043570 -61933329857245
2024 74756279079533 -73030338420383

Giải thích kỹ thuật:

– select(): Chọn ra 3 cột cần thiết từ final_analytical_df (đã được làm sạch và ở dạng rộng).

– VayNo = …, TraNo = …: Đổi tên cột cho ngắn gọn, dễ sử dụng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị một tập dữ liệu con sạch sẽ, chỉ chứa 2 chuỗi thời gian đối ứng cần so sánh. Đây là dữ liệu nền tảng để vẽ biểu đồ cột kép hoặc biểu đồ đường kép.

– Kinh tế:

  • Giai đoạn Tăng nợ ròng (2015, 2017, 2018, 2019, 2020, 2021, 2023, 2024): Trong hầu hết các năm, giá trị VayNo lớn hơn giá trị tuyệt đối của TraNo. Điều này có nghĩa là công ty đã vay mới nhiều hơn trả nợ cũ. Đây là một chiến lược rõ ràng nhằm tăng quy mô nợ vay để lấy vốn tài trợ cho các hoạt động đầu tư và tăng trưởng. Đây là hành vi điển hình của một doanh nghiệp đang mở rộng.

  • Giai đoạn Giảm nợ ròng (2016, 2022): Trong hai năm này, giá trị VayNo nhỏ hơn giá trị tuyệt đối của TraNo. Đây là những năm công ty đã ưu tiên việc trả nợ, chi ra nhiều tiền để trả nợ gốc hơn là số tiền vay mới.

  • Năm 2022 đặc biệt đáng chú ý: công ty vay ~65,251 nghìn tỷ nhưng trả nợ tới ~73,313 nghìn tỷ, tức là đã giảm nợ ròng khoảng 8,000 nghìn tỷ. Cho thấy đây là một năm công ty thực hiện tái cơ cấu tài chính.

  • Dữ liệu cho thấy một chiến lược tổng thể là liên tục gia tăng đòn bẩy nợ để tăng trưởng, nhưng cũng có những năm công ty chủ động thực hiện việc giảm nợ để kiểm soát rủi ro, cho thấy sự linh hoạt trong quản trị tài chính.

11.13 Tính toán Vay nợ ròng

net_debt_issued <- final_analytical_df %>%
  mutate(VayNoRong = `Tiền thu từ đi vay` + `Tiền chi trả nợ gốc vay`) %>%
  select(Nam, VayNoRong)
kable(net_debt_issued)
Nam VayNoRong
2015 1434255667408
2016 2736045774076
2017 2009788999576
2018 202956416403
2019 7103990509375
2020 2594164701732
2021 7891077290213
2022 -8062091435918
2023 8440403186325
2024 1725940659150

Giải thích kỹ thuật:

– mutate(VayNoRong = …): Tạo một cột mới VayNoRong.

– Vì Tiền chi trả nợ gốc vay là số âm, phép tính Tiền thu từ đi vay + Tiền chi trả nợ gốc vay chính là phép trừ Tiền thu - |Tiền chi|.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo ra một biến phái sinh mới, là một chỉ số tổng hợp thể hiện dòng tiền ròng từ hoạt động vay nợ.

– Kinh tế:

  • Xu hướng chung: Liên tục Tăng nợ: Trong 9 trên 10 năm, giá trị VayNoRong là dương, cho thấy công ty đã liên tục vay thêm nợ mới sau khi đã trừ đi phần trả nợ cũ. Điều này khẳng định mạnh mẽ chiến lược sử dụng đòn bẩy tài chính để tăng trưởng. Công ty không ngần ngại tăng quy mô nợ vay để có nguồn vốn phục vụ cho các hoạt động đầu tư và mở rộng kinh doanh. Mức vay ròng đặc biệt lớn trong các năm 2019, 2021 và 2023.

  • Điểm nhấn 2022: Năm duy nhất Giảm nợ: Năm 2022 là năm duy nhất có VayNoRong là âm (~ -8,062 nghìn tỷ). Đây là một sự kiện tài chính quan trọng. Trong năm này, công ty đã chủ động trả nợ nhiều hơn đi vay, làm giảm quy mô nợ vay của mình. Điều này hoàn toàn khớp với các phân tích trước đó về năm 2022, cho thấy một động thái tái cơ cấu tài chính, có thể là để giảm rủi ro sau một giai đoạn tăng trưởng nóng.

  • Chỉ số Vay nợ ròng đã lượng hóa một cách rõ ràng chiến lược tài chính của công ty: ưu tiên tăng trưởng bằng cách liên tục gia tăng nợ vay, nhưng vẫn có sự chủ động trong việc kiểm soát và giảm nợ khi cần thiết.

11.14 Phân tích dòng tiền liên quan đến Cổ đông (Phát hành, Mua lại, Cổ tức)

equity_flow <- data_long %>%
  filter(ChiTieu %in% c("Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát",
                       "Mua lại cổ phiếu của doanh nghiệp đã phát hành",
                       "Cổ tức đã trả"))
kable(equity_flow)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2015 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp Dòng tiền vào
2015 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2153900000 Điều chỉnh / Tổng hợp Khác
2015 Cổ tức đã trả -1834225628 Điều chỉnh / Tổng hợp Khác
2016 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 0 Điều chỉnh / Tổng hợp Dòng tiền vào
2016 Mua lại cổ phiếu của doanh nghiệp đã phát hành -315300000 Điều chỉnh / Tổng hợp Khác
2016 Cổ tức đã trả -220130282800 Điều chỉnh / Tổng hợp Khác
2017 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 92466480000 Điều chỉnh / Tổng hợp Dòng tiền vào
2017 Mua lại cổ phiếu của doanh nghiệp đã phát hành 0 Điều chỉnh / Tổng hợp Khác
2017 Cổ tức đã trả -231718927130 Điều chỉnh / Tổng hợp Khác
2018 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 705355067200 Điều chỉnh / Tổng hợp Dòng tiền vào
2018 Mua lại cổ phiếu của doanh nghiệp đã phát hành -729700000 Điều chỉnh / Tổng hợp Khác
2018 Cổ tức đã trả -485862426827 Điều chỉnh / Tổng hợp Khác
2019 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 90454820000 Điều chỉnh / Tổng hợp Dòng tiền vào
2019 Mua lại cổ phiếu của doanh nghiệp đã phát hành -4850060000 Điều chỉnh / Tổng hợp Khác
2019 Cổ tức đã trả -665093453185 Điều chỉnh / Tổng hợp Khác
2020 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 105200450000 Điều chỉnh / Tổng hợp Dòng tiền vào
2020 Mua lại cổ phiếu của doanh nghiệp đã phát hành -6040930000 Điều chỉnh / Tổng hợp Khác
2020 Cổ tức đã trả -678908841000 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 228253030000 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2320000000 Điều chỉnh / Tổng hợp Khác
2021 Cổ tức đã trả -239519441063 Điều chỉnh / Tổng hợp Khác
2022 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 192628370000 Điều chỉnh / Tổng hợp Dòng tiền vào
2022 Mua lại cổ phiếu của doanh nghiệp đã phát hành -5025640000 Điều chỉnh / Tổng hợp Khác
2022 Cổ tức đã trả -731854815000 Điều chỉnh / Tổng hợp Khác
2023 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 443220000 Điều chỉnh / Tổng hợp Dòng tiền vào
2023 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9783280000 Điều chỉnh / Tổng hợp Khác
2023 Cổ tức đã trả -731280023500 Điều chỉnh / Tổng hợp Khác
2024 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 1771634338542 Điều chỉnh / Tổng hợp Dòng tiền vào
2024 Mua lại cổ phiếu của doanh nghiệp đã phát hành -9141790000 Điều chỉnh / Tổng hợp Khác
2024 Cổ tức đã trả -730957694000 Điều chỉnh / Tổng hợp Khác

Giải thích kỹ thuật:

– filter(): Lọc ra 3 chuỗi thời gian liên quan đến dòng tiền với các cổ đông.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Trích xuất một nhóm các chuỗi thời gian có liên quan để phân tích.

– Kinh tế:

  • Huy động vốn từ Cổ đông không phải là Kênh chính: Khoản mục “Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát” thường có giá trị bằng 0 hoặc tương đối nhỏ so với quy mô vay nợ. Điều này khẳng định lại rằng công ty không ưu tiên huy động vốn bằng cách phát hành thêm cổ phiếu. Kênh huy động vốn chính của họ là nợ vay.

  • Chính sách “Trả lại tiền” cho Cổ đông: Cả hai khoản mục “Mua lại cổ phiếu của doanh nghiệp đã phát hành” và “Cổ tức đã trả” đều là các dòng tiền chi ra (số âm), và diễn ra khá thường xuyên. Đây là hai cách chính để công ty trả lại tiền mặt cho các cổ đông. Việc thực hiện cả hai hoạt động này cho thấy công ty có ý thức về việc tạo ra giá trị cho người sở hữu.

  • Quy mô “Trả lại tiền” ngày càng tăng: Nếu cộng giá trị tuyệt đối của “Mua lại cổ phiếu” và “Cổ tức đã trả”, chúng ta thấy tổng số tiền chi cho cổ đông có xu hướng tăng lên trong những năm gần đây, đặc biệt là các năm 2022, 2023, 2024. Đây là một tín hiệu tích cực cho các nhà đầu tư. Nó cho thấy khi công ty ngày càng lớn mạnh và tạo ra nhiều tiền hơn, họ cũng sẵn lòng chia sẻ thành quả đó với các cổ đông thông qua việc trả cổ tức và mua lại cổ phiếu, giúp làm tăng giá trị cho khoản đầu tư.

  • Mặc dù không phải là kênh huy động vốn chính, công ty vẫn duy trì một chính sách khá tích cực đối với cổ đông thông qua việc trả cổ tức và mua lại cổ phiếu. Quy mô của các hoạt động này đang có xu hướng tăng lên, phản ánh sự cải thiện về khả năng tạo tiền của doanh nghiệp.

11.15 Tỷ lệ Cổ tức đã trả trên Dòng tiền tự do (FCFF)

dividend_payout_on_fcff <- final_analytical_df %>%
  mutate(Payout_Ratio = abs(`Cổ tức đã trả`) / FCFF) %>%
  select(Nam, Payout_Ratio)
kable(dividend_payout_on_fcff)
Nam Payout_Ratio
2015 -0.0014937
2016 -0.1180152
2017 0.3871051
2018 0.6349461
2019 -0.1527896
2020 0.0986633
2021 -0.0498429
2022 0.2084499
2023 0.2510881
2024 0.0889937

Giải thích kỹ thuật:

– mutate(): Tạo một cột tỷ lệ mới.

– abs(Cổ tức đã trả): Lấy giá trị tuyệt đối vì đây là dòng tiền chi ra (số âm).

– Phép chia cho FCFF để tính tỷ lệ chi trả trên dòng tiền tự do.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo một biến tỷ lệ để chuẩn hóa và đo lường.

– Kinh tế:

  • Giai đoạn đầu và các năm khó khăn: Chính sách cổ tức “gượng ép”. Tỷ lệ này là số âm trong các năm 2015, 2016, 2019, 2021. Tỷ lệ âm xảy ra vì mẫu số (FCFF) là âm. Về mặt kinh tế, điều này có ý nghĩa rất quan trọng: trong những năm đó, công ty không tạo ra đủ dòng tiền tự do nhưng vẫn chi tiền để trả cổ tức. Để làm được điều này, công ty đã phải đi vay hoặc sử dụng tiền dự trữ. Đây là một chính sách cổ tức không bền vững và tiềm ẩn rủi ro.

  • Giai đoạn trưởng thành: Chính sách cổ tức bền vững. Trong các năm có FCFF dương (2017, 2018, 2020, 2022, 2023, 2024), tỷ lệ này đều là số dương và nhỏ hơn 1.0. Đây là một dấu hiệu tài chính rất lành mạnh. Nó cho thấy công ty chỉ sử dụng một phần (từ 8.8% đến 63.4%) dòng tiền tự do mà mình tạo ra để trả cổ tức. Phần còn lại có thể được dùng để trả nợ hoặc tích lũy tiền mặt, tạo ra một “tấm đệm” an toàn.

  • Dữ liệu cho thấy một sự trưởng thành trong chính sách cổ tức. Công ty đã chuyển từ giai đoạn trả cổ tức “gượng ép” (khi dòng tiền tự do âm) sang một chính sách bền vững hơn, chỉ chi trả cổ tức từ phần thặng dư tiền mặt thực sự tạo ra. Điều này làm tăng sự tin tưởng của nhà đầu tư vào khả năng tài chính dài hạn của công ty.

11.16 Xu hướng của Tỷ lệ Tái đầu tư qua các năm

reinvestment_trend <- final_analytical_df %>%
  select(Nam, Reinvestment_Ratio)
kable(reinvestment_trend)
Nam Reinvestment_Ratio
2015 -0.9143321
2016 -2.1804416
2017 0.7752741
2018 0.6615847
2019 -2.3847034
2020 0.3624168
2021 29.0382399
2022 0.5598285
2023 0.1523311
2024 0.0356623

Giải thích kỹ thuật:

– select(): Trích xuất chuỗi thời gian của chỉ số Reinvestment_Ratio đã được tính toán trước đó.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị dữ liệu để vẽ biểu đồ đường hoặc biểu đồ cột, minh họa sự thay đổi của một tỷ lệ quan trọng theo thời gian.

– Kinh tế:

  • Giai đoạn đầu (2015, 2016, 2019): Đầu tư “bất chấp”. Tỷ lệ này là số âm, cho thấy CFO âm. Công ty không chỉ không tạo ra tiền từ kinh doanh mà còn chi tiêu rất mạnh cho đầu tư. Đây là giai đoạn “đốt tiền” quyết liệt nhất, hoàn toàn dựa vào vốn bên ngoài để mở rộng.

  • Điểm bất thường cực lớn (2021): Tỷ lệ tái đầu tư là 29.03, một con số khổng lồ. Trong năm 2021, số tiền công ty chi cho đầu tư lớn gấp 29 lần số tiền ít ỏi mà hoạt động kinh doanh tạo ra. Đây là năm công ty thực hiện một khoản đầu tư cực lớn trong khi CFO rất yếu.

  • Giai đoạn “Trưởng thành” (2020, 2022-2024): Giảm dần mức độ Tái đầu tư. Tỷ lệ này dương nhưng có xu hướng giảm dần rất rõ rệt, từ 0.36 (2020) xuống chỉ còn 0.035 (3.5%) vào năm 2024. Đây là xu hướng quan trọng nhất. Nó cho thấy một sự thay đổi rõ rệt trong chiến lược. Mặc dù CFO vẫn rất lớn, công ty đang dùng ngày càng ít phần trăm trong số đó để tái đầu tư vào tài sản cố định.

  • Xu hướng của tỷ lệ tái đầu tư cho thấy công ty đang chuyển dịch chiến lược một cách rõ nét: từ một doanh nghiệp “tăng trưởng bằng mọi giá”, đầu tư bất chấp, sang một doanh nghiệp trưởng thành hơn, giảm dần cường độ đầu tư vào tài sản và có thể sẽ tập trung hơn vào việc tối ưu hóa hiệu quả và tạo ra giá trị tiền mặt cho cổ đông.

11.17 Xu hướng của Tỷ lệ Chất lượng Lợi nhuận (CFO/PBT)

quality_trend <- final_analytical_df %>%
  select(Nam, CFO_to_PBT_Ratio)
kable(quality_trend)
Nam CFO_to_PBT_Ratio
2015 -0.4628943
2016 -0.2923762
2017 0.9481553
2018 0.5971855
2019 -0.2544957
2020 1.9950013
2021 0.0264835
2022 1.3170130
2023 4.9816807
2024 1.7649712

Giải thích kỹ thuật:

– select(): Trích xuất chuỗi thời gian của chỉ số CFO_to_PBT_Ratio.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị dữ liệu để phân tích xu hướng của một tỷ lệ.

– Kinh tế:

  • Giai đoạn đầu (2015, 2016, 2019): Lợi nhuận “ảo”. Tỷ lệ này là số âm. Mặc dù công ty báo cáo có lợi nhuận (PBT dương), dòng tiền từ hoạt động kinh doanh lại âm. Điều này có nghĩa là lợi nhuận đó chưa được chuyển hóa thành tiền mặt, có thể do tiền bị “kẹt” trong các khoản phải thu hoặc hàng tồn kho.

  • Giai đoạn Chuyển đổi Tốt (2017, 2018): Tỷ lệ dương và ở mức khá (0.94 và 0.59). Đây là giai đoạn công ty bắt đầu chuyển đổi được lợi nhuận thành tiền mặt. Đặc biệt năm 2017, cứ 1 đồng lợi nhuận tạo ra gần 0.95 đồng tiền mặt, một tỷ lệ rất tốt.

  • Giai đoạn Bùng nổ Chất lượng (2020 trở đi, trừ 2021): Tỷ lệ này luôn lớn hơn 1.0, đặc biệt cao vào năm 2020 (1.99), 2023 (4.98), và 2024 (1.76). Đây là một tín hiệu cực kỳ tích cực và ấn tượng. Một tỷ lệ lớn hơn 1.0 có nghĩa là công ty không chỉ chuyển đổi toàn bộ lợi nhuận thành tiền mặt mà còn “tạo” thêm tiền từ việc quản lý vốn lưu động hiệu quả (ví dụ: thu hồi được các khoản nợ cũ, giảm hàng tồn kho…). Đặc biệt năm 2023, công ty tạo ra gần 5 đồng tiền mặt cho mỗi 1 đồng lợi nhuận kế toán, cho thấy một hiệu quả quản trị vượt trội.

  • Xu hướng của tỷ lệ này cho thấy một sự cải thiện ngoạn mục về chất lượng lợi nhuận. Công ty đã đi từ giai đoạn có “lợi nhuận ảo” sang giai đoạn có khả năng tạo ra dòng tiền vượt trội so với lợi nhuận kế toán, một dấu hiệu của hiệu quả hoạt động và quản trị tài chính xuất sắc.

11.18 Xu hướng của Khả năng trả nợ (CFO/Trả nợ gốc)

debt_coverage_trend <- final_analytical_df %>%
  select(Nam, CFO_to_DebtPayment_Ratio)
kable(debt_coverage_trend)
Nam CFO_to_DebtPayment_Ratio
2015 -0.0958134
2016 -0.0340473
2017 0.0970157
2018 0.0713498
2019 -0.0331447
2020 0.2221853
2021 0.0030581
2022 0.1087968
2023 0.0554762
2024 0.1166273

Giải thích kỹ thuật:

– select(): Trích xuất chuỗi thời gian của chỉ số CFO_to_DebtPayment_Ratio.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị dữ liệu để phân tích xu hướng.

– Kinh tế:

  • Khả năng tự chủ trả nợ Rất thấp: Trong suốt 10 năm, tỷ lệ này luôn luôn nhỏ hơn 1.0 một cách đáng kể. Tỷ lệ cao nhất chỉ đạt 0.22 (22%) vào năm 2020. Điều này cho thấy một sự thật quan trọng: Dòng tiền từ hoạt động kinh doanh của công ty chưa bao giờ đủ để tự trang trải cho các khoản nợ gốc đã trả. Ngay cả trong năm tốt nhất, công ty cũng chỉ tạo ra được 22 đồng từ kinh doanh cho mỗi 100 đồng nợ gốc đã trả.

  • Sự phụ thuộc vào “Đảo nợ”: Vì không thể dùng tiền từ kinh doanh để trả nợ, công ty bắt buộc phải liên tục huy động các nguồn vốn khác (vay nợ mới, phát hành cổ phiếu) để có tiền trả nợ cũ. Đây là một mô hình “đảo nợ” điển hình của các doanh nghiệp đang trong giai đoạn tăng trưởng nóng và sử dụng đòn bẩy tài chính cao.

  • Xu hướng của chỉ số này vẽ nên một bức tranh rõ ràng về rủi ro tài chính. Mặc dù công ty đang tăng trưởng mạnh, nhưng sức khỏe tài chính nội tại của nó còn yếu và phụ thuộc rất nhiều vào khả năng liên tục huy động vốn từ thị trường. Bất kỳ sự tắc nghẽn nào trong việc huy động vốn đều có thể tạo ra áp lực thanh khoản rất lớn cho công ty.

11.19 Tìm mối tương quan giữa CFO và FCFF

correlation_cfo_fcff <- final_analytical_df %>%
  summarise(Correlation = cor(`Lưu chuyển tiền thuần từ hoạt động kinh doanh`, FCFF))
kable(correlation_cfo_fcff)
Correlation
0.9212048

Giải thích kỹ thuật:

– summarise(Correlation = cor(…, …)): cor() là hàm tính toán hệ số tương quan Pearson giữa hai biến số. Hệ số này dao động từ -1 đến 1.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Cung cấp một con số duy nhất để đo lường mức độ và chiều hướng của mối quan hệ tuyến tính giữa hai biến.

– Kinh tế:

  • Mối quan hệ Đồng biến Rất mạnh: Hệ số tương quan là 0.921, một giá trị rất gần với 1. Điều này cho thấy có một mối quan hệ đồng biến (cùng chiều) và rất chặt chẽ giữa CFO và FCFF. Nói một cách đơn giản: khi dòng tiền từ hoạt động kinh doanh tăng, dòng tiền tự do cũng có xu hướng tăng mạnh theo, và ngược lại.

  • Chi tiêu vốn (Capex) tương đối ổn định: Vì FCFF = CFO - Capex, một mối tương quan cao giữa FCFF và CFO ngụ ý rằng thành phần còn lại (Capex) không biến động quá “hoang dã” so với CFO. Điều này cho thấy mặc dù công ty chi tiêu rất nhiều cho đầu tư, nhưng khoản chi tiêu này tương đối ổn định hoặc có thể dự đoán được, và không làm “triệt tiêu” hoàn toàn sự tăng trưởng của dòng tiền từ kinh doanh.

  • Mối tương quan cao này là một tín hiệu rất tích cực. Nó cho thấy sự tăng trưởng trong hoạt động kinh doanh cốt lõi (CFO) đã được chuyển hóa hiệu quả thành giá trị tiền mặt thực sự cho nhà đầu tư (FCFF). Điều này làm tăng sự tin tưởng vào mô hình kinh doanh và khả năng tạo ra giá trị bền vững của công ty.

11.20 Xác định những năm CFO, CFI, CFF đều dương/âm theo một mẫu nhất định

cashflow_strategy_profile <- final_analytical_df %>%
  mutate(
    CFO_Status = ifelse(`Lưu chuyển tiền thuần từ hoạt động kinh doanh` > 0, "+", "-"),
    CFI_Status = ifelse(`Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư` > 0, "+", "-"),
    CFF_Status = ifelse(`Lưu chuyển tiền thuần từ hoạt động tài chính` > 0, "+", "-"),
    Profile = paste0("CFO:", CFO_Status, ", CFI:", CFI_Status, ", CFF:", CFF_Status)
  ) %>%
  select(Nam, Profile)
kable(cashflow_strategy_profile)
Nam Profile
2015 CFO:-, CFI:-, CFF:+
2016 CFO:-, CFI:-, CFF:+
2017 CFO:+, CFI:-, CFF:+
2018 CFO:+, CFI:-, CFF:+
2019 CFO:-, CFI:-, CFF:+
2020 CFO:+, CFI:-, CFF:+
2021 CFO:+, CFI:-, CFF:+
2022 CFO:+, CFI:+, CFF:-
2023 CFO:+, CFI:-, CFF:+
2024 CFO:+, CFI:-, CFF:+

Giải thích kỹ thuật:

– Sử dụng một chuỗi các lệnh mutate(ifelse(…)) để tạo ra 3 cột trạng thái (+/-) cho 3 dòng tiền thuần.

– paste0(): Nối các chuỗi trạng thái này lại thành một “profile” duy nhất cho mỗi năm, ví dụ “CFO:+, CFI:-, CFF:+”.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một kỹ thuật phân loại hoặc tạo profile. Chúng ta đã mã hóa 3 biến số thành một biến phân loại duy nhất mô tả trạng thái tổng thể.

– Kinh tế:

  • Mô hình “Khởi nghiệp/Khủng hoảng” (CFO:-, CFI:-, CFF:+): Xuất hiện trong các năm 2015, 2016, 2019. Đây là mô hình của một công ty đang “đốt tiền” ở cả hoạt động kinh doanh (CFO-) và đầu tư (CFI-). Để tồn tại và phát triển, công ty phải liên tục huy động vốn từ bên ngoài (CFF+). Đây là giai đoạn rủi ro nhất.

  • Mô hình “Tăng trưởng” (CFO:+, CFI:-, CFF:+): Đây là mô hình phổ biến nhất, xuất hiện trong đa số các năm (2017, 2018, 2020, 2021, 2023, 2024). Đây là mô hình kinh điển của một doanh nghiệp đang tăng trưởng. Hoạt động kinh doanh cốt lõi đã tạo ra tiền (CFO+). Lượng tiền này cùng với vốn huy động thêm từ bên ngoài (CFF+) được dùng để tài trợ cho các hoạt động đầu tư mở rộng quy mô (CFI-).

  • Mô hình “Tái cơ cấu” (CFO:+, CFI:+, CFF:-): Mô hình này duy nhất xuất hiện vào năm 2022. Đây là một mô hình rất đặc biệt. Công ty tạo ra tiền từ cả hoạt động kinh doanh (CFO+) và hoạt động đầu tư (CFI+, nghĩa là bán tài sản/thu hồi vốn). Toàn bộ lượng tiền dồi dào này được dùng để trả nợ/cổ tức/mua lại cổ phiếu (CFF-). Điều này khẳng định năm 2022 là một năm công ty thực hiện tái cơ cấu tài chính một cách mạnh mẽ.

  • Việc phân loại profile đã cho thấy một sự tiến hóa rõ ràng: từ một công ty “khởi nghiệp” rủi ro, trở thành một cỗ máy “tăng trưởng” điển hình, và có cả những năm thực hiện “tái cơ cấu” một cách chủ động.

11.21 Phân tích mối quan hệ giữa Tiền đầu năm, Tiền cuối năm và LCTT trong năm

cash_balance_analysis <- final_analytical_df %>%
  select(
    Nam,
    TienDauNam = `Tiền và tương đương tiền đầu năm`,
    LCTT_TrongNam = `Lưu chuyển tiền thuần trong năm`,
    TienCuoiNam = `Tiền và tương đương tiền cuối năm`
  )
kable(cash_balance_analysis)
Nam TienDauNam LCTT_TrongNam TienCuoiNam
2015 212920620191 130952348514 343872968705
2016 343872968705 653080617859 996983462012
2017 996983462012 2413985522819 3410983351393
2018 3410983351393 338459847513 3749550258212
2019 3749550258212 -634340602108 3115236816468
2020 3115236816468 4232583706879 7347857397925
2021 7347857397925 -3205988289364 4142015762555
2022 4142015762555 919066704043 5061020547422
2023 5061020547422 304315581953 5365704857172
2024 5365704857172 -468477449984 4897331540730

Giải thích kỹ thuật:

– select(): Chọn ra 4 cột từ final_analytical_df để tạo một bảng dữ liệu con, tập trung vào việc phân tích sự thay đổi của số dư tiền mặt.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị một tập dữ liệu sạch sẽ để kiểm tra một phương trình kế toán cơ bản và để trực quan hóa. Dữ liệu này lý tưởng cho việc vẽ biểu đồ thác nước hoặc biểu đồ cột nhóm.

– Kinh tế:

  • Xu hướng Tích lũy Tiền mặt: So sánh cột TienCuoiNam qua các năm, chúng ta thấy một xu hướng tăng trưởng rõ rệt, từ ~343 tỷ năm 2015 lên đến ~4,897 tỷ năm 2024. Mặc dù có những năm thăng trầm, nhưng về dài hạn, công ty đã tích lũy được một lượng tiền mặt ngày càng lớn. Điều này cho thấy khả năng tạo ra thặng dư dòng tiền và cải thiện vị thế thanh khoản của doanh nghiệp.

  • Minh họa tác động của Dòng tiền: Những năm LCTT_TrongNam dương (ví dụ 2020: +4,232 tỷ), TienCuoiNam tăng vọt so với TienDauNam. Những năm LCTT_TrongNam âm (ví dụ 2021: -3,205 tỷ), TienCuoiNam sụt giảm mạnh. Bảng dữ liệu này minh họa một cách trực quan và mạnh mẽ rằng Lưu chuyển tiền thuần trong năm chính là động lực duy nhất làm tăng hoặc giảm lượng tiền mặt của công ty. Nó cho thấy dòng tiền ròng hàng năm có tác động trực tiếp và ngay lập tức đến “số dư tài khoản ngân hàng” của doanh nghiệp.

Dữ liệu cho thấy công ty đang ngày càng “giàu” hơn về mặt tiền mặt, và sự giàu có này biến động trực tiếp theo kết quả của dòng tiền ròng tạo ra mỗi năm.

11.22 Tỷ lệ Tiền cuối năm so với Tổng dòng tiền chi ra trong năm

total_spending <- data_long %>%
  filter(grepl("Tiền chi", ChiTieu)) %>%
  group_by(Nam) %>%
  summarise(TongTienChi = sum(GiaTri))
cash_cushion_ratio <- final_analytical_df %>%
  left_join(total_spending, by = "Nam") %>%
  mutate(Cash_Cushion = `Tiền và tương đương tiền cuối năm` / abs(TongTienChi)) %>%
  select(Nam, Cash_Cushion)
kable(cash_cushion_ratio)
Nam Cash_Cushion
2015 0.0467615
2016 0.0538785
2017 0.1147268
2018 0.1099547
2019 0.0612436
2020 0.1148142
2021 0.0516052
2022 0.0512459
2023 0.0554803
2024 0.0390246

Giải thích kỹ thuật:

– Tính TongTienChi hàng năm từ data_long.

– Sử dụng left_join() để ghép kết quả này vào bảng final_analytical_df.

– mutate() để tính tỷ lệ Cash_Cushion bằng cách lấy Tiền cuối năm chia cho giá trị tuyệt đối của TongTienChi.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo ra một biến tỷ lệ mới để đo lường mức độ an toàn tài chính.

– Kinh tế:

  • “Đệm” tiền mặt Mỏng và có xu hướng Giảm: Tỷ lệ này rất thấp trong suốt 10 năm, dao động chủ yếu trong khoảng 0.04 đến 0.11 (tức 4% - 11%). Đặc biệt, vào năm 2024, tỷ lệ này giảm xuống mức thấp nhất là 0.039 (3.9%). Một “đệm” tiền mặt mỏng cho thấy công ty đang vận hành với mức độ an toàn thanh khoản thấp. Lượng tiền mặt dự trữ chỉ đủ để trang trải một phần rất nhỏ trong tổng chi tiêu hàng năm. Ví dụ, tỷ lệ 3.9% năm 2024 có nghĩa là lượng tiền mặt cuối năm chỉ đủ để “sống sót” được khoảng 2 tuần (3.9% của 365 ngày) nếu mọi nguồn thu đột ngột dừng lại.

  • Rủi ro phụ thuộc vào Dòng tiền liên tục: Mức đệm tiền mặt thấp cho thấy công ty phụ thuộc rất lớn vào việc dòng tiền thu về phải diễn ra liên tục và đúng hạn để có tiền đáp ứng các nghĩa vụ chi trả. Bất kỳ sự gián đoạn nào trong dòng thu (ví dụ: khách hàng trả chậm) đều có thể gây ra khó khăn thanh khoản ngay lập tức.

  • Mặc dù công ty đã tích lũy được lượng tiền mặt ngày càng lớn nhưng quy mô chi tiêu còn tăng nhanh hơn, dẫn đến một “tấm đệm” an toàn về tiền mặt ngày càng mỏng đi. Đây là một rủi ro thanh khoản tiềm ẩn mà ban lãnh đạo cần phải quản lý cẩn trọng.

11.23 Thống kê số năm có lượng tiền cuối năm tăng/giảm

cash_change_status <- final_analytical_df %>%
  mutate(TrangThaiTien = ifelse(`Lưu chuyển tiền thuần trong năm` > 0, 
                                "Tăng", "Giảm")) %>%
  count(TrangThaiTien)
kable(cash_change_status)
TrangThaiTien n
Giảm 3
Tăng 7

Giải thích kỹ thuật:

– mutate(TrangThaiTien = ifelse(…, “Tăng”, “Giảm”)): Dựa trên dấu của Lưu chuyển tiền thuần trong năm để tạo ra một cột phân loại mới.

– count(TrangThaiTien): Đếm tần suất xuất hiện của mỗi loại trong cột TrangThaiTien.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Là một phép tần suất, tóm tắt 10 năm dữ liệu thành một bảng đếm đơn giản.

– Kinh tế:

  • Xu hướng chung là Tích lũy tiền mặt: Số năm có lượng tiền mặt tăng (7 năm) nhiều hơn gấp đôi số năm bị giảm (3 năm). Điều này cho thấy một xu hướng dài hạn rất rõ ràng: công ty có khả năng tạo ra thặng dư dòng tiền và tích lũy tiền mặt theo thời gian. Mặc dù có những năm khó khăn hoặc đầu tư lớn khiến tiền mặt sụt giảm, nhưng nhìn chung, công ty đang ngày càng mạnh hơn về mặt thanh khoản.

  • Khả năng Phục hồi: Việc có 7/10 năm tạo ra dòng tiền dương cho thấy công ty có khả năng phục hồi tốt sau những năm khó khăn (như 2019, 2021). Sau một năm sụt giảm tiền mặt, công ty thường nhanh chóng lấy lại đà và tạo ra thặng dư trong các năm tiếp theo.

  • Dữ liệu này củng cố một nhận định tích cực về sức khỏe tài chính của công ty. Về dài hạn, đây là một “cỗ máy” có khả năng tạo ra và tích lũy tiền mặt, một đặc điểm rất hấp dẫn đối với các nhà đầu tư.

11.24 So sánh tốc độ tăng trưởng của CFO và Capex

cfo_capex_growth <- final_analytical_df %>%
  mutate(
    CFO_Growth = (`Lưu chuyển tiền thuần từ hoạt động kinh doanh` / lag(`Lưu chuyển tiền thuần từ hoạt động kinh doanh`) - 1) * 100,
    Capex_Growth = (abs(`Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác`) / abs(lag(`Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác`)) - 1) * 100
  ) %>%
  select(Nam, CFO_Growth, Capex_Growth)
kable(cfo_capex_growth)
Nam CFO_Growth Capex_Growth
2015 NA NA
2016 -8.57244 118.03067
2017 -554.17688 61.48635
2018 -15.11187 -27.56022
2019 -156.87768 105.01743
2020 -939.17196 27.53370
2021 -98.41194 27.24165
2022 4553.87626 -10.27787
2023 -56.92454 -88.27903
2024 147.89759 -41.96456

Giải thích kỹ thuật:

– Sử dụng mutate() và hàm lag() để tính toán phần trăm tăng trưởng so với năm trước cho cả hai chỉ tiêu CFO và Capex. abs() được dùng cho Capex để tính toán trên giá trị chi tiêu tuyệt đối.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tạo ra hai chuỗi thời gian mới về tốc độ thay đổi để so sánh.

– Kinh tế:

  • Giai đoạn đầu: Đầu tư “bất chấp” kết quả kinh doanh. Trong giai đoạn 2016-2017, CFO_Growth âm (cho thấy CFO đang cải thiện từ mức âm) nhưng Capex_Growth lại dương rất mạnh (+118%, +61%). Điều này cho thấy trong giai đoạn đầu, các quyết định đầu tư được đưa ra bất chấp tình hình dòng tiền từ kinh doanh còn yếu kém. Công ty chấp nhận rủi ro, tăng cường đầu tư mạnh mẽ với kỳ vọng vào tương lai.

  • Mối quan hệ Nghịch đảo: “Thắt lưng buộc bụng” và “Vung tay”. Có một xu hướng thú vị: những năm CFO_Growth rất tốt (như 2022: +4553%) thì Capex_Growth lại âm (-10%). Ngược lại, những năm CFO sụt giảm (như 2019, 2023), công ty lại có xu hướng tăng chi tiêu Capex. Điều này có thể cho thấy một chiến lược đầu tư mang tính chu kỳ và dài hạn. Công ty không quyết định đầu tư dựa trên kết quả của một năm duy nhất. Họ có thể đã lên kế hoạch cho các dự án lớn từ trước, và vẫn thực hiện chúng ngay cả khi dòng tiền kinh doanh tạm thời suy yếu. Ngược lại, sau một năm CFO bùng nổ, họ có thể tạm thời giảm tốc độ đầu tư để củng cố tài chính.

  • Giai đoạn gần đây: Cắt giảm Đầu tư. Trong 3 năm gần nhất (2022-2024), Capex_Growth liên tục âm. Cho thấy công ty đang trong giai đoạn cắt giảm hoặc giảm tốc độ đầu tư vào tài sản cố định so với các năm trước, củng cố nhận định rằng công ty đang bước vào giai đoạn trưởng thành hơn, ít thâm dụng vốn hơn.

11.25 Phân tích các khoản mục có ảnh hưởng lớn nhất đến dòng tiền năm 2021

analysis_2021 <- data_long %>%
  filter(Nam == 2021) %>%
  arrange(GiaTri)
kable(analysis_2021)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2021 Tiền chi trả nợ gốc vay -56045130957737 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -19225219180045 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -11254869604436 HĐ Đầu Tư Khác
2021 (Tăng) giảm hàng tồn kho -9923705315353 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác -4976876590016 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Lưu chuyển tiền thuần trong năm -3205988289364 Điều chỉnh / Tổng hợp Khác
2021 Thuế thu nhập doanh nghiệp đã nộp -1533102122807 Điều chỉnh / Tổng hợp Khác
2021 Lãi từ hoạt động đầu tư -959323580633 HĐ Đầu Tư Khác
2021 Giảm các khoản phải thu -827596105467 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Tiền lãi vay đã trả -585136035219 Điều chỉnh / Tổng hợp Khác
2021 Cổ tức đã trả -239519441063 Điều chỉnh / Tổng hợp Khác
2021 Giảm chi phí trả trước -27490477725 Điều chỉnh / Tổng hợp Dòng tiền ra
2021 Tiền chi đầu tư góp vốn vào đơn vị khác -16385001737 HĐ Đầu Tư Dòng tiền ra
2021 Mua lại cổ phiếu của doanh nghiệp đã phát hành -2320000000 Điều chỉnh / Tổng hợp Khác
2021 Lỗ chênh lệch tỷ giá hối đoái do đánh giá lại các khoản mục tiền tệ có gốc ngoại tệ -146653994 Điều chỉnh / Tổng hợp Khác
2021 Ảnh hưởng của thay đổi tỷ giá hối đoái quy đổi ngoại tệ 146653994 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu do thanh lý, nhượng bán TSCĐ 1107020670 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Lưu chuyển tiền thuần từ hoạt động kinh doanh 171390435922 HĐ Kinh Doanh Khác
2021 Dự phòng (hoàn nhập các khoản dự phòng) 179550717177 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu từ phát hành cổ phiếu và vốn góp của cổ đông không kiểm soát 228253030000 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Chi phí lãi vay 674427746189 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu lãi từ tiền gửi, cho vay 796626468011 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại) 2920713608410 Điều chỉnh / Tổng hợp Khác
2021 Tăng (giảm) các khoản phải trả 3781614904801 Điều chỉnh / Tổng hợp Dòng tiền vào
2021 Tiền và tương đương tiền cuối năm 4142015762555 Điều chỉnh / Tổng hợp Khác
2021 Lợi nhuận kế toán trước thuế 6471583750543 Điều chỉnh / Tổng hợp Khác
2021 Tiền và tương đương tiền đầu năm 7347857397925 Điều chỉnh / Tổng hợp Khác
2021 Lưu chuyển tiền thuần từ hoạt động tài chính 7877490879150 HĐ Tài Chính Khác
2021 Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 9286805587692 HĐ Kinh Doanh Khác
2021 Thu hồi tiền gửi ngân hàng có kỳ hạn 12163993969618 Điều chỉnh / Tổng hợp Khác
2021 Tiền thu từ đi vay 63936208247950 Điều chỉnh / Tổng hợp Dòng tiền vào

Giải thích kỹ thuật:

– filter(Nam == 2021): Lọc ra tất cả 31 chỉ tiêu chỉ trong năm 2021.

– arrange(GiaTri): Sắp xếp các chỉ tiêu theo giá trị từ thấp nhất (âm lớn nhất) đến cao nhất (dương lớn nhất).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Là một thao tác “drill-down” và xếp hạng để tìm ra các giá trị ngoại lai trong một tập dữ liệu con.

– Kinh tế:

  • “Thủ phạm” chính: Hoạt động Đầu tư và Trả nợ. Các khoản chi ra (số âm) lớn nhất tuyệt đối là Tiền chi trả nợ gốc vay: -5,604 tỷ; Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác: -4,976 tỷ; Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn: -1,922 tỷ. Rõ ràng, nguyên nhân chính khiến tiền mặt sụt giảm mạnh trong năm 2021 đến từ hai hoạt động: trả một khoản nợ gốc khổng lồ và tiếp tục chi tiêu rất mạnh tay cho đầu tư tài sản. Đây là hai “cỗ máy ngốn tiền” chính trong năm.

  • “Cứu tinh”: Hoạt động Tài chính (Vay mới). Khoản thu vào (số dương) lớn nhất tuyệt đối là Tiền thu từ đi vay: +6,393 tỷ; Thu hồi tiền gửi ngân hàng có kỳ hạn: +1,216 tỷ. Để có tiền thực hiện các khoản chi khổng lồ ở trên, công ty đã phải dựa chủ yếu vào việc vay một khoản nợ mới rất lớn. Hoạt động kinh doanh cốt lõi (CFO) chỉ đóng góp một phần rất nhỏ (+171 tỷ).

  • Năm 2021 là một năm tái cơ cấu tài chính và đầu tư mạnh mẽ. Công ty đã thực hiện một chiến lược “vay mới để trả nợ cũ và đầu tư thêm” với quy mô rất lớn. Mặc dù dòng tiền kinh doanh yếu, nhưng các quyết định chiến lược về tài chính và đầu tư mới là yếu tố chính định hình nên kết quả dòng tiền âm nặng của năm này.

11.26 Top 5 khoản mục chi tiền lớn nhất trung bình trong 10 năm

top_5_spending_items <- data_long %>%
  filter(GiaTri < 0) %>%
  group_by(ChiTieu) %>%
  summarise(TrungBinhChi = mean(GiaTri)) %>%
  arrange(TrungBinhChi) %>%
  head(5)
kable(top_5_spending_items)
ChiTieu TrungBinhChi
Tiền chi trả nợ gốc vay -43476585754129
Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn -18392664586783
Lưu chuyển tiền thuần từ hoạt động tài chính -8606343520918
Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư -6074995921355
(Tăng) giảm hàng tồn kho -4809258998035

Giải thích kỹ thuật:

– filter(GiaTri < 0): Chỉ giữ lại các khoản mục chi tiền.

– group_by(ChiTieu): Nhóm tất cả các giá trị của cùng một chỉ tiêu qua 10 năm lại với nhau.

– summarise(TrungBinhChi = mean(GiaTri)): Tính giá trị chi trung bình cho mỗi chỉ tiêu.

– arrange(TrungBinhChi): Sắp xếp theo giá trị trung bình tăng dần (tức là từ số âm nhỏ nhất).

– head(5): Lấy 5 dòng đầu tiên.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tính toán giá trị trung bình có điều kiện và xếp hạng để tìm ra các thành phần quan trọng nhất.

– Kinh tế:

  • Trả nợ gốc vay là Gánh nặng Lớn nhất: “Tiền chi trả nợ gốc vay” đứng đầu danh sách với mức chi trung bình khổng lồ (~ -4,347 nghìn tỷ/năm). Điều này khẳng định rằng nghĩa vụ trả nợ là hoạt động “ngốn tiền” số một của công ty. Quy mô trả nợ lớn phản ánh quy mô vay nợ lớn, cho thấy mô hình kinh doanh của công ty phụ thuộc nhiều vào đòn bẩy tài chính.

  • Đầu tư Tài chính và Đầu tư Mở rộng: Các khoản chi cho hoạt động đầu tư như “Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn” (~ -1,839 nghìn tỷ) và “Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư” (~ -6,074 nghìn tỷ - con số này là tổng hợp) cũng chiếm vị trí cao. Cho thấy ngoài việc trả nợ, ưu tiên sử dụng tiền mặt thứ hai của công ty là cho các hoạt động đầu tư, bao gồm cả đầu tư tài chính (gửi tiết kiệm) và đầu tư vào tài sản dài hạn.

  • Hàng tồn kho là một vấn đề: Khoản mục “(Tăng) giảm hàng tồn kho” lọt vào top 5 với mức chi trung bình ~ -480 tỷ/năm. Dấu âm ở đây có nghĩa là hàng tồn kho có xu hướng tăng lên theo thời gian. Điều này cho thấy việc quản lý hàng tồn kho là một điểm yếu, “giam” một lượng tiền mặt đáng kể của công ty một cách thường xuyên.

  • Phân tích top các khoản chi cho thấy mô hình tài chính của công ty xoay quanh 3 trục chính: (1) Trả nợ vay, (2) Tái đầu tư mở rộng, và (3) Tài trợ cho hàng tồn kho.

11.27 Top 5 khoản mục thu tiền lớn nhất trung bình trong 10 năm

top_5_revenue_items <- data_long %>%
  filter(GiaTri > 0) %>%
  group_by(ChiTieu) %>%
  summarise(TrungBinhThu = mean(GiaTri)) %>%
  arrange(desc(TrungBinhThu)) %>%
  head(5)
kable(top_5_revenue_items)
ChiTieu TrungBinhThu
Tiền thu từ đi vay 46084238930963
Thu hồi tiền gửi ngân hàng có kỳ hạn 15951351905978
Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động 5893430156777
Lưu chuyển tiền thuần từ hoạt động kinh doanh 5116868118154
(Tăng) giảm hàng tồn kho 4743513450008

Giải thích kỹ thuật: Tương tự Thao tác trên, nhưng filter(GiaTri > 0) và arrange(desc(TrungBinhThu)) để sắp xếp giảm dần.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Tương tự thao tác trên.

– Kinh tế:

  • Hoạt động kinh doanh là Nền tảng: Cả “Lợi nhuận từ HĐKD trước thay đổi vốn lưu động” (~5,893 nghìn tỷ) và “Lưu chuyển tiền thuần từ HĐKD” (~5,116 nghìn tỷ) đều nằm trong top đầu. Điều này khẳng định rằng về dài hạn, hoạt động kinh doanh cốt lõi là nền tảng tạo ra tiền mặt cho công ty. Đây là một dấu hiệu cực kỳ tích cực về sự bền vững của mô hình kinh doanh.

  • Vay nợ là Động lực Tăng trưởng chính: “Tiền thu từ đi vay” đứng đầu danh sách với mức thu trung bình khổng lồ (~4,608 nghìn tỷ/năm). Điều này cho thấy nguồn tiền mặt lớn nhất và nhất quán nhất của công ty đến từ việc vay nợ. Nó một lần nữa khẳng định chiến lược sử dụng đòn bẩy tài chính để tài trợ cho các hoạt động tăng trưởng.

  • Thu hồi Tiền gửi là Nguồn Phụ trợ: “Thu hồi tiền gửi ngân hàng có kỳ hạn” cũng là một nguồn thu đáng kể (~1,595 nghìn tỷ/năm). Cho thấy công ty cũng tích cực sử dụng các khoản tiền gửi ngắn hạn. Việc thu hồi các khoản này tạo ra một nguồn tiền linh hoạt để đáp ứng các nhu cầu vốn đột xuất.

  • Phân tích top các khoản thu cho thấy mô hình tài chính của công ty dựa trên hai trụ cột chính: (1) Nền tảng vững chắc từ hoạt động kinh doanh cốt lõi và (2) Động lực tăng trưởng mạnh mẽ từ việc liên tục huy động vốn vay.

11.28 Tính toán độ biến động của 3 dòng tiền thuần chính

cashflow_volatility <- final_analytical_df %>%
  summarise(
    SD_CFO = sd(`Lưu chuyển tiền thuần từ hoạt động kinh doanh`),
    SD_CFI = sd(`Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư`),
    SD_CFF = sd(`Lưu chuyển tiền thuần từ hoạt động tài chính`)
  )
kable(cashflow_volatility)
SD_CFO SD_CFI SD_CFF
4322788031089 4967871564684 4733336937605

Giải thích kỹ thuật:

– summarise(): Sử dụng hàm sd() (standard deviation - độ lệch chuẩn) để tính toán độ biến động cho mỗi dòng tiền thuần.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Độ lệch chuẩn là một thước đo thống kê cơ bản về mức độ phân tán của dữ liệu quanh giá trị trung bình. Một độ lệch chuẩn cao có nghĩa là dữ liệu biến động rất mạnh.

– Kinh tế:

  • Hoạt động Đầu tư (CFI) là Biến động nhất: SD_CFI (~4,967 nghìn tỷ) có giá trị cao nhất. Điều này hoàn toàn hợp lý. Các quyết định đầu tư (mua/bán tài sản) thường mang tính dự án, không diễn ra đều đặn. Có những năm công ty chi đầu tư rất lớn, và có những năm chi ít hơn hoặc thậm chí bán tài sản, tạo ra sự biến động rất lớn cho dòng tiền này.

  • Hoạt động Tài chính (CFF) và Kinh doanh (CFO) có mức độ biến động tương đương: SD_CFF (~4,733 nghìn tỷ) và SD_CFO (~4,322 nghìn tỷ) có giá trị lớn và khá gần nhau.

  • CFF: Sự biến động lớn của dòng tiền tài chính phản ánh mô hình “vay mới trả cũ” và các quyết định huy động vốn/trả nợ theo từng năm để tài trợ cho hoạt động đầu tư.

  • CFO: Mức độ biến động cao của dòng tiền từ kinh doanh là một điểm cần lưu ý. Nó cho thấy khả năng tạo tiền từ hoạt động cốt lõi của công ty không ổn định mà thay đổi mạnh mẽ qua các năm, phản ánh sự nhạy cảm với chu kỳ kinh doanh hoặc những thay đổi trong quản lý vốn lưu động.

  • Cả ba hoạt động chính của công ty đều có mức độ biến động dòng tiền rất cao, cho thấy đây là một doanh nghiệp hoạt động trong một môi trường kinh doanh năng động và có mức độ rủi ro đáng kể. Trong đó, dòng tiền từ hoạt động đầu tư là khó dự đoán nhất.

11.29 So sánh dòng tiền thuần hàng năm với giá trị trung bình 10 năm

comparison_to_mean <- final_analytical_df %>%
  select(Nam, 
         CFO = `Lưu chuyển tiền thuần từ hoạt động kinh doanh`,
         CFI = `Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư`,
         CFF = `Lưu chuyển tiền thuần từ hoạt động tài chính`
         ) %>%
  mutate(
    CFO_vs_Avg = CFO - mean(CFO),
    CFI_vs_Avg = CFI - mean(CFI),
    CFF_vs_Avg = CFF - mean(CFF)
  )
kable(comparison_to_mean)
Nam CFO CFI CFF CFO_vs_Avg CFI_vs_Avg CFF_vs_Avg
2015 -641471376080 -657843817186 1430267541780 -3971875680385 4654741369702 -1020277139615
2016 -586481629900 -1276037943517 2515600191276 -3916885934205 4036547243371 65055509881
2017 2663663956855 -2120214986482 1870536552446 -666740347450 3192370200406 -580008128949
2018 2261134531069 -2344394040332 421719356776 -1069269773236 2968191146556 -2028825324619
2019 -1286080778045 -5872761640253 6524501816190 -4616485082350 -560176453365 4073957134795
2020 10792429218774 -8574260892627 2014415380732 7462024914469 -3261675705739 -436129300663
2021 171390435922 -11254869604436 7877490879150 -3159013868383 -5942284417548 5426946197755
2022 7976298801645 1549111423316 -8606343520918 4645894497340 6861696610204 -11056888202313
2023 3435827176070 -10831294696942 7699783102825 105422871765 -5518709510054 5249238421430
2024 8517332706742 -11743285670418 2757475513692 5186928402437 -6430700483530 306930832297

Giải thích kỹ thuật:

– mutate(CFO_vs_Avg = CFO - mean(CFO)): Tạo một cột mới bằng cách lấy giá trị CFO của mỗi năm trừ đi giá trị trung bình của cột CFO trong 10 năm.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một kỹ thuật chuẩn hóa dữ liệu bằng cách “center” nó quanh giá trị 0. Các giá trị mới này cho biết độ lệch so với mức trung bình.

– Kinh tế:

  • Dòng tiền Kinh doanh (CFO_vs_Avg): Các năm 2020, 2022, 2024 có giá trị dương rất lớn, trong khi các năm đầu và năm 2019 có giá trị âm sâu. Cho thấy các năm gần đây, đặc biệt là 2020, là những năm công ty có hiệu suất tạo tiền từ kinh doanh vượt trội so với mức trung bình lịch sử. Ngược lại, những năm đầu là những năm hoạt động yếu kém hơn nhiều so với “phong độ” chung.

  • Dòng tiền Đầu tư (CFI_vs_Avg): Năm 2022 có giá trị dương rất lớn, trong khi các năm còn lại hầu hết là âm hoặc dương nhẹ. Khẳng định lại năm 2022 là một năm bất thường và ngoại lệ về hoạt động đầu tư. Thay vì chi tiêu mạnh tay như thường lệ (mức trung bình là âm), công ty lại thu về một lượng tiền ròng khổng lồ, vượt xa mức trung bình.

  • Dòng tiền Tài chính (CFF_vs_Avg): Năm 2021 và 2023 có giá trị dương rất lớn, trong khi năm 2022 có giá trị âm sâu nhất. Cho thấy trong các năm 2021 và 2023, công ty đã huy động vốn mạnh mẽ hơn nhiều so với mức trung bình. Ngược lại, năm 2022 là năm công ty trả nợ ròng quyết liệt nhất, đi ngược lại xu hướng chung là huy động vốn.

  • Bảng dữ liệu này là một công cụ chẩn đoán hiệu quả. Nó không chỉ cho biết một năm tốt hay xấu, mà còn cho biết nó tốt hay xấu như thế nào so với chính “phong độ” lịch sử của công ty, giúp làm nổi bật những năm có sự kiện tài chính đột biến cần phân tích sâu.

11.30 Cơ cấu các khoản mục chi trả lãi vay, thuế và cổ tức

main_payouts_structure <- data_long %>%
  filter(ChiTieu %in% c("Tiền lãi vay đã trả",
                       "Thuế thu nhập doanh nghiệp đã nộp",
                       "Cổ tức đã trả"))
kable(main_payouts_structure)
Nam ChiTieu GiaTri NhomHoatDong LoaiDongTien
2015 Tiền lãi vay đã trả -37442521379 Điều chỉnh / Tổng hợp Khác
2015 Thuế thu nhập doanh nghiệp đã nộp -196048457727 Điều chỉnh / Tổng hợp Khác
2015 Cổ tức đã trả -1834225628 Điều chỉnh / Tổng hợp Khác
2016 Tiền lãi vay đã trả -112394627462 Điều chỉnh / Tổng hợp Khác
2016 Thuế thu nhập doanh nghiệp đã nộp -530854203913 Điều chỉnh / Tổng hợp Khác
2016 Cổ tức đã trả -220130282800 Điều chỉnh / Tổng hợp Khác
2017 Tiền lãi vay đã trả -223723867627 Điều chỉnh / Tổng hợp Khác
2017 Thuế thu nhập doanh nghiệp đã nộp -690668199572 Điều chỉnh / Tổng hợp Khác
2017 Cổ tức đã trả -231718927130 Điều chỉnh / Tổng hợp Khác
2018 Tiền lãi vay đã trả -427564376510 Điều chỉnh / Tổng hợp Khác
2018 Thuế thu nhập doanh nghiệp đã nộp -829523019750 Điều chỉnh / Tổng hợp Khác
2018 Cổ tức đã trả -485862426827 Điều chỉnh / Tổng hợp Khác
2019 Tiền lãi vay đã trả -537997464046 Điều chỉnh / Tổng hợp Khác
2019 Thuế thu nhập doanh nghiệp đã nộp -1092128547184 Điều chỉnh / Tổng hợp Khác
2019 Cổ tức đã trả -665093453185 Điều chỉnh / Tổng hợp Khác
2020 Tiền lãi vay đã trả -563748612045 Điều chỉnh / Tổng hợp Khác
2020 Thuế thu nhập doanh nghiệp đã nộp -1494585439732 Điều chỉnh / Tổng hợp Khác
2020 Cổ tức đã trả -678908841000 Điều chỉnh / Tổng hợp Khác
2021 Tiền lãi vay đã trả -585136035219 Điều chỉnh / Tổng hợp Khác
2021 Thuế thu nhập doanh nghiệp đã nộp -1533102122807 Điều chỉnh / Tổng hợp Khác
2021 Cổ tức đã trả -239519441063 Điều chỉnh / Tổng hợp Khác
2022 Tiền lãi vay đã trả -1322381109404 Điều chỉnh / Tổng hợp Khác
2022 Thuế thu nhập doanh nghiệp đã nộp -1805340844308 Điều chỉnh / Tổng hợp Khác
2022 Cổ tức đã trả -731854815000 Điều chỉnh / Tổng hợp Khác
2023 Tiền lãi vay đã trả -1435731870616 Điều chỉnh / Tổng hợp Khác
2023 Thuế thu nhập doanh nghiệp đã nộp -860429603219 Điều chỉnh / Tổng hợp Khác
2023 Cổ tức đã trả -731280023500 Điều chỉnh / Tổng hợp Khác
2024 Tiền lãi vay đã trả -1141521540734 Điều chỉnh / Tổng hợp Khác
2024 Thuế thu nhập doanh nghiệp đã nộp -958914978098 Điều chỉnh / Tổng hợp Khác
2024 Cổ tức đã trả -730957694000 Điều chỉnh / Tổng hợp Khác

Giải thích kỹ thuật:

– filter(): Lọc ra 3 chuỗi thời gian của các khoản chi trả không thể tránh khỏi đối với các bên liên quan (Chủ nợ, Nhà nước, Cổ đông).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Chuẩn bị một tập dữ liệu con để phân tích cơ cấu chi trả.

– Kinh tế:

  • Gánh nặng Lãi vay là Lớn nhất và Tăng dần Trong hầu hết các năm, “Tiền lãi vay đã trả” là khoản chi lớn nhất trong ba khoản mục này. Hơn nữa, quy mô chi trả lãi vay có xu hướng tăng lên đáng kể theo thời gian. Điều này phản ánh trực tiếp chiến lược sử dụng đòn bẩy nợ của công ty. Khi quy mô nợ vay tăng lên, gánh nặng chi phí lãi vay cũng tăng theo. Đây là “cái giá” phải trả cho chiến lược tăng trưởng bằng vốn vay.

  • Nghĩa vụ Thuế đáng kể:Khoản nộp thuế thu nhập doanh nghiệp cũng là một khoản chi lớn và tương đối ổn định. Cho thấy công ty hoạt động có lãi và thực hiện đầy đủ nghĩa vụ thuế. Sự biến động của khoản nộp thuế thường đi đôi với sự biến động của lợi nhuận.

  • Cổ tức là “ưu tiên sau cùng”: “Cổ tức đã trả” thường là khoản chi nhỏ nhất trong ba khoản mục. Điều này cho thấy trong việc phân phối tiền mặt, công ty ưu tiên thực hiện nghĩa vụ với chủ nợ (trả lãi) và nhà nước (nộp thuế) trước. Phần còn lại mới được xem xét để chia cho cổ đông. Đây là một chính sách tài chính thận trọng, đặc biệt là đối với một công ty đang trong giai đoạn tăng trưởng và có nợ vay lớn.

12 Trực quan hóa dữ liệu

12.1 Phân phối của các Dòng tiền thuần chính và FCFF (2015-2024)

data_for_boxplot <- final_analytical_df %>%
  select(CFO = `Lưu chuyển tiền thuần từ hoạt động kinh doanh`,
         CFI = `Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư`,
         CFF = `Lưu chuyển tiền thuần từ hoạt động tài chính`,
         FCFF) %>%
  pivot_longer(cols = everything(), names_to = "LoaiDongTien", values_to = "GiaTri")
ggplot(data_for_boxplot, aes(x = LoaiDongTien, y = GiaTri, fill = LoaiDongTien)) +
  geom_boxplot(alpha = 0.8) +
  geom_jitter(width = 0.1, alpha = 0.5) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  labs(
    title = "Phân phối của các Dòng tiền chính (2015-2024)",
    x = "Loại Dòng tiền",
    y = "Giá trị (đơn vị: nghìn tỷ đồng)"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

Giải thích kỹ thuật:

– Chuẩn bị dữ liệu: pivot_longer() được sử dụng để chuyển đổi 4 cột dòng tiền từ dạng rộng sang dạng dài. Cấu trúc này (một cột cho tên chỉ tiêu, một cột cho giá trị) là định dạng chuẩn để ggplot2 có thể tạo các biểu đồ so sánh theo nhóm.

– geom_boxplot(): Layer chính, vẽ biểu đồ hộp. Mỗi hộp hiển thị phân vị thứ 25 (đáy hộp), trung vị (vạch giữa), phân vị thứ 75 (đỉnh hộp), và các “râu” thể hiện khoảng giá trị thông thường. Các điểm bên ngoài là các giá trị ngoại lai.

– geom_jitter(): Thêm một lớp các điểm dữ liệu thực tế được phân tán ngẫu nhiên một chút theo chiều ngang. Layer này rất quan trọng để thấy được mật độ và số lượng thực tế của các điểm dữ liệu (trong trường hợp này là 10 điểm cho mỗi hộp).

– geom_hline(yintercept = 0): Thêm một đường tham chiếu ngang tại y=0. Đây là một layer cực kỳ quan trọng về mặt ngữ cảnh, giúp phân biệt rõ ràng giữa các giá trị dương (tạo tiền) và âm (sử dụng tiền).

– scale_y_continuous(labels = …): Tùy chỉnh các nhãn trên trục y để dễ đọc hơn, chuyển các con số lớn (ví dụ: 8517332706742) thành dạng ngắn gọn (“8.517 tỷ”).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ hộp là công cụ mạnh mẽ để so sánh sự phân bố của nhiều nhóm dữ liệu. Nó trực quan hóa các đại lượng thống kê chính: khuynh hướng trung tâm (trung vị) và độ phân tán (chiều cao hộp, độ dài râu).

– Kinh tế:

  • CFI (Hoạt động Đầu tư): Luôn luôn Chi tiền. Toàn bộ hộp và gần như tất cả các điểm dữ liệu của CFI đều nằm hoàn toàn dưới vạch 0. Khẳng định một cách mạnh mẽ rằng chiến lược nhất quán của công ty là chi tiền để đầu tư và mở rộng. Đây là một “cỗ máy sử dụng tiền”.

  • CFF (Hoạt động Tài chính): Chủ yếu Thu tiền. Hộp của CFF nằm chủ yếu trên vạch 0. Cho thấy hoạt động tài chính là nguồn cung cấp tiền chính cho công ty, chủ yếu thông qua việc vay nợ và huy động vốn.

  • CFO (Hoạt động Kinh doanh) & FCFF (Dòng tiền Tự do): Có tạo ra tiền nhưng Biến động. Cả hai hộp của CFO và FCFF đều cắt qua vạch 0, nhưng phần lớn hộp và vạch trung vị đều nằm trên 0. Điều này cho thấy trong một năm “điển hình”, hoạt động kinh doanh có tạo ra tiền (CFO > 0) và sau khi trừ đi chi phí đầu tư, công ty vẫn còn lại tiền mặt tự do (FCFF > 0). Tuy nhiên, sự tồn tại của các điểm dữ liệu (các năm) nằm dưới vạch 0 cho thấy khả năng tạo tiền này không ổn định và có những năm khó khăn.

  • Biểu đồ cho thấy một mô hình kinh doanh tăng trưởng kinh điển: dùng tiền huy động được (CFF dương) để tài trợ cho các hoạt động đầu tư mở rộng (CFI âm), trong khi hoạt động kinh doanh cốt lõi (CFO) là nền tảng tạo ra tiền dù còn biến động.

12.2 Cơ cấu Dòng tiền qua các năm

ggplot(cashflow_structure, aes(x = Nam, y = TyTrong, fill = NhomHoatDong)) +
  geom_col(position = "fill") +
  geom_text(aes(label = paste0(round(TyTrong), "%")), 
            position = position_fill(vjust = 0.5), size = 3) +
  scale_y_continuous(labels = percent_format()) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  scale_fill_brewer(palette = "Set2") +
  labs(
    title = "Cơ cấu Luân chuyển Dòng tiền qua các năm",
    x = "Năm",
    y = "Tỷ trọng",
    fill = "Nhóm Hoạt động"
  ) +
  theme_classic()

Giải thích kỹ thuật:

– geom_col(position = “fill”): Vẽ biểu đồ cột chồng, nhưng với position = “fill”, chiều cao của mỗi cột sẽ được tự động chuẩn hóa về 100%. Trục y sẽ tự động chuyển sang tỷ lệ (0 đến 1).

– geom_text(aes(label = …), position = position_fill(vjust = 0.5)): Thêm nhãn văn bản (tỷ lệ %) vào biểu đồ. position = position_fill(vjust = 0.5) là một layer quan trọng, đảm bảo rằng mỗi nhãn được đặt chính xác vào giữa của phần màu tương ứng trong cột chồng 100%.

– scale_y_continuous(labels = percent_format()): Định dạng trục y để hiển thị dưới dạng phần trăm (ví dụ: 0.5 -> 50%).

– scale_fill_brewer(palette = “Set2”): Sử dụng một bảng màu được thiết kế sẵn và hài hòa về mặt thị giác.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là cách trực quan hóa sự thay đổi trong cơ cấu tỷ trọng của một tổng thể qua thời gian. Nó tập trung vào sự thay đổi tương đối giữa các thành phần, thay vì giá trị tuyệt đối.

– Kinh tế:

  • Giai đoạn đầu (2015-2016): Sống bằng “HĐ Tài chính”. Màu xanh dương (HĐ Tài chính) chiếm tỷ trọng lớn nhất (52% - 57%). Công ty phụ thuộc chủ yếu vào việc huy động vốn từ bên ngoài (vay nợ) để tài trợ cho mọi hoạt động, từ kinh doanh đến đầu tư.

  • Giai đoạn Trưởng thành (2017-2020): “HĐ Kinh doanh” vươn lên. Màu cam (HĐ Kinh doanh) dần trở nên chiếm ưu thế, đạt đỉnh điểm 50% vào năm 2020. Đây là một sự chuyển dịch cực kỳ tích cực. Hoạt động kinh doanh cốt lõi đã trở thành “cỗ máy” chính, tạo ra phần lớn dòng tiền luân chuyển, cho thấy sự trưởng thành và hiệu quả của mô hình kinh doanh.

  • Giai đoạn “Bùng nổ” Đầu tư (2021 và 2023-2024): “HĐ Đầu tư” chiếm lĩnh. Màu xanh lá (HĐ Đầu tư) chiếm tỷ trọng lớn nhất, đặc biệt là 58% vào năm 2021 và 51% vào năm 2024. Trong những năm này, các quyết định chi tiêu cho đầu tư là hoạt động có quy mô lớn nhất, lấn át cả dòng tiền tạo ra từ kinh doanh. Điều này cho thấy công ty đang thực hiện các chiến lược đầu tư và mở rộng rất quyết liệt.

  • Biểu đồ trực quan hóa một hành trình kinh doanh đầy năng động: từ một công ty non trẻ phụ thuộc vào vốn ngoài, trở thành một doanh nghiệp trưởng thành tự chủ bằng hoạt động kinh doanh, và sau đó sử dụng sức mạnh đó để thực hiện các chiến lược đầu tư ngày càng tham vọng.

12.3 So sánh Dòng tiền từ HĐKD (CFO) và Lợi nhuận trước thuế (PBT)

ggplot(cfo_vs_pbt, aes(x = Nam)) +
  geom_col(aes(y = PBT, fill = "PBT"), alpha = 0.6) +
  geom_line(aes(y = CFO, color = "CFO"), size = 1.2) +
  geom_point(aes(y = CFO, color = "CFO"), size = 3) +
  geom_hline(yintercept = 0, linetype = "dotted") +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  scale_color_manual(name = "", values = c("CFO" = "darkred")) +
  scale_fill_manual(name = "", values = c("PBT" = "steelblue")) +
  labs(
    title = "Chất lượng Lợi nhuận: CFO so với PBT",
    x = "Năm",
    y = "Giá trị (nghìn tỷ đồng)"
  ) +
  theme_light()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Giải thích kỹ thuật:

– Kết hợp Geoms: Đây là một biểu đồ kết hợp, sử dụng hai geom khác nhau cho hai biến khác nhau trên cùng một trục. geom_col() cho PBT và geom_line() + geom_point() cho CFO.

– scale_color_manual() và scale_fill_manual(): Vì chúng ta đã gán các chuỗi ký tự cố định (“PBT”, “CFO”) vào aes(), chúng ta phải sử dụng các hàm scale_*_manual để tự định nghĩa màu sắc và tên cho chú giải (legend).

– group = 1 (ẩn trong code gốc): Khi vẽ geom_line với trục x là biến rời rạc hoặc số nguyên, việc thêm aes(group=1) là cần thiết để báo cho ggplot biết rằng tất cả các điểm này thuộc về cùng một đường duy nhất.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Là một phương pháp trực quan để so sánh hai chuỗi thời gian, giúp nhận diện các xu hướng đồng pha, ngược pha, hoặc sự phân kỳ/hội tụ.

– Kinh tế:

  • Giai đoạn đầu (2015, 2016, 2019): Lợi nhuận “ảo”. Các cột PBT dương nhưng đường CFO nằm sâu dưới vạch 0. Đây là giai đoạn lợi nhuận không có chất lượng. Công ty báo cáo có lãi nhưng thực tế lại bị thâm hụt tiền mặt từ hoạt động kinh doanh, cho thấy tiền bị “kẹt” trong vốn lưu động.

  • Giai đoạn Bùng nổ Chất lượng (2020, 2022, 2024): Dòng tiền vượt trội Lợi nhuận. Đường CFO vươn lên cao hơn hẳn các cột PBT. Đây là một tín hiệu cực kỳ tích cực, cho thấy “chất lượng lợi nhuận” rất cao. Công ty không chỉ chuyển đổi toàn bộ lợi nhuận thành tiền mặt mà còn “tạo” thêm tiền từ việc quản lý vốn lưu động hiệu quả (ví dụ: thu hồi nợ cũ, giảm tồn kho).

  • Sự phân kỳ (2021, 2023): PBT đạt mức rất cao, nhưng CFO lại ở mức thấp hơn nhiều (đặc biệt là năm 2021). Đây là những năm lợi nhuận có chất lượng kém hơn. Mặc dù lợi nhuận kế toán cao, nhưng khả năng chuyển đổi thành tiền mặt bị hạn chế, một lần nữa cho thấy các vấn đề về quản lý vốn lưu động trong những năm đó.

  • Biểu đồ cho thấy một sự cải thiện ngoạn mục nhưng không ổn định về chất lượng lợi nhuận. Công ty đã chứng tỏ được khả năng tạo ra dòng tiền vượt trội so với lợi nhuận kế toán, nhưng vẫn còn những năm gặp khó khăn trong việc chuyển đổi này.

12.4 Biểu đồ Thác nước: Từ Lợi nhuận đến Dòng tiền KD năm 2024

cfo_adjustments_2024 <- data_long %>%
  filter(
    Nam == 2024,
    ChiTieu %in% c(
      "Lợi nhuận kế toán trước thuế",
      "Khấu hao và hao mòn tài sản cố định (bao gồm phân bổ lợi thế thương mại)",
      "Dự phòng (hoàn nhập các khoản dự phòng)",
      "Chi phí lãi vay",
      "Lợi nhuận từ hoạt động kinh doanh trước thay đổi vốn lưu động"
    )
  )
p_waterfall <- waterfall(
  values = cfo_adjustments_2024$GiaTri,
  labels = cfo_adjustments_2024$ChiTieu,
  calc_total = TRUE,
  total_rect_text = "LCTT từ HĐKD\ntrước Vốn LĐ"
)
p_waterfall_final <- p_waterfall +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  labs(
    title = "Con đường từ Lợi nhuận đến Dòng tiền KD (2024)",
    y = "Giá trị (nghìn tỷ đồng)",
    x = ""
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
print(p_waterfall_final)

Giải thích kỹ thuật:

– Sử dụng thư viện ngoài: Biểu đồ này không dùng ggplot2 trực tiếp mà thông qua gói waterfalls, được xây dựng dựa trên ggplot2.

– waterfall(values = …, labels = …): Hàm chính để tạo biểu đồ. Nó nhận một vector giá trị và một vector nhãn tương ứng.

– calc_total=TRUE: Tự động tính toán các cột tổng phụ.

– + labs(…) và + theme_*(): Sau khi đối tượng waterfall được tạo ra, nó vẫn là một đối tượng ggplot, do đó chúng ta có thể thêm các lớp ggplot2 tiêu chuẩn vào để tùy chỉnh.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ thác nước là công cụ trực quan hóa lý tưởng để thể hiện sự thay đổi lũy kế, cho thấy một giá trị ban đầu bị ảnh hưởng như thế nào bởi một loạt các giá trị đóng góp dương và âm để đi đến một kết quả cuối cùng.

– Kinh tế:

  • Điểm xuất phát: Công ty bắt đầu với Lợi nhuận kế toán trước thuế là ~4,825 tỷ. Đây là con số “trên giấy”.

  • Cộng lại các Chi phí “ảo”: Biểu đồ cho thấy các khoản mục như “Khấu hao” (~2,913 tỷ) và “Chi phí lãi vay” (~1,137 tỷ) là những thanh màu xanh dương lớn, “đẩy” tổng giá trị lên cao. Đây là những chi phí đã được trừ ra khi tính lợi nhuận, nhưng thực tế công ty không chi ra bằng tiền mặt trong kỳ (hoặc sẽ được tính ở mục khác). Việc cộng chúng ngược trở lại giúp phản ánh đúng hơn lượng tiền mặt tiềm năng.

  • Kết quả Điều chỉnh: Sau khi cộng dồn tất cả các khoản điều chỉnh phi tiền mặt, “Lợi nhuận từ HĐKD trước thay đổi vốn lưu động” đạt mức ~7,393 tỷ (cột cuối cùng trước cột Total). Con số này cao hơn đáng kể (~53%) so với lợi nhuận kế toán ban đầu, cho thấy sức mạnh tạo ra lợi nhuận từ hoạt động cốt lõi của công ty lớn hơn nhiều so với những gì con số lợi nhuận ban đầu thể hiện. Đây là cơ sở để tiếp tục điều chỉnh các thay đổi về vốn lưu động để ra được con số CFO cuối cùng.

12.5 Tác động của Vốn lưu động đến CFO qua các năm

ggplot(working_capital_effect, aes(x = Nam, y = GiaTri, fill = ChiTieu)) +
geom_col(position = "dodge") +
geom_hline(yintercept = 0, linetype = "dashed") +
scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
scale_x_continuous(breaks = seq(2015, 2024, 1)) +
scale_fill_viridis_d(option = "D") +
labs(
title = "Tác động của Vốn lưu động đến Dòng tiền",
x = "Năm",
y = "Tác động đến Dòng tiền (nghìn tỷ đồng)",
fill = "Thành phần Vốn lưu động"
) +
theme_bw()

Giải thích kỹ thuật:

– geom_col(position = “dodge”): Vẽ biểu đồ cột, với position = “dodge”, các cột của các nhóm khác nhau (fill = ChiTieu) trong cùng một năm (x = Nam) sẽ được đặt cạnh nhau, thay vì chồng lên nhau.

– scale_fill_viridis_d(): Sử dụng một bảng màu khoa học, thân thiện với người mù màu.

– theme_bw(): Sử dụng một theme có nền trắng và lưới màu xám, thường được ưa chuộng trong các báo cáo khoa học vì tính rõ ràng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ cột nhóm (dodged bar chart) là công cụ hiệu quả để so sánh giá trị của các nhóm con khác nhau qua từng điểm thời gian.

– Kinh tế:

  • Hàng tồn kho (Màu tím): “Kẻ đốt tiền” chính. Cột màu tím gần như luôn nằm dưới vạch 0 và thường là cột âm lớn nhất (đặc biệt năm 2019, 2021). Việc tăng hàng tồn kho là nguyên nhân chính gây ra thâm hụt dòng tiền từ vốn lưu động. Công ty liên tục “giam” một lượng tiền mặt khổng lồ trong kho hàng, cho thấy rủi ro về quản lý chuỗi cung ứng hoặc bán hàng chậm.

  • Các khoản phải trả (Màu vàng): “Cứu tinh” dòng tiền. Cột màu vàng thường xuyên nằm trên vạch 0. Việc tăng các khoản phải trả (trả tiền chậm cho nhà cung cấp) đã đóng vai trò là một nguồn tài trợ tiền mặt quan trọng, giúp bù đắp một phần cho lượng tiền bị kẹt trong hàng tồn kho và các khoản phải thu.

  • Các khoản phải thu (Màu xanh): Tương đối trung tính. Cột màu xanh có quy mô nhỏ và dao động quanh 0. Cho thấy tác động từ việc thay đổi các khoản phải thu không phải là yếu tố quyết định đến dòng tiền từ vốn lưu động, không tốt cũng không quá xấu.

  • Biểu đồ chỉ ra một “cuộc chiến” nội tại trong quản lý vốn lưu động. Công ty đã làm tốt việc “chiếm dụng vốn” từ nhà cung cấp (cột vàng), nhưng lại liên tục bị thâm hụt tiền mặt do quản lý hàng tồn kho kém hiệu quả (cột tím). Cải thiện quản lý hàng tồn kho là chìa khóa quan trọng nhất để cải thiện dòng tiền từ hoạt động kinh doanh.

12.6 So sánh giữa Chi mua sắm TSCĐ (Capex) và Khấu hao

ggplot(capex_vs_deprecation, aes(x = Nam)) +
  geom_col(aes(y = abs(Capex), fill = "Capex"), alpha = 0.7) +
  geom_line(aes(y = KhauHao, color = "Khấu hao"), size = 1.5) +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  scale_fill_manual(name = "", values = c("Capex" = "firebrick")) +
  scale_color_manual(name = "", values = c("Khấu hao" = "navy")) +
  labs(title = "Chiến lược Đầu tư: Capex so với Khấu hao",
       x = "Năm", y = "Giá trị (nghìn tỷ đồng)") +
  theme_light()

Giải thích kỹ thuật:

– Kết hợp Geoms: Tương tự biểu đồ 3, kết hợp geom_col cho Capex (dùng abs() để lấy giá trị dương) và geom_line cho KhauHao.

– scale_fill_manual() và scale_color_manual(): Tùy chỉnh màu sắc và chú giải cho từng geom.

Ý nghĩa thống kê và kinh tế:

– Thống kê: So sánh hai chuỗi thời gian bằng cách kết hợp hai loại biểu đồ khác nhau để làm nổi bật sự khác biệt.

– Kinh tế:

  • Giai đoạn Tăng trưởng Nóng (2015 - 2022): Trong suốt giai đoạn này, các cột Capex (chi tiêu thực tế) luôn luôn cao hơn đường KhauHao (mức hao mòn). Điều này chứng tỏ một chiến lược đầu tư và mở rộng quy mô tài sản sản xuất không ngừng nghỉ. Công ty không chỉ chi tiền để thay thế các tài sản đã cũ, mà còn liên tục đầu tư thêm với quy mô ngày càng lớn, đạt đỉnh điểm vào năm 2021.

Giai đoạn Chuyển đổi Chiến lược (2023 - 2024): Có một sự đảo chiều đột ngột. Trong hai năm gần nhất, các cột Capex thấp hơn đáng kể so với đường KhauHao. Đây là một sự thay đổi chiến lược quan trọng. Công ty đã giảm mạnh chi tiêu đầu tư, chi ra ít hơn nhiều so với mức độ hao mòn tài sản. Điều này có thể cho thấy công ty đã hoàn thành một chu kỳ đầu tư lớn và đang bước vào giai đoạn khai thác các tài sản đã có, công ty đang chuyển hướng sang một mô hình kinh doanh ít thâm dụng vốn hơn và ban lãnh đạo đang ưu tiên việc tạo ra dòng tiền tự do thay vì tiếp tục mở rộng bằng mọi giá.

  • Biểu đồ cho thấy một sự “bẻ lái” trong chiến lược đầu tư: từ một giai đoạn 8 năm liên tục tăng trưởng nóng, công ty đã chuyển sang giai đoạn thắt chặt chi tiêu đầu tư trong 2 năm gần đây, một dấu hiệu của sự trưởng thành hoặc thay đổi định hướng chiến lược.

12.7 Cơ cấu các khoản mục trong Dòng tiền từ Hoạt động Đầu tư

ggplot(investment_structure, aes(x = Nam, y = GiaTri, fill = ChiTieu)) +
  geom_bar(stat = "identity") +
  facet_wrap(~ ChiTieu, scales = "free_y", ncol = 2) +
  geom_hline(yintercept = 0, linetype = "dotted") +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 2)) +
  labs(title = "Phân tích chi tiết Dòng tiền từ Hoạt động Đầu tư",
       x = "Năm", y = "") +
  theme_bw() + theme(legend.position = "none")

Giải thích kỹ thuật:

– facet_wrap(~ ChiTieu, scales = “free_y”, ncol = 2): Đây là layer mạnh nhất của biểu đồ này. facet_wrap chia nhỏ biểu đồ thành nhiều ô, mỗi ô tương ứng với một ChiTieu.

– scales = “free_y”: Một tùy chọn cực kỳ quan trọng, cho phép mỗi ô có một trục y riêng, phù hợp với thang đo của chính nó. Nếu không có tùy chọn này, các chỉ tiêu có giá trị nhỏ sẽ trông như một đường thẳng bằng 0.

– theme(legend.position = “none”): Ẩn chú giải vì thông tin đã được hiển thị trên tiêu đề của mỗi ô.

Ý nghĩa thống kê và kinh tế:

– Thống kê: “Small multiples” là một kỹ thuật trực quan hóa hiệu quả để so sánh xu hướng của nhiều biến khác nhau mà không làm biểu đồ trở nên lộn xộn.

– Kinh tế:

  • “Lãi từ hoạt động đầu tư” (Biểu đồ trái): Các cột gần như luôn âm và có xu hướng ngày càng âm sâu hơn. Trên báo cáo lưu chuyển tiền tệ, đây là khoản điều chỉnh. Giá trị âm có nghĩa là công ty đã ghi nhận một khoản lãi từ đầu tư vào lợi nhuận kế toán. Biểu đồ cho thấy công ty thường xuyên có lãi từ đầu tư (lãi tiền gửi, bán tài sản…) và quy mô của khoản lãi này ngày càng lớn.

  • “Tiền chi đầu tư góp vốn vào đơn vị khác” (Biểu đồ phải): Các cột xuất hiện không thường xuyên và có giá trị âm lớn, đặc biệt là vào năm 2018. Đây là dòng tiền thực chi ra. Biểu đồ cho thấy công ty không đầu tư góp vốn hàng năm. Thay vào đó, họ có những đợt đầu tư lớn và tập trung vào một vài năm cụ thể. Năm 2018 là năm công ty thực hiện đầu tư chiến lược rất lớn.

  • Hai biểu đồ này cho thấy công ty có hai “khẩu vị” đầu tư khác nhau. Họ có một nguồn thu nhập đầu tư khá đều đặn (có thể từ lãi tiền gửi), đồng thời thực hiện các thương vụ đầu tư chiến lược không thường xuyên nhưng với quy mô lớn.

12.8 Thống kê số năm công ty có thu tiền ròng từ hoạt động đầu tư

ggplot(investment_net_status, aes(x = TrangThaiDauTu, y = n, fill = TrangThaiDauTu)) +
  geom_col() +
  geom_text(aes(label = n), vjust = -0.5, size = 5) +
  labs(title = "Trạng thái Dòng tiền Đầu tư (10 năm)",
       x = "", y = "Số năm") +
  theme_classic() + theme(legend.position = "none")

Giải thích kỹ thuật:

– geom_col(): Vẽ biểu đồ cột đơn giản, chiều cao cột (y = n) đã được tính toán sẵn bởi count() ở bước thống kê.

– geom_text(aes(label = n), vjust = -0.5): Thêm nhãn số liệu (n) lên trên mỗi cột (vjust = -0.5 đẩy nhãn lên một chút).

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một biểu đồ tần suất đơn giản, trực quan hóa một bảng đếm.

– Kinh tế:

  • Chiến lược Nhất quán: Cột “Chi ròng” cao vượt trội với 9 năm, trong khi cột “Thu ròng” chỉ có 1 năm. Sự chênh lệch này cho thấy một chiến lược đầu tư cực kỳ nhất quán trong suốt một thập kỷ. Công ty gần như luôn luôn chi tiền nhiều hơn thu về cho các hoạt động đầu tư.

  • Tập trung vào Tăng trưởng: Điều này khẳng định mạnh mẽ rằng công ty đang trong giai đoạn tăng trưởng và mở rộng. Ưu tiên hàng đầu của ban lãnh đạo là sử dụng tiền mặt để đầu tư vào tài sản mới, công nghệ mới, hoặc các công ty khác, thay vì thu hẹp hoạt động hay chốt lời từ các khoản đầu tư cũ.

  • Điểm Bất thường Cần Chú ý: Năm duy nhất có “Thu ròng” trở thành một sự kiện ngoại lệ rất đáng chú ý. Nó cho thấy một hành động đi ngược lại chiến lược dài hạn.

  • Biểu đồ này là bằng chứng trực quan mạnh mẽ nhất, khẳng định công ty theo đuổi một chiến lược dài hạn là liên tục chi tiền để đầu tư mở rộng.

12.9 Phân tích dòng tiền liên quan đến tiền gửi ngân hàng

ggplot(bank_deposit_flow, aes(x = Nam, y = GiaTri, fill = ChiTieu)) +
  geom_col(position = "dodge") +
  geom_hline(yintercept = 0) +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  labs(title = "Hoạt động Gửi và Rút tiền có kỳ hạn",
       x = "Năm", y = "Giá trị (nghìn tỷ đồng)", fill = "Hoạt động") +
  theme_minimal()

Giải thích kỹ thuật:

– geom_col(position = “dodge”): Vẽ biểu đồ cột nhóm, đặt cột “chi gửi” và “thu hồi” cạnh nhau trong mỗi năm để dễ so sánh.

Ý nghĩa thống kê và kinh tế:

– Thống kê: So sánh hai chuỗi thời gian đối ứng qua từng năm.

– Kinh tế:

  • Quy mô hoạt động ngày càng lớn: Chiều cao của cả cột đỏ và cột xanh đều có xu hướng tăng lên rõ rệt qua các năm, đặc biệt từ 2021 trở đi. Điều này cho thấy quy mô tiền mặt của công ty ngày càng lớn, cho phép họ thực hiện các hoạt động tài chính ngắn hạn (gửi/rút tiền) với giá trị ngày càng cao để tối ưu hóa việc sử dụng vốn.

  • Xu hướng “Gửi ròng”: Trong hầu hết các năm, cột màu đỏ (Tiền chi cho vay và tiền gửi) có chiều dài lớn hơn cột màu xanh (Thu hồi tiền gửi). Điều này có nghĩa là công ty có xu hướng gửi thêm tiền vào ngân hàng nhiều hơn là rút ra. Đây là một dấu hiệu cho thấy công ty đang tạo ra nhiều tiền mặt hơn nhu cầu chi tiêu trước mắt và họ chọn cách gửi tiết kiệm để sinh lời.

  • Hành vi tài chính thận trọng: Việc liên tục gửi ròng tiền cho thấy một hành vi tài chính tương đối thận trọng. Thay vì dùng hết tiền mặt cho các dự án đầu tư rủi ro cao, công ty vẫn giữ lại một phần để gửi vào các kênh an toàn hơn như tiền gửi có kỳ hạn.

  • Biểu đồ cho thấy sự lớn mạnh về quy mô tài chính của công ty, thể hiện qua việc ngày càng tích cực tham gia vào các hoạt động gửi/rút tiền. Xu hướng chung cho thấy công ty có khả năng tạo ra thặng dư tiền mặt và có một chính sách quản lý tiền nhàn rỗi khá thận trọng.

12.10 Tỷ lệ Dòng tiền tự do trên Dòng tiền từ HĐKD

ggplot(fcff_to_cfo_ratio, aes(x = Nam, y = FCFF_per_CFO)) +
  geom_line(color="seagreen", size=1) + geom_point(color="seagreen", size=3) +
  geom_hline(yintercept = c(0, 1), linetype="dashed", color=c("red", "blue")) +
  scale_y_continuous(labels = percent_format()) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  annotate("text", x = 2016, y = 1, label = "Mức lý tưởng", vjust = -0.5, color="blue") +
  labs(title = "Tỷ lệ Chuyển đổi từ CFO sang FCFF",
       x = "Năm", y = "Tỷ lệ FCFF / CFO") +
  theme_bw()

Giải thích kỹ thuật:

– geom_line() và geom_point(): Kết hợp đường và điểm để làm nổi bật xu hướng và các giá trị cụ thể hàng năm.

– geom_hline(yintercept = c(0, 1), …): Thêm hai đường tham chiếu quan trọng: y=0 (điểm hòa vốn FCFF) và y=1 (điểm lý tưởng khi toàn bộ CFO được chuyển thành FCFF).

– scale_y_continuous(labels = percent_format()): Định dạng trục y dưới dạng phần trăm.

– annotate(): Thêm một lớp văn bản tĩnh vào biểu đồ để giải thích ý nghĩa của đường tham chiếu.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Trực quan hóa một chuỗi thời gian của một tỷ lệ, với các ngưỡng tham chiếu quan trọng.

– Kinh tế:

  • Giai đoạn “Bùng nổ” Đầu tư (2017-2022, trừ 2021): Đường biểu diễn nằm dưới “Mức lý tưởng” nhưng trên mức 0%. Cho thấy công ty đang dùng một phần đáng kể dòng tiền từ kinh doanh để tái đầu tư. Chỉ một phần nhỏ của CFO (từ 22% đến 63%) được chuyển đổi thành tiền mặt tự do. Đây là đặc điểm của một doanh nghiệp ưu tiên tăng trưởng.

  • Điểm dị thường (2021): Đầu tư “Tất tay” Tỷ lệ sụt giảm xuống mức âm cực lớn (-2800%). Điều này xảy ra khi CFO dương nhưng rất nhỏ, trong khi Capex lại âm cực lớn. Nó có nghĩa là chi tiêu vốn trong năm 2021 lớn gấp 29 lần dòng tiền mà hoạt động kinh doanh tạo ra, khiến Dòng tiền tự do bị âm nặng.

  • Giai đoạn “Trưởng thành” (2023, 2024): Hiệu quả sử dụng vốn cao. Tỷ lệ tăng vọt lên mức rất cao, gần đến “Mức lý tưởng” (84% và 96%). Đây là một tín hiệu rất tích cực, cho thấy công ty đang chi tiêu vốn một cách hiệu quả hơn. Phần lớn dòng tiền từ kinh doanh đã được chuyển hóa thành tiền mặt tự do.

  • Biểu đồ cho thấy sự trưởng thành trong chiến lược vốn. Công ty đang chuyển dịch từ mô hình “tăng trưởng bằng mọi giá” (dùng phần lớn CFO để tái đầu tư) sang mô hình “tạo ra giá trị tiền mặt”, chi tiêu vốn ít hơn và giữ lại nhiều tiền mặt tự do hơn.

12.11 Cơ cấu Dòng tiền từ Hoạt động Tài chính

ggplot(financing_structure, aes(x = Nam, y = GiaTri, fill = ChiTieu)) +
  geom_col() +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  geom_hline(yintercept = 0) +
  labs(title = "Cơ cấu Dòng tiền từ Hoạt động Tài chính",
       x = "Năm", y = "Giá trị (nghìn tỷ đồng)", fill = "Chỉ tiêu") +
  theme_minimal()

Giải thích kỹ thuật:

– geom_col(): Vẽ biểu đồ cột. Do không có position được chỉ định, mặc định là position = “stack”. Các giá trị dương sẽ được chồng lên nhau, và các giá trị âm sẽ được chồng xuống dưới.

– geom_hline(yintercept = 0): Thêm một đường tham chiếu tại y=0 để phân biệt rõ ràng giữa các hoạt động thu tiền (trên) và chi tiền (dưới).

– Dữ liệu: Dữ liệu đầu vào (financing_structure) đã được lọc trước để chỉ chứa các thành phần chi tiết của dòng tiền tài chính.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một biểu đồ cột chồng, rất hiệu quả trong việc thể hiện cả thành phần cấu tạo và giá trị tổng hợp (chiều cao ròng của cột) của một nhóm qua thời gian.

– Kinh tế:

  • “Vay nợ” và “Trả nợ” là hai hoạt động thống trị: Cột màu xanh dương (“Tiền thu từ đi vay”) và cột màu xanh lá (“Tiền chi trả nợ gốc vay”) luôn là hai cột lớn nhất, lấn át hoàn toàn các hoạt động khác. Điều này khẳng định mạnh mẽ rằng chiến lược tài chính của công ty xoay quanh việc sử dụng nợ vay. Các hoạt động liên quan đến cổ đông (trả cổ tức, phát hành/mua lại cổ phiếu) có quy mô rất nhỏ và không có ảnh hưởng lớn đến dòng tiền tài chính chung.

  • Mô hình “Đảo nợ” để Tăng trưởng: Trong hầu hết các năm, chiều cao của cột xanh dương (Vay) lớn hơn chiều cao cột xanh lá (Trả nợ), khiến cho tổng thể cột vươn lên trên vạch 0. Đây là biểu hiện trực quan của mô hình “vay mới nhiều hơn trả cũ”. Công ty liên tục huy động ròng thêm nợ để có nguồn vốn tài trợ cho các hoạt động đầu tư và tăng trưởng.

  • Năm 2022 - Sự đảo chiều: Năm 2022 là năm duy nhất cột xanh lá (Trả nợ) dài hơn cột xanh dương (Vay), khiến tổng thể cột chìm xuống dưới vạch 0. Đây là năm duy nhất công ty trả nợ ròng, một hành động tái cơ cấu tài chính rõ rệt.

  • Biểu đồ cho thấy một doanh nghiệp tăng trưởng điển hình, tích cực sử dụng đòn bẩy nợ, liên tục “đảo nợ” để tài trợ cho các tham vọng mở rộng của mình.

12.12 So sánh quy mô Vay và Trả nợ Gốc qua các năm

ggplot(debt_flow, aes(x = Nam)) +
  geom_col(aes(y = VayNo, fill = "Vay Nợ"), width=0.4) +
  geom_col(aes(y = abs(TraNo), fill = "Trả Nợ"), width=0.4) +
  labs(title = "Quy mô Vay và Trả nợ Gốc qua các năm",
       x = "Năm", y = "Giá trị (nghìn tỷ đồng)", fill = "Hoạt động") +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  theme_economist()

Giải thích kỹ thuật:

– Tái cấu trúc dữ liệu: Code đã chuyển dữ liệu từ dạng rộng (2 cột VayNo, TraNo) sang dạng dài (debt_flow_long) để phù hợp hơn với ggplot2.

– geom_col(position = “dodge”): Vẽ biểu đồ cột nhóm, đặt các cột “Vay Nợ” và “Trả Nợ” cạnh nhau trong cùng một năm để so sánh trực tiếp.

– library(ggthemes) và theme_economist(): Sử dụng một gói mở rộng để áp dụng một chủ đề (theme) có giao diện chuyên nghiệp, mô phỏng phong cách của tạp chí The Economist.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ cột nhóm là phương pháp trực quan tiêu chuẩn để so sánh giá trị của các danh mục khác nhau (LoaiGiaoDich) qua từng điểm thời gian (Nam).

– Kinh tế:

  • Quy mô Vay nợ Tăng trưởng Bùng nổ: Chiều cao tổng thể của các cột (cả đỏ và xanh) tăng lên một cách chóng mặt qua các năm. Điều này cho thấy quy mô các giao dịch liên quan đến nợ vay đã tăng trưởng cực kỳ nhanh. Công ty đang hoạt động với một vòng quay vốn vay ngày càng lớn, phản ánh quy mô kinh doanh được mở rộng nhanh chóng và sự phụ thuộc lớn vào đòn bẩy tài chính.

  • Mô hình “Đảo nợ” rõ rệt: Trong hầu hết các năm, cả hai màu đỏ (trả nợ) và xanh (vay mới) đều xuất hiện với quy mô lớn. Đây là biểu hiện trực quan của mô hình “đảo nợ” - công ty liên tục vay những khoản nợ mới khổng lồ để có tiền trả các khoản nợ cũ đến hạn.

  • Xác định chu kỳ Tăng/Giảm nợ: Hầu hết các năm, phần màu xanh (Vay Nợ) đều tồn tại, cho thấy công ty vay nhiều hơn trả. Năm 2022, không có phần màu xanh, chỉ có cột màu đỏ. Điều này xác nhận rằng công ty gần như luôn trong trạng thái tăng nợ ròng để tài trợ cho tăng trưởng. Năm 2022 là một năm ngoại lệ, khi công ty chỉ tập trung vào việc trả nợ mà không vay thêm, dẫn đến giảm nợ ròng.

  • Biểu đồ cho thấy một chiến lược tài chính rất năng động và có phần rủi ro, dựa chủ yếu vào việc liên tục “cuốn chiếu” các khoản nợ với quy mô ngày càng lớn để phục vụ cho tham vọng tăng trưởng.

12.13 Vay nợ ròng qua các năm

ggplot(net_debt_issued, aes(x = Nam, y = VayNoRong, fill = VayNoRong > 0)) +
  geom_col() +
  geom_hline(yintercept = 0) +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  labs(title = "Vay nợ ròng qua các năm",
       x = "Năm", y = "Vay nợ ròng (nghìn tỷ đồng)") +
  theme_bw() + theme(legend.position = "none")

Giải thích kỹ thuật:

– geom_col(aes(fill = VayNoRong > 0)): Vẽ biểu đồ cột, nhưng màu sắc của cột (fill) được quyết định bởi một điều kiện logic: VayNoRong > 0. Điều này sẽ tự động tạo ra hai màu khác nhau cho các cột dương (vay ròng) và cột âm (trả nợ ròng).

– theme(legend.position = “none”): Ẩn chú giải màu sắc vì ý nghĩa của màu đã quá rõ ràng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một biểu đồ cột phân kỳ, rất hiệu quả trong việc làm nổi bật độ lệch của dữ liệu so với một ngưỡng trung tâm (ở đây là 0).

– Kinh tế:

  • Chiến lược chung: Liên tục Tăng nợ: Trong 9 trên 10 năm, các cột đều nằm trên vạch 0. Điều này khẳng định một cách mạnh mẽ rằng chiến lược tài chính của công ty là liên tục gia tăng quy mô nợ vay để có nguồn vốn tài trợ cho các hoạt động đầu tư và tăng trưởng. Quy mô vay ròng đạt đỉnh điểm vào các năm 2019, 2021 và 2023.

  • Năm 2022 - Sự đảo chiều Đột ngột: Năm 2022 là năm duy nhất có cột màu đỏ, nằm sâu dưới vạch 0. Đây là một sự kiện tài chính rất quan trọng và khác biệt. Trong năm này, công ty đã chủ động trả nợ nhiều hơn đi vay, làm giảm quy mô nợ vay một cách đáng kể. Hành động này, kết hợp với các phân tích trước đó, củng cố giả thuyết rằng 2022 là một năm công ty thực hiện tái cơ cấu tài chính để giảm rủi ro.

  • Biểu đồ lượng hóa một cách rõ ràng chiến lược tài chính của công ty: ưu tiên tăng trưởng bằng cách liên tục gia tăng nợ vay, nhưng vẫn có sự chủ động trong việc kiểm soát và giảm nợ khi cần thiết, điển hình là vào năm 2022.

12.14 Dòng tiền liên quan đến Cổ đông

ggplot(equity_flow, aes(x = Nam, y = GiaTri, fill = ChiTieu)) +
  geom_bar(stat="identity", position="dodge") +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  geom_hline(yintercept = 0) +
  labs(title = "Dòng tiền liên quan đến Cổ đông",
       x = "Năm", y = "Giá trị (nghìn tỷ đồng)", fill="Hoạt động") +
  theme_minimal()

Giải thích kỹ thuật:

– geom_bar(stat=“identity”, position=“dodge”): Tương tự biểu đồ 12, geom_bar với stat=“identity” hoạt động giống geom_col. position=“dodge” đặt các cột của các hoạt động khác nhau cạnh nhau trong cùng một năm.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ cột nhóm để so sánh quy mô của 3 hoạt động khác nhau liên quan đến cổ đông qua các năm.

– Kinh tế:

  • Trả cổ tức là hoạt động chính: Cột màu đỏ (Cổ tức đã trả) xuất hiện gần như hàng năm và có quy mô đáng kể. Cho thấy công ty có chính sách trả lại tiền mặt cho cổ đông một cách tương đối đều đặn thông qua cổ tức. Quy mô trả cổ tức có xu hướng tăng lên, phản ánh sự lớn mạnh của công ty.

  • Huy động vốn Cổ phần không thường xuyên: Cột màu xanh dương (Tiền thu từ phát hành cổ phiếu) xuất hiện không đều và có quy mô nhỏ hơn nhiều so với hoạt động vay nợ. Điều này khẳng định lại rằng huy động vốn từ cổ đông không phải là kênh tài trợ chính. Công ty chỉ thực hiện việc này trong một vài năm cụ thể khi có nhu cầu.

  • Mua lại cổ phiếu không phải là ưu tiên: Cột màu xanh lá (Mua lại cổ phiếu) xuất hiện rất ít và có quy mô nhỏ. Cho thấy việc mua lại cổ phiếu quỹ không phải là một công cụ được công ty ưu tiên sử dụng để trả lại giá trị cho cổ đông.

  • Biểu đồ cho thấy một chính sách khá rõ ràng đối với cổ đông: ưu tiên trả cổ tức bằng tiền mặt như một cách để chia sẻ lợi nhuận, trong khi việc huy động thêm vốn từ họ chỉ mang tính thời điểm và không phải là chiến lược dài hạn.

12.15 Tỷ lệ Cổ tức đã trả trên Dòng tiền tự do (FCFF)

ggplot(dividend_payout_on_fcff, aes(x=Nam, y=Payout_Ratio)) +
  geom_col(aes(fill = Payout_Ratio < 0)) +
  scale_y_continuous(labels = percent_format()) +
  scale_x_continuous(breaks = seq(2015, 2024, 1)) +
  labs(title = "Tỷ lệ Trả cổ tức trên Dòng tiền tự do (FCFF)",
       x = "Năm", y = "Tỷ lệ") +
  theme_light() + theme(legend.position = "none")

Giải thích kỹ thuật:

– geom_col(aes(fill = Payout_Ratio < 0)): Tương tự biểu đồ 13, sử dụng điều kiện logic để tô màu khác nhau cho các cột có tỷ lệ âm (chính sách “gượng ép”) và các cột có tỷ lệ dương (chính sách bền vững).

– scale_y_continuous(labels = percent_format()): Định dạng trục y để hiển thị dưới dạng phần trăm.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ cột phân kỳ để làm nổi bật các giá trị âm và dương.

– Kinh tế:

  • Giai đoạn “Gượng ép” (2016, 2019, 2021): Các cột màu xanh nằm dưới vạch 0. Trong những năm này, công ty có FCFF âm (không tạo ra đủ tiền tự do) nhưng vẫn chi tiền trả cổ tức. Để làm được điều này, họ phải đi vay hoặc dùng tiền dự trữ. Đây là một chính sách cổ tức không bền vững và tiềm ẩn rủi ro.

  • Giai đoạn Bền vững (2017, 2018, 2020, 2022, 2023, 2024): Các cột màu đỏ nằm trên vạch 0 và đều dưới mức 100%. Đây là một dấu hiệu tài chính rất lành mạnh. Công ty chỉ sử dụng một phần dòng tiền tự do mà mình tạo ra để trả cổ tức. Ví dụ, năm 2018, công ty dùng khoảng 63% FCFF để trả cổ tức, 37% còn lại có thể dùng để trả nợ hoặc tích lũy.

  • Biểu đồ cho thấy một sự trưởng thành rõ rệt. Công ty đã chuyển từ giai đoạn phải “gồng mình” trả cổ tức sang một chính sách lành mạnh và bền vững hơn, chỉ chi trả từ phần thặng dư tiền mặt thực sự tạo ra. Điều này làm tăng sự tin tưởng của nhà đầu tư vào khả năng tài chính dài hạn của công ty.

12.16 Xu hướng của Tỷ lệ Tái đầu tư qua các năm

ggplot(reinvestment_trend, aes(x=Nam, y=Reinvestment_Ratio)) + 
  geom_line(size=1.2, color="dodgerblue") + 
  geom_point(size=3, color="dodgerblue") + 
  geom_hline(yintercept=0) + scale_x_continuous(breaks=seq(2015,2024,1)) + labs(title="Xu hướng Tỷ lệ Tái đầu tư (Capex/CFO)", x="Năm", y="Tỷ lệ") + 
  theme_gray()

Giải thích kỹ thuật:

– geom_line() và geom_point(): Kết hợp đường và điểm để vừa thể hiện xu hướng liên tục, vừa nhấn mạnh giá trị tại từng năm.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ đường là phương pháp tiêu chuẩn để trực quan hóa sự thay đổi của một biến số qua thời gian.

– Kinh tế:

  • Giai đoạn đầu (2015-2019, trừ 2017-2018): Đầu tư “bất chấp”. Đường biểu diễn nằm dưới vạch 0. Tỷ lệ âm vì CFO âm. Điều này có nghĩa là công ty không chỉ không tạo ra tiền từ kinh doanh mà còn chi tiêu rất mạnh cho đầu tư. Đây là giai đoạn “đốt tiền” quyết liệt nhất.

  • Điểm bất thường cực lớn (2021): Tỷ lệ tái đầu tư vọt lên mức đỉnh gần 30 (tức 3000%). Trong năm 2021, số tiền công ty chi cho đầu tư lớn gấp 29 lần số tiền ít ỏi mà hoạt động kinh doanh tạo ra. Đây là năm công ty thực hiện một khoản đầu tư cực lớn trong khi CFO rất yếu, một điểm rủi ro cao độ.

  • Giai đoạn “Trưởng thành” (2022-2024): Giảm dần mức độ Tái đầu tư. Đường biểu diễn giảm mạnh và tiệm cận về 0. Đây là xu hướng quan trọng nhất. Nó cho thấy một sự thay đổi rõ rệt trong chiến lược. Mặc dù CFO vẫn rất lớn, công ty đang dùng ngày càng ít phần trăm trong số đó để tái đầu tư vào tài sản cố định.

  • Biểu đồ xu hướng của tỷ lệ tái đầu tư cho thấy công ty đang chuyển dịch chiến lược một cách rõ nét: từ một doanh nghiệp “tăng trưởng bằng mọi giá”, đầu tư bất chấp, sang một doanh nghiệp trưởng thành hơn, giảm dần cường độ đầu tư vào tài sản và có thể sẽ tập trung hơn vào việc tối ưu hóa hiệu quả và tạo ra giá trị tiền mặt cho cổ đông.

12.17 Xu hướng của Tỷ lệ Chất lượng Lợi nhuận (CFO/PBT)

ggplot(quality_trend, aes(x=Nam, y=CFO_to_PBT_Ratio)) + geom_col(aes(fill=CFO_to_PBT_Ratio)) + 
  scale_x_continuous(breaks=seq(2015,2024,1)) + 
  geom_hline(yintercept=1, color="red", linetype="dashed") + scale_fill_gradient(low="orange", high="green") + 
  labs(title="Xu hướng Chất lượng Lợi nhuận (CFO/PBT)", x="Năm", y="Tỷ lệ") +
  theme_minimal()

Giải thích kỹ thuật:

– geom_col(aes(fill = CFO_to_PBT_Ratio)): Vẽ biểu đồ cột, với màu sắc của cột (fill) được ánh xạ liên tục theo giá trị của chính nó.

– scale_fill_gradient(low=“orange”, high=“green”): Tạo một dải màu gradient, các giá trị thấp sẽ có màu cam, các giá trị cao sẽ có màu xanh lá. Đây là một cách hiệu quả để mã hóa thông tin về chất lượng.

– geom_hline(yintercept=1, …): Thêm một đường tham chiếu tại mốc 1.0, là ngưỡng quan trọng để đánh giá chất lượng lợi nhuận.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Sử dụng màu sắc như một kênh thông tin thứ ba (ngoài trục x và y) để nhấn mạnh sự khác biệt về giá trị.

– Kinh tế:

  • Giai đoạn đầu (2015, 2016, 2019): Lợi nhuận “ảo”. Các cột có màu cam và nằm dưới vạch 0. Mặc dù công ty báo cáo có lãi, dòng tiền lại âm, cho thấy chất lượng lợi nhuận rất thấp.

  • Giai đoạn Cải thiện (2017, 2018): Các cột có màu vàng và nằm trên vạch 0 nhưng dưới ngưỡng 1. Công ty đã bắt đầu chuyển đổi được lợi nhuận thành tiền mặt, nhưng hiệu quả chưa cao.

  • Giai đoạn Bùng nổ Chất lượng (2020, 2022-2024): Các cột có màu xanh lá cây và vượt xa ngưỡng 1, đặc biệt là năm 2023. Đây là một tín hiệu cực kỳ tích cực. Công ty không chỉ chuyển đổi toàn bộ lợi nhuận thành tiền mặt mà còn “tạo” thêm tiền từ việc quản lý vốn lưu động hiệu quả. Năm 2023, công ty tạo ra gần 5 đồng tiền mặt cho mỗi 1 đồng lợi nhuận kế toán, cho thấy một hiệu quả quản trị vượt trội.

  • Biểu đồ cho thấy một sự tiến hóa rõ rệt. Công ty đã đi từ giai đoạn có “lợi nhuận ảo” sang giai đoạn có chất lượng lợi nhuận xuất sắc, với khả năng tạo ra dòng tiền vượt trội so với lợi nhuận kế toán, một dấu hiệu của hiệu quả hoạt động và quản trị tài chính hàng đầu.

12.18 Xu hướng của Khả năng trả nợ (CFO/Trả nợ gốc)

ggplot(debt_coverage_trend, aes(x=Nam, y=CFO_to_DebtPayment_Ratio)) + geom_area(fill="tomato", alpha=0.5) + geom_line(color="tomato") + scale_x_continuous(breaks=seq(2015,2024,1)) + 
  geom_hline(yintercept=1, linetype="dashed") + 
  annotate("text", x=2017, y=1, vjust=-0.5, label="Mức tự chủ trả nợ") + labs(title="Xu hướng Khả năng Trả nợ từ CFO", x="Năm", y="Tỷ lệ") +
  theme_light()

Giải thích kỹ thuật:

– geom_area(): Vẽ biểu đồ diện tích, tô màu phần diện tích dưới đường biểu diễn. Nó giúp nhấn mạnh “khối lượng” hoặc “quy mô” của chỉ số qua thời gian.

– annotate(): Thêm một lớp văn bản tĩnh vào biểu đồ để giải thích ý nghĩa của đường tham chiếu.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ diện tích (area chart) nhấn mạnh sự thay đổi về mặt khối lượng của một biến số theo thời gian.

– Kinh tế:

  • Hoàn toàn phụ thuộc vào Vốn ngoài: Trong suốt 10 năm, đường biểu diễn luôn luôn nằm sâu bên dưới “Mức tự chủ trả nợ” (1.0). Tỷ lệ cao nhất chỉ đạt khoảng 0.22 (22%) vào năm 2020. Đây là một thông điệp trực quan rất mạnh mẽ. Nó cho thấy dòng tiền từ hoạt động kinh doanh của công ty chưa bao giờ đủ để tự trang trải cho các khoản nợ gốc đã trả. Ngay cả trong năm tốt nhất, công ty cũng chỉ tạo ra được 22 đồng từ kinh doanh cho mỗi 100 đồng nợ gốc đã trả.

  • Mô hình “Đảo nợ” là Bắt buộc: Vì không thể dùng tiền từ kinh doanh để trả nợ, công ty bắt buộc phải liên tục huy động các nguồn vốn khác (chủ yếu là vay nợ mới) để có tiền trả nợ cũ. Biểu đồ này là bằng chứng rõ ràng nhất cho mô hình “đảo nợ” mà chúng ta đã thấy ở các phân tích trước.

  • Biểu đồ xu hướng này vẽ nên một bức tranh rõ ràng về rủi ro tài chính. Mặc dù công ty đang tăng trưởng mạnh, nhưng sức khỏe tài chính nội tại của nó còn yếu và phụ thuộc rất nhiều vào khả năng liên tục huy động vốn từ thị trường. Bất kỳ sự tắc nghẽn nào trong việc huy động vốn đều có thể tạo ra áp lực thanh khoản rất lớn.

12.19 Tìm mối tương quan giữa CFO và FCFF

ggplot(final_analytical_df, aes(x=`Lưu chuyển tiền thuần từ hoạt động kinh doanh`, y=FCFF)) + 
  geom_point(size=4, alpha=0.7, color="purple") + 
  geom_smooth(method="lm", se=FALSE, color="black") + 
  scale_x_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + labs(title="Mối tương quan giữa CFO và FCFF", subtitle=paste0("Hệ số tương quan: ", round(correlation_cfo_fcff$Correlation, 2)), x="Dòng tiền từ HĐKD", y="Dòng tiền tự do") + 
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Giải thích kỹ thuật:

– geom_point(): Vẽ biểu đồ phân tán (scatter plot), mỗi điểm đại diện cho một năm, với tọa độ x là CFO và y là FCFF.

– geom_smooth(method=“lm”, se=FALSE): Thêm một lớp đường hồi quy tuyến tính (method=“lm”) để thể hiện xu hướng chung của mối quan hệ. se=FALSE để ẩn khoảng tin cậy.

– paste0(…) trong labs(): Tự động chèn giá trị hệ số tương quan đã tính toán vào phụ đề của biểu đồ, làm cho biểu đồ trở nên đầy đủ thông tin.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ phân tán là công cụ tiêu chuẩn để trực quan hóa mối quan hệ giữa hai biến số liên tục. Đường hồi quy giúp xác định chiều hướng và độ dốc của mối quan hệ đó.

– Kinh tế:

  • Mối quan hệ Đồng biến Rất mạnh: Các điểm dữ liệu nằm khá gần nhau và bám theo một đường thẳng dốc lên. Hệ số tương quan là 0.92, một giá trị rất gần 1. Điều này cho thấy có một mối quan hệ đồng biến (cùng chiều) và rất chặt chẽ giữa CFO và FCFF. Nói một cách đơn giản: khi dòng tiền từ hoạt động kinh doanh tăng, dòng tiền tự do cũng có xu hướng tăng mạnh theo, và ngược lại.

  • Hiệu quả Chuyển đổi Cao: Một mối tương quan cao ngụ ý rằng chi tiêu vốn (Capex), là thành phần khác biệt giữa CFO và FCFF, không biến động quá mạnh đến mức làm phá vỡ mối quan hệ này. Sự tăng trưởng của dòng tiền kinh doanh đã được chuyển hóa hiệu quả thành giá trị tiền mặt thực sự cho nhà đầu tư.

  • Mối tương quan cao này là một tín hiệu rất tích cực đối với nhà đầu tư. Nó cho thấy mô hình kinh doanh của công ty có khả năng chuyển đổi hiệu quả thành quả từ hoạt động kinh doanh thành tiền mặt tự do, làm tăng sự tin tưởng vào khả năng tạo ra giá trị bền vững của công ty trong dài hạn.

12.20 Phân loại chiến lược dòng tiền

ggplot(cashflow_strategy_profile, aes(x = Nam, y = 1, fill = Profile)) + geom_tile(color = "white") + geom_text(aes(label = Profile), angle = 90, size = 3) + scale_x_continuous(breaks = seq(2015, 2024, 1)) + 
  labs(title = "Phân loại Chiến lược Dòng tiền qua các năm", x = "Năm", y = "", fill="Mô hình") + 
  theme_void() + 
  theme(axis.text.x = element_text())

Giải thích kỹ thuật:

– geom_tile(): Vẽ biểu đồ dạng ô (tile map hoặc heatmap). Mỗi ô (tile) đại diện cho một năm.

– fill = Profile: Màu sắc của mỗi ô được quyết định bởi biến phân loại Profile.

– geom_text(angle = 90): Thêm nhãn văn bản vào giữa mỗi ô và xoay 90 độ cho dễ đọc.

– theme_void(): Một theme tối giản, loại bỏ tất cả các yếu tố không cần thiết như trục, lưới, nền, chỉ để lại phần biểu đồ chính.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một cách trực quan hóa dữ liệu phân loại theo thời gian, giúp nhận diện các mẫu (patterns) và sự thay đổi trạng thái.

–Kinh tế:

  • Mô hình “Khởi nghiệp/Khủng hoảng” (Màu đỏ: CFO:-, CFI:-, CFF:+): Xuất hiện trong các năm 2015, 2016, 2019. Đây là mô hình của một công ty đang “đốt tiền” ở cả hoạt động kinh doanh (CFO-) và đầu tư (CFI-). Để tồn tại và phát triển, công ty phải liên tục huy động vốn từ bên ngoài (CFF+). Đây là giai đoạn rủi ro nhất.

  • Mô hình “Tăng trưởng” (Màu xanh lá: CFO:+, CFI:-, CFF:+): Đây là mô hình phổ biến và chủ đạo nhất, chiếm đa số các năm. Đây là mô hình kinh điển của một doanh nghiệp đang tăng trưởng mạnh. Hoạt động kinh doanh cốt lõi đã tạo ra tiền (CFO+). Lượng tiền này cùng với vốn huy động thêm từ bên ngoài (CFF+) được dùng để tài trợ cho các hoạt động đầu tư mở rộng quy mô (CFI-).

  • Mô hình “Tái cơ cấu” (Màu xanh dương: CFO:+, CFI:+, CFF:-): Mô hình này duy nhất xuất hiện vào năm 2022. Đây là một mô hình rất đặc biệt và là một năm ngoại lệ. Công ty tạo ra tiền từ cả hoạt động kinh doanh (CFO+) và hoạt động đầu tư (CFI+, nghĩa là bán tài sản/thu hồi vốn). Toàn bộ lượng tiền dồi dào này được dùng để trả nợ/cổ tức/mua lại cổ phiếu (CFF-). Điều này khẳng định năm 2022 là một năm công ty thực hiện tái cơ cấu tài chính một cách mạnh mẽ.

  • Biểu đồ này tóm tắt một cách xuất sắc hành trình của công ty: từ một doanh nghiệp “khởi nghiệp” rủi ro, chuyển mình thành một cỗ máy “tăng trưởng” điển hình, và có cả những năm thực hiện “tái cơ cấu” một cách chủ động và chiến lược.

12.21 Biến động Tiền mặt qua các năm

ggplot(cash_balance_analysis) +
  geom_col(aes(x = as.factor(Nam), y = LCTT_TrongNam, fill = LCTT_TrongNam > 0)) +
  geom_line(aes(x = as.factor(Nam), y = TienCuoiNam, group = 1), color = "blue", size = 1.2) +
  geom_point(aes(x = as.factor(Nam), y = TienCuoiNam), color = "blue", size = 3) +
  labs(title="Biến động Tiền mặt qua các năm", x="Năm", y="Giá trị (nghìn tỷ đồng)") +
  scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) +
  theme_light() + theme(legend.position = "none")

Giải thích kỹ thuật:

– Kết hợp Geoms: Đây là một biểu đồ kết hợp phức tạp. geom_col() được dùng để vẽ các cột thể hiện LCTT_TrongNam (lưu chuyển tiền thuần trong năm), với màu sắc phân biệt giữa năm tăng tiền và năm giảm tiền.

– geom_line() và geom_point() được vẽ trên cùng biểu đồ để thể hiện xu hướng của TienCuoiNam (số dư tiền cuối năm).

– group = 1 trong geom_line: Rất quan trọng để báo cho ggplot biết rằng tất cả các điểm này thuộc về một đường duy nhất, cần được nối lại với nhau.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ này trực quan hóa mối quan hệ nhân quả giữa một biến dòng chảy (LCTT trong năm) và một biến tích trữ (Tiền cuối năm).

– Kinh tế:

  • Xu hướng Tích lũy Tiền mặt Dài hạn: Đường màu xanh (TienCuoiNam) có xu hướng tăng trưởng rõ rệt qua 10 năm, từ mức rất thấp ban đầu lên đến gần 5,000 tỷ. Mặc dù có những năm thăng trầm nhưng về dài hạn, công ty đã tích lũy được một lượng tiền mặt ngày càng lớn, cho thấy khả năng tạo ra thặng dư dòng tiền và cải thiện vị thế thanh khoản.

  • Minh họa tác động của Dòng tiền: Có một mối liên hệ trực tiếp giữa các cột và đường biểu diễn. Những năm có cột màu xanh dương cao (ví dụ 2020: +4,232 tỷ), đường màu xanh tăng vọt. Những năm có cột màu đỏ sâu (ví dụ 2021: -3,205 tỷ), đường màu xanh sụt giảm mạnh. Biểu đồ minh họa một cách trực quan rằng Lưu chuyển tiền thuần trong năm chính là động lực duy nhất làm tăng hoặc giảm lượng tiền mặt của công ty.

  • Biểu đồ cho thấy công ty đang ngày càng “giàu” hơn về mặt tiền mặt theo thời gian. Sự “giàu có” này biến động trực tiếp theo kết quả của dòng tiền ròng (tổng hợp của cả 3 hoạt động kinh doanh, đầu tư, tài chính) mà công ty tạo ra hoặc sử dụng mỗi năm.

12.22 Tỷ lệ “Đệm” Tiền mặt

ggplot(cash_cushion_ratio, aes(x=Nam, y=Cash_Cushion)) + geom_line() + geom_point() + scale_y_continuous(labels=percent_format()) + scale_x_continuous(breaks=seq(2015,2024,1)) + labs(title="Tỷ lệ 'Đệm' Tiền mặt", x="Năm", y="Tỷ lệ") + theme_minimal()

Giải thích kỹ thuật:

– geom_line() và geom_point(): Vẽ một biểu đồ đường đơn giản để thể hiện xu hướng của tỷ lệ Cash_Cushion qua các năm.

– scale_y_continuous(labels=percent_format()): Định dạng trục y để hiển thị dưới dạng phần trăm, giúp người đọc dễ hiểu hơn.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Trực quan hóa sự thay đổi của một biến tỷ lệ theo thời gian, giúp nhận diện xu hướng tăng, giảm hay ổn định.

– Kinh tế:

  • “Đệm” tiền mặt Nhìn chung rất Mỏng: Trong suốt 10 năm, tỷ lệ này chưa bao giờ vượt quá 12%. Hầu hết thời gian, nó dao động dưới mức 10%. Một “đệm” tiền mặt mỏng cho thấy công ty đang vận hành với mức độ an toàn thanh khoản thấp. Lượng tiền mặt dự trữ chỉ đủ để trang trải một phần rất nhỏ (thường là dưới 1 tháng) tổng chi tiêu hàng năm.

  • Xu hướng Giảm đáng lo ngại: Mặc dù có những đỉnh điểm vào năm 2017 và 2020, xu hướng chung của đường biểu diễn, đặc biệt từ năm 2020 đến 2024, là đi xuống. Tỷ lệ này giảm từ mức cao nhất (~12%) xuống mức thấp nhất lịch sử (~4%) vào năm 2024. Điều này cho thấy mặc dù lượng tiền mặt tuyệt đối có thể tăng, nhưng quy mô chi tiêu của công ty còn tăng nhanh hơn, dẫn đến “tấm đệm” an toàn ngày càng bị bào mỏng.

  • Biểu đồ cảnh báo một rủi ro thanh khoản tiềm ẩn ngày càng tăng. Công ty ngày càng phụ thuộc vào việc dòng tiền thu về phải diễn ra liên tục để đáp ứng các nghĩa vụ chi trả. Bất kỳ sự gián đoạn nào trong dòng thu đều có thể gây ra khó khăn thanh khoản ngay lập tức, đặc biệt là trong bối cảnh tỷ lệ an toàn đang ở mức thấp nhất trong 10 năm.

12.23 Tỷ lệ số năm Tăng/Giảm Tiền mặt

ggplot(cash_change_status, aes(x = "", y = n, fill = TrangThaiTien)) + geom_bar(stat="identity", width=1) + coord_polar("y", start=0) + geom_text(aes(label=paste0(TrangThaiTien, "\n", n, " năm")), position = position_stack(vjust = 0.5)) + theme_void() + labs(title="Tỷ lệ số năm Tăng/Giảm Tiền mặt")

Giải thích kỹ thuật:

– geom_bar(stat=“identity”, width=1): Vẽ một biểu đồ cột chồng duy nhất với chiều rộng tối đa.

– coord_polar(“y”, start=0): Đây là layer biến đổi. Nó “uốn cong” biểu đồ cột chồng thành một biểu đồ tròn (pie chart). Trục y giờ đây trở thành chu vi của hình tròn.

– geom_text(position = position_stack(vjust = 0.5)): Đặt nhãn văn bản vào giữa mỗi phần của biểu đồ tròn.

– theme_void(): Loại bỏ tất cả các yếu tố không cần thiết (trục, lưới…) để tập trung vào các “miếng bánh”.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ tròn là một cách trực quan hóa cơ cấu tỷ trọng của một tổng thể.

– Kinh tế:

  • Xu hướng chung là Tích cực: “Miếng bánh” màu xanh (Tăng) chiếm phần lớn diện tích của hình tròn, với 7 trên 10 năm. Điều này cho thấy một xu hướng dài hạn rất rõ ràng: công ty có khả năng tạo ra thặng dư dòng tiền và tích lũy tiền mặt theo thời gian. Mặc dù có những năm khó khăn (3 năm Giảm), nhưng nhìn chung, công ty đang ngày càng mạnh hơn về mặt thanh khoản.

  • Khả năng Phục hồi và Bền vững: Tỷ lệ 70% (7/10 năm) tạo ra dòng tiền dương cho thấy công ty có khả năng phục hồi tốt sau những năm khó khăn. Nó không chỉ là thành công nhất thời mà là một xu hướng tương đối bền vững trong dài hạn.

  • Biểu đồ này là một thông điệp trực quan mạnh mẽ và tích cực. Nó cho thấy về tổng thể, đây là một “cỗ máy” có khả năng tạo ra và tích lũy tiền mặt, một đặc điểm rất hấp dẫn đối với các nhà đầu tư và chủ nợ.

12.24 So sánh Tốc độ tăng trưởng: CFO và Capex

cfo_capex_growth_long <- cfo_capex_growth %>% pivot_longer(-Nam, names_to="Type", values_to="Growth")
ggplot(cfo_capex_growth_long, aes(x=Nam, y=Growth, color=Type)) + 
geom_line(size=1.2) + geom_point(size=3) + scale_x_continuous(breaks=seq(2015,2024,1)) + 
geom_hline(yintercept=0) + labs(title="So sánh Tốc độ tăng trưởng: CFO và Capex", x="Năm", y="Tăng trưởng (%)") + theme_bw()
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).

Giải thích kỹ thuật:

– Tái cấu trúc dữ liệu: pivot_longer() được dùng để chuyển 2 cột CFO_Growth và Capex_Growth thành một cột Type và một cột Growth, giúp việc vẽ biểu đồ đường kép trở nên dễ dàng.

– geom_line(aes(color=Type)): Vẽ hai đường riêng biệt, với màu sắc được quyết định bởi cột Type.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ đường kép là phương pháp tiêu chuẩn để so sánh xu hướng của hai hoặc nhiều chuỗi thời gian.

– Kinh tế:

  • Mối quan hệ không đồng nhất: Hai đường biểu diễn gần như không bao giờ đồng pha. Chúng thường xuyên di chuyển theo các hướng ngược nhau. Điều này cho thấy các quyết định đầu tư (Capex) của công ty không phụ thuộc vào kết quả kinh doanh (CFO) của năm liền trước. Công ty không hành động theo kiểu “năm nay kinh doanh tốt thì năm sau đầu tư mạnh”.

  • Đầu tư mang tính Dài hạn và Chiến lược: Sự không đồng nhất này ngụ ý rằng chiến lược đầu tư của công ty mang tính dài hạn và đã được hoạch định từ trước. Công ty vẫn có thể tăng cường đầu tư (ví dụ năm 2019, Capex_Growth > 100%) ngay cả khi dòng tiền kinh doanh của năm trước đó sụt giảm. Ngược lại, họ có thể cắt giảm đầu tư ngay cả sau một năm CFO tăng trưởng bùng nổ (như năm 2022).

  • Giai đoạn gần đây: “Hạ nhiệt” Đầu tư: Trong 3 năm gần nhất (2022-2024), đường màu đỏ (Capex_Growth) liên tục nằm dưới vạch 0. Điều này cho thấy công ty đang trong giai đoạn cắt giảm hoặc giảm tốc độ đầu tư vào tài sản cố định so với các năm trước, củng cố nhận định rằng công ty đang bước vào giai đoạn trưởng thành hơn.

  • Biểu đồ cho thấy một sự tách biệt rõ ràng giữa kết quả kinh doanh ngắn hạn và quyết định đầu tư dài hạn, phản ánh một chiến lược đầu tư có kế hoạch và tầm nhìn, không bị ảnh hưởng bởi những biến động nhất thời của dòng tiền kinh doanh.

12.25 Phân tích các khoản mục có ảnh hưởng lớn nhất đến dòng tiền năm 2021

ggplot(analysis_2021, aes(x=reorder(ChiTieu, GiaTri), y=GiaTri, fill=GiaTri>0)) + geom_col() + 
coord_flip() + 
scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + labs(title="Các khoản mục ảnh hưởng đến Dòng tiền năm 2021", subtitle="Các khoản chi lớn nhất và thu lớn nhất", x="Chỉ tiêu", y="Giá trị (nghìn tỷ đồng)") + theme_minimal() + theme(legend.position="none")

Giải thích kỹ thuật:

– reorder(ChiTieu, GiaTri): Sắp xếp lại các ChiTieu trên trục y dựa trên GiaTri của chúng.

– geom_col(): Vẽ biểu đồ cột.

– coord_flip(): “Xoay” biểu đồ 90 độ, biến biểu đồ cột dọc thành biểu đồ cột ngang. Điều này rất hữu ích khi các nhãn trên trục x (bây giờ là y) quá dài.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Biểu đồ cột ngang đã được sắp xếp là một cách rất hiệu quả để xếp hạng các giá trị.

– Kinh tế:

  • “Thủ phạm” chính: Nợ vay và Đầu tư. Các thanh màu đỏ dài nhất ở dưới cùng là “Tiền chi trả nợ gốc vay” (-56,045 tỷ) và “Tiền chi để mua sắm, xây dựng TSCĐ và các tài sản dài hạn khác” (-49,768 tỷ). Rõ ràng, nguyên nhân chính khiến tiền mặt sụt giảm mạnh trong năm 2021 đến từ hai hoạt động: trả một khoản nợ gốc khổng lồ và tiếp tục chi tiêu rất mạnh tay cho đầu tư tài sản. Đây là hai “cỗ máy ngốn tiền” chính trong năm.

  • “Cứu tinh” chính: Vay mới. Thanh màu xanh dài nhất ở trên cùng là “Tiền thu từ đi vay” (+63,936 tỷ). Để có tiền thực hiện các khoản chi khổng lồ ở trên, công ty đã phải dựa chủ yếu vào việc vay một khoản nợ mới rất lớn. Hoạt động kinh doanh cốt lõi (Lưu chuyển tiền thuần từ hoạt động kinh doanh) chỉ đóng góp một phần rất nhỏ, gần như không đáng kể.

  • Biểu đồ “kể” một câu chuyện rất rõ ràng về năm 2021. Đây là một năm tái cơ cấu tài chính và đầu tư mạnh mẽ. Công ty đã thực hiện một chiến lược “vay mới để trả nợ cũ và đầu tư thêm” với quy mô rất lớn. Hoạt động kinh doanh yếu kém không phải là nguyên nhân chính gây ra dòng tiền âm, mà chính là các quyết định chiến lược về tài chính và đầu tư.

12.26 Top 5 khoản mục chi tiền lớn nhất trung bình

ggplot(top_5_spending_items, aes(x=reorder(ChiTieu, TrungBinhChi), y=TrungBinhChi)) + geom_col(fill="firebrick") + 
coord_flip() + 
labs(title="Top 5 Khoản chi tiền Trung bình Lớn nhất (10 năm)", x="Chỉ tiêu", y="Giá trị trung bình (nghìn tỷ đồng)") + scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + theme_classic()

Giải thích kỹ thuật:

– Sử dụng cùng một kỹ thuật như Biểu đồ 25: reorder(), geom_col(), coord_flip() để tạo biểu đồ cột ngang đã được xếp hạng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Xếp hạng các giá trị trung bình để xác định các yếu tố có ảnh hưởng lớn nhất trong dài hạn.

– Kinh tế:

  • Trả nợ gốc vay là Gánh nặng số 1: Thanh “Tiền chi trả nợ gốc vay” dài nhất một cách vượt trội, với mức chi trung bình hơn 40,000 tỷ mỗi năm. Khẳng định rằng nghĩa vụ trả nợ là hoạt động “ngốn tiền” lớn nhất của công ty. Điều này phản ánh trực tiếp chiến lược sử dụng đòn bẩy tài chính cao và mô hình “đảo nợ” liên tục.

  • Đầu tư là Ưu tiên thứ hai: Các khoản chi cho hoạt động đầu tư như “Tiền chi cho vay và tiền gửi ngân hàng có kỳ hạn” và “Lưu chuyển tiền thuần sử dụng vào hoạt động đầu tư” chiếm các vị trí tiếp theo. Cho thấy ngoài việc trả nợ, ưu tiên sử dụng tiền mặt thứ hai của công ty là cho các hoạt động đầu tư, bao gồm cả đầu tư tài chính (gửi tiết kiệm) và đầu tư vào tài sản dài hạn để tăng trưởng.

  • Hàng tồn kho là một vấn đề dai dẳng: Khoản mục “(Tăng) giảm hàng tồn kho” lọt vào top 5. Dấu âm ở đây có nghĩa là hàng tồn kho có xu hướng tăng lên theo thời gian. Việc này liên tục “giam” một lượng tiền mặt đáng kể, cho thấy việc quản lý hàng tồn kho có thể là một điểm yếu trong chuỗi hoạt động của công ty.

  • Biểu đồ tóm tắt chiến lược sử dụng vốn dài hạn của công ty, xoay quanh 3 trục chính: (1) Trả nợ vay, (2) Tái đầu tư mở rộng, và (3) Tài trợ cho hàng tồn kho.

12.27 Top 5 khoản mục thu tiền lớn nhất trung bình

ggplot(top_5_revenue_items, aes(x=reorder(ChiTieu, TrungBinhThu), y=TrungBinhThu)) + geom_col(fill="steelblue") + 
coord_flip() + 
labs(title="Top 5 Khoản thu tiền Trung bình Lớn nhất (10 năm)", x="Chỉ tiêu", y="Giá trị trung bình (nghìn tỷ đồng)") + scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + theme_classic()

Giải thích kỹ thuật:

– Sử dụng cùng một kỹ thuật như Biểu đồ 25: reorder(), geom_col(), coord_flip() để tạo biểu đồ cột ngang đã được xếp hạng.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Xếp hạng các giá trị trung bình để xác định các yếu tố có ảnh hưởng lớn nhất trong dài hạn.

– Kinh tế:

  • Vay nợ là Nguồn vốn Lớn nhất: Thanh “Tiền thu từ đi vay” dài nhất một cách vượt trội, với mức thu trung bình hơn 46,000 tỷ mỗi năm. Điều này cho thấy nguồn tiền mặt lớn nhất và nhất quán nhất của công ty đến từ việc vay nợ. Nó một lần nữa khẳng định chiến lược sử dụng đòn bẩy tài chính làm động lực chính để tài trợ cho các hoạt động tăng trưởng.

  • Hoạt động kinh doanh là Nền tảng Vững chắc: Các chỉ số cốt lõi của hoạt động kinh doanh như “Lợi nhuận từ HĐKD trước thay đổi vốn lưu động” và “Lưu chuyển tiền thuần từ HĐKD” đều nằm trong top 5, với quy mô đáng kể. Điều này khẳng định rằng về dài hạn, hoạt động kinh doanh cốt lõi là nền tảng tạo ra tiền mặt bền vững cho công ty. Đây là một dấu hiệu cực kỳ tích cực, cho thấy công ty không chỉ sống bằng nợ.

  • Quản lý Tài chính Linh hoạt: “Thu hồi tiền gửi ngân hàng có kỳ hạn” là nguồn thu lớn thứ hai. Cho thấy công ty cũng tích cực sử dụng các công cụ tài chính ngắn hạn. Việc thu hồi các khoản tiền gửi này tạo ra một nguồn tiền mặt linh hoạt để đáp ứng các nhu-cầu vốn đột xuất hoặc khi có cơ hội đầu tư tốt.

  • Phân tích top các khoản thu cho thấy mô hình tài chính của công ty dựa trên hai trụ cột chính: (1) Động lực tăng trưởng mạnh mẽ từ việc liên tục huy động vốn vay và (2) Nền tảng tạo tiền bền vững từ hoạt động kinh doanh cốt lõi.

12.28 Độ biến động (Độ lệch chuẩn) của các Dòng tiền

volatility_long <- cashflow_volatility %>% pivot_longer(everything(), names_to="Type", values_to="SD")
ggplot(volatility_long, aes(x=Type, y=SD, fill=Type)) + 
geom_col() + 
scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + labs(title="Độ biến động (Độ lệch chuẩn) của các Dòng tiền", subtitle="CFI là dòng tiền khó dự đoán nhất", x="", y="Độ lệch chuẩn (nghìn tỷ đồng)") + theme_minimal() + theme(legend.position="none")

Giải thích kỹ thuật:

– geom_col(): Vẽ một biểu đồ cột đơn giản để so sánh 3 giá trị độ lệch chuẩn đã được tính toán.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Trực quan hóa một đại lượng thống kê về độ phân tán, giúp so sánh mức độ biến động giữa các nhóm.

– Kinh tế:

  • Hoạt động Đầu tư (CFI) là Rủi ro và Khó đoán nhất: Cột màu xanh lá (SD_CFI) cao nhất, cho thấy dòng tiền từ hoạt động đầu tư có độ biến động lớn nhất. Điều này hoàn toàn hợp lý. Các quyết định đầu tư (mua/bán tài sản) thường mang tính dự án, không diễn ra đều đặn. Có những năm công ty chi đầu tư rất lớn, và có những năm chi ít hơn hoặc thậm chí bán tài sản, tạo ra sự biến động rất lớn cho dòng tiền này.

  • Hoạt động Kinh doanh (CFO) là Ổn định nhất (tương đối): Cột màu xanh dương (SD_CFO) thấp nhất trong ba cột. Mặc dù vẫn có mức độ biến động cao, nhưng dòng tiền từ kinh doanh là nguồn tiền ổn định và dễ dự đoán nhất so với hai hoạt động còn lại. Đây là một tín hiệu tích cực, vì nó cho thấy hoạt động cốt lõi của công ty có một nền tảng tương đối vững chắc.

  • Biểu đồ cho thấy trong ba hoạt động chính, dòng tiền từ Hoạt động Kinh doanh là đáng tin cậy nhất, trong khi dòng tiền từ Hoạt động Đầu tư là thất thường và khó lường nhất. Điều này phản ánh đúng bản chất của một doanh nghiệp đang tăng trưởng: hoạt động kinh doanh tạo ra nền tảng, còn các quyết định đầu tư mang tính đột phá và không đều đặn.

12.29 So sánh dòng tiền thuần hàng năm với giá trị trung bình 10 năm

comparison_to_mean_long <- comparison_to_mean %>% select(-CFO, -CFI, -CFF) %>% pivot_longer(-Nam, names_to="Type", values_to="Deviation")
ggplot(comparison_to_mean_long, aes(x=Nam, y=Deviation, fill=Type)) + 
geom_col() + 
facet_wrap(~Type, ncol=1, scales="free_y") + 
geom_hline(yintercept=0) + scale_x_continuous(breaks=seq(2015,2024,1)) + scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + labs(title="Độ lệch của Dòng tiền so với Mức trung bình 10 năm", x="Năm", y="Độ lệch (nghìn tỷ đồng)") + theme_bw()

Giải thích kỹ thuật:

– facet_wrap(~Type, ncol=1, scales=“free_y”): Chia biểu đồ thành 3 ô riêng biệt cho CFO, CFI, và CFF. scales=“free_y” cho phép mỗi ô có thang đo riêng.

– geom_col(): Vẽ các cột thể hiện độ lệch so với trung bình.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Đây là một biểu đồ độ lệch, trực quan hóa sự khác biệt giữa giá trị thực tế và một giá trị tham chiếu (ở đây là trung bình).

– Kinh tế:

  • Dòng tiền Kinh doanh (CFO_vs_Avg - Biểu đồ dưới): Các năm 2020, 2022, 2024 có các cột dương rất cao, trong khi các năm đầu và năm 2019 có các cột âm sâu. Cho thấy các năm gần đây, đặc biệt là 2020, là những năm công ty có hiệu suất tạo tiền từ kinh doanh vượt trội so với mức trung bình. Ngược lại, những năm đầu là những năm hoạt động yếu kém hơn nhiều.

  • Dòng tiền Đầu tư (CFI_vs_Avg - Biểu đồ giữa): Năm 2022 có cột dương rất lớn, trong khi các năm còn lại hầu hết là âm hoặc dương nhẹ. Khẳng định lại năm 2022 là một năm bất thường và ngoại lệ về hoạt động đầu tư. Thay vì chi tiêu mạnh tay như thường lệ (mức trung bình là âm), công ty lại thu về một lượng tiền ròng khổng lồ, vượt xa mức trung bình.

  • Dòng tiền Tài chính (CFF_vs_Avg - Biểu đồ trên): Năm 2021 và 2023 có các cột dương rất lớn, trong khi năm 2022 có cột âm sâu nhất. Cho thấy trong các năm 2021 và 2023, công ty đã huy động vốn mạnh mẽ hơn nhiều so với mức trung bình. Ngược lại, năm 2022 là năm công ty trả nợ ròng quyết liệt nhất, đi ngược lại xu hướng chung.

  • Biểu đồ này là một công cụ chẩn đoán hiệu quả. Nó không chỉ cho biết một năm tốt hay xấu, mà còn cho biết nó tốt hay xấu như thế nào so với chính “phong độ” lịch sử của công ty, giúp làm nổi bật những năm có sự kiện tài chính đột biến cần phân tích sâu (đặc biệt là năm 2022).

12.30 Cơ cấu các khoản mục chi trả lãi vay, thuế và cổ tức

ggplot(main_payouts_structure, aes(x=Nam, y=abs(GiaTri), fill=ChiTieu)) + geom_area(alpha=0.8) + 
scale_y_continuous(labels = label_number(suffix = " tỷ", scale = 1e-9)) + scale_x_continuous(breaks=seq(2015,2024,1)) + 
labs(title="Cơ cấu các Khoản chi trả Lãi vay, Thuế và Cổ tức", x="Năm", y="Giá trị chi trả (nghìn tỷ đồng)", fill="Loại chi trả") + theme_light()

Giải thích kỹ thuật:

– geom_area(alpha=0.8): Vẽ biểu đồ diện tích chồng. Khác với biểu đồ cột chồng, biểu đồ diện tích nối các điểm dữ liệu lại với nhau, nhấn mạnh sự thay đổi liên tục và xu hướng theo thời gian. alpha=0.8 làm cho các lớp màu hơi trong suốt.

Ý nghĩa thống kê và kinh tế:

– Thống kê: Trực quan hóa sự thay đổi của cả giá trị tuyệt đối (tổng chiều cao) và cơ cấu tỷ trọng (diện tích của mỗi màu) của một tổng thể qua thời gian.

– Kinh tế:

  • Tổng Quy mô Chi trả Ngày càng Tăng: Chiều cao tổng thể của biểu đồ có xu hướng tăng lên rõ rệt qua các năm, đạt đỉnh điểm vào năm 2022. Cho thấy tổng gánh nặng chi trả cho các bên liên quan của công ty ngày càng lớn, phản ánh sự mở rộng về quy mô hoạt động và quy mô nợ vay.

  • Gánh nặng Lãi vay Tăng nhanh: Vùng diện tích màu xanh lá (Tiền lãi vay đã trả) ngày càng dày lên và chiếm tỷ trọng lớn trong tổng chi trả. Đây là hệ quả trực tiếp của chiến lược sử dụng đòn bẩy nợ. Khi công ty vay nợ nhiều hơn để tăng trưởng, gánh nặng chi phí lãi vay cũng tăng theo, chiếm một phần ngày càng lớn trong chiếc bánh phân phối tiền mặt.

  • Cổ tức là “Phần còn lại”: Vùng diện tích màu đỏ (Cổ tức đã trả) thường là lớp trên cùng và có độ dày không ổn định. Điều này cho thấy công ty ưu tiên thực hiện nghĩa vụ với chủ nợ và nhà nước trước. Cổ tức dường như là phần “thặng dư” được chia sau khi đã hoàn thành các nghĩa vụ bắt buộc, do đó nó biến động nhiều hơn.

  • Biểu đồ cho thấy một bức tranh tài chính rõ ràng: khi công ty lớn mạnh, tổng gánh nặng chi trả cũng tăng theo. Đáng chú ý nhất là sự gia tăng của chi phí lãi vay, phản ánh cái giá của chiến lược tăng trưởng bằng vốn vay.

13 Kết luận

– Phân tích dữ liệu tài chính 10 năm qua cho thấy một quá trình chuyển đổi mạnh mẽ của doanh nghiệp. Từ giai đoạn đầu phụ thuộc hoàn toàn vào vốn vay để tồn tại và đầu tư, công ty đã vươn lên trở thành một cỗ máy tăng trưởng, với điểm sáng cốt lõi là khả năng tạo ra dòng tiền từ hoạt động kinh doanh (CFO) ngày càng lớn và có chất lượng vượt trội. Chiến lược của công ty được định hình rõ nét qua mô hình “Tăng trưởng” điển hình: dùng tiền từ kinh doanh kết hợp với vốn vay để liên tục tái đầu tư mở rộng quy mô.

– Tuy nhiên, đi kèm với sự tăng trưởng ấn tượng là những rủi ro tài chính đáng kể. Phân tích cho thấy một sự phụ thuộc nặng nề và xuyên suốt vào đòn bẩy nợ, với khả năng tự chủ trả nợ từ hoạt động kinh doanh còn rất thấp. Dòng tiền của công ty cũng thể hiện sự biến động mạnh, với những năm tăng trưởng đột biến xen kẽ những “cú sốc” do các quyết định đầu tư hoặc trả nợ quy mô lớn.

– Tóm lại, doanh nghiệp đã chứng minh được một mô hình kinh doanh hiệu quả và một chiến lược tăng trưởng thành công. Thách thức lớn nhất trong tương lai sẽ là quản trị rủi ro từ đòn bẩy tài chính và chuyển dịch sang một mô hình phát triển bền vững hơn khi bước vào giai đoạn trưởng thành.