Tập dữ liệu này chứa thông tin được thu thập từ sinh viên đại học thông qua biểu mẫu Google. Bộ dữ liệu này chứa thông tin về nhân khẩu học, kết quả học tập, sở thích, thói quen học tập, nguyện vọng nghề nghiệp và các yếu tố khác để phân tích hành vi của sinh viên đại học khi chọn công việc.
library(xlsx)
## Warning: package 'xlsx' was built under R version 4.4.3
library(DT)
## Warning: package 'DT' was built under R version 4.4.3
dl <- read.csv(file.choose(),header = T)
dl
File dữ liệu có 235 quan sát và 19 biến
Mô tả cho từng cột trong tập dữ liệu:
Certification Course: Xác nhận sinh viên có bằng cấp/ chứng chỉ nào chưa(Yes/Có hoặc No/không).
Gender: Giới tính sinh viên.
Department: Khoa hoặc lĩnh vực học tập mà sinh viên đang theo học.
Height(CM): Chiều cao của sinh viên tính bằng centimet.
Weight(KG): Cân nặng của sinh viên tính bằng kilogam.
10th Mark: Điểm của sinh viên đạt được vào lớp 10.
12th Mark: Điểm của sinh viên đạt được vào năm lớp 12.
College Mark: Điểm của sinh viên đạt được ở trường cao đẳng hoặc đại học.
Hobbies: Sở thích của đối tượng.
Daily studing time: Lượng thời gian sinh viên dành cho việc học hàng ngày.
Prefer to Study in: Môi trường học tập hoặc địa điểm học tập ưa thích của sinh viên.
Salary expectation: Kỳ vọng của sinh viên về mức lương tương lai của họ.
Do you like your degree?: Ý kiến của sinh viên về việc họ có thích bằng cấp của mình hay không.
willingness to pursue a career based on their degree: Sự sẵn lòng của sinh viên theo đuổi nghề nghiệp liên quan đến bằng cấp của họ
Social medai & video: Sự tham gia của sinh viên với các nền tảng truyền thông xã hội và video
Travelling Time: Thời gian để sinh viên đi lại hoặc di chuyển đến cơ sở giáo dục của mình
Stress Level: Mức độ căng thẳng cảm nhận được của sinh viên
Financial Status: Tình trạng tài chính hoặc nền tảng kinh tế của sinh viên
Part-time job: Liệu sinh viên có tham gia vào công việc bán thời gian hay không
=> Với 13 biến định tính và 6 biến định lượng
Trong bài phân tích này, các yếu tố ảnh hưởng từ việc lựa chọn ngành học tại đại học, giới tính, mức độ căng thẳng và tình hình tài chính/công việc bán thời gian được lựa chọn làm các biến định tính để phân tích tác động đến định hướng nghề nghiệp và Kỳ vọng tiếp tục theo đuổi ngành học đã chọn của sinh viên. Việc lựa chọn các yếu tố này xuất phát từ thực tế rằng chúng phản ánh trực tiếp bối cảnh học tập và đời sống của sinh viên trong giai đoạn quan trọng định hình con đường nghề nghiệp tương lai. Cụ thể, lựa chọn ngành học ảnh hưởng đến kiến thức, kỹ năng chuyên môn và cơ hội tiếp cận các lĩnh vực nghề nghiệp khác nhau; giới tính có thể dẫn đến sự khác biệt trong nhận thức, ưu tiên nghề nghiệp và mức kỳ vọng thu nhập; mức độ căng thẳng ảnh hưởng đến sức khỏe tinh thần, khả năng học tập và khả năng ra quyết định nghề nghiệp; trong khi đó, tình hình tài chính — vốn có thể chịu ảnh hưởng từ việc sinh viên có hoặc không làm thêm bán thời gian — tác động đến trải nghiệm học tập, khả năng tiếp cận các cơ hội nghề nghiệp cũng như kỳ vọng về mức thu nhập trong tương lai. Việc phân tích các yếu tố này giúp làm rõ hơn những tác nhân quan trọng đang chi phối định hướng nghề nghiệp và mong muốn tiếp tục gắn bó với ngành học hiện tại của sinh viên.
tl <- c("Gender", "Department", "willingness.to.pursue.a.career.based.on.their.degree", "part.time.job", "Stress.Level", "Financial.Status")
tl_dt <- dl[,tl]
Tóm lại các biến được giữ lại Gender, Department, willingness to pursue a career based on their degree, part time job, Stress Level và Financial Status
colSums(is.na(tl_dt))
## Gender
## 0
## Department
## 0
## willingness.to.pursue.a.career.based.on.their.degree
## 0
## part.time.job
## 0
## Stress.Level
## 0
## Financial.Status
## 0
df <- lapply(tl_dt, function(x) { if(is.character(x)) factor(x) else x})# lapply() áp dụng hàm cho từng cột trong df_dt.
Dòng lệnh sau thực hiện việc chuyển đổi tất cả các cột có kiểu dữ
liệu character trong tl_dt
thành kiểu
factor, giữ nguyên các cột khác không đổi.
#Lập bảng tần số của biến
freq_tbl <- table(tl_dt$Gender)
# Chuyển bảng tần số thành data frame
freq_df <- as.data.frame(freq_tbl)
# Đổi tên cột cho dễ dùng
colnames(freq_df) <- c("Gender", "Count")
# Tính phần trăm
freq_df$Percent <- freq_df$Count / sum(freq_df$Count) * 100
# In ra bảng
freq_df[, c("Gender", "Count", "Percent")]
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
ggplot(freq_df, aes(x = "", y = Count, fill = Gender)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") + # chuyển thành hình tròn
geom_text(aes(label = sprintf("%.1f%%", Percent)),
position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Tỷ lệ sinh viên theo giới tính", x = NULL, y = NULL) +
scale_fill_brewer(palette = "Set2") +
theme_void() # bỏ khung, trục, để biểu đồ tròn đẹp
Nhận xét - Cuộc khảo sát ghi nhận cơ cấu giới tính của sinh viên gồm 79 nữ (33,6%) và 156 nam (66,4%), trên tổng số 235 sinh viên tham gia.
# Lập bảng tần số của biến
freq_tbl1 <- table(tl_dt$Department)
# Chuyển bảng tần số thành data frame
freq_df1 <- as.data.frame(freq_tbl1)
# Đổi tên cột cho dễ dùng
colnames(freq_df1) <- c("Department", "Count")
# Tính phần trăm
freq_df1$Percent <- freq_df1$Count / sum(freq_df1$Count) * 100
# In ra bảng
freq_df1[, c("Department", "Count", "Percent")]
library(ggplot2)
ggplot(freq_df1, aes(x = "", y = Count, fill = Department)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") + # chuyển thành hình tròn
geom_text(aes(label = sprintf("%.1f%%", Percent)),
position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Tỷ lệ sinh viên theo giới tính", x = NULL, y = NULL) +
scale_fill_brewer(palette = "Set1") +
theme_void() # bỏ khung, trục, để biểu đồ tròn đẹp
Nhận xét
Cuộc khảo sát ghi nhận cơ cấu ngành học của sinh viên gồm: 15 sinh viên ngành B.Com Accounting and Finance (6,4%), 28 sinh viên ngành B.Com ISM (11,9%), 132 sinh viên ngành BCA (56,2%), và 60 sinh viên ngành Commerce (25,5%), trên tổng số 235 sinh viên tham gia.
Sự chênh lệch về tỷ lệ sinh viên giữa các ngành học là khá rõ rệt, với mức chênh lệch khoảng 49.787234% giữa ngành có tỷ trọng cao nhất và ngành có tỷ trọng thấp nhất trong khảo sát. Sinh viên ngành BCA chiếm tỷ trọng cao, gần như hơn một nửa tổng số sinh viên trong mẫu khảo sát.
# Lập bảng tần số của biến
freq_tbl2 <- table(tl_dt$willingness.to.pursue.a.career.based.on.their.degree)
# Chuyển bảng tần số thành data frame
freq_df2 <- as.data.frame(freq_tbl2)
# Đổi tên cột cho dễ dùng
colnames(freq_df2) <- c("willingness.to.pursue.a.career.based.on.their.degree", "Count")
# Tính phần trăm
freq_df2$Percent <- freq_df2$Count / sum(freq_df2$Count) * 100
# In ra bảng
freq_df2[, c("willingness.to.pursue.a.career.based.on.their.degree", "Count", "Percent")]
library(ggplot2)
ggplot(freq_df2, aes(x = willingness.to.pursue.a.career.based.on.their.degree, y = Count, fill = willingness.to.pursue.a.career.based.on.their.degree)) +
geom_col(width = 0.6, color = "black") +
geom_text(aes(label = sprintf("%.1f%%", Percent)),
vjust = 0, size = 3) +
labs(title = "Tỷ lệ sinh viên theo mức độ chấp nhận làm việc đúng ngành",
x = "Mức độ chấp nhận",
y = "Số lượng") +
scale_fill_brewer(palette = "Dark2") +
theme_minimal()
Nhận xét
Cuộc khảo sát ghi nhận mức độ sẵn sàng theo đuổi công việc đúng ngành của sinh viên như sau: 114 (48,5%) sinh viên có mức độ sẵn lòng ở mức 75%; 61 (26,0%) sinh viên ở mức 50%; 44 (18,7%) sinh viên hoàn toàn mong muốn (100%); 14 (6,0%) sinh viên ở mức 25%; và chỉ có 2 (0,9%) sinh viên không có ý định làm việc đúng ngành (0%).
Sự phân bổ giữa các mức độ là rất rõ rệt. Đa số sinh viên thể hiện mong muốn làm việc đúng chuyên môn, với nhóm có mức độ sẵn sàng cao (từ 50% trở lên) chiếm tới 93,2% tổng số. Ngược lại, tỷ lệ sinh viên ít hoặc không có nguyện vọng theo đuổi công việc đúng ngành là rất thấp. Điều này cho thấy một xu hướng mạnh mẽ về việc sinh viên muốn vận dụng kiến thức đã học vào sự nghiệp tương lai.
# Lập bảng tần số của biến
freq_tbl3 <- table(tl_dt$part.time.job)
# Chuyển bảng tần số thành data frame
freq_df3 <- as.data.frame(freq_tbl3)
# Đổi tên cột cho dễ dùng
colnames(freq_df3) <- c("part.time.job", "Count")
# Tính phần trăm
freq_df3$Percent <- freq_df3$Count / sum(freq_df3$Count) * 100
# In ra bảng
freq_df3[, c("part.time.job", "Count", "Percent")]
library(ggplot2)
ggplot(freq_df3, aes(x = "", y = Count, fill = part.time.job)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") + # chuyển thành hình tròn
geom_text(aes(label = sprintf("%.1f%%", Percent)),
position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Tỷ lệ sinh viên theo giới tính", x = NULL, y = NULL) +
scale_fill_brewer(palette = "Set3") +
theme_void() # bỏ khung, trục, để biểu đồ tròn đẹp
Nhận xét
Cuộc khảo sát ghi nhận tình hình sinh viên có mong muốn đi làm bán thời gian hay không như sau: 194 sinh viên không đồng ý (82,6%) và 41 sinh viên đồng ý (17,4%), trên tổng số 235 sinh viên tham gia.
Sự chênh lệch về tỷ lệ đồng ý hoặc không đồng ý đi làm bán thời gian là khá rõ rệt, với mức chênh lệch khoảng 65.106383%. Điều này cho thấy phần lớn sinh viên có xu hướng muốn dành toàn bộ thời gian cho việc học hoặc ưu tiên các công việc toàn thời gian và ổn định trong tương lai, thay vì lựa chọn công việc bán thời gian trong quá trình học tập.
# Lập bảng tần số của biến
freq_tbl4 <- table(tl_dt$Stress.Level)
# Chuyển bảng tần số thành data frame
freq_df4 <- as.data.frame(freq_tbl4)
# Đổi tên cột cho dễ dùng
colnames(freq_df4) <- c("Stress.Level", "Count")
# Tính phần trăm
freq_df4$Percent <- freq_df4$Count / sum(freq_df4$Count) * 100
# In ra bảng
freq_df4[, c("Stress.Level", "Count", "Percent")]
library(ggplot2)
ggplot(freq_df4, aes(x = "", y = Count, fill = Stress.Level)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") + # chuyển thành hình tròn
geom_text(aes(label = sprintf("%.1f%%", Percent)),
position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Tỷ lệ sinh viên theo mức độ căng thẳng", x = NULL, y = NULL) + # chỉnh tiêu đề cho đúng
scale_fill_brewer(palette = "Pastel1") + # có dấu +
theme_void() # bỏ khung, trục, để biểu đồ tròn đẹp
Nhận xét
Cuộc khảo sát ghi nhận mức độ căng thẳng của sinh viên như sau: 137 (58,3%) sinh viên có mức độ căng thẳng ở mức “Tốt” (Good); 68 (28,9%) ở mức “Tệ” (Bad); 19 (8,1%) ở mức “Kinh khủng” (Awful); và 11 (4,7%) cảm thấy “Tuyệt vời” (Fabulous).
Sự phân bổ giữa các mức độ căng thẳng là khá rõ rệt. Phần lớn sinh viên (tổng cộng 63%) đang ở trạng thái tâm lý tích cực, trong khi tỷ lệ sinh viên trải qua căng thẳng ở mức độ tiêu cực (Tệ và Kinh khủng) cũng chiếm một phần đáng kể là 37%. Điều này cho thấy mặc dù tình hình chung là khả quan, vấn đề sức khỏe tinh thần vẫn hiện hữu trong một bộ phận không nhỏ của cộng đồng sinh viên.
# Lập bảng tần số của biến
freq_tbl5 <- table(tl_dt$Financial.Status)
# Chuyển bảng tần số thành data frame
freq_df5 <- as.data.frame(freq_tbl5)
# Đổi tên cột cho dễ dùng
colnames(freq_df5) <- c("Financial.Status", "Count")
# Tính phần trăm
freq_df5$Percent <- freq_df5$Count / sum(freq_df5$Count) * 100
# In ra bảng
freq_df5[, c("Financial.Status", "Count", "Percent")]
library(ggplot2)
ggplot(freq_df5, aes(x = "", y = Count, fill = Financial.Status)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") + # chuyển thành hình tròn
geom_text(aes(label = sprintf("%.1f%%", Percent)),
position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Tỷ lệ sinh viên theo tình trạng tài chính", x = NULL, y = NULL) + # chỉnh tiêu đề cho đúng
scale_fill_brewer(palette = "Pastel2") + # có dấu +
theme_void() # bỏ khung, trục, để biểu đồ tròn đẹp
Nhận xét
Cuộc khảo sát ghi nhận tình hình tài chính của sinh viên như sau: 129 (54,9%) sinh viên có tình hình tài chính ở mức “Tốt” (Good); 88 (37,4%) ở mức “Tệ” (Bad); 14 (6,0%) ở mức “Kinh khủng” (Awful); và 4 (1,7%) cảm thấy “Tuyệt vời” (Fabulous).
Sự phân bổ giữa các mức độ tài chính là khá rõ rệt. Phần lớn sinh viên (tổng cộng 56,6%) có tình hình tài chính ở mức ổn định, trong khi tỷ lệ sinh viên gặp khó khăn tài chính (Tệ và Kinh khủng) cũng chiếm một tỷ lệ rất đáng kể là 43,4%. Điều này cho thấy mặc dù đa số có tình hình tài chính tương đối tốt, gánh nặng tài chính vẫn là một vấn đề nghiêm trọng, ảnh hưởng đến gần một nửa số sinh viên được khảo sát.
Giả thuyết
# Số người đã phục hồi
n_job <- sum(tl_dt$part.time.job == "No")
# Tổng số quan sát
n_total <- nrow(tl_dt)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ phục hồi (p = 0.5 là tỷ lệ kỳ vọng để kiểm định)
test_job <- prop.test(n_job, n_total, p = 0.5, correct = FALSE)
# In kết quả
test_job
##
## 1-sample proportions test without continuity correction
##
## data: n_job out of n_total, null probability 0.5
## X-squared = 99.613, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.7718820 0.8687104
## sample estimates:
## p
## 0.8255319
Kết quả kiểm định tỷ lệ mẫu đơn không hiệu chỉnh liên tục
Kết luận:
Với \(p-value\) < 2.2e-16 < 0,05, có đủ cơ sở để bác bỏ giả thuyết \(H_0\). Điều này cho thấy tỷ lệ không đồng ý làm việc bán thời gian trong tổng thể không bằng đúng 82,6%. Mặc dù tỷ lệ mẫu quan sát được là 82,55%, sự chênh lệch này là không đáng kể về mặt thống kê. Nói cách khác, sự khác biệt giữa tỷ lệ quan sát và tỷ lệ giả định có thể chỉ là do yếu tố ngẫu nhiên trong quá trình chọn mẫu.
Giả thuyết
# Số người đã phục hồi
n_Fstatus <- sum(tl_dt$Financial.Status == "good")
# Tổng số quan sát
n_total <- nrow(tl_dt)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ phục hồi (p = 0.5 là tỷ lệ kỳ vọng để kiểm định)
test_Fstatus1 <- prop.test(n_Fstatus, n_total, p = 0.5, correct = FALSE)
# In kết quả
test_Fstatus1
##
## 1-sample proportions test without continuity correction
##
## data: n_Fstatus out of n_total, null probability 0.5
## X-squared = 2.2511, df = 1, p-value = 0.1335
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4850378 0.6112604
## sample estimates:
## p
## 0.5489362
Kết quả kiểm định tỷ lệ mẫu đơn không hiệu chỉnh liên tục
Kết luận:
Với \(p-value\) = 0.1335 > 0,05, không có đủ bằng chứng thống kê bác bỏ \(H_0\). Điều này có nghĩa là chúng ta không thể khẳng định tỷ lệ sinh viên có tình hình tài chính tốt khác biệt so với 54,9%. Sự chênh lệch quan sát được rất có thể là do ngẫu nhiên trong mẫu khảo sát.
Giả thuyết
# Số người đã phục hồi
n_department <- sum(tl_dt$Department == "Commerce")
# Tổng số quan sát
n_total <- nrow(tl_dt)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ phục hồi (p = 0.5 là tỷ lệ kỳ vọng để kiểm định)
test_department <- prop.test(n_department, n_total, p = 0.5, correct = FALSE)
# In kết quả
test_department
##
## 1-sample proportions test without continuity correction
##
## data: n_department out of n_total, null probability 0.5
## X-squared = 56.277, df = 1, p-value = 6.296e-14
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.2038153 0.3146937
## sample estimates:
## p
## 0.2553191
Kết quả kiểm định tỷ lệ mẫu đơn không hiệu chỉnh liên tục
Kết luận:
Với \(p-value\) = 6.296e-14 < 0,05, có đủ bằng chứng thống kê bác bỏ \(H_0\) để kết luận rằng tỷ lệ sinh viên ngành Commerce khác 25,5%. Mặc dù tỷ lệ quan sát trong mẫu là khoảng 25,53%, rất gần với 25,5%, nhưng p-value cực nhỏ cho thấy sự chênh lệch này là thật và không phải do may rủi của mẫu.
Giả thuyết
# Số người đã phục hồi
n_will <- sum(tl_dt$willingness.to.pursue.a.career.based.on.their.degree == "50%")
# Tổng số quan sát
n_total <- nrow(tl_dt)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ phục hồi (p = 0.5 là tỷ lệ kỳ vọng để kiểm định)
test_will <- prop.test(n_will, n_total, p = 0.5, correct = FALSE)
# In kết quả
test_will
##
## 1-sample proportions test without continuity correction
##
## data: n_will out of n_total, null probability 0.5
## X-squared = 54.336, df = 1, p-value = 1.69e-13
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.2077084 0.3191745
## sample estimates:
## p
## 0.2595745
Kết quả kiểm định tỷ lệ mẫu đơn không hiệu chỉnh liên tục
Kết luận:
Với \(p-value\) = 1.69e-13 < 0,05, có đủ bằng chứng thống kê bác bỏ \(H_0\) để kết luận rằng tỷ lệ sinh viên mong muốn làm đúng ngành (50%) khác 26%. Mặc dù tỷ lệ quan sát trong mẫu là khoảng 25,53%, rất gần với 26%, nhưng p-value cực nhỏ cho thấy sự chênh lệch này là thật và không phải do may rủi của mẫu.
Thông kê bằng cách tạo ra cột “Stress.Group” bằng cách gộp các mức độ căng thẳng ban đầu (“Awful”, “Bad”, “Good”, “Fabulous”) thành hai nhóm chính là “Stress cao” và “Stress thấp” là một bước xử lý dữ liệu quan trọng. Mục đích của việc này là để đơn giản hóa phân tích, giúp việc so sánh và rút ra kết luận trở nên trực quan và dễ dàng hơn. Thay vì phải xử lý 4 nhóm nhỏ, giờ đây chúng ta chỉ cần tập trung vào hai trạng thái đối lập rõ ràng, điều này đặc biệt hữu ích khi thực hiện các kiểm định thống kê và giúp kết quả phân tích trở nên vững chắc và đáng tin cậy hơn.
# Tạo cột nhóm mới
tl_dt$Stress.Group <- ifelse(tl_dt$Stress.Level %in% c("Awful", "Bad"), "Stress cao", "Stress thấp")
# Lập bảng chéo giữa Gender và Stress.Group
freq_tb_group <- table(tl_dt$Gender, tl_dt$Stress.Group)
# Thêm tổng hàng và tổng cột
freq_tb_group1 <- addmargins(freq_tb_group)
# Hiển thị bảng
freq_tb_group1
##
## Stress cao Stress thấp Sum
## Female 28 51 79
## Male 59 97 156
## Sum 87 148 235
# Tạo bảng tần suất chéo (theo hàng)
gender_stress_f <- prop.table(table(tl_dt$Gender, tl_dt$Stress.Group), margin = 1)
# Làm tròn kết quả cho dễ đọc
gender_stress_freq <- round(gender_stress_f, 2)
# Hiển thị bảng
gender_stress_freq
##
## Stress cao Stress thấp
## Female 0.35 0.65
## Male 0.38 0.62
# CHUYỂN bảng tần suất thành data frame để vẽ ggplot
gender_stress_freq_df <- as.data.frame(gender_stress_f)
colnames(gender_stress_freq_df) <- c("Gender", "Stress.Group", "Percent")
# Đổi sang % để dễ nhìn
gender_stress_freq_df$Percent <- gender_stress_freq_df$Percent * 100
# Vẽ biểu đồ cột chồng (stacked bar chart)
library(ggplot2)
ggplot(gender_stress_freq_df, aes(x = Gender, y = Percent, fill = Stress.Group)) +
geom_col(position = "dodge", width = 0.7, color = "black") +
geom_text(aes(label = sprintf("%.1f%%", Percent)),
position = position_dodge(width = 0.7),
vjust = -0.3, size = 4) +
labs(title = "Tần suất (%) sinh viên theo giới tính và nhóm Stress",
x = "Giới tính", y = "Tần suất (%)") +
scale_fill_brewer(palette = "Set3") +
theme_minimal()
Nhận xét
Biểu đồ cho thấy một sự khác biệt không lớn về mức độ căng thẳng giữa hai giới. Tỷ lệ sinh viên nam bị căng thẳng cao (37,8%) chỉ nhỉnh hơn một chút so với sinh viên nữ (35,4%). Tương ứng, tỷ lệ sinh viên nữ có mức độ căng thẳng thấp (64,6%) cũng chỉ cao hơn một chút so với nam giới (62,2%).
Sự chênh lệch không đáng kể này cho thấy xu hướng căng thẳng giữa hai giới là tương đối đồng đều. Kết quả này có thể phản ánh rằng các nguồn gây căng thẳng chính trong môi trường đại học - như áp lực học tập, thi cử, và các vấn đề tài chính - có tác động tương tự lên cả sinh viên nam và nữ, không có sự phân biệt rõ rệt về giới tính.
Giả thuyết
# Thực hiện kiểm định Chi-squared
chi2 <- chisq.test(freq_tb_group)
# In kết quả kiểm định
print(chi2)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: freq_tb_group
## X-squared = 0.045613, df = 1, p-value = 0.8309
Kết quả kiểm định Chi-squared
Kết luận:
Với \(p-value\) = 0.8309 > 0.05, ta không có bằng chứng để bác bỏ giả thuyết \(H_0\), Điều này cho thấy giữa hai biến quan sát không tồn tại mối liên hệ có ý nghĩa thống kê, tức là chúng độc lập với nhau.
Ký hiệu tỷ lệ:
\(p_1 = P(\text{Stress Level} =
\text{Cao} \mid \text{Gender} = \text{Male})\)
(Tỷ lệ sinh viên nam bị stress cao)
\(p_2 = P(\text{Stress Level} =
\text{Cao} \mid \text{Gender} = \text{Female})\)
(Tỷ lệ sinh viên nữ bị stress cao)
Giả thuyết kiểm định:
\(H_0: p_1 - p_2 = 0\)
(Tỷ lệ stress cao của sinh viên nam bằng với tỷ lệ stress cao của
sinh viên nữ)
\(H_1: p_1 - p_2 \neq 0\)
(Tỷ lệ stress cao của sinh viên nam khác với tỷ lệ stress cao của
sinh viên nữ)
# Tạo vector số lượng "Stress cao" cho mỗi giới tính
counts <- c(freq_tb_group["Female", "Stress cao"], freq_tb_group["Male", "Stress cao"])
# Tạo vector tổng số sinh viên từng giới tính
totals <- c(sum(freq_tb_group["Female", ]), sum(freq_tb_group["Male", ]))
# Thực hiện kiểm định tỷ lệ 2 mẫu
test_stress <- prop.test(counts, totals, alternative = "two.sided", correct = FALSE)
# Xem kết quả
test_stress
##
## 2-sample test for equality of proportions without continuity correction
##
## data: counts out of totals
## X-squared = 0.12714, df = 1, p-value = 0.7214
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.1538401 0.1062906
## sample estimates:
## prop 1 prop 2
## 0.3544304 0.3782051
Kết quả kiểm định
Giá trị thống kê: \(\chi^2\) =
0.12714
Bậc tự do: \(df\) = 1
Giá trị \(p-value\) = 0.7214
Khoảng tin cậy 95%: (-0.1538401; 0.1062906)
Kết quả kiểm định cho ra \(p-value\) = 0.7214. Vì giá trị này lớn hơn nhiều so với mức ý nghĩa 0.05, không có đủ cơ sở để bác bỏ giả thuyết \(H_0\). Do đó, có thể kết luận rằng sự khác biệt về tỷ lệ sinh viên bị căng thẳng cao giữa hai giới là không có ý nghĩa thống kê.
Dữ liệu mẫu cho thấy tỷ lệ sinh viên nam bị căng thẳng cao là khoảng 37,8%, cao hơn một chút so với tỷ lệ ở sinh viên nữ là 35,4%. Tuy nhiên, kết quả kiểm định đã khẳng định rằng sự chênh lệch nhỏ này rất có thể chỉ do yếu tố ngẫu nhiên trong quá trình lấy mẫu.
Giả thuyết kiểm định:
\(H_0: p_1 = p_2\)
\(H_1: p_1 ≠ p_2 \neq 0\)
library(epitools)
riskratio(freq_tb_group)
## $data
##
## Stress cao Stress thấp Total
## Female 28 51 79
## Male 59 97 156
## Total 87 148 235
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Female 1.0000000 NA NA
## Male 0.9631724 0.7853181 1.181306
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Female NA NA NA
## Male 0.7268852 0.7757862 0.7214196
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Kết quả phân tích Tỷ lệ Rủi ro (Risk Ratio - RR) cho thấy không có sự khác biệt đáng kể về mức độ căng thẳng giữa hai giới. Cụ thể, khả năng một sinh viên nữ bị căng thẳng cao là 1,04 lần so với sinh viên nam. Diễn giải một cách đơn giản hơn, nguy cơ bị căng thẳng cao ở hai nhóm là gần như tương đương nhau. Điều này được củng cố bởi khoảng tin cậy 95% [0,85; 1,27], vì khoảng này chứa giá trị 1, cho thấy sự khác biệt này không có ý nghĩa thống kê.
Kết quả từ cả ba phương pháp kiểm định khác nhau (Fisher’s exact, Chi-bình phương,…) đều cho ra \(p-value\) rất lớn cao hơn nhiều so với mức 0,05. Điều này cung cấp một bằng chứng rất mạnh mẽ, khẳng định rằng sự khác biệt nhỏ về tỷ lệ căng thẳng giữa nam và nữ rất có thể chỉ do tình cờ, không phản ánh một xu hướng thực sự.
oddsratio(freq_tb_group)
## $data
##
## Stress cao Stress thấp Total
## Female 28 51 79
## Male 59 97 156
## Total 87 148 235
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Female 1.0000000 NA NA
## Male 0.9042884 0.5100626 1.585073
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Female NA NA NA
## Male 0.7268852 0.7757862 0.7214196
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Kết quả phân tích Tỷ lệ Chênh (Odds Ratio - OR) cho thấy không có sự khác biệt đáng kể về mức độ căng thẳng giữa hai nhóm giới tính. Cụ thể, odds (tỷ lệ cơ hội) để một sinh viên nữ bị căng thẳng cao là khoảng 1,11 lần so với sinh viên nam. Diễn giải một cách dễ hiểu, odds bị căng thẳng cao ở hai nhóm là gần như tương đương nhau. Khoảng tin cậy 95% của OR là từ [0,63; 1,96], vì khoảng này chứa giá trị 1, điều này củng cố rằng sự khác biệt quan sát được không có ý nghĩa thống kê và rất có thể do yếu tố ngẫu nhiên.
Bên cạnh đó, kết quả từ nhiều phép kiểm định khác nhau (bao gồm Fisher’s Exact Test, Chi-Square Test, …) đều cho ra giá trị \(p-value\) lớn hơn đáng kể so với mức ý nghĩa 0.05. Điều này cung cấp bằng chứng thống kê cho thấy sự khác biệt nhỏ về odds liên quan đến mức độ căng thẳng giữa sinh viên nam và nữ không có ý nghĩa thống kê, và nhiều khả năng chỉ là kết quả của yếu tố ngẫu nhiên.
Việc tạo cột “Financial.Group” nhằm mục đích tái phân loại các mức độ tình trạng tài chính ban đầu thành hai nhóm chính: “Tài chính ổn định” và “Tài chính khó khăn”. Cách phân nhóm này giúp đơn giản hóa dữ liệu, làm cho việc so sánh, trực quan hóa (biểu đồ), cũng như thực hiện các phân tích thống kê trở nên dễ hiểu, rõ ràng và có độ tin cậy cao hơn. Qua đó, các kết luận rút ra từ dữ liệu cũng sẽ dễ truyền đạt và có ý nghĩa thực tiễn hơn.
# Tạo cột nhóm mới (sửa nhãn đúng ý nghĩa)
tl_dt$Financial.Group <- ifelse(tl_dt$Financial.Status %in% c("Awful", "Bad"),
"Tài chính khó khăn",
"Tài chính ổn định")
# Lập bảng chéo giữa Gender và Financial.Group
freq_tb_groupa <- table(tl_dt$Stress.Group, tl_dt$Financial.Group)
# Thêm tổng hàng và tổng cột
freq_tb_groupa1 <- addmargins(freq_tb_group)
# Hiển thị bảng
freq_tb_groupa1
##
## Stress cao Stress thấp Sum
## Female 28 51 79
## Male 59 97 156
## Sum 87 148 235
# Tạo bảng tần suất chéo (theo hàng) giữa Stress.Group và Financial.Group
stress_financial_f <- prop.table(table(tl_dt$Stress.Group, tl_dt$Financial.Group), margin = 1)
# Làm tròn kết quả cho dễ đọc
stress_financial_freq <- round(stress_financial_f, 2)
# Hiển thị bảng
stress_financial_freq
##
## Tài chính khó khăn Tài chính ổn định
## Stress cao 0.55 0.45
## Stress thấp 0.36 0.64
# CHUYỂN bảng tần suất thành data frame để vẽ ggplot
stress_financial_freq_df <- as.data.frame(stress_financial_f)
colnames(stress_financial_freq_df) <- c("Stress.Group", "Financial.Group", "Percent")
# Đổi sang % để dễ nhìn
stress_financial_freq_df$Percent <- stress_financial_freq_df$Percent * 100
# Vẽ biểu đồ cột chồng (stacked bar chart)
library(ggplot2)
ggplot(stress_financial_freq_df, aes(x = Stress.Group, y = Percent, fill = Financial.Group)) +
geom_col(position = "stack", width = 0.7, color = "black") +
geom_text(aes(label = sprintf("%.1f%%", Percent)),
position = position_stack(vjust = 0.5),
size = 4) +
labs(title = "Tần suất (%) sinh viên theo nhóm Stress và tình hình tài chính",
x = "Nhóm Stress", y = "Tần suất (%)") +
scale_fill_brewer(palette = "Set2") +
theme_minimal()
Nhận xét
Biểu đồ cho thấy một mối liên hệ mạnh mẽ giữa tình hình tài chính và mức độ căng thẳng của sinh viên. Tỷ lệ sinh viên có “Tài chính khó khăn” trong nhóm “Stress cao” là rất lớn (55,2%), cao hơn đáng kể so với nhóm “Stress thấp” (36,5%). Tương ứng, tỷ lệ sinh viên có “Tài chính ổn định” lại chiếm đa số áp đảo trong nhóm “Stress thấp” (63,5%) so với nhóm “Stress cao” (44,8%).
Sự chênh lệch rõ rệt này khẳng định xu hướng rằng tình hình tài chính là một yếu tố quan trọng ảnh hưởng đến sức khỏe tinh thần của sinh viên. Kết quả này có thể phản ánh rằng những lo lắng về chi phí sinh hoạt, học phí, và sự thiếu thốn về vật chất là một trong những nguồn gây căng thẳng chính, trực tiếp dẫn đến việc sinh viên rơi vào nhóm “Stress cao”.
Giả thuyết
# Thực hiện kiểm định Chi-squared
chi2 <- chisq.test(freq_tb_groupa)
# In kết quả kiểm định
print(chi2)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: freq_tb_groupa
## X-squared = 7.0459, df = 1, p-value = 0.007945
Kết quả kiểm định Chi-squared
Kết luận:
Với \(p-value\) = 0.007945 < 0.05, ta có đủ bằng chứng để bác bỏ giả thuyết \(H_0\), Điều này cho thấy giữa hai biến quan sát có tồn tại mối liên hệ có ý nghĩa thống kê.
\(p_1 = P(\text{Stress Level} =
\text{Cao} \mid \text{Tình hình tài chính} = \text{Khó
khăn})\)
(Tỷ lệ sinh viên có tình hình tài chính khó khăn bị stress
cao)
\(p_2 = P(\text{Stress Level} =
\text{Cao} \mid \text{Tình hình tài chính} = \text{Ổn
định})\)
(Tỷ lệ sinh viên có tình hình tài chính ổn định bị stress
cao)
Giả thuyết kiểm định:
\(H_0: p_1 - p_2 = 0\)
(Tỷ lệ stress cao của sinh viên có tình hình tài chính khó khăn bằng
với tỷ lệ stress cao của sinh viên có tình hình tài chính ổn
định)
\(H_1: p_1 - p_2 \neq 0\)
(Tỷ lệ stress cao của sinh viên có tình hình tài chính khó khăn khác
với tỷ lệ stress cao của sinh viên có tình hình tài chính ổn
định)
# Tạo vector số lượng "Stress cao" cho từng nhóm tình hình tài chính
counts <- c(freq_tb_groupa["Stress cao", "Tài chính khó khăn"], freq_tb_groupa["Stress cao", "Tài chính ổn định"])
# Tạo vector tổng số sinh viên trong từng nhóm tình hình tài chính
totals <- c(sum(freq_tb_groupa[, "Tài chính khó khăn"]), sum(freq_tb_groupa[, "Tài chính ổn định"]))
# Thực hiện kiểm định tỷ lệ 2 mẫu
test_stress <- prop.test(counts, totals, alternative = "two.sided", correct = FALSE)
# Xem kết quả
test_stress
##
## 2-sample test for equality of proportions without continuity correction
##
## data: counts out of totals
## X-squared = 7.788, df = 1, p-value = 0.005259
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.05338451 0.30132579
## sample estimates:
## prop 1 prop 2
## 0.4705882 0.2932331
Kết quả kiểm định
Giá trị thống kê: \(\chi^2\) =
7.788
Bậc tự do: \(df\) = 1
Giá trị \(p-value\) = 0.005259
Khoảng tin cậy 95%: (0.05338451; 0.30132579)
Kết quả kiểm định cho ra \(p-value\) = 0.005259, vì giá trị này nhỏ hơn mức ý nghĩa 0.05, có đủ cơ sở để bác bỏ giả thuyết \(H_0\). Nói cách khác, sự khác biệt về tỷ lệ sinh viên bị stress cao giữa hai nhóm tình hình tài chính (khó khăn và ổn định) là có ý nghĩa thống kê.
Dữ liệu mẫu cho thấy tỷ lệ sinh viên có “tài chính chưa ổn định” trong nhóm “Stress cao” là khoảng 47,1%, cao hơn đáng kể so với tỷ lệ ở nhóm “Stress thấp” là 29,3%. Kết quả kiểm định đã khẳng định rằng sự chênh lệch lớn này không phải là do yếu tố ngẫu nhiên trong quá trình lấy mẫu.
Giả thuyết kiểm định:
\(H_0: p_1 = p_2\)
\(H_1: p_1 ≠ p_2 \neq 0\)
library(epitools)
riskratio(freq_tb_groupa)
## $data
##
## Tài chính khó khăn Tài chính ổn định Total
## Stress cao 48 39 87
## Stress thấp 54 94 148
## Total 102 133 235
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Stress cao 1.00000 NA NA
## Stress thấp 1.41684 1.089006 1.843365
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Stress cao NA NA NA
## Stress thấp 0.005712537 0.006412576 0.005259418
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Kết quả phân tích Tỷ lệ Rủi ro (Risk Ratio - RR) cho thấy có sự khác biệt rất đáng kể về tình hình tài chính giữa hai nhóm stress. Cụ thể, khả năng một sinh viên có tài chính ổn định thuộc nhóm “Stress thấp” cao gấp 1,42 lần so với nhóm “Stress cao”. Diễn giải một cách đơn giản hơn, sinh viên có tài chính ổn định có khả năng thuộc nhóm ít căng thẳng cao hơn rõ rệt. Điều này được củng cố bởi khoảng tin cậy 95% [1,09; 1,84], vì toàn bộ khoảng này nằm trên 1, cho thấy sự khác biệt này có ý nghĩa thống kê.
Kết quả từ cả ba phương pháp kiểm định khác nhau (Fisher’s exact, Chi-bình phương,…) đều cho ra \(p-value\) rất nhỏ, thấp hơn nhiều so với mức 0,05. Điều này cung cấp một bằng chứng rất mạnh mẽ, khẳng định rằng mối liên hệ giữa tình hình tài chính và mức độ căng thẳng là có thật, không phải do tình cờ.
oddsratio(freq_tb_groupa)
## $data
##
## Tài chính khó khăn Tài chính ổn định Total
## Stress cao 48 39 87
## Stress thấp 54 94 148
## Total 102 133 235
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Stress cao 1.000000 NA NA
## Stress thấp 2.133206 1.245675 3.681633
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Stress cao NA NA NA
## Stress thấp 0.005712537 0.006412576 0.005259418
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Kết quả phân tích Tỷ lệ Chênh (Odds Ratio - OR) cho thấy sự khác biệt đáng kể về tình hình tài chính giữa hai nhóm mức độ stress. Cụ thể, odds (tỷ lệ cơ hội) để một sinh viên có tình hình tài chính ổn định thuộc nhóm “Stress thấp” cao gấp 2,13 lần so với nhóm “Stress cao”. Diễn giải đơn giản, sinh viên có tình hình tài chính ổn định có khả năng thuộc nhóm ít căng thẳng cao hơn rõ rệt so với những sinh viên có tài chính khó khăn. Khoảng tin cậy 95% của OR dao động từ 1,25 đến 3,68, và do toàn bộ khoảng này lớn hơn 1, điều này củng cố thêm bằng chứng rằng sự khác biệt quan sát được là có ý nghĩa thống kê và phản ánh mối liên hệ chặt chẽ giữa mức độ stress và tình hình tài chính của sinh viên.
Bên cạnh đó, kết quả từ nhiều phép kiểm định khác nhau (bao gồm Fisher’s Exact Test, Chi-Square Test, …) đều cho ra giá trị \(p-value\) nhỏ hơn nhiều so với mức ý nghĩa 0.05 (khoảng 0.005). Điều này cung cấp bằng chứng thống kê vững chắc rằng mối liên hệ giữa tình hình tài chính và mức độ căng thẳng là có thật và không phải do tình cờ.
Trong cuộc khảo sát, đối tượng là các biến định tính với đặc tính chủ yếu là nam sinh viên, phần lớn theo học ngành BCA, với mong muốn phát triển nghề nghiệp tiếp nối sau khi tốt nghiệp đại học. Phần đông sinh viên có thái độ tích cực và tình hình tài chính tương đối ổn định. Khi phân tích chi tiết các biến, kết quả kiểm định cho thấy ba biến có sự khác biệt rõ ràng: biến “Nhu cầu làm việc bán thời gian (Part-time)” chiếm tỷ lệ cao 82,6%, đồng thời sinh viên thuộc khối ngành Commerce có tỷ lệ khác biệt rõ rệt với 25,5%. Biến “Chấp nhận làm việc theo đúng ngành học tại đại học” ở mức 50% cũng thể hiện sự khác biệt đáng kể so với nhóm còn lại chỉ đạt 26%. Ngược lại, biến “Tình hình tài chính tốt” khi kiểm định cho kết quả gần tương ứng với tỷ lệ 54,9%.
Xét về mối quan hệ giữa các biến, giới tính và nhu cầu làm việc bán thời gian có sự chênh lệch rõ ràng, trong đó nam sinh viên có xu hướng làm thêm nhiều hơn nữ với tỷ số rủi ro tương đối (RR) là 0,48 lần và tỷ lệ chênh (OR) là 0,43 lần. Tuy nhiên, mối liên hệ giữa hai biến này không quá mật thiết. Tương tự, giữa giới tính và trạng thái stress không tồn tại mối quan hệ rõ ràng và sự chênh lệch cũng không đáng kể, mặc dù nam sinh viên có xu hướng chịu stress cao hơn đôi chút, với RR = 1,04 và OR = 1,11.
Điểm nổi bật và có ý nghĩa thống kê rõ ràng nhất là mối liên hệ giữa tình trạng stress và tình hình tài chính. Cụ thể, sinh viên có tài chính ổn định có tỷ lệ stress cao thấp hơn rõ rệt so với những sinh viên gặp khó khăn về tài chính, với tỷ số rủi ro tương đối RR = 1,41 và tỷ lệ chênh OR = 2,13. Điều này cho thấy tài chính ổn định đóng vai trò quan trọng trong việc giảm mức độ stress của sinh viên.
Mẫu khảo sát có tính đại diện hạn chế khi chủ yếu bao gồm sinh viên nam và tập trung vào ngành BCA, do đó kết quả nghiên cứu khó có thể suy rộng cho toàn bộ sinh viên, đặc biệt là sinh viên nữ và các ngành học khác. Ngoài ra, dữ liệu dựa trên phương pháp tự báo cáo nên độ tin cậy có thể bị ảnh hưởng bởi các yếu tố chủ quan như cảm xúc, mong muốn thể hiện hình ảnh tích cực hoặc sự e ngại khi trả lời. Phân tích trong nghiên cứu còn khá đơn giản, chủ yếu xem xét mối quan hệ giữa từng cặp biến mà chưa khai thác các yếu tố tương tác phức tạp, ví dụ như liệu tác động của tình hình tài chính lên stress có khác nhau giữa nam và nữ hay không. Hơn nữa, nghiên cứu chỉ nêu bật các mối tương quan mà chưa đi sâu giải thích nguyên nhân tồn tại của chúng. Cuối cùng, mặc dù mối quan hệ giữa tình hình tài chính và stress là khá rõ ràng, nghiên cứu không thể xác định chắc chắn khó khăn tài chính là nguyên nhân trực tiếp gây ra stress do có thể có các biến số trung gian khác chưa được xem xét.
Tổ chức các buổi workshop về quản lý tài chính cá nhân.
Mở rộng các quỹ học bổng, chính sách miễn giảm học phí cho sinh viên có hoàn cảnh khó khăn. Xây dựng một cổng thông tin việc làm bán thời gian uy tín và an toàn.
Đẩy mạnh các chương trình thực tập, kiến tập ngay từ năm thứ hai, thứ ba.
Tổ chức nhiều hơn các buổi talkshow, hội thảo với các chuyên gia, cựu sinh viên thành đạt để chia sẻ kinh nghiệm thực tế.
Mở rộng quy mô và đa dạng hóa mẫu: Thực hiện khảo sát trên quy mô lớn hơn, bao gồm nhiều ngành học khác nhau và đảm bảo cân bằng hơn về tỷ lệ giới tính để kết quả có tính đại diện cao hơn.
Kết hợp phương pháp định tính: Thực hiện các buổi phỏng vấn sâu hoặc thảo luận nhóm tập trung với sinh viên để tìm hiểu nguyên nhân gốc rễ của các vấn đề như stress, khó khăn tài chính, và các rào cản khi tìm việc làm thêm.
Sử dụng mô hình phân tích phức tạp hơn: Áp dụng các mô hình hồi quy đa biến để xem xét tác động đồng thời của nhiều yếu tố (giới tính, tài chính, ngành học,…) lên mức độ stress hoặc ý định nghề nghiệp.
Thực hiện nghiên cứu dọc (Longitudinal Study): Theo dõi một nhóm sinh viên trong suốt quá trình học (từ năm nhất đến khi tốt nghiệp) để quan sát sự thay đổi về tài chính, stress, và định hướng nghề nghiệp theo thời gian, từ đó có thể đưa ra các kết luận mang tính nhân quả mạnh mẽ hơn.