Phần 1: Tìm hiểu và Chuẩn bị Dữ liệu

1.1 Đọc bộ dữ liệu

Bộ dữ liệu này được trích xuất từ cơ sở dữ liệu điều tra dân số Hoa Kỳ năm 1994 bởi Ronny Kohavi và Barry Becker, hiện được lưu trữ tại kho dữ liệu học máy UCI. Dữ liệu bao gồm các bản ghi đã được lọc và làm sạch, với điều kiện người tham gia phải trên 16 tuổi, có thu nhập lớn hơn 100 USD/năm, trọng số dân số hợp lệ và số giờ làm việc hàng tuần lớn hơn 0. Mục tiêu của bài toán là dự đoán khả năng một người có thu nhập hàng năm vượt mức 50.000 USD, dựa trên các đặc điểm nhân khẩu học và xã hội như: tuổi, trình độ học vấn, ngành nghề, tình trạng hôn nhân, chủng tộc, giới tính, số giờ làm việc mỗi tuần, cùng với biến fnlwgt (final weight) – một trọng số dân số được tính toán để đảm bảo tính đại diện của từng cá nhân trong tổng thể dân số Mỹ theo từng bang, độ tuổi, giới tính và sắc tộc.

Bộ dữ liệu phản ánh bức tranh tổng quan về lực lượng lao động Mỹ vào thời điểm đó, rất phù hợp cho các bài toán phân tích dữ liệu, học máy và mô hình dự báo trong lĩnh vực kinh tế - xã hội.

library(xlsx)
q <- read.xlsx(file = 'C:/T.Long 2/R/nv4.xlsx', sheetIndex = 1, header = T)
str(q)
## 'data.frame':    32561 obs. of  15 variables:
##  $ age           : num  90 82 66 54 41 34 38 74 68 41 ...
##  $ workclass     : chr  "?" "Private" "?" "Private" ...
##  $ fnlwgt        : num  77053 132870 186061 140359 264663 ...
##  $ education     : chr  "HS-grad" "HS-grad" "Some-college" "7th-8th" ...
##  $ education.num : num  9 9 10 4 10 9 6 16 9 10 ...
##  $ marital.status: chr  "Widowed" "Widowed" "Widowed" "Divorced" ...
##  $ occupation    : chr  "?" "Exec-managerial" "?" "Machine-op-inspct" ...
##  $ relationship  : chr  "Not-in-family" "Not-in-family" "Unmarried" "Unmarried" ...
##  $ race          : chr  "White" "White" "Black" "White" ...
##  $ sex           : chr  "Female" "Female" "Female" "Female" ...
##  $ capital.gain  : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ capital.loss  : num  4356 4356 4356 3900 3900 ...
##  $ hours.per.week: num  40 18 40 40 40 45 40 20 40 60 ...
##  $ native.country: chr  "United-States" "United-States" "United-States" "United-States" ...
##  $ income        : chr  "<=50K" "<=50K" "<=50K" "<=50K" ...

Bộ dữ liệu đang được phân tích gồm tổng cộng 32.561 quan sát và 15 biến, phản ánh các đặc điểm nhân khẩu học, xã hội và kinh tế của từng cá nhân được điều tra trong tổng thể dân số Hoa Kỳ. Về cấu trúc, các biến trong bộ dữ liệu được chia thành hai nhóm chính: biến định lượng và biến định tính. Nhóm biến định lượng bao gồm: age (tuổi), fnlwgt (trọng số dân số – dùng để suy rộng mẫu), education.num (số năm học tương ứng với trình độ), capital.gain và capital.loss (thu nhập hoặc tổn thất vốn), và hours.per.week (số giờ làm việc mỗi tuần). Đây là các biến có giá trị số thực, phù hợp cho các phân tích mô tả, tính trung bình, kiểm định trung bình hoặc làm biến đầu vào trong các mô hình hồi quy.

Ngược lại, nhóm biến định tính bao gồm các biến dạng chuỗi (character), thể hiện phân loại hoặc thuộc tính không mang tính thứ tự số học, chẳng hạn như: workclass (loại hình công việc như tư nhân, chính phủ, tự doanh…), education (trình độ học vấn như Bachelors, HS-grad, Some-college…), marital.status (tình trạng hôn nhân như Never-married, Married, Divorced…), occupation (ngành nghề), relationship (vai trò trong gia đình như Husband, Not-in-family…), race (chủng tộc như White, Black…), sex (giới tính), native.country (quốc tịch), và income (mức thu nhập hàng năm, phân loại thành <=50K và >50K, cũng chính là biến mục tiêu trong bài toán phân loại).

Một số biến như workclass, occupation và native.country có xuất hiện giá trị “?” – biểu thị cho dữ liệu thiếu (missing values). Điều này cho thấy cần có bước xử lý dữ liệu thiếu để đảm bảo độ chính xác và độ tin cậy trong các phân tích sau đó. Nhìn chung, cấu trúc dữ liệu cân đối và rõ ràng, rất phù hợp cho các bài toán thống kê mô tả, kiểm định giả thuyết, cũng như các mô hình dự đoán như phân loại nhị phân (binary classification) nhằm xác định xác suất một cá nhân có mức thu nhập vượt ngưỡng 50.000 đô la mỗi năm.

head(q,4)
age workclass fnlwgt education education.num marital.status occupation relationship race sex capital.gain capital.loss hours.per.week native.country income
90 ? 77053 HS-grad 9 Widowed ? Not-in-family White Female 0 4356 40 United-States <=50K
82 Private 132870 HS-grad 9 Widowed Exec-managerial Not-in-family White Female 0 4356 18 United-States <=50K
66 ? 186061 Some-college 10 Widowed ? Unmarried Black Female 0 4356 40 United-States <=50K
54 Private 140359 7th-8th 4 Divorced Machine-op-inspct Unmarried White Female 0 3900 40 United-States <=50K

Bốn quan sát đầu tiên trong bộ dữ liệu đều là nữ giới có thu nhập dưới 50.000 đô/năm, với độ tuổi dao động từ 54 đến 90 tuổi. Các cá nhân này có trình độ học vấn khác nhau, từ lớp 7–8 đến một phần chương trình đại học, và phần lớn thuộc chủng tộc White. Một số biến như workclass và occupation bị thiếu dữ liệu (ký hiệu “?”). Tất cả đều cư trú tại Hoa Kỳ, làm việc từ 18 đến 40 giờ mỗi tuần, không có thu nhập vốn nhưng có tổn thất vốn từ 3.900 đến 4.356 đô.

tail(q,4)
age workclass fnlwgt education education.num marital.status occupation relationship race sex capital.gain capital.loss hours.per.week native.country income
32558 27 Private 257302 Assoc-acdm 12 Married-civ-spouse Tech-support Wife White Female 0 0 38 United-States <=50K
32559 40 Private 154374 HS-grad 9 Married-civ-spouse Machine-op-inspct Husband White Male 0 0 40 United-States >50K
32560 58 Private 151910 HS-grad 9 Widowed Adm-clerical Unmarried White Female 0 0 40 United-States <=50K
32561 22 Private 201490 HS-grad 9 Never-married Adm-clerical Own-child White Male 0 0 20 United-States <=50K

Bốn quan sát cuối cùng trong bộ dữ liệu thể hiện sự đa dạng về tuổi (22 đến 58), giới tính, và tình trạng hôn nhân. Các cá nhân đều thuộc chủng tộc White, làm việc trong lĩnh vực kỹ thuật, hành chính hoặc sản xuất, với mức học vấn từ trung học đến cao đẳng. Trong đó, có một người có thu nhập trên 50.000 đô (nam giới, 40 tuổi, đã kết hôn), còn lại đều có thu nhập thấp hơn. Tất cả đều làm việc trong khu vực tư nhân, không có thu nhập hay tổn thất vốn, và làm việc từ 20 đến 40 giờ mỗi tuần tại Hoa Kỳ.

1.2 Kiểm tra xem có giá trị thiếu (NA) trong các cột định tính

colSums(is.na(q))
##            age      workclass         fnlwgt      education  education.num 
##              0              0              0              0              0 
## marital.status     occupation   relationship           race            sex 
##              0              0              0              0              0 
##   capital.gain   capital.loss hours.per.week native.country         income 
##              0              0              0              0              0

Kết quả kiểm tra cho thấy không có giá trị thiếu (NA) trong bất kỳ biến nào của bộ dữ liệu, bao gồm cả các biến định tính như workclass, education, marital.status, occupation, relationship, race, sex, native.country, và income. Điều này đồng nghĩa với việc, xét về mặt kỹ thuật trong R, dữ liệu đã được nhập đầy đủ theo cấu trúc bảng và không có ô nào chứa giá trị NA chính thức.

Tuy nhiên, cần lưu ý rằng một số biến (như workclass, occupation, native.country) có thể chứa ký hiệu “?” để biểu diễn dữ liệu bị thiếu theo kiểu ký tự. Những giá trị này không được tính là NA trong R, nên không xuất hiện trong kết quả colSums(is.na(q)).

1.3 Chuyển đổi các biến cần thiết sang kiểu factor

qdt <- c("marital.status", "relationship", "race", "sex","education")
sapply(q[qdt], is.factor)
## marital.status   relationship           race            sex      education 
##          FALSE          FALSE          FALSE          FALSE          FALSE

Ban đầu, khi kiểm tra kiểu dữ liệu của các biến định tính như marital.status, relationship, race, sex, và education trong danh sách qdt, kết quả cho thấy tất cả đều chưa phải kiểu factor mà vẫn đang ở dạng chuỗi ký tự (character). Điều này không phù hợp nếu ta muốn thực hiện các phân tích thống kê định tính hoặc trực quan hóa dữ liệu phân loại, vì kiểu factor là cách R xử lý hiệu quả các biến phân loại.

for (col in qdt) {
  if (!is.factor(q[[col]])) {
    q[[col]] <- as.factor(q[[col]])
  }
}
sapply(q[qdt], is.factor)
## marital.status   relationship           race            sex      education 
##           TRUE           TRUE           TRUE           TRUE           TRUE

Sau đó, bằng cách dùng vòng lặp for, từng biến trong danh sách qdt được kiểm tra và chuyển đổi sang kiểu factor nếu chưa phải. Khi kiểm tra lại bằng sapply, kết quả cho thấy tất cả các biến trong qdt đều đã được chuyển thành kiểu factor. Việc chuyển đổi này giúp chuẩn hóa dữ liệu, tăng hiệu suất xử lý và đảm bảo tính tương thích với các hàm phân tích thống kê trong R như table(), prop.table(), glm(), hay các biểu đồ ggplot2. Đây là bước tiền xử lý quan trọng trước khi thực hiện các phân tích định tính trong R.

Phần 2: Phân tích Mô tả Một biến Định tính (Univariate Descriptive Analysis)

2.1 Biến marital.status

qq <-  q[,qdt]
table(qq$marital.status)
## 
##              Divorced     Married-AF-spouse    Married-civ-spouse 
##                  4443                    23                 14976 
## Married-spouse-absent         Never-married             Separated 
##                   418                 10683                  1025 
##               Widowed 
##                   993

Việc tạo bảng tần suất cho biến marital.status bằng lệnh table(qq$marital.status) giúp nhanh chóng thống kê số lượng quan sát cho từng nhóm tình trạng hôn nhân trong bộ dữ liệu. Kết quả cho thấy phần lớn cá nhân thuộc nhóm “Married-civ-spouse” (14.976 người) và “Never-married” (10.683 người), trong khi các nhóm như “Married-AF-spouse” (23 người) và “Married-spouse-absent” (418 người) có số lượng rất ít. Đây là cách đơn giản nhưng hiệu quả để có cái nhìn ban đầu về phân bố của một biến định tính.

q1 <- table(qq$marital.status)/sum(nrow(qq))
table(qq$marital.status)/sum(nrow(qq))
## 
##              Divorced     Married-AF-spouse    Married-civ-spouse 
##          0.1364515832          0.0007063665          0.4599367341 
## Married-spouse-absent         Never-married             Separated 
##          0.0128374436          0.3280918891          0.0314793772 
##               Widowed 
##          0.0304966064

Kết quả phân tích tỷ lệ các nhóm trong biến marital.status cho thấy rằng phần lớn cá nhân trong bộ dữ liệu thuộc nhóm đã kết hôn với vợ/chồng đang sống cùng (Married-civ-spouse), chiếm khoảng 45.99%. Nhóm chưa từng kết hôn (Never-married) cũng chiếm tỷ lệ khá lớn, đạt khoảng 32.81%. Trong khi đó, các nhóm còn lại có tỷ lệ thấp hơn đáng kể: nhóm ly hôn (Divorced) chiếm khoảng 13.65%, ly thân (Separated) chiếm 3.15%, góa (Widowed) chiếm 3.05%, và kết hôn nhưng vắng mặt vợ/chồng (Married-spouse-absent) chiếm 1.28%. Đặc biệt, nhóm Married-AF-spouse xuất hiện rất hiếm trong dữ liệu, chỉ chiếm 0.07%. Nhìn chung, phân bố tình trạng hôn nhân trong tập dữ liệu này cho thấy đa số người dân đã từng hoặc đang trong một mối quan hệ hôn nhân chính thức, trong khi các nhóm đặc biệt chỉ chiếm một phần rất nhỏ.

library(ggplot2)
library(tidyverse)
library(scales)
q1_df <- as.data.frame(q1)
names(q1_df) <- c("marital.status", "Tansuat")
ggplot(q1_df, aes(x = "", y = Tansuat, fill = marital.status)) +
  geom_col(width = 1, color = "white") +
  coord_polar(theta = "y") +
  scale_fill_manual(values = c("Divorced" = "#00C49A", "Married-AF-spouse" = "#1F77B4", "Married-spouse-absent" = "pink", "Married-civ-spouse" = "brown" ,"Never-married" = "#FF6384", "Separated" = "#9966FF", "Widowed" = "skyblue")) +
  labs(title = "Biểu đồ tần suất của marital.status") +
  theme_void() +  
  geom_text(aes(label = paste0(round(Tansuat,3), "%")), 
            position = position_stack(vjust = 0.5),
            color = "white", size = 4)

Biểu đồ tần suất của biến marital.status cho thấy sự phân bố không đồng đều rõ rệt giữa các nhóm tình trạng hôn nhân trong bộ dữ liệu. Cụ thể, nhóm “Married-civ-spouse” (đã kết hôn, sống cùng vợ/chồng) chiếm tỷ lệ cao nhất với khoảng 45.99%, tiếp theo là nhóm “Never-married” (chưa từng kết hôn) với 32.81%. Hai nhóm này cộng lại đã chiếm gần 79% tổng số quan sát, cho thấy đây là hai tình trạng phổ biến áp đảo trong dữ liệu. Các nhóm còn lại có tỷ lệ thấp hơn đáng kể, như “Divorced” (ly hôn) chiếm 13.65%, “Separated” (ly thân) chiếm 3.15%, “Widowed” (góa) chiếm 3.05%, và “Married-spouse-absent” chỉ chiếm 1.28%. Đặc biệt, nhóm “Married-AF-spouse” hầu như không xuất hiện, chỉ chiếm 0.07%. Sự mất cân đối này có ý nghĩa quan trọng trong quá trình mô hình hóa, vì các nhóm có tỷ lệ quá nhỏ có thể gây sai lệch hoặc giảm hiệu quả dự báo nếu không được xử lý thích hợp, chẳng hạn như gộp nhóm, tái phân loại hoặc áp dụng kỹ thuật cân bằng mẫu.

2.2 Biến relationship

qq <-  q[,qdt]
table(qq$relationship)
## 
##        Husband  Not-in-family Other-relative      Own-child      Unmarried 
##          13193           8305            981           5068           3446 
##           Wife 
##           1568
q2 <- table(qq$relationship)/sum(nrow(qq))
table(qq$relationship)/sum(nrow(qq))
## 
##        Husband  Not-in-family Other-relative      Own-child      Unmarried 
##     0.40517797     0.25505973     0.03012807     0.15564633     0.10583213 
##           Wife 
##     0.04815577

Kết quả phân tích tỷ lệ của biến relationship cho thấy nhóm Husband (người chồng trong hộ gia đình) chiếm tỷ lệ cao nhất, với khoảng 40.52% tổng số quan sát. Tiếp theo là nhóm Not-in-family (không thuộc gia đình hạt nhân) chiếm 25.51%, và nhóm Own-child (con ruột hoặc con nuôi trong hộ gia đình) chiếm khoảng 15.56%. Các nhóm còn lại có tỷ lệ thấp hơn: Unmarried (chưa kết hôn hoặc độc thân) chiếm 10.58%, Wife (người vợ) chiếm 4.82%, và thấp nhất là nhóm Other-relative (thành viên gia đình khác như anh chị em, ông bà…) với chỉ 3.01%. Phân bố này phản ánh rõ vai trò phổ biến của người chồng trong hộ gia đình thời điểm khảo sát, đồng thời cho thấy tỷ lệ nữ giới giữ vai trò “vợ” thấp hơn đáng kể, có thể do định nghĩa phân loại trong dữ liệu hoặc xu hướng nhân khẩu học đặc thù.

ggplot(qq, aes(x = relationship)) +
  geom_bar(fill = "pink", color = "black") +
  labs(x = "Mối quan hệ", y = "Tần số", title = "Biểu đồ tần số của biến relationship") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Biểu đồ tần số của biến relationship thể hiện rõ sự phân bố vai trò trong hộ gia đình của các cá nhân trong bộ dữ liệu. Nhóm chiếm tỷ lệ cao nhất là Husband (người chồng), với hơn 12.000 quan sát, cho thấy số lượng lớn người lao động trong mẫu khảo sát đóng vai trò trụ cột nam trong gia đình. Theo sau là nhóm Not-in-family (không thuộc gia đình hạt nhân), với gần 9.000 trường hợp – đây có thể là những người sống độc thân, ở trọ hoặc sống ngoài hộ gia đình truyền thống.

Các nhóm Own-child (con ruột hoặc con nuôi) và Unmarried (chưa kết hôn) chiếm tỷ lệ trung bình, lần lượt khoảng 5.000 và 4.000 quan sát. Ngược lại, nhóm Wife (người vợ) có số lượng thấp hơn đáng kể so với “Husband”, và nhóm Other-relative (thành viên gia đình khác) là nhóm ít xuất hiện nhất.

Phân bố này cho thấy một đặc điểm đáng chú ý về cấu trúc hộ gia đình trong dữ liệu – trong đó nam giới trong vai trò “chồng” được ghi nhận nhiều hơn so với nữ giới trong vai trò “vợ”, và có một tỷ lệ lớn cá nhân không sống trong hộ gia đình truyền thống. Đây là cơ sở quan trọng để phân tích sâu hơn về nhân khẩu học và xây dựng các mô hình liên quan đến thu nhập, nghề nghiệp hoặc cấu trúc hộ gia đình.

2.3 Biến race

qq <-  q[,qdt]
table(qq$race)
## 
## Amer-Indian-Eskimo Asian-Pac-Islander              Black              Other 
##                311               1039               3124                271 
##              White 
##              27816
q3 <- table(qq$race)/sum(nrow(qq))
table(qq$race)/sum(nrow(qq))
## 
## Amer-Indian-Eskimo Asian-Pac-Islander              Black              Other 
##        0.009551304        0.031909339        0.095942999        0.008322840 
##              White 
##        0.854273517

Kết quả phân tích biến race cho thấy đa số cá nhân trong bộ dữ liệu thuộc nhóm White, chiếm tới 85.43% tổng số quan sát. Nhóm Black đứng thứ hai với tỷ lệ 9.59%, theo sau là nhóm Asian-Pac-Islander với 3.19%. Các nhóm còn lại chiếm tỷ lệ rất nhỏ: Amer-Indian-Eskimo (người da đỏ hoặc Eskimo bản địa) chỉ chiếm khoảng 0.96%, và nhóm Other (chủng tộc khác) chiếm khoảng 0.83%. Phân bố này cho thấy sự mất cân đối rõ rệt về chủng tộc trong bộ dữ liệu, với sự áp đảo tuyệt đối của nhóm người da trắng, điều này cần được cân nhắc cẩn thận khi xây dựng các mô hình phân tích hoặc dự báo nhằm tránh thiên lệch và đảm bảo tính đại diện.

q3_df <- as.data.frame(q3)
names(q3_df) <- c("race", "Tansuat")
ggplot(q3_df, aes(x = race, y = Tansuat, fill = race)) +
  geom_col(width = 0.6) +
  geom_text(aes(label = round(Tansuat, 3)), vjust = -0.2, size = 5) +  
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +  
  labs(
    title = "Biểu đồ tỷ lệ chủng tộc ",
    x = "Chủng tộc",
    y = "Tần suất (%)"
  ) +
  theme_minimal(base_size = 14)

Biểu đồ tỷ lệ của biến race cho thấy sự mất cân đối rõ rệt về chủng tộc trong bộ dữ liệu. Nhóm White chiếm tỷ lệ áp đảo với khoảng 85.4%, vượt xa tất cả các nhóm còn lại. Nhóm Black đứng thứ hai nhưng chỉ chiếm khoảng 9.6%, trong khi Asian-Pac-Islander chiếm 3.2%, Amer-Indian-Eskimo khoảng 1%, và nhóm Other (các chủng tộc khác) chỉ chiếm khoảng 0.8%.

Sự chênh lệch lớn giữa các nhóm thể hiện rằng tập dữ liệu có sự thiên lệch nghiêng hẳn về một nhóm chủng tộc, điều này cần được lưu ý khi đưa biến race vào các mô hình phân tích hoặc học máy. Việc nhóm White chiếm tỷ lệ quá lớn có thể khiến mô hình học lệch nếu không có biện pháp xử lý như cân bằng mẫu, gộp nhóm ít thành phần, hoặc dùng trọng số theo nhóm. Đồng thời, điều này cũng phản ánh thực trạng cơ cấu dân số Mỹ trong dữ liệu điều tra dân số giai đoạn 1994.

2.4 Biến sex

qq <-  q[,qdt]
table(qq$sex)
## 
## Female   Male 
##  10771  21790
q4 <- table(qq$sex)/sum(nrow(qq))
table(qq$sex)/sum(nrow(qq))
## 
##    Female      Male 
## 0.3307945 0.6692055

Phân tích biến sex cho thấy sự chênh lệch đáng kể giữa hai giới tính trong bộ dữ liệu. Cụ thể, nam giới chiếm khoảng 66.92%, trong khi nữ giới chỉ chiếm khoảng 33.08% tổng số quan sát. Tỷ lệ này cho thấy nam giới chiếm ưu thế rõ rệt trong tập dữ liệu, gần gấp đôi so với nữ giới. Điều này có thể phản ánh đặc điểm của mẫu điều tra dân số tại thời điểm thu thập dữ liệu hoặc có thể do cách chọn mẫu nghiêng về nhóm lao động nam. Sự mất cân đối này cũng là yếu tố cần lưu ý trong các phân tích tiếp theo để tránh sai lệch trong đánh giá và mô hình hóa.

q4_df <- as.data.frame(q4)
names(q4_df) <- c("sex", "Tansuat")
ggplot(q4_df, aes(x = sex, y = Tansuat, fill = sex)) +
  geom_col(width = 0.6) +
  geom_text(aes(label = round(Tansuat, 3)), vjust = -0.2, size = 5) +  
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +  
  scale_fill_manual(values = c("Female" = "#9966FF", "Male" = "#4BC0C0")) +  
  labs(
    title = "Biểu đồ tỷ lệ giới tính ",
    x = "Giới tính",
    y = "Tần suất (%)"
  ) +
  theme_minimal(base_size = 14)

Biểu đồ tỷ lệ giới tính cho thấy sự mất cân đối đáng kể giữa hai nhóm trong bộ dữ liệu. Cụ thể, nam giới chiếm khoảng 66.9%, trong khi nữ giới chỉ chiếm khoảng 33.1% tổng số quan sát. Tỷ lệ này cho thấy số lượng nam giới trong tập dữ liệu gấp đôi số lượng nữ giới, phản ánh một sự thiên lệch giới rõ rệt.

Điều này có thể xuất phát từ đặc điểm của mẫu khảo sát hoặc do mục tiêu điều tra tập trung vào nhóm dân số đang trong độ tuổi lao động, mà trong nhiều ngành nghề tại thời điểm đó nam giới chiếm ưu thế. Khi đưa biến sex vào mô hình phân tích, cần chú ý đến sự lệch phân phối này để tránh hiện tượng mô hình bị học thiên lệch theo nhóm chiếm số đông (male), ảnh hưởng đến khả năng dự đoán cho nhóm nữ.

2.5 Biến education

qq <-  q[,qdt]
table(qq$education)
## 
##         10th         11th         12th      1st-4th      5th-6th      7th-8th 
##          933         1175          433          168          333          646 
##          9th   Assoc-acdm    Assoc-voc    Bachelors    Doctorate      HS-grad 
##          514         1067         1382         5355          413        10501 
##      Masters    Preschool  Prof-school Some-college 
##         1723           51          576         7291
q5 <- table(qq$education)/sum(nrow(qq))
table(qq$education)/sum(nrow(qq))
## 
##         10th         11th         12th      1st-4th      5th-6th      7th-8th 
##  0.028653911  0.036086115  0.013298117  0.005159547  0.010226959  0.019839686 
##          9th   Assoc-acdm    Assoc-voc    Bachelors    Doctorate      HS-grad 
##  0.015785756  0.032769264  0.042443414  0.164460551  0.012683886  0.322502380 
##      Masters    Preschool  Prof-school Some-college 
##  0.052916065  0.001566291  0.017689874  0.223918184

Kết quả phân tích tỷ lệ biến education cho thấy sự phân bố khá rõ ràng giữa các bậc học. Nhóm chiếm tỷ lệ cao nhất là HS-grad (tốt nghiệp trung học phổ thông) với khoảng 32.25%, tiếp theo là Some-college (đã học đại học nhưng chưa tốt nghiệp) chiếm 22.39%, và Bachelors (tốt nghiệp đại học) chiếm 16.45%.

Các nhóm có tỷ lệ thấp hơn gồm Masters (cao học) chiếm 5.29%, Assoc-voc và Assoc-acdm (trình độ cao đẳng nghề hoặc học thuật) lần lượt chiếm 4.24% và 3.28%. Các bậc học thấp như 9th, 10th, 11th, và 7th-8th đều có tỷ lệ dưới 4%. Đặc biệt, các nhóm như Preschool (mẫu giáo – 0.16%) và 1st-4th (lớp 1 đến lớp 4 – 0.52%) chiếm tỷ lệ rất nhỏ, gần như không đáng kể.

Tóm lại, phần lớn người trong bộ dữ liệu có trình độ học vấn từ trung học trở lên, trong đó gần 3/4 đã hoàn tất ít nhất chương trình phổ thông hoặc từng học đại học. Khi mô hình hóa biến education, có thể cân nhắc gộp các nhóm có tỷ lệ rất thấp để giảm nhiễu và tăng hiệu quả dự đoán.

ggplot(qq, aes(x = education)) +
  geom_bar(fill = "#FF6384", color = "black") +
  labs(x = "Trình độ học vấn ", y = "Tần suất", title = "Biểu đồ tần số trình độ học vấn") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  coord_flip()

Biểu đồ tần suất giáo dục cho thấy sự phân bố trình độ học vấn trong bộ dữ liệu có xu hướng tập trung mạnh vào một số bậc phổ biến. Trong đó, HS-grad (tốt nghiệp trung học) là nhóm chiếm tỷ lệ cao nhất với hơn 10.000 người, theo sau là Some-college (đã học đại học nhưng chưa tốt nghiệp) với khoảng 7.000 người, và Bachelors (tốt nghiệp đại học) với khoảng 5.000 người.

Các bậc học sau đại học như Masters, Doctorate, và Prof-school chiếm tỷ lệ nhỏ hơn đáng kể. Ngoài ra, một số bậc học dưới trung học như 9th, 7th-8th, hay 5th-6th cũng xuất hiện nhưng số lượng rất thấp. Nhóm có trình độ học vấn thấp nhất – Preschool – gần như không đáng kể.

Phân bố này phản ánh xu hướng học vấn phổ biến trong dân số lao động Mỹ thời điểm khảo sát, với phần lớn dân cư đạt trình độ từ trung học trở lên. Khi đưa biến education vào phân tích hoặc mô hình hóa, có thể cân nhắc gộp các nhóm có tần suất rất thấp để đảm bảo tính ổn định và giảm nhiễu trong mô hình.

Phần 3: Ước lượng Khoảng và Kiểm định Giả thuyết cho Tỷ lệ (Một biến)

Trong phần này, ta tiến hành phân tích tỷ lệ của một hạng mục cụ thể thuộc 5 biến định tính trong bộ dữ liệu: tình trạng hôn nhân (marital.status), quan hệ gia đình (relationship), chủng tộc (race), giới tính (sex), và trình độ học vấn (education). Mỗi biến sẽ được phân tích qua 2 bước: (1) ước lượng khoảng tin cậy 95% cho tỷ lệ của hạng mục quan tâm trong tổng thể, và (2) kiểm định giả thuyết thống kê cho một giả định cụ thể về tỷ lệ đó. Mức ý nghĩa là α = 0.05.

3.1 Xác định hạng mục Quan tâm

  • “Never-married” của biến marital.status

  • “Husband” của biến relationship

  • “White” của biến race

3.2 Ước lượng Khoảng Tin cậy và Kiểm định Giả thuyết của từng hạng mục

3.2.1 Hạng mục “Never-married” của biến marital.status

prop.test(sum(q$marital.status == "Never-married"), nrow(q), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  sum(q$marital.status == "Never-married") out of nrow(q), null probability 0.5
## X-squared = 3848.3, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.3229973 0.3332271
## sample estimates:
##         p 
## 0.3280919

Trong phân tích tỷ lệ nhóm người chưa từng kết hôn (hạng mục “Never-married”) thuộc biến định tính marital.status, ta tiến hành ước lượng khoảng tin cậy 95% và kiểm định giả thuyết thống kê với giả định rằng tỷ lệ người chưa từng kết hôn trong tổng thể là 50%. Kết quả từ phép kiểm định tỷ lệ một mẫu cho thấy rằng tỷ lệ mẫu của nhóm “Never-married” trong tập dữ liệu là khoảng 32.81%, với khoảng tin cậy 95% nằm trong khoảng từ 32.30% đến 33.32%. Đây là một khoảng tương đối hẹp, cho thấy độ chính xác cao của ước lượng, phần lớn nhờ vào kích thước mẫu rất lớn của bộ dữ liệu.

Kiểm định Giả thuyết

Ta đặt giả thuyết như sau:

  • H₀ (Giả thuyết không):Tỷ lệ người chưa từng kết hôn = 0.5

  • H₁ (Giả thuyết đối): Tỷ lệ người chưa từng kết hôn5 ≠ 0.5

Kiểm định giả thuyết được thực hiện với giả thuyết không H₀: tỷ lệ = 0.5 và giả thuyết đối H₁: tỷ lệ ≠ 0.5. Kết quả kiểm định trả về thống kê kiểm định X-squared = 3848.3 và p-value < 2.2e-16, cho thấy giá trị p gần như bằng 0. Với p-value nhỏ hơn rất nhiều so với mức ý nghĩa 0.05, ta bác bỏ giả thuyết H₀, nghĩa là có bằng chứng thống kê cực kỳ mạnh để khẳng định rằng tỷ lệ người chưa từng kết hôn trong dân số thực sự khác 50%, và cụ thể là thấp hơn nhiều.

Kết quả này không chỉ có ý nghĩa về mặt thống kê mà còn mang ý nghĩa thực tiễn quan trọng. Việc chỉ khoảng 1/3 dân số trong độ tuổi lao động chưa kết hôn (tính tại thời điểm điều tra) có thể phản ánh nhiều đặc điểm xã hội như độ tuổi kết hôn trung bình thấp, tỷ lệ kết hôn cao trong dân cư Mỹ giai đoạn đầu thập niên 90, hay các yếu tố kinh tế và văn hóa ảnh hưởng đến việc lập gia đình. Trong bối cảnh nghiên cứu thị trường hoặc hoạch định chính sách xã hội, kết quả này gợi ý rằng các chiến lược tiếp cận cộng đồng hoặc phân khúc người tiêu dùng nên cân nhắc đặc điểm nhân khẩu học này, thay vì giả định một phân bố cân bằng giữa người đã và chưa lập gia đình.

3.2.2 Hạng mục “Husband” của biến relationship

prop.test(sum(q$relationship == "Husband"), nrow(q), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  sum(q$relationship == "Husband") out of nrow(q), null probability 0.5
## X-squared = 1170.7, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.3998418 0.4105366
## sample estimates:
##        p 
## 0.405178

Kiểm định Giả thuyết

Ta đặt giả thuyết như sau:

  • H₀ (Giả thuyết không):Tỷ lệ người đóng vai trò là chồng trong hộ gia đình = 0.5

  • H₁ (Giả thuyết đối): Tỷ lệ người đóng vai trò là chồng trong hộ gia đình ≠ 0.5

3.2.3 Hạng mục “White” của biến race

prop.test(sum(q$race == "White"), nrow(q), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  sum(q$race == "White") out of nrow(q), null probability 0.5
## X-squared = 16345, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.8503838 0.8580793
## sample estimates:
##         p 
## 0.8542735

Phân tích tỷ lệ của nhóm người được phân loại là “White” trong biến race – một trong những biến định tính quan trọng phản ánh đặc điểm nhân khẩu học trong bộ dữ liệu. Dữ liệu cho thấy tỷ lệ mẫu của nhóm “White” chiếm khoảng 85.43% dân số, với khoảng tin cậy 95% cho tỷ lệ thực tế nằm trong khoảng từ 85.04% đến 85.81%. Đây là một khoảng tin cậy rất hẹp, phản ánh tính ổn định và độ chính xác cao của ước lượng, nhờ vào quy mô mẫu rất lớn. Khoảng này nằm hoàn toàn trên mốc 50%, cho thấy sự áp đảo của nhóm người da trắng trong bộ dữ liệu.

Kiểm định Giả thuyết

Ta đặt giả thuyết như sau:

  • H₀ (Giả thuyết không):Tỷ lệ người da trắng = 0.5

  • H₁ (Giả thuyết đối):Tỷ lệ người da trắng ≠ 0.5

Về mặt kiểm định giả thuyết, ta kiểm tra xem tỷ lệ người da trắng trong dân số có khác biệt đáng kể so với giả định trung lập là 0.5 hay không. Giả thuyết không (H₀) được đặt ra là tỷ lệ = 0.5, trong khi giả thuyết đối (H₁) là tỷ lệ ≠ 0.5. Kết quả kiểm định cho thấy thống kê kiểm định X-squared = 16,345, với p-value < 2.2e-16, tức là gần như bằng 0. Do đó, ta bác bỏ giả thuyết H₀ một cách rất chắc chắn ở mức ý nghĩa 5%. Điều này chứng tỏ có bằng chứng thống kê mạnh mẽ cho thấy tỷ lệ người “White” trong tổng thể khác biệt rõ rệt so với mức 50%, và cụ thể là cao hơn rất nhiều.

Xét về ý nghĩa thực tiễn, kết quả này phản ánh cơ cấu chủng tộc trong bộ dữ liệu dân số Mỹ năm 1994, khi nhóm người da trắng vẫn chiếm phần lớn dân cư. Việc tỷ lệ này vượt quá 85% cũng cho thấy bộ dữ liệu có thể mang đặc trưng nghiêng về nhóm đa số, và điều này cần được cân nhắc khi xây dựng mô hình dự báo hoặc khi phân tích các yếu tố liên quan đến bình đẳng chủng tộc, cơ hội kinh tế, và tiếp cận thị trường. Ngoài ra, nếu dữ liệu này được dùng để đào tạo các mô hình học máy, cần đặc biệt chú ý đến vấn đề mất cân bằng trong tập dữ liệu – vì sự chi phối của một nhóm chủng tộc có thể ảnh hưởng đến độ chính xác và công bằng của các thuật toán phân tích sau này.

Phần 4: Relative risk và Odd Ratio

Để tiếp tục phân tích mối quan hệ giữa các biến định tính, ta lựa chọn hai cặp biến có ý nghĩa thực tiễn cao để tính Relative Risk (nguy cơ tương đối) và Odds Ratio (tỷ số chênh). Hai cặp biến được chọn gồm:

  • Cặp 1: sex (giới tính: Male/Female) và income (thu nhập: >50K / <=50K) → nhằm so sánh khả năng đạt thu nhập cao giữa nam và nữ.

  • Cặp 2: marital.status (được rút gọn thành: Married-civ-spouse / Other) và income → để xem liệu tình trạng hôn nhân có ảnh hưởng đến xác suất có thu nhập trên 50.000 đô/năm.

Với mỗi cặp biến, ta tiến hành lập bảng tần suất chéo 2×2, sau đó tính tỷ số chênh (Odds Ratio) bằng hàm oddsratio() từ gói epitools, đồng thời tính nguy cơ tương đối (Relative Risk) thủ công hoặc từ cùng kết quả trả về của hàm. Kết quả sẽ giúp đánh giá xem một nhóm có khả năng (risk) hoặc cơ hội (odds) có thu nhập cao nhiều hơn nhóm còn lại hay không, và mức độ khác biệt đó có ý nghĩa thống kê hay không.

4.1 Sex (giới tính: Male/Female) và income (thu nhập: >50K / <=50K)

4.1.1 Relative risk

library(epitools)
tab1 <- table(q$sex, q$income)
riskratio(tab1)
## $data
##         
##          <=50K >50K Total
##   Female  9592 1179 10771
##   Male   15128 6662 21790
##   Total  24720 7841 32561
## 
## $measure
##         risk ratio with 95% C.I.
##          estimate    lower   upper
##   Female  1.00000       NA      NA
##   Male    2.79312 2.637145 2.95832
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   Female         NA           NA         NA
##   Male            0            0          0
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Kết quả phân tích risk ratio (tỷ lệ nguy cơ tương đối) cho cặp biến sex và income cho thấy sự khác biệt rất rõ rệt giữa nam và nữ về khả năng có thu nhập trên 50.000 đô la mỗi năm.

Cụ thể, trong tổng số 10.771 nữ giới, chỉ có 1.179 người (tương đương 10.95%) có thu nhập trên 50K, trong khi ở nam giới, có tới 6.662 trên tổng số 21.790 người (tương đương 30.57%) đạt mức thu nhập này. Khi so sánh nguy cơ có thu nhập cao giữa hai nhóm, ta thu được risk ratio (RR) = 2.79, nghĩa là nam giới có khả năng đạt thu nhập trên 50K cao gấp khoảng 2.79 lần so với nữ giới.

Khoảng tin cậy 95% cho risk ratio nằm trong khoảng [2.64; 2.96], cho thấy kết quả này rất ổn định và tin cậy. Đồng thời, giá trị p-value = 0 theo cả ba phương pháp kiểm định (mid-p exact, Fisher exact và chi-square) khẳng định sự khác biệt này là có ý nghĩa thống kê với độ tin cậy rất cao (p < 0.001).

Tóm lại, kết quả cho thấy giới tính là một yếu tố ảnh hưởng mạnh đến khả năng có thu nhập cao trong bộ dữ liệu này, với ưu thế rõ ràng nghiêng về nam giới. Phát hiện này phản ánh một thực trạng chênh lệch thu nhập theo giới trong thị trường lao động, và hoàn toàn có thể được đưa vào phân tích sâu hơn trong các mô hình dự đoán hoặc nghiên cứu chính sách.

4.1.2 Ratio odd

oddsratio(tab1)
## $data
##         
##          <=50K >50K Total
##   Female  9592 1179 10771
##   Male   15128 6662 21790
##   Total  24720 7841 32561
## 
## $measure
##         odds ratio with 95% C.I.
##          estimate    lower    upper
##   Female  1.00000       NA       NA
##   Male    3.58229 3.351369 3.832223
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   Female         NA           NA         NA
##   Male            0            0          0
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Kết quả phân tích tỷ số chênh (Odds Ratio) giữa giới tính (sex) và thu nhập (income) cho thấy sự khác biệt rõ rệt về khả năng đạt mức thu nhập cao giữa nam và nữ trong bộ dữ liệu. Dựa trên bảng tần suất, trong tổng số 10.771 nữ giới, chỉ có 1.179 người có thu nhập trên 50.000 đô/năm, trong khi con số này ở nam giới là 6.662 trên tổng số 21.790 người. Khi tính toán odds (tỷ số giữa số người có và không có thu nhập cao), odds của nữ giới là khoảng 0.123, còn ở nam giới là khoảng 0.44.

Từ đó, tỷ số chênh (Odds Ratio) được tính là 3.58, với khoảng tin cậy 95% nằm trong khoảng [3.35; 3.83]. Điều này có nghĩa là nam giới có khả năng đạt thu nhập trên 50.000 đô cao hơn nữ giới khoảng 3.58 lần, nếu xét theo tỷ lệ odds. Giá trị p-value bằng 0 theo tất cả các phương pháp kiểm định (mid-p exact, Fisher exact, chi-square), khẳng định sự khác biệt này là có ý nghĩa thống kê rất mạnh.

Kết quả này phản ánh một thực tế đáng lưu ý về chênh lệch thu nhập theo giới tính trong dữ liệu, đồng thời củng cố vai trò của giới tính như một biến giải thích quan trọng trong các mô hình phân tích và dự báo thu nhập.

4.2 marital.status (Married-civ-spouse/Others) và income (>50K/<=50K)

4.2.1 Relative risk

q$married_bin <- ifelse(q$marital.status == "Married-civ-spouse", "Married", "Not-married")

tab2 <- table(q$married_bin, q$income)

riskratio(tab2)
## $data
##              
##               <=50K >50K Total
##   Married      8284 6692 14976
##   Not-married 16436 1149 17585
##   Total       24720 7841 32561
## 
## $measure
##              risk ratio with 95% C.I.
##                estimate     lower     upper
##   Married     1.0000000        NA        NA
##   Not-married 0.1462236 0.1378912 0.1550595
## 
## $p.value
##              two-sided
##               midp.exact fisher.exact chi.square
##   Married             NA           NA         NA
##   Not-married          0            0          0
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Kết quả phân tích tỷ lệ nguy cơ tương đối (Relative Risk) giữa tình trạng hôn nhân (marital.status) và mức thu nhập (income) tiếp tục cho thấy sự khác biệt rất lớn giữa hai nhóm: đã kết hôn (Married-civ-spouse) và không kết hôn (bao gồm chưa kết hôn, ly hôn, góa, ly thân…). Sau khi mã hóa lại biến marital.status thành hai nhóm “Married” và “Not-married”, bảng tần suất 2×2 cho thấy trong số 14.976 người đã kết hôn, có tới 6.692 người (≈44.7%) có thu nhập trên 50.000 đô/năm. Trong khi đó, trong 17.585 người chưa kết hôn hoặc không còn kết hôn, chỉ có 1.149 người (≈6.53%) đạt mức thu nhập tương tự.

Khi sử dụng hàm riskratio() để tính tỷ lệ nguy cơ, nhóm “Married” được dùng làm nhóm tham chiếu với risk ratio bằng 1. Nhóm “Not-married” có risk ratio = 0.146, với khoảng tin cậy 95% nằm trong khoảng [0.138; 0.155]. Điều này có nghĩa là người không kết hôn có khả năng đạt thu nhập trên 50K thấp hơn gần 7 lần so với người đã kết hôn. Tất cả các kiểm định p-value đều bằng 0 (p < 0.001), khẳng định sự khác biệt này là có ý nghĩa thống kê cực kỳ mạnh.

Kết quả trên cho thấy tình trạng hôn nhân có mối liên hệ rõ rệt với mức thu nhập, và người đã lập gia đình trong bộ dữ liệu có xác suất đạt thu nhập cao hơn một cách đáng kể. Điều này có thể phản ánh sự ổn định trong cuộc sống, khả năng gánh vác tài chính hoặc đặc điểm nghề nghiệp của những người đã kết hôn. Vì vậy, biến marital.status hoàn toàn xứng đáng được đưa vào các mô hình dự đoán thu nhập hoặc phân tích nhân khẩu học sâu hơn.

4.2.2 Ratio odd

oddsratio(tab2)
## $data
##              
##               <=50K >50K Total
##   Married      8284 6692 14976
##   Not-married 16436 1149 17585
##   Total       24720 7841 32561
## 
## $measure
##              odds ratio with 95% C.I.
##                 estimate      lower      upper
##   Married     1.00000000         NA         NA
##   Not-married 0.08652376 0.08081946 0.09260231
## 
## $p.value
##              two-sided
##               midp.exact fisher.exact chi.square
##   Married             NA           NA         NA
##   Not-married          0            0          0
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Kết quả phân tích Odds Ratio (tỷ số chênh) giữa tình trạng hôn nhân (marital.status, rút gọn thành “Married” và “Not-married”) và thu nhập (income) cho thấy mối liên hệ rất mạnh giữa việc kết hôn và khả năng đạt thu nhập cao.

Cụ thể, trong số 14.976 người đã kết hôn, có 6.692 người có thu nhập trên 50.000 đô/năm, trong khi chỉ có 1.149 người trong tổng số 17.585 người không kết hôn đạt được mức thu nhập này. Khi xét theo odds – tức là tỷ lệ giữa số người có và không có thu nhập cao – nhóm đã kết hôn có odds là 6692 / 8284 ≈ 0.81, còn nhóm chưa kết hôn có odds là 1149 / 16436 ≈ 0.07.

Từ đó, Odds Ratio = 0.07 / 0.81 ≈ 0.0865, với khoảng tin cậy 95% là [0.081; 0.093]. Giá trị odds ratio dưới 1 thể hiện rằng người không kết hôn có khả năng đạt thu nhập trên 50K thấp hơn rất nhiều so với người đã kết hôn — cụ thể là odds chỉ bằng khoảng 8.65% so với nhóm đã kết hôn. Tất cả các kiểm định p-value đều bằng 0, cho thấy sự khác biệt này có ý nghĩa thống kê cực kỳ cao.

Tóm lại, phân tích Odds Ratio cho thấy tình trạng hôn nhân là một yếu tố có ảnh hưởng rất lớn đến khả năng đạt thu nhập cao trong bộ dữ liệu. Người đã kết hôn có odds đạt thu nhập cao vượt trội so với người không kết hôn, điều này củng cố vai trò của marital.status như một biến giải thích quan trọng trong các mô hình phân tích thu nhập cá nhân.

Phần 5: Phân tích Mối quan hệ giữa Hai biến Định tính (Bivariate Analysis)

Ta chọn 2 cặp biến định tính như sau:

  • Relationship và Income

  • Race và Marital.status

5.1 Cặp biến Relationship và Income

5.1.1 Tạo bảng tần suất chéo và tính tỷ lệ

tab11 <- table(q$relationship, q$income)
tab11
##                 
##                  <=50K >50K
##   Husband         7275 5918
##   Not-in-family   7449  856
##   Other-relative   944   37
##   Own-child       5001   67
##   Unmarried       3228  218
##   Wife             823  745

Bảng tần suất giữa biến relationship và income cho thấy sự khác biệt đáng kể về mức thu nhập theo vai trò trong hộ gia đình. Nhóm Husband có số lượng người đạt thu nhập trên 50K cao nhất với 5.918 người, chiếm tỷ lệ lớn so với các nhóm còn lại. Ngược lại, các nhóm như Own-child, Other-relative và Unmarried có số lượng người thu nhập cao rất thấp, lần lượt chỉ là 67, 37 và 218 người. Nhóm Wife có số người thu nhập >50K là 745, gần tương đương với nhóm Not-in-family (856), dù tổng số của hai nhóm chênh lệch lớn. Kết quả này cho thấy vai trò trong hộ gia đình có mối liên hệ rõ rệt với khả năng đạt thu nhập cao, đặc biệt là người giữ vai trò “Husband” thường có thu nhập vượt ngưỡng 50K nhiều hơn các nhóm khác.

# Tính tỷ lệ theo hàng
prop1 <- prop.table(tab11, margin = 1) * 100

# Hiển thị bảng
round(prop1, 2)
##                 
##                  <=50K  >50K
##   Husband        55.14 44.86
##   Not-in-family  89.69 10.31
##   Other-relative 96.23  3.77
##   Own-child      98.68  1.32
##   Unmarried      93.67  6.33
##   Wife           52.49 47.51

Bảng tỷ lệ tình trạng hôn nhân theo từng nhóm chủng tộc cho thấy sự khác biệt rõ rệt trong cấu trúc gia đình giữa các sắc tộc. Nhìn chung, nhóm White và Asian-Pac-Islander có tỷ lệ đã kết hôn sống cùng vợ/chồng (Married-civ-spouse) cao nhất, lần lượt là 48.21% và 48.89%, phản ánh xu hướng hôn nhân ổn định trong hai nhóm này. Trong khi đó, nhóm Black có tỷ lệ kết hôn thấp hơn rõ rệt (chỉ 26.79%) và lại có tỷ lệ chưa từng kết hôn (Never-married) rất cao (43.09%), cao nhất trong tất cả các nhóm.

Nhóm Amer-Indian-Eskimo nổi bật với tỷ lệ chưa từng kết hôn khá cao (33.12%) và tỷ lệ đã kết hôn ở mức trung bình (37.30%), cùng với tỷ lệ ly hôn (Divorced) cao nhất trong bảng (19.29%). Tương tự, nhóm Other (các chủng tộc khác) có tỷ lệ kết hôn và chưa kết hôn gần bằng nhau (~38%), nhưng tỷ lệ góa (Widowed) và ly thân (Separated) vẫn dưới 5%.

Đặc biệt, nhóm Black cũng có tỷ lệ ly thân (Separated) cao nhất (8.48%) và tỷ lệ góa (Widowed) lớn hơn trung bình. Trong khi đó, tỷ lệ Married-AF-spouse (kết hôn theo diện quân đội) gần như không đáng kể ở tất cả các nhóm.

Tóm lại, bảng tỷ lệ này cho thấy chủng tộc có ảnh hưởng rõ ràng đến tình trạng hôn nhân. Nhóm White và Asian-Pac-Islander thiên về hôn nhân truyền thống ổn định, trong khi nhóm Black có xu hướng chưa kết hôn hoặc đã kết thúc hôn nhân ở mức cao hơn. Những khác biệt này hoàn toàn có thể được kiểm định thêm bằng phép Chi-bình phương để xác nhận ý nghĩa thống kê.

5.1.2 Trực quan hóa

df_tab11 <- as.data.frame(tab11)
colnames(df_tab11) <- c("relationship", "income", "Freq")
ggplot(df_tab11, aes(x = relationship, y = Freq, fill = income)) +
  geom_bar(stat = "identity", position = "fill") +
  labs(title = "Tỷ lệ thu nhập theo vai trò trong hộ gia đình",
       y = "Tỷ lệ", x = "Mối quan hệ") +
  scale_y_continuous(labels = scales::percent)

Biểu đồ trên thể hiện tỷ lệ thu nhập theo vai trò trong hộ gia đình (relationship) dựa trên hai mức thu nhập: trên 50K và dưới hoặc bằng 50K. Mỗi cột biểu thị một nhóm vai trò cụ thể, với phần màu xanh thể hiện tỷ lệ người có thu nhập >50K, còn phần màu hồng là tỷ lệ người có thu nhập ≤50K.

Nhìn vào biểu đồ, có thể thấy nhóm Husband và Wife có tỷ lệ thu nhập >50K cao hơn rõ rệt so với các nhóm còn lại. Đặc biệt, Husband là nhóm duy nhất mà tỷ lệ thu nhập >50K gần như chạm ngưỡng 50%, tức là cứ hai người chồng thì có một người thu nhập trên 50.000 đô/năm. Trong khi đó, nhóm Wife cũng có tỷ lệ đáng kể nhưng thấp hơn nhóm Husband một chút.

Ngược lại, các nhóm như Own-child, Unmarried, Other-relative và Not-in-family đều có tỷ lệ người thu nhập >50K rất thấp, hầu hết chỉ ở mức 5–10%. Điều này phản ánh rằng những vai trò ngoài cặp vợ chồng truyền thống (chẳng hạn như người sống một mình, con cái hoặc họ hàng) có xu hướng thuộc nhóm thu nhập thấp nhiều hơn.

Tóm lại, biểu đồ cho thấy vai trò trong hộ gia đình có liên quan mạnh đến khả năng đạt thu nhập cao. Các vai trò trung tâm và ổn định như “Husband” và “Wife” gắn liền với tỷ lệ thu nhập cao hơn, trong khi các vai trò phụ thuộc hoặc không gắn bó như “Own-child” hoặc “Unmarried” có thu nhập thấp hơn một cách rõ rệt. Đây là cơ sở để kết luận rằng vị trí xã hội trong hộ gia đình có thể là một yếu tố quan trọng ảnh hưởng đến thu nhập cá nhân.

5.1.3 Kiểm định Thống kê (Kiểm định Chi-bình phương)

chisq.test(tab11)
## 
##  Pearson's Chi-squared test
## 
## data:  tab11
## X-squared = 6699.1, df = 5, p-value < 2.2e-16

Kết quả kiểm định Chi-bình phương cho cặp biến relationship (vai trò trong hộ gia đình) và income (thu nhập trên hoặc dưới 50.000 đô/năm) cho thấy có mối liên hệ có ý nghĩa thống kê rất mạnh giữa hai biến này. Cụ thể, giá trị thống kê Chi-bình phương đạt X² = 6699.1 với 5 bậc tự do, và giá trị p-value < 2.2e-16, tức là gần bằng 0. Với p-value nhỏ hơn 0.05 rất nhiều, ta bác bỏ giả thuyết H₀ (hai biến độc lập), và kết luận rằng vai trò trong hộ gia đình có ảnh hưởng đáng kể đến mức thu nhập của cá nhân. Kết quả này phù hợp với quan sát từ biểu đồ, trong đó nhóm “Husband” có tỷ lệ thu nhập >50K cao vượt trội so với các nhóm khác như “Own-child”, “Unmarried” hay “Other-relative”. Điều này cho thấy sự khác biệt về thu nhập giữa các vai trò trong hộ gia đình không phải là ngẫu nhiên mà thực sự có ý nghĩa thống kê.

5.2 Cặp biến Race và Marital.status

5.2.1 Tạo bảng tần suất chéo và tính tỷ lệ

tab22 <- table(q$race, q$marital.status)
tab22
##                     
##                      Divorced Married-AF-spouse Married-civ-spouse
##   Amer-Indian-Eskimo       60                 0                116
##   Asian-Pac-Islander       75                 0                508
##   Black                   485                 1                837
##   Other                    26                 0                105
##   White                  3797                22              13410
##                     
##                      Married-spouse-absent Never-married Separated Widowed
##   Amer-Indian-Eskimo                     9           103        11      12
##   Asian-Pac-Islander                    41           372        19      24
##   Black                                 62          1346       265     128
##   Other                                 15           105        13       7
##   White                                291          8757       717     822

Bảng tần suất giữa hai biến race (chủng tộc) và marital.status (tình trạng hôn nhân) cho thấy sự phân bố tình trạng hôn nhân khác nhau đáng kể giữa các nhóm chủng tộc trong bộ dữ liệu. Nhóm White chiếm số lượng áp đảo ở hầu hết các tình trạng, đặc biệt là ở nhóm đã kết hôn (Married-civ-spouse) với 13.410 người, và nhóm chưa từng kết hôn (Never-married) với 8.757 người. Trong khi đó, các nhóm thiểu số như Amer-Indian-Eskimo và Other có số lượng rất thấp ở tất cả các loại tình trạng hôn nhân.

Nhóm Black có sự phân bố khá dàn trải, nổi bật ở nhóm Never-married (1.346 người) và có số lượng ly thân (Separated) tương đối cao (265 người), cao hơn hẳn so với các nhóm chủng tộc khác. Nhóm Asian-Pac-Islander nổi bật ở tỷ lệ đã kết hôn (508 người) nhưng có số người chưa kết hôn và góa tương đối thấp.

Nhìn chung, bảng này cho thấy có sự khác biệt đáng kể về tình trạng hôn nhân giữa các nhóm chủng tộc, với người da trắng chiếm ưu thế rõ rệt về số lượng và nhóm Black có tỷ lệ cao hơn ở các tình trạng không sống cùng bạn đời (như never-married, separated, widowed). Kết quả này gợi ý mối liên hệ tiềm năng giữa chủng tộc và cấu trúc hôn nhân trong dân cư, và có thể kiểm định thống kê để xác nhận tính ý nghĩa của sự khác biệt.

prop2 <- prop.table(tab22, margin = 1) * 100

round(prop2, 2)
##                     
##                      Divorced Married-AF-spouse Married-civ-spouse
##   Amer-Indian-Eskimo    19.29              0.00              37.30
##   Asian-Pac-Islander     7.22              0.00              48.89
##   Black                 15.52              0.03              26.79
##   Other                  9.59              0.00              38.75
##   White                 13.65              0.08              48.21
##                     
##                      Married-spouse-absent Never-married Separated Widowed
##   Amer-Indian-Eskimo                  2.89         33.12      3.54    3.86
##   Asian-Pac-Islander                  3.95         35.80      1.83    2.31
##   Black                               1.98         43.09      8.48    4.10
##   Other                               5.54         38.75      4.80    2.58
##   White                               1.05         31.48      2.58    2.96

Bảng tỷ lệ phân bố tình trạng hôn nhân theo từng nhóm chủng tộc phản ánh rõ sự khác biệt về cấu trúc gia đình giữa các sắc tộc trong bộ dữ liệu. Nhóm Asian-Pac-Islander và White có tỷ lệ người đã kết hôn và sống cùng vợ/chồng (Married-civ-spouse) cao nhất, lần lượt đạt 48.89% và 48.21%, cho thấy xu hướng gắn bó hôn nhân ổn định trong hai nhóm này. Ngược lại, nhóm Black có tỷ lệ kết hôn thấp nhất (26.79%) và đồng thời lại có tỷ lệ chưa từng kết hôn (Never-married) cao nhất (43.09%), thể hiện một đặc điểm hôn nhân khác biệt rõ rệt.

Nhóm Amer-Indian-Eskimo nổi bật với tỷ lệ ly hôn (Divorced) cao nhất (19.29%), cùng với tỷ lệ chưa từng kết hôn khá cao (33.12%), cho thấy tính chất không bền vững trong hôn nhân ở một phần dân số này. Tỷ lệ ly thân (Separated) và góa (Widowed) ở các nhóm như Black và Other cũng cao hơn đáng kể so với các nhóm khác. Đáng chú ý, tỷ lệ kết hôn theo diện quân đội (Married-AF-spouse) gần như bằng 0 ở tất cả các nhóm, không có ảnh hưởng đáng kể đến cấu trúc hôn nhân tổng thể.

Tóm lại, bảng này cho thấy chủng tộc có liên hệ rõ rệt với tình trạng hôn nhân, trong đó người White và Asian-Pac-Islander thiên về hôn nhân ổn định, trong khi nhóm Black và Amer-Indian-Eskimo có tỷ lệ chưa kết hôn, ly thân hoặc ly hôn cao hơn. Những khác biệt này là cơ sở quan trọng để tiếp tục kiểm định bằng phương pháp thống kê nhằm xác định mức độ ý nghĩa trong mối quan hệ giữa hai biến định tính.

5.2.2 Trực quan hóa

df_tab22 <- as.data.frame(tab22)
colnames(df_tab22) <- c("race", "marital.status", "Freq")
ggplot(df_tab22, aes(x = race, y = Freq, fill = marital.status)) +
  geom_bar(stat = "identity", position = "fill") +
  labs(title = "Tỷ lệ thu nhập theo vai trò trong hộ gia đình",
       y = "Tỷ lệ", x = "Mối quan hệ") +
  scale_y_continuous(labels = scales::percent)

Biểu đồ thể hiện tỷ lệ các tình trạng hôn nhân theo từng nhóm chủng tộc cho thấy sự khác biệt rõ rệt về cấu trúc gia đình giữa các sắc tộc. Nhóm White và Asian-Pac-Islander có tỷ lệ người đã kết hôn và sống cùng vợ/chồng (Married-civ-spouse) cao nhất, đều chiếm gần hoặc trên 45% trong tổng số cá nhân thuộc nhóm đó. Điều này phản ánh xu hướng hôn nhân ổn định phổ biến trong hai nhóm chủng tộc này. Ngược lại, nhóm Black nổi bật với tỷ lệ Never-married (chưa từng kết hôn) cao nhất, gần một nửa dân số trong nhóm, đồng thời có tỷ lệ kết hôn thấp hơn đáng kể so với các nhóm khác. Nhóm Amer-Indian-Eskimo cũng có tỷ lệ chưa kết hôn khá cao và là nhóm có tỷ lệ Divorced (ly hôn) cao nhất, cho thấy đặc điểm hôn nhân kém bền vững hơn.

Nhóm Other có phân bố tương đối đồng đều nhưng vẫn thể hiện tỷ lệ đã kết hôn thấp hơn nhóm White. Các tình trạng như Separated, Widowed, và Married-spouse-absent xuất hiện ở tất cả các nhóm nhưng với tỷ lệ thấp, chỉ chiếm một phần nhỏ. Nhìn chung, biểu đồ cho thấy mối liên hệ đáng kể giữa chủng tộc và tình trạng hôn nhân, phản ánh sự khác biệt về văn hóa, xã hội hoặc điều kiện kinh tế giữa các nhóm dân cư. Đây là cơ sở trực quan quan trọng để tiến hành kiểm định thống kê nhằm xác định mức độ ý nghĩa của sự khác biệt này.

5.2.3 Kiểm định Thống kê (Kiểm định Chi-bình phương)

chisq.test(tab22)
## Warning in chisq.test(tab22): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  tab22
## X-squared = 923.81, df = 24, p-value < 2.2e-16

Kết quả kiểm định Chi-bình phương cho cặp biến race (chủng tộc) và marital.status (tình trạng hôn nhân) cho thấy có mối liên hệ có ý nghĩa thống kê rõ rệt giữa hai biến này. Cụ thể, giá trị thống kê Chi-bình phương đạt X² = 923.81 với 24 bậc tự do, và giá trị p-value < 2.2e-16, gần bằng 0. Với mức ý nghĩa thông thường (α = 0.05), p-value nhỏ hơn rất nhiều so với ngưỡng này nên ta bác bỏ giả thuyết H₀, tức là giả định rằng tình trạng hôn nhân và chủng tộc là độc lập với nhau.

Nói cách khác, tình trạng hôn nhân phân bố khác nhau một cách có hệ thống giữa các nhóm chủng tộc. Kết quả này hoàn toàn phù hợp với biểu đồ đã quan sát trước đó, trong đó nhóm White và Asian-Pac-Islander có tỷ lệ kết hôn cao hơn, còn nhóm Black và Amer-Indian-Eskimo có tỷ lệ chưa từng kết hôn hoặc ly hôn cao hơn. Như vậy, kiểm định Chi-bình phương đã xác nhận rằng sự khác biệt trong cấu trúc hôn nhân giữa các nhóm chủng tộc là không phải do ngẫu nhiên, mà là có ý nghĩa thống kê và phản ánh những đặc điểm xã hội cụ thể theo sắc tộc.

Phần 6:Tổng kết và Thảo luận

6.1 Tóm tắt những phát hiện chính

Phân tích dữ liệu đã cho thấy nhiều mối quan hệ đáng chú ý giữa các biến định tính trong bộ dữ liệu dân số Hoa Kỳ năm 1994. Đầu tiên, khi ước lượng khoảng tin cậy và kiểm định tỷ lệ cho từng biến riêng lẻ, chúng tôi nhận thấy rằng các biến như sex, marital.status và race đều có sự phân bố lệch đáng kể và mang tính thống kê. Cụ thể, tỷ lệ nam giới và người đã kết hôn có thu nhập trên 50.000 đô/năm cao hơn hẳn so với nữ giới hoặc người chưa kết hôn. Điều này đã được khẳng định thông qua phân tích relative risk và odds ratio, trong đó nam giới có khả năng đạt thu nhập cao gấp gần 2.8 lần nữ giới, và người đã kết hôn có nguy cơ đạt thu nhập cao vượt trội so với người chưa lập gia đình.

Phân tích mối quan hệ giữa hai biến định tính cũng cho thấy nhiều kết quả đáng chú ý. Cặp biến relationship và income cho thấy vai trò trong hộ gia đình có ảnh hưởng rõ rệt đến khả năng thu nhập cao – trong đó người đóng vai trò “Husband” có tỷ lệ thu nhập >50K cao nhất. Tương tự, cặp biến race và marital.status phản ánh sự khác biệt đáng kể về cấu trúc hôn nhân giữa các nhóm sắc tộc. Các nhóm như White và Asian-Pac-Islander thiên về hôn nhân ổn định, trong khi nhóm Black và Amer-Indian-Eskimo có tỷ lệ chưa kết hôn hoặc ly hôn cao hơn. Kết quả kiểm định Chi-bình phương cho cả hai cặp biến đều cho thấy mối liên hệ có ý nghĩa thống kê mạnh mẽ, với p-value gần bằng 0, khẳng định rằng các biến này không độc lập.

6.2 Hạn chế của phân tích

Mặc dù phân tích đã cung cấp nhiều thông tin giá trị, nhưng vẫn tồn tại một số hạn chế cần được thừa nhận. Trước tiên, đây là một bộ dữ liệu cắt ngang tại một thời điểm (năm 1994), do đó không thể rút ra được quan hệ nhân quả, mà chỉ có thể nói về sự liên hệ giữa các biến. Ví dụ, việc người đã kết hôn có thu nhập cao hơn không có nghĩa là kết hôn dẫn đến thu nhập cao – có thể ngược lại, người có thu nhập ổn định mới dễ kết hôn hơn. Các yếu tố trung gian chưa được kiểm soát như độ tuổi, ngành nghề, khu vực sinh sống hoặc số lượng người phụ thuộc cũng có thể ảnh hưởng đến các kết quả quan sát được.

Thêm vào đó, một số biến trong bộ dữ liệu có chứa giá trị “?” (biểu thị dữ liệu thiếu) nhưng lại không được mã hóa thành NA, nên không được xử lý như dữ liệu thiếu trong các phân tích. Điều này có thể làm sai lệch kết quả nếu không được xử lý trước khi xây dựng mô hình dự đoán sâu hơn. Cuối cùng, bộ dữ liệu mặc dù đủ lớn nhưng không phản ánh hoàn toàn cấu trúc dân số Hoa Kỳ hiện nay, do đã cũ và không có trọng số mẫu điều chỉnh hiện đại như trong các cuộc khảo sát dân số gần đây.

6.3 Đề xuất

Từ những phát hiện và hạn chế trên, một số đề xuất có thể được đưa ra để cải thiện chất lượng phân tích trong tương lai. Thứ nhất, nên xử lý dữ liệu thiếu một cách đầy đủ và hệ thống, bao gồm việc chuyển các dấu “?” thành NA, sau đó áp dụng phương pháp loại bỏ, thay thế hoặc nội suy phù hợp. Thứ hai, việc bổ sung các biến định lượng quan trọng như độ tuổi, số năm kinh nghiệm làm việc, ngành nghề cụ thể hoặc khu vực địa lý sẽ giúp kiểm soát tốt hơn các yếu tố gây nhiễu và cho phép xây dựng mô hình hồi quy dự báo thu nhập chính xác hơn.

Ngoài ra, việc cập nhật bộ dữ liệu với các thông tin mới hơn (ví dụ dữ liệu điều tra dân số 2010, 2020) sẽ giúp kết quả phân tích có giá trị thực tiễn cao hơn và phù hợp với bối cảnh xã hội hiện tại. Cuối cùng, cần triển khai các phân tích đa biến và mô hình hóa nâng cao (như logistic regression hoặc random forest) để kiểm tra tính độc lập tương đối giữa các yếu tố, cũng như xác định biến nào là yếu tố dự báo mạnh nhất cho thu nhập.

6.4 Câu hỏi mở/Hướng nghiên cứu tiếp theo

Một số câu hỏi thú vị có thể được đặt ra để mở rộng nghiên cứu trong tương lai. Ví dụ: “Đâu là yếu tố mạnh nhất dự báo thu nhập cá nhân: giới tính, học vấn, hay tình trạng hôn nhân?”, hoặc “Giới tính ảnh hưởng đến thu nhập có còn giữ nguyên nếu kiểm soát cùng lúc các biến như học vấn và nghề nghiệp?” Đây là những câu hỏi chỉ có thể trả lời chính xác khi áp dụng các mô hình phân tích đa biến.

Ngoài ra, một hướng đi quan trọng khác là phân tích xu hướng thay đổi theo thời gian bằng cách so sánh dữ liệu từ nhiều năm điều tra dân số. Ví dụ, so sánh dữ liệu năm 1994 với dữ liệu sau năm 2010 để xem liệu bất bình đẳng thu nhập theo giới hoặc theo tình trạng hôn nhân có thu hẹp hay không. Cuối cùng, có thể mở rộng phân tích sang khía cạnh địa lý – chẳng hạn như so sánh giữa các bang hoặc vùng miền – để xác định liệu các mối quan hệ này có giữ nguyên ở các bối cảnh kinh tế – xã hội khác nhau hay không. Đây là những bước tiếp theo cần thiết nếu muốn hiểu sâu và toàn diện hơn về cơ chế phân phối thu nhập trong xã hội.