Trước tiên, Em chân thành cảm ơn Thầy Trần Mạnh Tường đã tận tình hướng dẫn, góp ý cho em trong suốt quá trình học tập và thực hiện tiểu luận này cũng như các Thầy Cô trong khoa khoa học dữ liệu trường Đại học Tài chính – Marketing đã nhiệt tình giảng dạy, truyền tải các kiến thức về kinh tế - tài chính để chúng em ứng dụng trong bài tiểu luận.Phân tích dữ liệu định tính là môn học rất thú vị, vô cùng bổ ích và có tính thực tế cao giúp chúng em có một nhìn rộng hơn về thống kê số liệu kinh tế, xã hội trong và ngoài nước.Tuy nhiên, do vốn kiến thức em còn nhiều hạn chế và khả năng tiếp thu thực tế còn gặp nhiều khó khăn. Mặc dù em đã cố gắng hết sức nhưng khó có thể tránh khỏi những thiếu sót, kính mong quý Thầy Cô xem xét và góp ý để bài tiểu luận của em được hoàn thiện hơn nữa.
Tác giả cam đoan đề tài tiểu luận môn phân tích dữ liệu định tính “TIỂU LUẬN PHÂN TÍCH CÁC YẾU TỐ ẢNH HƯỞNG ĐẾN MỨC LƯƠNG CỦA CHUYÊN GIA NGÀNH KHOA HỌC DỮ LIỆU” là công trình nghiên cứu của tác giả dưới sự hướng dẫn của giảng viên Th.s Trần Mạnh Tường. Những phần sử dụng tài liệu tham khảo trong đề tài đã được trình bày nguồn và dựa trên bài giảng để thực hiện phân tích. Các thông tin số liệu sử trụng trong bài tiểu luận này là trung thực, dữ liệu thực có nguồn gốc rõ ràng. Các kết quả trình bày trong bài tiểu luận hoàn toàn là kết quả do tác giả nghiên cứu và thực hiện. Nếu vi phạm lời cam đoan này, tác giả xin chịu hoàn toàn trách nhiệm.
Trong nghiên cứu này, tác giả sử dụng bộ dữ liệu “Salaries in Data Science” được thu thập từ kho dữ liệu mở Kaggle nhằm mục đích phân tích các yếu tố ảnh hưởng đến mức lương của chuyên gia ngành Khoa học Dữ liệu.
Việc trình bày rõ ràng cấu trúc và nội dung của bộ dữ liệu ngay từ đầu sẽ giúp người đọc nắm bắt tổng quan, từ đó dễ dàng theo dõi quá trình xử lý, phân tích và đánh giá kết quả.
Bộ dữ liệu bao gồm 1000 quan sát của các chuyên gia Data Science trên toàn cầu và 7 biến chính gồm 5 biến định tính và 2 biến định lượng liên quan đến lương, trình độ học vấn, số năm kinh nghiệm, ví trí địa lý nơi làm việc, tên công việc, tuổi và giới tính.
library(readr)
library(ggplot2)
library(dplyr)
library(skimr)
library(psych)
library(csv)
library(DT)
library(pander)
library(formattable)
library(htmltools)
library(DescTools)
library(epitools)
library(data.table)
library(kableExtra)
library(epiR)
d <- read.csv("D:/THU 2/data cuoiky.csv")
datatable(d)
Mô tả các đặc trưng của dữ liệu
Tên biến | Mô tả |
---|---|
Education | Trình độ học vấn |
Experience | số năm Kinh nghiệm |
Location | Vị trí địa lý nơi làm việc |
Job_Title | Tên chức danh công việc |
Age | Tuổi |
Gender | Giới tính |
Salary | Lương |
Trong bối cảnh cách mạng công nghiệp lần thứ tư, khoa học dữ liệu (Data Science) đã trở thành ngành mũi nhọn, đóng vai trò then chốt trong việc chuyển đổi và tối ưu hoá hoạt động của doanh nghiệp, tổ chức. Nhu cầu tuyển dụng các chuyên gia Data Science tăng trưởng nhanh chóng, đồng thời đã tác động mạnh mẽ đến cơ cấu thu nhập, phúc lợi của nguồn nhân lực chất lượng cao trong lĩnh vực này. Tuy nhiên, mức lương của kỹ sư khoa học dữ liệu không chỉ phụ thuộc vào một yếu tố đơn lẻ mà chịu ảnh hưởng đồng thời bởi nhiều biến số: Trình độ học vấn, kinh nghiệm, vị trí địa lý nơi làm việc, tuổi, giới tính cũng như đặc điểm cụ thể của chức danh và ngành nghề.
Trên thực tế, mặc dù đã có một số nghiên cứu định tính và định lượng về nhân tố ảnh hưởng đến thu nhập trong các ngành công nghệ thông tin, vẫn còn thiếu những phân tích mang tính toàn diện trên quy mô dữ liệu lớn, cập nhật và đa quốc gia dành riêng cho ngành khoa học dữ liệu. Việc sử dụng bộ dữ liệu “Salaries in Data Science” với 1.000 quan sát từ nền tảng Kaggle cho phép nghiên cứu đo lường tác động đồng thời của nhiều yếu tố, giúp lấp đầy khoảng trống này.
Kết quả phân tích không chỉ đóng góp vào lý thuyết về quản trị nhân sự và kinh tế lao động mà còn mang tính ứng dụng cao trong việc xây dựng chính sách đãi ngộ và thu hút nhân tài cho doanh nghiệp.
Cơ sở lý thuyết
Lý thuyết Vốn con người (Human Capital Theory) do Becker đề xuất vào năm 1964 cho rằng trình độ học vấn và kinh nghiệm làm việc không chỉ là những thành tố phản ánh năng lực, mà còn là khoản đầu tư quan trọng vào “vốn con người”. Khi một cá nhân đầu tư thời gian và nguồn lực cho giáo dục và đào tạo chuyên môn, họ thực sự đang tích lũy những kỹ năng và kiến thức giúp gia tăng năng suất lao động, từ đó nâng cao thu nhập. Trong nghiên cứu về thu nhập của kỹ sư Data Science, hai biến Education và Experience chính là thước đo cho quy mô đầu tư này, phản ánh mức độ mà mỗi chuyên gia đã đầu tư vào năng lực bản thân.
Phương trình thu nhập Mincer (Mincer Earnings Function) được Mincer công bố năm 1974 nhằm khái quát mối quan hệ giữa thu nhập và hai yếu tố chính: số năm học vấn (Schooling) cùng số năm kinh nghiệm làm việc (Experience). Công thức này thường được viết dưới dạng log tuyến tính, đồng thời thêm hạng tử bình phương của kinh nghiệm để mô tả xu hướng bão hòa khi kỹ năng đã đi vào giai đoạn chín muồi. Khi áp dụng mô hình này cho dữ liệu ngành khoa học dữ liệu, các hệ số β1 và β2 giúp ước lượng mức tăng biên của ln(Salary) khi tăng thêm một năm học vấn hoặc một năm kinh nghiệm, đồng thời phản ánh sự thay đổi về tốc độ tăng thu nhập theo thời gian.
Lý thuyết Tín hiệu (Signaling Theory) do Spence giới thiệu năm 1973 làm nổi bật vai trò của bằng cấp và chứng chỉ như những tín hiệu quan trọng trên thị trường lao động vốn tồn tại thông tin không đối xứng. Theo đó, dù hai ứng viên có năng lực thực tế tương đương, người sở hữu các chứng chỉ hay bằng cấp uy tín, chẳng hạn thạc sĩ, tiến sĩ hoặc chứng chỉ Certified Data Scientist vẫn được đánh giá cao hơn và thường nhận được mức lương đề xuất cao hơn. Trong bối cảnh Data Science, việc ghi nhận các chứng chỉ chuyên sâu về Machine Learning hay Big Data vào mô hình phân tích góp phần lý giải cách biệt về đãi ngộ giữa các ứng viên.
Cuối cùng, bất bình đẳng thu nhập giữa nam và nữ vẫn là thực trạng tồn tại rộng khắp ngành công nghệ, trong đó có Data Science. Các nghiên cứu của Blau & Kahn (2000) chỉ ra rằng ngoài yếu tố kỹ năng và kinh nghiệm, sự khác biệt về giới còn chịu tác động từ định kiến trong đàm phán lương, kỳ vọng nghề nghiệp và môi trường làm việc. Việc đưa biến Gender vào mô hình phân tích cho phép kiểm định mức độ chênh lệch thu nhập nam–nữ, từ đó cung cấp cơ sở để đề xuất các chính sách thu hẹp khoảng cách này.
Tổng quan nghiên cứu
Tác giả & Năm | Phạm vi | Phương pháp / Mẫu | Kết quả chính |
---|---|---|---|
Burtch et al. (2018) | Hoa Kỳ | Khảo sát 2.000 chuyên gia Data Science qua LinkedIn & Glassdoor; hồi quy đa biến | Education và Experience là hai yếu tố đóng góp lớn nhất vào Salary; khoảng cách lương giữa bờ Đông và bờ Tây lên tới 15 %. |
Kaggle (2022) | Toàn cầu | Bộ dữ liệu “2022 State of Data Science” (n≈20.000); phân tích thống kê mô tả và hồi quy tuyến tính | Lương trung bình tăng đều theo Experience; San Francisco và New York dẫn đầu về Salary; nữ nhận lương thấp hơn nam khoảng 7 %. |
StackOverflow (2023) | Toàn cầu | Developer Survey (n≈50.000); hồi quy log-linear kết hợp phân tích ngưỡng | Job_Title như Data Engineer, ML Engineer có Salary tương đương hoặc cao hơn Data Scientist; giới tính chỉ tác động nhẹ. |
Kim & Park (2023) | Hàn Quốc | Phân tích 5.000 tin tuyển dụng trên JobKorea; mô hình hồi quy logit dự báo xác suất nhận Salary ≥ ngưỡng | Trình độ tiến sĩ và chuyên ngành Machine Learning làm tăng 30 % khả năng nhận mức lương cao; chênh lệch giới trong nhóm <3 năm kinh nghiệm giảm. |
Mục tiêu chung
Phân tích và đánh giá mức độ ảnh hưởng của các yếu tố trình độ học vấn, kinh nghiệm, giới tính đến mức lương thực của chuyên gia ngành Khoa học Dữ liệu.
Mục tiêu cụ thể
Khảo sát và mô tả đặc trưng phân phối mức lương (Salary) theo từng cấp độ học vấn (Education) để xác định chênh lệch trung bình giữa các bậc bằng cấp (THPT, Đại học, Thạc sĩ, Tiến sĩ).
So sánh mức lương trung bình giữa hai nhóm giới tính (Gender) nhằm đánh giá khoảng cách thu nhập nam – nữ trong ngành khoa học dữ liệu.
Khảo sát và mô tả phân phối mức lương theo nhóm kinh nghiệm nhằm xác định xu hướng thay đổi thu nhập theo kinh nghiệm làm việc.
Xây dựng mô hình hồi quy đa biến (multiple regression) để lượng hóa đồng thời ảnh hưởng của các yếu tố trên và kiểm định ý nghĩa thống kê.
Kiểm định ý nghĩa thống kê và xem xét tương tác (interaction) giữa các biến, ví dụ Education × Gender, nhằm khám phá hiệu ứng kết hợp ảnh hưởng đến thu nhập.
Nghiên cứu bắt đầu bằng việc áp dụng thống kê mô tả để hiểu các đặc trưng cơ bản của dữ liệu.
Tác giả tiến hành vẽ biểu đồ tần số và biểu đồ tần suất giúp trực quan hóa phân bố và mối tương quan sơ bộ giữa các biến.
Tiếp theo, để làm rõ mối liên hệ giữa các biến và khả năng đạt được nhóm mức lương cao, nghiên cứu sử dụng các chỉ số Risk Difference, relative risk và odds ratio. Các bảng tần số chéo (cross-tabulation) được xây dựng kết hợp với kiểm định Chi-square nhằm kiểm soát tính phụ thuộc thống kê giữa các cặp biến, ví dụ như giữa cấp độ kinh nghiệm và hình thức làm việc. Và việc so sánh Risk Difference, relative risk và odds ratio giữa các nhóm mang lại cái nhìn định lượng về xu hướng tăng khả năng nhận lương cao khi thay đổi yếu tố đầu vào.
Trên nền tảng các kết quả trước, nghiên cứu tiếp tục phát triển các mô hình hồi quy và mô hình xác suất. Hồi quy tuyến tính đa biến được sử dụng để ước lượng đồng thời tác động của các yếu tố như trình độ học vấn và kinh nghiệm lên mức lương thực.
Kết quả thu được không chỉ giúp kỹ sư khoa học dữ liệu nhận thức rõ cơ chế hình thành mức lương mà còn mang lại định hướng phát triển kỹ năng, kinh nghiệm và lựa chọn hình thức làm việc phù hợp. Khi hiểu được tác động tương hỗ giữa yếu tố cá nhân và đặc điểm tổ chức, mỗi chuyên gia có thể chủ động xây dựng lộ trình nghề nghiệp và thương lượng đãi ngộ một cách hiệu quả.
Về phía doanh nghiệp và nhà quản trị nhân sự, nghiên cứu cung cấp cơ sở định lượng cho việc thiết kế chính sách lương thưởng công bằng và cạnh tranh.
Đánh giá khoảng cách thu nhập theo giới mang đến góc nhìn sâu rộng để thiết lập những biện pháp bình đẳng và hỗ trợ phát triển bền vững nguồn nhân lực trong lĩnh vực Khoa học Dữ liệu.
Trên bình diện học thuật và chính sách, nghiên cứu bổ sung bằng chứng thực nghiệm về cơ chế vận hành của thị trường lao động trong bối cảnh chuyển đổi số.
Trước hết, tác giả lập bảng tần số và bảng tần suất cho biến Education (Trình độ học vấn) cùng với biểu đồ phân phối, nhằm xác định số lượng và tỷ lệ cá thể ở mỗi nhóm: THPT, Đại học, Thạc sĩ và Tiến sĩ. Kết quả thu được không chỉ phản ánh cơ cấu trình độ học vấn trong mẫu, mà còn làm cơ sở cho việc kiểm định ảnh hưởng của Education lên biến phụ thuộc Salary ở các phân tích tiếp theo.
d$Sal <- d$Salary
d$exp <-d$Experience
Bảng tần số
# Đảm bảo R dùng UTF-8
options(encoding = "UTF-8")
Sys.setlocale("LC_CTYPE", "en_US.UTF-8") # hoặc "Vietnamese_Vietnam.1258" trên Windows
## [1] "en_US.UTF-8"
d$Edu <- factor(
d$Education,
levels = c("High School", "Bachelor", "Master", "PhD"),
labels = c("THPT", "Đại học", "Thạc sĩ", "Tiến sĩ")
)
# 1. Bảng tần số của biến Education
tanso_Edu <- table(d$Edu)
print(tanso_Edu)
##
## THPT Đại học Thạc sĩ Tiến sĩ
## 255 253 241 251
Biểu đồ tần số
ggplot(d, aes(x = Edu, fill = Edu)) +
geom_bar() +
scale_fill_manual(values = c(
"THPT" = "lightgreen",
"Đại học" = "lightblue",
"Thạc sĩ" = "salmon",
"Tiến sĩ" = "plum"
)) +
labs(
title = "Phân phối trình độ học vấn",
x = "Trình độ học vấn",
y = "Số lượng quan sát"
) +
theme_minimal() +
theme(legend.position = "none")
Nhận xét
Bộ dữ liệu gồm 1.000 quan sát, phân bổ đều cho bốn trình độ học vấn.
Nhóm THPT có 255 quan sát, nhiều nhất trong các nhóm.
Nhóm Đại học có 253 quan sát, chỉ kém THPT 2 quan sát.
Nhóm Tiến sĩ có 251 quan sát, khá sát với hai nhóm trên.
Nhóm Thạc sĩ có 241 quan sát, ít hơn nhóm cao nhất 14 quan sát.
Khoảng chênh nhỏ giữa các nhóm (tối đa 14 quan sát) cho thấy cơ cấu học vấn trong mẫu rất đồng đều, không có nhóm nào vượt trội về số lượng.
Bảng tần suất
# 2. Bảng tần suất (%)
tansuat_Edu <- prop.table(tanso_Edu) * 100
print(round(tansuat_Edu, 2))
##
## THPT Đại học Thạc sĩ Tiến sĩ
## 25.5 25.3 24.1 25.1
Biểu đồ tần suất
# Màu cho từng lát
cols <- c("lightgreen", "lightblue", "salmon", "plum")
# Nhãn phần trăm cho legend
nhanlabels <- paste0(round(tansuat_Edu, 2), "%")
# Vẽ pie chart không nhãn trên lát
pie(
tansuat_Edu,
labels = NA, # Không hiện nhãn trên lát
main = "Tần suất (%) trình độ học vấn",
col = cols,
border = "white"
)
# Thêm legend bên ngoài góc phải
legend(
x = "topright",
legend = paste(names(tansuat_Edu), nhanlabels),
fill = cols,
bty = "n",
cex = 0.8
)
Nhận xét
Bộ dữ liệu gồm 1.000 quan sát, phân bổ rất đều cho bốn mức trình độ học vấn, mỗi nhóm chiếm khoảng 24–26 % tổng mẫu.
Cụ thể, THPT có tần số cao nhất với 255 quan sát (25,5 %), kế tiếp là Đại học 253 quan sát (25,3 %), Tiến sĩ 251 quan sát (25,1 %) và Thạc sĩ 241 quan sát (24,1 %).
Chênh lệch giữa nhóm đông nhất (THPT) và ít nhất (Thạc sĩ) chỉ 14 quan sát, tương đương 1,4 %, cho thấy cơ cấu học vấn trong mẫu rất cân bằng, không có nhóm nào chiếm ưu thế vượt trội.
Tiếp theo, tác giả lập bảng tần số, bảng tần suất và biểu đồ phân phối cho biến Location (vị trí địa lý nơi làm việc), bao gồm ba nhóm: Nông thôn (Rural), Vùng ven đô (Suburban) và Thành thị (Urban). Kết quả này cho thấy quy mô và cơ cấu phân bố mẫu theo từng loại khu vực.
Bảng tần số
tanso_Loc <- table(d$Location)
print(tanso_Loc)
##
## Rural Suburban Urban
## 345 345 310
Biểu đồ
ggplot(d, aes(x = Location, fill = Location)) +
geom_bar() +
labs(
title = "Phân phối vị trí địa lý",
x = "Location",
y = "Số lượng quan sát"
) +
theme_minimal() +
theme(legend.position = "none")
Nhận xét
Bộ dữ liệu gồm 1.000 quan sát, phân bổ cho ba nhóm Location.
Rural có 345 quan sát, nhiều nhất cùng với Suburban.
Suburban có 345 quan sát, bằng với Rural.
Urban có 310 quan sát, ít hơn hai nhóm kia 35 quan sát.
Bảng tần suất
tansuat_Loc <- prop.table(table(d$Location)) * 100
print(round(tansuat_Loc, 2))
##
## Rural Suburban Urban
## 34.5 34.5 31.0
Biểu đồ
# Tính tần suất (%) cho Location
tansuat_Loc <- prop.table(table(d$Location)) * 100
# Màu động cho từng category
cols_loc <- rainbow(length(tansuat_Loc))
# Nhãn phần trăm
nhanlabels_loc <- paste0(round(tansuat_Loc, 1), "%")
# Vẽ pie chart
pie(
tansuat_Loc,
labels = NA,
main = "Tần suất (%) vị trí địa lý",
col = cols_loc,
border = "white"
)
# Thêm legend (xoay dọc nếu quá nhiều)
legend(
x = "topright",
legend = paste(names(tansuat_Loc), nhanlabels_loc),
fill = cols_loc,
bty = "n",
cex = 0.7
)
Nhận xét
Rural chiếm 34,5 % tổng mẫu.
Suburban chiếm 34,5 % tổng mẫu.
Urban chiếm 31,0 % tổng mẫu.
→ Khoảng chênh giữa Rural/Suburban và Urban chỉ 3,5 %, cho thấy phân bố mẫu theo Location rất cân bằng.
Tiếp đến, tác giả lập bảng tần số, bảng tần suất và biểu đồ phân phối cho biến Job_Title (Tên chức danh công việc) để xác định quy mô từng nhóm: Data Analyst, Data Architect, Data Engineer và Machine Learning Engineer. Kết quả này cung cấp cái nhìn tổng quan về cơ cấu nhân sự theo chức danh
Bảng tần số
tanso_Job <- table(d$Job_Title)
print(tanso_Job)
##
## Data Analyst Data Architect Data Engineer
## 255 504 2
## Machine Learning Engineer
## 239
Biểu đồ
ggplot(d, aes(x = Job_Title, fill = Job_Title)) +
geom_bar() +
labs(
title = "Phân phối chức danh công việc",
x = "Job Title",
y = "Số lượng quan sát"
) +
theme_minimal() +
theme(
legend.position = "none",
axis.text.x = element_text(angle = 45, hjust = 1)
)
Nhận xét
Trong 1 000 quan sát, nhóm Data Architect chiếm 504 quan sát, gấp gần đôi so với Data Analyst (255 quan sát) và hơn hẳn Machine Learning Engineer (239 quan sát).
Nhóm Data Engineer chỉ có 2 quan sát, gần như không xuất hiện trong mẫu.
Sự phân bố này cho thấy vai trò kiến trúc dữ liệu (Data Architect) được đại diện áp đảo, trong khi vị trí Data Engineer gần như không được quan sát.
Bảng tần suất
tansuat_Job <- prop.table(table(d$Job_Title)) * 100
print(round(tansuat_Job, 2))
##
## Data Analyst Data Architect Data Engineer
## 25.5 50.4 0.2
## Machine Learning Engineer
## 23.9
Biểu đồ
# Tính tần suất (%) cho Job_Title
tansuat_Job <- prop.table(table(d$Job_Title)) * 100
# Màu động
cols_job <- rainbow(length(tansuat_Job))
# Nhãn phần trăm
nhanlabels_job <- paste0(round(tansuat_Job, 1), "%")
# Vẽ pie chart
pie(
tansuat_Job,
labels = NA,
main = "Tần suất (%) chức danh công việc",
col = cols_job,
border = "white"
)
# Thêm legend
legend(
x = "bottomright",
legend = paste(names(tansuat_Job), nhanlabels_job),
fill = cols_job,
bty = "n",
cex = 0.5
)
Nhận xét
Data Architect: 50,4 % mẫu,
Data Analyst: 25,5 % mẫu,
Machine Learning Engineer: 23,9 % mẫu,
Data Engineer: 0,2 % mẫu.
→ Mức 50,4 % cho Data Architect cho thấy hơn một nửa mẫu tập trung vào vai trò này. Analyst và MLE chia đều phần còn lại (~25 % mỗi nhóm), đảm bảo đủ kích thước để so sánh.
Tiếp theo, tác giả lập bảng tần số, bảng tần suất và biểu đồ phân phối cho biến Gender (Giới tính) để xác định quy mô mẫu theo hai nhóm: Female và Male. Kết quả này cho thấy cơ cấu phân bố giới tính trong dữ liệu, từ đó làm cơ sở để kiểm định xem yếu tố giới tính có ảnh hưởng như thế nào đến biến phụ thuộc Salary trong các phân tích tiếp theo.
Bảng tần số
tanso_Gen <- table(d$Gender)
print(tanso_Gen)
##
## Female Male
## 484 516
Biểu đồ
ggplot(d, aes(x = Gender, fill = Gender)) +
geom_bar() +
labs(
title = "Phân phối giới tính",
x = "Gender",
y = "Số lượng quan sát"
) +
theme_minimal() +
theme(legend.position = "none")
Nhận xét
Bộ dữ liệu gồm 1.000 quan sát, phân bổ theo hai nhóm giới tính.
Nhóm Female có 484 quan sát.
Nhóm Male có 516 quan sát.
→ Số quan sát của Male nhiều hơn Female 32 quan sát.
Bảng tần suất
tansuat_Gen <- prop.table(table(d$Gender)) * 100
print(round(tansuat_Gen, 2))
##
## Female Male
## 48.4 51.6
Biểu đồ
# Tính tần suất (%) cho Gender
tansuat_Gen <- prop.table(table(d$Gender)) * 100
# Chọn màu cho 2 nhóm
cols_gen <- c("lightpink", "lightcyan")
# Nhãn phần trăm
nhanlabels_gen <- paste0(round(tansuat_Gen, 1), "%")
# Vẽ pie chart
pie(
tansuat_Gen,
labels = NA,
main = "Tần suất (%) giới tính",
col = cols_gen,
border = "white"
)
# Thêm legend
legend(
x = "topright",
legend = paste(names(tansuat_Gen), nhanlabels_gen),
fill = cols_gen,
bty = "n",
cex = 0.8
)
Nhận xét
Female chiếm 48,4 % tổng mẫu.
Male chiếm 51,6 % tổng mẫu.
→ Chênh lệch chỉ 3,2 %, cho thấy tỷ lệ nam/nữ trong mẫu khá cân bằng.
Cuối cùng, tác giả lập bảng tần số, bảng tần suất và biểu đồ phân phối cho biến Salary (Lương), với hai nhóm phân loại “High” và “Low”. Qua đó, xác định số lượng và tỷ lệ cá thể nhận lương cao so với lương thấp trong mẫu. Kết quả này không chỉ phản ánh cơ cấu phân bổ thu nhập, mà còn làm nền tảng để so sánh và kiểm định ảnh hưởng của các biến độc lập (Education, Experience, Location, Job_Title, Gender) lên mô hình thu nhập trong các phân tích tiếp theo.
Bảng tần số
tanso_Sal <- table(d$Sal)
print(tanso_Sal)
##
## Hight Low
## 560 440
Biểu đồ
ggplot(d, aes(x = Sal, fill = Sal)) +
geom_bar() +
labs(
title = "Phân phối lương",
x = "Sal",
y = "Số lượng quan sát"
) +
theme_minimal() +
theme(legend.position = "none")
Nhận xét
Bộ dữ liệu gồm 1.000 quan sát, phân bổ theo hai nhóm lương.
Nhóm Hight có 560 quan sát.
Nhóm Low có 440 quan sát.
→ Số quan sát của Hight nhiều hơn Low 120 quan sát.
Bảng tần suất
tansuat_Gen <- prop.table(table(d$Gender)) * 100
print(round(tansuat_Gen, 2))
##
## Female Male
## 48.4 51.6
Biểu đồ
# Tính tần suất (%) cho Gender
tansuat_Sal <- prop.table(table(d$Sal)) * 100
# Chọn màu cho 2 nhóm
cols_Sal <- c("orange", "lightcyan")
# Nhãn phần trăm
nhanlabels_Sal <- paste0(round(tansuat_Sal, 1), "%")
# Vẽ pie chart
pie(
tansuat_Sal,
labels = NA,
main = "Tần suất (%) giới tính",
col = cols_Sal,
border = "white"
)
# Thêm legend
legend(
x = "topright",
legend = paste(names(tansuat_Sal), nhanlabels_gen),
fill = cols_Sal,
bty = "n",
cex = 0.8
)
Nhận xét
Hight chiếm 48,4 % tổng mẫu.
Low chiếm 51,6 % tổng mẫu.
→ Chênh lệch chỉ 3,2 %, cho thấy tỷ lệ Hight/Low trong mẫu khá cân bằng.
Để kiểm định xem tỉ lệ chuyên gia ngành Khoa học Dữ liệu có trình độ Đại học trong mẫu có thực sự bằng 25% như giả thiết ban đầu hay không, tác giả thực hiện kiểm định tỉ lệ một mẫu (1-sample proportion test) với:
Giả thuyết kiểm định
H₀: Tỷ lệ chuyên gia ngành Khoa học Dữ liệu có trình độ Đại học trong bộ dữ liệu là 25 % (p = 0.25).
H₁: Tỷ lệ chuyên gia ngành Khoa học Dữ liệu có trình độ Đại học trong bộ dữ liệu khác 25 % (p ≠ 0.25).
# 1. Đếm số chuyên gia có trình độ Đại học
n_daihoc <- sum(d$Edu == "Đại học")
# 2. Lấy tổng số quan sát trong dữ liệu
n_total <- nrow(d)
# 3. Kiểm định tỉ lệ một mẫu (p0 = 0.25), CI 95%, không điều chỉnh Yates
ci_daihoc <- prop.test(
x = n_daihoc, # 253 chuyên gia Đại học
n = n_total, # trên 1000 quan sát
p = 0.25, # tỉ lệ giả thiết H0 = 25%
conf.level = 0.95, # Khoảng tin cậy 95%
correct = FALSE # tắt Yates continuity correction
)
# In kết quả
print(ci_daihoc)
##
## 1-sample proportions test without continuity correction
##
## data: n_daihoc out of n_total, null probability 0.25
## X-squared = 0.048, df = 1, p-value = 0.8266
## alternative hypothesis: true p is not equal to 0.25
## 95 percent confidence interval:
## 0.2270358 0.2808546
## sample estimates:
## p
## 0.253
Nhận xét
Thống kê kiểm định: χ² = 0.048, df = 1
p-value = 0.8266 (> 0.05)
Khoảng tin cậy 95 % cho p: [0.2270, 0.2809]
Ước tính tỷ lệ mẫu \(\hat{p}\): 25.30 %
Với mức ý nghĩa α = 0.05 và p-value = 0.8266, chúng ta chưa đủ cơ sở để bác bỏ H₀, chấp nhận H₀. Vậy kết quả cho thấy tỷ lệ chuyên gia Data Science có trình độ “Đại học” xấp xỉ 25.3 %, và với 95 % độ tin cậy, tỷ lệ thực tế nằm trong khoảng [22.7 %, 28.1 %], không có khác biệt có ý nghĩa so với giả thiết ban đầu 25 %.
Để kiểm định xem tỷ lệ chuyên gia làm việc tại khu vực Urban trong mẫu có thực sự bằng 30% hay không, tác giả tiến hành kiểm định tỉ lệ một mẫu với:
Giả thuyết kiểm định
H₀:Tỷ lệ chuyên gia làm việc tại Urban trong bộ dữ liệu là 30 % (p = 0.30).
H₁: Tỷ lệ chuyên gia làm việc tại Urban trong bộ dữ liệu khác 30 % (p ≠ 0.30).
# Đếm số chuyên gia có Location = "Urban"
n_urban <- sum(d$Location == "Urban")
# Tổng số quan sát
n_total <- nrow(d)
# Kiểm định tỉ lệ với p0 = 0.3, CI 95%, không điều chỉnh Yates
ci_urban <- prop.test(
x = n_urban,
n = n_total,
p = 0.3,
conf.level = 0.95,
correct = FALSE
)
# In kết quả kiểm định và khoảng tin cậy
print(ci_urban)
##
## 1-sample proportions test without continuity correction
##
## data: n_urban out of n_total, null probability 0.3
## X-squared = 0.47619, df = 1, p-value = 0.4902
## alternative hypothesis: true p is not equal to 0.3
## 95 percent confidence interval:
## 0.2821076 0.3393465
## sample estimates:
## p
## 0.31
Nhận xét
Thống kê kiểm định: χ² = 0.47619, df = 1
p-value = 0.4902 (> 0.05)
Khoảng tin cậy 95 % cho p: [0.2821, 0.3393]
Ước tính tỷ lệ mẫu \(\hat{p}\): 31.00 %
Với mức ý nghĩa α = 0.05 và p-value = 0.4902, chúng ta chưa đủ cơ sở để bác bỏ H₀, chấp nhận H₀. Vậy Kết quả cho thấy tỷ lệ chuyên gia làm việc tại “Urban” xấp xỉ 31 %, và với 95 % độ tin cậy, tỷ lệ thực tế nằm trong khoảng [28.21 %, 33.93 %], không có khác biệt có ý nghĩa thống kê so với giả thiết ban đầu 30 %.
Để kiểm định xem tỷ lệ chuyên gia giữ chức danh Machine Learning Engineer trong mẫu có thực sự bằng 25% hay không, tác giả thực hiện kiểm định tỉ lệ một mẫu với:
Giả thuyết kiểm định
H₀Tỷ lệ chuyên gia Machine Learning Engineer trong bộ dữ liệu là 25 % (p = 0.25).
H₁:Tỷ lệ chuyên gia Machine Learning Engineer trong bộ dữ liệu khác 25% (p ≠ 0.25).
# 1. Đếm số chuyên gia có chức danh "Machine Learning Engineer"
n_MLE <- sum(d$Job_Title == "Machine Learning Engineer")
# 2. Tổng số quan sát
n_total <- nrow(d)
# 3. Kiểm định tỉ lệ một mẫu với p0 = 0.25, CI 95%, không điều chỉnh Yates
ci_MLE <- prop.test(
x = n_MLE,
n = n_total,
p = 0.25,
conf.level = 0.95,
correct = FALSE
)
# 4. In kết quả kiểm định và khoảng tin cậy
print(ci_MLE)
##
## 1-sample proportions test without continuity correction
##
## data: n_MLE out of n_total, null probability 0.25
## X-squared = 0.64533, df = 1, p-value = 0.4218
## alternative hypothesis: true p is not equal to 0.25
## 95 percent confidence interval:
## 0.2135979 0.2663996
## sample estimates:
## p
## 0.239
Nhận xét
Thống kê kiểm định: χ² = 0.64533, df = 1
p-value = 0.4218 (> 0.05)
Khoảng tin cậy 95 % cho p: [0.2136, 0.2664]
Ước tính tỷ lệ mẫu \(\hat{p}\): 23.90 %
Với mức ý nghĩa α = 0.05 và p-value = 0.4218, chúng ta chưa đủ cơ sở để bác bỏ H₀, chấp nhận H₀. Vậy Kết quả cho thấy tỷ lệ chuyên gia Machine Learning Engineer xấp xỉ 23.9 %, và với 95 % độ tin cậy, tỷ lệ thực tế nằm trong khoảng [21.36 %, 26.64 %], không có khác biệt có ý nghĩa thống kê so với giả thiết 25 %.
Để kiểm định xem tỷ lệ chuyên gia nữ trong mẫu có thực sự bằng 50% hay không, tác giả tiến hành kiểm định tỉ lệ một mẫu với:
Giả thuyết kiểm định
H₀:Tỷ lệ chuyên gia nữ trong bộ dữ liệu là 50 % (p = 0.5).
H₁:Tỷ lệ chuyên gia nữ trong bộ dữ liệu khác 50 % (p ≠ 0.5).
# 1. Đếm số chuyên gia có Gender = "Female"
n_female <- sum(d$Gender == "Female")
# 2. Tổng số quan sát
n_total <- nrow(d)
# 3. Kiểm định tỉ lệ một mẫu với p0 = 0.50, CI 95%, không điều chỉnh Yates
ci_gender <- prop.test(
x = n_female,
n = n_total,
p = 0.50,
conf.level = 0.95,
correct = FALSE
)
# 4. In kết quả kiểm định và khoảng tin cậy
print(ci_gender)
##
## 1-sample proportions test without continuity correction
##
## data: n_female out of n_total, null probability 0.5
## X-squared = 1.024, df = 1, p-value = 0.3116
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4531466 0.5149758
## sample estimates:
## p
## 0.484
Nhận xét
Thống kê kiểm định: χ² = 1.024, df = 1
p-value = 0.3116 (> 0.05)
Khoảng tin cậy 95 % cho p: [0.4531, 0.5150]
Ước tính tỷ lệ mẫu \(\hat{p}\): 48.40 %
Với mức ý nghĩa α = 0.05 và p-value = 0.3116, chưa đủ cơ sở để bác bỏ H₀, chấp nhận H₀. Vậy Kết quả cho thấy tỷ lệ chuyên gia nữ xấp xỉ 48.4 %, và với 95 % độ tin cậy, tỷ lệ thực tế nằm trong khoảng [45.31 %, 51.50 %], không có khác biệt có ý nghĩa thống kê so với giả thiết ban đầu 50 %.
Để đánh giá xem tỷ lệ chuyên gia có mức lương High trong mẫu có thực sự đạt 50% hay không, tác giả tiến hành kiểm định tỉ lệ một mẫu với giả thiết:
Giả thuyết kiểm định
H₀:Tỷ lệ chuyên gia mức lương cao trong bộ dữ liệu là 50 % (p = 0.5).
H₁:Tỷ lệ chuyên gia mức lương cao trong bộ dữ liệu khác 50 % (p ≠ 0.5).
# 1. Đếm số chuyên gia có Salary = "hight"
n_female <- sum(d$Sal == "Hight")
# 2. Tổng số quan sát
n_total <- nrow(d)
# 3. Kiểm định tỉ lệ một mẫu với p0 = 0.50, CI 95%, không điều chỉnh Yates
ci_gender <- prop.test(
x = n_female,
n = n_total,
p = 0.50,
conf.level = 0.95,
correct = FALSE
)
# 4. In kết quả kiểm định và khoảng tin cậy
print(ci_gender)
##
## 1-sample proportions test without continuity correction
##
## data: n_female out of n_total, null probability 0.5
## X-squared = 14.4, df = 1, p-value = 0.0001478
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5290626 0.5904781
## sample estimates:
## p
## 0.56
Nhận xét
Thống kê kiểm định: χ² = 14.4, df = 1
p-value = 0.0001478 (< 0.05)
Khoảng tin cậy 95 % cho p: [0.5291, 0.5905]
Ước tính tỷ lệ mẫu \(\hat{p}\): 56.00 %
Với mức ý nghĩa α = 0.05 và p-value = 0.0001478, đủ cơ sở để bác bỏ H₀, chấp nhận H₁. Vậy Kết quả cho thấy tỉ lệ nữ chuyên gia không phải 50 %; thực tế cao hơn, ước tính khoảng 56,0 % (95 % CI: 52,9 % – 59,1 %).
Tác giả tiến hành xây dựng bảng tần số chéo giữa biến Education và Salary, sau đó vẽ biểu đồ cột tần số để minh họa số lượng chuyên gia nhận lương cao, thấp theo từng cấp bậc học vấn; tiếp đó chuyển bảng tần số thành bảng tần suất phần trăm để so sánh tỷ lệ chuyên gia nhận lương cao ở mỗi trình độ và cuối cùng trực quan hóa kết quả này dưới dạng biểu đồ tròn, giúp nhận diện rõ sự phân bổ thu nhập “High” và “Low” giữa các nhóm THPT, Đại học, Thạc sĩ và Tiến sĩ.
Bảng tần số theo từng nhóm trình độ để đánh giá mức lương của từng nhóm.
# Bảng tần số chéo giữa Sal (Lương cao/thấp) và Edu (Trình độ)
se_tab <- table(d$Sal, d$Edu) # Sal × Edu
se_tab1 <- addmargins(se_tab) # thêm tổng hàng & cột
print(se_tab1)
##
## THPT Đại học Thạc sĩ Tiến sĩ Sum
## Hight 24 92 195 249 560
## Low 231 161 46 2 440
## Sum 255 253 241 251 1000
Đồ thị tần số phân theo từng nhóm trình độ để đánh giá mức lương của từng nhóm.
# Đảm bảo biến Sal (Lương thấp/Cao) và Edu (THPT, Đại học, Thạc sĩ, Tiến sĩ) đã tồn tại
# 1. Tạo bảng tần số chéo Sal × Edu
tanso_SE <- table(d$Sal, d$Edu)
# 2. Chuyển sang định dạng dài cho ggplot
long_SE <- as.data.frame(tanso_SE)
colnames(long_SE) <- c("Sal", "Edu", "Count")
# 3. Vẽ biểu đồ cột
library(ggplot2)
ggplot(long_SE, aes(x = Sal, y = Count, fill = Edu)) +
geom_col(position = position_dodge(width = 0.8), width = 0.7) +
geom_text(aes(label = Count),
position = position_dodge(width = 0.8),
vjust = -0.5, size = 3) +
scale_fill_manual(values = c(
"THPT" = "lightgreen",
"Đại học" = "lightblue",
"Thạc sĩ" = "salmon",
"Tiến sĩ" = "plum"
)) +
labs(
title = "Phân bố mức lương theo trình độ học vấn",
x = "Mức lương",
y = "Số lượng chuyên gia",
fill = "Trình độ học vấn"
) +
theme_minimal() +
theme(
legend.position = "top",
axis.title = element_text(face = "bold"),
axis.text.x = element_text(hjust = 0.5)
)
Nhận xét
Nhóm Tiến sĩ có số chuyên gia nhận lương cao nhất (249 người), tiếp đến là Thạc sĩ (195), Đại học (92) và THPT (24).
Ở nhóm lương thấp, ngược lại: THPT chiếm đông nhất với 255 người, sau đó là Đại học (231), Thạc sĩ (161) và Tiến sĩ (46).
→ Nhìn chung, số lượng chuyên gia lương cao tăng dần theo bậc học: rất thấp ở THPT, tăng lên ở Đại học, cao hơn ở Thạc sĩ, và đạt đỉnh ở Tiến sĩ.
Bảng tần suất theo từng nhóm trình độ để đánh giá mức lương của từng nhóm.
# Bảng tần suất theo Sal (theo hàng)
se_prop <- prop.table(se_tab, margin = 1)
se_prop <- round(se_prop, 3) # làm tròn 3 chữ số
print(se_prop)
##
## THPT Đại học Thạc sĩ Tiến sĩ
## Hight 0.043 0.164 0.348 0.445
## Low 0.525 0.366 0.105 0.005
Đồ thị tần suất phân theo từng nhóm trình độ để đánh giá mức lương của từng nhóm.
# 1. Tính tần suất (%) theo hàng Sal × Edu
df_pie <- as.data.frame(prop.table(table(d$Sal, d$Edu), margin = 1) * 100)
colnames(df_pie) <- c("Sal", "Edu", "Percent")
# 2. Vẽ pie chart với nhãn % trực tiếp trên từng lát
ggplot(df_pie, aes(x = "", y = Percent, fill = Edu)) +
geom_col(color = "white", width = 1) +
coord_polar(theta = "y") +
facet_wrap(~ Sal) +
geom_text(
aes(label = paste0(round(Percent, 1), "%")),
position = position_stack(vjust = 0.5),
size = 3
) +
scale_fill_manual(values = c(
"THPT" = "lightgreen",
"Đại học" = "lightblue",
"Thạc sĩ" = "salmon",
"Tiến sĩ" = "plum"
)) +
labs(
title = "Tỷ lệ trình độ học vấn trong mỗi mức lương",
fill = "Trình độ học vấn"
) +
theme_void() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
strip.text = element_text(face = "bold", size = 12),
legend.position = "right"
)
Nhận xét
Trong số những người nhận lương cao, 44.5 % là Tiến sĩ, 34.8 % là Thạc sĩ, 16.2 % là Đại học và chỉ 4.3 % là THPT.
Ngược lại, trong nhóm lương thấp, 52.5 % có trình độ THPT, 36.6 % Đại học, 10.5 % Thạc sĩ và chỉ 0.5 % Tiến sĩ.
→ Điều này khẳng định rõ: càng có học vị cao, tỷ lệ nhận lương cao càng lớn, và ngược lại đa số chuyên gia THPT rơi vào nhóm lương thấp.
Để kiểm định xem có mối liên hệ giữa trình độ học vấn và tình trạng lương hay không, tác giả áp dụng kiểm định Chi-square trên bảng tần số chéo tanso_SE với giả thiết:
Giả thuyết kiểm định:
# Kiểm định Chi-square
chi_edu <- chisq.test(tanso_SE)
print(chi_edu)
##
## Pearson's Chi-squared test
##
## data: tanso_SE
## X-squared = 515.05, df = 3, p-value < 2.2e-16
Nhận xét
Thống kê kiểm định: χ² = 43.567 với bậc tự do df = 3.
Giá trị p-value: 1.865e-09 (rất nhỏ)
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có mối liên hệ có ý nghĩa thống kê giữa trình độ học vấn và tình trạng mức lương.
Tác giả ước lượng tỷ lệ chuyên gia trình độ Đại học nhận mức lương thấp (Low) bằng kiểm định tỉ lệ một mẫu, đồng thời tính khoảng tin cậy 95% để đánh giá độ tin cậy của kết quả.
Giả thuyết kiểm định:
H₀: Tỉ lệ chuyên gia có nhóm lương thấp trong nhóm đại học bằng 50% (p = 0,5).
H₁: Tỉ lệ chuyên gia có nhóm lương thấp trong nhóm đại học khác 50% (p ≠ 0,5).
# Đếm số và tổng số
x <- sum(d$Edu == "Đại học" & d$Sal == "Low")
N <- sum(d$Edu == "Đại học")
# Kiểm định tỉ lệ một mẫu p0 = 0.5, CI 95%
ci <- prop.test(x, N, p = 0.5, conf.level = 0.95, correct = FALSE)
print(ci)
##
## 1-sample proportions test without continuity correction
##
## data: x out of N, null probability 0.5
## X-squared = 18.818, df = 1, p-value = 1.438e-05
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5754584 0.6931899
## sample estimates:
## p
## 0.6363636
Nhận xét
Thống kê kiểm định: χ² = 18.818 với bậc tự do df = 1.
Giá trị p-value: 1.438e-05 (rất nhỏ)
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy tỉ lệ chuyên gia Đại học có mức lương thấp không phải 50% mà thực tế cao hơn, ước tính khoảng 63,6% (95% CI: 57,6 % – 69,3 %).
Tiếp đến, tác giả ước lượng tỷ lệ chuyên gia trình độ Đại học nhận mức lương cao (High) theo cùng phương pháp, nhằm xác định tỷ lệ thực tế trong mẫu và so sánh với ngưỡng kỳ vọng.
Giả thuyết kiểm định:
H₀: Tỉ lệ chuyên gia có nhóm lương cao trong nhóm đại học bằng 50% (p = 0,5).
H₁: Tỉ lệ chuyên gia có nhóm lương cao trong nhóm đại học khác 50% (p ≠ 0,5).
# Đếm số và tổng số
y <- sum(d$Edu == "Đại học" & d$Sal == "Hight")
# Kiểm định tỉ lệ một mẫu p0 = 0.5, CI 95%
ci <- prop.test(y, N, p = 0.5, conf.level = 0.95, correct = FALSE)
print(ci)
##
## 1-sample proportions test without continuity correction
##
## data: y out of N, null probability 0.5
## X-squared = 18.818, df = 1, p-value = 1.438e-05
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.3068101 0.4245416
## sample estimates:
## p
## 0.3636364
Nhận xét
Thống kê kiểm định: χ² = 18.818 với bậc tự do df = 1.
Giá trị p-value: 1.438e-05 (rất nhỏ)
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy tỉ lệ chuyên gia Đại học có mức lương cao thực tế không phải 50% mà thấp hơn, ước tính khoảng 36,4% (95 % CI: 30,7 % – 42,5 %).
Trước hết, định nghĩa Risk Difference giữa hai nhóm là:
\[ D = p_1 - p_2, \]
với điểm ước lượng:
\[ \hat{D} = \hat{p}_1 - \hat{p}_2 = \frac{n_{11}}{n_{1.}} - \frac{n_{21}}{n_{2.}}. \]
Sai số chuẩn của \(\hat{D}\) được tính theo công thức:
\[ SE(\hat{D}) = \sqrt{ \frac{ \hat{p}_1 (1 - \hat{p}_1) }{n_{1.}} + \frac{ \hat{p}_2 (1 - \hat{p}_2) }{n_{2.}} }, \]
và khoảng tin cậy 95% cho \(D\) là:
\[ \hat{D} \pm z_{\alpha/2} \times SE(\hat{D}), \quad z_{\alpha/2} \approx 1.96. \]
Áp dụng công thức trên, tác giả thực hiện bốn kiểm định chênh lệch tỉ lệ giữa hai phân nhóm “lương thấp” và “lương cao” tương ứng cho từng mức Education (THPT, Đại học, Thạc sĩ, Tiến sĩ), đồng thời ước lượng và so sánh khoảng tin cậy 95% của mỗi giá trị \(\hat{D}\) để đánh giá mức độ khác biệt tỉ lệ nhận lương giữa hai nhóm trong mỗi trình độ học vấn.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có trình độ THPT trong nhóm lương thấp bằng tỷ lệ chuyên gia có trình độ THPT trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia THPT giữa hai nhóm lương)
# Đếm số chuyên gia THPT trong nhóm Low và Hight
x1 <- sum(d$Edu == "THPT" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$Edu == "THPT" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference) cho THPT
rd_THPT <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_THPT)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 301.51, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.4325588 0.5317269
## sample estimates:
## prop 1 prop 2
## 0.52500000 0.04285714
Nhận xét
Thống kê kiểm định: χ² = 301.51 với bậc tự do df = 1.
p-value = 2.2×10⁻¹⁶ (rất nhỏ).
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂): [0.4326; 0.5317].
Ước tính tỉ lệ mẫu:
p₁ (THPT trong nhóm lương thấp) = 53,17%
p₂ (THPT trong nhóm lương cao) = 43,26%
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia trình độ THPT ở hai nhóm lương và tỉ lệ THPT trong nhóm lương thấp cao hơn nhóm lương cao khoảng 9.91%.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có trình độ Đại học trong nhóm lương thấp bằng tỷ lệ chuyên gia có trình độ Đại học trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia Đại học giữa hai nhóm lương)
# Đếm số chuyên gia ĐH trong nhóm Low và Hight
x1 <- sum(d$Edu == "Đại học" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$Edu == "Đại học" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference)
rd_Đaihoc <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_Đaihoc)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 53.001, df = 1, p-value = 3.334e-13
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.1471488 0.2560980
## sample estimates:
## prop 1 prop 2
## 0.3659091 0.1642857
Nhận xét
Thống kê kiểm định: χ² = 53.001 với bậc tự do df = 1.
p-value = 3.334e-13⁶ (rất nhỏ).
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[0.1471; 0.2561].
Ước tính tỉ lệ mẫu:
p₁ (Đại học trong nhóm lương thấp) = 36,59 %
p₂ (Đại học trong nhóm lương cao) = 16,43 %
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia trình độ Đại học ở hai nhóm lương và tỉ lệ Đại học trong nhóm lương thấp cao hơn nhóm lương cao khoảng 20,17%.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có trình độ Thạc sĩ trong nhóm lương thấp bằng tỷ lệ chuyên gia có trình Thạc sĩ học trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia Thạc sĩ giữa hai nhóm lương)
# Đếm số chuyên gia ThS trong nhóm Low và Hight
x1 <- sum(d$Edu == "Thạc sĩ" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$Edu == "Thạc sĩ" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference)
rd_Thacsi <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_Thacsi)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 79.98, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.2923948 -0.1949429
## sample estimates:
## prop 1 prop 2
## 0.1045455 0.3482143
Nhận xét
Thống kê kiểm định: χ² = 79.98 với bậc tự do df = 1.
p-value = 2.2e-16 (rất nhỏ).
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[−0.2924; −0.1949].
Ước tính tỉ lệ mẫu:
p₁ (Thạc sĩ trong nhóm lương thấp) = 10,45 %
p₂ (Thạc sĩ trong nhóm lương cao) = 34,82 %
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia trình độ Thạc sĩ ở hai nhóm lương và tỉ lệ Thạc sĩ trong nhóm lương cao cao hơn nhóm lương thấp khoảng 24,37%.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có trình độ Tiến sĩ trong nhóm lương thấp bằng tỷ lệ chuyên gia có trình độ Tiến sĩ trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia Tiến sĩ giữa hai nhóm lương)
# Đếm số chuyên gia TS trong nhóm Low và Hight
x1 <- sum(d$Edu == "Tiến sĩ" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$Edu == "Tiến sĩ" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference)
rd_Tiensi <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_Tiensi)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 253.85, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.4817318 -0.3984630
## sample estimates:
## prop 1 prop 2
## 0.004545455 0.444642857
Nhận xét
Thống kê kiểm định: χ² = 253.85 với bậc tự do df = 1.
p-value = 2.2e-16 (rất nhỏ).
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[-0.48174; -0.3985].
Ước tính tỉ lệ mẫu:
p₁ (Tiến sĩ trong nhóm lương thấp) = 0,45 %
p₂ (Tiến sĩ trong nhóm lương cao) = 44,46 %
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia trình độ Tiến sĩ ở hai nhóm lương và tỉ lệ Tiến sĩ trong nhóm lương cao cao hơn nhóm lương thấp khoảng 44%.
Để đánh giá mức độ gia tăng (hay giảm) nguy cơ nhận lương cao trong mỗi nhóm trình độ so với nhóm đối chiếu, tác giả sử dụng hệ số Tỷ số nguy cơ (Relative Risk, RR), được định nghĩa là:
\[ RR = \frac{p_1}{p_2}, \]
trong đó \(p_1\) là tỷ lệ nhận lương cao ở nhóm xét và \(p_2\) là tỷ lệ nhận lương cao ở nhóm đối chiếu. Điểm ước lượng của \(RR\) là:
\[ \widehat{RR} = \frac{\hat{p}_1}{\hat{p}_2} = \frac{n_{11}/n_{1.}}{n_{21}/n_{2.}}. \]
Vì phân phối của \(\widehat{RR}\) thường lệch, tác giả làm việc với \(\log(\widehat{RR})\), có sai số chuẩn:
\[ SE\left( \log(\widehat{RR}) \right) = \sqrt{ \frac{1 - \hat{p}_1}{n_{11} \hat{p}_1} + \frac{1 - \hat{p}_2}{n_{21} \hat{p}_2} }, \]
và xây dựng khoảng tin cậy 95% cho \(\log(RR)\) theo công thức:
\[ \log(\widehat{RR}) \pm z_{\alpha/2} \cdot SE\left( \log(\widehat{RR}) \right), \quad z_{\alpha/2} \approx 1.96, \]
sau đó lấy mũ để thu được khoảng tin cậy (CI) cho \(RR\).
Áp dụng công thức trên, tác giả thực hiện lần lượt bốn kiểm định RR giữa nhóm nhận lương cao và nhóm lương thấp cho từng mức Education (THPT, Đại học, Thạc sĩ, Tiến sĩ), ước lượng \(\widehat{RR}\) và khoảng tin cậy 95% nhằm xác định xem nguy cơ nhận lương cao khác biệt có ý nghĩa thống kê giữa các nhóm học vấn hay không.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về trình độ học vấn THPT ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về trình độ học vấn THPT ở nhóm mức lương thấp và mức lương cao).
# Tạo bảng 2×2 giữa Sal và THPT
tab_rr1 <- table(d$Sal, d$Edu == "THPT")
# Đặt tên rõ ràng
colnames(tab_rr1) <- c("NonTHPT", "THPT")
rownames(tab_rr1) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_thpt <- riskratio(tab_rr1)
print(rr_thpt)
## $data
##
## NonTHPT THPT Total
## Low 536 24 560
## Hight 209 231 440
## Total 745 255 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.00 NA NA
## Hight 12.25 8.200156 18.29996
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0 5.356482e-73 1.547757e-67
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho trình độ học vấn THPT ở nhóm lương cao so với nhóm lương thấp là 12.25.
p-value = 5.36×10⁻⁷³ (rất nhỏ).
Khoảng tin cậy 95% cho RR:[8.20; 18.30].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia trình độ THPT giữa hai nhóm lương, cụ thể: người có trình độ THPT có nguy cơ nằm trong nhóm lương cao gấp 12.25 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về trình độ học vấn Đại học ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về trình độ học vấn Đại học ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và trình độ "Đại học"
tab_rr2 <- table(d$Sal, d$Edu == "Đại học")
colnames(tab_rr2) <- c("NonBachelor", "Bachelor")
rownames(tab_rr2) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_Đaihoc <- riskratio(tab_rr2)
print(rr_Đaihoc)
## $data
##
## NonBachelor Bachelor Total
## Low 468 92 560
## Hight 279 161 440
## Total 747 253 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 2.227273 1.780895 2.785534
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 3.903544e-13 4.246869e-13 3.334349e-13
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho trình độ học vấn Đại học ở nhóm lương cao so với nhóm lương thấp là 12.25.
p-value = 3.9035×10⁻¹³ (rất nhỏ).
Khoảng tin cậy 95% cho RR:[1.7809; 2.7855].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia trình độ Đại học giữa hai nhóm lương, cụ thể: người có bằng Đại học có nguy cơ nằm trong nhóm lương cao gấp 2.227 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về trình độ học vấn Thạc sĩ ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về trình độ học vấn Thạc sĩ ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và trình độ "Thạc sĩ"
tab_rr3 <- table(d$Sal, d$Edu == "Thạc sĩ")
colnames(tab_rr3) <- c("NonMaster", "Master")
rownames(tab_rr3) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_Thacsi <- riskratio(tab_rr3)
print(rr_Thacsi)
## $data
##
## NonMaster Master Total
## Low 365 195 560
## Hight 394 46 440
## Total 759 241 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.0000000 NA NA
## Hight 0.3002331 0.2233083 0.4036568
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0 4.257498e-20 3.782031e-19
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho trình độ học vấn Thạc sĩ ở nhóm lương cao so với nhóm lương thấp là 0.3002.
p-value = 4.2575×10⁻²⁰ (rất nhỏ).
Khoảng tin cậy 95% cho RR:[0.2233; 0.4037].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia trình độ Thạc sĩ giữa hai nhóm lương, cụ thể: người có bằng Thạc sĩ có nguy cơ nằm trong nhóm lương cao gấp 0.30 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về trình độ học vấn Tiến sĩ ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về trình độ học vấn Tiến sĩ ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và trình độ "Tiến sĩ"
tab_rr4 <- table(d$Sal, d$Edu == "Tiến sĩ")
colnames(tab_rr4) <- c("NonPhD", "PhD")
rownames(tab_rr4) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_Tiensi <- riskratio(tab_rr4)
print(rr_Tiensi)
## $data
##
## NonPhD PhD Total
## Low 311 249 560
## Hight 438 2 440
## Total 749 251 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.00000000 NA NA
## Hight 0.01022271 0.002556826 0.04087247
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0 3.678552e-73 3.75332e-57
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho trình độ học vấn Tiến sĩ ở nhóm lương cao so với nhóm lương thấp là 0.01022.
p-value = 3.7533×10⁻⁵⁷ (rất nhỏ).
Khoảng tin cậy 95% cho RR:[0.00256; 0.04087].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia trình độ Tiến sĩ giữa hai nhóm lương, cụ thể: người có trình độ Tiến sĩ có nguy cơ nằm trong nhóm lương cao gấp 0.0102 lần so với nhóm lương thấp.
Trước hết, xác định odds của việc nhận lương cao (“High”) trong mỗi nhóm như:
\[ \text{Odds}_1 = \frac{p_1}{1 - p_1} \quad \text{và} \quad \text{Odds}_2 = \frac{p_2}{1 - p_2}, \]
trong đó \(p_1\) là tỉ lệ nhận lương cao ở nhóm xét (ví dụ “THPT”, “Đại học”, “Thạc sĩ”, …) và \(p_2\) là tỉ lệ nhận lương cao ở nhóm đối chiếu.
Tỷ số chênh (Odds Ratio, OR) được định nghĩa là:
\[ OR = \frac{\text{Odds}_1}{\text{Odds}_2} = \frac{ \frac{p_1}{1 - p_1} }{ \frac{p_2}{1 - p_2} } = \frac{n_{11} \cdot n_{22}}{n_{12} \cdot n_{21}}, \]
với \(n_{11}\) là số cá thể nhận lương cao ở nhóm 1, \(n_{12}\) là số cá thể nhận lương thấp ở nhóm 1, $n_{21}, n_{22} $ tương tự cho nhóm 2.
Điểm ước lượng OR trong mẫu là:
\[ \widehat{OR} = \frac{ \hat{p}_1 / (1 - \hat{p}_1) }{ \hat{p}_2 / (1 - \hat{p}_2) } = \frac{n_{11} \cdot n_{22}}{n_{12} \cdot n_{21}}. \]
Vì phân phối của \(\widehat{OR}\) rất lệch, ta thường làm việc với $ () $, có sai số chuẩn được tính bằng:
\[ SE(\log \widehat{OR}) = \sqrt{ \frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}} }, \]
và khoảng tin cậy 95% cho \(log(OR)\) là:
\[ \log(\widehat{OR}) \pm z_{\alpha/2} \cdot SE(\log \widehat{OR}), \quad z_{\alpha/2} \approx 1.96, \]
sau đó lấy mũ để thu được khoảng tin cậy (CI) cho \(OR\).
Áp dụng công thức trên, tác giả thực hiện bốn kiểm định Odds Ratio giữa nhóm nhận lương cao và nhóm nhận lương thấp cho từng mức Education (THPT, Đại học, Thạc sĩ, Tiến sĩ), ước lượng \(\widehat{OR}\) và khoảng tin cậy 95% nhằm đánh giá xem odds nhận lương cao có khác biệt có ý nghĩa thống kê giữa từng cấp bậc học vấn hay không.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có trình độ THPT ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có trình độ THPT ở nhóm mức lương thấp và mức lương cao).
# Tính Odds Ratio cho THPT, sử dụng tab_rr đã tạo ở phần RR
library(epitools)
or_THPT <- oddsratio(tab_rr1)
print(or_THPT)
## $data
##
## NonTHPT THPT Total
## Low 536 24 560
## Hight 209 231 440
## Total 745 255 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.0000 NA NA
## Hight 24.4614 15.89802 39.32273
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0 5.356482e-73 1.547757e-67
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho trình độ học vấn THPT ở nhóm lương cao so với nhóm lương thấp là 24.4614.
p-value = 5.3565×10⁻⁷³ (rất nhỏ).
Khoảng tin cậy 95% cho OR:[15.8980; 39.3227]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia trình độ THPT giữa hai nhóm lương, cụ thể: odds có THPT ở nhóm lương cao gấp 24.46 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có trình độ Đại học ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có trình độ Đại học ở nhóm mức lương thấp và mức lương cao).
# Odds Ratio cho Đại học
or_Daihoc <- oddsratio(tab_rr2)
print(or_Daihoc)
## $data
##
## NonBachelor Bachelor Total
## Low 468 92 560
## Hight 279 161 440
## Total 747 253 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 2.930308 2.183768 3.951281
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 3.903544e-13 4.246869e-13 3.334349e-13
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho trình độ học vấn Đại học ở nhóm lương cao so với nhóm lương thấp là 2.9303.
p-value = 3.9035×10⁻¹³ (rất nhỏ).
Khoảng tin cậy 95% cho OR:[2.1838; 3.9513]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia tốt nghiệp Đại học giữa hai nhóm lương, cụ thể: odds có bằng Đại học ở nhóm lương cao gấp 2.93 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có trình độ Thạc sĩ ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có trình độ Thạc sĩ ở nhóm mức lương thấp và mức lương cao).
# Odds Ratio cho Thạc sĩ
or_Thacsi <- oddsratio(tab_rr3)
print(or_Thacsi)
## $data
##
## NonMaster Master Total
## Low 365 195 560
## Hight 394 46 440
## Total 759 241 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.0000000 NA NA
## Hight 0.2193636 0.1527854 0.3092916
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0 4.257498e-20 3.782031e-19
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho trình độ học vấn Thạc sĩ ở nhóm lương cao so với nhóm lương thấp là 0.2194.
p-value = 4.2575×10⁻²⁰ (rất nhỏ).
Khoảng tin cậy 95% cho OR:[0.1528; 0.3093]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia trình độ Thạc sĩ giữa hai nhóm lương, cụ thể: odds có bằng Thạc sĩ ở nhóm lương cao gấp 0.22 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có trình độ Tiến sĩ ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có trình độ Tiến sĩ ở nhóm mức lương thấp và mức lương cao).
# Odds Ratio cho Tiến sĩ
or_Tiênsi <- oddsratio(tab_rr4)
print(or_Tiênsi)
## $data
##
## NonPhD PhD Total
## Low 311 249 560
## Hight 438 2 440
## Total 749 251 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.000000000 NA NA
## Hight 0.006160339 0.0009557948 0.01929281
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0 3.678552e-73 3.75332e-57
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho trình độ học vấn Tiến sĩ ở nhóm lương cao so với nhóm lương thấp là 0.00616.
p-value = 3.7533×10⁻⁵⁷ (rất nhỏ).
Khoảng tin cậy 95% cho OR:[0.000956; 0.01929]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia trình độ Tiến sĩ giữa hai nhóm lương, cụ thể: odds có bằng Tiến sĩ ở nhóm lương cao gấp 0.00616 lần so với nhóm lương thấp.
Thực hiện hồi quy xác suất tuyến tính giữa biến độc lập là trình độ học vấn và biến phụ thuộc là lương. Tuy nhiên trong phần này ta cần thay đổi biến sal thành biến nhị phân với giá trị 1 tương ứng với mức lương cao, ngược lại giá trị 0 tương ứng với mức lương thấp.
# Tạo biến nhị phân Sal2: 1 nếu lương cao ("Hight"), ngược lại 0
d$Sal2 <- ifelse(d$Sal == "Hight", 1, 0)
# Chuyển Edu thành factor với thứ tự THPT → Đại học → Thạc sĩ → Tiến sĩ
d$Edu <- factor(d$Edu, levels = c("THPT", "Đại học", "Thạc sĩ", "Tiến sĩ"))
# Xây dựng mô hình hồi quy xác suất tuyến tính (Linear Probability Model)
lpm_Edu <- lm(Sal2 ~ Edu, data = d)
# Hiển thị tóm tắt kết quả
summary(lpm_Edu)
##
## Call:
## lm(formula = Sal2 ~ Edu, data = d)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.99203 -0.09412 0.00797 0.19087 0.90588
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.09412 0.02169 4.339 1.58e-05 ***
## EduĐại học 0.26952 0.03074 8.769 < 2e-16 ***
## EduThạc sĩ 0.71501 0.03112 22.978 < 2e-16 ***
## EduTiến sĩ 0.89791 0.03080 29.156 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3464 on 996 degrees of freedom
## Multiple R-squared: 0.5151, Adjusted R-squared: 0.5136
## F-statistic: 352.6 on 3 and 996 DF, p-value: < 2.2e-16
Nhận xét
\[ \hat{\pi} = 0.09412 + 0.26952\,\text{Đại học} + 0.71501\,\text{Thạc sĩ} + 0.89791\,\text{Tiến sĩ} \]
Ý nghĩa thống kê:
Đây là xác suất nhận lương cao đối với nhóm tham chiếu (THPT): khoảng 9,4 %.
So với THPT, tốt nghiệp Đại học làm xác suất nhận lương cao tăng thêm 27,0 %.
Như vậy, người có bằng Đại học có khoảng 9,4 + 27,0 = 36,4 % cơ hội nhận mức lương cao.
So với THPT, tốt nghiệp Thạc sĩ làm xác suất nhận lương cao tăng thêm 71,5 %.
Nhóm này có khoảng 9,4 + 71,5 = 80,9 % cơ hội nhận mức lương cao.
So với THPT, chuyên gia có học vị Tiến sĩ làm xác suất nhận lương cao
tăng thêm 89,8 %.
Nhóm Tiến sĩ có khoảng 9,4 + 89,8 = 99,2 % cơ hội nhận mức lương
cao.
Tất cả các hệ số đều có p-value cực kỳ nhỏ, khẳng định ý nghĩa thống kê rất mạnh.
Trình độ học vấn ảnh hưởng mạnh mẽ đến xác suất nhận lương cao: từ 9,4 % (THPT), lên 36,4 % (Đại học), 80,9 % (Thạc sĩ) và 99,2 % (Tiến sĩ).
# Xây dựng mô hình logistic (Logit)
logit_Edu <- glm(Sal2 ~ Edu, data = d, family = binomial(link = "logit"))
# Hiển thị tóm tắt kết quả
summary(logit_Edu)
##
## Call:
## glm(formula = Sal2 ~ Edu, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.2644 0.2145 -10.558 < 2e-16 ***
## EduĐại học 1.7047 0.2512 6.788 1.14e-11 ***
## EduThạc sĩ 3.7087 0.2699 13.739 < 2e-16 ***
## EduTiến sĩ 7.0887 0.7416 9.559 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.86 on 999 degrees of freedom
## Residual deviance: 749.06 on 996 degrees of freedom
## AIC: 757.06
##
## Number of Fisher Scoring iterations: 7
Nhận xét
Ta có kết quả ước lượng từ mô hình Logit như sau:
\[ \ln \left( \frac{\hat{\pi}}{1 - \hat{\pi}} \right) = −2.2644 +1.70471\,\text{Đại học} + +3.70871\,\text{Thạc sĩ} + 19{,}3678\,\text{Tiến sĩ} \]
Intercept \(\hat{\beta}_0 = −2.2644\)
Đây là log-odds nhận lương cao cho nhóm THPT (tham chiếu).Chuyển về
xác suất:
\[
p = \frac{e^{-2.2644}}{1 + e^{-2.2644}} \approx 9{,}4\%\] Nhóm
THPT có khoảng 9,4 % cơ hội nhận mức lương cao.
Đại học \(\hat{\beta}_1 = 1.7047\)
So với THPT, log-odds nhận lương cao tăng thêm 1,7047.Tương đương xác
suất:
\[
p = \frac{e^{−2.2644+1.7047}}{1 + e^{−2.2644+1.7047}} \approx 36,4\%.
\] Chuyên gia tốt nghiệp Đại học có khoảng 36,4 % cơ hội nhận
lương cao.
Thạc sĩ \(\hat{\beta}_2 = 3.7087\)
So với THPT, log-odds tăng thêm 3,7087.
Chuyển thành xác suất:
\[
p = \frac{e^{−2.2644+3.7087}}{1 + e^{−2.2644+3.7087}} \approx 81,0\%.
\] Chuyên gia có bằng Thạc sĩ có khoảng 81,0 % cơ hội nhận
lương cao.
Tiến sĩ \(\hat{\beta}_3 = 7.0887\)
Log-odds tăng rất mạnh 7,0887 so với THPT. Khi chuyển về xác
suất:
\[
p = \frac{e^{−2.2644+7.0887}}{1 + e^{−2.2644+7.0887}} \approx 99,2\%.
\]
Chuyên gia Tiến sĩ có gần như chắc chắn (99,2 %) nhận mức lương
cao.
Tất cả các hệ số đều có p-value < 2×10⁻¹⁶, khẳng định ý nghĩa thống kê rất mạnh.
Vậy Xác suất nhận lương cao tăng dần theo học vị: THPT (9,4 %) → Đại học (36,4 %) → Thạc sĩ (81,0 %) → Tiến sĩ (99,2 %). Điều này chứng tỏ trình độ học vấn là nhân tố quyết định cơ hội thu nhập cao.
# Xây dựng mô hình Probit
probit_Edu <- glm(Sal2 ~ Edu, data = d, family = binomial(link = "probit"))
# Hiển thị tóm tắt kết quả
summary(probit_Edu)
##
## Call:
## glm(formula = Sal2 ~ Edu, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.3158 0.1089 -12.079 < 2e-16 ***
## EduĐại học 0.9671 0.1355 7.138 9.49e-13 ***
## EduThạc sĩ 2.1905 0.1432 15.292 < 2e-16 ***
## EduTiến sĩ 3.7262 0.2791 13.353 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.86 on 999 degrees of freedom
## Residual deviance: 749.06 on 996 degrees of freedom
## AIC: 757.06
##
## Number of Fisher Scoring iterations: 7
Nhận xét
\[ \Phi^{-1}(\hat\pi) = -1.3158 \;+\;0.9671\,\mathrm{\,\ Đại\ học} \;+\;2.1905\,\mathrm{\,\ Thạc\ sĩ} \;+\;3.7262\,\mathrm{\,\ Tiến\ sĩ} \]
\(\displaystyle \hat\beta_0 = -1.3158\) (p < 2e-16)
Đây là giá trị \(z\) của hàm phân
phối chuẩn nghịch đảo (probit) cho nhóm THPT.
Quy ra xác suất: \[
p_{\text{THPT}}
= \Phi(-1.3158)
\approx 0.094 \quad(9{,}4\%)
\]
\(\displaystyle \hat\beta_1 = 0.9671\) (p < 2e-16)
Chuyển từ THPT lên Đại học làm giá trị \(z\) tăng 0.9671.
Khi đó \(z = -1.3158 + 0.9671 =
-0.3487\), và
\[
p_{\text{Đại học}}
= \Phi(-0.3487)
\approx 0.363 \quad(36{,}3\%)
\]
\(\displaystyle \hat\beta_2 = 2.1905\) (p < 2e-16)
Chuyển từ THPT lên Thạc sĩ làm \(z\)
tăng 2.1905.
Khi đó \(z = -1.3158 + 2.1905 =
0.8747\), và
\[
p_{\text{Thạc sĩ}}
= \Phi(0.8747)
\approx 0.808 \quad(80{,}8\%)
\]
\(\displaystyle \hat\beta_3 = 3.7262\) (p < 2e-16)
Chuyển từ THPT lên Tiến sĩ làm \(z\)
tăng 3.7262.
Khi đó \(z = -1.3158 + 3.7262 =
2.4104\), và
\[
p_{\text{Tiến sĩ}}
= \Phi(2.4104)
\approx 0.992 \quad(99{,}2\%)
\]
Vậy Mô hình Probit cho kết quả tương tự với Logit: xác suất nhận lương cao tăng dần theo học vị—từ 9,4 % ở THPT, lên 36,3 % (Đại học), 80,8 % (Thạc sĩ) và gần như chắc chắn 99,2 % (Tiến sĩ). Tất cả các hệ số đều cực kỳ có ý nghĩa thống kê.
# Xây dựng mô hình Cloglog
cloglog_Edu <- glm(Sal2 ~ Edu, data = d, family = binomial(link = "cloglog"))
# Hiển thị tóm tắt kết quả
summary(cloglog_Edu)
##
## Call:
## glm(formula = Sal2 ~ Edu, family = binomial(link = "cloglog"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.3142 0.2042 -11.333 < 2e-16 ***
## EduĐại học 1.5201 0.2297 6.618 3.64e-11 ***
## EduThạc sĩ 2.8187 0.2193 12.850 < 2e-16 ***
## EduTiến sĩ 3.8895 0.2509 15.504 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.86 on 999 degrees of freedom
## Residual deviance: 749.06 on 996 degrees of freedom
## AIC: 757.06
##
## Number of Fisher Scoring iterations: 6
Nhận xét
\[ \log\bigl(-\log(1 - \hat\pi)\bigr) = -2.3142 \;+\;1.5201\,\mathrm{\,\ Đại\ học} \;+\;2.8187\,\mathrm{\,\ Thạc\ sĩ} \;+\;3.8895\,\mathrm{\,\ Tiến\ sĩ} \]
\(\displaystyle \hat\beta_0 = -2.3142\) (p < 2e-16)
Đây là giá trị cloglog cho nhóm THPT (tham chiếu). Quy về xác suất: \[ 1 - \exp\bigl(-\exp(-2.3142)\bigr) \approx 9{,}4\% \] Nhóm THPT có khoảng 9,4 % cơ hội nhận lương cao.
\(\displaystyle \hat\beta_1 = 1.5201\) (p < 2e-16)
Tốt nghiệp Đại học làm cloglog tăng thêm 1.5201,
tức
\[
\log\bigl(-\log(1 - \pi)\bigr)
= -2.3142 + 1.5201 = -0.7941
\quad\Longrightarrow\quad
\pi \approx 36{,}4\%.
\]
\((\displaystyle \hat\beta_2 = 2.8187\) (p < 2e-16)
Tốt nghiệp Thạc sĩ làm cloglog tăng thêm 2.8187,
tức
\[
\log\bigl(-\log(1 - \pi)\bigr)
= -2.3142 + 2.8187 = 0.5045
\quad\Longrightarrow\quad
\pi \approx 80{,}9\%.
\]
\(\displaystyle \hat\beta_3 = 3.8895\) (p < 2e-16)
Có Tiến sĩ làm cloglog tăng thêm 3.8895,
tức
\[
\log\bigl(-\log(1 - \pi)\bigr)
= -2.3142 + 3.8895 = 1.5753
\quad\Longrightarrow\quad
\pi \approx 99{,}2\%.
\]
Vậy Xác suất nhận lương cao tăng rõ rệt theo học vị: THPT (~9,4 %) → Đại học (~36,4 %) → Thạc sĩ (~80,9 %) → Tiến sĩ (~99,2 %). Mỗi hệ số đều có p-value < 2×10⁻¹⁶, khẳng định mức độ ảnh hưởng rất mạnh của học vấn.
AIC (Akaike Information Criterion) là một tiêu chí quan trọng để đánh giá mức độ phù hợp của các mô hình thống kê, đồng thời penalize (phạt) các mô hình phức tạp nhằm tránh overfitting. Theo nguyên tắc, mô hình có giá trị AIC, BIC càng nhỏ thì được coi là càng phù hợp với dữ liệu.
# Tính AIC cho các mô hình trình độ học vấn
aic_values <- data.frame(
Model = c("LPM_Edu", "Logit_Edu", "Probit_Edu", "Cloglog_Edu"),
AIC = c(
AIC(lpm_Edu),
AIC(logit_Edu),
AIC(probit_Edu),
AIC(cloglog_Edu)
)
)
print(aic_values)
## Model AIC
## 1 LPM_Edu 723.3596
## 2 Logit_Edu 757.0551
## 3 Probit_Edu 757.0551
## 4 Cloglog_Edu 757.0551
# So sánh BIC cho các mô hình trình độ học vấn
bic_values <- data.frame(
Model = c("LPM_Edu", "Logit_Edu", "Probit_Edu", "Cloglog_Edu"),
BIC = c(
BIC(lpm_Edu),
BIC(logit_Edu),
BIC(probit_Edu),
BIC(cloglog_Edu)
)
)
print(bic_values)
## Model BIC
## 1 LPM_Edu 747.8984
## 2 Logit_Edu 776.6862
## 3 Probit_Edu 776.6862
## 4 Cloglog_Edu 776.6862
Nhận xét
Trong số bốn mô hình, LPM_Edu là mô hình có AIC, BIC nhỏ nhất lần lượt là 723.36, 747.89, cho thấy nó phù hợp dữ liệu hơn các mô hình phân loại (Logit, Probit, Cloglog) chỉ xét yếu tố học vấn.
Ba mô hình Logit, Probit và Cloglog đều có AIC xấp xỉ 757.06 và BIC xấp xỉ 776.69, nghĩa là chúng tương đương nhau về độ phù hợp.
Vậy về phương diện AIC và BIC mô hình xác suất tuyến tính (LPM) ưu việt hơn.
Brier Score là một chỉ số đánh giá mức độ chính xác của mô hình dự báo xác suất đối với biến nhị phân. Chỉ số này phản ánh trung bình bình phương sai số giữa xác suất dự báo và thực tế (giá trị thực là 0 hoặc 1).
Giá trị Brier Score càng nhỏ càng tốt, với giá trị nhỏ nhất là 0 (dự báo hoàn hảo) và lớn nhất là 1 (dự báo hoàn toàn sai)
# Tính Brier Score cho các mô hình LPM, Logit và Probit trên Edu
# 1. Dự đoán xác suất
pred_lpm <- predict(lpm_Edu) # LPM cho ra giá trị 0–1 gần đúng
pred_logit <- predict(logit_Edu, type = "response") # Logit
pred_probit<- predict(probit_Edu, type = "response") # Probit
pred_cloglog <- predict(cloglog_Edu, type = "response") # Cloglog
# 2. Tính Brier Score = trung bình bình phương sai số
brier_lpm <- mean((pred_lpm - d$Sal2)^2)
brier_logit <- mean((pred_logit - d$Sal2)^2)
brier_probit <- mean((pred_probit - d$Sal2)^2)
brier_cloglog <- mean((pred_cloglog - d$Sal2)^2)
# 3. Tổng hợp và in kết quả
brier_results <- data.frame(
Model = c("LPM_Edu", "Logit_Edu", "Probit_Edu", "Cloglog_Edu"),
Brier_Score = c(brier_lpm, brier_logit, brier_probit, brier_cloglog)
)
print(brier_results)
## Model Brier_Score
## 1 LPM_Edu 0.1194906
## 2 Logit_Edu 0.1194906
## 3 Probit_Edu 0.1194906
## 4 Cloglog_Edu 0.1194906
Nhận xét
Khi chỉ xét biến học vấn, cả bốn mô hình đều đạt Brier Score = 0.11949, cho thấy độ chính xác dự báo xác suất nhận lương cao là tương đương.
Không có mô hình nào vượt trội về khả năng đánh giá xác suất.
# 1. Dự đoán xác suất từ mô hình lpm
prob_pred <- predict(lpm_Edu, type = "response")
# 2. Phân loại dựa trên ngưỡng 0.5
class_pred <- ifelse(prob_pred >= 0.5, 1, 0)
# 3. Tạo ma trận nhầm lẫn
Conf(table(Prediction = class_pred, Actual = d$Sal2))
##
## Confusion Matrix and Statistics
##
## Actual
## Prediction 0 1
## 0 392 116
## 1 48 444
##
## Total n : 1'000
## Accuracy : 0.8360
## 95% CI : (0.8118, 0.8577)
## No Information Rate : 0.5600
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.6726
## Mcnemar's Test P-Value : 1.68e-07
##
## Sensitivity : 0.8909
## Specificity : 0.7929
## Pos Pred Value : 0.7717
## Neg Pred Value : 0.9024
## Prevalence : 0.4400
## Detection Rate : 0.5080
## Detection Prevalence : 0.3920
## Balanced Accuracy : 0.8419
## F-val Accuracy : 0.8270
## Matthews Cor.-Coef : 0.6789
##
## 'Positive' Class : 0
Nhận xét
Số lần mô hình dự đoán đúng nhóm lương cao (High) là 444 lần, và dự đoán đúng nhóm lương thấp (Low) là 392 lần.
Mô hình dự báo sai nhóm lương cao 116 lần (thực tế High nhưng dự đoán Low) và sai nhóm lương thấp 48 lần (thực tế Low nhưng dự đoán High).
Tổng số lần dự đoán đúng là 836 trên 1 000 quan sát.
Tỷ lệ dự đoán đúng của mô hình (Accuracy) là 0.8360. Với độ tin cậy 95 %, tỷ lệ này nằm trong khoảng (0.8118, 0.8577).
Mô hình dự báo lương khá tốt với độ chính xác trên 83,6 %. Tuy nhiên, khả năng nhận diện đúng nhóm lương cao (444/560) nhỉnh hơn so với nhóm lương thấp (392/440), cho thấy vẫn còn tỷ lệ bỏ sót nhóm Low cao hơn so với dự báo nhóm High.
Tác giả xây dựng bảng tần số chéo giữa biến Gender và Salary để xác định số lượng chuyên gia nam – nữ nhận lương cao (High) và lương thấp (Low), sau đó chuyển đổi thành bảng tần suất phần trăm để so sánh tỷ lệ nhận lương cao ở mỗi nhóm giới tính, và cuối cùng trực quan hóa kết quả này qua biểu đồ cột tần suất cũng như biểu đồ tròn, nhằm làm rõ sự khác biệt về phân bổ thu nhập giữa chuyên gia nam và nữ.
Bảng tần số theo từng nhóm giới tính để đánh giá mức lương của từng nhóm.
# Bảng tần số chéo giữa Sal (Lương) và Gender (Giới tính)
sg_tab <- table(d$Sal, d$Gender)
sg_tab1 <- addmargins(sg_tab) # thêm tổng hàng & cột
print(sg_tab1)
##
## Female Male Sum
## Hight 269 291 560
## Low 215 225 440
## Sum 484 516 1000
Đồ thị tần số phân theo từng nhóm giới tính để đánh giá mức lương của từng nhóm.
# 1. Tạo bảng tần số chéo Sal × Gender
tanso_SG <- table(d$Sal, d$Gender)
# 2. Chuyển sang định dạng dài cho ggplot
long_SG <- as.data.frame(tanso_SG)
colnames(long_SG) <- c("Sal", "Gender", "Count")
# 3. Vẽ biểu đồ cột
library(ggplot2)
ggplot(long_SG, aes(x = Sal, y = Count, fill = Gender)) +
geom_col(position = position_dodge(width = 0.8), width = 0.7) +
geom_text(aes(label = Count),
position = position_dodge(width = 0.8),
vjust = -0.5, size = 3) +
scale_fill_manual(values = c(
"Female" = "lightpink",
"Male" = "lightcyan"
)) +
labs(
title = "Phân bố mức lương theo giới tính",
x = "Mức lương",
y = "Số lượng chuyên gia",
fill = "Giới tính"
) +
theme_minimal() +
theme(
legend.position = "top",
axis.title = element_text(face = "bold"),
axis.text.x = element_text(hjust = 0.5)
)
Nhận xét
Ở nhóm lương cao, có 291 chuyên gia nam và 269 chuyên gia nữ (tổng 560 người).
Ở nhóm lương thấp, có 225 chuyên gia nam và 215 chuyên gia nữ (tổng 440 người).
Khoảng cách giữa nam và nữ chỉ là 22 người ở nhóm lương cao và 10 người ở nhóm lương thấp, cho thấy số lượng phân bổ khá cân bằng.
→ Về mặt số lượng, nam giới nhỉnh hơn nữ một chút ở cả hai nhóm lương, nhưng sự chênh lệch không lớn, phản ánh phân bổ giới tính tương đối đồng đều.
Bảng tần suất theo từng nhóm giới tính để đánh giá mức lương của từng nhóm.
# Bảng tần suất theo Sal (theo hàng)
sg_prop <- prop.table(sg_tab, margin = 1)
sg_prop <- round(sg_prop, 3) # làm tròn 3 chữ số
print(sg_prop)
##
## Female Male
## Hight 0.480 0.520
## Low 0.489 0.511
Đồ thị tần suất phân theo từng nhóm giới tính để đánh giá mức lương của từng nhóm.
# 1. Tính tần suất (%) theo Sal × Gender
df_pie_sg <- as.data.frame(prop.table(table(d$Sal, d$Gender), margin = 1) * 100)
colnames(df_pie_sg) <- c("Sal", "Gender", "Percent")
# 2. Vẽ pie chart với nhãn % trực tiếp trên từng lát
ggplot(df_pie_sg, aes(x = "", y = Percent, fill = Gender)) +
geom_col(color = "white", width = 1) +
coord_polar(theta = "y") +
facet_wrap(~ Sal) +
geom_text(
aes(label = paste0(round(Percent, 1), "%")),
position = position_stack(vjust = 0.5),
size = 3
) +
scale_fill_manual(values = c(
"Female" = "orange",
"Male" = "green"
)) +
labs(
title = "Tỷ lệ giới tính trong mỗi mức lương",
fill = "Giới tính"
) +
theme_void() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
strip.text = element_text(face = "bold", size = 12),
legend.position = "right"
)
Nhận xét
Trong nhóm lương cao, tỷ lệ nam chiếm 52.0 % và nữ chiếm 48.0 %.
Trong nhóm lương thấp, tỷ lệ nam chiếm 51.1 % và nữ chiếm 48.9 %.
Chênh lệch tỷ lệ giữa hai giới đều dưới 4 %, rất nhỏ.
→ Về tỷ lệ phần trăm, giới tính gần như không ảnh hưởng đến việc đạt mức lương cao ở cả nam và nữ đều có cơ hội tương đương trong ngành Khoa học Dữ liệu.
Tác giả tiếp tục kiểm định mối quan hệ giữa Giới tính và Tình trạng lương bằng kiểm định Chi-square
Giả thuyết kiểm định:
# Kiểm định Chi-square
chi_edu1 <- chisq.test(tanso_SG)
print(chi_edu1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tanso_SG
## X-squared = 0.038539, df = 1, p-value = 0.8444
Nhận xét
Thống kê kiểm định: χ² = 0.038539 với bậc tự do df = 1.
Giá trị p-value: 0.8444
Ta có p-value > mức ý nghĩa (\(\alpha\) = 5%), chưa đủ cơ sở để bác bỏ H₀. Vậy giới tính và tình trạng lương là hai biến độc lập.
Tác giả ước lượng tỷ lệ chuyên gia nữ nhận mức lương thấp (Low) bằng phương pháp kiểm định tỉ lệ một mẫu và tính khoảng tin cậy 95% để đánh giá mức độ tin cậy của kết quả.
Giả thuyết kiểm định:
H₀: Tỉ lệ chuyên gia có nhóm lương thấp trong nhóm nữ là 50% (p = 0,5).
H₁: Tỉ lệ chuyên gia có nhóm lương thấp trong nhóm nữ khác 50% (p ≠ 0,5).
# Đếm số và tổng số
x <- sum(d$Gender == "Female" & d$Sal == "Low")
N <- sum(d$Gender == "Female")
# Kiểm định tỉ lệ một mẫu p0 = 0.5, CI 95%
ci_lowfemale <- prop.test(x, N, p = 0.5, conf.level = 0.95, correct = FALSE)
print(ci_lowfemale)
##
## 1-sample proportions test without continuity correction
##
## data: x out of N, null probability 0.5
## X-squared = 6.0248, df = 1, p-value = 0.01411
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4005601 0.4887482
## sample estimates:
## p
## 0.4442149
Nhận xét
Thống kê kiểm định: χ² = 6.0248 với bậc tự do df = 1.
Giá trị p-value: 0.01411
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy tỉ lệ nữ chuyên gia có mức lương thấp thực tế không phải 50% mà thấp hơn, ước tính khoảng 44,4 % (95 % CI: 40,1 % – 48,9 %).
Tác giả ước lượng tỷ lệ chuyên gia nữ nhận mức lương cao (High) theo cùng phương pháp, từ đó xác định tỷ lệ thực tế trong mẫu và so sánh với ngưỡng kỳ vọng.
Giả thuyết kiểm định:
H₀: Tỉ lệ chuyên gia có nhóm lương cao trong nữ bằng 50% (p = 0,5).
H₁: Tỉ lệ chuyên gia có nhóm lương cao trong nhóm nữ khác 50% (p ≠ 0,5).
# Đếm số và tổng số
y <- sum(d$Gender == "Female" & d$Sal == "Hight")
# Kiểm định tỉ lệ một mẫu p0 = 0.5, CI 95%
ci_highfemale <- prop.test(y, N, p = 0.5, conf.level = 0.95, correct = FALSE)
print(ci_highfemale)
##
## 1-sample proportions test without continuity correction
##
## data: y out of N, null probability 0.5
## X-squared = 6.0248, df = 1, p-value = 0.01411
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5112518 0.5994399
## sample estimates:
## p
## 0.5557851
Nhận xét
Thống kê kiểm định: χ² = 6.0248 với bậc tự do df = 1.
Giá trị p-value: 0.01411
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy tỉ lệ nữ chuyên gia có mức lương cao thực tế không phải 50% mà cao hơn, ước tính khoảng 55,6 % (95 % CI: 51,1 % – 59,4 %).
Đối với biến Gender, tác giả áp dụng kiểm định Risk Difference giữa nhóm nhận lương thấp và nhóm nhận lương cao cho hai phân nhóm Female và Male. Cụ thể, với mỗi phân nhóm, tác giả đếm số chuyên gia trong nhóm Low và High, thực hiện hàm prop.test() để ước lượng giá trị chênh lệch tỉ lệ \(\hat{D}\)cùng khoảng tin cậy 95%, qua đó đánh giá xem tỷ lệ nhận lương thấp (hoặc cao) ở nữ và ở nam có khác biệt đáng kể hay không.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có giới tính nữ trong nhóm lương thấp bằng tỷ lệ chuyên gia có giới tính nữ trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia có giới tính nữ giữa hai nhóm lương)
# Đếm số Female trong nhóm Low và Hight
x1 <- sum(d$Gender == "Female" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$Gender == "Female" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference) cho Female
rd_female <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_female)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 0.067628, df = 1, p-value = 0.7948
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.05412118 0.07067962
## sample estimates:
## prop 1 prop 2
## 0.4886364 0.4803571
Nhận xét
Thống kê kiểm định: χ² = 0.067628 với bậc tự do df = 1.
p-value = 0.7948
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[–0.05412; 0.07068].
Ước tính tỉ lệ mẫu:
p₁ (Female trong nhóm lương thấp) = 48,86 %
p₂ (Female trong nhóm lương cao) = 48,04 %
Ta có p-value > mức ý nghĩa (\(\alpha\) = 5%), chưa đủ cơ sở để bác bỏ H₀. Vậy cho thấy không có khác biệt có ý nghĩa thống kê giữa tỉ lệ nữ ở hai nhóm lương.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có giới tính nam trong nhóm lương thấp bằng tỷ lệ chuyên gia có giới tính nam trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia có giới tính nam giữa hai nhóm lương)
# Đếm số Male trong nhóm Low và Hight
x1 <- sum(d$Gender == "Male" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$Gender == "Male" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference) cho Male
rd_male <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_male)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 0.067628, df = 1, p-value = 0.7948
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.07067962 0.05412118
## sample estimates:
## prop 1 prop 2
## 0.5113636 0.5196429
Nhận xét
Thống kê kiểm định: χ² = 0.067628 với bậc tự do df = 1.
p-value = 0,7948
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[–0.07068; 0.05412].
Ước tính tỉ lệ mẫu:
p₁ (Male trong nhóm lương thấp) = 51,14 %
p₂ (Male trong nhóm lương cao) = 51,96 %
Ta có p-value > mức ý nghĩa (\(\alpha\) = 5%), chưa đủ cơ sở để bác bỏ H₀. Vậy cho thấy không có khác biệt có ý nghĩa thống kê giữa tỉ lệ nam ở hai nhóm lương.
Tác giả xây dựng bảng 2×2 giữa Salary và từng phân nhóm Gender (Female, Male), sau đó ước lượng hệ số Relative Risk (RR) cùng khoảng tin cậy 95% cho việc nhận lương cao (“High”) so với lương thấp (“Low”) ở mỗi giới, nhằm đánh giá xem nguy cơ nhận lương cao chênh lệch có ý nghĩa thống kê giữa nam và nữ hay không.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về giới tính nữ ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về giới tính nữ ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và giới tính Female
tab_rr5 <- table(d$Sal, d$Gender == "Female")
colnames(tab_rr5) <- c("Male", "Female")
rownames(tab_rr5) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_female <- riskratio(tab_rr5)
print(rr_female)
## $data
##
## Male Female Total
## Low 291 269 560
## Hight 225 215 440
## Total 516 484 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.017236 0.8944136 1.156924
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.7951877 0.7991102 0.7948227
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho giới tính Female ở nhóm lương cao so với nhóm lương thấp là 1.0172.
p-value = 0.7952 (> mức ý nghĩa α = 5 %).
Khoảng tin cậy 95% cho RR:[0.8944; 1.1569].
Ta có p-value > mức ý nghĩa (\(\alpha\) = 5%), chưa đủ cơ sở để bác bỏ H₀. Vậy cho thấy không có khác biệt có ý nghĩa thống kê về tỉ lệ nữ giữa hai nhóm lương.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về giới tính nam ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về giới tính nam ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và giới tính Male
tab_rr6 <- table(d$Sal, d$Gender == "Male")
colnames(tab_rr6) <- c("NonMale", "Male")
rownames(tab_rr6) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_male <- riskratio(tab_rr6)
print(rr_male)
## $data
##
## NonMale Male Total
## Low 269 291 560
## Hight 215 225 440
## Total 484 516 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.0000000 NA NA
## Hight 0.9840675 0.8717635 1.110839
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.7951877 0.7991102 0.7948227
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho giới tính Male ở nhóm lương cao so với nhóm lương thấp là 0.9847.
p-value = 0.7952 (> mức ý nghĩa α = 5 %).
Khoảng tin cậy 95% cho RR:[0.8718; 1.1108].
Ta có p-value > mức ý nghĩa (\(\alpha\) = 5%), chưa đủ cơ sở để bác bỏ H₀. Vậy cho thấy không có khác biệt có ý nghĩa thống kê về tỉ lệ nam giữa hai nhóm lương.
Tác giả xây dựng bảng 2×2 giữa Salary và từng phân nhóm Gender (Female, Male), sau đó ước lượng Odds Ratio (OR) cùng khoảng tin cậy 95% để so sánh odds nhận lương cao (“High”) so với lương thấp (“Low”) ở nữ và ở nam, từ đó đánh giá xem sự khác biệt về odds nhận lương cao giữa hai giới có ý nghĩa thống kê hay không.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có giới tính nữ ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có giới tính nữ ở nhóm mức lương thấp và mức lương cao).
or_Female <- oddsratio(tab_rr5)
print(or_Female)
## $data
##
## Male Female Total
## Low 291 269 560
## Hight 225 215 440
## Total 516 484 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.033669 0.8049599 1.327379
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.7951877 0.7991102 0.7948227
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho giới tính Female ở nhóm lương cao so với nhóm lương thấp là 1.0337.
p-value = 0.7952 (> mức ý nghĩa α = 5 %).
Khoảng tin cậy 95% cho OR:[0.80496; 1.32738]. Ta có p-value > mức ý nghĩa (\(\alpha\) = 5%), chưa đủ cơ sở để bác bỏ H₀. Vậy cho thấy không có khác biệt có ý nghĩa thống kê về odds chuyên gia nữ giữa hai nhóm lương.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có giới tính nam ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có giới tính nam ở nhóm mức lương thấp và mức lương cao).
or_Male <- oddsratio(tab_rr6)
print(or_Male)
## $data
##
## NonMale Male Total
## Low 269 291 560
## Hight 215 225 440
## Total 484 516 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.0000000 NA NA
## Hight 0.9674003 0.7533642 1.242298
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.7951877 0.7991102 0.7948227
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho giới tính Male ở nhóm lương cao so với nhóm lương thấp là 0.9674.
p-value = 0.7952 (> mức ý nghĩa α = 5 %).
Khoảng tin cậy 95% cho OR:[0.7534; 1.2423]. Ta có p-value > mức ý nghĩa (\(\alpha\) = 5%), chưa đủ cơ sở để bác bỏ H₀. Vậy cho thấy không có khác biệt có ý nghĩa thống kê về odds chuyên gia nam giữa hai nhóm lương.
Thực hiện hồi quy xác suất tuyến tính giữa biến độc lập là giới tính và biến phụ thuộc là lương. Tuy nhiên trong phần này ta cần thay đổi biến sal thành biến nhị phân với giá trị 1 tương ứng với mức lương cao, ngược lại giá trị 0 tương ứng với mức lương thấp.
# Chuyển Gender thành factor với thứ tự Female → Male
d$Gender <- factor(d$Gender, levels = c("Female", "Male"))
# Xây dựng mô hình hồi quy xác suất tuyến tính (Linear Probability Model)
lpm_gender <- lm(Sal2 ~ Gender, data = d)
# Hiển thị tóm tắt kết quả
summary(lpm_gender)
##
## Call:
## lm(formula = Sal2 ~ Gender, data = d)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.5639 -0.5558 0.4360 0.4442 0.4442
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.555785 0.022585 24.61 <2e-16 ***
## GenderMale 0.008168 0.031441 0.26 0.795
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4969 on 998 degrees of freedom
## Multiple R-squared: 6.763e-05, Adjusted R-squared: -0.0009343
## F-statistic: 0.0675 on 1 and 998 DF, p-value: 0.7951
Nhận xét
\[ \hat{\pi} = 0.555785 + 0.008168\,\text{Male} \]
Ý nghĩa thống kê:
Hệ số chặn \(\hat{\beta}_0 = 0.5558\) có p-value < 2e-16, cho thấy xác suất nhận lương cao của nhóm tham chiếu (Female) đáng tin cậy.
Hệ số \(\hat{\beta}_1 = 0.00817\): có p-value = 0.795 (> 0.05), không có ý nghĩa thống kê.
Hệ số chặn \(\hat{\beta}_0 = 0.5558\): Xác suất nhận lương cao cho Female khoảng 55,6%.
Hệ số \(\hat{\beta}_1 = 0.00817\): So với Female, nam giới có xác suất nhận lương cao hơn khoảng 0,82% (từ 55,6% lên 56,4%), nhưng sự khác biệt này không đáng kể về mặt thống kê.
Mô hình LPM cho thấy giới tính không phải yếu tố có tác động có ý nghĩa lên xác suất đạt mức lương cao: cả nam và nữ đều có xác suất khoảng 56% để nằm trong nhóm lương cao.
# Xây dựng mô hình logistic (Logit)
logit_gender <- glm(Sal2 ~ Gender, data = d, family = binomial(link = "logit"))
# Hiển thị tóm tắt kết quả
summary(logit_gender)
##
## Call:
## glm(formula = Sal2 ~ Gender, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.22407 0.09148 2.449 0.0143 *
## GenderMale 0.03315 0.12747 0.260 0.7948
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.9 on 999 degrees of freedom
## Residual deviance: 1371.8 on 998 degrees of freedom
## AIC: 1375.8
##
## Number of Fisher Scoring iterations: 3
Nhận xét
\[ \ln\frac{\hat\pi}{1 - \hat\pi} = 0.22407 \;+\;0.03315\,\text{Male} \]
\(\displaystyle \hat\beta_0 =
0.22407\) (p = 0.0143)
Đây là log-odds nhận lương cao của nhóm Female (tham chiếu).Quy sang xác
suất:
\[ p_{\text{Female}} = \frac{e^{0.22407}}{1 + e^{0.22407}} \approx 55{,}6\% \]
\(\displaystyle \hat\beta_1 = 0.03315\) (p = 0.7948)
So với Female, nam giới có log-odds nhận lương cao tăng thêm 0,03315, nhưng hệ số này không có ý nghĩa thống kê.
Khi đó log-odds = 0.22407 + 0.03315 = 0.25722, quy sang xác suất: \[ p_{\text{Male}} = \frac{e^{0.25722}}{1 + e^{0.25722}} \approx 56{,}4\% \]
Vậy giới tính không phải là yếu tố có ý nghĩa thống kê trong mô hình - cả nam và nữ đều có xác suất nhận lương cao xấp xỉ 56 %.
# Xây dựng mô hình Probit
probit_gender <- glm(Sal2 ~ Gender, data = d, family = binomial(link = "probit"))
# Hiển thị tóm tắt kết quả
summary(probit_gender)
##
## Call:
## glm(formula = Sal2 ~ Gender, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.14029 0.05717 2.454 0.0141 *
## GenderMale 0.02071 0.07963 0.260 0.7948
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.9 on 999 degrees of freedom
## Residual deviance: 1371.8 on 998 degrees of freedom
## AIC: 1375.8
##
## Number of Fisher Scoring iterations: 3
Nhận xét
\[ \Phi^{-1}(\hat\pi) = 0.14029 \;+\;0.02071\,\text{Male} \]
\(\displaystyle \hat\beta_0 = 0.14029\) (p = 0.0141)
Đây là giá trị \(z\) (quantile của
chuẩn) cho nhóm Female (tham chiếu).
Quy về xác suất: \[
p_{\text{Female}}
= \Phi(0.14029)
\approx 0.556 \quad(55{,}6\%)
\]
\(\displaystyle \hat\beta_1 = 0.02071\) (p = 0.7948)
So với Female, nam giới có \(z\)
tăng thêm 0.02071, nhưng hệ số này không có ý nghĩa thống kê.
Khi đó \(z = 0.14029 + 0.02071 =
0.16100\), quy về xác suất: \[
p_{\text{Male}}
= \Phi(0.16100)
\approx 0.564 \quad(56{,}4\%)
\]
Vậy mô hình Probit xét giới tính cho thấy cả nam và nữ đều có xác suất nhận lương cao xấp xỉ 56 %, và khoảng cách giữa hai nhóm không đáng kể. Giới tính không phải là yếu tố quyết định trong mô hình này.
# Xây dựng mô hình Cloglog
cloglog_gender <- glm(Sal2 ~ Gender, data = d, family = binomial(link = "cloglog"))
# Hiển thị tóm tắt kết quả
summary(cloglog_gender)
##
## Call:
## glm(formula = Sal2 ~ Gender, family = binomial(link = "cloglog"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.20894 0.06266 -3.335 0.000854 ***
## GenderMale 0.02261 0.08697 0.260 0.794850
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.9 on 999 degrees of freedom
## Residual deviance: 1371.8 on 998 degrees of freedom
## AIC: 1375.8
##
## Number of Fisher Scoring iterations: 4
Nhận xét
\[ \log\bigl(-\log(1 - \hat\pi)\bigr) = -0.20894 \;+\;0.02261\,\mathrm{Male} \]
\(\displaystyle \hat\beta_0 = -0.20894\) (p = 0.000854)
Đây là giá trị cloglog cho nhóm Female (tham chiếu). Quy về xác suất: \[ \pi_{\text{Female}} = 1 - \exp\bigl(-\exp(-0.20894)\bigr) \approx 55{,}7\% \]
\(\displaystyle \hat\beta_1 = 0.02261\) (p = 0.79485)
So với Female, nam giới có giá trị cloglog tăng thêm 0.02261, nhưng hệ số này không có ý nghĩa thống kê. Khi đó: \[ \log\bigl(-\log(1 - \pi)\bigr) = -0.20894 + 0.02261 = -0.18633 \;\Longrightarrow\; \pi_{\text{Male}} = 1 - \exp\bigl(-\exp(-0.18633)\bigr) \approx 56{,}4\% \]
Vậy Cả nam và nữ đều có xác suất nhận lương cao xấp xỉ 56 %, và sự khác biệt giữa hai nhóm không đáng kể. Giới tính không phải yếu tố quyết định trong mô hình Cloglog.
# Tính AIC cho các mô hình trình độ học vấn
aic_values_gender <- data.frame(
Model = c("LPM_gender", "Logit_gender", "Probit_gender", "Cloglog_gender"),
AIC = c(
AIC(lpm_gender),
AIC(logit_gender),
AIC(probit_gender),
AIC(cloglog_gender) ))
print(aic_values_gender)
## Model AIC
## 1 LPM_gender 1443.010
## 2 Logit_gender 1375.792
## 3 Probit_gender 1375.792
## 4 Cloglog_gender 1375.792
# Tính BIC cho các mô hình trình độ học vấn
bic_values_gender <- data.frame(
Model = c("LPM_gender", "Logit_gender", "Probit_gender", "Cloglog_gender"),
BIC = c(
BIC(lpm_gender),
BIC(logit_gender),
BIC(probit_gender),
BIC(cloglog_gender) ))
print(bic_values_gender)
## Model BIC
## 1 LPM_gender 1457.734
## 2 Logit_gender 1385.607
## 3 Probit_gender 1385.607
## 4 Cloglog_gender 1385.607
Nhận xét
Trong bốn mô hình xét giới tính, Logit, Probit và Cloglog đều đạt AIC và BIC lần lượt bằng 1375.79 và 1385.61, thấp hơn so với LPM_gender 1443.01 và 1457.73.
Điều này cho thấy ba mô hình phân loại có cùng độ phù hợp tốt hơn mô hình xác suất tuyến tính khi chỉ dùng biến giới tính.
Vậy về khía cạnh AIC và BIC, nếu chỉ xét giới tính thì ưu tiên dùng Logistic, Probit hay Cloglog chứ không nên dùng LPM.
# 1. Dự đoán xác suất
pred_lpm_gender <- predict(lpm_gender)
pred_logit_gender <- predict(logit_gender, type = "response")
pred_probit_gender <- predict(probit_gender, type = "response")
pred_cloglog_gender <- predict(cloglog_gender, type = "response")
# 2. Tính Brier Score = mean((pred - actual)^2)
brier_lpm_gender <- mean((pred_lpm_gender - d$Sal2)^2)
brier_logit_gender <- mean((pred_logit_gender - d$Sal2)^2)
brier_probit_gender <- mean((pred_probit_gender - d$Sal2)^2)
brier_cloglog_gender <- mean((pred_cloglog_gender - d$Sal2)^2)
# 3. Tổng hợp và in kết quả
brier_results_gender <- data.frame(
Model = c("LPM_gender", "Logit_gender", "Probit_gender", "Cloglog_gender"),
Brier_Score = c(brier_lpm_gender, brier_logit_gender, brier_probit_gender, brier_cloglog_gender)
)
print(brier_results_gender)
## Model Brier_Score
## 1 LPM_gender 0.2463833
## 2 Logit_gender 0.2463833
## 3 Probit_gender 0.2463833
## 4 Cloglog_gender 0.2463833
Nhận xét
Tất cả bốn mô hình – Xác suất Tuyến tính, Logit, Probit và Cloglog – đều cho Brier Score bằng 0.24638.
Điều này cho thấy khi chỉ sử dụng biến giới tính, độ chính xác dự báo xác suất nhận lương cao của mọi mô hình là tương đương.
Không có mô hình nào vượt trội về Brier Score trong trường hợp chỉ xét biến giới tính.
# 1. Dự đoán xác suất từ mô hình lpm
prob_pred <- predict(lpm_gender, type = "response")
# 2. Phân loại dựa trên ngưỡng 0.5
class_pred <- ifelse(prob_pred >= 0.5, 1, 0)
# 3. Tạo ma trận nhầm SSlẫn
Conf(matrix(table(Prediction = class_pred, Actual = d$Sal2),2,2))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction A B
## A 440 440
## B 560 560
##
## Total n : 2'000
## Accuracy : 0.5000
## 95% CI : (0.4781, 0.5219)
## No Information Rate : 0.5000
## P-Value [Acc > NIR] : 0.5089
##
## Kappa : 0.0000
## Mcnemar's Test P-Value : 1.68e-04
##
## Sensitivity : 0.4400
## Specificity : 0.5600
## Pos Pred Value : 0.5000
## Neg Pred Value : 0.5000
## Prevalence : 0.5000
## Detection Rate : 0.4400
## Detection Prevalence : 0.2200
## Balanced Accuracy : 0.5000
## F-val Accuracy : 0.4681
## Matthews Cor.-Coef : 0.0000
##
## 'Positive' Class : A
Nhận xét
Mô hình dự đoán đúng nhóm A (Positive) 440 lần và đúng nhóm B (Negative) 560 lần.
Mô hình dự báo sai nhóm A (thực tế A nhưng dự đoán B) 560 lần và sai nhóm B (thực tế B nhưng dự đoán A) 440 lần.
Tổng số dự đoán đúng là 1 000 trên 2 000 quan sát, tương đương 50,0 % (95 % CI: 47,81 % – 52,19 %).
Độ nhạy (Sensitivity) = 44,0 %, độ đặc hiệu (Specificity) = 56,0 %, cho thấy mô hình yếu trong việc phân biệt cả hai nhóm.
Balanced Accuracy = 50,0 %, chứng tỏ mô hình không vượt qua được phép đo cơ bản “đoán ngẫu nhiên”.
Mô hình hoàn toàn không có khả năng phân loại, đạt đúng chỉ 50 % và không phân biệt nổi hai nhóm (Kappa = 0; MCC = 0). Cần cải tiến hoặc chọn lại thuật toán/biến giải thích để nâng cao hiệu quả phân loại.
d$Sal <- d$Salary
d$exp <-d$Experience
# Phân loại số năm kinh nghiệm thành 4 nhóm
d$ExpGroup <- cut(
d$exp,
breaks = c(0, 5, 10, 15, Inf),
labels = c("1-5 years", "6-10 years", "11-15 years", ">15 years"),
right = TRUE
)
Tác giả tiến hành xây dựng bảng tần số chéo giữa biến ExpGroup (nhóm kinh nghiệm: 1–5 năm, 6–10 năm, 11–15 năm, >15 năm) và Salary (High/Low) để xác định số lượng chuyên gia ở mỗi tổ hợp kinh nghiệm – mức lương, sau đó chuyển đổi thành bảng tần suất phần trăm và trực quan hoá kết quả qua biểu đồ cột tần suất cũng như biểu đồ tròn, giúp nhận diện rõ xu hướng phân bổ thu nhập “High” và “Low” theo từng nhóm kinh nghiệm.
Bảng tần số theo từng nhóm kinh nghiệm để đánh giá mức lương của từng nhóm.
# Bảng tần số chéo giữa Sal (Lương) và ExpGroup (Nhóm kinh nghiệm)
exp_tab <- table(d$Sal, d$ExpGroup)
exp_tab1 <- addmargins(exp_tab) # thêm tổng hàng & cột
print(exp_tab1)
##
## 1-5 years 6-10 years 11-15 years >15 years Sum
## Hight 80 75 76 329 560
## Low 104 89 80 167 440
## Sum 184 164 156 496 1000
Đồ thị tần số phân theo từng nhóm kinh nghiệm để đánh giá mức lương của từng nhóm.
# 1. Tạo bảng tần số chéo Sal × ExpGroup
tanso_SEP <- table(d$Sal, d$ExpGroup)
# 2. Chuyển sang định dạng dài cho ggplot
long_SE <- as.data.frame(tanso_SEP)
colnames(long_SE) <- c("Sal", "ExpGroup", "Count")
# 3. Vẽ biểu đồ cột
library(ggplot2)
ggplot(long_SE, aes(x = Sal, y = Count, fill = ExpGroup)) +
geom_col(position = position_dodge(width = 0.8), width = 0.7) +
geom_text(aes(label = Count),
position = position_dodge(width = 0.8),
vjust = -0.5, size = 3) +
scale_fill_manual(values = c(
"1-5 years" = "lightgreen",
"6-10 years" = "lightblue",
"11-15 years" = "salmon",
">15 years" = "plum"
)) +
labs(
title = "Phân bố mức lương theo nhóm kinh nghiệm",
x = "Mức lương",
y = "Số lượng chuyên gia",
fill = "Nhóm kinh nghiệm"
) +
theme_minimal() +
theme(
legend.position = "top",
axis.title = element_text(face = "bold"),
axis.text.x = element_text(hjust = 0.5)
)
Nhận xét
Trong nhóm lương cao (560 chuyên gia), số lượng phân bổ theo kinh nghiệm lần lượt là: 80 người (1–5 năm), 75 người (6–10 năm), 76 người (11–15 năm) và 329 người (>15 năm).
Trong nhóm lương thấp (440 chuyên gia), số lượng tương ứng là: 104 người (1–5 năm), 89 người (6–10 năm), 80 người (11–15 năm) và 167 người (>15 năm).
Khoảng cách giữa hai nhóm về kinh nghiệm 1–5, 6–10 và 11–15 năm lần lượt là 24, 14 và 4 người, cho thấy tương đối đồng đều. Tuy nhiên, nhóm >15 năm có sự chênh lệch rõ rệt nhất với 162 người (329 so với 167).
→ Về mặt số lượng, kinh nghiệm trên 15 năm là yếu tố phân biệt mạnh mẽ nhất giữa hai nhóm lương.
Bảng tần suất theo từng nhóm kinh nghiệm để đánh giá mức lương của từng nhóm.
# Bảng tần suất theo Sal (theo hàng)
exp_prop <- prop.table(exp_tab, margin = 1)
exp_prop <- round(exp_prop, 3) # làm tròn 3 chữ số
print(exp_prop)
##
## 1-5 years 6-10 years 11-15 years >15 years
## Hight 0.143 0.134 0.136 0.588
## Low 0.236 0.202 0.182 0.380
Đồ thị tần suất phân theo từng nhóm kinh nghiệm để đánh giá mức lương của từng nhóm.
# 1. Tính tần suất (%) theo Sal × ExpGroup
df_pie_exp <- as.data.frame(prop.table(table(d$Sal, d$ExpGroup), margin = 1) * 100)
colnames(df_pie_exp) <- c("Sal", "ExpGroup", "Percent")
# 2. Vẽ pie chart với nhãn % trực tiếp trên từng lát
ggplot(df_pie_exp, aes(x = "", y = Percent, fill = ExpGroup)) +
geom_col(color = "white", width = 1) +
coord_polar(theta = "y") +
facet_wrap(~ Sal) +
geom_text(
aes(label = paste0(round(Percent, 1), "%")),
position = position_stack(vjust = 0.5),
size = 3
) +
scale_fill_manual(values = c(
"1-5 years" = "lightgreen",
"6-10 years" = "lightblue",
"11-15 years" = "salmon",
">15 years" = "plum"
)) +
labs(
title = "Tỷ lệ nhóm kinh nghiệm trong mỗi mức lương",
fill = "Nhóm kinh nghiệm"
) +
theme_void() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
strip.text = element_text(face = "bold", size = 12),
legend.position = "right"
)
Nhận xét
Trong nhóm lương cao, tỷ lệ theo kinh nghiệm là: 14,3 % (1–5 năm), 13,4 % (6–10 năm), 13,6 % (11–15 năm) và 58,8 % (>15 năm).
Trong nhóm lương thấp, tỷ lệ tương ứng là: 23,6 %, 20,2 %, 18,2 % và 38,0 %.
Nhóm >15 năm có tỷ lệ trong nhóm lương cao cao hơn nhóm lương thấp đến 20,8 %. Ngược lại, các nhóm kinh nghiệm ngắn hơn đều có tỷ lệ thấp hơn trong nhóm lương cao (chênh từ 4,6 đến 9,3 điểm phần trăm).
→ Về mặt tỷ lệ, chuyên gia có trên 15 năm kinh nghiệm có khả năng đạt mức lương cao rõ ràng vượt trội, trong khi các nhóm kinh nghiệm khác có phân phối tương đối cân bằng.
Tác giả tiến hành kiểm định Chi-square để đánh giá tính độc lập giữa số năm kinh nghiệm và tình trạng lương
Giả thuyết kiểm định:
# Kiểm định Chi-square
chi_edu2 <- chisq.test(tanso_SE)
print(chi_edu2)
##
## Pearson's Chi-squared test
##
## data: tanso_SE
## X-squared = 515.05, df = 3, p-value < 2.2e-16
Nhận xét
Thống kê kiểm định: χ² = 515.05 với bậc tự do df = 3.
Giá trị p-value: 2.2e-16 (rất nhỏ)
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có mối liên hệ có ý nghĩa thống kê giữa số năm kinh nghiệm và tình trạng lương.
Tác giả ước lượng tỷ lệ chuyên gia có hơn 15 năm kinh nghiệm nhận mức lương thấp (Low) bằng kiểm định tỉ lệ một mẫu kèm khoảng tin cậy 95%, nhằm xác định tỷ lệ thực tế trong nhóm này và so sánh với ngưỡng kỳ vọng.
Giả thuyết kiểm định:
H₀: Tỉ lệ chuyên gia có nhóm lương thấp trong nhóm số năm kinh nghiệm >15 years bằng 50% (p = 0,5).
H₁: Tỉ lệ chuyên gia có nhóm lương thấp trong nhóm số năm kinh nghiệm >15 years khác 50% (p ≠ 0,5).
# Đếm số và tổng số
x <- sum(d$ExpGroup == ">15 years" & d$Sal == "Low")
N <- sum(d$ExpGroup == ">15 years")
# Kiểm định tỉ lệ một mẫu p0 = 0.5, CI 95%
ci_low15years <- prop.test(x, N, p = 0.5, conf.level = 0.95, correct = FALSE)
print(ci_low15years)
##
## 1-sample proportions test without continuity correction
##
## data: x out of N, null probability 0.5
## X-squared = 52.911, df = 1, p-value = 3.49e-13
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.2965004 0.3793968
## sample estimates:
## p
## 0.3366935
Nhận xét
Thống kê kiểm định: χ² = 52.911 với bậc tự do df = 1.
Giá trị p-value: 3.49e-13 (rất nhỏ)
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy tỉ lệ chuyên gia có kinh nghiệm trên 15 năm và lương thấp không phải 50% mà thấp hơn đáng kể, ước tính khoảng 33,7 % (95 % CI: 29,7 % – 37,9 %).
Tác giả ước lượng tỷ lệ chuyên gia có hơn 15 năm kinh nghiệm nhận mức lương cao (High) bằng kiểm định tỉ lệ một mẫu, đồng thời tính khoảng tin cậy 95% để xác định tỷ lệ thực tế trong nhóm này và so sánh với ngưỡng kỳ vọng 50%.
Giả thuyết kiểm định:
H₀:Tỉ lệ chuyên gia có nhóm lương cao trong nhóm đại học bằng 50% (p = 0,5).
H₁:Tỉ lệ chuyên gia có nhóm lương cao trong nhóm đại học khác 50% (p ≠ 0,5).
# Đếm số và tổng số
y <- sum(d$ExpGroup == ">15 years" & d$Sal == "Hight")
# Kiểm định tỉ lệ một mẫu p0 = 0.5, CI 95%
ci_hight15years <- prop.test(y, N, p = 0.5, conf.level = 0.95, correct = FALSE)
print(ci_hight15years)
##
## 1-sample proportions test without continuity correction
##
## data: y out of N, null probability 0.5
## X-squared = 52.911, df = 1, p-value = 3.49e-13
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.6206032 0.7034996
## sample estimates:
## p
## 0.6633065
Nhận xét
Thống kê kiểm định: χ² = 18.818 với bậc tự do df = 1.
Giá trị p-value: 1.438e-05 (rất nhỏ)
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy tỉ lệ chuyên gia Đại học có mức lương cao thực tế không phải 50% mà thấp hơn, ước tính khoảng 36,4% (95 % CI: 30,7 % – 42,5 %).
Tác giả áp dụng kiểm định chênh lệch tỉ lệ (Risk Difference) để ước lượng và so sánh tỷ lệ nhận lương thấp và lương cao cho bốn nhóm kinh nghiệm (1–5 năm, 6–10 năm, 11–15 năm và trên 15 năm), đồng thời tính khoảng tin cậy 95% cho mỗi chênh lệch tỉ lệ.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có số năm kinh nghiệm từ 1 đến 5 năm trong nhóm lương thấp bằng tỷ lệ chuyên gia có số năm kinh nghiệm từ 1 đến 5 năm trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia có số năm kinh nghiệm từ 1 đến 5 năm giữa hai nhóm lương)
# Đếm số chuyên gia có ExpGroup = "1-5 years" trong nhóm Low và Hight
x1 <- sum(d$ExpGroup == "1-5 years" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$ExpGroup == "1-5 years" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference) cho nhóm 1-5 years
rd_exp1_5 <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_exp1_5)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 14.349, df = 1, p-value = 0.0001519
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.04435566 0.14265732
## sample estimates:
## prop 1 prop 2
## 0.2363636 0.1428571
Nhận xét
Thống kê kiểm định: χ² = 14.349 với bậc tự do df = 1.
p-value = 0.0001519
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[0.04436; 0.14266].
Ước tính tỉ lệ mẫu:
p₁ (1–5 years trong nhóm lương thấp) = 23,64 %
p₂ (1–5 years trong nhóm lương cao) = 14,29 %
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia có 1–5 năm kinh nghiệm ở hai nhóm lương, và tỉ lệ 1–5 years trong nhóm lương thấp cao hơn nhóm lương cao khoảng 9,35 %.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có số năm kinh nghiệm từ 6 đến 10 năm trong nhóm lương thấp bằng tỷ lệ chuyên gia có số năm kinh nghiệm từ 6 đến 10 năm trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia có số năm kinh nghiệm từ 6 đến 10 năm giữa hai nhóm lương)
# Đếm số chuyên gia ExpGroup == "6-10 years" trong nhóm Low và Hight
x1 <- sum(d$ExpGroup == "6-10 years" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$ExpGroup == "6-10 years" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference) cho nhóm 6-10 years
rd_exp6_10 <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_exp6_10)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 8.3945, df = 1, p-value = 0.003764
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.02139282 0.11529550
## sample estimates:
## prop 1 prop 2
## 0.2022727 0.1339286
Nhận xét
Thống kê kiểm định: χ² = 8.3945 với bậc tự do df = 1.
p-value = 0.003764
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[0.02139; 0.11530]].
Ước tính tỉ lệ mẫu:
p₁ (6–10 years trong nhóm lương thấp) = 20,23 %
p₂ (6–10 years trong nhóm lương cao) = 13,39 %
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia có 6–10 năm kinh nghiệm ở hai nhóm lương, và tỉ lệ 6–10 years trong nhóm lương thấp cao hơn nhóm lương cao khoảng 6,83 %.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có số năm kinh nghiệm từ 11 đến 15 năm trong nhóm lương thấp bằng tỷ lệ chuyên gia có số năm kinh nghiệm từ 11 đến 15 năm trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia có số năm kinh nghiệm từ 11 đến 15 năm giữa hai nhóm lương)
# Đếm số chuyên gia ExpGroup == "11-15 years" trong nhóm Low và Hight
x1 <- sum(d$ExpGroup == "11-15 years" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$ExpGroup == "11-15 years" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference) cho nhóm 11-15 years
rd_exp11_15 <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_exp11_15)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 3.9779, df = 1, p-value = 0.0461
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.0002412139 0.0919665783
## sample estimates:
## prop 1 prop 2
## 0.1818182 0.1357143
Nhận xét
Thống kê kiểm định: χ² = 3.9779 với bậc tự do df = 1.
p-value = 0.0461
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[0.00024; 0.09197].
Ước tính tỉ lệ mẫu:
p₁ (11–15 years trong nhóm lương thấp) = 18,18 %
p₂ (11–15 years trong nhóm lương cao) = 13,57 %
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia có 11–15 năm kinh nghiệm ở hai nhóm lương, và tỉ lệ 11–15 years trong nhóm lương thấp cao hơn nhóm lương cao khoảng 4,61 %.
Giả thuyết kiểm định:
H₀: p₁ − p₂ = 0 (Tỷ lệ chuyên gia có số năm kinh nghiệm trên 15 năm trong nhóm lương thấp bằng tỷ lệ chuyên gia có số năm kinh nghiệm từ 11 đến 15 năm trong nhóm lương cao)
H₁: p₁ − p₂ ≠ 0 (Có sự khác biệt về tỷ lệ chuyên gia có số năm kinh nghiệm trên 15 năm giữa hai nhóm lương)
# Đếm số chuyên gia ExpGroup == ">15 years" trong nhóm Low và Hight
x1 <- sum(d$ExpGroup == ">15 years" & d$Sal == "Low", na.rm = TRUE)
n1 <- sum(d$Sal == "Low", na.rm = TRUE)
x2 <- sum(d$ExpGroup == ">15 years" & d$Sal == "Hight", na.rm = TRUE)
n2 <- sum(d$Sal == "Hight", na.rm = TRUE)
# Kiểm định chênh lệch tỉ lệ (Risk Difference) cho nhóm >15 years
rd_exp15 <- prop.test(
c(x1, x2),
c(n1, n2),
correct = FALSE,
conf.level = 0.95
)
print(rd_exp15)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: c(x1, x2) out of c(n1, n2)
## X-squared = 42.625, df = 1, p-value = 6.63e-11
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.2689331 -0.1469759
## sample estimates:
## prop 1 prop 2
## 0.3795455 0.5875000
Nhận xét
Thống kê kiểm định: χ² = 42.625 với bậc tự do df = 1.
p-value = 6.63e-11
Khoảng tin cậy 95% cho chênh lệch tỉ lệ (p₁ − p₂):[–0.2689331; –0.1469759].
Ước tính tỉ lệ mẫu:
p₁ (Trên 15 years trong nhóm lương thấp) = 37,95 %
p₂ (Trên 15 years trong nhóm lương cao) = 58,75 %
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có sự khác biệt có ý nghĩa thống kê giữa tỉ lệ chuyên gia có trên 15 năm kinh nghiệm ở hai nhóm lương, và tỉ lệ trên 15 years trong nhóm lương thấp thấp hơn nhóm lương cao khoảng 20,80 %.
Tác giả tiếp tục ước lượng hệ số Relative Risk cho bốn nhóm kinh nghiệm (1–5 năm, 6–10 năm, 11–15 năm và >15 năm) bằng cách so sánh nguy cơ nhận lương cao (“High”) so với lương thấp (“Low”) giữa mỗi nhóm kinh nghiệm, đồng thời tính khoảng tin cậy 95% cho từng RR để đánh giá mức độ khác biệt về nguy cơ nhận lương cao theo kinh nghiệm.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về số năm kinh nghiệm từ 1 đến 5 năm ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về số năm kinh nghiệm từ 1 đến 5 năm ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và ExpGroup == "1-5 years"
tab_rr7 <- table(d$Sal, d$ExpGroup == "1-5 years")
colnames(tab_rr7) <- c("OtherExp", "Exp1_5")
rownames(tab_rr7) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_exp1_5 <- riskratio(tab_rr7)
print(rr_exp1_5)
## $data
##
## OtherExp Exp1_5 Total
## Low 480 80 560
## Hight 336 104 440
## Total 816 184 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.654545 1.271445 2.153079
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.0001676444 0.0002042127 0.0001518746
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho nhóm kinh nghiệm 1–5 years ở nhóm lương cao so với nhóm lương thấp là 1.6545.
p-value = 0.0001676 (rất nhỏ).
Khoảng tin cậy 95% cho RR:[1.2714; 2.1531].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia có 1–5 năm kinh nghiệm giữa hai nhóm lương, cụ thể: người có 1–5 years kinh nghiệm có nguy cơ nằm trong nhóm lương cao gấp 1.65 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về số năm kinh nghiệm từ 6 đến 10 năm ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về số năm kinh nghiệm từ 6 đến 10 năm ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và ExpGroup == "6-10 years"
tab_rr8 <- table(d$Sal, d$ExpGroup == "6-10 years")
colnames(tab_rr8) <- c("OtherExp", "Exp6_10")
rownames(tab_rr8) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_exp6_10 <- riskratio(tab_rr8)
print(rr_exp6_10)
## $data
##
## OtherExp Exp6_10 Total
## Low 485 75 560
## Hight 351 89 440
## Total 836 164 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.510303 1.140666 1.999723
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.004007895 0.004454077 0.00376364
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho số năm kinh nghiệm 6–10 years ở nhóm lương cao so với nhóm lương thấp là 1.5103.
p-value = 0.004007895 (rất nhỏ).
Khoảng tin cậy 95% cho RR:[1.1407; 1.9997].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia có 6–10 năm kinh nghiệm giữa hai nhóm lương, cụ thể: người có 6–10 years kinh nghiệm có nguy cơ nằm trong nhóm lương cao gấp 1.51 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về số năm kinh nghiệm từ 11 đến 15 năm ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về số năm kinh nghiệm từ 11 đến 15 năm ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và ExpGroup == "11-15 years"
tab_rr9 <- table(d$Sal, d$ExpGroup == "11-15 years")
colnames(tab_rr9) <- c("OtherExp", "Exp11_15")
rownames(tab_rr9) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_exp11_15 <- riskratio(tab_rr9)
print(rr_exp11_15)
## $data
##
## OtherExp Exp11_15 Total
## Low 484 76 560
## Hight 360 80 440
## Total 844 156 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.339713 1.004414 1.786943
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.04747268 0.05327494 0.04610225
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho số năm kinh nghiệm 11–15 years ở nhóm lương cao so với nhóm lương thấp là 1.3397.
p-value = 0.04747 (< mức ý nghĩa α = 5%).
Khoảng tin cậy 95% cho RR:[1.0044; 1.7869].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia có 11–15 năm kinh nghiệm giữa hai nhóm lương, cụ thể: người có 11–15 years kinh nghiệm có nguy cơ nằm trong nhóm lương cao gấp 1.34 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Relative Risk = 1 (Không có sự khác biệt về số năm kinh nghiệm trên 15 năm ở nhóm mức lương thấp và mức lương cao).
H₁: Relative Risk ≠ 1 (Có sự khác biệt về số năm kinh nghiệm trên 15 năm ở nhóm mức lương thấp và mức lương cao).
# Bảng 2×2 giữa Sal và ExpGroup == ">15 years"
tab_rr10 <- table(d$Sal, d$ExpGroup == ">15 years")
colnames(tab_rr10) <- c("OtherExp", "ExpGt15")
rownames(tab_rr10) <- c("Low", "Hight")
# Tính Relative Risk
library(epitools)
rr_exp15 <- riskratio(tab_rr10)
print(rr_exp15)
## $data
##
## OtherExp ExpGt15 Total
## Low 231 329 560
## Hight 273 167 440
## Total 504 496 1000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Low 1.0000000 NA NA
## Hight 0.6460348 0.5626692 0.7417519
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 6.116252e-11 7.087022e-11 6.630338e-11
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét
Relative Risk cho số năm kinh nghiệm trên 15 years ở nhóm lương cao so với nhóm lương thấp là 0.6460.
p-value = 6.1163×10⁻¹¹ (rất nhỏ).
Khoảng tin cậy 95% cho RR:[0.5627; 0.7418].
Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về tỉ lệ chuyên gia có trên 15 năm kinh nghiệm giữa hai nhóm lương, cụ thể: người có trên 15 years kinh nghiệm có nguy cơ nằm trong nhóm lương cao gấp 0.646 lần so với nhóm lương thấp.
Tác giả xây dựng bảng 2×2 giữa Salary và ExpGroup cho từng phân khúc kinh nghiệm (1–5 năm, 6–10 năm, 11–15 năm và >15 năm), sau đó ước lượng Odds Ratio cùng khoảng tin cậy 95% để so sánh odds nhận lương cao (“High”) so với lương thấp (“Low”) trong mỗi nhóm kinh nghiệm, qua đó đánh giá mức độ khác biệt về odds nhận lương cao giữa các phân khúc.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có số năm kinh nghiệm từ 1 đến 5 năm ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có số năm kinh nghiệm từ 1 đến 5 năm ở nhóm mức lương thấp và mức lương cao).
or_exp1_5 <- oddsratio(tab_rr7)
print(or_exp1_5)
## $data
##
## OtherExp Exp1_5 Total
## Low 480 80 560
## Hight 336 104 440
## Total 816 184 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.855199 1.344026 2.569179
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.0001676444 0.0002042127 0.0001518746
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho số năm kinh nghiệm 1–5 years ở nhóm lương cao so với nhóm lương thấp là 1.8552.
p-value = 0.0001676 (rất nhỏ).
Khoảng tin cậy 95% cho OR:[1.3440; 2.5692]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia có 1–5 years kinh nghiệm giữa hai nhóm lương, cụ thể: odds có 1–5 years kinh nghiệm ở nhóm lương cao gấp 1.855 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có số năm kinh nghiệm từ 6 đến 10 năm ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có số năm kinh nghiệm từ 6 đến 10 năm ở nhóm mức lương thấp và mức lương cao).
or_exp6_10 <- oddsratio(tab_rr8)
print(or_exp6_10)
## $data
##
## OtherExp Exp6_10 Total
## Low 485 75 560
## Hight 351 89 440
## Total 836 164 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.638361 1.170479 2.298798
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.004007895 0.004454077 0.00376364
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho số năm kinh nghiệm 6–10 years ở nhóm lương cao so với nhóm lương thấp là 1.6384.
p-value = 0.004007895 (rất nhỏ).
Khoảng tin cậy 95% cho OR:[1.17048; 2.29880]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia có 6–10 years kinh nghiệm giữa hai nhóm lương, cụ thể: odds có 6–10 years kinh nghiệm ở nhóm lương cao gấp 1.6384 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có số năm kinh nghiệm từ 11 đến 15 năm ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có số năm kinh nghiệm từ 11 đến 15 năm ở nhóm mức lương thấp và mức lương cao).
or_exp11_15 <- oddsratio(tab_rr9)
print(or_exp11_15)
## $data
##
## OtherExp Exp11_15 Total
## Low 484 76 560
## Hight 360 80 440
## Total 844 156 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.000000 NA NA
## Hight 1.414561 1.003896 1.995044
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 0.04747268 0.05327494 0.04610225
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho số năm kinh nghiệm 11–15 years ở nhóm lương cao so với nhóm lương thấp là 1.4146.
p-value = 0.04747 (< mức ý nghĩa α = 5 %).
Khoảng tin cậy 95% cho OR:[1.0039; 1.9950]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia có 11–15 years kinh nghiệm giữa hai nhóm lương, cụ thể: odds có 11–15 years kinh nghiệm ở nhóm lương cao gấp 1.4146 lần so với nhóm lương thấp.
Giả thuyết kiểm định
H₀: Odds Ratio = 1 (Không có sự khác biệt về odds chuyên gia có số năm kinh nghiệm trên 15 years ở nhóm mức lương thấp và mức lương cao).
H₁: Odds Ratio ≠ 1 (Có sự khác biệt về odds chuyên gia có số năm kinh nghiệm trên 15 years ở nhóm mức lương thấp và mức lương cao).
or_exp15 <- oddsratio(tab_rr10)
print(or_exp15)
## $data
##
## OtherExp ExpGt15 Total
## Low 231 329 560
## Hight 273 167 440
## Total 504 496 1000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Low 1.0000000 NA NA
## Hight 0.4300146 0.3325122 0.5547941
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Low NA NA NA
## Hight 6.116252e-11 7.087022e-11 6.630338e-11
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét
Odds Ratio cho số năm kinh nghiệm >15 years ở nhóm lương cao so với nhóm lương thấp là 0.4300.
p-value = 6.1163×10⁻¹¹ (rất nhỏ).
Khoảng tin cậy 95% cho OR:[0.3325; 0.5548]. Ta có p-value < mức ý nghĩa (\(\alpha\) = 5%), đủ cơ sở để bác bỏ H₀. Vậy cho thấy có khác biệt có ý nghĩa thống kê về odds chuyên gia có trên 15 năm kinh nghiệm giữa hai nhóm lương, cụ thể: odds có trên 15 years kinh nghiệm ở nhóm lương cao gấp 0.43 lần so với nhóm lương thấp.
Thực hiện hồi quy xác suất tuyến tính giữa biến độc lập là số năm kinh nghiệm và biến phụ thuộc là lương. Tuy nhiên trong phần này ta cần thay đổi biến sal thành biến nhị phân với giá trị 1 tương ứng với mức lương cao, ngược lại giá trị 0 tương ứng với mức lương thấp.
# Chuyển Gender thành factor với thứ tự Female → Male
d$ExpGroup <- factor(d$ExpGroup, levels = c("1-5 years", "6-10 years", "11-15 years", ">15 years"))
# Xây dựng mô hình hồi quy xác suất tuyến tính (Linear Probability Model)
lpm_Exp <- lm(Sal2 ~ ExpGroup, data = d)
# Hiển thị tóm tắt kết quả
summary(lpm_Exp)
##
## Call:
## lm(formula = Sal2 ~ ExpGroup, data = d)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.6633 -0.4573 0.3367 0.3367 0.5652
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.43478 0.03586 12.124 < 2e-16 ***
## ExpGroup6-10 years 0.02253 0.05224 0.431 0.666
## ExpGroup11-15 years 0.05240 0.05294 0.990 0.323
## ExpGroup>15 years 0.22852 0.04199 5.443 6.61e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4864 on 996 degrees of freedom
## Multiple R-squared: 0.04357, Adjusted R-squared: 0.04069
## F-statistic: 15.12 on 3 and 996 DF, p-value: 1.248e-09
Nhận xét
\[ \hat{\pi} = 0.43478 + 0.02253\,\text{(6–10 years)} + 0.05240\,\text{(11–15 years)} + 0.22852\,\text{(>15 years)} \] - Ý nghĩa thống kê:
Hệ số chặn \(\hat{\beta}_0 = 0.43478\) khẳng định xác suất nhận lương cao của nhóm tham chiếu (1–5 years) là 43,5 %.
Hệ số \(\hat\beta_{6\text{-}10} = 0.02253\) và \(\hat\beta_{11\text{-}15} = 0.05240\): không có ý nghĩa thống kê, cho thấy nhóm 6–10 và 11–15 years không khác biệt đáng kể so với nhóm 1–5 years.
Hệ số chặn \(\hat\beta_{>15} = 0.22852\) có p-value = 6.61e-08 (***), rất có ý nghĩa, cho thấy nhóm >15 years có xác suất nhận lương cao cao hơn 22,85 % so với nhóm 1–5 years.
Kinh nghiệm trên 15 năm là yếu tố duy nhất có tác động có ý nghĩa thống kê, làm tăng xác suất đạt mức lương cao khoảng 22,85 %. Các nhóm kinh nghiệm còn lại không khác biệt đáng kể so với nhóm 1–5 năm.
# Xây dựng mô hình logistic (Logit)
logit_Exp <- glm(Sal2 ~ ExpGroup, data = d, family = binomial(link = "logit"))
# Hiển thị tóm tắt kết quả
summary(logit_Exp)
##
## Call:
## glm(formula = Sal2 ~ ExpGroup, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.26236 0.14871 -1.764 0.0777 .
## ExpGroup6-10 years 0.09122 0.21607 0.422 0.6729
## ExpGroup11-15 years 0.21107 0.21857 0.966 0.3342
## ExpGroup>15 years 0.94043 0.17647 5.329 9.88e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.9 on 999 degrees of freedom
## Residual deviance: 1328.0 on 996 degrees of freedom
## AIC: 1336
##
## Number of Fisher Scoring iterations: 4
Nhận xét
\[ \ln\frac{\hat\pi}{1 - \hat\pi} = -0.26236 \;+\;0.09122\,\mathrm{(6\text{–}10\,năm)} \;+\;0.21107\,\mathrm{(11\text{–}15\,năm)} \;+\;0.94043\,\mathrm{(>15\,năm)} \]
\(\displaystyle \hat\beta_0 = -0.26236\) (p = 0.0777)
Log-odds nhận lương cao của nhóm 1–5 năm (tham chiếu).Quy sang xác suất: \[ p_{1\text{–}5} = \frac{e^{-0.26236}}{1 + e^{-0.26236}} \approx 43{,}5\% \]
\(\displaystyle \hat\beta_1 = 0.09122\) (p = 0.6729)
Nhóm 6–10 năm có log-odds cao hơn 0,09122 so với 1–5 năm, nhưng không có ý nghĩa thống kê.
\(\displaystyle \hat\beta_2 = 0.21107\) (p = 0.3342)
Nhóm 11–15 năm có log-odds cao hơn 0.21107 so với 1–5 năm, nhưng không có ý nghĩa thống kê.
\(\displaystyle \hat\beta_3 = 0.94043\) (p = 9.88e-08)
Nhóm trên 15 năm có log-odds nhận lương cao tăng thêm 0.94043, có ý
nghĩa thống kê rất mạnh.
Khi đó log-odds = –0.26236 + 0.94043 = 0.67807, quy sang xác suất: \[
p_{>15}
= \frac{e^{0.67807}}{1 + e^{0.67807}}
\approx 66{,}3\%
\]
Vậy chỉ nhóm có trên 15 năm kinh nghiệm cho thấy tác động có ý nghĩa lên xác suất nhận lương cao (khoảng 66,3 %), trong khi các nhóm 6–10 và 11–15 năm không khác biệt đáng kể so với nhóm 1–5 năm.
# Xây dựng mô hình Probit
probit_Exp <- glm(Sal2 ~ ExpGroup, data = d, family = binomial(link = "probit"))
# Hiển thị tóm tắt kết quả
summary(probit_Exp)
##
## Call:
## glm(formula = Sal2 ~ ExpGroup, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.16421 0.09285 -1.769 0.077 .
## ExpGroup6-10 years 0.05702 0.13505 0.422 0.673
## ExpGroup11-15 years 0.13207 0.13673 0.966 0.334
## ExpGroup>15 years 0.58571 0.10955 5.347 8.95e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.9 on 999 degrees of freedom
## Residual deviance: 1328.0 on 996 degrees of freedom
## AIC: 1336
##
## Number of Fisher Scoring iterations: 4
Nhận xét
\[ \Phi^{-1}(\hat\pi) = -0.16421 \;+\;0.05702\,\mathrm{(6\text{–}10\ năm)} \;+\;0.13207\,\mathrm{(11\text{–}15\ năm)} \;+\;0.58571\,\mathrm{(>15\ năm)} \]
\(\displaystyle \hat\beta_0 =
-0.16421\) (p = 0.077)
Đây là giá trị \(z\) cho nhóm 1–5 năm
(tham chiếu). Quy về xác suất: \[
p_{1\text{–}5}
= \Phi(-0.16421)
\approx 0.435 \quad(43{,}5\%)
\]
Nhóm 1–5 năm có khoảng 43,5 % cơ hội nhận mức lương cao.
\(\displaystyle \hat\beta_{6\text{–}10} = 0.05702\) (p = 0.673)
Nhóm 6–10 năm có giá trị \(z\) cao hơn 0,05702 so với nhóm 1–5 năm, nhưng không có ý nghĩa thống kê.
\(\displaystyle \hat\beta_{11\text{–}15} = 0.13207\) (p = 0.334)
Nhóm 11–15 năm có giá trị \(z\) cao hơn 0,13207 so với nhóm 1–5 năm, nhưng cũng không có ý nghĩa thống kê.
\(\displaystyle \hat\beta_{>15} =
0.58571\) (p < 1e-7)
Nhóm trên 15 năm có giá trị \(z\) tăng
thêm 0,58571, có ý nghĩa thống kê mạnh.
Khi đó \(z = -0.16421 + 0.58571 =
0.42150\), quy về xác suất: \[
p_{>15}
= \Phi(0.42150)
\approx 0.663 \quad(66{,}3\%)
\] Nhóm >15 năm có khoảng 66,3 % cơ hội nhận lương
cao.
Vậy Chỉ có nhóm trên 15 năm kinh nghiệm ảnh hưởng có ý nghĩa lên xác suất nhận mức lương cao.
# Xây dựng mô hình Cloglog
cloglog_Exp <- glm(Sal2 ~ ExpGroup, data = d, family = binomial(link = "cloglog"))
# Hiển thị tóm tắt kết quả
summary(cloglog_Exp)
##
## Call:
## glm(formula = Sal2 ~ ExpGroup, family = binomial(link = "cloglog"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.56116 0.11332 -4.952 7.35e-07 ***
## ExpGroup6-10 years 0.06888 0.16308 0.422 0.673
## ExpGroup11-15 years 0.15744 0.16278 0.967 0.333
## ExpGroup>15 years 0.64604 0.12725 5.077 3.84e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.9 on 999 degrees of freedom
## Residual deviance: 1328.0 on 996 degrees of freedom
## AIC: 1336
##
## Number of Fisher Scoring iterations: 4
Nhận xét
\[ \log\bigl(-\log(1 - \hat\pi)\bigr) = -0.56116 \;+\;0.06888\,\mathrm{(6\text{–}10\,năm)} \;+\;0.15744\,\mathrm{(11\text{–}15\,năm)} \;+\;0.64604\,\mathrm{(>15\,năm)} \]
\(\displaystyle \hat\beta_0 = -0.56116\) (p = 7.35e-07)
Đây là giá trị cloglog cho nhóm 1–5 năm (tham chiếu). Quy về xác suất: \[ \pi_{1\text{–}5} = 1 - \exp\bigl(-\exp(-0.56116)\bigr) \;\approx\;1 - \exp(-0.570)\;\approx\;43{,}5\%. \]
\(\displaystyle \hat\beta_{6\text{–}10} = 0.06888\) (p = 0.673)
Nhóm 6–10 năm có cloglog tăng 0.06888 so với 1–5 năm, nhưng không có ý nghĩa thống kê.
\(\displaystyle \hat\beta_{11\text{–}15} = 0.15744\) (p = 0.333)
Nhóm 11–15 năm có cloglog tăng 0.15744, nhưng cũng không có ý nghĩa thống kê.
\(\displaystyle \hat\beta_{>15} = 0.64604\) (p = 3.84e-07)
Nhóm trên 15 năm có cloglog tăng thêm 0.64604, có ý nghĩa mạnh.
Khi đó: \[
\log\bigl(-\log(1 - \pi)\bigr)
= -0.56116 + 0.64604 = 0.08488,
\quad
\pi_{>15}
= 1 - \exp\bigl(-\exp(0.08488)\bigr)
\approx 1 - \exp(-1.089)\approx 66{,}4\%.
\]
Vậy chỉ nhóm có trên 15 năm kinh nghiệm cho thấy tác động có ý nghĩa, làm tăng xác suất nhận lương cao lên khoảng 66,4 %.
# Tính AIC cho các mô hình trình độ học vấn
aic_values3 <- data.frame(
Model = c("LPM_Exp", "Logit_Exp", "Probit_Exp"),
AIC = c(AIC(lpm_Exp), AIC(logit_Exp), AIC(probit_Exp))
)
print(aic_values3)
## Model AIC
## 1 LPM_Exp 1402.534
## 2 Logit_Exp 1335.961
## 3 Probit_Exp 1335.961
# Tính BIC cho các mô hình trình độ học vấn
bic_values3 <- data.frame(
Model = c("LPM_Exp", "Logit_Exp", "Probit_Exp"),
BIC = c(BIC(lpm_Exp), BIC(logit_Exp), BIC(probit_Exp))
)
print(bic_values3)
## Model BIC
## 1 LPM_Exp 1427.072
## 2 Logit_Exp 1355.592
## 3 Probit_Exp 1355.592
Nhận xét
Cả Logit_Exp và Probit_Exp đều có AIC = 1335.96 và BIC = 1355.59
thấp hơn so với LPM_Exp.
Điều này cho thấy khi xét biến kinh nghiệm, các mô hình phân loại Logit, Probit phù hợp dữ liệu tốt hơn mô hình xác suất tuyến tính (LPM).
Vậy nếu chỉ dùng số năm kinh nghiệm để dự đoán khả năng nhận lương cao, nên chọn Logistic hoặc Probit thay vì LPM để tối ưu độ vừa khít và tránh overfitting.
# 1. Dự đoán xác suất
pred_lpm_exp <- predict(lpm_Exp)
pred_logit_exp <- predict(logit_Exp, type = "response")
pred_probit_exp <- predict(probit_Exp, type = "response")
pred_cloglog_exp <- predict(cloglog_Exp, type = "response")
# 2. Tính Brier Score = trung bình bình phương sai số
brier_lpm_exp <- mean((pred_lpm_exp - d$Sal2)^2)
brier_logit_exp <- mean((pred_logit_exp - d$Sal2)^2)
brier_probit_exp <- mean((pred_probit_exp - d$Sal2)^2)
brier_cloglog_exp <- mean((pred_cloglog_exp - d$Sal2)^2)
# 3. Tổng hợp và in kết quả
brier_results_exp <- data.frame(
Model = c("LPM_Exp", "Logit_Exp", "Probit_Exp", "Cloglog_Exp"),
Brier_Score = c(brier_lpm_exp, brier_logit_exp, brier_probit_exp, brier_cloglog_exp)
)
print(brier_results_exp)
## Model Brier_Score
## 1 LPM_Exp 0.2356651
## 2 Logit_Exp 0.2356651
## 3 Probit_Exp 0.2356651
## 4 Cloglog_Exp 0.2356651
Nhận xét
Cả bốn mô hình—Xác suất Tuyến tính (LPM), Logit, Probit và Cloglog—đều cho Brier Score bằng 0.23567, nghĩa là mức độ chính xác dự báo xác suất nhận lương cao của các mô hình này là tương đương.
Vì Brier Score càng nhỏ càng tốt, không có mô hình nào vượt trội về độ chính xác so với các mô hình còn lại khi chỉ xét biến kinh nghiệm.
## 2. Logistic (Logit)
pred_logit_exp <- ifelse(predict(logit_Exp, type = "response") >= 0.5, 1, 0)
cat("### Logit_Exp\n")
## ### Logit_Exp
Conf(table(Prediction = pred_logit_exp, Actual = d$Sal2))
##
## Confusion Matrix and Statistics
##
## Actual
## Prediction 0 1
## 0 273 231
## 1 167 329
##
## Total n : 1'000
## Accuracy : 0.6020
## 95% CI : (0.5713, 0.6319)
## No Information Rate : 0.5600
## P-Value [Acc > NIR] : 0.0040
##
## Kappa : 0.2048
## Mcnemar's Test P-Value : 0.0016
##
## Sensitivity : 0.6205
## Specificity : 0.5875
## Pos Pred Value : 0.5417
## Neg Pred Value : 0.6633
## Prevalence : 0.4400
## Detection Rate : 0.5040
## Detection Prevalence : 0.2730
## Balanced Accuracy : 0.6040
## F-val Accuracy : 0.5784
## Matthews Cor.-Coef : 0.2065
##
## 'Positive' Class : 0
Nhận xét
Mô hình dự đoán đúng nhóm Low (0) 273 lần và đúng nhóm High (1) 329 lần.
Mô hình dự báo sai nhóm High (thực tế High nhưng dự đoán Low) 231 lần và sai nhóm Low (thực tế Low nhưng dự đoán High) 167 lần.
Tổng số dự đoán đúng là 602 trên 1 000 quan sát, tức 60,20 % (95 % CI: 57,13 %–63,19 %).
Độ nhạy với nhóm Low (Sensitivity) = 62,05 %, độ đặc hiệu với nhóm High (Specificity) = 58,75 %.
Precision cho nhóm Low (PPV) = 54,17 %, cho nhóm High (NPV) = 66,33 %.
Balanced Accuracy = 60,40 %, F-val Accuracy = 57,84 %, Matthews Corr. Coef. = 0,2065.
Mô hình Logit_Exp có độ chính xác tổng thể khoảng 60 %, thể hiện khả năng phân biệt hai nhóm vẫn còn giới hạn. Tỷ lệ nhận diện đúng nhóm Low (62 %) chỉ nhỉnh hơn đôi chút so với nhóm High (58,8 %).
# Phân tích xác suất đạt mức lương cao theo Edu + Gender + ExpGroup
lpm <- lm(Sal2 ~ Edu + Gender + ExpGroup, data = d)
# Kết quả tóm tắt
summary(lpm)
##
## Call:
## lm(formula = Sal2 ~ Edu + Gender + ExpGroup, data = d)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.91489 -0.19970 -0.01052 0.11012 0.98948
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.01906 0.03192 -0.597 0.551
## EduĐại học 0.26419 0.02958 8.931 < 2e-16 ***
## EduThạc sĩ 0.71519 0.02995 23.877 < 2e-16 ***
## EduTiến sĩ 0.89038 0.02963 30.050 < 2e-16 ***
## GenderMale -0.01101 0.02110 -0.522 0.602
## ExpGroup6-10 years 0.02958 0.03579 0.826 0.409
## ExpGroup11-15 years 0.05579 0.03625 1.539 0.124
## ExpGroup>15 years 0.21876 0.02876 7.606 6.55e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.333 on 992 degrees of freedom
## Multiple R-squared: 0.5537, Adjusted R-squared: 0.5505
## F-statistic: 175.8 on 7 and 992 DF, p-value: < 2.2e-16
Nhận xét
\[ \operatorname{logit}(p) = \hat{y} = -0{,}01906 + 0{,}26419 \, \text{Đại học} + 0{,}71519 \, \text{Thạc sĩ} + 0{,}89038 \, \text{Tiến sĩ} - 0{,}01101 \, \text{Male} + 0{,}02958 \, \text{(6–10 năm)} + 0{,}05579 \, \text{(11–15 năm)} + 0{,}21876 \, \text{(>15 năm)} \]
Đại học: Estimate = 0,26419 (p < 2e-16) ⇒ Có ý nghĩa: tốt nghiệp Đại học làm tăng xác suất nhận lương cao thêm 26,4 % so với nhóm chuyên gia THPT.
Thạc sĩ: Estimate = 0,71519 (p < 2e-16) ⇒ Có ý nghĩa: tốt nghiệp Thạc sĩ làm tăng xác suất nhận lương cao thêm 71,5 % so với nhóm chuyên gia THPT.
Tiến sĩ: Estimate = 0,89038 (p < 2e-16) ⇒ Có ý nghĩa: có học vị Tiến sĩ làm tăng xác suất nhận lương cao thêm 89,0 % so với nhóm chuyên gia THPT.
Trên 15 năm kinh nghiệm: Estimate = 0,21876 (p = 6,55e-14) ⇒ Có ý nghĩa: trên 15 năm kinh nghiệm làm tăng xác suất nhận lương cao thêm 21,9 % so với nhóm có 1–5 năm kinh nghiệm.
Giới tính (Male): Estimate = –0,01101 (p = 0,602) ⇒ Không có ý nghĩa: khác biệt giữa nam và nữ không đáng kể.
6–10 năm kinh nghiệm: Estimate = 0,02958 (p = 0,409) ⇒ Không có ý nghĩa: nhóm này không khác biệt rõ rệt so với 1–5 năm.
11–15 năm kinh nghiệm: Estimate = 0,05579 (p = 0,124) ⇒ Không có ý nghĩa: nhóm này cũng không khác biệt đáng kể so với 1–5 năm.
Intercept: Estimate = –0,01906 (p = 0,551) ⇒ Không có ý nghĩa: giá trị cơ bản không rõ ràng.
Vậy trong số tất cả các biến, chỉ có “Đại học”, “Thạc sĩ”, “Tiến sĩ” và “trên 15 năm kinh nghiệm” là những yếu tố tác động có ý nghĩa lên xác suất nhận lương cao.
# Ước lượng xác suất đạt mức lương cao theo Edu + Gender + ExpGroup
logit <- glm(Sal2 ~ Edu + Gender + ExpGroup, data = d, family = binomial(link = "logit"))
# Kết quả tóm tắt
summary(logit)
##
## Call:
## glm(formula = Sal2 ~ Edu + Gender + ExpGroup, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.7616 0.3635 -10.347 < 2e-16 ***
## EduĐại học 1.8608 0.2657 7.004 2.49e-12 ***
## EduThạc sĩ 4.3105 0.3121 13.813 < 2e-16 ***
## EduTiến sĩ 7.7774 0.7628 10.195 < 2e-16 ***
## GenderMale -0.1292 0.1965 -0.658 0.5109
## ExpGroup6-10 years 0.4361 0.3470 1.256 0.2089
## ExpGroup11-15 years 0.6490 0.3550 1.828 0.0675 .
## ExpGroup>15 years 2.1824 0.3080 7.086 1.38e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.86 on 999 degrees of freedom
## Residual deviance: 663.39 on 992 degrees of freedom
## AIC: 679.39
##
## Number of Fisher Scoring iterations: 7
Nhận xét
\[ \ln\frac{\hat\pi}{1 - \hat\pi} = -3.7616 \;+\;1.8608\,\mathrm{I(Edu = Đại\ học)} \;+\;4.3105\,\mathrm{I(Edu = Thạc\ sĩ)} \;+\;7.7774\,\mathrm{I(Edu = Tiến\ sĩ)} \;-\;0.1292\,\mathrm{I(Male)} \;+\;0.4361\,\mathrm{I(6\text{–}10\ năm)} \;+\;0.6490\,\mathrm{I(11\text{–}15\ năm)} \;+\;2.1824\,\mathrm{I(>15\ năm)} \]
\(\displaystyle \hat\beta_0 = -3.7616\) (p < 2e-16)
Đây là log-odds nhận lương cao cho chuyên gia THPT, nữ, có 1–5 năm
kinh nghiệm (nhóm tham chiếu). Quy về xác suất:
\[
p_{\text{THPT, 1–5 năm, Female}}
= \frac{e^{-3.7616}}{1 + e^{-3.7616}}
\approx 2{,}3\%
\]
\(\displaystyle \hat\beta_{\text{Đại học}} = 1.8608\) (p < 2e-16)
Tốt nghiệp Đại học làm log-odds nhận lương cao tăng thêm 1.8608 so với THPT.
\(\displaystyle \hat\beta_{\text{Thạc sĩ}} = 4.3105\) (p < 2e-16)
Tốt nghiệp Thạc sĩ làm log-odds tăng thêm 4.3105 so với THPT.
\(\displaystyle \hat\beta_{\text{Tiến sĩ}} = 7.7774\) (p < 2e-16)
Có học vị Tiến sĩ làm log-odds tăng thêm 7.7774 so với THPT.
\(\displaystyle \hat\beta_{\text{Male}} = -0.1292\) (p = 0.5109)
Nam giới có log-odds thấp hơn nữ 0.1292, nhưng không có ý nghĩa thống kê.
\(\displaystyle \hat\beta_{6\text{–}10\ năm} = 0.4361\) (p = 0.2089)
Nhóm kinh nghiệm 6–10 năm log-odds cao hơn nhóm 1–5 năm 0.4361, không có ý nghĩa.
\(\displaystyle \hat\beta_{11\text{–}15\ năm} = 0.6490\) (p = 0.0675)
Nhóm 11–15 năm log-odds cao hơn nhóm 1–5 năm 0.6490, có xu hướng nhưng chỉ ở mức biên.
-\(\displaystyle \hat\beta_{>15\ năm} = 2.1824\) (p < 1e-11)
Kinh nghiệm >15 năm làm log-odds tăng thêm 2.1824, có ý nghĩa rất mạnh.
Vậy trong mô hình đa biến, trình độ học vấn Đại học, Thạc sĩ, Tiến sĩ và trên 15 năm kinh nghiệm là những yếu tố duy nhất có ý nghĩa thống kê, làm tăng mạnh xác suất nhận lương cao. Giới tính và các nhóm kinh nghiệm 6–15 năm không đóng góp đáng kể.
probit <- glm(Sal2 ~ Edu + Gender + ExpGroup, data = d, family = binomial(link = "probit"))
summary(probit)
##
## Call:
## glm(formula = Sal2 ~ Edu + Gender + ExpGroup, family = binomial(link = "probit"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.18735 0.19597 -11.162 < 2e-16 ***
## EduĐại học 1.07917 0.14669 7.357 1.89e-13 ***
## EduThạc sĩ 2.52404 0.16510 15.288 < 2e-16 ***
## EduTiến sĩ 4.22373 0.32158 13.134 < 2e-16 ***
## GenderMale -0.06839 0.11164 -0.613 0.5402
## ExpGroup6-10 years 0.26376 0.19386 1.361 0.1736
## ExpGroup11-15 years 0.39386 0.19803 1.989 0.0467 *
## ExpGroup>15 years 1.26310 0.16874 7.485 7.14e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.86 on 999 degrees of freedom
## Residual deviance: 660.32 on 992 degrees of freedom
## AIC: 676.32
##
## Number of Fisher Scoring iterations: 7
Nhận xét
Ta có kết quả ước lượng từ mô hình Probit đa biến như sau:
\[ \Phi^{-1}(\hat\pi) = -2.18735 \;+\;1.07917\,\mathrm{I(Edu=Đại\ học)} \;+\;2.52404\,\mathrm{I(Edu=Thạc\ sĩ)} \;+\;4.22373\,\mathrm{I(Edu=Tiến\ sĩ)} \;-\;0.06839\,\mathrm{I(Male)} \;+\;0.26376\,\mathrm{I(6\text{–}10\,năm)} \;+\;0.39386\,\mathrm{I(11\text{–}15\,năm)} \;+\;1.26310\,\mathrm{I(>15\,năm)} \]
\(\hat\beta_0 = -2.18735\) (p
< 2e-16)
Đây là giá trị \(z\) Probit cho nhóm
tham chiếu (THPT, Female, 1–5 năm kinh nghiệm).
Quy sang xác suất:
\[
p_0 = \Phi(-2.18735) \approx 0.0144 \;(1{,}44\%)
\]
Nghĩa là nhóm này chỉ có ~1,4 % cơ hội nhận mức lương cao.
\(\hat\beta_{\text{Đại học}} = 1.07917\) (p < 2e-16)
Tốt nghiệp Đại học làm \(z\) tăng
thêm 1.07917.
Khi đó \(z = -2.18735 + 1.07917 =
-1.10818\), và
\[
p_{\text{ĐH}} = \Phi(-1.10818) \approx 0.133 \;(13{,}3\%)
\]
\(\hat\beta_{\text{Thạc sĩ}} = 2.52404\) (p < 2e-16)
Tốt nghiệp Thạc sĩ làm \(z\) tăng
thêm 2.52404.
Khi đó \(z = -2.18735 + 2.52404 =
0.33669\), và
\[
p_{\text{ThS}} = \Phi(0.33669) \approx 0.631 \;(63{,}1\%)
\]
\(\hat\beta_{\text{Tiến sĩ}} = 4.22373\) (p < 2e-16)
Có học vị Tiến sĩ làm \(z\) tăng
4.22373.
Khi đó \(z = -2.18735 + 4.22373 =
2.03638\), và
\[
p_{\text{TS}} = \Phi(2.03638) \approx 0.979 \;(97{,}9\%)
\]
\(\hat\beta_{\text{Male}} = -0.06839\) (p = 0.5402)
Không có ý nghĩa.
\(\displaystyle \hat\beta_{6\text{–}10\ năm} = 0.26376\) (p = 0.1736)
Không có ý nghĩa.
\(\displaystyle \hat\beta_{11\text{–}15\ năm} = 0.39386\) (p = 0.0467)
Có ý nghĩa ở mức 5 %: nhóm này \(z\)
tăng 0.39386 →
\[
z = -2.18735 + 0.39386 = -1.79349,\quad
p = \Phi(-1.79349) \approx 0.0366\;(3{,}66\%)
\]
\(\displaystyle \hat\beta_{trên\,15\
năm} = 1.26310\) (p < 1e-13)
Rất có ý nghĩa: nhóm này \(z\) tăng
1.26310 →
\[
z = -2.18735 + 1.26310 = -0.92425,\quad
p = \Phi(-0.92425) \approx 0.177\;(17{,}7\%)
\]
Trình độ học vấn (Đại học, Thạc sĩ, Tiến sĩ) là nhân tố chủ đạo, làm xác suất nhận lương cao tăng từ ~1,4 % (THPT) lên ~13,3 % (ĐH), ~63,1 % (ThS) và ~97,9 % (TS).
Nhóm 11–15 năm kinh nghiệm có tác động yếu (p ≈ 0,047), và trên 15 năm cũng có ý nghĩa nhưng mức tăng xác suất tương đối nhỏ so với học vấn.
Giới tính và kinh nghiệm 6–10 năm không có ý nghĩa thống kê.
cloglog <- glm(Sal2 ~ Edu + Gender + ExpGroup, data = d, family = binomial(link = "cloglog"))
summary(cloglog)
##
## Call:
## glm(formula = Sal2 ~ Edu + Gender + ExpGroup, family = binomial(link = "cloglog"),
## data = d)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.27001 0.26853 -12.178 < 2e-16 ***
## EduĐại học 1.53438 0.22975 6.679 2.41e-11 ***
## EduThạc sĩ 3.10157 0.22997 13.487 < 2e-16 ***
## EduTiến sĩ 4.55325 0.30135 15.109 < 2e-16 ***
## GenderMale -0.04032 0.12463 -0.324 0.7463
## ExpGroup6-10 years 0.32689 0.21271 1.537 0.1243
## ExpGroup11-15 years 0.43473 0.21822 1.992 0.0464 *
## ExpGroup>15 years 1.44941 0.19332 7.498 6.50e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1371.86 on 999 degrees of freedom
## Residual deviance: 659.83 on 992 degrees of freedom
## AIC: 675.83
##
## Number of Fisher Scoring iterations: 8
Nhận xét
\[ \log\bigl(-\log(1 - \hat\pi)\bigr) = -3.27001 \;+\;1.53438\,\mathrm{I(Edu=Đại\ học)} \;+\;3.10157\,\mathrm{I(Edu=Thạc\ sĩ)} \;+\;4.55325\,\mathrm{I(Edu=Tiến\ sĩ)} \;-\;0.04032\,\mathrm{I(Male)} \;+\;0.32689\,\mathrm{I(6\text{–}10\,năm)} \;+\;0.43473\,\mathrm{I(11\text{–}15\,năm)} \;+\;1.44941\,\mathrm{I(>15\,năm)} \]
\(\displaystyle \hat\beta_0 = -3.27001\) (p < 2e-16)
Đây là giá trị cloglog cho nhóm tham chiếu (THPT, Female, 1–5 năm).
Chuyển lại xác suất:
\[
\hat\pi_0
= 1 - \exp\bigl(-\exp(-3.27001)\bigr)
\approx 1 - \exp(-0.038)\approx 3{,}7\%
\]
Nhóm này có khoảng 3,7 % cơ hội nhận lương cao.
\(\displaystyle \hat\beta_{\text{Đại học}} = 1.53438\) (p < 2e-16)
Tốt nghiệp Đại học làm cloglog tăng thêm 1.53438,
tức
\[
\eta = -3.27001 + 1.53438 = -1.73563
\quad\Longrightarrow\quad
\hat\pi_{\text{ĐH}} = 1 - \exp\bigl(-e^{-1.73563}\bigr)
\approx 16{,}1\%
\]
\(\displaystyle \hat\beta_{\text{Thạc sĩ}} = 3.10157\) (p < 2e-16)
Tốt nghiệp Thạc sĩ làm cloglog tăng thêm 3.10157,
tức
\[
\eta = -3.27001 + 3.10157 = -0.16844
\quad\Longrightarrow\quad
\hat\pi_{\text{ThS}} = 1 - \exp\bigl(-e^{-0.16844}\bigr)
\approx 57{,}0\%
\]
\(\displaystyle \hat\beta_{\text{Tiến sĩ}} = 4.55325\) (p < 2e-16)
Tốt nghiệp Tiến sĩ làm cloglog tăng thêm 4.55325,
tức
\[
\eta = -3.27001 + 4.55325 = 1.28324
\quad\Longrightarrow\quad
\hat\pi_{\text{TS}} = 1 - \exp\bigl(-e^{1.28324}\bigr)
\approx 97{,}3\%
\]
\(\displaystyle \hat\beta_{\ Male} = -0.04032\) (p = 0.7463)
Không có ý nghĩa — nam và nữ không khác biệt đáng kể.
\(\displaystyle \hat\beta_{6\text{–}10\
năm} = 0.32689\) (p = 0.1243)
Không có ý nghĩa.
\(\displaystyle
\hat\beta_{11\text{–}15\ năm} = 0.43473\) (p = 0.0464)
Có ý nghĩa ở mức 5 %. Nhóm này:
\[
\eta = -3.27001 + 0.43473 = -2.83528
\;\Longrightarrow\;
\hat\pi_{11\text{–}15} \approx 5{,}7\%
\]
\(\displaystyle \hat\beta_{trên 15\
năm} = 1.44941\) (p < 1e-13)
Rất có ý nghĩa. Nhóm này:
\[
\eta = -3.27001 + 1.44941 = -1.82060
\;\Longrightarrow\;
\hat\pi_{>15} \approx 14{,}9\%
\]
vậy học vấn Đại học, Thạc sĩ, Tiến sĩ và nhóm kinh nghiệm 11–15, >15 năm là những yếu tố có ý nghĩa, trong đó học vị tác động mạnh nhất, tăng xác suất nhận lương cao từ ~3,7 % (THPT) lên ~16,1 % (ĐH), ~57,0 % (ThS) và ~97,3 % (TS). Kinh nghiệm >15 năm cũng gia tăng xác suất lên ~14,9 %, trong khi giới tính và nhóm kinh nghiệm 6–10 năm không có ý nghĩa.
# So sánh AIC giữa các mô hình
aic <- data.frame(
Model = c("LPM", "Logit", "Probit", "Cloglog"),
AIC = c(
AIC(lpm),
AIC(logit),
AIC(probit),
AIC(cloglog)
)
)
print(aic)
## Model AIC
## 1 LPM 648.3946
## 2 Logit 679.3939
## 3 Probit 676.3170
## 4 Cloglog 675.8292
# So sánh bIC giữa các mô hình
bic <- data.frame(
Model = c("LPM", "Logit", "Probit", "Cloglog"),
BIC = c(
BIC(lpm),
BIC(logit),
BIC(probit),
BIC(cloglog)
)
)
print(bic)
## Model BIC
## 1 LPM 692.5644
## 2 Logit 718.6559
## 3 Probit 715.5790
## 4 Cloglog 715.0913
Nhận xét
Trong nhóm các mô hình đa biến (kết hợp Edu, Gender, ExpGroup), LPM có AIC thấp nhất (648.39) và BIC thấp nhất (692.56), cho thấy mô hình xác suất tuyến tính phù hợp với dữ liệu nhất.
Ba mô hình phân loại (Logit, Probit, Cloglog) đều có AIC xấp xỉ 675–679 và BIC xấp xỉ 715- 718, nghĩa là tương đương nhau về độ phù hợp nhưng kém hơn LPM.
Vậy về khía cạnh AIC và BIC, mô hình LPM đa biến là lựa chọn tốt nhất nếu ưu tiên tính giải thích trực tiếp, LPM vừa cho AIC, BIC thấp nhất vừa dễ diễn giải hệ số.
# Tính Brier Score cho từng mô hình
pred_lpm <- predict(lpm)
pred_logit <- predict(logit, type = "response")
pred_probit <- predict(probit, type = "response")
pred_cloglog <- predict(cloglog, type = "response")
brier <- data.frame(
Model = c("LPM", "Logit", "Probit", "Cloglog"),
Brier_Score = c(
mean((pred_lpm - d$Sal2)^2),
mean((pred_logit - d$Sal2)^2),
mean((pred_probit - d$Sal2)^2),
mean((pred_cloglog- d$Sal2)^2)
)
)
print(brier)
## Model Brier_Score
## 1 LPM 0.1099772
## 2 Logit 0.1069117
## 3 Probit 0.1067306
## 4 Cloglog 0.1065310
Nhận xét
Brier Score đo trung bình bình phương sai số giữa xác suất dự báo và thực tế, giá trị nhỏ hơn chứng tỏ dự báo chính xác hơn.
Trong bốn mô hình, Cloglog có Brier Score thấp nhất (0.10653), cho thấy khả năng dự báo xác suất nhận lương cao tốt nhất.
Tiếp theo là Probit (0.10673) và Logit (0.10692), rất sát nhau, và LPM có Brier Score cao nhất (0.10998), nghĩa là sai số dự báo hơi lớn hơn.
Vậy về độ chính xác dự báo, mô hình Cloglog vượt trội nhất, tiếp đến là Probit và Logit, trong khi LPM cho độ chính xác hơi thấp hơn.
# Ma trận nhầm lẫn cho mỗi mô hình với ngưỡng 0.5
# LPM
pred_lpm <- ifelse(pred_lpm >= 0.5, 1, 0)
cat("### LPM")
## ### LPM
Conf(table(Prediction = pred_lpm, Actual = d$Sal2))
##
## Confusion Matrix and Statistics
##
## Actual
## Prediction 0 1
## 0 392 116
## 1 48 444
##
## Total n : 1'000
## Accuracy : 0.8360
## 95% CI : (0.8118, 0.8577)
## No Information Rate : 0.5600
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.6726
## Mcnemar's Test P-Value : 1.68e-07
##
## Sensitivity : 0.8909
## Specificity : 0.7929
## Pos Pred Value : 0.7717
## Neg Pred Value : 0.9024
## Prevalence : 0.4400
## Detection Rate : 0.5080
## Detection Prevalence : 0.3920
## Balanced Accuracy : 0.8419
## F-val Accuracy : 0.8270
## Matthews Cor.-Coef : 0.6789
##
## 'Positive' Class : 0
Nhận xét
Mô hình LPM dự đoán đúng nhóm Low (0,0) 392 lần và đúng nhóm High (1,1) 444 lần.
Mô hình sai nhóm High (thực tế High nhưng dự đoán Low) 116 lần và sai nhóm Low (thực tế Low nhưng dự đoán High) 48 lần.
Tổng số dự đoán đúng là 836 trên 1 000 quan sát, tức 83,6 % (95 % CI: 81,18 %–85,77 %).
Độ nhạy với nhóm Low (Sensitivity) = 89,09 %, độ đặc hiệu với nhóm High (Specificity) = 79,29 %.
Precision cho Low (PPV) = 77,17 %, cho High (NPV) = 90,24 %.
Balanced Accuracy = 84,19 %, Kappa = 0,6726, MCC = 0,6789.
Khoảng cách giữa hai nhóm
Với nhóm Low, mô hình chính xác 89,09 %; với nhóm High, chỉ 79,29 %.
Hiệu số là 9,8 %, cho thấy mô hình mạnh hơn khi nhận diện lương thấp và dễ bỏ sót lương cao.
Mô hình LPM cho kết quả rất tốt tổng thể, nhất là với nhóm Low, nhưng cần cải thiện thêm để giảm sai sót cho nhóm High.
# Logit
pred_logit <- ifelse(pred_logit >= 0.5, 1, 0)
cat("\n### Logit")
##
## ### Logit
Conf(table(Prediction = pred_logit, Actual = d$Sal2))
##
## Confusion Matrix and Statistics
##
## Actual
## Prediction 0 1
## 0 330 50
## 1 110 510
##
## Total n : 1'000
## Accuracy : 0.8400
## 95% CI : (0.8160, 0.8614)
## No Information Rate : 0.5600
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.6705
## Mcnemar's Test P-Value : 3.1e-06
##
## Sensitivity : 0.7500
## Specificity : 0.9107
## Pos Pred Value : 0.8684
## Neg Pred Value : 0.8226
## Prevalence : 0.4400
## Detection Rate : 0.3800
## Detection Prevalence : 0.3300
## Balanced Accuracy : 0.8304
## F-val Accuracy : 0.8049
## Matthews Cor.-Coef : 0.6757
##
## 'Positive' Class : 0
# Probit
pred_probit <- ifelse(pred_probit >= 0.5, 1, 0)
cat("\n### Probit")
##
## ### Probit
Conf(table(Prediction = pred_probit, Actual = d$Sal2))
##
## Confusion Matrix and Statistics
##
## Actual
## Prediction 0 1
## 0 330 50
## 1 110 510
##
## Total n : 1'000
## Accuracy : 0.8400
## 95% CI : (0.8160, 0.8614)
## No Information Rate : 0.5600
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.6705
## Mcnemar's Test P-Value : 3.1e-06
##
## Sensitivity : 0.7500
## Specificity : 0.9107
## Pos Pred Value : 0.8684
## Neg Pred Value : 0.8226
## Prevalence : 0.4400
## Detection Rate : 0.3800
## Detection Prevalence : 0.3300
## Balanced Accuracy : 0.8304
## F-val Accuracy : 0.8049
## Matthews Cor.-Coef : 0.6757
##
## 'Positive' Class : 0
# Cloglog
pred_cloglog <- ifelse(pred_cloglog >= 0.5, 1, 0)
cat("\n### Cloglog")
##
## ### Cloglog
Conf(table(Prediction = pred_cloglog, Actual = d$Sal2))
##
## Confusion Matrix and Statistics
##
## Actual
## Prediction 0 1
## 0 330 50
## 1 110 510
##
## Total n : 1'000
## Accuracy : 0.8400
## 95% CI : (0.8160, 0.8614)
## No Information Rate : 0.5600
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.6705
## Mcnemar's Test P-Value : 3.1e-06
##
## Sensitivity : 0.7500
## Specificity : 0.9107
## Pos Pred Value : 0.8684
## Neg Pred Value : 0.8226
## Prevalence : 0.4400
## Detection Rate : 0.3800
## Detection Prevalence : 0.3300
## Balanced Accuracy : 0.8304
## F-val Accuracy : 0.8049
## Matthews Cor.-Coef : 0.6757
##
## 'Positive' Class : 0
Nhận xét
Độ chính xác (Accuracy) của Logit, Probit và Cloglog đều đạt 84,0 %, cao hơn một chút so với LPM (83,6 %).
Độ nhạy (Sensitivity) và Độ đặc hiệu (Specificity) thể hiện cách mỗi mô hình phân biệt hai nhóm:
LPM: rất mạnh với nhóm Low (Sensitivity = 89,1 %) nhưng yếu hơn với nhóm High (Specificity = 79,3 %).
Logit/Probit/Cloglog: Nhận diện Low ở mức 75,0 % và High ở mức 91,1 %.
Balanced Accuracy (trung bình của Sensitivity và Specificity) cho thấy:
LPM = 84,19 %
Logit/Probit/Cloglog = 83,04 %
Kappa và Matthews Correlation Coefficient (MCC) đều xấp xỉ 0,67, cho thấy mức độ tương đồng giữa dự đoán và thực tế là khá cao, ít thiên lệch.
P-Value [Acc > NIR] rất nhỏ (p < 2×10⁻¹⁶), khẳng định cả bốn mô hình đều vượt trội so với việc “đoán ngẫu nhiên” (No Information Rate = 56 %).
Vậy nếu ưu tiên tổng thể, các mô hình Logit, Probit và Cloglog nhỉnh hơn LPM về Accuracy. Còn nếu cần tối đa hoá phát hiện nhóm Low, LPM là lựa chọn; nếu cần giảm bỏ sót nhóm High, Logit/Probit/Cloglog sẽ phù hợp hơn và về cơ bản thì ba mô hình liên kết (Logit, Probit, Cloglog) cho kết quả gần như nhau.
Kết quả nghiên cứu trên bộ dữ liệu “Salaries in Data Science” với 1.000 chuyên gia cho thấy rõ ràng trình độ học vấn và kinh nghiệm là hai nhân tố chủ chốt định hình cơ hội nhận mức lương cao, trong khi giới tính không tác động đáng kể. Cụ thể, những người chỉ có bằng THPT gần như khó tiếp cận mức lương cao, với xác suất chỉ khoảng 9–10%. Khi đạt bằng Đại học, xác suất này tăng lên xấp xỉ 36%, rồi vọt lên khoảng 81% với bằng Thạc sĩ và gần như chắc chắn khoảng 99% với bằng Tiến sĩ. Mô hình hồi quy (Linear Probability Model, Logit, Probit và Cloglog) đều khẳng định hệ số của ba cấp học vị này đều đạt ý nghĩa thống kê rất mạnh, cho thấy đầu tư vào học vấn là con đường hiệu quả nhất để nâng cao thu nhập trong ngành Data Science.
Ở khía cạnh kinh nghiệm, chỉ khi vượt quá ngưỡng 15 năm công tác, chuyên gia mới có sự nhảy vọt về xác suất nhận mức lương cao tăng thêm khoảng 21–23% trong mô hình tuyến tính và tương ứng với mức tăng về log-odds có ý nghĩa trong các mô hình phân loại. Ngược lại, những khoảng kinh nghiệm ngắn hơn (6–10 năm, 11–15 năm) tuy có dấu hiệu cải thiện so với nhóm 1–5 năm nhưng không đồng nhất đạt ý nghĩa thống kê trong mô hình đa biến. Điều này cho thấy kinh nghiệm càng dày dạn, đặc biệt khi vượt mốc 15 năm, mới thực sự tạo ra giá trị gia tăng rõ rệt về mức thu nhập.
Về giới tính, các kiểm định chi-square, chênh lệch tỉ lệ, odds ratio và các mô hình hồi quy đều nhất quán kết luận rằng nam và nữ có xác suất nhận lương cao xấp xỉ 56%, với hệ số biến “Male” luôn không đạt ý nghĩa thống kê. Như vậy, dữ liệu không ghi nhận bất kỳ bất lợi nào cho nữ giới trong việc tiếp cận mức lương cao tại thời điểm khảo sát.
Khi so sánh hiệu quả các mô hình, Linear Probability Model (LPM) thường cho AIC thấp nhất và hệ số dễ diễn giải; tuy nhiên, mô hình Cloglog lại chiếm ưu thế về Brier Score—một thước đo độ chính xác của dự báo xác suất. Về độ chính xác phân loại (accuracy), cả LPM lẫn ba mô hình phân loại Logit, Probit, Cloglog đều đạt xấp xỉ 84%, trong đó LPM mạnh hơn khi dự báo nhóm lương thấp, còn Logit/Probit/Cloglog có lợi thế nhỏ trong nhận diện nhóm lương cao.
Từ kết quả này, có thể khẳng định rằng việc tiếp tục nâng cao học vấn lên bậc cao hơn và tích lũy kinh nghiệm dày dạn là chiến lược thiết thực để các chuyên gia Data Science tăng cơ hội đạt mức lương cao. Đồng thời, ngành hiện đang vận hành công bằng giữa hai giới về thu nhập. Nghiên cứu còn mở ra nhiều hướng phát triển tiếp theo, như đưa vào phân tích tương tác giữa các yếu tố, bổ sung biến địa lý và chức danh công việc, hoặc ứng dụng mô hình đa cấp để hiểu sâu hơn về cơ chế định giá lao động trong bối cảnh doanh nghiệp và khu vực địa lý khác nhau.
Nghiên cứu này đã đóng góp cái nhìn toàn diện và cập nhật về các yếu tố ảnh hưởng đến mức lương của chuyên gia ngành Khoa học Dữ liệu thông qua việc khai thác bộ dữ liệu “Salaries in Data Science” gồm 1.000 quan sát toàn cầu. Trước hết, việc phân tích đồng thời ba yếu tố—trình độ học vấn, số năm kinh nghiệm và giới tính—giúp khẳng định học vấn và kinh nghiệm là hai nhân tố chủ đạo, trong khi yếu tố giới tính không cho thấy tác động có ý nghĩa thống kê. Việc ứng dụng đa dạng các phương pháp từ hồi quy tuyến tính đơn giản đến các mô hình phân loại như Logit, Probit và Cloglog không chỉ cung cấp cái nhìn đa chiều về cơ chế tác động của từng biến mà còn so sánh hiệu quả của từng mô hình qua tiêu chí AIC, Brier Score và ma trận nhầm lẫn. Nhờ đó, nghiên cứu góp phần làm rõ ưu nhược điểm của mỗi cách tiếp cận trong bối cảnh dữ liệu nhị phân của ngành công nghệ.
Tuy nhiên, nghiên cứu cũng không tránh khỏi một số hạn chế. Trước hết, bộ dữ liệu được lấy từ nền tảng Kaggle có thể chưa phản ánh đầy đủ tính đại diện ở một số khu vực địa lý hoặc cấp bậc chức danh đặc thù. Tiếp đó, việc phân nhóm kinh nghiệm dựa trên bốn khoảng cố định có thể bỏ qua những biến động thu nhập thực tế theo từng năm kinh nghiệm cụ thể. Mô hình phân tích cũng chỉ xem xét các biến chính mà chưa khai thác tương tác sâu giữa học vấn và kinh nghiệm. Cuối cùng, các mô hình hồi quy được xây dựng trên giả định đường cong mối quan hệ tuyến tính (với LPM) hoặc dựa trên các hàm liên kết cố định (với Logit, Probit, Cloglog) có thể chưa hoàn toàn phù hợp khi cơ chế xác suất thực tế phức tạp hơn.
Để tiếp tục mở rộng và làm rõ hơn những phát hiện này, hướng nghiên cứu tiếp theo nên tập trung vào việc bổ sung biến giải thích. Trước hết, việc đưa vào phân tích tương tác giữa trình độ học vấn và số năm kinh nghiệm sẽ giúp khám phá xem liệu một chuyên gia vừa có học vị cao vừa có kinh nghiệm dày dặn có nhận mức lương cao gấp bội như thế nào so với những người chỉ nổi trội ở một trong hai yếu tố. Tiếp theo, nên bổ sung các biến đặc trưng cho chức danh công việc và vị trí địa lý chi tiết hơn—ví dụ tại các trung tâm công nghệ lớn như San Francisco, New York, hay Bangalore—để đánh giá chênh lệch lương theo khu vực và vai trò chuyên môn. Việc khai thác thêm các chứng chỉ chuyên ngành (ví dụ Certified Data Scientist, chuyên ngành Machine Learning) hay kỹ năng mềm và kỹ năng công nghệ cụ thể (như Python, R, SQL) cũng có thể làm rõ hơn tín hiệu giá trên thị trường lao động.
Về mặt phương pháp, có thể áp dụng các mô hình phi tuyến tính hoặc mô hình cây quyết định (decision tree, random forest, gradient boosting) để nắm bắt các quan hệ phức tạp giữa biến giải thích và xác suất nhận lương cao. Cuối cùng, một nghiên cứu dài hạn theo dõi biến động lương qua nhiều năm sẽ giúp đánh giá xu hướng và tác động của chuyển đổi số, sự thay đổi mô hình làm việc (remote, hybrid) và các biến động kinh tế vĩ mô đến thu nhập của chuyên gia Data Science.
Trần Mạnh Tường (2025), Giáo trình Phân tích Dữ liệu Định tính.
Becker, G. S. (1964). Human Capital: A Theoretical and Empirical Analysis, with Special Reference to Education. University of Chicago Press.
Mincer, J. (1974). Schooling, Experience, and Earnings. Columbia University Press.
Spence, M. (1973). Job market signaling. Quarterly Journal of Economics, 87(3), 355–374. https://doi.org/10.2307/1882010
Blau, F. D., & Kahn, L. M. (2000). Gender differences in pay. Journal of Economic Perspectives, 14(4), 75–99. https://doi.org/10.1257/jep.14.4.75
Burtch, G., Carnahan, S., & Greenwood, B. N. (2018). Can you gig it? An empirical examination of the gig‐economy and entrepreneurial activity. Management Science, 64(12), 5497–5520. https://doi.org/10.1287/mnsc.2017.2904
Kaggle. (2022). 2022 State of Data Science. Kaggle Survey. https://www.kaggle.com/kaggle-survey-2022
Stack Overflow. (2023). Stack Overflow Developer Survey Results 2023. https://survey.stackoverflow.co/2023
Kim, J., & Park, S. (2023). Determinants of data scientist salaries in South Korea: Evidence from JobKorea listings. Korea Labor Review, 47(1), 55–78.