1. Thong tin co ban

1.1. Thong tin co ban ve du lieu

# Số dòng và số cột
dim(Data)
## [1] 100000     20
# Tên các biến
names(Data)
##  [1] "Employee_ID"                 "Department"                 
##  [3] "Gender"                      "Age"                        
##  [5] "Job_Title"                   "Hire_Date"                  
##  [7] "Years_At_Company"            "Education_Level"            
##  [9] "Performance_Score"           "Monthly_Salary"             
## [11] "Work_Hours_Per_Week"         "Projects_Handled"           
## [13] "Overtime_Hours"              "Sick_Days"                  
## [15] "Remote_Work_Frequency"       "Team_Size"                  
## [17] "Training_Hours"              "Promotions"                 
## [19] "Employee_Satisfaction_Score" "Resigned"
# Cấu trúc dữ liệu
str(Data)
## tibble [100,000 × 20] (S3: tbl_df/tbl/data.frame)
##  $ Employee_ID                : num [1:100000] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Department                 : chr [1:100000] "IT" "Finance" "Finance" "Customer Support" ...
##  $ Gender                     : chr [1:100000] "Male" "Male" "Male" "Female" ...
##  $ Age                        : num [1:100000] 55 29 55 48 36 43 37 55 55 45 ...
##  $ Job_Title                  : chr [1:100000] "Specialist" "Developer" "Specialist" "Analyst" ...
##  $ Hire_Date                  : Date[1:100000], format: "2022-01-19" "2024-04-18" ...
##  $ Years_At_Company           : num [1:100000] 2 0 8 7 3 8 1 9 1 7 ...
##  $ Education_Level            : chr [1:100000] "High School" "High School" "High School" "Bachelor" ...
##  $ Performance_Score          : num [1:100000] 5 5 3 2 2 3 5 2 2 1 ...
##  $ Monthly_Salary             : num [1:100000] 6750 7500 5850 4800 4800 7800 5250 7200 4200 6050 ...
##  $ Work_Hours_Per_Week        : num [1:100000] 33 34 37 52 38 46 55 42 51 41 ...
##  $ Projects_Handled           : num [1:100000] 32 34 27 10 11 31 20 46 23 33 ...
##  $ Overtime_Hours             : num [1:100000] 22 13 6 28 29 8 29 7 21 2 ...
##  $ Sick_Days                  : num [1:100000] 2 14 3 12 13 0 2 8 14 6 ...
##  $ Remote_Work_Frequency      : num [1:100000] 0 100 50 100 100 100 0 100 0 75 ...
##  $ Team_Size                  : num [1:100000] 14 12 10 10 15 15 16 7 1 4 ...
##  $ Training_Hours             : num [1:100000] 66 61 1 0 9 95 27 64 0 53 ...
##  $ Promotions                 : num [1:100000] 0 2 0 1 1 0 0 0 1 2 ...
##  $ Employee_Satisfaction_Score: num [1:100000] 2.63 1.72 3.17 1.86 1.25 2.77 4.46 2.09 1.44 2.93 ...
##  $ Resigned                   : logi [1:100000] FALSE FALSE FALSE FALSE FALSE FALSE ...
# Tổng quan thống kê nhanh
summary(Data)
##   Employee_ID      Department           Gender               Age       
##  Min.   :     1   Length:100000      Length:100000      Min.   :22.00  
##  1st Qu.: 25001   Class :character   Class :character   1st Qu.:31.00  
##  Median : 50001   Mode  :character   Mode  :character   Median :41.00  
##  Mean   : 50001                                         Mean   :41.03  
##  3rd Qu.: 75000                                         3rd Qu.:51.00  
##  Max.   :100000                                         Max.   :60.00  
##   Job_Title           Hire_Date          Years_At_Company Education_Level   
##  Length:100000      Min.   :2014-09-07   Min.   : 0.000   Length:100000     
##  Class :character   1st Qu.:2017-03-20   1st Qu.: 2.000   Class :character  
##  Mode  :character   Median :2019-09-21   Median : 4.000   Mode  :character  
##                     Mean   :2019-09-14   Mean   : 4.476                     
##                     3rd Qu.:2022-03-14   3rd Qu.: 7.000                     
##                     Max.   :2024-09-03   Max.   :10.000                     
##  Performance_Score Monthly_Salary Work_Hours_Per_Week Projects_Handled
##  Min.   :1.000     Min.   :3850   Min.   :30.00       Min.   : 0.00   
##  1st Qu.:2.000     1st Qu.:5250   1st Qu.:37.00       1st Qu.:12.00   
##  Median :3.000     Median :6500   Median :45.00       Median :24.00   
##  Mean   :2.995     Mean   :6403   Mean   :44.96       Mean   :24.43   
##  3rd Qu.:4.000     3rd Qu.:7500   3rd Qu.:53.00       3rd Qu.:37.00   
##  Max.   :5.000     Max.   :9000   Max.   :60.00       Max.   :49.00   
##  Overtime_Hours    Sick_Days      Remote_Work_Frequency   Team_Size    
##  Min.   : 0.00   Min.   : 0.000   Min.   :  0.00        Min.   : 1.00  
##  1st Qu.: 7.00   1st Qu.: 3.000   1st Qu.: 25.00        1st Qu.: 5.00  
##  Median :15.00   Median : 7.000   Median : 50.00        Median :10.00  
##  Mean   :14.51   Mean   : 7.009   Mean   : 50.09        Mean   :10.01  
##  3rd Qu.:22.00   3rd Qu.:11.000   3rd Qu.: 75.00        3rd Qu.:15.00  
##  Max.   :29.00   Max.   :14.000   Max.   :100.00        Max.   :19.00  
##  Training_Hours    Promotions     Employee_Satisfaction_Score  Resigned      
##  Min.   : 0.00   Min.   :0.0000   Min.   :1.000               Mode :logical  
##  1st Qu.:25.00   1st Qu.:0.0000   1st Qu.:2.010               FALSE:89990    
##  Median :49.00   Median :1.0000   Median :3.000               TRUE :10010    
##  Mean   :49.51   Mean   :0.9997   Mean   :2.999                              
##  3rd Qu.:75.00   3rd Qu.:2.0000   3rd Qu.:3.990                              
##  Max.   :99.00   Max.   :2.0000   Max.   :5.000

1.2. Phan loai bien theo kieu du lieu

# Đếm số biến định lượng
num_vars <- sapply(Data, is.numeric)
sum(num_vars)
## [1] 14
# Đếm số biến định tính
cat_vars <- sapply(Data, function(x) is.character(x) | is.factor(x))
sum(cat_vars)
## [1] 4
# Đếm số biến thời gian
date_vars <- sapply(Data, function(x) inherits(x, "Date") | inherits(x, "POSIXct"))
sum(date_vars)
## [1] 1
# Liệt kê tên biến theo loại
names(Data)[num_vars]    # Định lượng
##  [1] "Employee_ID"                 "Age"                        
##  [3] "Years_At_Company"            "Performance_Score"          
##  [5] "Monthly_Salary"              "Work_Hours_Per_Week"        
##  [7] "Projects_Handled"            "Overtime_Hours"             
##  [9] "Sick_Days"                   "Remote_Work_Frequency"      
## [11] "Team_Size"                   "Training_Hours"             
## [13] "Promotions"                  "Employee_Satisfaction_Score"
names(Data)[cat_vars]    # Định tính
## [1] "Department"      "Gender"          "Job_Title"       "Education_Level"
names(Data)[date_vars]   # Kiểu thời gian
## [1] "Hire_Date"

Nhận xét: Bộ dữ liệu Data gồm 100.000 quan sát và 20 biến(Department, Gender, Job_Title, Education_Level, Age, Years_At_Company, Performance_Score, Monthly_Salary, Work_Hours_Per_Week, Projects_Handled, Overtime_Hours, Sick_Days, Remote_Work_Frequency, Team_Size, Training_Hours, Promotions, Resigned), chứa thông tin về nhân viên của một công ty.Trong đó gồm: 14 biến định lượng, 4 biến định tính và 1 biến thời gian.

1.3. Nhung thong tin lien quan den bo du lieu gom: so bien, so quan sat, so quan sat trung lap, so quan sat bi thieu.

# Tắt hiển thị dạng số khoa học
options(scipen = 999)

# Tính các thông tin cơ bản
so_bien <- ncol(Data)
so_quan_sat <- nrow(Data)
so_trung_lap <- sum(duplicated(Data))
so_thieu <- sum(is.na(Data))
ty_le_thieu <- round(so_thieu / (so_bien * so_quan_sat) * 100, 2)

# Tổng hợp kết quả thành bảng
thong_tin_co_ban <- data.frame(
  Chi_tieu = c(
    "Số biến (cột)",
    "Số quan sát (dòng)",
    "Số quan sát trùng lặp",
    "Số quan sát bị thiếu",
    "Tỷ lệ quan sát bị thiếu (%)"
  ),
  Gia_tri = c(so_bien, so_quan_sat, so_trung_lap, so_thieu, ty_le_thieu)
)

print(thong_tin_co_ban)
##                      Chi_tieu Gia_tri
## 1               Số biến (cột)      20
## 2          Số quan sát (dòng)  100000
## 3       Số quan sát trùng lặp       0
## 4        Số quan sát bị thiếu       0
## 5 Tỷ lệ quan sát bị thiếu (%)       0

Nhận xét: Kết quả cho thấy không có quan sát trùng lặp và không có giá trị bị thiếu, tỷ lệ thiếu bằng 0%. Điều này chứng tỏ dữ liệu đã được làm sạch tốt, đảm bảo tính toàn vẹn và độ tin cậy cao, thuận lợi cho việc phân tích mô tả, khám phá và mô hình hóa ở các bước tiếp theo.

1.4. Y nghia cua cac bien

# Tóm tắt ý nghĩa cơ bản (cấu trúc dữ liệu)
library(dplyr)
thong_tin_bien <- Data %>%
  summarise(across(everything(), list(
    Kieu_du_lieu = ~class(.x)[1],
    So_thieu = ~sum(is.na(.x)),
    So_gia_tri_phan_biet = ~n_distinct(.x)
  ), .names = "{.col}_{.fn}"))

# Chuyển từ dạng wide sang long để dễ đọc
thong_tin_bien_long <- data.frame(
  Bien = names(Data),
  Kieu_du_lieu = as.character(thong_tin_bien[1, seq(1, ncol(thong_tin_bien), 3)]),
  So_thieu = as.numeric(thong_tin_bien[1, seq(2, ncol(thong_tin_bien), 3)]),
  So_gia_tri_phan_biet = as.numeric(thong_tin_bien[1, seq(3, ncol(thong_tin_bien), 3)])
)

print(thong_tin_bien_long)
##                           Bien Kieu_du_lieu So_thieu So_gia_tri_phan_biet
## 1                  Employee_ID      numeric        0               100000
## 2                   Department    character        0                    9
## 3                       Gender    character        0                    3
## 4                          Age      numeric        0                   39
## 5                    Job_Title    character        0                    7
## 6                    Hire_Date         Date        0                 3650
## 7             Years_At_Company      numeric        0                   11
## 8              Education_Level    character        0                    4
## 9            Performance_Score      numeric        0                    5
## 10              Monthly_Salary      numeric        0                   28
## 11         Work_Hours_Per_Week      numeric        0                   31
## 12            Projects_Handled      numeric        0                   50
## 13              Overtime_Hours      numeric        0                   30
## 14                   Sick_Days      numeric        0                   15
## 15       Remote_Work_Frequency      numeric        0                    5
## 16                   Team_Size      numeric        0                   19
## 17              Training_Hours      numeric        0                  100
## 18                  Promotions      numeric        0                    3
## 19 Employee_Satisfaction_Score      numeric        0                  401
## 20                    Resigned      logical        0                    2
# Giải thích ý nghĩa các biến trong bộ dữ liệu Data
variable_meaning <- data.frame(
  Variable = c(
    "Employee_ID",
    "Department",
    "Gender",
    "Age",
    "Job_Title",
    "Hire_Date",
    "Years_At_Company",
    "Education_Level",
    "Performance_Score",
    "Monthly_Salary",
    "Work_Hours_Per_Week",
    "Projects_Handled",
    "Overtime_Hours",
    "Sick_Days",
    "Remote_Work_Frequency",
    "Team_Size",
    "Training_Hours",
    "Promotions",
    "Employee_Satisfaction_Score",
    "Resigned"
  ),
  
  Meaning = c(
    "Mã định danh duy nhất của mỗi nhân viên",
    "Phòng ban mà nhân viên đang làm việc (như IT, HR, Sales,...)",
    "Giới tính của nhân viên (Nam/Nữ)",
    "Tuổi của nhân viên (tính bằng năm)",
    "Chức danh công việc hiện tại của nhân viên",
    "Ngày bắt đầu làm việc tại công ty",
    "Số năm nhân viên đã làm việc tại công ty",
    "Trình độ học vấn cao nhất của nhân viên (Cao đẳng, Đại học, Sau đại học,...)",
    "Điểm đánh giá hiệu suất làm việc (từ 1 đến 5)",
    "Mức lương hàng tháng của nhân viên",
    "Số giờ làm việc trung bình mỗi tuần của nhân viên",
    "Số dự án mà nhân viên đã hoặc đang phụ trách",
    "Số giờ làm thêm (overtime) trung bình mỗi tháng",
    "Số ngày nghỉ ốm của nhân viên trong năm",
    "Tần suất làm việc từ xa",
    "Quy mô nhóm hoặc đội mà nhân viên tham gia",
    "Tổng số giờ tham gia các khóa đào tạo",
    "Số lần được thăng chức của nhân viên",
    "Mức độ hài lòng của nhân viên (từ 0 đến 5)",
    "Trạng thái nghỉ việc của nhân viên (TRUE = đã nghỉ, FALSE = còn làm)"
  ),
  
  stringsAsFactors = FALSE
)

# Hiển thị bảng đẹp
library(knitr)
kable(variable_meaning, booktabs = TRUE, caption = "Giải thích ý nghĩa các biến trong bộ dữ liệu nhân sự")
Giải thích ý nghĩa các biến trong bộ dữ liệu nhân sự
Variable Meaning
Employee_ID Mã định danh duy nhất của mỗi nhân viên
Department Phòng ban mà nhân viên đang làm việc (như IT, HR, Sales,…)
Gender Giới tính của nhân viên (Nam/Nữ)
Age Tuổi của nhân viên (tính bằng năm)
Job_Title Chức danh công việc hiện tại của nhân viên
Hire_Date Ngày bắt đầu làm việc tại công ty
Years_At_Company Số năm nhân viên đã làm việc tại công ty
Education_Level Trình độ học vấn cao nhất của nhân viên (Cao đẳng, Đại học, Sau đại học,…)
Performance_Score Điểm đánh giá hiệu suất làm việc (từ 1 đến 5)
Monthly_Salary Mức lương hàng tháng của nhân viên
Work_Hours_Per_Week Số giờ làm việc trung bình mỗi tuần của nhân viên
Projects_Handled Số dự án mà nhân viên đã hoặc đang phụ trách
Overtime_Hours Số giờ làm thêm (overtime) trung bình mỗi tháng
Sick_Days Số ngày nghỉ ốm của nhân viên trong năm
Remote_Work_Frequency Tần suất làm việc từ xa
Team_Size Quy mô nhóm hoặc đội mà nhân viên tham gia
Training_Hours Tổng số giờ tham gia các khóa đào tạo
Promotions Số lần được thăng chức của nhân viên
Employee_Satisfaction_Score Mức độ hài lòng của nhân viên (từ 0 đến 5)
Resigned Trạng thái nghỉ việc của nhân viên (TRUE = đã nghỉ, FALSE = còn làm)

2. Phan to cac bien

2.1. Phan to theo gioi tinh va nhom tuoi

# Tạo biến nhóm tuổi (phân tổ theo khoảng)
Data <- Data %>%
  mutate(Nhom_tuoi = cut(Age,
                         breaks = c(20, 30, 40, 50, 60),
                         labels = c("20-29", "30-39", "40-49", "50-59"),
                         right = FALSE))  # khoảng trái đóng, phải mở

# Phân tổ theo giới tính và nhóm tuổi
bang_phan_to <- Data %>%
  group_by(Gender, Nhom_tuoi) %>%
  summarise(
    So_luong = n(),
    Luong_TB = mean(as.numeric(Monthly_Salary), na.rm = TRUE),
    Diem_HL_TB = mean(as.numeric(Employee_Satisfaction_Score), na.rm = TRUE)
  ) %>%
  arrange(Gender, Nhom_tuoi)
## `summarise()` has grouped output by 'Gender'. You can override using the
## `.groups` argument.
# In kết quả ra màn hình
print(bang_phan_to)
## # A tibble: 15 × 5
## # Groups:   Gender [3]
##    Gender Nhom_tuoi So_luong Luong_TB Diem_HL_TB
##    <chr>  <fct>        <int>    <dbl>      <dbl>
##  1 Female 20-29         9722    6403.       3.00
##  2 Female 30-39        12403    6400.       3.01
##  3 Female 40-49        12333    6414.       3.00
##  4 Female 50-59        12331    6400.       3.00
##  5 Female <NA>          1212    6434.       3.06
##  6 Male   20-29         9946    6398.       2.99
##  7 Male   30-39        12056    6399.       3.00
##  8 Male   40-49        12357    6394.       2.99
##  9 Male   50-59        12462    6404.       2.99
## 10 Male   <NA>          1210    6469.       3.03
## 11 Other  20-29          824    6392.       2.94
## 12 Other  30-39         1006    6414.       3.00
## 13 Other  40-49         1020    6427.       3.00
## 14 Other  50-59         1005    6423.       3.00
## 15 Other  <NA>           113    6405.       3.10

2.2. Phan to nam, 30-40 tuoi, bo phan IT, tang ca tren 10 tieng

# Lọc nhân viên nam trong bộ phận IT, độ tuổi 30–40 và tăng ca >10 tiếng
df_filtered <- Data %>%
  filter(
    between(Age, 30, 40),
    Gender == "Male",
    Department == "IT",
    Overtime_Hours > 10
  )

print(df_filtered)
## # A tibble: 972 × 21
##    Employee_ID Department Gender   Age Job_Title  Hire_Date  Years_At_Company
##          <dbl> <chr>      <chr>  <dbl> <chr>      <date>                <dbl>
##  1           7 IT         Male      37 Technician 2023-08-28                1
##  2         103 IT         Male      33 Consultant 2020-01-07                4
##  3         118 IT         Male      38 Consultant 2016-06-10                8
##  4         252 IT         Male      35 Consultant 2017-10-29                6
##  5         455 IT         Male      33 Developer  2019-08-10                5
##  6         465 IT         Male      40 Specialist 2018-05-30                6
##  7         538 IT         Male      35 Manager    2022-04-07                2
##  8         578 IT         Male      40 Specialist 2021-11-12                2
##  9         643 IT         Male      37 Manager    2015-07-09                9
## 10         688 IT         Male      32 Consultant 2016-05-29                8
## # ℹ 962 more rows
## # ℹ 14 more variables: Education_Level <chr>, Performance_Score <dbl>,
## #   Monthly_Salary <dbl>, Work_Hours_Per_Week <dbl>, Projects_Handled <dbl>,
## #   Overtime_Hours <dbl>, Sick_Days <dbl>, Remote_Work_Frequency <dbl>,
## #   Team_Size <dbl>, Training_Hours <dbl>, Promotions <dbl>,
## #   Employee_Satisfaction_Score <dbl>, Resigned <lgl>, Nhom_tuoi <fct>

2.3. Phan to chuc danh nha phat trien, trinh do thac si, diem hieu suat duoi 2, so ngay om tren 5

# Lọc dữ liệu theo tiêu chí học vấn, hiệu suất và số ngày ốm
df_filtered2 <- Data %>%
  filter(
    Job_Title == "Developer",
    Education_Level == "Master",
    Performance_Score < 2,
    Sick_Days > 5
  )

print(df_filtered2)
## # A tibble: 252 × 21
##    Employee_ID Department Gender   Age Job_Title Hire_Date  Years_At_Company
##          <dbl> <chr>      <chr>  <dbl> <chr>     <date>                <dbl>
##  1         338 Operations Female    55 Developer 2017-02-07                7
##  2         670 Legal      Male      47 Developer 2019-04-29                5
##  3         811 Sales      Female    24 Developer 2018-06-20                6
##  4         986 IT         Female    56 Developer 2020-07-31                4
##  5        1774 Finance    Male      45 Developer 2022-03-27                2
##  6        2191 Legal      Female    39 Developer 2016-05-06                8
##  7        2437 IT         Female    36 Developer 2014-12-23                9
##  8        2783 Finance    Female    43 Developer 2016-03-28                8
##  9        2847 Legal      Other     53 Developer 2017-09-13                6
## 10        3119 HR         Female    58 Developer 2015-09-17                8
## # ℹ 242 more rows
## # ℹ 14 more variables: Education_Level <chr>, Performance_Score <dbl>,
## #   Monthly_Salary <dbl>, Work_Hours_Per_Week <dbl>, Projects_Handled <dbl>,
## #   Overtime_Hours <dbl>, Sick_Days <dbl>, Remote_Work_Frequency <dbl>,
## #   Team_Size <dbl>, Training_Hours <dbl>, Promotions <dbl>,
## #   Employee_Satisfaction_Score <dbl>, Resigned <lgl>, Nhom_tuoi <fct>

3. Phan tich mot bien

3.1. Phan tich bien trinh do hoc van

df_summary <- Data %>%
  group_by(Education_Level) %>%
  summarise(
    Min_Training = min(Training_Hours, na.rm = TRUE),
    Max_Training = max(Training_Hours, na.rm = TRUE),
    Mean_Training = mean(Training_Hours, na.rm = TRUE),
    SD_Training = sd(Training_Hours, na.rm = TRUE),
    .groups = "drop"
  )

print(df_summary)
## # A tibble: 4 × 5
##   Education_Level Min_Training Max_Training Mean_Training SD_Training
##   <chr>                  <dbl>        <dbl>         <dbl>       <dbl>
## 1 Bachelor                   0           99          49.6        28.9
## 2 High School                0           99          49.5        28.9
## 3 Master                     0           99          49.3        28.8
## 4 PhD                        0           99          49.5        28.7

Nhận xét: Mức Training_Hours (giờ đào tạo) dao động từ 0 đến 99 giờ ở tất cả các nhóm trình độ học vấn. Trung bình số giờ đào tạo gần như tương đương nhau giữa các nhóm — dao động quanh 49 giờ. Độ lệch chuẩn (SD) khoảng 28.7–28.9, cho thấy mức độ phân tán khá lớn, tức là một số nhân viên được đào tạo nhiều trong khi một số khác rất ít.

**3.2. Phan tich bien muc do hai long cua nhan vien

# Phân tích mô tả cho biến Employee_Satisfaction_Score

# Thống kê cơ bản
summary(Data$Employee_Satisfaction_Score)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   2.010   3.000   2.999   3.990   5.000
# Tính thêm các chỉ số mô tả chi tiết hơn
library(dplyr)

mo_ta_satisfaction <- Data %>%
  summarise(
    So_quan_sat = n(),
    Gia_tri_thap_nhat = min(Employee_Satisfaction_Score, na.rm = TRUE),
    Q1 = quantile(Employee_Satisfaction_Score, 0.25, na.rm = TRUE),
    Trung_vi = median(Employee_Satisfaction_Score, na.rm = TRUE),
    Trung_binh = mean(Employee_Satisfaction_Score, na.rm = TRUE),
    Q3 = quantile(Employee_Satisfaction_Score, 0.75, na.rm = TRUE),
    Gia_tri_cao_nhat = max(Employee_Satisfaction_Score, na.rm = TRUE),
    Do_lech_chuan = sd(Employee_Satisfaction_Score, na.rm = TRUE)
  )

print(mo_ta_satisfaction)
## # A tibble: 1 × 8
##   So_quan_sat Gia_tri_thap_nhat    Q1 Trung_vi Trung_binh    Q3 Gia_tri_cao_nhat
##         <int>             <dbl> <dbl>    <dbl>      <dbl> <dbl>            <dbl>
## 1      100000                 1  2.01        3       3.00  3.99                5
## # ℹ 1 more variable: Do_lech_chuan <dbl>
# Trực quan hóa bằng biểu đồ
hist(
  Data$Employee_Satisfaction_Score,
  main = "Phân bố điểm hài lòng nhân viên",
  xlab = "Employee Satisfaction Score",
  col = "skyblue", border = "white"
)

boxplot(
  Data$Employee_Satisfaction_Score,
  main = "Biểu đồ Boxplot - Employee Satisfaction Score",
  col = "lightgreen",
  horizontal = TRUE
)

Nhận xét: Điểm hài lòng dao động từ 1 đến 5, cho thấy thang đo Likert 5 mức (từ rất không hài lòng → rất hài lòng). Trung bình ≈ 3, trung vị ≈ 3, nên phân phối dữ liệu khá cân đối quanh mức trung bình. Độ lệch chuẩn ≈ 1.15, thể hiện mức độ chênh lệch vừa phải — có sự khác biệt nhất định trong cảm nhận hài lòng giữa các nhân viên. Biểu đồ histogram cho thấy đa số nhân viên có điểm hài lòng trung bình – khá, trong khi tỷ lệ nhân viên cực kỳ hài lòng hoặc rất không hài lòng là ít hơn. Không có dấu hiệu ngoại lai đáng kể (theo boxplot).