1 BÀI VỀ NHÀ TUẦN 1

Tìm một dataset có dữ liệu định tính, dữ liệu định lượng, có trên 5 biến và nhiều hơn 300 quan sát.

1.1 Dữ liệu đầu vào

Dữ liệu thu thập được gồm 1000 quan sát có 7 biến bao gồm 4 biến định tính (gender, classify, parental level of education, test preparation course) và 3 biến định lượng (math score, reading score, writing score). Thông tin nguồn dữ liệu được lấy từ kaggle nguồn: https://www.kaggle.com/datasets/spscientist/students-performance-in-exams
- Gender: giới tính (Nam_Male/Nữ_Female)
- Classify: phân loại sinh viên theo khoa (A: Khoa tài chính ngân hàng, B: Khoa hệ thống thông tin, C: Khoa kinh tế, D: Khoa kinh tế đối ngoại)
- ploe (Parental level of education): học vấn của cha mẹ
+ Bachelor’s degree: Bằng cử nhân
+ Master’s degree: Bằng thạc sĩ
+ Associate’s degree: Bằng chương trình học liên kết
+ High school: Trung học phổ thông
+ Some high school: Chưa học hoàn thành bậc THPT
+ Some college: Chưa hoàn thành xong bậc đại học/cao đẳng
- tpc (Test preparation course): Đánh giá mức độ hoàn thành khóa luyện thi của sinh viên.
+ None: không làm bài
+ Completed: đã hoàn thành 100% bài kiểm tra
- ms (Math score), rs (reading score), ws (writing score) lần lượt là điểm toán, điểm đọc, điểm viết của sinh viên trong bài thi cuối kì.

setwd("D:/HỌC TẬP/Phân tích dữ liệu định tính")
library(xlsx)
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(data.table)
## Warning: package 'data.table' was built under R version 4.2.3
cpp <- read.xlsx("DATA.xlsx",1)
data.table(cpp)
##       gender classify               ploe       tpc ms rs ws NA.
##    1: female  group B  bachelor's degree      none 72 72 74  NA
##    2: female  group C       some college completed 69 90 88  NA
##    3: female  group B    master's degree      none 90 95 93  NA
##    4:   male  group A associate's degree      none 47 57 44  NA
##    5:   male  group C       some college      none 76 78 75  NA
##   ---                                                          
##  997:   male  group C        high school      none 62 55 55  NA
##  998: female  group C        high school completed 59 71 65  NA
##  999: female  group D       some college completed 68 78 77  NA
## 1000: female  group D       some college      none 77 86 86  NA
## 1001:   <NA>     <NA>               <NA>      <NA> NA NA NA  NA

2 BÀI VỀ NHÀ TUẦN 2

Chọn 1 hoặc 2 biến định tính và 1 biến định lượng làm biến phụ thuộc để phân tích, giải thích lý do.

2.1 Biến phụ thuộc là biến định tính

Xem biến Test preparation course là biến phụ thuộc nhằm mục đích đo lường hiệu quả khóa luyện thi thông qua các yếu tố như gender, classify, parental level of education, math score, reading score, writing score. Xác suất những người có học khóa luyện đối với nữ là bao nhiêu, đối với nam là bao nhiêu? Tỷ lệ nữ thuộc Khoa TCNH có học khóa luyện so với tỷ lệ nam Khoa TCNH có học khóa luyện? Dựa trên học vấn của cha mẹ sinh viên thuộc các khoa khác nhau thì những người có học khóa luyện chênh lệch như thế nào?

2.2 Biến phụ thuộc là biến định lượng

Xem Math score là biến phụ thuộc nhằm mục đích xem xét mối quan hệ giữa điểm toán trung bình với các biến độc lập như Test preparation course, gender, classify, parental level of education, reading score, writing score.

Giả sử Math score (Y) là biến phụ thuộc, biến độc lập định lượng reading score (X).

Biến định tính có 2 phạm trù None và Completed.

Đặt D = 1 nếu là Completed, D = 0 nếu là None.

Mô hình: \(Y = \beta_1 + \beta_2D + \beta_3X + u\)

  • Nếu là Yes (D = 1) - > \(Y = (\beta_1 + \beta_2) + \beta_3X + u\)

  • Nếu là No (D = 0) - > \(Y = \beta_1 + \beta_3X + u\)

Ý nghĩa

  • Giá trị trung bình của Y là \(\beta_1\) (đơn vị) khi \(X = 0\) và biến định tính là None.

  • X không đổi, giá trị trung bình của Y khi biến định tính là Completed cao hơn giá trị trung bình của Y khi biến định tính là None \(\beta_2\) (đơn vị).

  • Khi X tăng 1 đơn vị thì giá trị trung bình của Y tăng \(\beta_3\) (đơn vị) trong cả 2 trường hợp biến định tính là Completed hoặc None.

3 BÀI VỀ NHÀ TUẦN 3

Làm thống kê mô tả để phân tích cho ít nhất 5 biến (vừa định tính định lượng và có 2 biến đã chọn ở câu 2), nhận xét về kết quả phân tích này.

3.1 Thống kê mô tả cho 1 biến

3.1.1 Biến giới tính (Gender)

table(cpp$gender)/sum(table(cpp$gender))
## 
## female   male 
##  0.518  0.482
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
cpp |> ggplot(aes(x = gender, y = after_stat(count))) +
  geom_bar(fill = 'pink') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  theme_classic() +
  labs(x = 'Giới tính', y = 'Số người')

Nhận xét: Trong tổng số 1000 người khảo sát thì có 51.8% người giới tính nữ và 48.2% người giới tính nam.

3.1.2 Biến phân loại (Classify)

table(cpp$classify)/sum(table(cpp$classify))
## 
## group A group B group C group D group E 
##   0.089   0.190   0.319   0.262   0.140
library(ggplot2)
cpp |> ggplot(aes(x = classify, y = after_stat(count))) +
  geom_bar(fill = 'pink') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  theme_classic() +
  labs(x = 'Phân loại', y = 'Số người')

Nhận xét: Trong tổng số 1000 người khảo sát thì có 8.9% người thuộc group A, 19% người thuộc group B, 31.9% người thuộc group C, 26.2% người thuộc group D và 14% người thuộc group E.

3.1.3 Biến Parental level of education

table(cpp$ploe)/sum(table(cpp$ploe))
## 
## 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
library(ggplot2)
cpp |> ggplot(aes(x = ploe, y = after_stat(count))) +
  geom_bar(fill = 'pink') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  theme_classic() +
  labs(x = 'Phân loại', y = 'Số người')

Nhận xét: Trong tổng số 1000 người khảo sát thì có 22.2% cha mẹ sinh viên có , 19% người thuộc group B, 31.9% người thuộc group C, 26.2% người thuộc group D và 14% người thuộc group E.*

  • 22.2% cha mẹ sinh viên có Bằng chương trình học liên kết (Associate’s degree)

  • 11.8% cha mẹ sinh viên có Bằng cử nhân (Bachelor’s degree)

  • 19.6% cha mẹ sinh viên đã học Trung học phổ thông (High school)

  • 5.9% cha mẹ sinh viên có Bằng thạc sĩ (Master’s degree)

  • 22.6% cha mẹ sinh viên chưa hoàn thành xong bậc đại học/cao đẳng (Some college)

  • 17.9% cha mẹ sinh viên chưa học hoàn thành bậc THPT (Some high school)

3.1.4 Biến Test preparation course

table(cpp$tpc)/sum(table(cpp$tpc))
## 
## completed      none 
##     0.358     0.642
library(ggplot2)
cpp |> ggplot(aes(x = tpc, y = after_stat(count))) +
  geom_bar(fill = 'pink') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  theme_classic() +
  labs(x = 'Hoàn thành khóa luyện', y = 'Số người')

Nhận xét: Trong tổng số 1000 người khảo sát thì có 64% người đã hoàn thành khóa luyện và 34% người chưa hoàn thành khóa luyện.

3.1.5 Biến Math Score

summary(cpp$ms)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   57.00   66.00   66.09   77.00  100.00       1

Điểm toán nhỏ nhất là 0; lớn nhất là 100; điểm toán trung bình là 66.09; 25% dữ liệu nhỏ hơn 57 điểm (giá trị tứ phân vị thứ nhất); 50% dữ liệu nhỏ hơn 66 điểm (giá trị trung vị); 75% dữ liệu nhỏ hơn 77 (giá trị tứ phân vị thứ ba).

math <- cut(cpp$ms, breaks= c(0 , 50 , 100), labels= c('khongdat', 'dat'))
table(math)
## math
## khongdat      dat 
##      149      850
table(math)/sum(table(math))
## math
##  khongdat       dat 
## 0.1491491 0.8508509
library(ggplot2)
d <- data.frame(math)
d |> ggplot(aes(x = math, y = after_stat(count))) +
  geom_bar(fill = 'pink') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  theme_classic() +
  labs(x = 'Điểm toán', y = 'Số người')

pie(table(math), col = rainbow(2), main = "Biểu đồ điểm toán")

Nhận xét: Trong tổng số 1000 người khảo sát thì có 15% người không đạt (có điểm toán thấp hơn 50), 85% người đạt (điểm toán trên 50).

3.2 Thống kê mô tả cho 2 biến

3.2.1 Bảng tần số

ph <- table(cpp$gender, cpp$tpc)
ph <- prop.table(ph)
addmargins(ph)
##         
##          completed  none   Sum
##   female     0.184 0.334 0.518
##   male       0.174 0.308 0.482
##   Sum        0.358 0.642 1.000
cpp |> ggplot(aes(x = tpc, y = after_stat(count))) +
  geom_bar(fill = 'pink') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  facet_grid(. ~ gender) +
 # theme_classic() +
  labs(x = 'Hoàn thành khóa luyện', y = 'Số người')

Nhận xét: Trong tổng số 1000 người khảo sát được

51.8% người thuộc giới tính nữ, trong đó:

  • 18.4% người đã hoàn thành khóa luyện

  • 33.4% người chưa hoàn thành khóa luyện

48.2% người thuộc giới tính nam, trong đó:

  • 17.4% người đã hoàn thành khóa luyện

  • 30.8% người chưa hoàn thành khóa luyện

3.2.2 Rủi ro tương đối (Relative Risk/Risk Ratio)

library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
## 
## Attaching package: 'DescTools'
## The following object is masked from 'package:data.table':
## 
##     %like%
ph <- table(cpp$gender, cpp$tpc)
addmargins(ph)
##         
##          completed none  Sum
##   female       184  334  518
##   male         174  308  482
##   Sum          358  642 1000
RelRisk(ph)
## [1] 0.9839791

Tỷ lệ người nữ hoàn thành khóa luyện thấp hơn gần 0.98 lần tỷ lệ người nam đã hoàn thành khóa luyện. Hay nói cách khác tỷ lệ người nam hoàn thành khóa luyện thấp cao hơn gấp 1.02 lần (1/0.9839791) tỷ lệ người nữ đã hoàn thành khóa luyện.

ph <- table(cpp$gender, cpp$tpc)
library(epitools)
riskratio(ph, rev = 'c')
## $data
##         
##          none completed Total
##   female  334       184   518
##   male    308       174   482
##   Total   642       358  1000
## 
## $measure
##         risk ratio with 95% C.I.
##          estimate     lower    upper
##   female 1.000000        NA       NA
##   male   1.016282 0.8608038 1.199842
## 
## $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"

Tỷ lệ người nam hoàn thành khóa luyện thấp cao hơn gấp 1.02 lần tỷ lệ người nữ đã hoàn thành khóa luyện.

3.2.3 Tỷ lệ chênh (Odd Ratio)

ph <- table(cpp$gender, cpp$tpc)
ph
##         
##          completed none
##   female       184  334
##   male         174  308
OddsRatio(ph)
## [1] 0.9751531

Tỷ lệ người đã hoàn thành khóa học so với người chưa hoàn thành khóa học mà là nữ thấp hơn gần 0.98 lần tỷ lệ người đã hoàn thành khóa học so với người tài chính chưa hoàn thành khóa học mà là nam. Hay nói cách khác tỷ lệ người đã hoàn thành khóa học so với người chưa hoàn thành khóa học mà là nam cao hơn gần 1.03 lần tỷ lệ người đã hoàn thành khóa học so với người chưa hoàn thành khóa học mà là nữ.

ph <- table(cpp$gender, cpp$tpc)
ph
##         
##          completed none
##   female       184  334
##   male         174  308
oddsratio(ph, rev = 'r')
## $data
##         
##          completed none Total
##   male         174  308   482
##   female       184  334   518
##   Total        358  642  1000
## 
## $measure
##         odds ratio with 95% C.I.
##          estimate    lower    upper
##   male   1.000000       NA       NA
##   female 1.025472 0.791399 1.328618
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   male           NA           NA         NA
##   female  0.8489948    0.8949914  0.8488229
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Tỷ lệ người đã hoàn thành khóa học so với người chưa hoàn thành khóa học mà là nam cao hơn gần 1.03 lần tỷ lệ người đã hoàn thành khóa học so với người chưa hoàn thành khóa học mà là nữ.