Chúng tôi xin cam đoan đề tài tiểu luận môn phân tích dữ liệu định tính “PHÂN TÍCH CÁC YẾU TỐ ẢNH HƯỞNG ĐẾN CÔNG VIỆC KỸ SƯ” là công trình nghiên cứu của nhóm chúng tôi dưới sự hướng dẫn của giảng viên Th.s Trần Mạnh Tường. Những phần sử dụng tài liệu tham khảo trong đề tài đã được trình bày nguồn và dựa trên bài giảng để thực hiện phân tích. Các thông tin số liệu sử trụng trong bài tiểu luận này là trung thực, dữ liệu thực có nguồn gốc rõ ràng. Các kết quả trình bày trong bài tiểu luận hoàn toàn là kết quả do nhóm chúng tôi nghiên cứu và thực thiện. Nếu vi phạm lời cam đoan này, nhóm chúng tôi xin chịu hoàn toàn trách nhiệm.
Trước tiên, nhóm chúng tôi xin 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 chúng 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 Kinh Tế - Luật trường Đại học Tài chính – Marketing đã nhiệt tâm 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 chúng 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ù chúng 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. Sau cùng, nhóm tác giả xin cảm ơn các bạn trong lớp Toán Kinh Tế - 21DTL01 đã giúp đỡ, chia sẻ, động viên để nhóm tác giả hoàn thành bài tiểu luận.
Trước khi phân tích thì chúng tôi sẽ giới thiệu bộ dữ liệu “Data Engineer Salary” được thu thâp trên trang kaggle gồm có những thông tin, biến số để người đọc có sự nhìn nhận tổng quát về nó, điều này giúp việc đánh giá kết quả phân tích trở nên rõ ràng và dễ dàng hơn đối với tất cả mọi người.
Bộ dữ liệu “Data Engineer Salary” cung cấp một số thông tin chi tiết về mức lương và các thuộc tính liên quan đến việc làm của các kỹ sư, dữ liệu bao gồm 11 biến và gồm 16534 quan sát. Chứa các thông tin quan trọng như lương, chức danh công việc, cấp độ kinh nghiệm, loại hình công việc, nơi cư trú của kỹ sư, tỷ lệ làm việc từ xa, địa điểm công ty, và quy mô công ty… Với những dữ liệu này, chúng ta có thể phân tích các xu hướng về lương, mô hình việc làm, và sự khác biệt địa lý trong các vai trò kỹ sư dữ liệu.
Mô tả các đặc trưng của dữ liệu
Experience_level: Thể hiện ý nghĩa về cấp độ kinh nghiệm của kỹ sư, được phân loại như sau
SE (Senior Engineer): Kỹ sư cao cấp
MI (Mid-Level Engineer): Kỹ sư trung cấp
Ex (Executive-Level): Những người kỹ sư điều hành
EN (Entry-Level Engineer): Kỹ sư mới vào nghề
Employment_type: Biến này cho biết hình thức làm việc của các kỹ sư trong đó có ba hình thức như sau.
Job_title: Chức danh hoặc vai trò của kỹ sư trong công ty
Salary: Chỉ số thể hiện mức lương của kỹ sư bằng đơn vị tiền tệ địa phương
Salary_currency: Đơn vị tiền tệ mà mức lương được tính (ví dụ: USD).
Salary_in_usd: Số liệu này cho thấy mức lương của người kỹ sư đã được quy đổi sang đô la Mỹ để chuẩn hóa.
Employee_residence: Biến này thể hiện quốc gia cư trú của kỹ sư.
Remote_ratio: Tỷ lệ cho biết mức độ làm việc từ xa cho phép trong vị trí công việc nếu giá trị 0 đại diện cho không làm việc từ xa. Giá trị 50 có ý nghĩa làm việc từ xa và làm việc tại công ty. Ngược lại 100 nghĩa là làm việc hoàn toàn từ xa.
Company_location: Địa điểm của công ty nơi kỹ sư làm việc.
Company_size: Thể hiện quy mô của công ty, phân loại theo số lượng kỹ sư trong đó
library(readxl)
library(DT)
library(tidyverse)
library(ggplot2)
library(DescTools)
library(epitools)
library(kableExtra)
library(epiR)
data <- read_excel("D:/sv/hk22024/dinhtinh/dataluong.xlsx")
data<- data %>% select(-1)
d <- data
datatable(d)
Trong bối cảnh kinh tế và công nghiệp hiện nay, vai trò của các kỹ sư ngày càng trở nên quan trọng. Họ không chỉ tham gia vào quá trình thiết kế, xây dựng và vận hành các hệ thống kỹ thuật mà còn đóng góp vào sự sáng tạo và cải tiến công nghệ. Tuy nhiên, nghề nghiệp của kỹ sư chịu ảnh hưởng bởi nhiều yếu tố, từ điều kiện làm việc, mức lương, cho đến cơ hội thăng tiến và đào tạo.Vì vậy việc phân tích mức lương của kỹ sư Data Engineer không chỉ giúp các chuyên gia trong ngành nắm bắt được xu hướng thị trường lao động mà còn giúp họ có cái nhìn tổng quan về mức đãi ngộ trong ngành. Điều này giúp họ có thể đánh giá và định vị bản thân tốt hơn trong quá trình tìm kiếm việc làm hoặc đàm phán mức lương với nhà tuyển dụng. Mặt khác, việc nghiên cứu về mức lương của những người kỹ sư giúp các chủ doanh nghiệp xây dựng chính sách lương thưởng phù hợp, cạnh tranh và công bằng hơn. Điều này không chỉ giúp thu hút nhân tài mà còn giữ chân được những nhân viên giỏi, từ đó góp phần nâng cao hiệu suất làm việc và chất lượng sản phẩm. Góp phần tạo ra một thị trường lao động minh bạch nơi mà thông tin về lương, chính sách đãi ngộ đối với những người nhân viên được công khai minh bạch, rõ ràng. Qua đó, giúp người lao động có cơ sở để so sánh và đánh giá, đồng thời tạo điều kiện để các doanh nghiệp cải thiện chính sách đãi ngộ của mình, đảm bảo công bằng và thu hút nhân tài.
Mục tiêu của nghiên cứu này là xác định và phân tích các yếu tố chính ảnh hưởng đến công việc của các kỹ sư. Cụ thể, chúng tôi tập trung vào các khía cạnh như sau, đầu tiên các loại hình thức công việc như toàn thời gian, bán thời gian, công việc tự do hay hợp động ảnh hưởng đến mức lương như nào. Hơn thế, phân tích mức lương giữa các hình thức làm việc như làm việc tại văn phòng, làm việc từ xa và làm việc kết hợp có liên quan như thế nào đến mức lương của kỹ sư. Nhiều nghiên cứu cũng xem xét đến trình độ học vấn của người nhân viên sẽ tác động như thế nào đối với mức lương của họ, vì vậy trong nghiên cứu này cũng tìm hiểu mối quan hệ giữa trình độ đối với mức lương mà kỹ sự đạt được. Cuối cùng, chúng tôi đánh giá sự khác biệt về mức lương giữa các công ty có quy mô khác nhau, từ công ty nhỏ, vừa đến các tập đoàn lớn.
Nghiên cứu sử dụng phương pháp thống kê mô tả để xem tổng quan về bộ dữ liệu nghiên cứu. Tiếp đến xem xét các chỉ số odd ratio, relative risk, bảng tần số để đánh giá mối quan hệ giữa các cặp biến số sẽ ảnh hưởng đến mức lương. Ngoài ra, chúng tôi còn thực hiện các mô hình xác suất tuyến tính, logit và probit để ước tính các xác suất để nhận được mức lương tương ứng.
Kết quả nghiên cứu giúp các kỹ sư hiểu rõ hơn về các yếu tố ảnh hưởng đến mức lương của mình, từ đó có thể đánh giá và định vị bản thân trên thị trường lao động. Cải thiện trình độ học vấn, năng lực canh tranh để đạt được các chính sách và mức lương tốt hơn khi làm việc tại các doanh nghiệp. Mặt khác, Nghiên cứu cung cấp thông tin cần thiết để các kỹ sư có thể xây dựng chiến lược nghề nghiệp hiệu quả, giúp họ lựa chọn loại hình công việc và hình thức làm việc phù hợp với mục tiêu cá nhân. Đối với các doanh nghiệp kết quả nghiên cứu cung cấp thông tin chi tiết về mức lương và các yếu tố tác động, giúp doanh nghiệp xây dựng chính sách lương thưởng cạnh tranh, công bằng và hợp lý. Hơn thế, hiểu rõ hơn về mức lương thị trường và các yếu tố ảnh hưởng, doanh nghiệp có thể điều chỉnh chính sách đãi ngộ để thu hút và giữ chân những nhân viên giỏi, từ đó nâng cao hiệu suất làm việc và chất lượng sản phẩm. Quản trị nguồn nhân lực hiệu quả, tối ưu các chi phí và nâng cao sự hài lòng của nhân viên và khách hàng.
Trước khi phân tích những yếu tố sẽ tác động đến tiền lương của những người kĩ sư chúng ta cần phân nhóm thành ba mức lương là thấp, trung và cao để dễ dàng nhận diện, so sánh. Hơn thế, chúng ta có thể phân tích sâu sắc về cấu trúc tiên lương cũng như là các yếu tố định tính sẽ ảnh hưởng đáng kể đến các mức phân loại tiền lương của các kỹ sư một cách hiệu quả nhất.
d$sal <- cut(d$salary_in_usd,
breaks = c(0, 100000,200000, Inf),
labels = c("thap","trung", "cao"))
Kết quả từ hàm cut()
sẽ giúp phân thành ba nhóm lương từ
số liệu trong cột salary_in_usd và lưu trong một cột mới có tên là
sal cụ thể như sau.
Đầu tiên, chúng tôi sẽ lập bảng tần số cho biến sal nhằm mục đích để nắm bắt được số lượng kỹ sư trong mỗi nhóm lương được chia ở phần trên. Kết quả này cung cấp một cái nhìn tổng quan về cách mức lương được phân phối trong dữ liệu.
table(d$sal) %>% addmargins()
##
## thap trung cao Sum
## 4093 9258 3183 16534
Chúng ta có thể thực hiện vẽ biểu đồ cột thể hiện số lượng kỹ sư ở mỗi nhóm lương khác nhau để trực quan hóa số liệu từ bảng số liệu phía trên. Điều này giúp ta dễ dàng nhận xét và so sánh mỗi nhóm lương với nhau.
s <- as.data.frame(table(d$sal))
colnames(s) <- c("Salary", "Count")
ggplot(s, aes(x = Salary, y = Count, fill = Salary)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
theme_minimal()
Kết quả bảng kết quả trên và bảng tần số cho thấy số lượng kỹ sư có mức lương thấp (từ 0 đến 100,000 USD) là 4093 người. Ở nhóm người có mức lương trung bình tức là từ 100,000 đến 200,000 USD trên năm đạt khoảng 9258 người, chiếm cao nhất trong tổng số người khảo sát. Cuối cùng số lượng kỹ sư có mức lương cao tức trên 200,000 USD là 3183 người, có số lượng thấp nhất trong các nhóm. Tổng số người được khảo sát ở 3 nhóm đạt khoảng 16534 người.
Ngoài ra chúng ta sẽ thực hiện tính tỷ lệ phần trăm cho từng nhóm và vẽ đồ thị cột của chúng để so sánh theo số liệu tương đối
prop.table(table(d$sal))
##
## thap trung cao
## 0.2475505 0.5599371 0.1925124
s$Percentage <- (s$Count / sum(s$Count)) * 100
ggplot(s, aes(x = "", y = Percentage, fill = Salary)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Dựa vào độ thị tròn và bảng kết quả trên ta có thể thấy nhóm chiếm tỷ lệ cao nhất trong tổng số người là nhóm mức lương trung đạt khoảng 55,99%. Tiếp theo đó là nhóm có mức lương thấp đạt khoảng 24,76% trên tổng số người. Cuối cùng là nhóm có mức lương cao đạt tỷ lệ thấp nhất với 19,25%.
Chênh lệch số kỹ sư có mức lương trung và thấp là 5165 người đạt với tỷ lệ đạt khoảng 28,23%. Mặt khác chênh lệch giữa nhóm lương trung và cao là 6075 với tỷ lệ chênh lệch là 36,74% điều này cho thấy hầu hết các kỹ sư đều có mức lương thuộc nhóm trung và có sự khác biệt lớn giữa các nhóm khác so với nhóm này. Ngoài ra số kỹ sư có mức lương thấp nhiều hơn nhóm mức lương cao khoảng 910 người với đạt tỷ lệ 5.51% trên tổng số.
Trong phần này chúng tôi lập bảng tần số cho biến employment_type nhằm mục tiêu thống kê số lượng kỹ sư trong mỗi nhóm hình thức công việc và so sánh sự khác biệt về số lượng cũng như tỷ lệ giữa chúng. Từ đó giúp cho mọi người hiểu rõ hơn ý nghĩa của biến này trước khi đánh giá sự ảnh hưởng của hình thức công việc đến mức lương.
Trước tiên chúng ta cần đổi tên biến từ “employment_type” thành “type” điều này sẽ giúp câu lệnh được thực hiện một cách ngắn gọn và dễ nhận biết hơn trước.
d <- d %>% rename(type = employment_type) # đổi tên biến
Tiếp đến, chúng tôi sẽ lập bảng tần số cho biến type, kết quả sẽ được trình bày ở dưới đây.
table(d$type)
##
## CT FL FT PT
## 28 14 16454 38
# Tạo bảng tần số cho biến type
t <- as.data.frame(table(d$type))
colnames(t) <- c("Type", "Count")
ggplot(t, aes(x = Type, y = Count, fill = Type)) +
geom_bar(stat = "identity", width = 0.5) +
geom_text(aes(label = Count), vjust = -0.5, size = 3.5) + # Hiển thị số liệu bên trên cột
labs(title = "DO THI LOAI CONG VIEC ", x = "Type", y = "Frequency") +
theme_minimal()
Dựa vào kết quả từ bảng và đồ thị ta nhận thấy hầu hết các kỹ sư sẽ làm việc theo hình thức toàn thời gian (FT) với số lượng 16454 người. Ngược lại, thì số lượng kỹ sư ở các nhóm bán thời gian (PT) là 38 người, tiếp theo là nhóm làm việc theo hợp đồng có 28 người. Cuối cùng nhóm làm việc tự do có số lượng thấp nhất là 14 người. Nhìn chung sự chênh lệch giữa số lượng kỹ sư giữa nhóm toàn thời gian với các nhóm khác là vô cùng lớn, chẳng hạn nhóm này nhiều hơn nhóm làm việc tự do là 16440 người
Mặt khác ta cũng cần thực hiện phân tích tỷ lệ phần trăm đối với từng nhóm hình thức công việc và trực quan chúng bằng đồ thị tròn để có thể dễ dàng so sánh với nhau.
prop.table(table(d$type))*100
##
## CT FL FT PT
## 0.16934801 0.08467401 99.51614854 0.22982944
t$Percentage <- (t$Count / sum(t$Count)) * 100
ggplot(t, aes(x = "", y = Percentage, fill = Type)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Trong trường hợp này, chúng ta lập bảng tần số giữa hai biến type (hình thức công việc) và sal (mức lương phân tổ thành ba nhóm). Bảng tần số giúp chúng ta hiểu rõ hơn về sự phân bố mức lương theo từng hình thức công việc.
table(d$type, d$sal) %>% addmargins()
##
## thap trung cao Sum
## CT 16 9 3 28
## FL 14 0 0 14
## FT 4037 9239 3178 16454
## PT 26 10 2 38
## Sum 4093 9258 3183 16534
Vẽ đồ thị cột phân theo từng nhóm loại hình công việc để đánh giá mức lương của từng nhóm.
table_data <- table(d$type, d$sal)
# Chuyển bảng chéo sang định dạng dài
long_data <- as.data.frame(table_data)
colnames(long_data) <- c("type", "salary", "count")
# Vẽ biểu đồ cột
ggplot(long_data, aes(x = salary, y = count, fill = salary)) +
geom_bar(stat = "identity", position = position_dodge()) +
geom_text(aes(label = count), vjust = 1, size = 2.5, position = position_dodge(1)) +
facet_wrap(~ type, scales = "free_y", nrow = 2) +
labs(title = "Phân bố mức lương theo hình thức công việc",
x = "Mức lương",
y = "Số lượng kỹ sư",
fill = "Mức lương") +
theme_minimal()
Dựa vào số liệu và đồ thị chúng tôi đưa ra một số nhận xét như sau:
Như phần trên đã đề cập đến kỹ sư toàn thời gian (FT) chiếm đa số tuyệt đối với 16454 kỹ sư, chiếm khoảng 99.5% tổng số kỹ sư. Ngược lại các hình thức công việc khác chiếm rất nhỏ gần như không đáng kể.
kỹ sư toàn thời gian (FT) có sự phân bố đều giữa các nhóm lương: 4037 kỹ sư có lương thấp, 9239 kỹ sư có lương trung bình, và 3178 kỹ sư có lương cao.
kỹ sư theo hình thức hợp đồng (CT) chủ yếu có mức lương thấp và trung bình, với rất ít kỹ sư có mức lương cao. Trong đó 16 kỹ sư có lương thấp, 9 kỹ sư có lương trung bình, và 3 kỹ sư có lương cao
kỹ sư làm việc tự do (FL) chỉ có mặt trong nhóm lương thấp gồm 14 người
kỹ sư bán thời gian (PT) chủ yếu có mức lương thấp có 26 người, với một số ít trong nhóm lương trung bình gồm có 10 người và rất ít người trong nhóm lương cao chỉ có 2 người.
Tiếp theo, lập bảng tần suất giữa hai biến lương và hình thức công việc. Từ đó vẽ đồ thì cột theo từng nhóm công việc như bên dưới đây.
table_data <- round(prop.table(table_data)*100,2)
table_data
##
## thap trung cao
## CT 0.10 0.05 0.02
## FL 0.08 0.00 0.00
## FT 24.42 55.88 19.22
## PT 0.16 0.06 0.01
# Chuyển đổi dữ liệu thành dạng dài để dễ vẽ biểu đồ
table_data <- as.data.frame.table(table_data)
colnames(table_data) <- c("Group", "Level", "Percentage")
# Vẽ biểu đồ
ggplot(table_data, aes(x = Level, y = Percentage, fill = Level)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = Percentage), vjust = 1, size = 2.5, position = position_dodge(1)) +
facet_wrap(~ Group, scales = "free_y", nrow = 2) +
labs(title = "Đồ thị phần trăm theo mức độ và nhóm công việc",
x = "Nhóm công việc",
y = "Phần trăm",
fill = "Mức độ") +
scale_fill_manual(values = c("thap" = "blue", "trung" = "orange", "cao" = "red")) +
theme_minimal()
Đối với nhóm làm việc theo hợp đồng: Tỷ lệ mức lương thấp chiếm đạt cao nhất khoảng 0.1% so với tổng số kỹ sư, tỷ lệ kỹ sư mức trung là 0.05% và thấp nhất là tỷ lệ mức lương cao 0.02%
Nhóm làm việc tự do ta nhận thấy có tỷ lệ kỹ sư có mức lương thấp đạt 0.08% trên tổng số kỹ sư được khảo sát. Nhưng tỷ lệ mức trung và cao là 0%.
Trong nhóm kỹ sư toàn thời gian chiếm cao nhất là tỷ lệ mức lương trung đạt 55.88% so với tổng số kỹ sư, tiếp đến là tỷ lệ mức lương thấp đạt khoảng 24.42% và thấp nhất là tỷ lệ lương cao trên tổng số đạt khoảng 19.22%. Khi so sánh với nhóm công việc khác thì nhóm làm việc toàn thời gian luôn có tỷ lệ cao hơn ở tất cả mức lương.
Trong nhóm bán thời gian tỷ lệ mức lương thấp chiếm đạt cao nhất khoảng 0.16% so với tổng số kỹ sư, tỷ lệ kỹ sư mức trung là 0.06% và thấp nhất là tỷ lệ mức lương cao 0.01%
Trong phần này chúng tôi sẽ thực hiện tính Relative Risk nhằm phân tích sự ảnh hưởng của từng loại hình công việc lên các mức lương khác nhau.
RR <- matrix(c(16, 9, 3,
14, 0, 0,
4037, 9239, 3178,
26, 10, 2),
nrow = 4,
byrow = TRUE,
dimnames = list(c("CT", "FL", "FT", "PT"),
c("thap", "trung", "cao")))
RR
## thap trung cao
## CT 16 9 3
## FL 14 0 0
## FT 4037 9239 3178
## PT 26 10 2
Dựa trên bảng tần số đã được giải thích rõ ở phần trước chúng tôi sẽ tính toán Relative Risk trong đó biến độc lập là loại hình công việc và phụ thuộc là mức lương. Nhóm công việc được chọn làm tham chiếu là FT
Trước tiên cần tính tỷ lệ mức lương thấp, trung, cao trong tổng số người ở mỗi nhóm công việc khác nhau. Sau đó lấy tỷ lệ vừa tính được chia cho tỷ lệ ở nhóm tham chiếu, trong ví dụ là nhóm làm việc toàn thời gian FT.
RR_table <- as.data.frame(RR)
# Tính tổng số người trong mỗi nhóm
RR_table$Total <- rowSums(RR_table)
# Tính tỷ lệ người ở mỗi mức lương trong mỗi nhóm
RR_table$Rate_thap <- RR_table$thap / RR_table$Total
RR_table$Rate_trung <- RR_table$trung / RR_table$Total
RR_table$Rate_cao <- RR_table$cao / RR_table$Total
# Tính tỷ lệ cho nhóm tham chiếu (FT)
rate_ref_thap <- RR_table["FT", "Rate_thap"]
rate_ref_trung <- RR_table["FT", "Rate_trung"]
rate_ref_cao <- RR_table["FT", "Rate_cao"]
# Tính Relative Risk cho các nhóm so với nhóm tham chiếu (FT)
RR_table$RR_thap <- RR_table$Rate_thap / rate_ref_thap
RR_table$RR_trung <- RR_table$Rate_trung / rate_ref_trung
RR_table$RR_cao <- RR_table$Rate_cao / rate_ref_cao
RR Thap | RR Trung | RR Cao | |
---|---|---|---|
CT | 2.33 | 0.57 | 0.55 |
FL | 4.08 | 0.00 | 0.00 |
FT | 1.00 | 1.00 | 1.00 |
PT | 2.79 | 0.47 | 0.27 |
Kết quả RR (Relative Risk) là 2.33 điều này cho thấy xác suất để những kỹ sư làm việc theo hợp đồng (CT) nhận mức lương “thấp” cao hơn xác suất kỹ sư làm việc toàn thời gian đạt được mức lương thấp là khoảng 2.3
Kết quả RR của nhóm làm việc tự do (FL) là 4.08 cho thấy những kỹ sư trong nhóm làm việc tự do có khả năng nhận mức lương “thấp” với tỷ lệ cao gấp 4.08 lần so với nhóm làm việc toàn thời gian (FT).
Ngoài ra RR của nhóm PT là 2.79, kết quả có ý nghĩa xác suất để kỹ sư trong nhóm làm việc bán thời gian nhận mức lương “thấp” cao khoảng 2.79 lần so với nhóm làm việc toàn thời gian nhận được cùng mức lương này.
Khi phân tích mức lương trung ta nhân thấy RR ở nhóm CT là 0.57, kết quả này giúp ta nhận thấy tỷ lệ để kỹ sư đang làm việc theo hợp đồng nhận mức lương “trung” chỉ khoảng 0.57 lần so với nhóm làm việc toàn thời gian.
Kết quả RR của nhóm làm việc tự do là 0, cho biết được kỹ sư trong nhóm làm việc tự do không có khả năng nhận mức lương “trung” so với nhóm làm việc toàn thời gian.
Cuối cùng, RR đối với nhóm làm việc bán thời gian khoảng 0.47, có ý nghĩa là kỹ sư trong nhóm làm việc bán thời gian có khả năng để nhận mức lương tầm “trung” chỉ khoảng 0.47 so với người làm việc toàn thời gian.
Kỹ sư làm việc theo hợp đồng có khả năng nhận mức lương “cao” chỉ khoảng 0.55 lần so với nhóm làm việc toàn thời gian.
Trong nhóm làm việc tự do thì gần như không có khả năng nhận mức lương “cao” so với nhóm làm việc toàn thời gian vì chỉ số RR là 0.
Kết quả RR là 0.27 cho thấy các kỹ sư trong nhóm làm việc bán thời gian có khả năng để nhận mức lương “cao” so với kỹ sư làm việc toàn thời gian chỉ khoảng 0.27 lần tương ứng khoảng 27%
Trong phần này chúng tôi sẽ thực hiện khoảng ước lượng cho RR với khoảng tin cậy 95%. Tuy nhiên để cho kết quả dễ dàng phân tích hơn trước nên chúng tôi sẽ thực hiện trên bảng có số lượng nhỏ hơn là 2x2.
Trước tiên tôi tính khoảng ước lượng Relative Risk đối với mức lương thấp và trung nhưng trong nhóm FT và PT
RR1 <- matrix(c(4037, 9239,
26, 10),
nrow = 2,
byrow = TRUE,
dimnames = list(c( "FT", "PT"),
c("thap", "trung")))
epitab(RR1, method = 'riskratio', rev = 'c')
## $tab
## trung p0 thap p1 riskratio lower upper p.value
## FT 9239 0.6959174 4037 0.3040826 1.000000 NA NA NA
## PT 10 0.2777778 26 0.7222222 2.375086 1.936378 2.913188 3.031552e-07
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Xác suất để có mức lương thấp đối với nhóm làm việc toàn thời gian là khoảng 72.2% và xác suất để đạt mức lương thấp đối với nhóm toàn thời gian là 30.4%, trong trường hợp này tỷ lệ Relative Risk (RR) là khoảng 2.375 điều này cho thấy khả năng để nhóm kỹ sư đang làm việc bán thời gian đạt được mức lương “thấp” cao gấp 2.375 lần đối với nhóm làm việc toàn thời gian. Khoảng ước lượng Relative Risk có kết quả là 1.936378 và 2.913188 đối với độ tin cậy 95%. Giá trị p.value khoảng 3.03e^-7 nhỏ hơn mức ý nghĩa 5% vì vậy kết quả này có ý nghĩa thống kê cho thấy có sự khác biệt ở nhóm làm việc toàn thời gian và bán thời gian.
Tiếp theo chúng tôi tính khoảng ước lượng Relative Risk đối với mức lương thấp và trung nhưng trong trường hợp này sẽ phân tích trên hai nhóm FT và FL
RR1 <- matrix(c(4037, 9239,
14, 0),
nrow = 2,
byrow = TRUE,
dimnames = list(c( "FT", "FL"),
c("thap", "trung")))
epitab(RR1, method = 'riskratio', rev = 'c')
## $tab
## trung p0 thap p1 riskratio lower upper p.value
## FT 9239 0.6959174 4037 0.3040826 1.000000 NA NA NA
## FL 0 0.0000000 14 1.0000000 3.288581 3.205034 3.374305 5.884773e-08
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Tỷ lệ Relative Risk được tính là 3.288581. Điều này cho thấy rằng nhóm kỹ sư làm việc tự do có tỷ lệ đạt mức lương “thấp” gấp khoảng 3.29 lần so với nhóm làm việc toàn thời gian. Khoảng ước lượng cho RR của nhóm làm việc tự do là từ 3.205034 đến 3.374305 với mức độ tin cậy 95%. Ngoài ra giá trị p-value là rất nhỏ, xấp xỉ 5.884773e-08. Điều này cho thấy có sự khác biệt giữa nhóm toàn thời gian và tự do về mức lương thấp là có ý nghĩa thống kê với mức ý nghĩa rất cao.
RR1 <- matrix(c(4037, 9239,
16, 9),
nrow = 2,
byrow = TRUE,
dimnames = list(c( "FT", "CT"),
c("thap", "trung")))
epitab(RR1, method = 'riskratio', rev = 'c')
## $tab
## trung p0 thap p1 riskratio lower upper p.value
## FT 9239 0.6959174 4037 0.3040826 1.000000 NA NA NA
## CT 9 0.3600000 16 0.6400000 2.104692 1.566823 2.827202 0.0006566158
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả cho thấy xác suất đạt mức lương thấp ở nhóm hợp đồng là 64% và đối với nhóm toàn thời gian là 30.4%. Tỷ lệ Relative Risk là 2.104692 điều này cho thấy rằng nhóm kỹ sư làm việc theo hợp đồng có mức lương “thấp” gấp khoảng 2.1 lần so với nhóm làm việc toàn thời gian. Khoảng ước lượng cho RR của nhóm CT là từ 1.566823 đến 2.827202 với mức độ tin cậy 95%. Giá trị p-value là 0.00066 , rất nhỏ hơn mức ý nghĩa thông thường là 0.05 kết quả cho thấy sự khác biệt giữa nhóm FT và CT về mức lương thấp là có ý nghĩa thống kê.
Odd ratio và khoảng ước lượng
Chúng ta có thể hiểu rằng Odd là một đại lượng thống kê đo lường xác suất của một sự kiện xảy ra so với không xảy ra. Odd được tính bằng cách chia tỷ lệ giữa xác suất xảy ra và xác suất không xảy ra của một sự kiện. Ngoài ra ta có thêm chỉ số odd ratio là tỷ lệ giữa odds của hai nhóm khác nhau. Nó cho biết mức độ thay đổi của odd giữa hai nhóm so với nhau.
Trong phần này chúng tôi sẽ tính tỷ lệ Odd Ratio của hai biến lương và công việc. Để dễ dàng trong phân tích Chúng tôi sẽ tách số liệu từ bảng tần số ban đầu thành bảng tần số mới chỉ bao gồm nhóm lương thấp, cao và nhóm công việc toàn thời gian và bán thời gian.
odd <- table(d$type,d$sal)
odd2 <- odd[c("FT", "PT"), c("thap", "cao")]
epitab(odd2, method = 'oddsratio')
## $tab
##
## thap p0 cao p1 oddsratio lower upper
## FT 4037 0.993600788 3178 0.9993710692 1.00000000 NA NA
## PT 26 0.006399212 2 0.0006289308 0.09771506 0.02317524 0.4120015
##
## p.value
## FT NA
## PT 2.892004e-05
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả Odd Ratio của PT so với FT khoảng 0.098 điều này có nghĩa là odd mức lương cao của nhóm kỹ sư làm việc bán thời gian chỉ bằng khoảng 9.77% so với odd kỹ sư làm việc toàn thời gian.
Khoảng tin cậy của OR đối với độ tin cậy 95% là từ 0.0232 đến 0.4120 và giá trị p là 2.89e-05, nhỏ hơn 0.05 cho thấy có sự khác biệt giữa odd ở hai nhóm PT và FT
Trái ngược lại với phần trên chúng ta có thể sử dụng tham số rev = ‘c’ thay đổi giữa mức lương cao và mức lương thấp để tính odd ratio của nhóm làm việc bán thời gian so với nhóm làm việc toàn thời gian ở mức lương thấp.
epitab(odd2, method = 'oddsratio', rev = 'c' )
## $tab
##
## cao p0 thap p1 oddsratio lower upper p.value
## FT 3178 0.9993710692 4037 0.993600788 1.00000 NA NA NA
## PT 2 0.0006289308 26 0.006399212 10.23384 2.427176 43.1495 2.892004e-05
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả cho thấy Odd ratio của PT so với FT là 10.23 ta có thể giải thích rằng odd của nhóm kỹ sư bán thời có mức lương “thấp” cao hơn gấp 10.23 lần so với odd của nhóm làm việc toàn thời gian có lương thấp.
Kết quả chỉ ra rằng giá trị p là 2.892004e-05, nhỏ hơn 0.05, do đó có sự khác biệt giữa odd của hai nhóm trên.
Hơn thế, khoảng ước lượng cho odd ratio đối với độ tin cậy 95% là 10.23 và 2.43
Phân tích mức lương trung giữa nhóm kỹ sư làm việc toàn thời gian và bán thời gian
odd3 <- odd[c("FT", "PT"), c("thap", "trung")]
epitab(odd3, method = 'oddsratio')
## $tab
##
## thap p0 trung p1 oddsratio lower upper
## FT 4037 0.993600788 9239 0.998918802 1.0000000 NA NA
## PT 26 0.006399212 10 0.001081198 0.1680585 0.08096884 0.3488213
##
## p.value
## FT NA
## PT 3.031552e-07
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả Odds ratio là 0.168, điều này có nghĩa là odds của kỹ sư có mức lương “trung” trong nhóm làm việc bán thời gian chỉ bằng khoảng 16.8% so với odds nhóm làm việc toàn thời gian có cùng mức lương này.
Ngoài ra Khoảng tin cậy của OR là từ 0.081 đến 0.349 đối với khoảng tin cậy 95% và giá trị p là 3.03e-07, nhỏ hơn 0.05, cho thấy sự khác biệt giữa odds của nhóm PT và FT.
epitab(odd3, method = 'oddsratio', rev = 'c')
## $tab
##
## trung p0 thap p1 oddsratio lower upper
## FT 9239 0.998918802 4037 0.993600788 1.00000 NA NA
## PT 10 0.001081198 26 0.006399212 5.95031 2.866798 12.35043
##
## p.value
## FT NA
## PT 3.031552e-07
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả cho thấy odds kỹ sư có mức lương thấp đang làm việc bán thời gian gấp khoảng 5.95 lần so với odds của kỹ sư đang làm việc toàn thời gian.
Hơn thế kết quả cũng cho rằng khoảng tin cậy của OR là từ 2.87 đến 12.35 và giá trị p là 3.031552e-07, nhỏ hơn 0.05, cho thấy sự khác biệt giữa odds của hai nhóm là có ý nghĩa thống kê.
Kết quả bên dưới được sử dụng để kiểm tra tính độc lập giữa hai biến loại hình công việc và mức lương bằng phương pháp chi bình phương. Giả thuyết Ho được đưa ra là biến mức lương và loại công việc độc lập.
chisq.test(table(d$type,d$sal))
##
## Pearson's Chi-squared test
##
## data: table(d$type, d$sal)
## X-squared = 97.86, df = 6, p-value < 2.2e-16
Qua kết quả kiểm định cho ta thấy giá trị p−value là 2.2e−16 nhỏ hơn 0.05 , nên bác bỏ H0, nghĩa là mức lương và loại công việc là có liên quan với nhau.
Ước lượng tỷ lệ cho nhóm lương trung bình
Trước tiên ta cần lọc kết quả về mức lương theo nhóm làm việc toàn thời gian. Kết quả thu được như sau.
FT <- table(d[d$type == "FT", ]$sal)
FT
##
## thap trung cao
## 4037 9239 3178
prop.test(FT["trung"], sum(FT), p = 0.7)
##
## 1-sample proportions test with continuity correction
##
## data: FT["trung"] out of sum(FT), null probability 0.7
## X-squared = 1502.2, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
## 0.5538791 0.5691017
## sample estimates:
## p
## 0.5615048
Sau đó ước lượng tỷ lệ với giả thuyết không (H0): Tỷ lệ người có mức lương trung trong nhóm toàn thời gian là 0.7 (70%).
Kết quả từ kiểm định cho thấy giá trị p-value là 2.2e-16, rất gần với 0 và nhỏ hơn giá trị α=0.05. Điều này cho thấy có bằng chứng mạnh mẽ để bác bỏ giả thuyết rằng tỷ lệ người có mức lương trung trong nhóm toàn thời gian là 70%.
Kết quả cũng cho thấy tỷ lệ kỹ sư có mức lương trung trong nhóm toàn thời gian khoảng 56.15%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% nằm trong khoảng từ 55.39% đến 56.91%.
Ước lượng tỷ lệ cho nhóm lương thấp
prop.test(FT["thap"], sum(FT), p = 0.2)
##
## 1-sample proportions test with continuity correction
##
## data: FT["thap"] out of sum(FT), null probability 0.2
## X-squared = 211.22, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.2
## 95 percent confidence interval:
## 0.2388058 0.2520150
## sample estimates:
## p
## 0.2453507
Ta có giả thuyết không (H0): Tỷ lệ người có mức lương thấp trong nhóm toàn thời gian là 0.2 (20%). Vì giá trị p rất nhỏ (p < 2.2e-16), chúng ta bác bỏ giả thuyết không (H0). Điều này có nghĩa là tỷ lệ kỹ sư có mức lương “thấp” trong nhóm làm việc toàn thời gian không bằng 20%. Kết quả cho rằng tỷ lệ này đạt khoảng 24.5% và ở mức độ tin cậy 95% kết quả ước lượng chỉ ra tỷ lệ kỹ sư có mức lương thấp trong nhóm toàn thời gian đạt khoảng từ 23.88% đến 25.20%.
Ước lượng tỷ lệ cho nhóm lương cao
prop.test(FT["cao"], sum(FT), p = 0.3)
##
## 1-sample proportions test with continuity correction
##
## data: FT["cao"] out of sum(FT), null probability 0.3
## X-squared = 894.13, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.3
## 95 percent confidence interval:
## 0.1871545 0.1992785
## sample estimates:
## p
## 0.1931445
Ta có giả thuyết không (H0) là tỷ lệ kỹ sư có mức lương “cao” trong nhóm làm toàn thời gian là 30%. Kết quả bên trên có giá trị p rất nhỏ (p < 2.2e-16), chúng ta bác bỏ giả thuyết không (H0). Điều này có nghĩa là tỷ lệ kỹ sư có mức lương “cao” trong nhóm nhóm làm toàn thời gian sẽ không bằng 30%. Thực tế, tỷ lệ kỹ sư có mức lương “cao” chỉ khoảng 19.31%, thấp hơn so với tỷ lệ kỳ vọng là 30%. Ngoài ra, khoảng tin cậy 95% cho tỷ lệ kỹ sư có mức lương cao trong nhóm toàn thời gian là [0.1872, 0.1993]. Điều này có nghĩa là chúng ta có 95% tin tưởng rằng tỷ lệ này nằm trong khoảng từ 18.72% đến 19.93%
Mô hình xác suất tuyến tính
Phần này sẽ thực hiện hồi quy xác suất tuyến tính giữa biến độc lập là loại hình công việc 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 trung và cao, ngược lại giá trị 0 tương ứng với mức lương thấp.
d$sal2 <- ifelse(d$sal %in% c("trung", "cao"), 1, 0)
d$type <- relevel(as.factor(d$type), ref = "FT")
glm <- glm(sal2 ~ type, data = d)
summary(glm)
##
## Call:
## glm(formula = sal2 ~ type, data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.7547 0.2454 0.2454 0.2454 0.6842
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.754649 0.003355 224.928 < 2e-16 ***
## typeCT -0.326078 0.081400 -4.006 6.21e-05 ***
## typeFL -0.754649 0.115069 -6.558 5.61e-11 ***
## typePT -0.438860 0.069895 -6.279 3.50e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.185214)
##
## Null deviance: 3079.8 on 16533 degrees of freedom
## Residual deviance: 3061.6 on 16530 degrees of freedom
## AIC: 19047
##
## Number of Fisher Scoring iterations: 2
\(\hat\pi= 0.754649-0.326078CT-0.754649FL-0.438860PT\)
Tất cả các hệ số đều có giá trị p nhỏ hơn mức ý nghĩa \(\alpha= 5%\) , ngụ ý rằng tất cả các hệ số đều có ảnh hưởng ý nghĩa thống kê đến mức lương.
Hệ số \(\hat\beta_0 = 0.754649\) có ý nghĩa rằng tỷ lệ để người kỹ sư đạt được mức lương trung bình là 75.46% trong trường hợp không xuất hiện các nhóm công việc khác.
Đối với hệ số \(\hat\beta_1 =-0.326078\) ta nhận thấy khi kỹ sư làm việc theo hình thức hợp đồng và không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm làm việc hợp đồng và nhóm toàn thời gian là - 32.6%, hay có thể nói cách khác tỷ lệ bình quân để đạt mức lương trung trở lên trong nhóm này là 42.86%
Tương tự \(\hat\beta_2 =-0.754649\) ta nhận thấy khi kỹ sư làm việc theo hình thức tự do và không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm làm việc tự do và nhóm toàn thời gian là - 75.46%, hay tỷ lệ đạt mức lương trung trở lên trong nhóm này là 0%
Cuối cùng với \(\hat\beta_3 =-0.4388\) ta nhận thấy khi kỹ sư làm việc theo hình thức bán thời gian và không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm làm việc bán thời gian và nhóm toàn thời gian là - 43.88%, hay tỷ lệ đạt mức lương trung trở lên trong nhóm này là 31.58%
Ta nhận thấy ở cả ba nhóm hợp đồng, bán thời gian, tự do đều có mối quan hệ âm với mức lương lương từ tầm trung trở lên. Nhưng nếu không có sự tác động của ba nhóm trên thì xác suất để đạt mức lương trên là khá cao khoảng 0.754649
n <- data.frame(type = c("CT", "FL", "PT","FT") )
predict.glm(glm, newdata = n, type="response")
## 1 2 3 4
## 4.285714e-01 3.063105e-13 3.157895e-01 7.546493e-01
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư làm công việc hợp đồng (1) là khoảng 42.86%. Điều này có nghĩa một kỹ sư làm việc theo hợp đồng có xác suất nhận mức lương trung đến cao là khoảng 42.86% .
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc tự do (2) thì xác suất để đạt được mức lương trung trở lên chỉ khoảng 3.06e-1, vì rất nhỏ cho nên đối với nhóm này gần như không có xác suất để nhận được mức lương trung trở lên.
Trong nhóm kỹ sư làm việc thời bán thời gian (3) thì xác suất để đạt mức lương trung chỉ khoảng 31.58%, cao hơn so với xác suất của nhóm làm tự do.
Cuối cùng kỹ sư làm việc toàn thời gian có xác suất đạt mức lương từ trung trở lên là 75.46%, cho thấy rằng làm việc toàn thời gian mang lại cơ hội lớn hơn để đạt được mức lương cao hơn.
Mô hình logit
Ngoài ra chúng ta có thể thực hiện mô hình hồi quy khi có hàm liên kết dạng \(g(μ)=logit(μ)=ln(\frac{μ}{1−μ})\) khi phân tích mối quan hệ giữa nhóm việc làm với mức lương, trong đó nhóm công việc toàn thời gian sẽ làm nhóm cơ sở.
logit <- glm(factor(sal2) ~ type, data = d, family = binomial(link = 'logit'))
summary(logit)
##
## Call:
## glm(formula = factor(sal2) ~ type, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6764 0.7503 0.7503 0.7503 1.5183
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.12356 0.01812 62.015 < 2e-16 ***
## typeCT -1.41125 0.38231 -3.691 0.000223 ***
## typeFL -13.68963 86.79141 -0.158 0.874669
## typePT -1.89675 0.34946 -5.428 5.71e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 18506 on 16533 degrees of freedom
## Residual deviance: 18421 on 16530 degrees of freedom
## AIC: 18429
##
## Number of Fisher Scoring iterations: 11
Ta có kết từ hàm hồi quy thông qua mô hình logit như sau:
\(ln(\frac{\hat\pi}{1−\hat\pi})=1.12356−1.41125CT−13.68963FL−1.89675PT\)
Hệ số chặn là 1.12356 điều này có nghĩa là khi không có sự tác động của nhóm công việc khác thì \(ln(\frac{\hat\pi}{1−\hat\pi})\) của kỹ sư toàn thời gian đạt mức lương trung là 1.12356
Đối với hệ số \(\hat\beta_1 =−1.41125\) điều này cho thấy chênh lệch \(ln(\frac{\hat\pi}{1−\hat\pi})\) đạt mức lương trung trở lên giữa nhóm làm việc hợp đồng và nhóm toàn thời gian là −1.41125
Đối với hệ số \(\hat\beta_2 =−13.68963\) điều này cho thấy chênh lệch \(ln(\frac{\hat\pi}{1−\hat\pi})\) đạt mức lương trung trở lên giữa nhóm làm việc tự do và nhóm toàn thời gian là −13.68963
Tương tự, hệ số \(\hat\beta_3 =−1.89675\) điều này cho thấy chênh lệch \(ln(\frac{\hat\pi}{1−\hat\pi})\) mức lương trung trở lên giữa nhóm làm việc bán thời gian và nhóm toàn thời gian là −1.89675
Sau đó từ mô hình logit ta dự báo xác suất của biến lương tương ứng với mỗi nhóm việc làm. Ta cần một khung dữ liệu n với một cột type chứa các giá trị “CT”, “FL”, “PT”, và “FT”.
n <- data.frame(type = c("CT", "FL", "PT","FT") )
predict.glm(logit, newdata = n, type="response")
## 1 2 3 4
## 4.285714e-01 3.488403e-06 3.157895e-01 7.546493e-01
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện CT là khoảng 42.86%. Điều này có nghĩa một kỹ sư làm việc theo hợp đồng có xác suất khoảng 42.86% có mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc tự do thì xác suất để đạt được mức lương trung trở lên chỉ khoảng 0.00035%
Trong nhóm kỹ sư làm việc thời bán thời gian thì xác suất để đạt mức lương trung chỉ khoảng 31.58%, cao hơn so với xác suất của nhóm làm tự do.
Cuối cùng nhóm có xác suất cao nhất để đạt mức lương trung là ở công việc toàn thời gian với xác suất khoảng 75.46%.
Mô hình Probit
Thay vì sử dụng mô hình logit ta có thể thay thế bằng mô hình probit dự đoán xác suất của một sự kiện xảy ra, mô hình probit sử dụng hàm phân phối chuẩn. Trong đó hàm liên kết có dạng \(probit(π) = Φ^{-1}(π)\) và hàm xác suất là \(π(x)=Φ(β_0+β_1X+β_2X_2+...+β_nX_n)\). Ta thực hiện thao tác khá tương tự với phân trên
probit <- glm(factor(sal2) ~ type, data = d, family = binomial(link = 'probit'))
summary(probit)
##
## Call:
## glm(formula = factor(sal2) ~ type, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6764 0.7503 0.7503 0.7503 1.5183
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.68919 0.01066 64.637 < 2e-16 ***
## typeCT -0.86921 0.23849 -3.645 0.000268 ***
## typeFL -5.30055 24.62168 -0.215 0.829549
## typePT -1.16870 0.21231 -5.505 3.7e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 18506 on 16533 degrees of freedom
## Residual deviance: 18421 on 16530 degrees of freedom
## AIC: 18429
##
## Number of Fisher Scoring iterations: 11
Ta có kết quả mô hình hồi quy như sau:
\(\hat\pi= \Phi(0.68919−0.86921×CT−5.30055×FL−1.16870×PT)\)
Hệ số chặn là 0.68919 và có ý nghĩa thống kê khi giá trị p_value nhỏ hơn mức ý nghĩa 5%. Điều này có nghĩa là khi không có sự tác động các biến độc lập khác thì xác suất để kỹ sư đạt mức lương trung là \(\Phi(0.68919)\)
Hệ số \(\hat\beta_1= −0.86921\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm làm việc theo hình thức hợp đồng và nhóm làm toàn thời gian đạt khoảng \(\Phi(-0.86921)\)
Hệ số \(\hat\beta_2=−5.30055\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm làm việc theo hình thức tự do và nhóm làm toàn thời gian đạt khoảng \(\Phi(−5.30055)\)
Hệ số \(\hat\beta_3= −1.16870\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm làm việc theo hình thức bán thời gian và nhóm làm toàn thời gian đạt khoảng \(\Phi(−1.16870)\)
Từ kết quả trên chúng tôi sẽ thực hiện dự báo cho tỷ lệ để đạt được mức lương trung trong các nhóm công việc. Kết quả được trình bày trong bảng bên dưới.
predict.glm(probit, newdata = n, type="response")
## 1 2 3 4
## 4.285714e-01 2.000259e-06 3.157895e-01 7.546493e-01
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư làm công việc hợp đồng (1) là khoảng 42.86%. Điều này có nghĩa một kỹ sư làm việc theo hợp đồng có xác suất khoảng 42.86% có mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc tự do (2) thì xác suất để đạt được mức lương trung trở lên chỉ khoảng 0.000002%
Trong nhóm kỹ sư làm việc thời bán thời gian (3) thì xác suất để đạt mức lương trung chỉ khoảng 31.58%, cao hơn so với xác suất của nhóm làm tự do.
Cuối cùng nhóm có xác suất cao nhất để đạt mức lương trung là ở công việc toàn thời gian với xác suất khoảng 75.46% đây là lựa chọn tốt nhất nếu mục tiêu là đạt được mức lương từ trung trở lên.
Chỉ số AIC
AIC (Akaike Information Criterion) là một chỉ số được sử dụng để đánh giá và so sánh các mô hình thống kê. Mô hình có AIC thấp hơn được coi là tốt hơn vì nó cân bằng giữa độ phù hợp và độ phức tạp của mô hình. Do đó chúng ta sử dụng chỉ số này để so sánh ba mô hình bên trên để lựa chọn mô hình phù hợp nhất trong phân tích xác suất để đạt được mức lương trung.
AIC(glm )
## [1] 19047.11
AIC(logit )
## [1] 18428.97
AIC(probit )
## [1] 18428.97
Mô hình Logit và Probit đều tốt hơn mô hình xác suất tuyến tính trong việc giải thích mối quan hệ giữa loại công việc và xác suất đạt mức lương từ trung trở lên, Vì chỉ số AIC của hai mô hình này thấp hơn chỉ số AIC của mô hình xác suất tuyến tính. Logit và Probit có hiệu suất tương đương nhau vì chúng có cùng chỉ số AIC
Hệ số Brier Score
Phần này sẽ tính chỉ số Brier Score được sử dụng để đo lường độ chính xác của các dự đoán xác suất. Nó tính toán độ lệch bình phương giữa dự đoán xác suất và giá trị thực tế. Một giá trị Brier Score thấp cho thấy mô hình dự đoán tốt hơn. Vì thế ta sẽ tính và so sánh giá trì này ở hai mô hình hồi quy logit và probit.
BrierScore(logit)
## [1] 0.1851692
BrierScore(probit)
## [1] 0.1851692
Kết quả bên trên cho thấy Brier Score cho logit và probit đều là 0.1851692. Điều này có nghĩa là cả hai mô hình đều có hiệu suất tương đương khi dự đoán xác suất cho biến mục tiêu. Brier Score khá thấp (gần 0), cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế.
Ma trận nhầm lẫn
Conf(table(predict(probit, type="response") >=0.5,probit$data$sal2 == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 56 24
## TRUE 4037 12417
##
## Total n : 16'534
## Accuracy : 0.7544
## 95% CI : (0.7478, 0.7609)
## No Information Rate : 0.7524
## P-Value [Acc > NIR] : 0.2855
##
## Kappa : 0.0175
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.0137
## Specificity : 0.9981
## Pos Pred Value : 0.7000
## Neg Pred Value : 0.7546
## Prevalence : 0.2476
## Detection Rate : 0.0048
## Detection Prevalence : 0.0034
## Balanced Accuracy : 0.5059
## F-val Accuracy : 0.0268
## Matthews Cor.-Coef : 0.0731
##
## 'Positive' Class : FALSE
Từ kết quả trên ma trận cho ta biết có 56 số lần mô hình dự đoán đúng là mức lương thấp. Tuy nhiên có 24 lần mô hình dự đoán sai đối với mức lương trung và khoảng 4037 lần mô hình dự đoán sai mức lương thấp. Số lần mô hình dự đoán đúng ở mức lương trung là 12417 lần đạt cao nhất.
Ngoài ra ta có tỷ lệ dự đoán đúng của mô hình là 0.7544 và ở độ tin cậy là 95% thì tỷ lệ này nằm trong khoảng từ (0.7478, 0.7609)
d$sal <- factor(d$sal, levels = c("cao", "trung", "thap")) #thap làm tham chiếu
levels(d$sal)
## [1] "cao" "trung" "thap"
library(VGAM)
mlog <- vglm(sal ~ type, family = multinomial,data =d)
mlog
##
## Call:
## vglm(formula = sal ~ type, family = multinomial, data = d)
##
##
## Coefficients:
## (Intercept):1 (Intercept):2 typeCT:1 typeCT:2 typeFL:1
## -0.2392498 0.8279318 -1.4347267 -1.4032960 -14.9120587
## typeFL:2 typePT:1 typePT:2
## -15.9792403 -2.3256996 -1.7834433
##
## Degrees of Freedom: 33068 Total; 33060 Residual
## Residual deviance: 32570.03
## Log-likelihood: -16285.02
##
## This is a multinomial logit model with 3 levels
Đối với mức lương cao
\(\ln\left(\frac{\pi_1}{\pi_3}\right) = -0.2392498-1.4347267*CT-14.9120587*FL-2.3256996*PT\)
Hệ số -0.2392 có ý nghĩa là log giữa xác suất đạt được mức lương “cao” và xác suất đạt được mức lương “thap” đối với nhóm công việc toàn thời gian là -0.2392 trong trường hợp không có các yếu khác. Suy ra tỷ lệ lương cao trên mức lương thấp đối với nhóm làm toàn thời gian là e^(-0.2392) = 0.7873. Dựa vào công thức \(\pi_i = \frac{e^{\beta_{0i} + \beta_{1i}X}}{1+\sum_{j=1}^{K-1} e^{\beta_{0j}+\beta_{1j}X}}\) ta cũng có thể tính xác suất để đạt mức lương cao trong nhóm làm việc toàn thời gian là \(\pi_1 = \frac{e^{-0.2392498}}{1 + e^{-0.2392498} + e^{0.8279318}}=0.1931445\)
Chêch lệch của \(\ln\left(\frac{\pi_1}{\pi_3}\right)\) giữa công việc hợp đồng và toàn thời gian (tham chiếu) là −1.434, điều này cho thấy \(\ln\left(\frac{\pi_1}{\pi_3}\right)\) đối với công việc hợp đồng là -0.2392498-1.4347267= -1.673976. Suy ra tỷ lệ lương cao trên mức lương thấp đối với nhóm làm việc hợp đồng là e^(-1.673976) = 0.1875. Xác suất để đạt mức lương cao trong nhóm hợp đồng (CT = 1, FL = 0, PT = 0) là \(\pi_1 = \frac{e^{-0.2395-1.4347}}{1 + e^{-0.2392−1.4347} + e^{0.8279-1.4032}}=0.1071\)
Hệ số -14.912 có ý nghĩa là chêch lệch của \(\ln\left(\frac{\pi_1}{\pi_3}\right)\) giữa công việc tự do(FT) và toàn thời gian (tham chiếu) là -14.912, điều này cho thấy \(\ln\left(\frac{\pi_1}{\pi_3}\right)\) đối với công việc hợp đồng là -0.2392498-14.9120587= -15.1513. Suy ra tỷ lệ lương cao trên mức lương thấp đối với nhóm làm việc tự do là e^(-15.1513) = 2.629505e-07. Xác suất để đạt mức lương cao trong nhóm này (CT = 0, FL = 1, PT = 0) là \(\pi_1 = \frac{e^{-0.2395-14.9120}}{1 + e^{-0.2392-14.9120} + e^{0.8279-15.9792}}=0\)
Hệ số -2.3256 có ý nghĩa là chêch lệch của \(\ln\left(\frac{\pi_1}{\pi_3}\right)\) giữa công việc bán thời gian và toàn thời gian (tham chiếu) là -2.3256, điều này cho thấy \(\ln\left(\frac{\pi_1}{\pi_3}\right)\) đối với công việc hợp đồng là -0.2392498-2.3256= -2.56485. Suy ra tỷ lệ lương cao trên mức lương thấp đối với nhóm bán thời gian là e^(-2.56485) = 0.07693. Vậy Xác suất để đạt mức lương cao trong nhóm bán thời gian là (CT = 0, FL = 0, PT = 1) là \(\pi_1 = \frac{e^{-0.2395-2.3256}}{1 + e^{-0.2392-2.3256} + e^{0.8279-1.783}}=0.0526\)
Đối với mức lương trung
\(\ln\left(\frac{\pi_2}{\pi_3}\right) = 0.8279318-1.4032960*CT-15.9792403 *FL-1.7834433*PT\)
Hệ số 0.8279 có ý nghĩa là log giữa xác suất đạt được mức lương “trung” và xác suất đạt được mức lương “thap” đối với nhóm công việc toàn thời gian là 0.8279 trong trường hợp không có các yếu khác. Tương tự như trên, ta cũng có thể tính xác suất để đạt mức lương “trung” trong nhóm làm việc toàn thời gian (CT = 0, FL = 0, PT = 0) là \(\pi_2 = \frac{e^{0.8279}}{1 + e^{-0.2392} + e^{0.8279}}=0.5615\)
Chêch lệch của \(\ln\left(\frac{\pi_2}{\pi_3}\right)\) giữa hai nhóm công việc hợp đồng và toàn thời gian là -1.4033. Xác suất để đạt mức lương “trung” trong nhóm hợp đồng (CT = 1, FL = 0, PT = 0) là \(\pi_2 = \frac{e^{0.8279-1.4032}}{1 + e^{-0.2392−1.4347} + e^{0.8279-1.4032}}=0.3214\)
Hệ số 15.9792 có ý nghĩa là chêch lệch của \(\ln\left(\frac{\pi_2}{\pi_3}\right)\) giữa công việc tự do(FT) và toàn thời gian là 15.9792. Ta có xác suất để đạt mức lương “trung” trong nhóm tự do (CT = 0, FL = 1, PT = 0) là \(\pi_2 = \frac{e^{0.8279-15.9792}}{1 + e^{-0.2392-14.9120} + e^{0.8279-15.9792}}=0\)
Chêch lệch của \(\ln\left(\frac{\pi_2}{\pi_3}\right)\) giữa công việc bán thời gian và toàn thời gian là -1.7834. Hơn thế, Xác suất để đạt mức lương “trung” trong nhóm bán thời gian là (CT = 0, FL = 0, PT = 1) là \(\pi_2 = \frac{e^{0.8279-1.783}}{1 + e^{-0.2392-2.3256} + e^{0.8279-1.783}}=0.2632\)
Đối với mức lương thấp
Từ đó, Tỷ lệ để đạt được mức lương thấp trong nhóm làm việc toàn thời gian là 1-0.5615-0.19314= 24.5%
Tỷ lệ kỹ sư đạt được mức lương thấp trong nhóm làm việc hợp đồng là 1-0.3214-0.107= 57.15%
Ngoài ra tỷ lệ kỹ sư đạt được mức lương thấp trong nhóm làm việc tự do là 100%
Cuối cùng tỷ lệ kỹ sư đạt được mức lương thấp trong nhóm làm việc bán thời gian là 1 - 0.2632 - 0.0526 = 68.42%
Trong phần này chúng tôi lập bảng tần số cho biến remote_ratio nhằm thống kê số lượng hình thức làm việc và so sánh sự khác biệt về số lượng cũng như tỷ lệ giữa các hình thức làm việc nhằm cung cấp trực quan ý nghĩa của biến remote_ratio trước khi phân tích tác động của hình thức làm việc đến mức lương của kỹ sư.
Trước tiên chúng ta cần đổi tên biến từ “remote_ratio” thành “remote” điều này sẽ giúp câu lệnh được thực hiện một cách ngắn gọn và dễ nhận biết hơn.
d <- d %>% rename(remote = remote_ratio) # đổi tên biến
Tiếp đến, chúng tôi lập bảng tần số cho biến remote, kết quả như sau:
table(d$remote)
##
## 0 50 100
## 11118 249 5167
# Tạo bảng tần số cho biến type
f <- as.data.frame(table(d$remote))
colnames(f) <- c("Remote", "Count")
ggplot(f, aes(x = Remote, y = Count, fill = Remote)) +
geom_bar(stat = "identity", width = 0.5) +
geom_text(aes(label = Count), vjust = -0.5, size = 3.5) + # Hiển thị số liệu bên trên cột
labs(title = "Đồ thị cột hình thức làm việc ", x = "Hình thức làm việc", y = "Frequency") +
theme_minimal()
Kết quả bảng tần số và đồ thị cho thấy có 11118 kỹ sư không làm việc theo hình thức từ xa (0), 249 kỹ sư làm việc theo hình thức vừa từ xa vừa trực tiếp (50) và 5167 kỹ sư làm việc theo hình thức từ xa (100). Nhìn chung, số lượng kỹ sư không làm việc theo hình thức từ xa (0) chiếm số lượng cao nhất với 11118 kỹ sư. Trong khi đó, số lượng kỹ sư vừa làm việc trực tiếp và vừa làm việc từ xa (50) có số lượng thấp nhất là 249 kỹ sư.
Ở khía cạnh khác, chúng ta có thể phân tích tỷ lệ phần trăm đối với từng nhóm hình thức làm việc và trực quan chúng bằng đồ thị tròn để có thể dễ dàng so sánh với nhau.
prop.table(table(d$remote))*100
##
## 0 50 100
## 67.243256 1.505988 31.250756
f$Percentage <- (f$Count / sum(f$Count)) * 100
ggplot(f, aes(x = "", y = Percentage, fill = Remote)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Dựa vào kết quả bảng tần suất và đồ thị, tỷ lệ kỹ sư không làm việc theo
hình thức từ xa (0) chiếm tỷ lệ cao nhất 67,24%. Trong khi số lượng kỹ
sư vừa làm việc theo hình thức từ xa và làm việc trực tiếp (50) chiếm tỷ
lệ thấp nhất 1,51%. Tỷ lệ kỹ sư lựa chọn hình thức làm việc từ xa chiếm
tỷ lệ tương đối cao là 31,25%
Chúng ta lập bảng tần số giữa hai biến remote (hình thức làm việc) và sal (mức lương phân tổ thành ba nhóm). Bảng tần số giúp chúng ta hiểu rõ hơn về sự phân bố mức lương theo từng hình thức làm việc.
table(d$remote, d$sal) %>% addmargins()
##
## cao trung thap Sum
## 0 2361 6146 2611 11118
## 50 11 54 184 249
## 100 811 3058 1298 5167
## Sum 3183 9258 4093 16534
Sau đó có thể thực hiện vẽ biểu đồ cột thể hiện số lượng kỹ sư ở mỗi nhóm lương theo hình thức làm việc khác nhau để trực quan hóa số liệu từ bảng số liệu phía trên. Điều này giúp ta dễ dàng nhận xét và so sánh.
table_data1 <- table(d$remote, d$sal)
# Chuyển bảng chéo sang định dạng dài
long_data1 <- as.data.frame(table_data1)
colnames(long_data1) <- c("type", "salary", "count")
# Vẽ biểu đồ cột
ggplot(long_data1, aes(x = salary, y = count, fill = salary)) +
geom_bar(stat = "identity", position = position_dodge()) +
geom_text(aes(label = count), vjust = 1, size = 2.5, position = position_dodge(1)) +
facet_wrap(~ type, scales = "free_y", nrow = 2) +
labs(title = "Phân bố mức lương theo hình thức công việc",
x = "Mức lương",
y = "Số lượng nhân viên",
fill = "Mức lương") +
theme_minimal()
Dựa vào đồ thị chúng ta có thể thấy rằng:
Số lượng kỹ sư làm không làm việc từ xa (0) có số lượng cao nhất là 11118 kỹ sư với tỷ lệ 67,24%. Trong đó có 2611 kỹ sư có mức lương thấp, 6146 kỹ sư có mức lương trung và 2361 kỹ sư có mức lương cao.
Số lượng kỹ sư vừa làm việc từ xa và trực tiếp (50) có số lượng thấp nhất là 249 kỹ sư chiếm tỷ lệ 1,51%. Ở hình thức làm việc này, có 184 kỹ sư có mức lương thấp, 54 kỹ sư có mức lương trung và 11 kỹ sư có mức lương cao.
Trong khi đó, số lượng kỹ sư làm việc từ xa (100) có số lượng 5157 kỹ sư chiếm tỷ lệ 31,25%. Trong đó có 1298 kỹ sư có mức lương thấp, 3058 kỹ sư có mức lương trung bình và 811 kỹ sư có mức lương cao.
Trong phần này chúng tôi sẽ thực hiện tính Relative Risk nhằm phân tích sự ảnh hưởng của hình thức làm việc của các kỹ sư lên các mức lương khác nhau.
RR1 <- matrix(c(2611, 6146, 2361,
184, 54, 11,
1298, 3058, 811),
nrow = 3,
byrow = TRUE,
dimnames = list(c("0", "50", "100"),
c("thap", "trung", "cao")))
RR1
## thap trung cao
## 0 2611 6146 2361
## 50 184 54 11
## 100 1298 3058 811
Dựa trên bảng tần số đã được giải thích rõ ở phần trước chúng tôi sẽ tính toán Relative Risk trong đó biến độc lập là hình thức và phụ thuộc là mức lương. Nhóm công việc được chọn làm tham chiếu là 0 tương ứng với kỹ sư lựa chọn hình thức không làm việc từ xa
Trước tiên cần tính tỷ lệ mức lương thấp, trung, cao trong tổng số người ở mỗi hình thức làm việc khác nhau. Sau đó lấy tỷ lệ vừa tính được chia cho tỷ lệ ở nhóm tham chiếu, trong ví dụ là nhóm kỹ sư không làm việc từ xa “0”.
RR_table1 <- as.data.frame(RR1)
# Tính tổng số người trong mỗi nhóm
RR_table1$Total <- rowSums(RR_table1)
# Tính tỷ lệ người ở mỗi mức lương trong mỗi nhóm (Tính Relative Risk cho mỗi nhóm bằng cách chia tỷ lệ của mỗi nhóm cho tỷ lệ của nhóm tham chiếu)
RR_table1$Rate_thap <- RR_table1$thap / RR_table1$Total
RR_table1$Rate_trung <- RR_table1$trung / RR_table1$Total
RR_table1$Rate_cao <- RR_table1$cao / RR_table1$Total
# Tính tỷ lệ cho nhóm tham chiếu (FT)
rate_ref_thap1 <- RR_table1["0", "Rate_thap"]
rate_ref_trung1 <- RR_table1["0", "Rate_trung"]
rate_ref_cao1 <- RR_table1["0", "Rate_cao"]
# Tính Relative Risk cho các nhóm so với nhóm tham chiếu (FT)
RR_table1$RR_thap <- RR_table1$Rate_thap / rate_ref_thap1
RR_table1$RR_trung <- RR_table1$Rate_trung / rate_ref_trung1
RR_table1$RR_cao <- RR_table1$Rate_cao / rate_ref_cao1
# In kết quả
print(RR_table1)
## thap trung cao Total Rate_thap Rate_trung Rate_cao RR_thap RR_trung
## 0 2611 6146 2361 11118 0.2348444 0.5527973 0.21235834 1.000000 1.0000000
## 50 184 54 11 249 0.7389558 0.2168675 0.04417671 3.146576 0.3923092
## 100 1298 3058 811 5167 0.2512096 0.5918328 0.15695762 1.069685 1.0706145
## RR_cao
## 0 1.0000000
## 50 0.2080291
## 100 0.7391168
Nhận xét tỷ lệ Relative Risk ở mức lương thấp trong các nhóm công việc
Nhận xét: Kỹ sư trong nhóm này có khả năng nhận mức lương thấp cao hơn 3.15 lần so với nhóm làm việc toàn thời gian (0).
Nhận xét: Kỹ sư trong nhóm này có khả năng nhận mức lương thấp cao hơn 1.07 lần so với nhóm làm việc trực tiếp (0).
Nhận xét tỷ lệ Relative Risk đối với mức lương trung
Nhận xét: Nhân viên trong nhóm vừa làm việc từ xa và vừa làm việc trực tiếp có khả năng nhận mức lương trung chỉ khoảng 0.39 lần so với nhóm làm việc trực tiếp (0).
Nhận xét: Nhân viên trong nhóm này có khả năng nhận mức lương trung cao hơn 1.07 lần so với nhóm làm việc trực tiếp (0).
Nhận xét tỷ lệ Relative Risk đối với mức lương cao
Nhận xét: Nhân viên trong nhóm này có khả năng nhận mức lương cao chỉ khoảng 0.21 lần so với nhóm làm việc trực tiếp (0).
Nhận xét: Nhân viên trong nhóm này có khả năng nhận mức lương cao chỉ khoảng 0.74 lần so với nhóm làm việc trực tiếp (0).
Tổng hợp nhận xét
Mức lương thấp: Kỹ sư làm việc kết hợp từ xa và trực tiếp (50) có khả năng nhận mức lương thấp cao hơn nhiều (3.15 lần) so với nhóm làm việc trực tiếp (0).
Nhóm làm việc từ xa (100) có khả năng nhận mức lương thấp cao hơn một chút (1.07 lần) so với nhóm làm việc trực tiếp (0).
Mức lương trung: Kỹ sư làm việc kết hợp từ xa và trực tiếp (50) có khả năng nhận mức lương trung thấp hơn (0.39 lần) so với nhóm làm việc toàn thời gian (0). Nhóm làm việc từ xa (100) có khả năng nhận mức lương trung cao hơn một chút (1.07 lần) so với nhóm làm việc trực tiếp (0).
Mức lương cao: Kỹ sư làm việc kết hợp từ xa và trực tiếp (50) có khả năng nhận mức lương cao thấp hơn nhiều (0.21 lần) so với nhóm làm việc toàn thời gian (0). Ký sư làm việc từ xa (100) có khả năng nhận mức lương cao thấp hơn (0.74 lần) so với nhóm làm việc toàn thời gian (0).
Trong phần này chúng tôi sẽ tính tỷ lệ Odd Ratio của hai biến lương và hình thức làm việc. Để dễ dàng trong phân tích Chúng tôi sẽ tách số liệu từ bảng tần số ban đầu thành bảng tần số mới chỉ bao gồm nhóm lương thấp, cao và hình thức làm việc trực tiếp, hình thức làm việc từ xa
odd1 <- table(d$remote,d$sal)
odd4 <- odd1[c("0", "100"), c("thap", "cao")]
epitab(odd4, method = 'oddsratio')
## $tab
##
## thap p0 cao p1 oddsratio lower upper p.value
## 0 2611 0.6679458 2361 0.7443253 1.0000000 NA NA NA
## 100 1298 0.3320542 811 0.2556747 0.6909666 0.6227809 0.7666176 2.419623e-12
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Odd Ratio của hình thức làm việc từ xa so với trực tiếp là 0.6910, tức là odd mức lương cao của nhóm làm việc từ xa chỉ bằng khoảng 69.10% so với nhóm làm việc trực tiếp.
Khoảng tin cậy 95% cho Odd Ratio là từ 0.6228 đến 0.7666, giá trị p là 2.419623e-12, nhỏ hơn 0.05, cho thấy có sự khác biệt có ý nghĩa thống kê giữa odd của hai nhóm làm việc trực tiếp và từ xa.
Để tính tỷ lệ odds cho nhóm làm việc từ xa so với nhóm làm việc trực
tiếp ở mức lương thấp, ta có thể thay đổi tham số rev = 'c'
để chuyển đổi giữa mức lương cao và mức lương thấp.
epitab(odd4, method = 'oddsratio', rev = 'c' )
## $tab
##
## cao p0 thap p1 oddsratio lower upper p.value
## 0 2361 0.7443253 2611 0.6679458 1.000000 NA NA NA
## 100 811 0.2556747 1298 0.3320542 1.447248 1.304431 1.605701 2.419623e-12
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả cho thấy Odd ratio của kỹ sư làm việc từ xa so với kỹ sư làm việc trực tiếp là 1.447248. Điều này có nghĩa là xác suất kỹ sư làm việc từ xa có mức lương thấp cao hơn 1.447248 lần so với kỹ sư làm việc trực tiếp.
Giá trị p là 2.419623e-12, nhỏ hơn 0.05, cho thấy có sự khác biệt có ý nghĩa thống kê giữa odds của hai nhóm này.
Khoảng ước lượng cho Odd ratio với độ tin cậy 95% là từ 1.304431 đến 1.605701, củng cố thêm kết luận trên.
Phân tích mức lương trung và thấp giữa nhóm kỹ sư làm việc trực tiếp và kỹ sư làm việc từ xa
odd4 <- odd1[c("0", "100"), c("thap", "trung")]
epitab(odd4, method = 'oddsratio')
## $tab
##
## thap p0 trung p1 oddsratio lower upper p.value
## 0 2611 0.6679458 6146 0.6677532 1.000000 NA NA NA
## 100 1298 0.3320542 3058 0.3322468 1.000869 0.9244282 1.08363 1
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả Odds ratio là 1.000869, nghĩa là odds của kỹ sư có mức lương thấp trong nhóm làm việc từ xa gần như bằng với odds của nhóm làm việc trực tiếp. Khoảng tin cậy 95% của OR là từ 0.9244282 đến 1.08363, và giá trị p là 1, lớn hơn 0.05. Điều này cho thấy không có sự khác biệt có ý nghĩa thống kê giữa odds của hai nhóm này.
epitab(odd4, method = 'oddsratio', rev = 'c')
## $tab
##
## trung p0 thap p1 oddsratio lower upper p.value
## 0 6146 0.6677532 2611 0.6679458 1.0000000 NA NA NA
## 100 3058 0.3322468 1298 0.3320542 0.9991321 0.9228242 1.08175 1
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Dựa vào kết quả phân tích, ta có các thông số liên quan đến mức lương thấp và trung bình giữa kỹ sư làm việc trực tiếp và kỹ sư làm việc từ xa:
Odd ratio: 1.000869, nghĩa là odds của kỹ sư có mức lương thấp so với mức lương trung bình trong nhóm làm việc từ xa gần như bằng odds của nhóm làm việc trực tiếp. Khoảng tin cậy 95%: từ 0.9244282 đến 1.08363. Giá trị p: 1, không có sự khác biệt có ý nghĩa thống kê giữa odds của hai nhóm này.
Điều này cho thấy rằng không có sự khác biệt đáng kể về xác suất đạt mức lương thấp so với mức lương trung bình giữa kỹ sư làm việc trực tiếp và kỹ sư làm việc từ xa.
Kết quả bên dưới được sử dụng để kiểm tra tính độc lập giữa hai biến hình thức làm việc và mức lương bằng phương pháp Chi bình phương. Giả thuyết Ho được đưa ra là biến mức lương và hình thức làm việc độc lập.
chisq.test(table(d$remote,d$sal))
##
## Pearson's Chi-squared test
##
## data: table(d$remote, d$sal)
## X-squared = 398.3, df = 4, p-value < 2.2e-16
Kết quả kiểm định cho thấy giá trị p-value là 2.26e^-16 nhỏ hơn 0.05, có cơ sở bác bỏ H0, nghĩa là mức lương và hình thức làm việc có liên quan với nhau.
Ước lượng tỷ lệ cho mức lương trung bình
Trước tiên ta cần lọc kết quả về mức lương theo hình thức làm việc trực tiếp (0). Kết quả thu được như sau:
remote_0 <- table(d[d$remote == "0", ]$sal)
remote_0
##
## cao trung thap
## 2361 6146 2611
prop.test(remote_0["trung"], sum(remote_0), p = 0.7)
##
## 1-sample proportions test with continuity correction
##
## data: remote_0["trung"] out of sum(remote_0), null probability 0.7
## X-squared = 1146.5, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
## 0.5434935 0.5620644
## sample estimates:
## p
## 0.5527973
Dựa trên kết quả kiểm định tỷ lệ một mẫu với giả thuyết không (H0): Tỷ lệ người có mức lương trung trong nhóm làm việc trực tiếp là 0.7 (70%).
Kết quả kiểm định cho thấy giá trị p-value < 2.2e-16, rất nhỏ hơn giá trị α = 0.05. Điều này chứng tỏ có bằng chứng mạnh mẽ để bác bỏ giả thuyết rằng tỷ lệ người có mức lương trung trong nhóm làm việc trực tiếp là 70%.
Tỷ lệ thực tế của kỹ sư có mức lương trung trong nhóm làm việc trực tiếp là khoảng 55.28%. Khoảng ước lượng tỷ lệ ở độ tin cậy 95% là từ 54.35% đến 56.21%.
Ước lượng tỷ lệ cho nhóm lương thấp
prop.test(remote_0["thap"], sum(remote_0), p = 0.2)
##
## 1-sample proportions test with continuity correction
##
## data: remote_0["thap"] out of sum(remote_0), null probability 0.2
## X-squared = 84.149, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.2
## 95 percent confidence interval:
## 0.2270129 0.2428602
## sample estimates:
## p
## 0.2348444
Vì giá trị p rất nhỏ (p < 2.2e-16), chúng ta bác bỏ giả thuyết H0. Điều này cho biết tỷ lệ thực tế của người có mức lương thấp trong nhóm kỹ sư làm việc trực tiếp không phải là 20%.
Kết quả cho thấy tỷ lệ ước tính của người có mức lương thấp trong nhóm là khoảng 23.48%.
Khoảng tin cậy 95% cho phép ước tính rằng tỷ lệ này dao động từ 22.70% đến 24.27%.
Ước lượng tỷ lệ cho nhóm lương cao
prop.test(remote_0["cao"], sum(remote_0), p = 0.3)
##
## 1-sample proportions test with continuity correction
##
## data: remote_0["cao"] out of sum(remote_0), null probability 0.3
## X-squared = 406.24, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.3
## 95 percent confidence interval:
## 0.2048119 0.2201047
## sample estimates:
## p
## 0.2123583
Kết quả cho thấy p_value < 2.2e-16, cho thấy có đủ bằng chứng để bác bỏ giả thuyết H0.Điều này có nghĩa tỷ lệ kỹ sư có mức lương cao ở hình thức làm việc trực tiếp sẽ không bằng 30%.
Thực tế, tỷ lệ kỹ sư ở mức lương cao chỉ ở mức 21.24%
Khoảng tin cậy 95%:Kết quả này chỉ ra rằng tỷ lệ kỹ sư có mức lương cao trong nhóm làm việc trực tiếp không đạt mức kỳ vọng là 30%, với mức tin cậy 95% tỷ lệ kỹ sư có mức lương cao chỉ từ 20.48% đến 22.01%.
Xác suất tuyến tính
Phần này sẽ thực hiện hồi quy xác suất tuyến tính giữa biến độc lập là hình thức làm việc và biến phụ thuộc là lương. Biến lương sal sẽ được mã hoá thành biến nhị phân với giá trị 1 tương ứng với mức lương trung và cao, ngược lại giá trị 0 tương ứng với mức lương thấp.
d$sal2 <- ifelse(d$sal %in% c("trung", "cao"), 1, 0)
d$remote <- relevel(as.factor(d$remote), ref = "0")
glm <- glm(sal2 ~ remote, data = d)
summary(glm)
##
## Call:
## glm(formula = sal2 ~ remote, data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.7652 0.2348 0.2348 0.2348 0.7390
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.765156 0.004052 188.829 <2e-16 ***
## remote50 -0.504111 0.027378 -18.413 <2e-16 ***
## remote100 -0.016365 0.007194 -2.275 0.0229 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.182553)
##
## Null deviance: 3079.8 on 16533 degrees of freedom
## Residual deviance: 3017.8 on 16531 degrees of freedom
## AIC: 18807
##
## Number of Fisher Scoring iterations: 2
\(\hat{\pi} = 0.765156 - 0.504111 \cdot remote50 - 0.016365 \cdot remote100\)
Tất cả các hệ số đều có giá trị \(p\) nhỏ hơn mức ý nghĩa \(\alpha = 0.05\), ngụ ý rằng tất cả các hệ số đều có ảnh hưởng ý nghĩa thống kê đến mức lương.
Hệ số \(\hat{\beta}_0 = 0.765156\) có ý nghĩa rằng tỷ lệ để người kỹ sư đạt được mức lương trung bình là 76.51% trong trường hợp không xuất hiện các hình thức làm việc khác.
Đối với hệ số \(\hat{\beta}_1 = - 0.504111\), ta nhận thấy khi kỹ sư làm việc theo hình thức vừa trực tiếp và trực tuyến khi không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm làm theo hình thức trực tiếp và trực tuyến so với và nhóm làm việc trực tiếp là -50.4%, hay có thể nói cách khác tỷ lệ bình quân để đạt mức lương trung trở lên trong nhóm này là 49.6%.
Tương tự, \(\hat{\beta}_2 = -0.016365\), ta nhận thấy khi kỹ sư làm việc theo hình thức trực tuyến và không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm làm việc tự do và nhóm toàn thời gian là -1,6%, hay tỷ lệ đạt mức lương trung trở lên trong nhóm này là 0%.
Ta nhận thấy ở cả ba nhóm hợp đồng, bán thời gian, và tự do đều có mối quan hệ âm với mức lương từ tầm trung trở lên. Nhưng nếu không có sự tác động của ba nhóm trên thì xác suất để đạt mức lương trên là khá cao, khoảng 0.754649.
n1 <- data.frame(remote = c("0", "50", "100"))
predict.glm(glm, newdata = n1, type= "response")
## 1 2 3
## 0.7651556 0.2610442 0.7487904
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư làm việc trực tiếp (0) là khoảng 76,51%. Điều này có nghĩa một kỹ sư làm việc trực tiếp có xác suất khoảng 76.51% có mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư vừa làm việc trực tiếp vừa làm trực tuyến (2) thì xác suất để đạt được mức lương trung trở lên chỉ khoảng 26,1%.
Trong nhóm kỹ sư làm việc trực tuyến (3) thì xác suất để đạt mức lương trung khoảng 74.88%.
Mô hình logit
Ngoài ra chúng ta có thể thực hiện mô hình hồi quy khi có hàm liên kết dạng $ (g() = logit() = () $ khi phân tích mối quan hệ giữa nhóm việc làm với mức lương, trong đó nhóm công việc trực tiếp sẽ làm nhóm cơ sở.
logit1 <- glm(factor(sal2) ~ remote, data = d, family = binomial(link = 'logit'))
summary(logit1)
##
## Call:
## glm(formula = factor(sal2) ~ remote, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.7023 0.7317 0.7317 0.7317 1.6389
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.18116 0.02237 52.794 <2e-16 ***
## remote50 -2.22170 0.14601 -15.216 <2e-16 ***
## remote100 -0.08898 0.03911 -2.275 0.0229 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 18506 on 16533 degrees of freedom
## Residual deviance: 18231 on 16531 degrees of freedom
## AIC: 18237
##
## Number of Fisher Scoring iterations: 4
Ta có kết quả từ hàm hồi quy thông qua mô hình logit như sau:
\[ \ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right) = 1.18116 - 2.22170 \cdot remote50 - 0.08898 \cdot remote100 \]
Hệ số chặn là 1.18116 điều này có nghĩa là khi không có sự tác động của hình thức làm việc khác thì \(\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right)\) của kỹ sư làm việc trực tiếp đạt mức lương trung là 1.18116.
Đối với hệ số \(\hat{\beta}_1 = -2.22170\), điều này cho thấy chênh lệch \(\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right)\) đạt mức lương trung trở lên giữa nhóm vừa làm việc trực tiếp và làm trực tuyến so với nhóm là trực tiếp là -1.41125.
Đối với hệ số \(\hat{\beta}_2 = -0.08898\), điều này cho thấy chênh lệch \(\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right)\) đạt mức lương trung trở lên giữa nhóm làm việc trực tuyến với nhóm làm việc trực tiếp là -0.08898
Sau đó từ mô hình logit ta dự báo xác suất của biến lương tương ứng với mỗi hình thức làm việc việc. Ta cần một khung dữ liệu n với một cột type chứa các giá trị “0”, “50”, “100”.
n2 <- data.frame(remote = c("0", "50", "100") )
predict.glm(logit1, newdata = n2, type="response")
## 1 2 3
## 0.7651556 0.2610442 0.7487904
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện 1 là khoảng 76.51%. Điều này có nghĩa một kỹ sư làm việc trực tiếp có xác suất khoảng 76.51% có mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc vừa trực tiếp vừa trực tuyến thì xác suất để đạt được mức lương trung trở lên chỉ khoảng 25,1%.
Cuối cùng nhóm có xác suất cao nhất để đạt mức lương trung là nhóm kỹ sư làm việc theo hình thức trực tuyến xác suất để đạt được mức lương trung trở lên khoảng 74.88%.
Mô hình Probit
Thay vì sử dụng mô hình logit, ta có thể thay thế bằng mô hình probit dự đoán xác suất của một sự kiện xảy ra. Mô hình probit sử dụng hàm phân phối chuẩn. Trong đó hàm liên kết có dạng \(\text{probit}(\pi) = \Phi^{-1}(\pi)\) và hàm xác suất là \(\pi(x) = \Phi(\beta_0 + \beta_1 X + \beta_2 X_2 + \ldots + \beta_n X_n)\).
probit1 <- glm(factor(sal2) ~ remote, data = d, family = binomial(link = 'probit'))
summary(probit1)
##
## Call:
## glm(formula = factor(sal2) ~ remote, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.7023 0.7317 0.7317 0.7317 1.6389
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.72299 0.01309 55.244 <2e-16 ***
## remote50 -1.36312 0.08663 -15.736 <2e-16 ***
## remote100 -0.05230 0.02302 -2.272 0.0231 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 18506 on 16533 degrees of freedom
## Residual deviance: 18231 on 16531 degrees of freedom
## AIC: 18237
##
## Number of Fisher Scoring iterations: 4
Ta có kết quả mô hình hồi quy như sau:
\[ \hat{\pi} = \Phi(0.72299 - 1.36312 \times remote50 - 0.05230 \times remote100) \]
Hệ số chặn là 0.72299 và có ý nghĩa thống kê khi giá trị p_value nhỏ hơn mức ý nghĩa 5%. Điều này có nghĩa là khi không có sự tác động các biến độc lập khác thì xác suất để kỹ sư đạt mức lương trung là \(\Phi(0.72299)\).
Hệ số \(\hat{\beta}_1 = -1.36312\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm làm việc vừa trực tiếp vừa trực tuyến so với nhóm làm việc trực tiếp là \(\Phi(-0.86921)\).
Hệ số \(\hat{\beta}_2 = -0.05230\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm làm việc trực tuyến so với nhóm làm việc trực tiếp là \(\Phi(-5.30055)\).
Từ kết quả trên, chúng tôi sẽ thực hiện dự báo cho tỷ lệ để đạt được mức lương trung trong các nhóm công việc. Kết quả được trình bày trong bảng bên dưới.
predict.glm(probit1, newdata = n2, type="response")
## 1 2 3
## 0.7651556 0.2610442 0.7487904
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư làm việc trực tiếp (1) là khoảng 76,51%. Điều này có nghĩa một kỹ sư làm việc ttrực tiếp có xác suất khoảng 76,51% có mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc vừa trực tiếp vừa trực tuyến (2) thì xác suất để đạt được mức lương trung trở lên chỉ khoảng 26,1%
Trong nhóm kỹ sư làm việc trực tuyến (3) thì xác suất để đạt mức lương trung khoảng 74.88%, cao hơn so với xác suất của nhóm (2).
AIC(glm)
## [1] 18806.84
AIC(logit1 )
## [1] 18236.83
AIC(probit1 )
## [1] 18236.83
Kết quả cho thấy hình Logit và Probit đều tốt hơn mô hình xác suất tuyến tính trong việc giải thích mối quan hệ giữa loại công việc và xác suất đạt mức lương từ trung trở lên, vì chỉ số AIC của của chúng thấp hơn. Ngoài ra Logit và Probit có hiệu suất tương đương nhau vì chúng có cùng chỉ số AIC
Hệ số Brier Score
Tương tự, phần này sẽ tính chỉ số Brier Score được sử dụng để đo lường độ chính xác của các dự đoán xác suất.
BrierScore(logit1)
## [1] 0.1825199
BrierScore(probit1)
## [1] 0.1825199
Kết quả bên trên cho thấy Brier Score cho logit và probit đều là 0.18525199. Điều này có nghĩa là cả hai mô hình đều có hiệu suất tương đương khi dự đoán xác suất cho biến mục tiêu. Brier Score khá thấp (gần 0), cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế.
Ma trận nhầm lẫn
Conf(table(predict(probit1, type="response") >=0.5,probit1$data$sal2 == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 184 65
## TRUE 3909 12376
##
## Total n : 16'534
## Accuracy : 0.7596
## 95% CI : (0.7531, 0.7661)
## No Information Rate : 0.7524
## P-Value [Acc > NIR] : 0.0161
##
## Kappa : 0.0580
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.0450
## Specificity : 0.9948
## Pos Pred Value : 0.7390
## Neg Pred Value : 0.7600
## Prevalence : 0.2476
## Detection Rate : 0.0151
## Detection Prevalence : 0.0111
## Balanced Accuracy : 0.5199
## F-val Accuracy : 0.0848
## Matthews Cor.-Coef : 0.1408
##
## 'Positive' Class : FALSE
Từ kết quả trên ma trận cho ta biết có 184 số lần mô hình dự đoán đúng là mức lương thấp. Tuy nhiên có 65 lần mô hình dự đoán sai đối với mức lương trung và khoảng 3909 lần mô hình dự đoán sai mức lương thấp. Số lần mô hình dự đoán đúng ở mức lương trung là 12376 lần đạt cao nhất.
Ngoài ra ta có tỷ lệ dự đoán đúng của mô hình là 0.7596 và ở độ tin cậy là 95% thì tỷ lệ này nằm trong khoảng từ (0.7531, 0.7661)
Trong phần này, tôi lập bảng tần số cho biến trình độ công việc để xem xét và bóc tách các cấu phần có trong biến này. Trước khi phân tích, ta tiến hành đổi biến experience_level thành el. Sau đó tôi tiến hành lập bảng tần số cho biến el. Kết quả thu được như sau:
d <- d %>% rename(el = experience_level) # đổi tên biến
table(d$el)
##
## EN EX MI SE
## 1325 501 4038 10670
e <- as.data.frame(table(d$el))
colnames(e) <- c("Exp", "Count")
ggplot(e, aes(x = Exp, y = Count, fill = Exp)) +
geom_bar(stat = "identity", width = 0.5) +
geom_text(aes(label = Count), vjust = -0.5, size = 3.5) + # Hiển thị số liệu bên trên cột
labs(title = "Đồ thị trình độ chuyên môn ", x = "Exp", y = "Frequency") +
theme_minimal()
Dựa vào kết quả từ bảng và đồ thị ta nhận thấy ta thấy kỹ sư cao cấp (SE) nhiều nhất với 10670 người, kế đến là kỹ sư trung cấp (MI) với số lượng là 4038 người, tiếp theo là kỹ sư mới vào nghề (EN) với 1325 người, cuối cùng là kỹ sư điều hành với 501 người.
Mặt khác ta cũng cần thực hiện phân tích tỷ lệ phần trăm đối với từng nhóm kinh nghiệm công việc và trực quan chúng bằng đồ thị tròn để có thể dễ dàng so sánh với nhau.
Tiếp theo ta có thể dựa vào bảng tần suất để phân tích tỷ trọng
prop.table(table(d$el))*100
##
## EN EX MI SE
## 8.01379 3.03012 24.42240 64.53369
e$Percentage <- (e$Count / sum(e$Count)) * 100
ggplot(e, aes(x = "", y = Percentage, fill = Exp)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm cho nhóm kinh nghiệm làm việc", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Dựa vào kết quả bảng tần suất và đồ thị phía trên ta thấy kỹ sư cao cấp chiếm tỷ trọng lớn nhất với 64.5%, kỹ sư trung cấp đứng thứ hai với 24.42%, tỷ trọng kỹ sư mới vào nghề chiếm 8.01% và tỷ trọng kỹ sư điều hành chiếm 3.03%.
Trước khi phân tích những yếu tố sẽ tác động đến tiền lương của những người kĩ sư chúng ta cần phân nhóm thành ba mức lương là thấp, trung và cao để dễ dàng nhận diện, so sánh. Hơn thế, chúng ta có thể phân tích sâu sắc về cấu trúc tiên lương cũng như là các yếu tố định tính sẽ ảnh hưởng đáng kể đến các mức phân loại tiền lương của các kỹ sư một cách hiệu quả nhất.
d$salusd <- cut(d$salary_in_usd,
breaks = c(0, 100000,200000, Inf),
labels = c("thap","trung", "cao"))
table(d$el, d$salusd) %>% addmargins()
##
## thap trung cao Sum
## EN 894 393 38 1325
## EX 38 244 219 501
## MI 1631 2008 399 4038
## SE 1530 6613 2527 10670
## Sum 4093 9258 3183 16534
table_data <- table(d$el, d$salusd)
# Chuyển bảng chéo sang định dạng dài
long_data <- as.data.frame(table_data)
colnames(long_data) <- c("Exp", "salary", "count")
# Vẽ biểu đồ cột
ggplot(long_data, aes(x = salary, y = count, fill = salary)) +
geom_bar(stat = "identity", position = position_dodge()) +
geom_text(aes(label = count), vjust = 1, size = 2.5, position = position_dodge(1)) +
facet_wrap(~ Exp, scales = "free_y", nrow = 2) +
labs(title = "Phân bố mức lương theo trình độ công việc",
x = "Mức lương",
y = "Số lượng kỹ sư",
fill = "Mức lương") +
theme_minimal()
– Cụ thể,Kỹ sư cao cấp (SE) có 1530 người nhận lương ở mức thấp, 6613 người nhận lương ở mức trung bình và 2527 người nhận lương ở mức cao, tổng cộng là 10670 người.Đối với các kỹ sư mới vào nghề (EN), có 894 người nhận lương ở mức thấp, 393 người nhận lương ở mức trung bình và 38 người nhận lương ở mức cao, với tổng số là 1325 người.
– Đối với các kỹ sư điều hành (EX), có 38 người nhận lương ở mức thấp, 244 người ở mức trung bình và 219 người ở mức cao, tổng cộng là 501 người. Các kỹ sư trung cấp (MI) có 1631 người nhận lương ở mức thấp, 2008 người ở mức trung bình và 399 người ở mức cao, với tổng cộng 4038 người.
– Tổng cộng, bảng này cho thấy có 4093 kỹ sư ở mức lương thấp, 9258 kỹ sư ở mức lương trung bình và 3183 kỹ sư ở mức lương cao, với tổng số kỹ sư là 16534 người.
Tiếp theo, lập bảng tần suất giữa hai biến lương và hình thức công việc. Từ đó vẽ đồ thì cột theo từng nhóm công việc như bên dưới đây.
table_data <- round(prop.table(table_data)*100,2)
table_data
##
## thap trung cao
## EN 5.41 2.38 0.23
## EX 0.23 1.48 1.32
## MI 9.86 12.14 2.41
## SE 9.25 40.00 15.28
# Chuyển đổi dữ liệu thành dạng dài để dễ vẽ biểu đồ
table_data <- as.data.frame.table(table_data)
colnames(table_data) <- c("Group", "Level", "Percentage")
# Vẽ biểu đồ
ggplot(table_data, aes(x = Level, y = Percentage, fill = Level)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = Percentage), vjust = 1, size = 2.5, position = position_dodge(1)) +
facet_wrap(~ Group, scales = "free_y", nrow = 2) +
labs(title = "Đồ thị phần trăm trình độ chuyên môn ",
x = "Trình độ chuyên môn",
y = "Phần trăm",
fill = "Mức lương") +
scale_fill_manual(values = c("thap" = "blue", "trung" = "orange", "cao" = "red")) +
theme_minimal()
Đối với nhóm kỹ sư cao cấp: Tỷ lệ mức lương thấp chiếm đạt 9.25% so với tổng số kỹ sư, tỷ lệ kỹ sư mức lương trung là 40% và tỷ lệ kỹ sư đạt mức lương cao đối với kỹ sư cao cấp là 15.28%.
Đối với nhóm kỹ mới vào nghề: Tỷ lệ mức lương thấp chiếm 5.41% so với tổng số kỹ sư, vì thế ta nhận thấy mức lương thấp đứng cao nhất trong nhóm kỹ sư mới vào nghề. Tỷ lệ kỹ sư có mức lương trung là 2.38% và thấp nhất trong nhóm là tỷ lệ kỹ sư đạt mức lương cao đạt 0.23%.
Đối với nhóm kỹ sư điều hành: Tỷ lệ mức lương thấp chiếm chỉ 0.23% so với tổng số kỹ sư. Tỷ lệ kỹ sư có mức lương trung là 1.48% và tỷ lệ kỹ sư đạt mức lương cao đạt 1.32%.
Đối với nhóm kỹ sư trung cấp: Tỷ lệ mức lương thấp chiếm chỉ 9.86% so với tổng số kỹ sư. Tỷ lệ kỹ sư có mức lương trung là 12.14% và tỷ lệ kỹ sư đạt mức lương cao đạt 2.41%.
Trong phần này, tôi thực hiện tính relative risk giữa trình độ chuyên môn tương ứng với các mức lương thấp trung và cao.trong đó biến độc lập là trình độ chuyên môn và biếnbiến phụ thuộc là mức lương. Trình độ chuyên môn được chọn làm tham chiếu là SE - Kỹ sư cao cấp.
# Tạo bảng dữ liệu
nth <- data.frame(
level = c("EN", "EX", "MI", "SE"),
thap = c(894, 38, 1631, 1530),
trung = c(393, 244, 2008, 6613),
cao = c(38, 219, 399, 2527),
sum = c(1325, 501, 4038, 10670)
)
# Tính tỷ lệ cho mỗi mức lương
nth$rthap <- nth$thap / nth$sum
nth$rtrung <- nth$trung / nth$sum
nth$rcao <- nth$cao / nth$sum
# Tính Relative Risk (RR) so với nhóm SE (Kỹ sư cao cấp)
rlow <- nth$rthap / nth$rthap[nth$level == "SE"]
rme <- nth$rtrung / nth$rtrung[nth$level == "SE"]
rhigh <- nth$rcao / nth$rcao[nth$level == "SE"]
# Tạo bảng kết quả RR
rr1 <- data.frame(
level = nth$level,
RR_low = rlow,
RR_me = rme,
RR_high = rhigh
)
# Hiển thị kết quả
print(rr1)
## level RR_low RR_me RR_high
## 1 EN 4.7053792 0.4785668 0.1210952
## 2 EX 0.5289552 0.7858108 1.8457189
## 3 MI 2.8168300 0.8023490 0.4172206
## 4 SE 1.0000000 1.0000000 1.0000000
Giải thích
– Lương thấp:
Kỹ sư mới vào nghề (EN) có nguy cơ nhận lương thấp cao hơn 4.712 lần so với kỹ sư cao cấp (SE). Kỹ sư điều hành (EX) có nguy cơ nhận lương thấp thấp hơn, chỉ bằng 0.530 lần so với kỹ sư cao cấp (SE). Kỹ sư trung cấp (MI) có nguy cơ nhận lương thấp cao hơn 2.828 lần so với kỹ sư cao cấp (SE).
– Lương trung:
Kỹ sư mới vào nghề (EN) có nguy cơ nhận lương trung thấp hơn, chỉ bằng 0.479 lần so với kỹ sư cao cấp (SE). Kỹ sư điều hành (EX) và kỹ sư trung cấp (MI) có nguy cơ nhận lương trung thấp hơn một chút so với kỹ sư cao cấp (SE), với RR lần lượt là 0.785 và 0.802.
– Lương cao:
Kỹ sư mới vào nghề (EN) có nguy cơ nhận lương cao thấp hơn nhiều, chỉ bằng 0.122 lần so với kỹ sư cao cấp (SE). Kỹ sư điều hành (EX) có nguy cơ nhận lương cao cao hơn, với RR là 1.844 so với kỹ sư cao cấp (SE). Kỹ sư trung cấp (MI) có nguy cơ nhận lương cao thấp hơn, với RR là 0.418 so với kỹ sư cao cấp (SE). Tóm lại, kỹ sư mới vào nghề (EN) có xu hướng nhận lương thấp hơn nhiều so với các cấp bậc khác, trong khi kỹ sư điều hành (EX) có nguy cơ nhận lương cao hơn so với kỹ sư cao cấp (SE).
Trong phần này chúng tôi sẽ thực hiện khoảng ước lượng cho RR với khoảng tin cậy 95%. Tuy nhiên để cho kết quả dễ dàng phân tích hơn trước nên chúng tôi sẽ thực hiện trên bảng có số lượng nhỏ hơn là 2x2.
Trước tiên tôi tính khoảng ước lượng Relative Risk đối với mức lương thấp và trung nhưng trong nhóm SE và MI
NTH1 <- matrix(c(1530, 3313,
1631, 2008),
nrow = 2,
byrow = TRUE,
dimnames = list(c( "SE", "MI"),
c("thap", "trung")))
library("epitools")
epitab(NTH1, method = 'riskratio', rev = 'c')
## $tab
## trung p0 thap p1 riskratio lower upper p.value
## SE 3313 0.6840801 1530 0.3159199 1.000000 NA NA NA
## MI 2008 0.5517999 1631 0.4482001 1.418714 1.342887 1.498823 1.68852e-35
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
## $tab
Xác suất để có mức lương thấp đối với nhóm kỹ sư trung cấp là khoảng 44.82% và xác suất để đạt mức lương thấp đối với nhóm kỹ sư cao cấp là 31.45%, trong trường hợp này tỷ lệ Relative Risk (RR) là khoảng 1.418 điều này cho thấy khả năng để nhóm kỹ sư trung cấp đạt được mức lương “thấp” cao gấp 1.418 lần đối với nhóm kỹ sư cao cấp. Khoảng ước lượng Relative Risk có kết quả là 1.34 và 1.49 đối với độ tin cậy 95%. Giá trị p.value khoảng 1.68852e-35 nhỏ hơn mức ý nghĩa 5% vì vậy kết quả này có ý nghĩa thống kê cho thấy có sự khác biệt ở nhóm kỹ sư trung cấp và kỹ sư cao cấp.
Trong phần này chúng tôi sẽ tính tỷ lệ Odd Ratio của hai biến lương và trình độ chuyên môn. Để dễ dàng trong phân tích Chúng tôi sẽ tách số liệu từ bảng tần số ban đầu thành bảng tần số mới chỉ bao gồm nhóm lương thấp, cao và nhóm KỸ SƯ cao cấp và kỹ sư trung cấp.
nth_odd <- table(d$el,d$sal)
nth_odd2 <- nth_odd[c("SE", "MI"), c("thap", "cao")]
epitab(nth_odd2, method = 'oddsratio')
## $tab
##
## thap p0 cao p1 oddsratio lower upper p.value
## SE 1530 0.484024 2527 0.8636364 1.0000000 NA NA NA
## MI 1631 0.515976 399 0.1363636 0.1481171 0.1305109 0.1680983 5.917836e-228
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả Odd Ratio của MI so với SE khoảng 0.148 điều này có nghĩa là odd mức lương cao của nhóm kỹ sư trung cấp chỉ bằng khoảng 14,8%% so với odd kỹ sư cao cấp.
Khoảng tin cậy của OR đối với độ tin cậy 95% là từ 0.1305 đến 0.168 và giá trị p là 5.917836e-2285, nhỏ hơn 0.05 cho thấy có sự khác biệt giữa odd ở hai nhóm MI và SE.
Phần này sẽ 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 độ kỹ sư 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 trung và cao, ngược lại giá trị 0 tương ứng với mức lương thấp.
d$sal2 <- ifelse(d$sal %in% c("trung", "cao"), 1, 0)
d$el <- relevel(as.factor(d$el), ref = "SE")
glm3 <- glm(sal2 ~ el, data = d)
summary(glm3)
##
## Call:
## glm(formula = sal2 ~ el, data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.92415 0.07585 0.14339 0.14339 0.67472
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.856607 0.003846 222.733 <2e-16 ***
## elEN -0.531324 0.011571 -45.917 <2e-16 ***
## elEX 0.067544 0.018160 3.719 2e-04 ***
## elMI -0.260520 0.007340 -35.494 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.157819)
##
## Null deviance: 3079.8 on 16533 degrees of freedom
## Residual deviance: 2608.7 on 16530 degrees of freedom
## AIC: 16401
##
## Number of Fisher Scoring iterations: 2
\(\hat\pi= 0.856607-0.531324EN+0.067544EX-0.260520MI\)
Tất cả các hệ số đều có giá trị p nhỏ hơn mức ý nghĩa \(\alpha= 5%\) , ngụ ý rằng tất cả các hệ số đều có ảnh hưởng ý nghĩa thống kê đến mức lương.
Hệ số \(\hat\beta_0 = 0.856607\) có ý nghĩa rằng tỷ lệ để người kỹ sư đạt được mức lương trung bình là 85.66% trong trường hợp không xuất hiện các nhóm công việc khác.
Đối với hệ số \(\hat\beta_1 =-0.531324\) ta nhận thấy khi kỹ sư mới vào nghề và không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm mới vàơ nghề và nhóm kỹ sư cao cấp là -53.13%, hay có thể nói cách khác tỷ lệ bình quân để đạt mức lương trung trở lên trong nhóm này là 32.53%
Tương tự \(\hat\beta_2 =0.067544\) ta nhận thấy khi kỹ sư làm điều hành và không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm là 6.75%, hay tỷ lệ đạt mức lương trung trở lên trong nhóm này là 92.41%
Cuối cùng với \(\hat\beta_3 =-0.260520\) ta nhận thấy khi kỹ sư trung câp không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm kỹ sư trung cấp và kỹ sư cao cấp là - 26.05%, hay tỷ lệ đạt mức lương trung trở lên trong nhóm này là 59.61%
Ta nhận thấy ở cả ba nhóm kỹ sư trung cấp, mới vào nghề, đều có mối quan hệ âm với mức lương lương từ tầm trung trở lên, riêng kỹ sư điều hành thì dương. Nhưng nếu không có sự tác động của ba nhóm trên thì xác suất để đạt mức lương trên là khá cao khoảng 85.66%.
h <- data.frame(el = c("SE", "EX", "EN","MI") )
predict.glm(glm3, newdata = h, type="response")
## 1 2 3 4
## 0.8566073 0.9241517 0.3252830 0.5960872
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư cao cấp (1) là khoảng 85.66%. Điều này có nghĩa một kỹ sư cao cấp có xác suất khoảng 85.66% nhận mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư điều hành (2) thì xác suất để đạt được mức lương trung trở lên khoảng 92.41%, cao nhất trong nhóm kỹ sư.
Trong nhóm kỹ sư mới vào nghề (3) thì xác suất để đạt mức lương trung trở lên chỉ khoảng 32.52%, thấp nhất trong nhóm trình độ kỹ sư.
Cuối cùng kỹ sư trung cấp toàn thời gian có xác suất đạt mức lương từ trung trở lên là 59.6%, đúng thứ 3 trong nhóm trình độ kỹ sư.
nth_logit <- glm(factor(sal2) ~ el, data = d, family = binomial(link = 'logit'))
summary(nth_logit)
##
## Call:
## glm(formula = factor(sal2) ~ el, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2711 0.3972 0.5564 0.5564 1.4987
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.78739 0.02762 64.708 < 2e-16 ***
## elEN -2.51699 0.06482 -38.830 < 2e-16 ***
## elEX 0.71275 0.17086 4.172 3.02e-05 ***
## elMI -1.39820 0.04233 -33.033 < 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: 18506 on 16533 degrees of freedom
## Residual deviance: 16161 on 16530 degrees of freedom
## AIC: 16169
##
## Number of Fisher Scoring iterations: 4
Ta có kết từ hàm hồi quy thông qua mô hình logit như sau:
\(ln(\frac{\hat\pi}{1−\hat\pi})= 1.78739−2.51699EN+0.71275EX−1.39820MI\)
Hệ số chặn là 1.78739 điều này có nghĩa là khi không có sự tác động của nhóm kỹ sư khác thì \(ln(\frac{\hat\pi}{1−\hat\pi})\) của kỹ sư cao cấp đạt mức lương trung và cao là 1.78739
Đối với hệ số \(\hat\beta_1 =-2.51699\) điều này cho thấy chênh lệch \(ln(\frac{\hat\pi}{1−\hat\pi})\) đạt mức lương trung trở lên giữa nhóm kỹ sư mới vào nghề và nhóm kỹ sư cao cấp là -2.51699
Tương tự, hệ số \(\hat\beta_2 =0.71275\) điều này cho thấy chênh lệch \(ln(\frac{\hat\pi}{1−\hat\pi})\) mức lương trung trở lên giữa nhóm kỹ sư điều hành và nhóm kỹ sư cao cấp là 0.71275.
Đối với hệ số \(\hat\beta_3 =-1.39820\) điều này cho thấy chênh lệch \(ln(\frac{\hat\pi}{1−\hat\pi})\) đạt mức lương trung trở lên giữa nhóm kỹ sư trung cấp và nhóm kỹ sư cao cấp là -1.39820 Sau đó từ mô hình logit ta dự báo xác suất của biến lương tương ứng với mỗi nhóm việc là. Ta cần một khung dữ liệu n với một cột type chứa các giá trị “SE”, “EX”, “EN”, và “MI”.
h <- data.frame(el = c("SE", "EX", "EN","MI") )
predict.glm(nth_logit, newdata = h, type="response")
## 1 2 3 4
## 0.8566073 0.9241516 0.3252830 0.5960872
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư cao cấp (1) là khoảng 85.66%. Điều này có nghĩa một kỹ sư cao cấp có xác suất khoảng 85.66% nhận mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư điều hành (2) thì xác suất để đạt được mức lương trung trở lên khoảng 92.41%, cao nhất trong nhóm kỹ sư.
Trong nhóm kỹ sư mới vào nghề (3) thì xác suất để đạt mức lương trung trở lên chỉ khoảng 32.52%, thấp nhất trong nhóm trình độ kỹ sư.
Cuối cùng kỹ sư trung cấp toàn thời gian có xác suất đạt mức lương từ trung trở lên là 59.6%, đúng thứ 3 trong nhóm trình độ kỹ sư.
Thay vì sử dụng mô hình logit ta có thể thay thế bằng mô hình probit dự đoán xác suất của một sự kiện xảy ra, mô hình probit sử dụng hàm phân phối chuẩn. Trong đó hàm liên kết có dạng \(probit(π) = Φ^{-1}(π)\) và hàm xác suất là \(π(x)=Φ(β_0+β_1X+β_2X_2+...+β_nX_n)\). Ta thực hiện thao tác khá tương tự với phân trên
nth_probit <- glm(factor(sal2) ~ el, data = d, family = binomial(link = 'probit'))
summary(nth_probit)
##
## Call:
## glm(formula = factor(sal2) ~ el, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2711 0.3972 0.5564 0.5564 1.4987
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.06520 0.01500 71.020 < 2e-16 ***
## elEN -1.51818 0.03877 -39.163 < 2e-16 ***
## elEX 0.36836 0.08418 4.376 1.21e-05 ***
## elMI -0.82197 0.02495 -32.947 < 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: 18506 on 16533 degrees of freedom
## Residual deviance: 16161 on 16530 degrees of freedom
## AIC: 16169
##
## Number of Fisher Scoring iterations: 4
Ta có kết quả mô hình hồi quy như sau:
\(\hat\pi= \Phi( 1.06520-1.51818×EN+0.36836×EX−0.82197×MI)\)
Hệ số chặn là 1.06520 và có ý nghĩa thống kê khi giá trị p_value nhỏ hơn mức ý nghĩa 5%. Điều này có nghĩa là khi không có sự tác động các biến độc lập khác thì xác suất để kỹ sư cao cấp là \(\Phi(1.06520)\)
Hệ số \(\hat\beta_1= −1.51818\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm kỹ sư mới vào nghề và kỹ sư cao cấp đạt khoảng \(\Phi(-1.51818)\)
Hệ số \(\hat\beta_2=−5.30055\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm kỹ sư điều hành và nhóm kỹ sư cao cấp đạt khoảng \(\Phi(−5.30055)\)
Hệ số \(\hat\beta_3= −1.16870\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm kỹ sư trung cấp và kỹ sư cao cấp đạt khoảng \(\Phi(−1.16870)\)
Từ kết quả trên chúng tôi sẽ thực hiện dự báo cho tỷ lệ để đạt được mức lương trung trong các nhóm công việc. Kết quả được trình bày trong bảng bên dưới.
predict.glm(nth_probit, newdata = h, type="response")
## 1 2 3 4
## 0.8566073 0.9241517 0.3252830 0.5960872
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư cao cấp (1) là khoảng 85.66%. Điều này có nghĩa một kỹ sư cao cấp có xác suất khoảng 85.66% nhận mức lương trung đến cao.
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư điều hành (2) thì xác suất để đạt được mức lương trung trở lên khoảng 92.41%, cao nhất trong nhóm kỹ sư.
Trong nhóm kỹ sư mới vào nghề (3) thì xác suất để đạt mức lương trung trở lên chỉ khoảng 32.52%, thấp nhất trong nhóm trình độ kỹ sư.
Cuối cùng kỹ sư trung cấp toàn thời gian có xác suất đạt mức lương từ trung trở lên là 59.6%, đúng thứ 3 trong nhóm trình độ kỹ sư.
AIC (Akaike Information Criterion) là một chỉ số được sử dụng để đánh giá và so sánh các mô hình thống kê. Mô hình có AIC thấp hơn được coi là tốt hơn vì nó cân bằng giữa độ phù hợp và độ phức tạp của mô hình. Do đó chúng ta sử dụng chỉ số này để so sánh ba mô hình bên trên để lựa chọn mô hình phù hợp nhất trong phân tích xác suất để đạt được mức lương trung.
AIC(glm3)
## [1] 16400.63
AIC(nth_logit)
## [1] 16168.77
AIC(nth_probit)
## [1] 16168.77
kết quả cho thấy giá trị AIC của mô hình logit và mô hình probit nhỏ hơn so với mô hình glm, do đó chọn 2 mô hình logit và probit.
Tương tự, phần này sẽ tính chỉ số Brier Score được sử dụng để đo lường độ chính xác của các dự đoán xác suất.
BrierScore(nth_logit)
## [1] 0.1577808
BrierScore(nth_probit)
## [1] 0.1577808
Kết quả bên trên cho thấy Brier Score cho logit và probit đều là 0.1577808. Điều này có nghĩa là cả hai mô hình đều có hiệu suất tương đương khi dự đoán xác suất cho biến mục tiêu. Brier Score khá thấp (gần 0), cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế.
Conf(table(predict(nth_probit, type="response") >=0.5,nth_probit$data$sal2 == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 894 431
## TRUE 3199 12010
##
## Total n : 16'534
## Accuracy : 0.7805
## 95% CI : (0.7741, 0.7867)
## No Information Rate : 0.7524
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.2377
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.2184
## Specificity : 0.9654
## Pos Pred Value : 0.6747
## Neg Pred Value : 0.7897
## Prevalence : 0.2476
## Detection Rate : 0.0801
## Detection Prevalence : 0.0541
## Balanced Accuracy : 0.5919
## F-val Accuracy : 0.3300
## Matthews Cor.-Coef : 0.2921
##
## 'Positive' Class : FALSE
Từ kết quả trên ma trận cho ta biết có 894 số lần mô hình dự đoán đúng là mức lương thấp. Tuy nhiên có 431 lần mô hình dự đoán sai đối với mức lương trung và khoảng 3199 lần mô hình dự đoán sai mức lương thấp. Số lần mô hình dự đoán đúng ở mức lương trung là 12010 lần đạt cao nhất.
Ngoài ra ta có tỷ lệ dự đoán đúng của mô hình là 0.7805 và ở độ tin cậy là 95% thì tỷ lệ này nằm trong khoảng từ (0.7741, 0.7867)`
Trong phần này chúng tôi lập bảng tần số cho biến company_size nhằm mục tiêu thống kê số lượng kỹ sư trong mỗi nhóm hình thức công việc và so sánh sự khác biệt về số lượng cũng như tỷ lệ giữa chúng. Từ đó giúp cho mọi người hiểu rõ hơn ý nghĩa của biến này trước khi đánh giá sự ảnh hưởng của hình thức công việc đến mức lương.
Trong đó:
Trước tiên chúng ta cần đổi tên biến từ company_size thành size điều này sẽ giúp câu lệnh được thực hiện một cách ngắn gọn và dễ nhận biết hơn trước.
d <- d %>% rename(size = company_size) # đổi tên biến
Tiếp đến, chúng tôi sẽ lập bảng tần số cho biến size, kết quả sẽ được trình bày ở dưới đây.
table(d$size)
##
## L M S
## 1040 15306 188
Bảng tần số cho biết có 188 kỹ sư làm việc ở công ty có quy mô nhỏ (S). Thêm vào đó, số lượng kỹ sư làm việc ở công ty có quy mô nhỏ có số lượng thấp nhất.
Trong khi đó, số lượng kỹ sư làm việc ở công ty có quy mô trung bình (M) có số lượng lớn nhất trong bộ dữ liệu với 15306 kỹ sư.
Cuối cùng, có 1040 kỹ sư làm việc ở công ty có quy mô lớn (L)
# Tạo bảng tần số cho biến size
size <- as.data.frame(table(d$size))
colnames(size) <- c("Size", "Count")
ggplot(size, aes(x = Size, y = Count, fill = Size)) +
geom_bar(stat = "identity", width = 0.5) +
geom_text(aes(label = Count), vjust = -0.5, size = 3.5) + # Hiển thị số liệu bên trên cột
labs(title = "DO THI QUY MO CONG TY ", x = "Size", y = "Frequency") +
theme_minimal()
Dựa vào kết quả từ bảng và đồ thị ta nhận thấy hầu hết các kỹ sư (15306 người) sẽ làm việc ở công ty có quy mô M. Ngược lại, số kỹ sư làm việc ở công ty nhỏ là ít nhất (188 người). Số lượng kỹ sư làm việc ở công ty có quy mô mô lớn là 1040 kỹ sư
Trong trường hợp này, chúng tôi vẫn lập bảng tần số giữa hai biến size (quy mô công ty) và sal (mức lương phân tổ thành ba nhóm). Bảng tần số giúp chúng ta hiểu rõ hơn về sự phân bố mức lương theo từng quy mô công ty.
table(d$size, d$sal) %>% addmargins()
##
## cao trung thap Sum
## L 257 454 329 1040
## M 2920 8748 3638 15306
## S 6 56 126 188
## Sum 3183 9258 4093 16534
Vẽ đồ thị cột phân theo từng nhóm quy mô công ty để đánh giá mức lương của từng nhóm kỹ sư.
table_data5 <- table(d$size, d$sal)
# Chuyển bảng chéo sang định dạng dài
long_data5 <- as.data.frame(table_data5)
colnames(long_data5) <- c("size", "salary", "count")
# Vẽ biểu đồ cột
ggplot(long_data5, aes(x = salary, y = count, fill = salary)) +
geom_bar(stat = "identity", position = position_dodge()) +
geom_text(aes(label = count), vjust = 1, size = 2.5, position = position_dodge(1)) +
facet_wrap(~ size, scales = "free_y", nrow = 2) +
labs(title = "Phân bố mức lương theo quy mô công ty",
x = "Mức lương",
y = "Số lượng kỹ sư",
fill = "Mức lương") +
theme_minimal()
Dựa vào đồ thị chúng ta có thể thấy rằng:
Số lượng kỹ sư làm không làm việc ở công ty có quy mô lớn (L) có mức lương cao là 257 kỹ sư. Trong khi đó, số lượng kĩ sư làm việc ở công ty có quy mô lớn có mức lương trung có số lượng lớn nhất là 454 kỹ sư. Số kỹ sư có mức lương thấp làm việc ở công ty lớn là 329 kỹ sư.
Cùng với đó, số lượng kỹ sư làm việc ở công ty có quy mô trung bình (M) có mức lương thấp có số lượng là 3638 kỹ sư. Số lượng kỹ sư làm việc ở công ty quy mô trung bình có mức lương trung bình có số lượng lớn nhất trong tất cả các nhóm là 8748. Tương tự, số lượng kỹ sư làm việc ở công ty quy mô trung bình có mức lương cao có số lượng lớn nhất trong tất cả các nhóm với 2920 kỹ sư.
Số kỹ sư làm việc ở công ty có quy mô nhỏ (S) có số lượng ít nhất so với nhóm kỹ sư làm việc ở công ty có quy mô lớn và quy mô trung bình. Do đó số lượng kỹ sư có mức lương làm việc ở công ty quy mô nhỏ chỉ có 126 kỹ sư. Số lượng này giảm dần ở mức lương trung (56) kỹ sư và mức lương cao chỉ có 6 kỹ sư đạt mức lương này.
Trong phần này chúng tôi sẽ thực hiện tính Relative Risk nhằm phân tích sự ảnh hưởng của từng quy mô công ty lên các mức lương khác nhau.
RRsize <- matrix(c(329,454,257,
3638, 8748,2920,
126,56, 6),
nrow = 3,
byrow = TRUE,
dimnames = list(c("L", "M", "S"),
c("thap", "trung", "cao")))
RRsize
## thap trung cao
## L 329 454 257
## M 3638 8748 2920
## S 126 56 6
Dựa trên bảng tần số đã được giải thích rõ ở phần trước chúng tôi sẽ tính toán Relative Risk trong đó biến độc lập là quy mô công ty và phụ thuộc là mức lương. Nhóm công việc được chọn làm tham chiếu là M
Trước tiên cần tính tỷ lệ mức lương thấp, trung, cao trong tổng số người ở mỗi quy mô công ty khác nhau. Sau đó lấy tỷ lệ vừa tính được chia cho tỷ lệ ở nhóm tham chiếu, trong ví dụ là nhóm làm việc ở công ty có quy mô trung bình
R_tablesize <- as.data.frame(RRsize)
# Tính tổng số người trong mỗi nhóm
R_tablesize$Total <- rowSums(R_tablesize)
# Tính tỷ lệ người ở mỗi mức lương trong mỗi nhóm
R_tablesize$Rate_thap <- R_tablesize$thap / R_tablesize$Total
R_tablesize$Rate_trung <- R_tablesize$trung / R_tablesize$Total
R_tablesize$Rate_cao <- R_tablesize$cao / R_tablesize$Total
# Tính tỷ lệ cho nhóm tham chiếu (FT)
rate_ref_thap5 <- R_tablesize["M", "Rate_thap"]
rate_ref_trung5 <- R_tablesize["M", "Rate_trung"]
rate_ref_cao5 <- R_tablesize["M", "Rate_cao"]
# Tính Relative Risk cho các nhóm so với nhóm tham chiếu (M)
R_tablesize$RR_thap <- R_tablesize$Rate_thap / rate_ref_thap5
R_tablesize$RR_trung <- R_tablesize$Rate_trung / rate_ref_trung5
R_tablesize$RR_cao <- R_tablesize$Rate_cao / rate_ref_cao5
print(R_tablesize)
## thap trung cao Total Rate_thap Rate_trung Rate_cao RR_thap RR_trung
## L 329 454 257 1040 0.3163462 0.4365385 0.24711538 1.330949 0.7637926
## M 3638 8748 2920 15306 0.2376846 0.5715406 0.19077486 1.000000 1.0000000
## S 126 56 6 188 0.6702128 0.2978723 0.03191489 2.819757 0.5211744
## RR_cao
## L 1.2953247
## M 1.0000000
## S 0.1672909
Nhận xét tỷ lệ Relative Risk ở mức lương thấp với quy mô công ty
Kết quả Relative Risk là 2.8 điều này cho thấy xác suất để những kỹ sư làm việc ở những công ty có quy mô nhỏ (S) nhận thức lương “thấp” cao hơn xác suất kỹ sư làm việc ở các công ty quy mô trung bình đạt được mức lương thấp là khoảng 2.8
Kết quả của nhóm kỹ sư làm việc ở công ty có quy mô lớn (L) là 1.3 cho thấy những kỹ sư trong nhóm làm việc ở công ty có quy mô lớn có khả năng nhận được mức lương “thấp” với tỷ lệ cao gấp 1.3 lần so với nhóm kỹ sư làm việc ở công ty có quy mô trung bình.
Nhận xét tỷ lệ Relative Risk ở mức lương trung với quy mô công ty
Khi phân tích mức lương trung với quy mô công ty, kết quả cho thấy RR ở nhóm kỹ sư làm việc ở công ty có quy mô nhỏ (S) là 0.52. Kết quả, này cho thấy những kỹ sư trong nhóm công ty nhỏ có khả năng nhận mức lương “trung” với tỷ lệ chỉ bằng 0.52 lần so với nhóm kỹ sư làm việc ở công ty có quy mô trung (M).
Ngoài ra nhóm kỹ sư làm việc ở công ty có quy mô lớn (L) là 0.76 cho thấy những kỹ sư trong nhóm công ty lớn có khả năng nhận mức lương trung với tỷ lệ chỉ bằng 0.76 lần so với nhóm kỹ sư làm việc ở công ty có quy mô trung (M).
Nhận xét tỷ lệ Relative Risk ở mức lương cao với quy mô công ty
Kỹ sư làm việc ở công ty có quy mô nhỏ có khả năng nhận mức lương “cao” bằng 0.167 lần so với nhóm kỹ sư làm việc ở công ty có quy mô trung.
Trong nhóm làm việc ở công ty có quy mô lớn thì khả năng nhận mức lương “cao” bằng 1.29 lần so với nhóm kỹ sư làm việc ở công ty mô trung.
Trong phần này chúng tôi sẽ thực hiện khoảng ước lượng cho RR với khoảng tin cậy 95%. Tuy nhiên để cho kết quả dễ dàng phân tích hơn trước nên chúng tôi sẽ thực hiện trên bảng có số lượng nhỏ hơn là 2x2.
Trước tiên tôi tính khoảng ước lượng Relative Risk đối với mức lương thấp và trung nhưng trong nhóm công ty quy mô nhỏ và quy mô trung.
RR5 <- matrix(c(329, 454,
3638, 8748),
nrow = 2,
byrow = TRUE,
dimnames = list(c( "L", "M"),
c("thap", "trung")))
epitab(RR5, method = 'riskratio', rev = 'c')
## $tab
## trung p0 thap p1 riskratio lower upper p.value
## L 454 0.5798212 329 0.4201788 1.0000000 NA NA NA
## M 8748 0.7062813 3638 0.2937187 0.6990327 0.6409833 0.7623392 3.625974e-13
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Xác suất để có mức lương thấp đối với nhóm làm việc ở công ty có quy mô trung à khoảng 29.37% và xác suất để đạt mức lương thấp đối với nhóm kỹ sư làm việc ở công ty lớn là 42.0%, trong trường hợp này tỷ lệ Relative Risk (RR) là khoảng 0.699 điều này cho thấy khả năng để nhóm kỹ sư đang làm việc ở công ty có quy mô trung đạt được mức lương “thấp” khoảng 0.699 lần đối với nhóm làm việc ở công ty có quy mô lớn. Khoảng ước lượng Relative Risk có kết quả là 0.64 và 0.76 đối với độ tin cậy 95%. Giá trị p.value khoảng 3.625974e-13 nhỏ hơn mức ý nghĩa 5% vì vậy kết quả này có ý nghĩa thống kê cho thấy có sự khác biệt đối với hai quy mô này.
RR6 <- matrix(c( 3638, 8748,
126, 56 ),
nrow = 2,
byrow = TRUE,
dimnames = list(c( "M", "S"),
c("thap", "trung")))
epitab(RR6, method = 'riskratio', rev = 'c')
## $tab
## trung p0 thap p1 riskratio lower upper p.value
## M 8748 0.7062813 3638 0.2937187 1.000000 NA NA NA
## S 56 0.3076923 126 0.6923077 2.357043 2.131395 2.60658 4.637891e-28
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
xác suất để đạt mức lương thấp đối với nhóm kỹ sư làm việc ở công ty nhỏ là 69.2%, trong trường hợp này tỷ lệ Relative Risk (RR) là khoảng 2.35 điều này cho thấy khả năng để nhóm kỹ sư đang làm việc ở công ty có quy mô nhỏ đạt được mức lương “thấp” khoảng 2.35 lần đối với nhóm làm việc ở công ty có quy mô trung Khoảng ước lượng Relative Risk có kết quả là 2.13 và 2.60 đối với độ tin cậy 95%. Giá trị p.value khoảng 4.637891e-28 nhỏ hơn mức ý nghĩa 5% vì vậy kết quả này có ý nghĩa thống kê cho thấy có sự khác biệt đối với hai quy mô này.
Trong phần này chúng tôi sẽ tính tỷ lệ Odd Ratio của hai biến lương và quy mô công ty. Để dễ dàng trong phân tích chúng tôi sẽ tách số liệu từ bảng tần số ban đầu thành bảng tần số mới chỉ bao gồm nhóm lương thấp, cao và quy mô công ty nhỏ, quy mô công ty trung.
odd5 <- table(d$size,d$sal)
odd6 <- odd5[c("M", "S"), c("thap", "cao")]
epitab(odd6, method = 'oddsratio')
## $tab
##
## thap p0 cao p1 oddsratio lower upper
## M 3638 0.96652497 2920 0.997949419 1.00000000 NA NA
## S 126 0.03347503 6 0.002050581 0.05932811 0.02611879 0.1347622
##
## p.value
## M NA
## S 8.479312e-25
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả Odd Ratio của S so với M khoảng 0.05932811 điều này có nghĩa là odd mức lương cao của nhóm kỹ sư làm việc ở công ty quy mô nhỏ chỉ bằng khoảng 5,9% so với odd kỹ sư làm việc ở công ty có quy mô trung.
Khoảng tin cậy của OR đối với độ tin cậy 95% là từ 0.0261 đến 0.1348 và giá trị p là 8.479312e-25, nhỏ hơn 0.05 cho thấy có sự khác biệt giữa odd ở hai nhóm S và M
Trái ngược lại với phần trên chúng ta có thể sử dụng tham số rev = ‘c’ thay đổi giữa mức lương cao và mức lương thấp để tính odd ratio của nhóm làm việc ở công ty có quy mô nhỏ với nhóm làm việc ở công ty có quy mô trung ở mức lương thấp.
epitab(odd6, method = 'oddsratio', rev = 'c' )
## $tab
##
## cao p0 thap p1 oddsratio lower upper p.value
## M 2920 0.997949419 3638 0.96652497 1.00000 NA NA NA
## S 6 0.002050581 126 0.03347503 16.85542 7.42048 38.28661 8.479312e-25
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả cho thấy Odd ratio của S so với M là 16.85542 ta có thể giải thích rằng odd của nhóm kỹ sư làm việc ở công ty có quy mô nhỏ có mức lương “thấp” cao hơn gấp 16.85 lần so với odd của nhóm làm việc tại công ty quy mô trung.
Kết quả chỉ ra rằng giá trị p là 8.479312e-25, nhỏ hơn 0.05, do đó có sự khác biệt giữa odd của hai nhóm trên. Ngoài ra, khoảng ước lượng cho odd ratio đối với độ tin cậy 95% là 7.42 và 38.29.
Phân tích mức lương trung giữa nhóm kỹ sư làm việc tại quy mô nhỏ và trung
odd7 <- odd5[c("M", "S"), c("thap", "trung")]
epitab(odd7, method = 'oddsratio')
## $tab
##
## thap p0 trung p1 oddsratio lower upper p.value
## M 3638 0.96652497 8748 0.993639255 1.0000000 NA NA NA
## S 126 0.03347503 56 0.006360745 0.1848295 0.1345977 0.253808 4.637891e-28
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả Odds ratio là 0.185, điều này có nghĩa là odds của kỹ sư có mức lương “trung” trong nhóm làm việc tại công ty nhỏ chỉ bằng khoảng 18.5% so với odds nhóm làm việc toàn thời gian có cùng mức lương này.
Ngoài ra khoảng tin cậy của OR là từ 0.1345 đến 0.2538 đối với khoảng tin cậy 95% và giá trị p là 4.637891e-28, nhỏ hơn 0.05, cho thấy sự khác biệt giữa odds của nhóm S và M.
epitab(odd7, method = 'oddsratio', rev = 'c')
## $tab
##
## trung p0 thap p1 oddsratio lower upper p.value
## M 8748 0.993639255 3638 0.96652497 1.00000 NA NA NA
## S 56 0.006360745 126 0.03347503 5.41039 3.939986 7.429549 4.637891e-28
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả cho thấy odds kỹ sư có mức lương thấp đang làm việc ở công ty có quy mô nhỏ gấp khoảng 5.41 lần so với odds của kỹ sư đang làm việc ở công ty có quy mô trung.
Hơn thế kết quả cũng cho rằng khoảng tin cậy của OR là từ 3.94 đến 7.43 và giá trị p là 4.637891e-28, nhỏ hơn 0.05, cho thấy sự khác biệt giữa odds của hai nhóm là có ý nghĩa thống kê.
Kết quả bên dưới được sử dụng để kiểm tra tính độc lập giữa hai biến quy mô công ty và mức lương bằng phương pháp chi bình phương. Giả thuyết Ho được đưa ra là biến mức lương và quy mô công ty độc lập.
chisq.test(table(d$size,d$sal))
##
## Pearson's Chi-squared test
##
## data: table(d$size, d$sal)
## X-squared = 258.13, df = 4, p-value < 2.2e-16
Qua kết quả kiểm định cho ta thấy giá trị p−value là 2.2e−16 nhỏ hơn 0.05 , nên bác bỏ H0, nghĩa là mức lương và quy mô công ty là có liên quan với nhau.
Ước lượng tỷ lệ cho nhóm lương trung bình
Trước tiên ta cần lọc kết quả về mức lương theo nhóm làm việc ở công ty có quy trung bình. Kết quả thu được như sau.
M <- table(d[d$size == "M", ]$sal)
M
##
## cao trung thap
## 2920 8748 3638
prop.test(M["trung"], sum(M), p = 0.7)
##
## 1-sample proportions test with continuity correction
##
## data: M["trung"] out of sum(M), null probability 0.7
## X-squared = 1202.1, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
## 0.5636512 0.5793939
## sample estimates:
## p
## 0.5715406
Sau đó ước lượng tỷ lệ với giả thuyết không (H0): Tỷ lệ người có mức lương trung và làm việc tại công ty quy mô vừa là 0.7 (70%).
Kết quả từ kiểm định cho thấy giá trị p-value là 2.2e-16, rất gần với 0 và nhỏ hơn giá trị α=0.05. Điều này cho thấy có bằng chứng mạnh mẽ để bác bỏ giả thuyết rằng tỷ lệ người có mức lương trung trong nhóm toàn thời gian là 70%.
Kết quả cũng cho thấy tỷ lệ kỹ sư có mức lương trung trong công ty có quy mô trung là 57.15%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% nằm trong khoảng từ 55.37% đến 57.94%.
Ước lượng tỷ lệ cho nhóm lương thấp
prop.test(M["thap"], sum(M), p = 0.2)
##
## 1-sample proportions test with continuity correction
##
## data: M["thap"] out of sum(M), null probability 0.2
## X-squared = 135.62, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.2
## 95 percent confidence interval:
## 0.2309751 0.2445263
## sample estimates:
## p
## 0.2376846
Ta có giả thuyết không (H0): Tỷ lệ người có mức lương thấp trong nhóm làm việc ở công ty có quy mô trung là 0.2 (20%). Vì giá trị p rất nhỏ (p < 2.2e-16), chúng ta bác bỏ giả thuyết không (H0). Điều này có nghĩa là tỷ lệ kỹ sư có mức lương “thấp” trong nhóm làm việc ở công ty trung không bằng 20%. Kết quả cho rằng tỷ lệ này đạt khoảng 23.77% và ở mức độ tin cậy 95% kết quả ước lượng chỉ ra tỷ lệ kỹ sư có mức lương thấp trong nhóm toàn thời gian đạt khoảng từ 23.1% đến 24.45%.
prop.test(M["cao"], sum(M), p = 0.3)
##
## 1-sample proportions test with continuity correction
##
## data: M["cao"] out of sum(M), null probability 0.3
## X-squared = 869.02, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.3
## 95 percent confidence interval:
## 0.1845959 0.1971098
## sample estimates:
## p
## 0.1907749
Ta có giả thuyết không (H0) là tỷ lệ kỹ sư có mức lương “cao” trong nhóm công ty có quy mô trung là 30%. Kết quả bên trên có giá trị p rất nhỏ (p < 2.2e-16), chúng ta bác bỏ giả thuyết không (H0). Điều này có nghĩa là tỷ lệ kỹ sư có mức lương “cao” trong nhóm nhóm làm công ty có quy mô trung sẽ không bằng 30%. Thực tế, tỷ lệ kỹ sư có mức lương “cao” chỉ khoảng 19%, thấp hơn so với tỷ lệ kỳ vọng là 30%. Ngoài ra, khoảng tin cậy 95% cho tỷ lệ kỹ sư có mức lương cao trong nhóm toàn thời gian là [0.1846, 0.1971]. Điều này có nghĩa là chúng ta có 95% tin tưởng rằng tỷ lệ này nằm trong khoảng từ 18.46% đến 19.71%.
Mô hình xác suất tuyến tính
Phần này sẽ thực hiện hồi quy xác suất tuyến tính giữa biến độc lập là quy mô công ty và biến phụ thuộc là lương. Tuy nhiên trong phần này ta cần tiếp tục 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 trung và cao, ngược lại giá trị 0 tương ứng với mức lương thấp.
d$sal3 <- ifelse(d$sal %in% c("trung", "cao"), 1, 0)
d$size <- relevel(as.factor(d$size), ref = "M")
glm4 <- glm(sal3 ~ size, data = d)
summary(glm4)
##
## Call:
## glm(formula = sal3 ~ size, data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.7623 0.2377 0.2377 0.2377 0.6702
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.762315 0.003466 219.935 < 2e-16 ***
## sizeL -0.078662 0.013741 -5.724 1.06e-08 ***
## sizeS -0.432528 0.031466 -13.746 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.1838835)
##
## Null deviance: 3079.8 on 16533 degrees of freedom
## Residual deviance: 3039.8 on 16531 degrees of freedom
## AIC: 18927
##
## Number of Fisher Scoring iterations: 2
\(\hat{\pi} = 0.762315 - 0.078662 \cdot sizeL - 0.432528 \cdot sizeS\)
Tất cả các hệ số đều có giá trị \(p\) nhỏ hơn mức ý nghĩa \(\alpha = 0.05\), ngụ ý rằng tất cả các hệ số đều có ảnh hưởng ý nghĩa thống kê đến mức lương.
Hệ số \(\hat{\beta}_0 = 0.765156\) có ý nghĩa rằng tỷ lệ để người kỹ sư đạt được mức lương trung bình là 76.51% trong trường hợp không xuất hiện các hình thức làm việc khác.
Đối với hệ số \(\hat{\beta}_1 = - 0.078662\), ta nhận thấy khi kỹ sư làm việc ở công ty có quy mô lớn khi không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm làm việc ở công ty có quy mô lớn so với làm việc ở công ty có quy mô vừa là -7.8%, hay có thể nói cách khác tỷ lệ bình quân để đạt mức lương trung trở lên đối với kỹ sư làm việc tại công ty vừa là 68.95%.
Tương tự, \(\hat{\beta}_2 = -0.432528\), ta nhận thấy khi kỹ sư làm việc ở công ty có quy mô nhỏ và không bị ảnh hưởng bởi các yếu tố khác thì chênh lệch tỷ lệ đạt mức lương trung trở lên giữa nhóm làm việc ở công ty nhỏ và nhóm là việc ở công ty trung là -43.25%, hay tỷ lệ đạt mức lương trung trở đối với kỹ sư làm việc tại công ty nhỏ là 33.56%.
Ta nhận thấy tác động ở cả ba nhóm quy mô công ty nhỏ, trung và lớn. Nhưng nếu không có sự tác động của ba nhóm trên thì xác suất để đạt mức lương trên là khá cao, khoảng 0.762315.
nsize <- data.frame(size = c("S", "M", "L") )
predict.glm(glm4, newdata = nsize, type="response")
## 1 2 3
## 0.3297872 0.7623154 0.6836538
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư làm việc tại công ty có quy mô nhỏ (1) là khoảng 33%. Điều này có nghĩa một kỹ sư làm việc ở công ty có quy mô nhỏ có xác suất nhận mức lương trung đến cao là khoảng 33% .
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc ở công ty có quy mô trung (2) thì xác suất để đạt được mức lương trung trở lên đạt 76.23%, vì vậy nhóm này có xác suất rất cao để nhận được mức lương trung trở lên.
Trong nhóm kỹ sư làm việc ở công ty có quy mô lớn (3) thì xác suất để đạt mức lương trung khoảng 68.37%, cao hơn so với xác suất của nhóm làm ở quy mô nhỏ.
Mô hình Logit
logitsize <- glm(factor(sal2) ~ size, data = d, family = binomial(link = 'logit'))
summary(logitsize)
##
## Call:
## glm(formula = factor(sal2) ~ size, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6952 0.7367 0.7367 0.7367 1.4895
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.16542 0.01899 61.373 < 2e-16 ***
## sizeL -0.39480 0.06933 -5.695 1.24e-08 ***
## sizeS -1.87456 0.15629 -11.994 < 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: 18506 on 16533 degrees of freedom
## Residual deviance: 18324 on 16531 degrees of freedom
## AIC: 18330
##
## Number of Fisher Scoring iterations: 4
Ta có kết quả từ hàm hồi quy thông qua mô hình logit như sau:
\[ \ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right) = 1.16542 - 0.39480 \cdot sizeL - 0.08898 \cdot sizeS \]
Hệ số chặn là 1.16542 điều này có nghĩa là khi không có sự tác động của các quy mô công ty khác thì \(\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right)\) của kỹ sư làm việc trực tiếp đạt mức lương trung là 1.16542.
Đối với hệ số \(\hat{\beta}_1 = -0.39480\), điều này cho thấy chênh lệch \(\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right)\) đạt mức lương trung trở lên giữa nhóm vừa làm viêc ở công ty có quy mô lớn so với nhóm làm việc ở công ty quy mô trung là -0.39480.
Đối với hệ số \(\hat{\beta}_2 = -0.08898\), điều này cho thấy chênh lệch \(\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right)\) đạt mức lương trung trở lên giữa nhóm làm việc ở công ty có quy mô nhỏ so với làm việc ở công ty có quy mô trung là -0.08898
Sau đó từ mô hình logit ta dự báo xác suất của biến lương tương ứng với mỗi quy mô công ty. Ta cần một khung dữ liệu n với một cột size chứa các giá trị “S”, “M”, “L”.
size <- data.frame(size = c("S", "M", "L") )
predict.glm(logitsize, newdata = size, type="response")
## 1 2 3
## 0.3297872 0.7623154 0.6836538
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư làm việc tại công ty có quy mô nhỏ (1) là khoảng 33%. Điều này có nghĩa một kỹ sư làm việc ở công ty có quy mô nhỏ có xác suất nhận mức lương trung đến cao là khoảng 33% .
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc ở công ty có quy mô trung (2) thì xác suất để đạt được mức lương trung trở lên đạt 76.23%, vì rất cao cho nên đối với nhóm này có xác suất rất cao để nhận được mức lương trung trở lên.
Trong nhóm kỹ sư làm việc ở công ty có quy mô lớn (3) thì xác suất để đạt mức lương trung khoảng 68.37%, cao hơn so với xác suất của nhóm làm ở quy mô nhỏ.
Mô hình Probit
Tiếp tục, thay vì sử dụng mô hình logit, ta có thể thay thế bằng mô hình probit dự đoán xác suất của một sự kiện xảy ra. Mô hình probit sử dụng hàm phân phối chuẩn. Trong đó hàm liên kết có dạng \(\text{probit}(\pi) = \Phi^{-1}(\pi)\) và hàm xác suất là \(\pi(x) = \Phi(\beta_0 + \beta_1 X + \beta_2 X_2 + \ldots + \beta_n X_n)\).
probitsize <- glm(factor(sal2) ~ size, data = d, family = binomial(link = 'probit'))
summary(probitsize)
##
## Call:
## glm(formula = factor(sal2) ~ size, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6952 0.7367 0.7367 0.7367 1.4895
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.71377 0.01113 64.151 <2e-16 ***
## sizeL -0.23583 0.04202 -5.612 2e-08 ***
## sizeS -1.15427 0.09536 -12.105 <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: 18506 on 16533 degrees of freedom
## Residual deviance: 18324 on 16531 degrees of freedom
## AIC: 18330
##
## Number of Fisher Scoring iterations: 4
Ta có kết quả mô hình hồi quy như sau:
\[ \hat{\pi} = \Phi(0.71377 - 1.15427 \times sizeS - 0.23583 \times sizeL) \]
Hệ số chặn là 0.71377 và có ý nghĩa thống kê khi giá trị p_value nhỏ hơn mức ý nghĩa 5%. Điều này có nghĩa là khi không có sự tác động các biến độc lập khác thì xác suất để kỹ sư đạt mức lương trung là \(\Phi(0.71377)\).
Hệ số \(\hat{\beta}_1 = -1.15427\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm làm việc ở công ty có quy mô nhỏ so với nhóm làm việc ở công ty có quy mô trung là \(\Phi(-1.15427)\).
Hệ số \(\hat{\beta}_2 = -0.23583\) có ý nghĩa là trong trường hợp các yếu tố khác không đổi thì chênh lệch tỷ lệ đạt mức lương trung giữa nhóm làm ở công ty có quy mô lớn so với nhóm làm việc ở công ty có quy mô trung là \(\Phi(-0.23583)\).
Từ kết quả trên, chúng tôi sẽ thực hiện dự báo cho tỷ lệ để đạt được mức lương trung ở các quy mô công ty. Kết quả được trình bày trong bảng bên dưới:
predict.glm(probitsize, newdata = size, type="response")
## 1 2 3
## 0.3297872 0.7623154 0.6836538
Dựa vào kết quả ta có thể nhận thấy xác suất dự báo cho biểu hiện kỹ sư làm việc tại công ty có quy mô nhỏ (1) là khoảng 33%. Điều này có nghĩa một kỹ sư làm việc ở công ty có quy mô nhỏ có xác suất nhận mức lương trung đến cao là khoảng 33% .
Bên cạnh đó kết quả dự báo đối với nhóm kỹ sư làm việc ở công ty có quy mô trung (2) thì xác suất để đạt được mức lương trung trở lên đạt 76.23%, vì tỉ lệ rất cao cho nên đối với nhóm này có xác suất rất cao để nhận được mức lương trung trở lên.
Trong nhóm kỹ sư làm việc ở công ty có quy mô lớn (3) thì xác suất để đạt mức lương trung khoảng 68.37%, cao hơn so với xác suất của nhóm làm ở quy mô nhỏ.
Chỉ số AIC
AIC(glm4)
## [1] 18926.91
AIC(logitsize)
## [1] 18330
AIC(probitsize)
## [1] 18330
Mô hình Logit và Probit đều tốt hơn mô hình xác suất tuyến tính trong việc giải thích mối quan hệ giữa quy mô công ty và xác suất đạt mức lương từ trung trở lên, Vì chỉ số AIC của hai mô hình này thấp hơn chỉ số AIC của mô hình xác suất tuyến tính. Logit và Probit có hiệu suất tương đương nhau vì chúng có cùng chỉ số AIC
Hệ số Brier Score
Phần này sẽ tính chỉ số Brier Score được sử dụng để đo lường độ chính xác của các dự đoán xác suất. Nó tính toán độ lệch bình phương giữa dự đoán xác suất và giá trị thực tế. Một giá trị Brier Score thấp cho thấy mô hình dự đoán tốt hơn. Vì thế ta sẽ tính và so sánh giá trì này ở hai mô hình hồi quy logit và probit.
BrierScore(logitsize)
## [1] 0.1838502
BrierScore(probitsize)
## [1] 0.1838502
Kết quả bên trên cho thấy Brier Score cho logit và probit đều là 0.1838502 Điều này có nghĩa là cả hai mô hình đều có hiệu suất tương đương khi dự đoán xác suất cho biến mục tiêu. Brier Score khá thấp (gần 0), cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế.
Ma trận nhầm lẫn
Conf(table(predict(probitsize, size="response") >=0.5,probitsize$data$sal2 == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 455 773
## TRUE 3638 11668
##
## Total n : 16'534
## Accuracy : 0.7332
## 95% CI : (0.7264, 0.7399)
## No Information Rate : 0.7524
## P-Value [Acc > NIR] : 1.0000
##
## Kappa : 0.0641
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.1112
## Specificity : 0.9379
## Pos Pred Value : 0.3705
## Neg Pred Value : 0.7623
## Prevalence : 0.2476
## Detection Rate : 0.0743
## Detection Prevalence : 0.0275
## Balanced Accuracy : 0.5245
## F-val Accuracy : 0.1710
## Matthews Cor.-Coef : 0.0807
##
## 'Positive' Class : FALSE
Từ kết quả trên ma trận cho ta biết có 455 số lần mô hình dự đoán đúng là mức lương thấp. Tuy nhiên có 773 lần mô hình dự đoán sai đối với mức lương trung và khoảng 3638 lần mô hình dự đoán sai mức lương thấp. Số lần mô hình dự đoán đúng ở mức lương trung là 11668 lần đạt cao nhất.
Ngoài ra ta có tỷ lệ dự đoán đúng của mô hình là 0.7332 và ở độ tin cậy là 95% thì tỷ lệ này nằm trong khoảng từ (0.7264, 0.7264)
Dưới đây chúng tôi sẽ thực hiện hồi quy xác suất tuyến tính trong đó các biến độc lập là loại hình công việc (type), hình thức làm việc (remote), trình độ (remote), quy mô doanh nghiệp (company_size) sẽ tác động đến mức lương của những người kỹ sư. Tương tự với các phần trước đó chúng tôi sẽ xem xét xác suất để xảy ra mức lương từ trung trở lên.
glm4 <- glm(sal2 ~ type + remote + el + size , data = d)
summary(glm4)
##
## Call:
## glm(formula = sal2 ~ type + remote + el + size, data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.95285 0.05824 0.13226 0.15795 1.19675
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.867744 0.004451 194.944 < 2e-16 ***
## typeCT -0.076089 0.075190 -1.012 0.311576
## typeFL -0.465030 0.106400 -4.371 1.25e-05 ***
## typePT -0.037407 0.064642 -0.579 0.562816
## remote50 -0.316024 0.026928 -11.736 < 2e-16 ***
## remote100 -0.025697 0.006665 -3.855 0.000116 ***
## elEN -0.507020 0.011660 -43.483 < 2e-16 ***
## elEX 0.074013 0.018020 4.107 4.02e-05 ***
## elMI -0.253394 0.007315 -34.641 < 2e-16 ***
## sizeL 0.011092 0.013208 0.840 0.401041
## sizeS -0.204046 0.030077 -6.784 1.21e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.1552783)
##
## Null deviance: 3079.8 on 16533 degrees of freedom
## Residual deviance: 2565.7 on 16523 degrees of freedom
## AIC: 16139
##
## Number of Fisher Scoring iterations: 2
Ta có kết quả từ mô hình xác suất như sau:
\(\hat\pi=0.8788-0.0760*CT-0.4650*FL-0.0374*PT-0.3160*remote50-0.0257*remote100-0.5070EN+0.0740*EX-0.2534MI-0.0110sizeM-0.2151sizeS\)
Dựa vào kết quả mô hình chúng tôi sẽ tạo ra một bảng giá trị các biến độc lập được dùng để dự báo xác suất kỹ sư có mức lương từ trung đến cao.
new_data <- data.frame(
type = c("FT", "FT", "FT", "FT"),
remote = factor(c("0", "0", "0", "0")),
el = factor(c("SE", "SE", "MI", "MI")),
size = factor(c("L", "S", "L","S"))
)
new_data
## type remote el size
## 1 FT 0 SE L
## 2 FT 0 SE S
## 3 FT 0 MI L
## 4 FT 0 MI S
predictions <- predict(glm4, new_data, type="response")
predictions
## 1 2 3 4
## 0.8788362 0.6636978 0.6254422 0.4103039
Kết quả đầu tiên biểu thị cho trường hợp những kỹ sư làm việc toàn thời gian, làm trực tiếp tại công ty đạt chuyên môn cao cấp và công tác tại công ty có quy mô lớn thì có xác suất mức lương từ trung trở lên là 87.88%. kết quả cho thấy nhóm kỹ sư này có khả năng cao nhất để đạt được mức lương trung bình, cao.
Thứ hai, trường hợp những kỹ sư làm việc toàn thời gian, có hình thức làm trực tiếp tại công ty, trình độ chuyên môn cao cấp và công tác tại công ty có quy mô nhỏ thì có xác suất mức lương từ trung trở lên chỉ là 66.36%.
Thứ ba, đối với những kỹ sư làm việc toàn thời gian, làm trực tiếp tại công ty, đạt chuyên môn trung cấp và công tác tại công ty có quy mô lớn thì có xác suất mức lương từ trung trở lên là 62.54%. Điều này chứng tỏ chuyên môn thấp hơn thì khả năng đạt mức lương tốt sẽ thấp hơn.
Cuối cùng, trường hợp những kỹ sư làm việc toàn thời gian, có hình thức làm trực tiếp tại công ty, trình độ chuyên môn trung cấp và công tác tại công ty có quy mô nhỏ thì có xác suất mức lương từ trung trở lên chỉ là 41.03%.
log4 <- glm(factor(sal2) ~ type + remote + el + size , data = d,family = binomial(link = 'logit'))
summary(log4)
##
## Call:
## glm(formula = factor(sal2) ~ type + remote + el + size, family = binomial(link = "logit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.3674 0.3699 0.5361 0.5788 2.7334
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.86730 0.03196 58.418 < 2e-16 ***
## typeCT -0.39313 0.44573 -0.882 0.377778
## typeFL -13.52932 128.75065 -0.105 0.916311
## typePT -0.29836 0.39245 -0.760 0.447103
## remote50 -1.72553 0.17278 -9.987 < 2e-16 ***
## remote100 -0.16566 0.04281 -3.870 0.000109 ***
## elEN -2.45005 0.06602 -37.112 < 2e-16 ***
## elEX 0.78072 0.17288 4.516 6.30e-06 ***
## elMI -1.37775 0.04289 -32.124 < 2e-16 ***
## sizeL 0.09176 0.08475 1.083 0.278932
## sizeS -1.10499 0.18336 -6.026 1.68e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 18506 on 16533 degrees of freedom
## Residual deviance: 15931 on 16523 degrees of freedom
## AIC: 15953
##
## Number of Fisher Scoring iterations: 12
Kết quả từ mô hình logit như sau:
\(log(odds)=1.9590-0.3931*CT-13.5293*FL-0.2983*PT-1.7255*remote50-0.1656*remote100-2.4500*EN+0.0740*EX-1.3777*MI-0.0917*sizeM-1.1967*sizeS\)
Hệ số \(\hatβ_0=1.9590\) điều này có nghĩa là khi không có sự tác động của nhóm công việc khác thì log(odds) của việc nhận được lương trung trở lên đối với nhóm công việc toàn thời gian (FT), không làm việc từ xa (remote0), trình độ cao cấp (SE), và kích thước công ty lớn (L) là 1.9590, hay odds đạt khoảng 7.09
Đối với hệ số \(\hatβ_1=-0.3931\) điều này cho thấy chênh lệch log(odds) đạt mức lương trung trở lên giữa nhóm làm việc hợp đồng và nhóm toàn thời gian là -0.3931. Từ đó suy ra odds của làm việc hợp đồng chỉ bằng 0.6749 lần so với odds làm việc toàn thời gian.
Đối với hệ số \(\hatβ_2=-13.5293\) điều này cho thấy chênh lệch log(odds) đạt mức lương trung trở lên giữa nhóm làm tự do và nhóm toàn thời gian là -13.5293. Vậy odds của làm việc tự do bằng 0 lần so với odds làm việc toàn thời gian.
Đối với hệ số \(\hatβ_3=-0.2983\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa nhóm làm việc bán thời gian và nhóm toàn thời gian là 0.2983. Vậy odds của làm việc bán thời gian bằng 0.7420 lần so với odds làm việc toàn thời gian.
Đối với hệ số \(\hatβ_4=-1.7255\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa nhóm 50% làm việc từ xa và nhóm làm trực tiếp -1.7255. Vậy odds của nhóm 50% làm việc từ xa bằng 0.1780 lần so với odds nhóm làm trực tiếp.
Đối với hệ số \(\hatβ_5=-0.1656\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa nhóm làm việc từ xa và nhóm làm trực tiếp -0.1656. Vậy odds của nhóm làm việc từ xa bằng 0.8473 lần so với odds nhóm làm trực tiếp.
Hệ số \(\hatβ_6=-2.45\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa kỹ sư mới vào nghề và nhóm cao cấp -2.45. Vậy odds của nhóm kỹ sư mới vào nghề bằng 0.0862 lần so với odds nhóm cao cấp.
Hệ số \(\hatβ_7=0.7807\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa kỹ sư điều hành và nhóm cao cấp 0.7807. Vậy odds của nhóm kỹ sư điều hành bằng 2.18 lần so với odds nhóm cao cấp.
Hệ số \(\hatβ_8=-1.3777\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa trung cấp và nhóm cao cấp -1.3777. Vậy odds của nhóm kỹ sư trung cấp bằng 0.2521 lần so với odds nhóm cao cấp.
Hệ số \(\hatβ_9=-0.0917\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa kỹ sư làm tại công ty có quy mô vừa và làm quy mô lớn -0.0917. Vậy odds của nhóm kỹ sư làm việc tại công ty quy mô vừa bằng 0.9123 lần so với odds tại công ty quy mô lớn.
Hệ số \(\hatβ_{10}=-1.1967\) nghĩa là chênh lệch log(odds) đạt mức lương trung trở lên giữa kỹ sư làm tại công ty có quy mô nhỏ và làm quy mô lớn -1.1967. Vậy odds của nhóm kỹ sư làm việc tại công ty quy mô nhỏ bằng 0.3021 lần so với odds tại công ty quy mô lớn.
Tương tự với bảng dữ liệu mới được tạo trong phần xác suất tuyến tính chúng tôi sẽ dùng để thực hiện dự báo trong trường hợp mô hình logit.
predictions <- predict(log4, new_data, type="response")
predictions
## 1 2 3 4
## 0.8764309 0.6818539 0.6413674 0.3508172
Kết quả đầu tiên biểu thị cho trường hợp những kỹ sư làm việc toàn thời gian, làm trực tiếp tại công ty đạt chuyên môn cao cấp và công tác tại công ty có quy mô lớn thì có xác suất mức lương từ trung trở lên là 87.64%.
Thứ hai, đối với những kỹ sư làm việc toàn thời gian, có hình thức làm trực tiếp tại công ty, trình độ chuyên môn cao cấp và công tác tại công ty có quy mô nhỏ thì có xác suất mức lương từ trung trở lên chỉ là 68.18%.
Thứ ba, đối với những kỹ sư làm việc toàn thời gian, làm trực tiếp tại công ty, đạt chuyên môn trung cấp và công tác tại công ty có quy mô lớn thì có xác suất mức lương từ trung trở lên là 64.14%.
Cuối cùng, những kỹ sư làm việc toàn thời gian, có hình thức làm trực tiếp tại công ty, trình độ chuyên môn trung cấp và công tác tại công ty có quy mô nhỏ thì có xác suất mức lương từ trung trở lên chỉ là 35.08%.
Ngoài ra chúng tôi cũng thực hiện dự báo xác suất cho mức lương trung trở lên thông qua mô hình probit. Tương đồng với việc thực hiện mô hình này cho các phần trên, tuy nhiên tại đây chúng tôi sẽ thực hiện hồi quy loại hình công việc, hình thức làm việc, trình độ và quy mô doanh nghiệp tá động đến mức lương của kỹ sư.
probit4 <- glm(factor(sal2) ~ type + remote + el + size , data = d,family = binomial(link = 'probit'))
summary(probit4)
##
## Call:
## glm(formula = factor(sal2) ~ type + remote + el + size, family = binomial(link = "probit"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.3717 0.3698 0.5374 0.5770 2.8500
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.10555 0.01744 63.396 < 2e-16 ***
## typeCT -0.22039 0.26339 -0.837 0.402728
## typeFL -4.99263 22.11179 -0.226 0.821365
## typePT -0.14097 0.23131 -0.609 0.542238
## remote50 -0.98689 0.09952 -9.916 < 2e-16 ***
## remote100 -0.08331 0.02456 -3.392 0.000695 ***
## elEN -1.46957 0.03949 -37.210 < 2e-16 ***
## elEX 0.40000 0.08512 4.699 2.61e-06 ***
## elMI -0.80682 0.02520 -32.021 < 2e-16 ***
## sizeL 0.04873 0.04874 1.000 0.317464
## sizeS -0.62287 0.10765 -5.786 7.19e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 18506 on 16533 degrees of freedom
## Residual deviance: 15939 on 16523 degrees of freedom
## AIC: 15961
##
## Number of Fisher Scoring iterations: 11
Kết quả từ mô hình Probit được trình bày:
\(\hat\pi=\Phi(1.15428-0.22039*CT-4.99263*FL-0.14097*PT-0.9868*remote50-0.0833*remote100-1.4695*EN+0.4*EX-0.8068*MI-0.0487*sizeM-0.6716*sizeS)\)
Tiếp theo, chúng ta dự báo xác suất đạt mức lương trung, cao của kỹ sư từ bảng số liệu được tạo trước đó. Kết quả xác suất được trình bày bên dưới:
predictions <- predict(probit4, new_data, type="response")
predictions
## 1 2 3 4
## 0.8758063 0.6853356 0.6358759 0.3729136
Đầu tiên, những kỹ sư làm việc toàn thời gian, làm trực tiếp tại công ty đạt chuyên môn cao cấp và công tác tại công ty có quy mô lớn thì có xác suất mức lương từ trung trở lên là 87.64%.
Thứ hai, đối với những kỹ sư làm việc toàn thời gian, có hình thức làm trực tiếp tại công ty, trình độ chuyên môn cao cấp và công tác tại công ty có quy mô nhỏ thì có xác suất mức lương từ trung trở lên chỉ là 68.53%.
Thứ ba, chúng tôi nhận thấy những kỹ sư làm việc toàn thời gian, làm trực tiếp tại công ty, đạt chuyên môn trung cấp và công tác tại công ty có quy mô lớn thì có xác suất mức lương từ trung trở lên là 63.59%.
Cuối cùng, những kỹ sư làm việc toàn thời gian, có hình thức làm trực tiếp tại công ty, trình độ chuyên môn trung cấp và công tác tại công ty có quy mô nhỏ thì có xác suất mức lương từ trung trở lên chỉ là 37.29%.
Chỉ số AIC
AIC(glm4)
## [1] 16139.28
AIC(log4)
## [1] 15953.39
Chỉ số AIC mô hình probit
AIC(probit4)
## [1] 15960.54
Kết quả trên cho chúng ta thấy rằng mô hình logit sẽ hiệu quả hơn các mô hình probit và xác suất tuyến tính. Bởi vì chỉ số AIC của logit đạt thấp nhất là 15953.39, trong khi đó của mô hình probit là 15960.54 và kém hiệu quả nhất của mô hình xác suất tuyến tính với AIC là 16139.28.
Hệ số Brier Score
BrierScore(log4)
## [1] 0.1547325
BrierScore(probit4)
## [1] 0.1548215
Dựa vào kết quả của hệ số Brier Score chúng tôi cho rằng mô hình logit vẫn sẽ là lựa chọn tốt nhất vì giá trị BrierScore thấp hơn đạt 0.1547325, kết quả này tương đồng với phương pháp AIC. Trong khi đó hệ số Brier Score của mô hình probit là 0.1548215. Brier Score của hai mô hình khá thấp, cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế.
Ma trận nhầm lẫn
Conf(table(predict(glm4, type="response") >=0.5,glm4$data$sal2 == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 1023 473
## TRUE 3070 11968
##
## Total n : 16'534
## Accuracy : 0.7857
## 95% CI : (0.7794, 0.7919)
## No Information Rate : 0.7524
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.2692
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.2499
## Specificity : 0.9620
## Pos Pred Value : 0.6838
## Neg Pred Value : 0.7959
## Prevalence : 0.2476
## Detection Rate : 0.0905
## Detection Prevalence : 0.0619
## Balanced Accuracy : 0.6060
## F-val Accuracy : 0.3661
## Matthews Cor.-Coef : 0.3188
##
## 'Positive' Class : FALSE
Từ kết quả ma trận nhầm lẫn của mô hình xác suất tuyến tính cho rằng có 1023 số lần mô hình dự đoán đúng là mức lương thấp. Tuy nhiên có 473 lần mô hình dự đoán sai đối với mức lương trung trở lên và khoảng 3070 lần mô hình dự đoán sai mức lương thấp. Số lần mô hình dự đoán đúng ở mức lương trung là 11968 lần đạt cao nhất. Kết quả cũng chỉ ra tỷ lệ mô hình dự đoán đúng là 78.58%
Conf(table(predict(log4, type="response") >=0.5,log4$data$sal2 == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 1024 473
## TRUE 3069 11968
##
## Total n : 16'534
## Accuracy : 0.7858
## 95% CI : (0.7795, 0.7920)
## No Information Rate : 0.7524
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.2695
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.2502
## Specificity : 0.9620
## Pos Pred Value : 0.6840
## Neg Pred Value : 0.7959
## Prevalence : 0.2476
## Detection Rate : 0.0905
## Detection Prevalence : 0.0619
## Balanced Accuracy : 0.6061
## F-val Accuracy : 0.3664
## Matthews Cor.-Coef : 0.3191
##
## 'Positive' Class : FALSE
Conf(table(predict(probit4, type="response") >=0.5,probit4$data$sal2 == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 1024 473
## TRUE 3069 11968
##
## Total n : 16'534
## Accuracy : 0.7858
## 95% CI : (0.7795, 0.7920)
## No Information Rate : 0.7524
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.2695
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.2502
## Specificity : 0.9620
## Pos Pred Value : 0.6840
## Neg Pred Value : 0.7959
## Prevalence : 0.2476
## Detection Rate : 0.0905
## Detection Prevalence : 0.0619
## Balanced Accuracy : 0.6061
## F-val Accuracy : 0.3664
## Matthews Cor.-Coef : 0.3191
##
## 'Positive' Class : FALSE
Từ kết quả ma trận nhầm lẫn của hai mô hình logit và probit chúng tôi nhận thấy kết quả tương đồng với nhau. Cả hai ma trận nhầm lẫn điều chỉ ra có 1024 số lần mô hình dự đoán đúng là mức lương thấp. Tuy nhiên có 473 lần mô hình dự đoán sai đối với mức lương trung trở lên và khoảng 3069 lần mô hình dự đoán sai mức lương thấp. Số lần mô hình dự đoán đúng ở mức lương trung là 11968 lần đạt cao nhất. Kết quả cũng chỉ ra tỷ lệ mô hình dự đoán đúng là 78.58%, tương đồng với ma trận nhầm lẫn của mô hình xác suất tuyến tính.
Sau khi tiến hành phân tích các yếu tố ảnh hưởng đến mức lương của công việc kỹ sư với bộ dữ liệu định tính đã được thu thập sẵn, chúng tôi đã rút ra được một số kết luận có ý nghĩa. Các kết quả được tóm tắt như sau: Thứ nhất, chúng tôi phân tích các loại hình công việc tác động đến mức lương. Chúng tôi chọn kỹ sư làm việc toàn thời gian làm mức tham chiếu. Dựa vào bảng tần số, đa số các kỹ sư làm việc toàn thời gian, chiếm 99.5% số lượng toàn kỹ sư. Thống kê mô tả cho chúng ta thấy kỹ sư làm việc theo hợp đồng (CT) và kỹ sư bán thời gian (PT) chủ yếu đạt mức lương thấp, kỹ sư làm việc tự do chỉ đạt mức lương thấp, không đạt mức trung và cao, kỹ sư làm việc toàn thời gian (FT) đa số đạt mức lương trung. Phân tích Relative Risk cho thấy xác suất để những kỹ sư làm việc theo hợp đồng (CT), tự do và bán thời gian nhận mức lương “thấp” đều cao hơn so với xác suất kỹ sư làm việc toàn thời gian đạt được mức lương thấp lần lượt đạt 2.33 lần, 4.08 lần và 2.79 lần; đối với mức lương trung, các tỷ lệ đều nhỏ hơn 1, cho thấy rằng kỹ sư làm việc fulltime đạt được mức lương trung nhiều hơn so với các kỹ sư còn lại; đối với mức lương cao, kỹ sư tự do (FL) hoàn toàn không có khả năng nhận mức lương cao, tỷ lệ relative risk của các kỹ sư còn lại so với kỹ sư toàn thời gian đều nhỏ hơn 1, cho thấy xác xuất kỹ sư làm việc full time nhận mức lương cao đều cao hơn so với phần còn lại. Phân tích hồi quy theo từng phương pháp cho thấy kết quả mô hình Logit và Probit đều tốt hơn mô hình xác suất tuyến tính trong việc giải thích mối quan hệ giữa loại hình công việc và mức lương với xác suất đạt mức lương từ trung trở lên, vì chỉ số AIC của của chúng thấp hơn. Ngoài ra Logit và Probit có hiệu suất tương đương nhau vì chúng có cùng chỉ số AIC. Ngoài ra, Brier Score khá thấp (gần 0), cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế. Thứ hai, chúng tôi phân tích loại hình công việc tác động đến lương kỹ sư. Dựa vào bảng tần số, kết quả cho thấy phần đa thuộc về các kỹ sư làm việc tại văn phòng, tiếp theo đến tỷ lệ kỹ sư làm việc từ xa, và số ít làm việc theo cả 2 loại hình trên. Chúng tôi chọn nhóm kỹ sư không làm việc từ xa làm mốc tham chiếu. Dựa vào thống kê mô tả, chúng tôi thấy rằng kỹ sư làm việc tại văn phòng và kỹ sư làm việc tại nhà phần đa đạt mức lương trung, kỹ sư làm việc cả 2 loại hình trên phần đa nhận mức lương thấp. Bên cạnh đó, phân tích Relative Risk cho thấy đối với mức lương cao, kỹ sư làm việc vừa văn phòng vừa làm từ xa đạt mức lương thấp cao hơn 3.14 lần so với các kỹ sư làm việc tại văn phòng; kỹ sư làm việc từ xa cũng cao hơn 1.07 lần; đối với mức lương trung, nhân viên trong nhóm vừa làm việc từ xa và vừa làm việc trực tiếp có khả năng nhận mức lương trung chỉ khoảng 0.39 lần so với nhóm làm việc trực tiếp (0), nhân viên trong nhóm làm việc từ xa có khả năng nhận mức lương trung cao hơn 1.07 lần so với nhóm làm việc trực tiếp; đối với mức lương cao, nhân viên trong nhóm làm việc vừa từ xa vừa văn phòng và nhóm làm việc từ xa có khả năng nhận mức lương cao chỉ khoảng lần lượt 0.21 và 0.74 lần so với nhóm làm việc trực tiếp. Phân tích Odd ratio cho kết quả tương tự, xác suất kỹ sư làm việc từ xa có mức lương thấp cao hơn 1.447248 lần so với kỹ sư làm việc trực tiếp. Phân tích hồi quy theo từng phương pháp cho thấy kết quả mô hình Logit và Probit đều tốt hơn mô hình xác suất tuyến tính trong việc giải thích mối quan hệ giữa loại hình công việc tác động đến lương, vì chỉ số AIC của của chúng thấp hơn. Ngoài ra Logit và Probit có hiệu suất tương đương nhau vì chúng có cùng chỉ số AIC. Ngoài ra, Brier Score khá thấp (gần 0), cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế. Thứ ba, chúng tôi phân tích trình độ chuyên môn tác động đến lương. Chúng tôi chọn kỹ sư cao cấp làm tham chiếu cho việc phân tích. Dựa vào bảng tần số, ta thấy kỹ sư cao cấp chiếm phần lớn trong mẫu. Dựa vào kết quả từ bảng tần số và đồ thị ta thấy kỹ sư cao cấp (SE) nhiều nhất với 10670 người, kế đến là kỹ sư trung cấp (MI) với số lượng là 4038 người, tiếp theo là kỹ sư mới vào nghề (EN) với 1325 người, cuối cùng là kỹ sư điều hành với 501 người. Thống kê mô tả cho biến lương và trình độ chuyên môn, ta thấy rằng đa số đạt mức lương thấp ở nhóm EN, lương trung ở nhóm EX, MI và SE. Bên cạnh đó, việc phân tích Relative Risk cho thấy: Đối với mức lương thấp, Kỹ sư mới vào nghề (EN) và kỹ sư trung cấp (MI) có nguy cơ nhận lương thấp rất cao, lần lượt đạt 4.712 lần và 2.828 lần so với kỹ sư cao cấp (SE). Kỹ sư điều hành (EX) có nguy cơ nhận lương thấp thấp hơn, chỉ bằng 0.530 lần so với kỹ sư cao cấp (SE); đối với mức lương trung, kỹ sư mới vào nghề (EN), Kỹ sư điều hành (EX) và Kỹ sư trung cấp (MI) có nguy cơ nhận lương trung rất thấp, lần lượt đạt 0.479, 0.785 và 0.802 lần so với kỹ sư cao cấp (SE); đối với mức lương cao, Kỹ sư mới vào nghề (EN) và Kỹ sư trung cấp (MI) có nguy cơ nhận lương cao rất thấp, chỉ bằng 0.122 lần và 0.418 so với kỹ sư cao cấp (SE). Kỹ sư điều hành (EX) có nguy cơ nhận lương cao cao hơn, đạt 1.844 so với kỹ sư cao cấp (SE). Tóm lại, kỹ sư mới vào nghề (EN) có xu hướng nhận lương thấp hơn nhiều so với các cấp bậc khác, trong khi kỹ sư điều hành (EX) có nguy cơ nhận lương cao hơn so với kỹ sư cao cấp (SE). Phân tích Odd ratio cho kết quả tương tự, tỷ lệ chênh mức lương cao của 3 nhóm còn lại đều thấp hơn so với mức lương cao của nhóm kỹ sư cao cấp. Phân tích hồi quy theo từng phương pháp cho thấy kết quả mô hình Logit và Probit đều tốt hơn mô hình xác suất tuyến tính trong việc giải thích mối quan hệ giữa loại hình công việc tác động đến lương, vì chỉ số AIC của của chúng thấp hơn. Ngoài ra Logit và Probit có hiệu suất tương đương nhau vì chúng có cùng chỉ số AIC. Ngoài ra, Brier Score khá thấp (gần 0), cho thấy rằng cả hai mô hình đều dự đoán khá tốt và không sai lệch nhiều so với giá trị thực tế. Thứ tư, chúng tôi phân tích quy mô công ty tác động đến mức lương kỹ sư. Dựa vào bảng tần số, số lượng kỹ sư làm việc ở công ty có quy mô trung bình (M) có số lượng lớn nhất trong bộ dữ liệu với 15306 kỹ sư. Do đó, chúng tôi chọn quy mô trug bình làm mốc tham chiếu, Ngược lại, số kỹ sư làm việc ở công ty nhỏ là ít nhất (188 người). Số lượng kỹ sư làm việc ở công ty có quy mô mô lớn là 1040 kỹ sư. Phân tích Relative Risk cho thấy: đối với mức lương thấp, kỹ sư làm việc tại công ty có quy mô nhỏ (S) và công ty lớn (L) có nguy cơ nhận lương thấp rất cao, lần lượt đạt 2.8 lần và 1.3 lần so với kỹ sư làm việc tại công ty trung bình; đối với mức lương trung, kỹ sư làm việc tại công ty có quy mô nhỏ (S) và công ty lớn (L) có nguy cơ nhận mức lương trung rất thấp, lần lượt đạt 0.52 và 0.76 so với các kỹ sư làm việc tại công ty trung bình; đối với mức lương cao, kỹ sư làm việc ở công ty có quy mô nhỏ có khả năng nhận mức lương “cao” bằng 0.167 lần so với nhóm kỹ sư làm việc ở công ty có quy mô trung. Trong nhóm làm việc ở công ty có quy mô lớn thì khả năng nhận mức lương “cao” bằng 1.29 lần so với nhóm kỹ sư làm việc ở công ty mô trung. Kết quả Odds ratio là 0.185, điều này có nghĩa là odds của kỹ sư có mức lương “trung” trong nhóm làm việc tại công ty nhỏ chỉ bằng khoảng 18.5% so với odds nhóm làm việc toàn thời gian có cùng mức lương này. Cuối cùng, mô hình Logit và Probit đều tốt hơn mô hình xác suất tuyến tính trong việc giải thích mối quan hệ giữa quy mô công ty và xác suất đạt mức lương từ trung trở lên, Vì chỉ số AIC của hai mô hình này thấp hơn chỉ số AIC của mô hình xác suất tuyến tính. Logit và Probit có hiệu suất tương đương nhau vì chúng có cùng chỉ số AIC.
Dựa vào kết quả thu được, chúng tôi nhận thấy lương kĩ sư có sự phân hóa rất mạnh theo từng nhóm riêng. Mỗi nhóm sẽ có mức lương khác nhau và phân hóa theo từng cấp bậc, trình độ, nơi làm việc, quy mô công ty… Bên cạnh đó, phương pháp, môn học phân tích dữ liệu định tính là công cụ mạnh, đóng vai trò quan trọng trong việc nghiên cứu các vấn đề trong xã hội. Chỉ sử dụng bộ dữ liệu định tính, từ đó, chúng tôi có thể khảo sát bất cứ vấn đề nào có trong xã hội. Tuy nhiên, việc thu thập dữ liệu sẽ gặp rất nhiều khó khăn nếu mẫu thu thập không đại diện cho một tổng thể, có sự chêch lệch lớn về trình độ, vùng miền, giới tính… và việc thu thập mẫu cũng sẽ mất thời gian mà chưa qua các bước khác như lọc dữ liệu, xóa các outliers… Từ đó, kết quả thực nghiệm sẽ thiếu chính xác.
Dựa vào môn học phân tích dữ liệu định tính, chúng tôi có thể tiến hành nhiều nghiên cứu thực nghiệm khác về các vấn đề trong xã hội, với các bộ dữ liệu định tính. Ví dụ, chúng tôi có thể phân tích các yếu tố ảnh hưởng đến lương của các ngành nghề khác như môi giới chứng khoán, bất động sản, bác sĩ, giáo viên… Ngoài lương, chúng tôi còn có thể phân tích được các yếu tố ảnh hưởng đến việc sử dụng rượu bia, thuốc lá, chất kích thích… hoặc nhiều vấn đề khác trong xã hội. Từ đó, các nghiên cứu đóng góp kết quả thực nghiệm làm nguồn tham khảo, công bố cho toàn xã hội.