d <- read.csv("D:\\Downloads\\StudentsPerformance.csv", header = T)

1 Tổng quan về bộ dữ liệu

str(d)
## 'data.frame':    1000 obs. of  8 variables:
##  $ gender                     : chr  "female" "female" "female" "male" ...
##  $ race.ethnicity             : chr  "group B" "group C" "group B" "group A" ...
##  $ parental.level.of.education: chr  "bachelor's degree" "some college" "master's degree" "associate's degree" ...
##  $ lunch                      : chr  "standard" "standard" "standard" "free/reduced" ...
##  $ test.preparation.course    : chr  "none" "completed" "none" "none" ...
##  $ math.score                 : int  72 69 90 47 76 71 88 40 64 38 ...
##  $ reading.score              : int  72 90 95 57 78 83 95 43 64 60 ...
##  $ writing.score              : int  74 88 93 44 75 78 92 39 67 50 ...

Bộ dữ liệu Student Performance in Exams là một tập dữ liệu giáo dục phổ biến, được đăng tải trên nền tảng Kaggle, ghi lại thông tin cá nhân cơ bản và kết quả học tập của học sinh trung học trong ba môn thi quan trọng: Toán (Math), Đọc hiểu (Reading) và Viết (Writing). Bộ dữ liệu này bao gồm 1000 học sinh và 8 biến đặc trưng (5 biến định tính và 3 biến định lượng), phản ánh tổng hợp các yếu tố liên quan đến học tập và điều kiện xã hội của từng học sinh.

Ý nghĩa các biến

  • gender: Giới tính của học sinh, gồm hai giá trị: male (nam) và female (nữ).

  • race/ethnicity: Nhóm dân tộc/xã hội của học sinh, được phân loại từ group A đến group E. Việc phân nhóm này tạo điều kiện cho việc phân tích xu hướng học tập giữa các nhóm xã hội khác nhau và đánh giá sự công bằng trong tiếp cận giáo dục.

  • Trình độ học vấn cao nhất của cha mẹ học sinh. Các giá trị gồm: some high school, high school, some college, associate’s degree, bachelor’s degree, master’s degree, Đây là yếu tố quan trọng phản ánh môi trường giáo dục gia đình và ảnh hưởng tiềm năng đến kết quả học tập của học sinh.

  • lunch: cho biết học sinh nhận được loại bữa trưa nào – standard (tiêu chuẩn) hoặc free/reduced (miễn/giảm giá). Đây là chỉ báo gián tiếp về tình trạng kinh tế xã hội của học sinh, giúp phân tích ảnh hưởng của điều kiện sống đến thành tích học tập.

  • test preparation course: ghi nhận học sinh có hoàn thành khóa luyện thi trước kỳ kiểm tra hay không (completed hoặc none). Đây là biến có thể phản ánh mức độ sẵn sàng và nỗ lực học tập, đồng thời cho phép đánh giá hiệu quả của các chương trình hỗ trợ học tập.

  • math score: điểm số môn Toán của học sinh, đánh giá năng lực tính toán và tư duy logic.

  • reading score: điểm đọc hiểu của học sinh, phản ánh khả năng tiếp nhận, phân tích và diễn giải thông tin văn bản.

  • writing score: điểm viết của học sinh, đánh giá trình độ ngôn ngữ, khả năng biểu đạt tư duy và sự phát triển toàn diện về mặt ngôn ngữ học thuật.

2 Thống kê mô tả cho một biến định tính

2.1 Biến gender

Thống kê tần suất

table(d$gender)
## 
## female   male 
##    518    482
table(d$gender)/length(d$gender)
## 
## female   male 
##  0.518  0.482

Trực quan hóa

gender_count <- d %>%
  count(gender) %>%
  mutate(prop = n / sum(n),
         label = paste0(gender, " (", scales::percent(prop)))

gender_percent <- gender_count %>%
  mutate(Percentage = round(prop * 100, 2))

ggplot(gender_percent, aes(x = "", y = Percentage, fill = gender)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(Percentage, "%")), position = position_stack(vjust = 0.5)) +
  labs(title = "Tỷ lệ học sinh theo giới tính") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

Nhận xét

Tỷ lệ học sinh nam (51.8%) và nữ (48.2%) gần như cân bằng, cho thấy sự phân bố khá đồng đều giữa hai giới tính trong tông số học sinh.

2.2 Biến race/ethnicity

Thống kê tần suất

table(d$race.ethnicity)
## 
## group A group B group C group D group E 
##      89     190     319     262     140
table(d$race.ethnicity)/length(d$race.ethnicity)
## 
## group A group B group C group D group E 
##   0.089   0.190   0.319   0.262   0.140

Trực quan hóa

ethnicity_count <- d %>%
  count(race.ethnicity) %>%
  mutate(prop = n / sum(n),
         label = paste0(race.ethnicity, " (", scales::percent(prop)))

ethnicity_percent <- ethnicity_count %>%
  mutate(Percentage = round(prop * 100, 2))

ggplot(ethnicity_percent, aes(x = "", y = Percentage, fill = race.ethnicity)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5),
            size = 3) +  
  labs(title = "Tỷ lệ học sinh theo nhóm dân tộc") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

Nhận xét

Tỷ lệ học sinh phân bố không đồng đều theo nhóm dân tộc, trong đó nhóm C chiếm tỷ lệ cao nhất (31.9%), tiếp theo là nhóm D (26.2%) và nhóm B (19%), trong khi nhóm E (14%) và nhóm A (8.9%) có tỷ lệ thấp hơn đáng kể. Sự chênh lệch này cho thấy đa số học sinh tập trung vào ba nhóm chính (C, D, B), chiếm tổng 77.1%, trong khi nhóm A là thiểu số rõ rệt (<10%)

2.3 Biến parental level of education

Thống kê tần suất

table(d$parental.level.of.education)
## 
## associate's degree  bachelor's degree        high school    master's degree 
##                222                118                196                 59 
##       some college   some high school 
##                226                179
table(d$parental.level.of.education)/length(d$parental.level.of.education)
## 
## associate's degree  bachelor's degree        high school    master's degree 
##              0.222              0.118              0.196              0.059 
##       some college   some high school 
##              0.226              0.179

Trực quan hóa

education_count <- d %>%
  count(parental.level.of.education) %>%
  mutate(prop = n / sum(n),
         label = paste0(parental.level.of.education, " (", scales::percent(prop)))

education_percent <- education_count %>%
  mutate(Percentage = round(prop * 100, 2))

# Tạo palette màu pastel
pastel_colors <- c("#FFD1DC", "#FFECB8", "#B5EAD7", "#C7CEEA", "#E2F0CB", "#FFDAC1")

ggplot(education_percent, aes(x = "", y = Percentage, fill = parental.level.of.education)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5),
            size = 3, color = "gray30") +  # Màu chữ tối hơn để dễ đọc
  scale_fill_manual(values = pastel_colors) +  # Áp dụng màu pastel
  labs(title = "Tỷ lệ học sinh theo trình độ học vấn của phụ huynh",
       fill = "parental level of education") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        legend.position = "right",
        legend.title = element_text(face = "bold"))

Nhận xét

Nhóm phụ huynh chưa tốt nghiệp đại học có tỷ lệ cao nhất (22.6%), tiếp theo đó là nhóm có bằng cao đẳng (22.2%). Tiếp theo là các phụ huynh tốt nghiệp trung học phổ thông (19.6%) và chưa hoàn thành chương trình trung học phổ thống (17.9%). Trong khi đó, tỷ lệ phụ huynh có bằng đại học chỉ chiếm 11.8% và thấp nhất là nhóm phụ huynh có bằng thạc sĩ (5.9%).

2.4 Biến lunch

Thống kê tần suất

table(d$lunch)
## 
## free/reduced     standard 
##          355          645
table(d$lunch)/length(d$lunch)
## 
## free/reduced     standard 
##        0.355        0.645

Trực quan hóa

# Xử lý dữ liệu
lunch_count <- d %>%
  count(lunch) %>%
  mutate(prop = n / sum(n),
         label = paste0(lunch, " (", scales::percent(prop)))

lunch_percent <- lunch_count %>%
  mutate(Percentage = round(prop * 100, 2))

# Màu pastel
pastel_colors <- c("#B5EAD7", "#FFDAC1") # Xanh pastel nhạt và cam pastel nhạt

# Vẽ biểu đồ
ggplot(lunch_percent, aes(x = "", y = Percentage, fill = lunch)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5),
            size = 4, color = "gray30", fontface = "bold") +
  scale_fill_manual(values = pastel_colors,
                   labels = c("free/reduced", "standard")) + 
  labs(title = "Tỷ lệ học sinh theo loại bữa trưa được nhận",
       fill = "lunch") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
        legend.position = "right",
        legend.title = element_text(face = "bold"))

Nhận xét

Kết quả từ biểu đồ cho thấy 64.5% học sinh sử dụng bữa trưa tiêu chuẩn (standard), trong khi 35.5% thuộc diện được miễn/giảm giá (free/reduced).

2.5 Biến test preparation course

Thống kê tần suất

table(d$test.preparation.course)
## 
## completed      none 
##       358       642
table(d$test.preparation.course)/length(d$test.preparation.course)
## 
## completed      none 
##     0.358     0.642

Trực quan hóa

test_prep_count <- d %>%
  count(test.preparation.course) %>%
  mutate(prop = n / sum(n),
         label = paste0(test.preparation.course, " (", scales::percent(prop)))

test_prep_percent <- test_prep_count %>%
  mutate(Percentage = round(prop * 100, 2))

ggplot(test_prep_percent, aes(x = "", y = Percentage, fill = test.preparation.course)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(Percentage, "%")), position = position_stack(vjust = 0.5)) +
  labs(title = "Tỷ lệ học sinh theo việc hoàn thành khóa học luyện thi") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

Nhận xét

Kết quả từ biểu đồ cho thấy chỉ 35.8% học sinh đã hoàn thành khóa học luyện thi, trong khi 64.2% học sinh chưa hoàn thành.

3 Phân tích mối quan hệ giữa hai biến định tính

3.1 Biến gender và test prepration course

Bảng tần suất chéo

table(d$gender,d$test.preparation.course)
##         
##          completed none
##   female       184  334
##   male         174  308
prop.table(table(d$gender,d$test.preparation.course), margin = 1)
##         
##          completed      none
##   female 0.3552124 0.6447876
##   male   0.3609959 0.6390041

Trực quan hóa

df_gender_prep <- d %>%
  count(gender, test.preparation.course) %>%
  group_by(gender) %>%
  mutate(Percent = n / sum(n) * 100)

ggplot(df_gender_prep, aes(x = gender, y = Percent, fill = test.preparation.course)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.5) +
  geom_text(aes(label = paste0(round(Percent, 1), "%")), 
            position = position_dodge(width = 0.7), 
            vjust = -0.5, size = 3.5) +
  labs(title = "Tỷ lệ học sinh hoàn thành khóa luyện thi theo giới tính",
       x = "Giới tính",
       y = "Tỷ lệ phần trăm",
       fill = "test preparation course", ) +
  scale_fill_manual(values = c("#66C2A5", "#FC8D62"),
                   labels = c("completed", "none")) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    legend.position = "right",
    axis.text = element_text(size = 11),
    panel.grid.major.x = element_blank()
  )

Nhận xét mô tả

Tỷ lệ học sinh nữ hoàn thành khóa học luyện thi là 35.5%, trong khi ở ở học sinh nam là 36.1%. Sự chênh lệch về tỷ lệ hoàn thành khóa học giữa nam và nữ là rất nhỏ, chỉ khoảng 0.6%, sư khác biệt này là không đáng kể và có thể coi như không có sự phân biệt về giới tính trong việc hoàn thành khóa học luyện thi.

Kiểm định thống kê

\[ \left\{ \begin{array}{ll} H_0: & \text{Giới tình và việc hoàn thành khóa học luyện thi là độc lập với nhau} \\\\ H_1: & \text{Giới tình và việc hoàn thành khóa học luyện thi có môi liên quan với nhau.} \ \end{array} \right. \]

chisq.test(table(d$gender,d$test.preparation.course))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(d$gender, d$test.preparation.course)
## X-squared = 0.015529, df = 1, p-value = 0.9008
  • Giá trị thống kê Chi-bình phương: 0.015529

  • Bậc tự do (df): 1

  • Giá trị p: 0.9008

Nhận xét: Vì p_value > 5% nên chưa đủ điều cơ sở bác bỏ H0, hay với mức ý nghĩa 5% thì giới tính và việc hoàn thành khóa học luyện thi của học sinh là độc lập với nhau.

3.2 Biến race/ethnicity và test prepration course

Bảng tần suất chéo

table(d$race.ethnicity,d$test.preparation.course)
##          
##           completed none
##   group A        31   58
##   group B        68  122
##   group C       117  202
##   group D        82  180
##   group E        60   80
prop.table(table(d$race.ethnicity,d$test.preparation.course), margin = 1)
##          
##           completed      none
##   group A 0.3483146 0.6516854
##   group B 0.3578947 0.6421053
##   group C 0.3667712 0.6332288
##   group D 0.3129771 0.6870229
##   group E 0.4285714 0.5714286

Trực quan hóa

df_race_prep <- d %>%
  count(race.ethnicity, test.preparation.course) %>%
  group_by(race.ethnicity) %>%
  mutate(Percent = n / sum(n) * 100)

ggplot(df_race_prep, aes(x = race.ethnicity, y = Percent, fill = test.preparation.course)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.5) +
  geom_text(aes(label = paste0(round(Percent, 1), "%")), 
            position = position_dodge(width = 0.7), 
            vjust = -0.5, size = 3.5) +
  labs(title = "TỶ LỆ HOÀN THÀNH KHÓA LUYỆN THI THEO NHÓM DÂN TỘC",
       x = "Nhóm dân tộc",
       y = "Tỷ lệ phần trăm",
       fill = "test prepration course") +
  scale_fill_manual(values = c("#4E79A7", "gray"),
                   labels = c("completed", "none")) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    legend.position = "top",
    axis.text = element_text(size = 11),
    panel.grid.major.x = element_blank(),
    axis.text.x = element_text(hjust = 0.5)
  )

Nhận xét mô tả

Nhóm E có tỷ lệ học sinh hoàn thành khóa học cao nhất (42.9%), trong khi nhóm D có tỷ lệ thấp nhất (31.3%), tạo ra chênh lệch lên tới 11.6%. Các nhóm A, B và C có tỷ lệ tương đối đồng đều, dao động từ 34.8% đến 36.7%. Đặc biệt, nhóm E nổi bật với tỷ lệ hoàn thành vượt trội hơn hẳn so với các nhóm còn lại. Kết quả này cho thấy yếu tố dân tộc có ảnh hưởng rõ rệt hơn nhiều so với yếu tố giới tính trong việc tham gia khóa luyện thi, đặc biệt thể hiện qua khoảng cách lớn giữa nhóm D và E.

Kiểm định thống kê

\[ \left\{ \begin{array}{ll} H_0: & \text{Nhóm dân tộc và việc hoàn thành khóa học luyện thi là độc lập với nhau} \\\\ H_1: & \text{Nhóm dân tộc và việc hoàn thành khóa học luyện thi có môi liên quan với nhau.} \ \end{array} \right. \]

chisq.test(table(d$race.ethnicity,d$test.preparation.course))
## 
##  Pearson's Chi-squared test
## 
## data:  table(d$race.ethnicity, d$test.preparation.course)
## X-squared = 5.4875, df = 4, p-value = 0.2408
  • Giá trị thống kê Chi-bình phương: 5.4875

  • Bậc tự do (df): 4

  • Giá trị p: 0.2408

Nhận xét: Vì p_value > 5% nên chưa đủ điều cơ sở bác bỏ H0, hay với mức ý nghĩa 5% thì nhóm dân tộc và việc hoàn thành khóa học luyện thi của học sinh là độc lập với nhau.

3.3 Biến parental level of education và test prepration course

Bảng tần suất chéo

table(d$parental.level.of.education,d$test.preparation.course)
##                     
##                      completed none
##   associate's degree        82  140
##   bachelor's degree         46   72
##   high school               56  140
##   master's degree           20   39
##   some college              77  149
##   some high school          77  102
prop.table(table(d$parental.level.of.education,d$test.preparation.course), margin = 1)
##                     
##                      completed      none
##   associate's degree 0.3693694 0.6306306
##   bachelor's degree  0.3898305 0.6101695
##   high school        0.2857143 0.7142857
##   master's degree    0.3389831 0.6610169
##   some college       0.3407080 0.6592920
##   some high school   0.4301676 0.5698324

Trực quan hóa

df_edu_prep <- d %>%
  count(parental.level.of.education, test.preparation.course) %>%
  group_by(parental.level.of.education) %>%
  mutate(Percent = n / sum(n) * 100)

ggplot(df_edu_prep, aes(x = parental.level.of.education, y = Percent, fill = test.preparation.course)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.5) +
  geom_text(aes(label = paste0(round(Percent, 1), "%")), 
            position = position_dodge(width = 0.7), 
            vjust = -0.2, size = 3) +
  labs(title = "Tỷ lệ hoàn thành khóa luyện thi theo trình độ học vấn phụ huynh",
       x = "Trình độ học vấn phụ huynh",
       y = "Tỷ lệ phần trăm",
       fill = "Khóa luyện thi") +
  scale_fill_manual(values = c("lightblue", "lightgreen"),
                   labels = c("Đã hoàn thành", "Chưa hoàn thành")) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    legend.position = "top",
    axis.text = element_text(size = 11),
    panel.grid.major.x = element_blank(),
    axis.text.x = element_text(hjust = 0.5, size = 7) 
  )

Nhận xét mô tả

Nhóm học sinh có bố mẹ chưa tốt nghiệp THPT (some high school) có tỷ lệ hoàn thành luyện thi cao nhất (43.0%), tiếp theo là nhóm có bố mẹ tốt nghiệp đại học (39.0%). Ngược lại, nhóm phụ huynh tốt nghiệp THPT có tỷ lệ con hoàn thành luyện thi thấp nhất (28.6%), thấp hơn cả nhóm phụ huynh có bằng thạc sĩ (33.9%)

Kiểm định thống kê

\[ \left\{ \begin{array}{ll} H_0: & \text{Trình độ học vấn của bố mẹ và việc hoàn thành khóa học luyện thi là độc lập với nhau} \\\\ H_1: & \text{Trình độ học vấn của bố mẹ và việc hoàn thành khóa học luyện thi có môi liên quan với nhau.} \ \end{array} \right. \]

chisq.test(table(d$parental.level.of.education,d$test.preparation.course))
## 
##  Pearson's Chi-squared test
## 
## data:  table(d$parental.level.of.education, d$test.preparation.course)
## X-squared = 9.5441, df = 5, p-value = 0.08923
  • Giá trị thống kê Chi-bình phương: 9.5441

  • Bậc tự do (df): 5

  • Giá trị p: 0.08923

Nhận xét: Vì p_value < 0.1 nên có thể bác bỏ H0 ở mức ý nghĩa 10%, hay trình độ học vấn của phụ huynh và việc hoàn thành khóa học luyện thi của học sinh có mối liên quan với nhau.

3.4 Biến gender và lunch

Bảng tần suất chéo

table(d$gender,d$lunch)
##         
##          free/reduced standard
##   female          189      329
##   male            166      316
prop.table(table(d$gender,d$lunch), margin = 1)
##         
##          free/reduced  standard
##   female    0.3648649 0.6351351
##   male      0.3443983 0.6556017

Trực quan hóa

# Chuẩn bị dữ liệu
df_gender_lunch <- d %>%
  count(gender, lunch) %>%
  group_by(gender) %>%
  mutate(Percent = n / sum(n) * 100)

# Vẽ biểu đồ
ggplot(df_gender_lunch, aes(x = gender, y = Percent, fill = lunch)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.5) +
  geom_text(aes(label = paste0(round(Percent, 1), "%")), 
            position = position_dodge(width = 0.7), 
            vjust = -0.5, size = 3) +
  labs(title = "TỶ LỆ LOẠI BỮA TRƯA THEO GIỚI TÍNH",
       x = "Giới tính",
       y = "Tỷ lệ phần trăm",
       fill = "Loại bữa trưa") +
  scale_fill_manual(values = c("#4E79A7", "#F28E2B"),
                   labels = c("free/reduced", "standard")) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    legend.position = "right",
    axis.text = element_text(size = 11),
    panel.grid.major.x = element_blank(),
    axis.text.x = element_text(hjust = 0.5)  # Căn giữa nhãn trục x
  )

Nhận xét mô tả

Ở cả nam và nữ, tỷ lệ học sinh sử dụng bữa trưa tiêu chuẩn (standard) đều chiếm tỷ lệ cao hơn so với bữa trưa được miễn phí/giảm giá (free/reduced), cụ thể nữ sinh có 63.5% và nam sinh có 65.6% sử dụng bữa trưa tiêu chuẩn. Tuy nhiên, khi xem xét tỷ lệ bữa trưa miễn phí/giảm giá, nữ sinh có tỷ lệ cao hơn (36.5%) so với nam sinh (34.4%), với chênh lệch khoảng 2.1 phần trăm.

Kiểm định thống kê

\[ \left\{ \begin{array}{ll} H_0: & \text{Giới tính và loại bữa trưa được nhận là độc lập với nhau} \\\\ H_1: & \text{Giới tính và loại bữa trưa được nhận có môi liên quan với nhau.} \ \end{array} \right. \]

chisq.test(table(d$gender,d$lunch))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(d$gender, d$lunch)
## X-squared = 0.37174, df = 1, p-value = 0.5421
  • Giá trị thống kê Chi-bình phương: 0.37174

  • Bậc tự do (df): 1

  • Giá trị p: 0.5421

Nhận xét: Vì p_value > 5% nên chưa đủ điều cơ sở bác bỏ H0, hay với mức ý nghĩa 5% thì giới tính và loại bữa trưa được hưởng của học sinh là độc lập với nhau.

3.5 Biến race/ethnicity và lunch

Bảng tần suất chéo

table(d$race.ethnicity,d$lunch)
##          
##           free/reduced standard
##   group A           36       53
##   group B           69      121
##   group C          114      205
##   group D           95      167
##   group E           41       99
prop.table(table(d$race.ethnicity,d$lunch), margin = 1)
##          
##           free/reduced  standard
##   group A    0.4044944 0.5955056
##   group B    0.3631579 0.6368421
##   group C    0.3573668 0.6426332
##   group D    0.3625954 0.6374046
##   group E    0.2928571 0.7071429

Trực quan hóa

df_race_lunch <- d %>%
  count(race.ethnicity, lunch) %>%
  group_by(race.ethnicity) %>%
  mutate(Percent = n / sum(n) * 100)

ggplot(df_race_lunch, aes(x = race.ethnicity, y = Percent, fill = lunch)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.5) +
  geom_text(aes(label = paste0(round(Percent, 1), "%")), 
            position = position_dodge(width = 0.7), 
            vjust = -0.5, size = 3) +
  labs(title = "Tỷ lệ loại bữa trưa được nhận theo nhóm dân tộc",
       x = "Nhóm dân tộc",
       y = "Tỷ lệ phần trăm",
       fill = "lunch") +
  scale_fill_manual(values = c("#4E79A7", "#F28E2B"),
                   labels = c("free/reduced", "standard")) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    legend.position = "right",
    axis.text = element_text(size = 11),
    panel.grid.major.x = element_blank(),
    axis.text.x = element_text( hjust = 1) 
  )

Nhận xét mô tả

Nhóm A có tỷ lệ học sinh được hỗ trợ bữa trưa cao nhất (40.4%), tiếp theo là các nhóm B (36.3%), C (35.7%) và D (36.3%), trong khi nhóm E có tỷ lệ thấp nhất (29.3%). Khoảng cách 11.1% giữa nhóm A và E phản ánh sự khác biệt rõ rệt về điều kiện kinh tế-xã hội giữa các nhóm dân tộc.

Kiểm định thống kê

\[ \left\{ \begin{array}{ll} H_0: & \text{Nhóm dân tộc và loại bữa trưa được nhận là độc lập với nhau} \\\\ H_1: & \text{Nhóm dân tộc và loại bữa trưa được nhận có môi liên quan với nhau.} \ \end{array} \right. \]

chisq.test(table(d$race.ethnicity,d$lunch))
## 
##  Pearson's Chi-squared test
## 
## data:  table(d$race.ethnicity, d$lunch)
## X-squared = 3.4424, df = 4, p-value = 0.4867
  • Giá trị thống kê Chi-bình phương: 3.4424

  • Bậc tự do (df): 4

  • Giá trị p: 0.4867

Nhận xét: Vì p_value > 5% nên chưa đủ điều cơ sở bác bỏ H0, hay với mức ý nghĩa 5% thì nhóm dân tộc và loại bữa trưa được hưởng của học sinh là độc lập với nhau.

3.6 Biến parental level of education và lunch

Bảng tần suất chéo

table(d$parental.level.of.education,d$lunch)
##                     
##                      free/reduced standard
##   associate's degree           77      145
##   bachelor's degree            44       74
##   high school                  70      126
##   master's degree              24       35
##   some college                 79      147
##   some high school             61      118
prop.table(table(d$parental.level.of.education,d$lunch), margin = 1)
##                     
##                      free/reduced  standard
##   associate's degree    0.3468468 0.6531532
##   bachelor's degree     0.3728814 0.6271186
##   high school           0.3571429 0.6428571
##   master's degree       0.4067797 0.5932203
##   some college          0.3495575 0.6504425
##   some high school      0.3407821 0.6592179

Trực quan hóa

df_edu_lunch <- d %>%
  count(parental.level.of.education, lunch) %>%
  group_by(parental.level.of.education) %>%
  mutate(Percent = n / sum(n) * 100)

ggplot(df_edu_lunch, aes(x = parental.level.of.education, y = Percent, fill = lunch)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.5) +
  geom_text(aes(label = paste0(round(Percent, 1), "%")), 
            position = position_dodge(width = 0.7), 
            vjust = -0.5, size = 3) +
  labs(title = "Tỷ lệ loại bữa trưa được nhận theo trình độ học vấn của phụ huynh",
       x = "Trình độ học vấn phụ huynh",
       y = "Tỷ lệ phần trăm",
       fill = "lunch") +
  scale_fill_manual(values = c("pink", "purple"), 
                   labels = c("free/reduced", "standard")) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    legend.position = "top",
    axis.text = element_text(size = 11),
    panel.grid.major.x = element_blank(),
    axis.text.x = element_text(hjust = 0.5, size = 7)  
  )

Nhận xét mô tả

Nhóm học sinh có bố mẹ thuộc trình độ thạc sĩ có tỷ lệ nhận bữa trưa miễn phí/giảm giá cao nhất (40.7%), trong khi nhóm phụ huynh chưa tốt nghiệp THPT lại có tỷ lệ thấp nhất (34.1%). Các nhóm trung gian như cử nhân (37.3%), cao đẳng (34.7%) và chưa tốt nghiệp đại học (35.0%) có tỷ lệ dao động thấp (34-37%).

4 Relative Risk và Odds Ratio

4.1 Biến gender và lunch

Bảng 2x2

standard free/reduced
male 316 166
female 329 189

Relative Risk

riskratio(table(d$gender,d$lunch))
## $data
##         
##          free/reduced standard Total
##   female          189      329   518
##   male            166      316   482
##   Total           355      645  1000
## 
## $measure
##         risk ratio with 95% C.I.
##          estimate     lower    upper
##   female 1.000000        NA       NA
##   male   1.032224 0.9415842 1.131589
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   female         NA           NA         NA
##   male     0.500191    0.5090345  0.4991476
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Kết quả Relative Risk = 1.032224 > 1 cho thấy học sinh nam có tỷ lệ nhận bữa trưa tiêu chuẩn cao hơn học sinh nữ.

Odds Ratio

oddsratio(table(d$gender,d$lunch))
## $data
##         
##          free/reduced standard Total
##   female          189      329   518
##   male            166      316   482
##   Total           355      645  1000
## 
## $measure
##         odds ratio with 95% C.I.
##          estimate     lower    upper
##   female 1.000000        NA       NA
##   male   1.093412 0.8435212 1.418074
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   female         NA           NA         NA
##   male     0.500191    0.5090345  0.4991476
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Kết quả Odds Ratio = 1.093412 > 1 cho thấy ở học sinh nam có tỷ lệ chênh lệch giữa việc nhận bữa trưa tiêu chuẩn và được miễn/giảm giá lớn hơn so với ở học sinh nữ.

4.2 Biến race/ethnicity và lunch

Bảng tần số

free/reduced standard
Group A 36 53
Group B 69 121
Group C 114 205
Group D 95 167
Group E 41 99

Relative Risk

riskratio(table(d$race.ethnicity,d$lunch), rev = "columns")
## $data
##          
##           standard free/reduced Total
##   group A       53           36    89
##   group B      121           69   190
##   group C      205          114   319
##   group D      167           95   262
##   group E       99           41   140
##   Total        645          355  1000
## 
## $measure
##          risk ratio with 95% C.I.
##            estimate     lower    upper
##   group A 1.0000000        NA       NA
##   group B 0.8978070 0.6554439 1.229789
##   group C 0.8834901 0.6598354 1.182954
##   group D 0.8964165 0.6648371 1.208661
##   group E 0.7240079 0.5049831 1.038030
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   group A         NA           NA         NA
##   group B 0.50895017    0.5106425 0.50652382
##   group C 0.41733512    0.4561760 0.41487598
##   group D 0.48212012    0.5264362 0.48013680
##   group E 0.08529035    0.0870459 0.08131868
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
  • Group A và Group B: Kết quả Relative Risk = 0.8978070 < 1 cho thấy học sinh thuộc group B có tỷ lệ được sử dụng bữa trưa được miễn phí/giảm giá thấp hơn học sinh thuộc group A.

  • Group A và Group C: Kết quả Relative Risk = 0.8834901 < 1 cho thấy học sinh thuộc group C có tỷ lệ được sử dụng bữa trưa được miễn phí/giảm giá thấp hơn học sinh thuộc group A.

  • Group A và Group D: Kết quả Relative Risk = 0.8964165 < 1 cho thấy học sinh thuộc group D có tỷ lệ được sử dụng bữa trưa được miễn phí/giảm giá thấp hơn học sinh thuộc group A.

  • Group A và Group E: Kết quả Relative Risk = 0.7240079 < 1 cho thấy học sinh thuộc group E có tỷ lệ được sử dụng bữa trưa được miễn phí/giảm giá thấp hơn học sinh thuộc group A.

Odds Ratio

oddsratio(table(d$race.ethnicity,d$lunch), rev = "columns")
## $data
##          
##           standard free/reduced Total
##   group A       53           36    89
##   group B      121           69   190
##   group C      205          114   319
##   group D      167           95   262
##   group E       99           41   140
##   Total        645          355  1000
## 
## $measure
##          odds ratio with 95% C.I.
##            estimate     lower    upper
##   group A 1.0000000        NA       NA
##   group B 0.8395338 0.5008656 1.414639
##   group C 0.8183174 0.5063671 1.332872
##   group D 0.8372005 0.5120179 1.378609
##   group E 0.6111527 0.3483420 1.071053
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   group A         NA           NA         NA
##   group B 0.50895017    0.5106425 0.50652382
##   group C 0.41733512    0.4561760 0.41487598
##   group D 0.48212012    0.5264362 0.48013680
##   group E 0.08529035    0.0870459 0.08131868
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
  • Group A và Group B: Kết quả Odds Ratio = 0.8395338 < 1 cho thấy học sinh thuộc group B có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa tiêu chuẩn và được miễn phí/giảm giá thấp hơn so với ở học sinh thuộc group A.

  • Group A và Group C: Kết quả Odds Ratio = 0.8183174 < 1 cho thấy học sinh thuộc group C có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa tiêu chuẩn và được miễn phí/giảm giá thấp hơn so với ở học sinh thuộc group A.

  • Group A và Group D: Kết quả Odds Ratio = 0.8372005 < 1 cho thấy học sinh thuộc group D có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa tiêu chuẩn và được miễn phí/giảm giá thấp hơn so với ở học sinh thuộc group A.

  • Group A và Group E: Kết quả Odds Ratio = 0.6111527 < 1 cho thấy học sinh thuộc group E có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa tiêu chuẩn và được miễn phí/giảm giá thấp hơn so với ở học sinh thuộc group A.

4.3 Biến parental level of education và lunch

Bảng tần số

Parental Education free/reduced standard
associate’s degree 77 145
bachelor’s degree 44 74
high school 70 126
master’s degree 24 35
some college 79 147
some high school 61 118

**Relative Risk

riskratio(table(d$parental.level.of.education,d$lunch), rev = "columns")
## $data
##                     
##                      standard free/reduced Total
##   associate's degree      145           77   222
##   bachelor's degree        74           44   118
##   high school             126           70   196
##   master's degree          35           24    59
##   some college            147           79   226
##   some high school        118           61   179
##   Total                   645          355  1000
## 
## $measure
##                     risk ratio with 95% C.I.
##                       estimate     lower    upper
##   associate's degree 1.0000000        NA       NA
##   bachelor's degree  1.0750605 0.7999946 1.444704
##   high school        1.0296846 0.7935375 1.336106
##   master's degree    1.1727933 0.8205879 1.676169
##   some college       1.0078152 0.7822199 1.298473
##   some high school   0.9825147 0.7483745 1.289909
## 
## $p.value
##                     two-sided
##                      midp.exact fisher.exact chi.square
##   associate's degree         NA           NA         NA
##   bachelor's degree   0.6337500    0.6362114  0.6331484
##   high school         0.8263542    0.8379990  0.8258729
##   master's degree     0.3980412    0.4459016  0.3937962
##   some college        0.9523034    1.0000000  0.9519856
##   some high school    0.9003757    0.9161508  0.8988790
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
  • Nhóm associate’s degree và bachelor’s degree: Kết quả Relative Risk = 1.0750605 > 1 cho thấy học sinh có bố mẹ tốt nghiệp đại học có tỷ lệ sử dụng bữa trưa được miễn phí/giảm giá cao hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và high school: Kết quả Relative Risk = 1.0750605 > 1 cho thấy học sinh có bố mẹ tốt nghiệp đại học có tỷ lệ sử dụng bữa trưa được miễn phí/giảm giá cao hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và master’s degree : Kết quả Relative Risk = 1.1727933 > 1 cho thấy học sinh có bố mẹ là thạc sĩ có tỷ lệ sử dụng bữa trưa được miễn phí/giảm giá cao hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

Nhóm associate’s degree và some college: Kết quả Relative Risk = 1.0078152 > 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp đại học có tỷ lệ sử dụng bữa trưa được miễn phí/giảm giá cao hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và some high school: Kết quả Relative Risk = 0.9825147 < 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp THPT có tỷ lệ sử dụng bữa trưa được miễn phí/giảm giá thấp hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

Odds Ratio

oddsratio(table(d$parental.level.of.education,d$lunch), rev = "columns")
## $data
##                     
##                      standard free/reduced Total
##   associate's degree      145           77   222
##   bachelor's degree        74           44   118
##   high school             126           70   196
##   master's degree          35           24    59
##   some college            147           79   226
##   some high school        118           61   179
##   Total                   645          355  1000
## 
## $measure
##                     odds ratio with 95% C.I.
##                       estimate     lower    upper
##   associate's degree 1.0000000        NA       NA
##   bachelor's degree  1.1200185 0.7008304 1.781050
##   high school        1.0461450 0.6986693 1.565513
##   master's degree    1.2919533 0.7095881 2.324571
##   some college       1.0119842 0.6852771 1.494602
##   some high school   0.9738233 0.6416994 1.474534
## 
## $p.value
##                     two-sided
##                      midp.exact fisher.exact chi.square
##   associate's degree         NA           NA         NA
##   bachelor's degree   0.6337500    0.6362114  0.6331484
##   high school         0.8263542    0.8379990  0.8258729
##   master's degree     0.3980412    0.4459016  0.3937962
##   some college        0.9523034    1.0000000  0.9519856
##   some high school    0.9003757    0.9161508  0.8988790
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
  • Nhóm associate’s degree và bachelor’s degree: Kết quả Odds Ratio = 1.1200185 > 1 cho thấy học sinh có bố mẹ tốt nghiệp đại học có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa được miễn phí/giảm giá và bữa trưa tiêu chuẩn cao hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và high school : Kết quả Odds Ratio = 1.0461450 > 1 cho thấy học sinh có bố mẹ tốt nghiệp THPT có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa được miễn phí/giảm giá và bữa trưa tiêu chuẩn cao hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và master’s degree: Kết quả Odds Ratio = 1.2919533 > 1 cho thấy học sinh có bố mẹ tốt nghiệp thạc sĩ có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa được miễn phí/giảm giá và bữa trưa tiêu chuẩn cao hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và some college: Kết quả Odds Ratio = 1.0119842 > 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp đại học có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa được miễn phí/giảm giá và bữa trưa tiêu chuẩn cao hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và some high school: Kết quả Odds Ratio = 0.9738233 < 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp THPT có tỷ lệ chênh lệch giữa việc sử dụng bữa trưa được miễn phí/giảm giá và bữa trưa tiêu chuẩn cao hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

4.4 Biến gender và test preparation course

Bảng 2x2

none completed
male 308 174
female 334 184

Relative Risk

riskratio(table(d$gender,d$test.preparation.course))
## $data
##         
##          completed none Total
##   female       184  334   518
##   male         174  308   482
##   Total        358  642  1000
## 
## $measure
##         risk ratio with 95% C.I.
##           estimate     lower   upper
##   female 1.0000000        NA      NA
##   male   0.9910304 0.9033178 1.08726
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   female         NA           NA         NA
##   male    0.8489948    0.8949914  0.8488229
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Kết quả Relative Risk = 0.9910304 < 1 cho thấy học sinh nam có tỷ lệ hoàn thành khóa luyện thi thấp hơn học sinh nữ.

Odds Ratio

oddsratio(table(d$gender,d$test.preparation.course))
## $data
##         
##          completed none Total
##   female       184  334   518
##   male         174  308   482
##   Total        358  642  1000
## 
## $measure
##         odds ratio with 95% C.I.
##           estimate    lower    upper
##   female 1.0000000       NA       NA
##   male   0.9751644 0.752662 1.263585
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   female         NA           NA         NA
##   male    0.8489948    0.8949914  0.8488229
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Kết quả Odds Ratio = 0.9751644 < 1 cho thấy ở học sinh nam có tỷ lệ chênh lệch giữa việc hoàn thành khóa luyện thi so với chưa hoàn thành thấp hơn so với ở học sinh nữ.

4.5 Biến race/ethnicity và test preparation course

Bảng tần số

Group completed none
group A 31 58
group B 68 122
group C 117 202
group D 82 180
group E 60 80

Relative Risk

riskratio(table(d$race.ethnicity,d$test.preparation.course), rev = "columns")
## $data
##          
##           none completed Total
##   group A   58        31    89
##   group B  122        68   190
##   group C  202       117   319
##   group D  180        82   262
##   group E   80        60   140
##   Total    642       358  1000
## 
## $measure
##          risk ratio with 95% C.I.
##            estimate     lower    upper
##   group A 1.0000000        NA       NA
##   group B 1.0275042 0.7298160 1.446618
##   group C 1.0529882 0.7656490 1.448162
##   group D 0.8985472 0.6420800 1.257455
##   group E 1.2304147 0.8735418 1.733083
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   group A         NA           NA         NA
##   group B  0.8808500    0.8941196  0.8761273
##   group C  0.7551422    0.8037060  0.7487987
##   group D  0.5381062    0.5996354  0.5375886
##   group E  0.2303646    0.2681430  0.2263718
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
  • Group A và Group B: Kết quả Relative Risk = 1.0275042 > 1 cho thấy học sinh thuộc group B có tỷ lệ hoàn thành khóa luyện thi cao hơn học sinh thuộc group A.

  • Group A và Group C: Kết quả Relative Risk = 1.0529882 > 1 cho thấy học sinh thuộc group C có tỷ lệ hoàn thành khóa luyện thi cao hơn học sinh thuộc group A.

  • Group A và Group D: Kết quả Relative Risk = 0.8985472 < 1 cho thấy học sinh thuộc group D có tỷ lệ hoàn thành khóa luyện thi thấp hơn học sinh thuộc group A.

  • Group A và Group E: Kết quả Relative Risk = 1.2304147 > 1 cho thấy học sinh thuộc group E có tỷ lệ hoàn thành khóa luyện thi cao hơn học sinh thuộc group A.

Odds Ratio

oddsratio(table(d$race.ethnicity,d$test.preparation.course), rev = "columns")
## $data
##          
##           none completed Total
##   group A   58        31    89
##   group B  122        68   190
##   group C  202       117   319
##   group D  180        82   262
##   group E   80        60   140
##   Total    642       358  1000
## 
## $measure
##          odds ratio with 95% C.I.
##            estimate     lower    upper
##   group A 1.0000000        NA       NA
##   group B 1.0412755 0.6159123 1.779620
##   group C 1.0815043 0.6641176 1.786929
##   group D 0.8514331 0.5137525 1.428517
##   group E 1.3993573 0.8091637 2.445344
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   group A         NA           NA         NA
##   group B  0.8808500    0.8941196  0.8761273
##   group C  0.7551422    0.8037060  0.7487987
##   group D  0.5381062    0.5996354  0.5375886
##   group E  0.2303646    0.2681430  0.2263718
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
  • Group A và Group B: Kết quả Odds Ratio = 1.0412755 > 1 cho thấy học sinh thuộc group B có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi cao hơn so với ở học sinh thuộc group A.

  • Group A và Group C: Kết quả Odds Ratio = 1.0815043 > 1 cho thấy học sinh thuộc group C có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi cao hơn so với ở học sinh thuộc group A.

  • Group A và Group D: Kết quả Odds Ratio = 0.8514331 < 1 cho thấy học sinh thuộc group D có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi thấp hơn so với ở học sinh thuộc group A.

  • Group A và Group E: Kết quả Odds Ratio = 1.3993573 > 1 cho thấy học sinh thuộc group E có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi cao hơn so với ở học sinh thuộc group A.

4.6 Biến parental level of education và test preparation course

Bảng tần số

parental level of education completed none
associate’s degree 82 140
bachelor’s degree 46 72
high school 56 140
master’s degree 20 39
some college 77 149
some high school 77 102

Relative Risk

riskratio(table(d$parental.level.of.education,d$test.preparation.course), rev = "columns")
## $data
##                     
##                      none completed Total
##   associate's degree  140        82   222
##   bachelor's degree    72        46   118
##   high school         140        56   196
##   master's degree      39        20    59
##   some college        149        77   226
##   some high school    102        77   179
##   Total               642       358  1000
## 
## $measure
##                     risk ratio with 95% C.I.
##                       estimate     lower    upper
##   associate's degree 1.0000000        NA       NA
##   bachelor's degree  1.0553948 0.7946865 1.401632
##   high school        0.7735192 0.5844657 1.023725
##   master's degree    0.9177346 0.6178829 1.363101
##   some college       0.9224045 0.7184632 1.184236
##   some high school   1.1646001 0.9153991 1.481642
## 
## $p.value
##                     two-sided
##                      midp.exact fisher.exact chi.square
##   associate's degree         NA           NA         NA
##   bachelor's degree  0.71098203   0.72548618 0.71086655
##   high school        0.07059509   0.07681572 0.06953045
##   master's degree    0.67473538   0.76112062 0.66615805
##   some college       0.52818816   0.55425349 0.52614708
##   some high school   0.21849266   0.21997583 0.21599174
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
  • Nhóm associate’s degree và bachelor’s degree: Kết quả Relative Risk = 1.0553948 > 1 cho thấy học sinh có bố mẹ tốt nghiệp đại học có tỷ lệ hoàn thành khóa luyện thi cao hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và high school: Kết quả Relative Risk = 0.77351925 < 1 cho thấy học sinh có bố mẹ tốt nghiệp đại học có tỷ lệ hoàn thành khóa luyện thấp hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và master’s degree : Kết quả Relative Risk = 0.9177346 < 1 cho thấy học sinh có bố mẹ là thạc sĩ có tỷ lệ hoàn thành khóa luyện thi thấp hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

Nhóm associate’s degree và some college: Kết quả Relative Risk = 0.9224045 < 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp đại học có tỷ lệ hoàn thành khóa luyện thi thấp học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và some high school: Kết quả Relative Risk = 1.1646001 > 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp THPT có tỷ lệ hoàn thành khóa luyện thi cao hơn học sinh có bố mẹ tốt nghiệp cao đẳng.

Odds Ratio

oddsratio(table(d$parental.level.of.education,d$test.preparation.course), rev = "columns")
## $data
##                     
##                      none completed Total
##   associate's degree  140        82   222
##   bachelor's degree    72        46   118
##   high school         140        56   196
##   master's degree      39        20    59
##   some college        149        77   226
##   some high school    102        77   179
##   Total               642       358  1000
## 
## $measure
##                     odds ratio with 95% C.I.
##                       estimate     lower    upper
##   associate's degree 1.0000000        NA       NA
##   bachelor's degree  1.0911007 0.6862746 1.727109
##   high school        0.6839835 0.4509330 1.032301
##   master's degree    0.8785886 0.4717374 1.596723
##   some college       0.8826225 0.5983340 1.300950
##   some high school   1.2879119 0.8606380 1.928671
## 
## $p.value
##                     two-sided
##                      midp.exact fisher.exact chi.square
##   associate's degree         NA           NA         NA
##   bachelor's degree  0.71098203   0.72548618 0.71086655
##   high school        0.07059509   0.07681572 0.06953045
##   master's degree    0.67473538   0.76112062 0.66615805
##   some college       0.52818816   0.55425349 0.52614708
##   some high school   0.21849266   0.21997583 0.21599174
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
  • Nhóm associate’s degree và bachelor’s degree: Kết quả Odds Ratio = 1.0911007 > 1 cho thấy học sinh có bố mẹ tốt nghiệp đại học có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi cao hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và high school : Kết quả Odds Ratio = 0.6839835 < 1 cho thấy học sinh có bố mẹ tốt nghiệp THPT có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi thấp hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và master’s degree: Kết quả Odds Ratio = 0.8785886 < 1 cho thấy học sinh có bố mẹ tốt nghiệp thạc sĩ có tỷ lệ chênh lệch giữa việc hoàn thành và chua hoàn thành khóa luyện thi thấp hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và some college: Kết quả Odds Ratio = 0.8826225 < 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp đại học có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi thấp hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

  • Nhóm associate’s degree và some high school: Kết quả Odds Ratio = 1.2879119 > 1 cho thấy học sinh có bố mẹ chưa tốt nghiệp THPT có tỷ lệ chênh lệch giữa việc hoàn thành và chưa hoàn thành khóa luyện thi cao hơn so với ở học sinh có bố mẹ tốt nghiệp cao đẳng.

5 Ước lượng khoảng và kiểm định giả thuyết thống kê

5.1 Biến gender

Ước lượng khoảng tin cậy 95%

d_gender_m <- sum(d$gender == "male")
prop.test(d_gender_m, length(d$gender), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_gender_m out of length(d$gender), null probability 0.5
## X-squared = 1.225, df = 1, p-value = 0.2684
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4506615 0.5134785
## sample estimates:
##     p 
## 0.482

Với mức tin cậy 95%, tỷ lệ số học sinh nam nằm trong khoảng từ 45.07% đến 51.35%.

Bài toán kiểm định

\[ \left\{ \begin{array}{ll} H_0: & \text{Tỷ lệ số học sinh nam trong tổng số học sinh là 55% } \\\\ H_1: & \text{Tỷ lệ số học sinh nam trong tổng số học sinh khác 55%.} \ \end{array} \right. \]

prop.test(d_gender_m,length(d$gender), p = 0.55, alternative = "two.sided", conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_gender_m out of length(d$gender), null probability 0.55
## X-squared = 18.409, df = 1, p-value = 1.782e-05
## alternative hypothesis: true p is not equal to 0.55
## 95 percent confidence interval:
##  0.4506615 0.5134785
## sample estimates:
##     p 
## 0.482

Kết quả kiểm định cho thấy p_value < 0.05, ta bác bỏ giả thuyết H₀ hay với mức ý nghĩa 5%, tỷ lệ số học sinh nam trong tổng số học sinh là khác 55%.

5.2 Biến race/ethnicity

Ước lượng khoảng tin cậy 95%

d_groupA <- sum(d$race.ethnicity == "group A")
prop.test(d_groupA, length(d$race.ethnicity), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_groupA out of length(d$race.ethnicity), null probability 0.5
## X-squared = 674.04, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.07243454 0.10879965
## sample estimates:
##     p 
## 0.089

Với mức tin cậy 95%, tỷ lệ số học sinh thuộc nhóm group A nằm trong khoảng từ 7.24% đến 10.88%.

Bài toán kiểm định

\[ \left\{ \begin{array}{ll} H_0: & \text{Tỷ lệ số học sinh thuộc group A trong tổng số học sinh là 10%. } \\\\ H_1: & \text{Tỷ lệ số học sinh thuộc group A trong tổng số học sinh khác 10%.} \ \end{array} \right. \]

prop.test(d_groupA,length(d$race.ethnicity), p = 0.1, alternative = "two.sided", conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_groupA out of length(d$race.ethnicity), null probability 0.1
## X-squared = 1.225, df = 1, p-value = 0.2684
## alternative hypothesis: true p is not equal to 0.1
## 95 percent confidence interval:
##  0.07243454 0.10879965
## sample estimates:
##     p 
## 0.089

Kết quả kiểm định cho thấy p_value > 0.05, chưa đủ cơ sở thống kê bác bỏ giả thuyết H₀ hay với mức ý nghĩa 5%, tỷ lệ số học sinh thuộc group A trong tổng số học sinh là 10%.

5.3 Biến parental level of education

Ước lượng khoảng tin cậy 95%

d_bachelor <- sum(d$parental.level.of.education == "bachelor's degree")
prop.test(d_bachelor, length(d$parental.level.of.education), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_bachelor out of length(d$parental.level.of.education), null probability 0.5
## X-squared = 582.17, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.09898992 0.14000650
## sample estimates:
##     p 
## 0.118

Với mức tin cậy 95%, tỷ lệ số học sinh có bố mẹ tốt nghiệp đại học nằm trong khoảng từ 9.9% đến 14%.

Bài toán kiểm định

\[ \left\{ \begin{array}{ll} H_0: & \text{Tỷ lệ số học sinh có bố mẹ tốt nghiệp đại học trong tổng số học sinh ít nhất 15%. } \\\\ H_1: & \text{Tỷ lệ số học sinh có bố mẹ tốt nghiệp đại học trong tổng số học sinh nhỏ hơn 15%.} \ \end{array} \right. \]

prop.test(d_bachelor,length(d$parental.level.of.education), p = 0.15, alternative = "less", conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_bachelor out of length(d$parental.level.of.education), null probability 0.15
## X-squared = 7.7824, df = 1, p-value = 0.002638
## alternative hypothesis: true p is less than 0.15
## 95 percent confidence interval:
##  0.0000000 0.1363494
## sample estimates:
##     p 
## 0.118

Kết quả kiểm định cho thấy p_value < 0.05, ta bác bỏ giả thuyết H₀ hay với mức ý nghĩa 5%, tỷ lệ số học sinh có bố mẹ tốt nghiệp đại học trong tổng số học sinh nhỏ hơn 15%.

5.4 Biến lunch

Ước lượng khoảng tin cậy 95%

d_lunch_standard <- sum(d$lunch == "standard")
prop.test(d_lunch_standard, length(d$lunch), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_lunch_standard out of length(d$lunch), null probability 0.5
## X-squared = 83.521, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.6143313 0.6745403
## sample estimates:
##     p 
## 0.645

Với mức tin cậy 95%, tỷ lệ số học sinh sử dụng bữa trưa tiêu chuẩn nằm trong khoảng từ 61.43% đến 67.45%.

Bài toán kiểm định

\[ \left\{ \begin{array}{ll} H_0: & \text{Tỷ lệ số học sinh thuộc sử dụng bữa trưa tiêu chuẩn trong tổng số học sinh không vượt quá 60%. } \\\\ H_1: & \text{Tỷ lệ số học sinh thuộc sử dụng bữa trưa tiêu chuẩn trong tổng số học sinh lớn hơn 60%.} \ \end{array} \right. \]

prop.test(d_lunch_standard,length(d$lunch), p = 0.15, alternative = "greater", conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_lunch_standard out of length(d$lunch), null probability 0.15
## X-squared = 1917.9, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is greater than 0.15
## 95 percent confidence interval:
##  0.619243 1.000000
## sample estimates:
##     p 
## 0.645

Kết quả kiểm định cho thấy p_value < 0.05, ta bác bỏ giả thuyết H₀ hay với mức ý nghĩa 5%, tỷ lệ số học sinh sử dụng bữa trưa tiêu chuẩn trong tổng số học sinh lớn 60%.

5.5 Biến test preparation course

Ước lượng khoảng tin cậy 95%

d_completed <- sum(d$test.preparation.course == "completed")
prop.test(d_completed, length(d$test.preparation.course), conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_completed out of length(d$test.preparation.course), null probability 0.5
## X-squared = 80.089, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.3283927 0.3887124
## sample estimates:
##     p 
## 0.358

Với mức tin cậy 95%, tỷ lệ số học sinh đã hoàn thành khóa luyện thi nằm trong khoảng từ 32.84% đến 38.87%.

Bài toán kiểm định

\[ \left\{ \begin{array}{ll} H_0: & \text{Tỷ lệ số học sinh thoàn thành khóa luyện thi trong tổng số học sinh không vượt quá 40%. } \\\\ H_1: & \text{Tỷ lệ số học sinh thoàn thành khóa luyện thi trong tổng số học sinh lớn hơn 40%.} \ \end{array} \right. \]

prop.test(d_completed,length(d$test.preparation.course), p = 0.4, alternative = "greater", conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  d_completed out of length(d$test.preparation.course), null probability 0.4
## X-squared = 7.176, df = 1, p-value = 0.9963
## alternative hypothesis: true p is greater than 0.4
## 95 percent confidence interval:
##  0.3329864 1.0000000
## sample estimates:
##     p 
## 0.358

Kết quả kiểm định cho thấy p_value > 0.05, chưa đủ cơ sở thống kê bác bỏ giả thuyết H₀ hay với mức ý nghĩa 5%, tỷ lệ số học sinh hoàn thành khóa luyện thi trong tổng số học sinh không vượt quá 40%.