Bộ dữ liệu về các cầu thủ bóng chuyền trong Giải bóng chuyền quốc gia năm 2023 (Volleyball National League in 2023). Bộ dữ gồm 131 quan trắc và 10 biến:
Player
: Tên của vận động viên.
Country
: Quốc tịch của vận động viên.
Age
: Tuổi của vận động viên.
Attack
: Trung bình tổng thể của vận động viên trong
mỗi trận đấu khi tham gia khâu tấn công.
Block
(Chắn bóng): Trung bình tổng thể của vận động
viên trong mỗi trận đấu khi tham gia phòng thủ trên lưới.
Serve
(Phát bóng): Trung bình khả năng phát bóng của
từng vận động viên trong trận đấu.
Set
(Chuyền bóng): Trung bình số lần chuyền thành
công, lỗi chuyền và số lần chuyền thử trong mỗi pha bóng.
Dig
(Phòng thủ): Trung bình số lần cứu bóng, lỗi cứu
bóng và đỡ bóng từ đối phương tấn công.
Receive
(Đỡ bóng): Trung bình của các lần chạm được
bóng khi phòng thủ thành công và pha bóng vẫn còn tiếp tục.
Position
(Vị trí): Vị trí đại diện cho vị trí chơi
của vận động viên và bao gồm 5 vị trí cơ bản sau đây:
Sơ đồ cơ bản của vận động viên trong sân:
Lưu ý: Trong mỗi yếu tố, bộ dữ liệu sử dụng điểm trung bình của vận động viên trong một trận đấu, là tác nhân gây ra lỗi, điểm và tỷ lệ phần trăm hiệu suất tích cực của vận động viên đó trong mỗi yếu tố.
(Nguồn dữ liệu: Kaggle - https://www.kaggle.com/datasets/yeganehbavafa/vnl-men-2023
).
Load dữ liệu của bài toán
vnl_players <- read.csv(file="datasets/VNL2023.csv") |>
janitor::clean_names()
head(vnl_players)
dim(vnl_players)
## [1] 131 10
Kiểm tra giá trị khuyết:
colSums(is.na(vnl_players))
## player country age attack block serve set dig
## 0 0 0 0 0 0 0 0
## receive position
## 0 0
colSums(is.na(vnl_players))/nrow(vnl_players)*100
## player country age attack block serve set dig
## 0 0 0 0 0 0 0 0
## receive position
## 0 0
Nhận xét: Bộ dữ liệu được ghi lại đầy đủ các quan
sát, không xuất hiện giá trị khuyết nào.
Kiểm tra giá trị lặp:
sum(duplicated(vnl_players))
## [1] 0
Nhận xét: Không có quan sát nào bị trùng lặp.
Phân tích các biến định tính:
Thống kê số lượng mỗi nhóm
table(vnl_players$country)
##
## Argentina Brazil Bulgaria Canada China Cuba France Germany
## 8 8 8 7 8 7 10 8
## Iran Italy Japan Nederland Poland Serbia Slovenia USA
## 9 8 8 7 10 8 8 9
Countplot cho biến country
:
Nhận xét: Cầu thủ tham gia Giải bóng chuyền quốc gia năm 2023 đến từ 16 quốc gia khác nhau, số lượng cầu thủ từ mỗi nước dao động từ 7 đến 10 người. Phân phối số lượng cầu thủ ở mỗi quốc gia khá đồng đều, không có quốc gia nào áp đảo, có thể so sánh công bằng.
table(vnl_players$position)
##
## L MB OH OP S
## 16 32 42 25 16
Countplot và Pie Chart của biến position
:
Nhận xét:
Phân tích các biến định lượng:
Thống kê mô tả:
vnl_players |>
select(age, attack, block, serve, set, dig, receive) |>
summary()
## age attack block serve
## Min. :19.00 Min. : 0.000 Min. :0.0000 Min. :0.0000
## 1st Qu.:25.00 1st Qu.: 2.800 1st Qu.:0.3700 1st Qu.:0.2400
## Median :27.00 Median : 5.170 Median :0.6900 Median :0.4200
## Mean :27.81 Mean : 5.643 Mean :0.8456 Mean :0.5358
## 3rd Qu.:30.00 3rd Qu.: 8.600 3rd Qu.:1.1400 3rd Qu.:0.7600
## Max. :41.00 Max. :15.800 Max. :4.0800 Max. :2.0800
## set dig receive
## Min. : 0.000 Min. : 0.530 Min. :0.000
## 1st Qu.: 0.000 1st Qu.: 1.920 1st Qu.:0.000
## Median : 0.000 Median : 3.000 Median :0.330
## Mean : 2.193 Mean : 3.428 Mean :1.684
## 3rd Qu.: 0.000 3rd Qu.: 4.510 3rd Qu.:3.385
## Max. :26.890 Max. :11.440 Max. :6.690
Biểu đồ histogram của các biến age
, attack
,
block
, serve
, set
,
dig
, receive
:
Nhận xét:
set
có trung vị bằng 0, nhưng giá trị lớn nhất lên
tới gần 27, khả năng phần lớn cầu thủ không thực hiện chuyền hai, trừ
các Setter chuyên biệt.attack
,
set
, receive
và serve
.Boxplot của các biến:
Nhận xét: Các biến có thang đo chênh lệch nhau
nhiều, do đó cần thực hiện chuẩn hoá dữ liệu trước khi áp dụng các
phương pháp phân tích nhiều chiều.
Ma trận tương quan của các biến:
cor_matrix <- cor(vnl_players[, c("age", "attack", "block", "serve",
"set", "dig", "receive")])
round(cor_matrix, 3)
## age attack block serve set dig receive
## age 1.000 -0.178 -0.101 -0.108 0.178 0.167 -0.011
## attack -0.178 1.000 0.338 0.769 -0.431 -0.099 0.170
## block -0.101 0.338 1.000 0.336 -0.132 -0.348 -0.265
## serve -0.108 0.769 0.336 1.000 -0.155 -0.053 0.040
## set 0.178 -0.431 -0.132 -0.155 1.000 0.132 -0.306
## dig 0.167 -0.099 -0.348 -0.053 0.132 1.000 0.625
## receive -0.011 0.170 -0.265 0.040 -0.306 0.625 1.000
Biểu đồ scatter cho từng cặp biến định lượng:
Nhận xét: Dữ liệu tồn tại những cặp biến có tương
quan mạnh như “attack
(tấn công) và serve
(phát bóng)” (0.769), “dig
(phòng thủ) và
receive
(đỡ bóng)” (0.625) cho thấy các biến kỹ năng này có
xu hướng thay đổi cùng nhau, tức là không hoàn toàn độc lập. Ngoài ra,
biến age
có tương quan thấp với tất cả các biến kỹ năng cho
thấy tuổi không đóng vai trò quyết định kỹ năng chuyên môn.
Việc xuất hiện nhiều cặp biến kỹ năng có tương quan dương mạnh rõ rệt phản ánh bản chất đa chiều và có cấu trúc lặp lại trong không gian kỹ năng của các vận động viên. Đây chính là điều kiện thích hợp để áp dụng phân tích nhiều chiều nhằm phát hiện các chiều kỹ năng tổng hợp tiềm ẩn trong cấu trúc dữ liệu thực, rút gọn dữ liệu nhưng vẫn bảo toàn thông tin và làm rõ sự phân bố kỹ năng giữa các vị trí thi đấu.
Bộ dữ liệu ghi nhận nhiều chỉ số kỹ thuật chuyên môn như
attack
(tấn công), block
(chắn bóng),
serve
(phát bóng), dig
(phòng thủ),
receive
(đỡ bóng), set
(chuyền bóng), cùng với
thông tin tuổi và vị trí thi đấu. Các chỉ số này có thể liên quan chặt
chẽ đến vai trò thi đấu, song không phải lúc nào cũng rõ ràng với nghi
vấn có thể tồn tại những vận động viên đa năng hoặc ngoại lệ chưa được
phân tích kỹ.
Vì vậy, cần áp dụng các phương pháp phân tích nhiều chiều như Phân tích thành phần chính PCA để khám phá cấu trúc nhóm, và Phân tích nhân tố FA để phân tích các nhóm kỹ năng tiềm ẩn chi phối hiệu suất thi đấu.
Khám phá mối liên hệ giữa các biến và phân nhóm đặc điểm thi đấu của các cầu thủ bóng chuyền dựa trên các chỉ số kỹ thuật, nhằm:
Với mục tiêu khám phá cấu trúc kỹ năng kỹ thuật chuyên
môn, ta loại biến age
ra khỏi bộ dữ liệu dùng thực
hiện PCA:
dat_vnl_players <- vnl_players |> select(-player, -country, -position, -age)
names(dat_vnl_players)
## [1] "attack" "block" "serve" "set" "dig" "receive"
Thực hiện tính toán trên phần mềm R thông qua hàm
princomp()
dựa trên ma trận hiệp phương sai \(\mathbf{S}\):
vnl_players.pca.cov <- princomp(dat_vnl_players, cor=F)
summary(vnl_players.pca.cov, loadings=TRUE)
## Importance of components:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
## Standard deviation 6.4643763 3.6002481 2.5853947 1.05473904 0.605134969
## Proportion of Variance 0.6634525 0.2057887 0.1061232 0.01766228 0.005813814
## Cumulative Proportion 0.6634525 0.8692412 0.9753644 0.99302669 0.998840500
## Comp.6
## Standard deviation 0.2702446
## Proportion of Variance 0.0011595
## Cumulative Proportion 1.0000000
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## attack 0.424 0.898
## block -0.990
## serve -0.993
## set -0.899 0.425
## dig 0.745 0.663
## receive 0.657 -0.740
round(vnl_players.pca.cov$sdev^2, 5)
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## 41.78816 12.96179 6.68427 1.11247 0.36619 0.07303
Thực hiện tính toán trên phần mềm R thông qua hàm
princomp()
dựa trên ma trận tương quan mẫu \(\mathbf{R}\):
vnl_players.pca <- princomp(dat_vnl_players, cor=T)
summary(vnl_players.pca, loadings=TRUE)
## Importance of components:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
## Standard deviation 1.4916239 1.3454863 0.9663580 0.7807868 0.49689369
## Proportion of Variance 0.3708236 0.3017222 0.1556413 0.1016047 0.04115056
## Cumulative Proportion 0.3708236 0.6725459 0.8281871 0.9297918 0.97094236
## Comp.6
## Standard deviation 0.41754740
## Proportion of Variance 0.02905764
## Cumulative Proportion 1.00000000
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## attack 0.592 0.213 0.117 0.227 0.730
## block 0.425 -0.285 -0.856
## serve 0.540 0.129 0.470 0.268 -0.626
## set -0.340 -0.256 0.785 0.410 0.184
## dig -0.245 0.572 0.364 -0.304 -0.609 0.131
## receive 0.682 -0.107 -0.227 0.669 -0.154
round(vnl_players.pca$sdev^2, 5)
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## 2.22494 1.81033 0.93385 0.60963 0.24690 0.17435
Nhận xét:
Có sự khác nhau rõ rệt trong kết quả phân tích sử dụng ma trận hiệp phương sai \(\mathbf{S}\) và ma trận tương quan mẫu \(\mathbf{R}\):
attack
và
set
.Lý do của sự khác nhau: Sự chênh lệch đến từ việc ma
trận hiệp phương sai giữ nguyên đơn vị gốc của các biến, khiến những
biến có độ lớn và phương sai cao (ví dụ: attack
,
set
) lấn át kết quả. Ngược lại, ma trận tương quan chuẩn
hóa dữ liệu, đưa các biến về cùng thang đo (trung bình 0, độ lệch chuẩn
1), do đó đảm bảo mọi biến có cơ hội đóng góp công bằng vào mô hình phân
tích.
Kết luận: Do dữ liệu gồm nhiều biến khác nhau về đơn vị và thang đo, ta lựa chọn phân tích thành phần chính dựa trên ma trận tương quan. Cách tiếp cận này giúp khai thác toàn diện các chiều thông tin, tránh thiên lệch bởi quy mô biến, và phản ánh cấu trúc đa chiều của dữ liệu một cách công bằng, khách quan và chính xác hơn.
Tiếp tục, thực hiện phân tích kết quả của PCA trên ma trận tương quan
\(\mathbf{R}\) trên 2 tiêu chí.
Tiêu chí 1: Phương sai giải thích và phương sai cộng dồn của từng PC
summary(vnl_players.pca, loadings=FALSE)
## Importance of components:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
## Standard deviation 1.4916239 1.3454863 0.9663580 0.7807868 0.49689369
## Proportion of Variance 0.3708236 0.3017222 0.1556413 0.1016047 0.04115056
## Cumulative Proportion 0.3708236 0.6725459 0.8281871 0.9297918 0.97094236
## Comp.6
## Standard deviation 0.41754740
## Proportion of Variance 0.02905764
## Cumulative Proportion 1.00000000
Nhận xét:
Thành phần chính đầu tiên giải thích khoảng 37.1% tổng phương sai giải
thích. Với chỉ ba thành phần chính đầu tiên, dữ liệu cầu thủ đã được thể
hiện tốt mà không mất nhiều thông tin với 82.8% tổng phương sai giải
thích. So sánh các tỷ lệ này với các tỷ lệ thu được khi sử dụng các dữ
liệu không chuẩn hóa, phân tích này yêu cầu nhiều thành phần hơn để giải
thích cùng một khoảng lượng biến thiên như phân tích ban đầu khi sử dụng
ma trận hiệp phương sai. Scree-plot cũng thể hiện “elbow-point” tại PC4.
Do đó, ta có thể cân nhắc giảm chiều xuống 3 chiều.
Tiêu chí 2: Loadings của từng PC
loadings(vnl_players.pca)
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## attack 0.592 0.213 0.117 0.227 0.730
## block 0.425 -0.285 -0.856
## serve 0.540 0.129 0.470 0.268 -0.626
## set -0.340 -0.256 0.785 0.410 0.184
## dig -0.245 0.572 0.364 -0.304 -0.609 0.131
## receive 0.682 -0.107 -0.227 0.669 -0.154
##
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
## SS loadings 1.000 1.000 1.000 1.000 1.000 1.000
## Proportion Var 0.167 0.167 0.167 0.167 0.167 0.167
## Cumulative Var 0.167 0.333 0.500 0.667 0.833 1.000
Nhận xét: Dựa vào kết quả loadings cùng với biểu đồ trực quan, em rút ra nhận định về các thành phần chính như sau:
Thành phần chính thứ nhất:
PC1 phản ánh mạnh mẽ các kỹ năng tấn công trực tiếp trong bóng chuyền.
Các biến có tải số lớn bao gồm attack
(0.592),
serve
(0.540), và block
(0.425) đều là những
chỉ số liên quan đến khả năng ghi điểm, gây áp lực lên đối thủ, và thực
hiện các pha chặn bóng trên lưới. Những vận động viên có giá trị PC1
càng cao thì càng có khả năng tấn công tốt. Thành phần này giúp phân
biệt rõ ràng giữa những cầu thủ thiên về ghi điểm như Outside
Hitter (OH) và Opposite (OP) với các cầu thủ
đóng vai trò hỗ trợ như Setter (S).
Như vậy: PC1 có thể được hiểu là trục thể hiện năng lực tấn công
tổng hợp, và đóng vai trò chính trong việc nhận diện những “chủ
công” của đội.
Thành phần chính thứ hai:
Ngược lại, PC2 tập trung thể hiện năng lực phòng thủ từ tuyến sau, với
hai biến có tải số cao là receive
(0.682) và
dig
(0.572), đại diện cho kỹ năng đỡ bước một và cứu bóng.
Đây là những chỉ số tiêu biểu cho những vận động viên có khả năng phòng
ngự chắc chắn, thường gặp ở những người chơi vị trí Libero
(L) hoặc những OH có thiên hướng phòng thủ.
Những cầu thủ có giá trị PC2 cao là những người thường xuyên tham gia
vào các pha cứu bóng và đỡ bóng đầu tiên sau phát bóng hoặc tấn công của
đối thủ. Thành phần này giúp tách biệt rõ nhóm cầu thủ chuyên về phòng
thủ bền bỉ và ổn định trong hệ thống chiến thuật của đội, từ đó có thể
đánh giá hiệu quả hoạt động của tuyến sau trong mỗi đội bóng.
Như vậy: PC2 có thể được hiểu là trục thể hiện năng lực phòng
thủ.
Thành phần chính thứ ba:
PC3 cho thấy mức độ điều phối và tổ chức trận đấu của vận động viên, chủ
yếu qua biến set
(0.785) và một phần nhỏ biến
serve
(0.470). Đây là những kỹ năng đặc trưng của vị trí
chuyền hai Setter (S), người có vai trò phân phối bóng,
điều tiết nhịp độ trận đấu và tạo điều kiện cho các đợt tấn công. Vận
động viên có điểm số cao trên PC3 thường không trực tiếp ghi điểm nhưng
lại rất quan trọng trong việc xây dựng lối chơi chiến thuật.
Như vậy: PC3 đại diện cho trục thể hiện năng lực tổ chức chiến
thuật trận đấu.
Thành phần chính thứ tư:
PC4 chủ yếu được định hình bởi biến block
với hệ số âm mạnh
(−0.856), phản ánh khả năng chắn bóng vượt trội, một đặc trưng rất rõ
của các trung phong chắn bóng Middle Blocker (MB). Mức
độ ảnh hưởng của các biến khác ở trục này là nhỏ, nên có thể xem đây là
một thành phần đơn trục, giúp tách bạch những cầu thủ có khả năng ngăn
chặn tấn công đối phương ngay từ trên lưới (phòng thủ sớm).
Như vậy: PC4 thể hiện trục năng lực chắn bóng độc
lập.
Thành phần chính thứ năm:
PC5 là sự kết hợp giữa receive
(0.669), set
(0.410), và dig
(−0.609). Điều này dẫn đến sự kết hợp giữa
đỡ bóng tuyến sau, chuyền bóng điều phối, nhưng lại phản ánh tiêu cực ở
khả năng cứu bóng. PC5 khó diễn giải vì kết hợp kỹ năng đối lập.
Thành phần chính thứ sáu:
PC6 thể hiện sự phân tách giữa kỹ năng tấn công và khả năng phát bóng
chiến thuật thông qua hai biến đối lập: attack
(0.730) và
serve
(−0.626). Thành phần này đại diện cho một cầu thủ tấn
công giỏi nhưng lại kém ở khả năng phát bóng. Điều này không phù hợp với
thực tế thi đấu.
Nhìn vào kết quả phân tích loadings của các thành phần chính ta
thấy:
block
cũng đã có đóng góp đáng kể trong PC1 (0.425), vì vậy PC4 chỉ lặp lại
một phần thông tin đã có, không cung cấp thêm insight mới, đồng thời
không giúp phân nhóm cầu thủ rõ ràng.receive
lẫn cứu bóng
dig
, còn Setter (S) thì thường giỏi chuyền
bóng set
nhưng không tham gia phòng thủ nhiều, PC5 lại là
sự đối lập giữa (recceive
, set
) và
(dig
). Do đó, PC5 phản ánh một tổ hợp kỹ năng thiếu logic
thực tế, gây khó khăn trong việc phân loại hoặc gán vai trò cụ thể cho
nhóm cầu thủ có điểm số cao ở trục này.Như vậy, ba thành phần chính cuối cùng không tách biệt được tốt các
nhóm vai trò cầu thủ trong thực tế. Biểu đồ trực quan trên hai trục
chính PC5-PC6 cho thấy sự trộn lẫn các nhóm vị trí, thể hiện sự phân
tách yếu. Song, ba thành phần này cũng đóng góp phần nhỏ phương sai vào
tổng phương sai giải thích. Do đó, nên được loại bỏ khỏi mô hình khi rút
gọn dữ liệu để phục vụ cho phân tích hoặc phân nhóm cầu thủ tốt
hơn.
Kết luận: Quyết định giữ lại ba thành phần chính đầu tiên (PC1–PC3). Chúng đủ thông tin, có ý nghĩa thực tiễn rõ ràng, và giải thích được 82.8% tổng phương sai.
Thành phần chính | Vai trò kỹ năng đại diện | |||
---|---|---|---|---|
– | PC1 | Tấn công tổng hợp | – | |
– | PC2 | Phòng thủ tuyến sau | – | |
– | PC3 | Tổ chức chiến thuật | – |
Ở phần này, ta tiến hành trực quan các điểm dữ liệu trên kết quả phân
tích. Trước hết, phân tích kết quả trên hai trục thành phần chính đầu
tiên PC1 và PC2:
Nhận xẻt: Dựa trên biểu đồ điểm biểu diễn hai thành phần chính đầu tiên (PC1 và PC2), có thể thấy rằng mỗi trục có khả năng phân biệt các nhóm vị trí ở mức độ nhất định.
Khi kết hợp cả hai trục, PCA thể hiện khá rõ cấu trúc phân nhóm của các vị trí trên sân, đặc biệt ở những vai trò chuyên biệt về phòng thủ và tấn công. Các nhóm có xu hướng phân bố ở bốn góc phần tư I, II, III, IV lần lượt là nhóm vị trí (OH), (L), (S) và (OP, MB).
Nhận xét: Hai trục PC2-PC3 tiếp tục giúp phân tách tốt nhóm S so với các nhóm còn lại.
Ở phần này, ta thực hiện tìm kiếm những cầu thủ được xem như là một giá
trị ngoại lai từ kết quả PCA. Bằng cách tính trung bình và độ lệch chuẩn
của từng nhóm vị trí theo hệ trục scale theo PCA (Comp.1, Comp.2,
Comp.3), sau đó lọc ra những cầu thủ có giá trị cao hơn hẳn hoặc thấp
hơn hẳn so với trung bình và độ lệch chuẩn trong nhóm vị trí cầu thủ đó
thuộc về. Từ đó, phân tích xem những cầu thủ này là những cầu thủ đa
năng, những cầu thủ có phong cách thi đấu khác biệt thực sự nổi trội hay
những cầu thủ chơi sai vị trí so với năng lực hoặc thể hiện vai trò của
mình chưa tốt. Kết quả cuối cùng này cung cấp cho các huấn luyện viên
thêm thông tin để tận dụng “quân bài” và điều chỉnh chiến lược thi đấu
trong các mùa giải tiếp theo.
Tạo dataframe theo hệ trục PCA:
scores.pca <- as.data.frame(vnl_players.pca$scores[, 1:3])
scores.pca$position <- vnl_players$position
scores.pca$player <- vnl_players$player
head(scores.pca)
Tính toán trung bình và độ lệch chuẩn theo vị trí:
(stats_by_position <- scores.pca |>
group_by(position) |>
summarise(across(starts_with("Comp"), list(mean = mean, sd = sd))))
Lọc các cầu thủ có giá trị lệch hẳn so với nhóm vị trí:
scores.outliers <- scores.pca |>
left_join(stats_by_position, by = "position")
scores.outliers$outlier_flag <- with(scores.outliers,
abs(Comp.1 - Comp.1_mean) > 2 * Comp.1_sd |
abs(Comp.2 - Comp.2_mean) > 2 * Comp.2_sd |
abs(Comp.3 - Comp.3_mean) > 2 * Comp.3_sd
)
head(scores.outliers |> select(player, position, outlier_flag))
outliers <- scores.outliers |> rstatix::filter(outlier_flag == TRUE)
outliers <- outliers |>
left_join(vnl_players |> select(-position), by = "player")
outliers[, c("player", "position",
"Comp.1", "Comp.2", "Comp.3")]
Nhận xét: Như vậy, có 11 cầu thủ được xét vào diện nổi bật hơn so với các cầu thủ còn lại trong mùa giải.
Cầu thủ đa năng (Chỉ số vượt trội ở nhiều khía cạnh):
Đây là những cầu thủ có thể thích nghi tốt nhiều vị trí và đóng vai trò chiến lược trong thi đấu.
Cầu thủ vượt trội thiên về một mặt, xuất sắc cá biệt:
Những cầu thủ này “không toàn diện”, nhưng lại là “mũi nhọn chuyên biệt” cực kỳ hiệu quả.
Cầu thủ có phong độ yếu hoặc có dấu hiệu “thi đấu lệch vị trí”:
Những trường hợp này cần được xem xét lại về chiến thuật sử dụng hoặc phong độ.
Các cầu thủ còn lại Loser Agustin (MB), Russo Roberto (MB), Taboada Diaz Lyvan (S) đều là những cầu thủ chơi khá tốt, ổn định, đúng vị trí nhưng chưa thật sự nổi bật vượt trội như các cầu thủ trên.
Kết luận: Như vậy, các huấn luyện viên có thể căn cứ trên kết quả phân tích này để đưa ra các quyết định chiến lược.
Sau khi áp dụng Phân tích thành phần chính (PCA) để rút gọn dữ liệu
xuống ba thành phần chính đầu tiên (PC1, PC2, PC3), ta tiếp tục thực
hiện triển khai thuật toán phân cụm K-Means để phân nhóm các cầu thủ dựa
trên đặc điểm kỹ thuật đã được rút trích.
Việc sử dụng PCA trước khi phân cụm giúp giảm nhiễu và loại bỏ sự phụ thuộc tuyến tính giữa các biến gốc, từ đó làm tăng hiệu quả và tính ổn định cho thuật toán K-Means.
Cụ thể, thuật toán K-Means được triển khai như sau:
set.seed(123)
km <- kmeans(vnl_players.pca$scores[, 1:3], centers = 5)
Đánh giá độ trùng khớp giữa phân nhóm theo thuật toán và vai trò thực tế của cầu thủ:
table(km$cluster, vnl_players$position)
##
## L MB OH OP S
## 1 0 2 2 6 0
## 2 0 0 27 3 0
## 3 16 0 0 0 0
## 4 0 30 13 16 0
## 5 0 0 0 0 16
Nhận xét: Đọc kết quả bảng số liệu so sánh:
Kết luận:
Tổng quát, việc kết hợp PCA + Clustering phân biệt tốt những vị trí
có đặc điểm chuyên biệt (L, S), nhưng khó hơn với những vị trí mang tính
lai và thiên về tấn công (OH, OP, MB).
Xem xét các cầu thủ thuộc Cụm 1 (OH, OP, MB):
scores.pca$cluster <- km$cluster
cluster_1 <- scores.pca |> rstatix::filter(scores.pca$cluster == 1)
cluster_1$player
## [1] "Romano Yuri" "Abdel-Aziz Nimir" "Herrera Jaime Jesus"
## [4] "Luburic Drazen" "Zhang Jingyin" "Leon Venero Wilfredo"
## [7] "Loser Agustin" "Esmaeilnezhad Amin" "Faure Theo"
## [10] "Russo Roberto"
Nhận xét: Cụm 1 xuất hiện các cầu thủ với tên quen thuộc “Zhang Jingyin”, “Faure Theo”, “Russo Roberto” và “Loser Agustin”. Đây là những cái tên xuất hiện trong danh sách các cầu thủ nổi bật ở phần trước với cùng một điểm chung là có chỉ số năng lực khác vị trí đảm nhiệm cao bất ngờ hoặc chơi ổn định đều ở các năng lực. Do đó có thể nói rằng, cụm 1 chính là đại diện cho các cầu thủ có nhiều tiềm năng phát triển về sau ở nhiều vị trí các nhau, những cái tên còn lại trong nhóm cần được xem xét kỹ lưỡng, để ý và quan tâm nhiều hơn, hứa hẹn có một sự bức phá nếu khai thác được tiềm năng từ các cầu thủ này.
Ngoài ra, tiếp tục thực hiện phân tích nhân tố FA bên cạnh phương
pháp PCA để so sánh kết quả từ hai phương pháp. FA cung cấp cái nhìn sâu
về mối quan hệ ẩn giữa các biến gốc dựa trên giả định mô hình. Do đó, em
tiếp tục thực hiện FA với phép xoay nhân tố varimax
để hiểu
biết sâu sắc hơn về cấu trúc dữ liệu đang nghiên cứu.
Sử dụng hàm factanal()
trong phần mềm R (dùng phương pháp
hợp lý cực đại), thực hiện phân tích nhân tố trên ma trận hệ số tương
quan \(\mathbf{R}\):
round(cor_matrix, 4)
## age attack block serve set dig receive
## age 1.0000 -0.1778 -0.1010 -0.1084 0.1778 0.1671 -0.0111
## attack -0.1778 1.0000 0.3384 0.7689 -0.4308 -0.0990 0.1699
## block -0.1010 0.3384 1.0000 0.3360 -0.1320 -0.3483 -0.2652
## serve -0.1084 0.7689 0.3360 1.0000 -0.1548 -0.0525 0.0396
## set 0.1778 -0.4308 -0.1320 -0.1548 1.0000 0.1317 -0.3059
## dig 0.1671 -0.0990 -0.3483 -0.0525 0.1317 1.0000 0.6247
## receive -0.0111 0.1699 -0.2652 0.0396 -0.3059 0.6247 1.0000
Mô hình hai nhân tố:
vnl_players.ft <- factanal(covmat = cor_matrix, factors = 2,
rotation = "varimax", n.obs = 131)
vnl_players.ft
##
## Call:
## factanal(factors = 2, covmat = cor_matrix, n.obs = 131, rotation = "varimax")
##
## Uniquenesses:
## age attack block serve set dig receive
## 0.968 0.005 0.776 0.398 0.759 0.564 0.005
##
## Loadings:
## Factor1 Factor2
## age -0.178
## attack 0.997
## block 0.335 -0.334
## serve 0.769 -0.104
## set -0.434 -0.229
## dig 0.654
## receive 0.184 0.980
##
## Factor1 Factor2
## SS loadings 1.961 1.564
## Proportion Var 0.280 0.223
## Cumulative Var 0.280 0.504
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 39.57 on 8 degrees of freedom.
## The p-value is 3.86e-06
Nhận xét: Qua kết quả R, ta thấy mô hình với hai
nhân tố để phân tích cho bộ dữ liệu này là chưa đủ vì p-value rất nhỏ
(3.86e-06) trong kiểm định mô hình, tức bác bỏ “\(H_0\): mô hình với 2 nhân tố là đủ”, với
mức ý nghĩa \(\alpha\) = 0.05.
Mô hình ba nhân tố:
vnl_players.ft <- factanal(covmat = cor_matrix, factors = 3,
rotation = "varimax", n.obs = 131)
vnl_players.ft
##
## Call:
## factanal(factors = 3, covmat = cor_matrix, n.obs = 131, rotation = "varimax")
##
## Uniquenesses:
## age attack block serve set dig receive
## 0.921 0.160 0.715 0.169 0.344 0.252 0.204
##
## Loadings:
## Factor1 Factor2 Factor3
## age 0.246
## attack 0.820 -0.409
## block 0.351 -0.373 -0.151
## serve 0.909
## set -0.123 -0.101 0.794
## dig 0.822 0.268
## receive 0.849 -0.271
##
## Factor1 Factor2 Factor3
## SS loadings 1.649 1.556 1.029
## Proportion Var 0.236 0.222 0.147
## Cumulative Var 0.236 0.458 0.605
##
## Test of the hypothesis that 3 factors are sufficient.
## The chi square statistic is 0.82 on 3 degrees of freedom.
## The p-value is 0.845
Nhận xét: Mô hình ba nhân tố thoả kiểm định ba nhân tố là đủ với p-value = 0.845 > 0.05. Do đó, chọn số nhân tố cho mô hình là 3.
Kết quả mô hình ba nhân tố:
vnl_players.ft
##
## Call:
## factanal(factors = 3, covmat = cor_matrix, n.obs = 131, rotation = "varimax")
##
## Uniquenesses:
## age attack block serve set dig receive
## 0.921 0.160 0.715 0.169 0.344 0.252 0.204
##
## Loadings:
## Factor1 Factor2 Factor3
## age 0.246
## attack 0.820 -0.409
## block 0.351 -0.373 -0.151
## serve 0.909
## set -0.123 -0.101 0.794
## dig 0.822 0.268
## receive 0.849 -0.271
##
## Factor1 Factor2 Factor3
## SS loadings 1.649 1.556 1.029
## Proportion Var 0.236 0.222 0.147
## Cumulative Var 0.236 0.458 0.605
##
## Test of the hypothesis that 3 factors are sufficient.
## The chi square statistic is 0.82 on 3 degrees of freedom.
## The p-value is 0.845
Nhận xét:
Tổng phương sai được giải thích: Mô hình năm nhân tố giải thích khoảng 60.5% phương sai chung trong dữ liệu, đây là mức khá tốt, cho thấy mô hình có khả năng tóm tắt dữ liệu hiệu quả mà vẫn giữ lại phần lớn thông tin quan trọng.
Tác động tổng của các nhân tố chung lên từng biến:
# communalities
1-vnl_players.ft$uniquenesses
## age attack block serve set dig receive
## 0.07879296 0.84009865 0.28512049 0.83060010 0.65560021 0.74817564 0.79593265
block
thì tất cả các
biến còn lại đều có communality cao (> 0.6).age
hầu như không liên quan đến cấu trúc nhân
tố.Factor loadings:
loadings(vnl_players.ft)
##
## Loadings:
## Factor1 Factor2 Factor3
## age 0.246
## attack 0.820 -0.409
## block 0.351 -0.373 -0.151
## serve 0.909
## set -0.123 -0.101 0.794
## dig 0.822 0.268
## receive 0.849 -0.271
##
## Factor1 Factor2 Factor3
## SS loadings 1.649 1.556 1.029
## Proportion Var 0.236 0.222 0.147
## Cumulative Var 0.236 0.458 0.605
Factor 1 – Nhân tố về khả năng tấn công chủ động:
attack
(0.820), serve
(0.909).Factor 2 – Nhân tố về khả năng phòng thủ và phản xạ:
dig
(0.822), receive
(0.849).Factor 3 – Nhân tố về khả năng tổ chức chuyền bóng:
set
(0.794).age
với
hệ số tải dương 0.246. Điều này thể hiện rõ mối liên hệ tương đối của
tuổi và kỹ năng tổ chức chiến lược. Khác với các vị trí thiên về thể lực
như OH hay OP, Setter, vị trí tổ chức chuyền bóng không cần quá nhanh
nhạy về thể chất, mà cần kinh nghiệm thi đấu, sự điềm tĩnh, khả năng
quan sát và phán đoán, vốn là các kỹ năng được tích lũy theo thời gian.
Do đó, dễ hiểu khi age
chỉ đóng góp vào nhân tố này mặc dù
tác động không đủ lớn.
Bảng điểm đánh giá các cầu thủ ở từng năng lực theo nhân tố:
dat_vnl_players$age <- vnl_players$age
vnl_players.ft <- factanal(dat_vnl_players, factors = 3,
scores = "regression", rotation = "varimax")
scores.ft <- as.data.frame(vnl_players.ft$scores)
scores.ft$player <- vnl_players$player
scores.ft$position <- vnl_players$position
scores.ft <- scores.ft|> select(player, position, Factor1, Factor2, Factor3)
head(scores.ft)
Top 5 cầu thủ chuyên tấn công:
scores.ft |> arrange(-Factor1) |> head() |> select(player, position, Factor1)
Nhận xét: Các vận động viên có điểm số cao nhất ở
nhân tố tấn công đều là những OP (đối chuyền), là những tay ghi điểm
chính trong đội hình. Các cầu thủ này sở hữu khả năng tấn công toàn
diện, nổi bật cả về tấn công, phát bóng và chắn bóng. Đặc biệt,
Zhang Jingyin (OH) là chủ công hiếm hoi góp mặt trong
nhóm này, thể hiện anh là một cầu thủ nặng ký.
Top 5 cầu thủ chuyên phòng thủ:
scores.ft |> arrange(-Factor2) |> head() |> select(player, position, Factor2)
Nhận xét: Libero luôn dẫn đầu về năng lực phòng thủ.
Tuy nhiên, Tillie Kevin (OH) xuất hiện cho thấy một chủ
công cũng có khả năng phòng ngự cực tốt, một trường hợp cầu thủ đa
năng.
Top 5 cầu thủ chuyên chuyền bóng tổ chức lối chơi:
scores.ft |> arrange(-Factor3) |> head() |> select(player, position, Factor3)
Nhận xét: Các Setter hàng đầu có điểm cực cao ở khả
năng tổ chức, chuyền bóng và điều phối lối chơi, đúng với vai trò chiến
thuật của họ.
Kết luận: Qua một số phân tích và thống kê bên trên, ta nhận thấy FA là một công cụ tốt để xây dựng bảng điểm năng lực của từng cầu thủ. Do đó, huấn luyện viên có thể theo dõi bảng điểm này để đánh giá năng lực cầu thủ và xây dựng hệ thống rèn luyện phù hợp cho từng cá nhân. Đồng thời, có thể sử dụng FA cho từng giai đoạn huấn luyện để có thể đánh giá tiến bộ của cầu thủ khi so sánh các bảng điểm năng lực với nhau.
Mục tiêu: Liệu quốc tịch (country
) và/hoặc
độ tuổi (age
) có ảnh hưởng đến các năng lực tiềm ẩn của các
vận động viên?
Mô hình kiểm định: Two-way MANOVA.
country
, age
.F1
, F2
,
F3
.scores.ft$country <- vnl_players$country
scores.ft$age <- vnl_players$age
Bỏ qua các giả định phức tạp của phương pháp MANOVA, em chọn thực hiện Permutation MANOVA cho bài toán này:
library(vegan)
X <- scores.ft[, c("Factor1", "Factor2", "Factor3")]
perm_result <- adonis2(X ~ country + age, data = scores.ft, permutations = 999)
print(perm_result)
## Permutation test for adonis under reduced model
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = X ~ country + age, data = scores.ft, permutations = 999)
## Df SumOfSqs R2 F Pr(>F)
## Model 16 493172 0.74117 20.403 0.208
## Residual 114 172221 0.25883
## Total 130 665393 1.00000
Nhận xét: Giá trị p = 0.208 (> 0.05) cho thấy mô hình không có ý nghĩa thống kê với mức ý nghĩa 5%. Tức là:
Không có bằng chứng đủ mạnh để khẳng định rằng tuổi và quốc tịch có ảnh hưởng đồng thời đến bộ ba năng lực tiềm ẩn của cầu thủ.
Cả phân tích thành phần chính (PCA) và phân tích nhân tố (FA) đều chỉ ra rằng dữ liệu cầu thủ có thể được mô tả hiệu quả bằng ba năng lực chính: tấn công, phòng thủ và chuyền bóng tổ chức lối chơi. Sự tương đồng giữa hai phương pháp này cho thấy cấu trúc kỹ năng trong bộ dữ liệu là ổn định, rõ ràng, nhất quán và có tính giải thích cao.
Trong nghiên cứu này, cả Phân tích thành phần chính (PCA) và Phân tích nhân tố (FA) đều được khai thác để hiểu sâu về đặc điểm thi đấu của các vận động viên. Mỗi phương pháp đều có ưu thế riêng, phục vụ các mục tiêu khác nhau:
Do đó, việc kết hợp PCA để khám phá và FA để đào sâu là một hướng tiếp cận toàn diện, vừa giúp hiểu được cấu trúc dữ liệu, vừa phục vụ tốt mục tiêu ra quyết định huấn luyện mang tính chiến lược.
Thông qua việc kết hợp các phương pháp phân tích dữ liệu đa chiều như Phân tích thành phần chính (PCA) và Phân tích nhân tố (FA), đồ án đã đạt được mục tiêu khám phá đặc điểm thi đấu của các vận động viên bóng chuyền quốc tế dựa trên các chỉ số kỹ thuật chuyên môn. Kết quả từ PCA cho thấy rõ cấu trúc phân nhóm vị trí thi đấu, hỗ trợ hiệu quả việc phát hiện các cầu thủ có phong cách thi đấu khác biệt, đa năng hoặc lệch chuẩn. Tiếp theo, phân tích FA đã trích xuất ba năng lực tiềm ẩn chính (tấn công chủ động, phòng thủ phản xạ, tổ chức chiến thuật), giúp xây dựng bảng điểm năng lực hỗ trợ huấn luyện chuyên sâu.
Điểm đặc biệt của bộ dữ liệu được thể hiện khi cả PCA và FA đều cho ra cùng một kết quả phân tích giống nhau. Song, phương pháp PCA phù hợp cho bước khám phá tổng quan và phân nhóm vận động viên, trong khi FA có ưu thế trong việc đánh giá năng lực tiềm ẩn và xây dựng chiến lược huấn luyện cá nhân hóa. Việc kết hợp cả hai phương pháp mang lại một cách tiếp cận toàn diện, vừa khám phá được cấu trúc dữ liệu, vừa đưa ra định hướng hành động cụ thể. Đồ án mở ra tiềm năng ứng dụng thực tiễn trong công tác tuyển chọn, huấn luyện và phân tích chiến thuật cho các đội tuyển thể thao chuyên nghiệp.