• Package: AER - Dataset: PSID1982

  • Mô tả dữ liệu Đây là dữ khảo sát 595 người ở Hoa Kỳ năm 1982 nghiên cứu về các yếu tố tác động đến động lực tạo ra thu nhập của người tham gia khảo sát.

Số quan sát: 595 Số biến: 12

  • Dữ liệu có chứa
  • experience: số năm làm việc toàn thời gian
  • weeks: số tuần làm việc
  • occupation: hình thức lao động? Gồm có 2 biểu hiện white (nhân viên văn phòng) và blue (lao động tay chân)
  • industry: có làm việc trong ngành sản xuất không?
  • south: có cư trú ở miền Nam không?
  • smsa: có cư trú trong khu vực thống kê tiêu chuẩn không? (khu vực thống kê tiêu chuẩn là khu vực đô thị hóa với thành phố trung tâm có ít nhất 50,000 cư dân và dân số khu vực là 100,000 dân)
  • married: bạn đã kết hôn chưa? Gồm có 2 biểu hiện là no (chưa có gia đình) và yes (đã có gia đình)
  • gender: giới tính? Gồm có 2 biểu hiện là female (nữ) và male (nam).
  • union: Tiền lương của bạn có phải do hợp đồng công đoàn quy định không?
  • educations: số năm đi học?
  • ethnicity: dân tộc? Gồm 2 biểu hiện là afam (người Mỹ gốc Phi) và other (khác)
  • wage: lương

1 Tuần 6

1.1 Tìm hiểu 10 indicator của world bank

1.1.1 Indicator ‘3.2_PRI.STUDENTS’

wdi <- WDIsearch('school|education')
wdi1 <- WDI( indicator = '3.2_PRI.STUDENTS')
wdi1 <- na.omit(wdi1)
datatable(wdi1)
aa <- wdi1[wdi1$year == '2005',]
aa
##        country iso2c iso3c year 3.2_PRI.STUDENTS
## 188   Ethiopia   ETH       2005         15340788
## 242      Ghana   GHA       2005          2929536
## 548 Mozambique   MOZ       2005          4009095
## 782    Vietnam   VNM       2005          7773484

Indicator 3.2_PRI.STUDENTS cho biết số học sinh tiểu học ở các quốc gia ở các năm.

Trong năm 2005 Ethiopia có 15.340.788 học sinh tiểu học. Ghana có 2.929.536 học sinh tiểu học. Mozambique có 4.009.095 học sinh tiểu học và Việt Nam có 7.773.484 học sinh tiểu học.

1.1.2 Indicator 2.0.hoi.FPS

wdi2 <- WDI( indicator='2.0.hoi.FPS')
wdi2 <- na.omit(wdi2)
datatable(wdi2)
a <- wdi2[wdi2$country == 'Brazil',]
a
##    country iso2c iso3c year 2.0.hoi.FPS
## 46  Brazil   BRA       2014    65.12629
## 48  Brazil   BRA       2012    61.69641
## 60  Brazil   BRA       2000    45.89270

Indicator 2.0.hoi.FPS cho biết tỷ lệ học sinh tốt nghiệp tiểu học ở các quốc gia qua các năm.

Tỷ lệ học sinh tốt nghiệp tiểu học ở Bazil năm 2000 là 45,9%.

Tỷ lệ học sinh tốt nghiệp tiểu học ở Bazil năm 2012 là 65,13%.

Tỷ lệ học sinh tốt nghiệp tiểu học ở Bazil năm 2014 là 65,13%.

1.1.3 Indicator 3.3_PRI.TEACHER

wdi3 <- WDI( indicator ='3.3_PRI.TEACHERS')
wdi3 <- na.omit(wdi3)
wdi03 <- WDI( country='VNM', indicator = '3.3_PRI.TEACHERS')
wdi03 <- na.omit(wdi03)
wdi03
##   country iso2c iso3c year 3.3_PRI.TEACHERS
## 1 Vietnam   VNM       2012           366045
## 2 Vietnam   VNM       2011           365772
## 3 Vietnam   VNM       2010           355165
## 4 Vietnam   VNM       2009           349695
## 5 Vietnam   VNM       2008           344853
## 8 Vietnam   VNM       2005           360624

Indicator 3.3_PRI.TEACHERS cho biết số lượng giáo viên tiểu học ở các quốc gia ở các năm.

Dữ liệu trong bảng wdi03 cho biết số lượng giáo viên tiểu học của nước Việt Nam qua các năm.

Vào năm 2005 Việt Nam có 360.624 giáo viên tiểu học trên toàn quốc.

Vào năm 2008 Việt Nam có 344.853 giáo viên tiểu học trên toàn quốc.

Vào năm 2009 Việt Nam có 349.695 giáo viên tiểu học trên toàn quốc.

Vào năm 2010 Việt Nam có 355.165 giáo viên tiểu học trên toàn quốc.

Vào năm 2011 Việt Nam có 365.772 giáo viên tiểu học trên toàn quốc.

Vào năm 2012 Việt Nam có 366.045 giáo viên tiểu học trên toàn quốc.

1.1.4 Indicator 3.5_PRI.CLASSROOMS

wdi4 <- WDI( indicator = '3.5_PRI.CLASSROOMS')
wdi4 <- na.omit(wdi4)
wdi04 <- wdi4[wdi4$iso2c == 'VNM',]
wdi04
##     country iso2c iso3c year 3.5_PRI.CLASSROOMS
## 775 Vietnam   VNM       2012             246980
## 776 Vietnam   VNM       2011             272419
## 777 Vietnam   VNM       2010             268077
## 778 Vietnam   VNM       2009             265058
## 779 Vietnam   VNM       2008             247086
## 782 Vietnam   VNM       2005             235527

Indicator 3.5_PRI.CLASSROOMS cho biết số phòng học được trang bị cho học sinh tiểu học của các quốc gia ở các năm.

Vào năm 2005 Việt Nam trang bị 235.527 phòng học cho học sinh tiểu học trên toàn quốc.

Vào năm 2008 Việt Nam trang bị 247.086 phòng học cho học sinh tiểu học trên toàn quốc.

Vào năm 2009 Việt Nam trang bị 265.058 phòng học cho học sinh tiểu học trên toàn quốc.

Vào năm 2010 Việt Nam trang bị 268.077 phòng học cho học sinh tiểu học trên toàn quốc.

Vào năm 2011 Việt Nam trang bị 272.419 phòng học cho học sinh tiểu học trên toàn quốc.

Vào năm 2012 Việt Nam trang bị 246.980 phòng học cho học sinh tiểu học trên toàn quốc.

1.1.5 Indicator 4.0.stud.15a18

wdi5 <- WDI( indicator = '4.0.stud.15a18')
wdi5 <- na.omit(wdi5)
a05 <- wdi5[wdi5$year == 2014,]
a05
##                             country iso2c iso3c year 4.0.stud.15a18
## 1                     Andean Region   ANR       2014      0.5538981
## 16                        Argentina   ARG       2014      0.7836453
## 31                          Bolivia   BOL       2014      0.5189375
## 46                           Brazil   BRA       2014      0.5786243
## 61                  Central America   MCA       2014      0.5169683
## 91                         Colombia   COL       2014      0.6052025
## 106                      Costa Rica   CRI       2014      0.7878520
## 136                         Ecuador   ECU       2014      0.6735859
## 151                     El Salvador   SLV       2014      0.5644555
## 166                       Guatemala   GTM       2014      0.3682873
## 181                        Honduras   HND       2014      0.3802653
## 196 Latin America and the Caribbean   LCR       2014      0.5695898
## 211                          Mexico   MEX       2014      0.5587955
## 226                       Nicaragua   NIC       2014      0.7255632
## 241                          Panama   PAN       2014      0.6799611
## 256                        Paraguay   PRY       2014      0.5648236
## 271                            Peru   PER       2014      0.4001349
## 286                   Southern Cone   SCE       2014      0.7272311
## 301                         Uruguay   URY       2014      0.6925484

Indicator 4.0.studwork.15a18 cho biết tỷ lệ người đi học ở độ tuổi từ 15 đến 18 tuổi ở các quốc gia qua các năm.

Dữ liệu trong bảng a05 cho biết tỷ lệ người đi học ở các quốc gia vào năm 2014.

1.1.6 Indicator 4.1.stud.15a18

wdi6 <- WDI( indicator = '4.1.stud.15a18')
wdi6 <- na.omit(wdi6)
a06 <- wdi6[wdi6$iso2c == 'ARG',]
a06
##      country iso2c iso3c year 4.1.stud.15a18
## 16 Argentina   ARG       2014      0.7754553
## 17 Argentina   ARG       2013      0.7306531
## 18 Argentina   ARG       2012      0.7157081
## 19 Argentina   ARG       2011      0.7488467
## 20 Argentina   ARG       2010      0.7462509
## 21 Argentina   ARG       2009      0.7033078
## 22 Argentina   ARG       2008      0.7002685
## 23 Argentina   ARG       2007      0.6705498
## 24 Argentina   ARG       2006      0.7082706
## 25 Argentina   ARG       2005      0.7202332
## 26 Argentina   ARG       2004      0.7013514

Indicator 4.1.stud.15a18 cho biết tỷ lệ học nam sinh đi học ở độ tuổi từ 15 đến 18 ở các quốc gia qua các năm.

Dữ liệu trong bảng a06 cho biết tỷ lệ nam sinh đi học ở Argentina qua các năm.

1.1.7 Indicator 4.2.stud.15a18

wdi7 <- WDI( indicator = '4.2.stud.15a18')
wdi7 <- na.omit(wdi7)
a07 <- wdi7[wdi7$iso2c == 'ARG',]
a07
##      country iso2c iso3c year 4.2.stud.15a18
## 16 Argentina   ARG       2014      0.7928632
## 17 Argentina   ARG       2013      0.7936470
## 18 Argentina   ARG       2012      0.7964541
## 19 Argentina   ARG       2011      0.7990308
## 20 Argentina   ARG       2010      0.7949452
## 21 Argentina   ARG       2009      0.7722225
## 22 Argentina   ARG       2008      0.7526077
## 23 Argentina   ARG       2007      0.7671011
## 24 Argentina   ARG       2006      0.7427966
## 25 Argentina   ARG       2005      0.7724604
## 26 Argentina   ARG       2004      0.7310751

Indicator 4.2.stud.15a18 cho biết tỷ lệ học nữ sinh đi học ở độ tuổi từ 15 đến 18 ở các quốc gia qua các năm.

Dữ liệu trong bảng a07 cho biết tỷ lệ nữ sinh đi học ở Argentina qua các năm.

1.1.8 Indicator SH.HOSP.TOTL

hos <- WDIsearch('hospital')
hos1 <- WDI( indicator = 'SH.HOSP.TOTL') 
hos1 <- na.omit(hos1)
names(hos1) <- c('quốc gia','iso2c','iso3c','năm','số lượng')
datatable(hos1)
a0 <- hos1[hos1$`quốc gia` == 'Bali, Prop.',]
a0
##       quốc gia iso2c iso3c  năm số lượng
## 48 Bali, Prop.             2018       70
## 52 Bali, Prop.             2014       90
## 55 Bali, Prop.             2011       47
## 61 Bali, Prop.             2005       42
## 63 Bali, Prop.             2003       36
## 66 Bali, Prop.             2000       29
## 70 Bali, Prop.             1996       30

Indicator SH.HOSP.TOTL cho biết số bệnh viện của các quốc gia qua các năm.

Số bệnh viện ở Bali vào năm 1996 là 30. Vào năm 2000 là 29. Vào năm 2003 là. 36. Vào năm 2005 là 42. Vào năm 2011 là 47. Vào năm 2014 là 90 và vào năm 2018 là 70.

1.1.9 Indicator IN.HLTH.GOVHOSPTL.BEDS.NUM

hos2 <- WDI( indicator ='IN.HLTH.GOVHOSPTL.BEDS.NUM')
hos2 <- na.omit(hos2)
datatable(hos2)

Indicator IN.HLTH.GOVHOSPTL.BEDS.NUM cho biết số giường bệnh hiện có tại các bệnh viện công.

1.1.10 Indicator IN.HLTH.DISTHOSPTL.NUM

hos3 <- WDI( indicator ='IN.HLTH.DISTHOSPTL.NUM')
hos3 <- na.omit(hos3)

Indicator IN.HLTH.DISTHOSPTL.NUM cho biết số bệnh viện huyện ở các quốc gia qua các năm.

1.2 Function xử lý công việc

ha <- function(df,x){
library(rvest)
library(ggplot2)
library(tidyverse)
library(DT)
library(scales)
library(dplyr)
library(cowplot)
mean_value <- mean(df)
median_value <- median(df)
sd_value <- sd(df)
min_value <- min(df)
max_value <- max(df)
summary_stats <- summary(df)
quantiles <- quantile(df, probs = c(0.25, 0.5, 0.75))
}

1.3 Scrape dữ liệu

url <- 'https://vi.wikipedia.org/wiki/Danh_sách_tiểu_bang_Hoa_Kỳ_theo_dân_số'
html <- read_html(url)
bang <- html |> html_element('table') |> html_table()
datatable(bang)

Dữ liệu cho biết danh sách các tiểu bang Hoa Kỳ theo dân số

bang$`Số ghế trongHạ viện,2013–2023` <- gsub('.','',bang$`Số ghế trongHạ viện,2013–2023`)
bang$`Ước tính dân số 1 tháng 7 năm 2012` <- gsub('.', '', bang$`Ước tính dân số 1 tháng 7 năm 2012`)
bang$`Điều tra dân số, 1 tháng 4 năm 2010` <- gsub(',','',bang$`Điều tra dân số, 1 tháng 4 năm 2010`)
bang$`Điều tra dân số, 1 tháng 4 năm 2000` <- gsub('.','', bang$`Điều tra dân số, 1 tháng 4 năm 2000`)
bang$`Tỷ lệ so với tổng dân số LB 2010` <- gsub(',','','%', bang$`Tỷ lệ so với tổng dân số LB 2010`)
bang$`Số ghế trongHạ viện,2013–2023` <- as.numeric(bang$`Số ghế trongHạ viện,2013–2023`)
bang$`Tỷ lệ so với tổng dân số LB 2010` <- as.numeric(bang$`Tỷ lệ so với tổng dân số LB 2010`)
bang$`Ước tính dân số 1 tháng 7 năm 2012` <- as.numeric( bang$`Ước tính dân số 1 tháng 7 năm 2012`) 
bang$`Điều tra dân số, 1 tháng 4 năm 2010` <- as.numeric( bang$`Điều tra dân số, 1 tháng 4 năm 2010`) 
bang$`Điều tra dân số, 1 tháng 4 năm 2000` <- as.numeric( bang$`Điều tra dân số, 1 tháng 4 năm 2000`)

1.3.1 Thực hiện tính toán trên bảng dữ liệu

mean(bang$`Số đại cử tri2012–2020`)
## [1] 36.42373
var(bang$`Số đại cử tri2012–2020`)
## [1] 13744.9
sd(bang$`Số đại cử tri2012–2020`)
## [1] 117.2387
summary(bang$`Số đại cử tri2012–2020`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    4.00    7.00   36.42   12.50  538.00

Số đại cử tri trung bình là 36 người

Độ lệch chuẩn của số đại cử tri là 117.24

2 Tuần 5

2.1 Mối liên hệ giữa Hình thức lao động và Mức lương.

2.1.1 Lập bảng tần số, tần suất, đồ thị thể hiện Mức lương.

summary(p$wage)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     292     800    1080    1148    1350    5100
sd(p$wage)
## [1] 531.0814

Trong cuộc khảo sát, người có mức lương thấp nhất là 292 và người có mức lương cao nhất là 5100.

Mức lương trung bình là 1148.

Mức lương có độ lệch chuẩn là 531,0814

p$wa <- cut(p$wage,breaks=c(291,1000,2000,5101), labels=c('thấp','trung bình','cao'))
table(p$wa)
## 
##       thấp trung bình        cao 
##        252        307         36

Trong số 595 người tham gia khảo sát thì có 252 người có mức thu nhập thấp, 307 người có mức thu nhập trung bình và 36 người có mức thu nhập cao.

table(p$wa)/sum(table(p$wa))*100
## 
##       thấp trung bình        cao 
##   42.35294   51.59664    6.05042
p |> ggplot(aes( x = wa, y = after_stat(count))) +
  geom_bar(fill = 'gray') +
  geom_text(aes(label = scales::percent( after_stat(count/sum(count)))), stat = 'count', color = 'white', vjust = 2) +
  theme_classic() + 
  labs(x = 'Mức lương', y = 'Số người')

bdt <- p %>% group_by(wa) %>% summarise(n = n()) %>%
  mutate(percent = n/sum(n)) 

bdt |> ggplot(aes(x = "", y = percent, fill = wa)) +
  geom_bar(stat = "identity", width = 1) +
  geom_text(aes(label = paste0(round(percent*100), "%")), position = position_stack(vjust = 0.5))+
  coord_polar("y", start = 0) +
  scale_fill_manual(values = c("skyblue", "lightpink", "yellow"), name = "Mức lương") +
  labs(title = "BIỂU ĐỒ PHÂN BỐ MỨC LƯƠNG") +
  theme_minimal() +
  theme(legend.position = "bottom")

Nhìn đồ thị ta thấy: Có 42,4% là người có mức lương thấp, 51,6% là người có mức lương trung bình và 6.1% là người có mức lương cao.

2.1.2 Lập bảng tần số, tần suất, đồ thị thể hiện Hình thức lao động.

table(p$occupation)
## 
## white  blue 
##   290   305

Trong số 290 nguời tham gia khảo sát thì có 290 người làm nhân viên văn phòng và 305 người làm lao động tay chân.

p |> ggplot(aes( x = occupation, y = after_stat(count))) +
  geom_bar(fill = 'skyblue') +
  geom_text(aes(label = scales::percent( after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = 2) +
  theme_classic() + 
  labs(x = 'Hình thức lao động', y = 'Số người')

oc <- p %>% group_by(occupation) %>% summarise( n=n()) %>% mutate( percent=n/sum(n))
oc |> ggplot(aes(x='', y=percent, fill= occupation)) + geom_bar(stat='identity', width = 1) + geom_text(aes(label = paste0(round(percent*100), "%")), position = position_stack(vjust = 0.5))+
  coord_polar("y", start = 0) +
  scale_fill_manual(values = c("yellow", "pink"), name = "Hình thức lao động") +
  labs(title = "BIỂU ĐỒ PHÂN BỐ HÌNH THỨC LAO ĐỘNG") +
  theme_minimal()

Nhìn biểu đồ ta thấy: Có 49% là nhân viên văn phòng và 51% là người làm nghề lao động tay chân.

2.1.3 Mối liên hệ giữa Hình thức lao động và Mức lương

2.1.3.1 Bảng tần số

table(p$wa, p$occupation)
##             
##              white blue
##   thấp          92  160
##   trung bình   163  144
##   cao           35    1

Trong số 252 người có thu nhập thấp ( dưới 1000$ ), có 92 người làm việc văn phòng và 160 người làm lao động tay chân.

Trong số 307 người có mức thu nhập trung bình ( từ 1000-2000$ ), có 163 người làm việc văn phòng và 144 người làm lao động tay chân.

Trong số 36 người có mức tu nhập cao (trên 2000$) có 35 người làm việc văn phòng và 1 người làm lao động tay chân.

2.1.3.2 Mức lương trung bình của từng Hình thức lao động

aggregate(p$wage, list(p$occupation), FUN='mean')
##   Group.1         x
## 1   white 1349.6345
## 2    blue  956.3574

Đối với những người làm việc văn phòng thì mức lương trung bình là 1349,63$.

Đối với những người làm việc lao động tay chân thì mức lương trung bình là 956,36$.

2.1.3.3 Biểu đồ thể hiện mối liên hệ giữa Hình thức lao động và Mức lương.

p |> count(wa, occupation) |>
  group_by(wa) |>
  mutate(pH = n/sum(n)) |>
  ggplot(aes(x = wa, y = n, fill = occupation)) +
  geom_col() +
  geom_text(aes(label = percent(pH, accuracy = .01)), position = position_stack(vjust = 0.5)) +
  ylab('Số Người') +
  xlab('Mức lương')

Đọc đồ thị ta thấy:

  • Trong số những người có thu nhập thấp có 63,49% là người làm việc lao động tay chân và 36,51% là người làm việc văn phòng. Trong mức người có thu nhập thấp thì số người làm lao động tay chân nhiều hơn 74% so với số người làm việc văn phòng.

  • Trong số những người có mức thu nhập trung bình có 46,91% là người làm việc lao động tay chân và 53,09% là người làm việc văn phòng,

2.1.4 Lọc dữ liệu

2.1.4.1 Lọc ra những người có thu nhập thấp làm việc văn phòng

tw <- p[p$wa == 'thấp' & p$occupation == 'white',]
datatable(tw)

2.1.4.2 Lọc ra những người có thu nhập cao làm việc văn phòng

cw <- p[p$wa == 'cao' & p$occupation == 'white',]
datatable(cw)

2.1.5 Kiểm định tính độc lập của 2 biến Mức lương và Hình thức lao động

Đặt giả thiết:

H0: Hai biến độc lập

H1: Hai biến không độc lập

httn <- table(p$wa, p$occupation)
chisq.test(httn)
## 
##  Pearson's Chi-squared test
## 
## data:  httn
## X-squared = 51.291, df = 2, p-value = 7.284e-12

Kết quả này cho chúng ta thấy rằng p-value < 0.05. Nên ta chưa đủ cơ sở bác bỏ giả thiết H0. Vậy hình thức lao động và mức lương là 2 biến không độc lập với nhau.

2.2 Mối liên hệ giữa Học vấn và mức lương.

2.2.1 Lập bảng tần số, tần suất và đồ thị của biến Học vấn

table(p$education)
## 
##   4   5   6   7   8   9  10  11  12  13  14  15  16  17 
##   2   3   4  11  25  23  33  30 214  26  49  12  91  72
table(p$education)/sum(table(p$education))*100
## 
##          4          5          6          7          8          9         10 
##  0.3361345  0.5042017  0.6722689  1.8487395  4.2016807  3.8655462  5.5462185 
##         11         12         13         14         15         16         17 
##  5.0420168 35.9663866  4.3697479  8.2352941  2.0168067 15.2941176 12.1008403

Số người có số năm đi học là 4 chiếm 0,34%.

Số người có số năm đi học là 5 chiếm 0,5%

Số người có số năm đi học là 6 chiếm 0,67%

Số người có số năm đi học là 7 chiếm 1,85%

Số người có số năm đi học là 8 chiếm 4,2%

Số người có số năm đi học là 9 chiếm 3,87%

Số người có số năm đi học là 10 chiếm 5,55%

Số người có số năm đi học là 11 chiếm 5,04%

Số người có số năm đi học là 12 chiếm 35,97%

Số người có số năm đi học là 13 chiếm 4,36%

Số người có số năm đi học là 14 chiếm 8,24%

Số người có số năm đi học là 15 chiếm 2,02%

Số người có số năm đi học là 16 chiếm 15,29%

Số người có số năm đi học là 17 chiếm 12,1%

p |> ggplot(aes( x=education, y=after_stat(count))) + geom_bar(fill='lightpink') + xlab('Học vấn') + ylab('Số người')

p$hv <- as.factor(p$education)
p |> ggplot(aes(fct_infreq(hv))) + geom_bar( fill='lightpink') + xlab('Học vấn') + ylab('Số người')

Nhìn đồ thị ta thấy trong cuộc khảo sát:

  • Đa số mọi người đều có trình độ học vấn là 12.
  • Người có trình độ học vấn nhỏ hơn 7 rất ít.

2.2.2 Mức lương trung bình ở từng cấp bậc Học vấn

aggregate(p$wage, list(p$education), FUN='mean')
##    Group.1         x
## 1        4  577.0000
## 2        5  830.0000
## 3        6  818.2500
## 4        7  739.2727
## 5        8  892.5600
## 6        9  936.0435
## 7       10  912.6970
## 8       11  976.2333
## 9       12 1010.4299
## 10      13 1046.6923
## 11      14 1174.4490
## 12      15 1361.5000
## 13      16 1460.6484
## 14      17 1590.7500

Đối với người có số năm học vấn là 4 thì mức lương trung bình của họ là 577$

Đối với người có số năm học vấn là 5 thì mức lương trung bình của họ là 830$

Đối với người có số năm học vấn là 6 thì mức lương trung bình của họ là 818,25$

Đối với người có số năm học vấn là 7 thì mức lương trung bình của họ là 793,27$

Đối với người có số năm học vấn là 8 thì mức lương trung bình của họ là 829,56$

Đối với người có số năm học vấn là 9 thì mức lương trung bình của họ là 936,04$

Đối với người có số năm học vấn là 10 thì mức lương trung bình của họ là 912,697$

Đối với người có số năm học vấn là 11 thì mức lương trung bình của họ là 976,23$

Đối với người có số năm học vấn là 12 thì mức lương trung bình của họ là 1010,43$

Đối với người có số năm học vấn là 13 thì mức lương trung bình của họ là 1046,69$

Đối với người có số năm học vấn là 14 thì mức lương trung bình của họ là 1174,45$

Đối với người có số năm học vấn là 15 thì mức lương trung bình của họ là 1361,5$

Đối với người có số năm học vấn là 16 thì mức lương trung bình của họ là 1460,65$

Đối với người có số năm học vấn là 17 thì mức lương trung bình của họ là 1590,75$

2.2.3 Đồ thị phân tán thể hiện mối liên hệ giữa Học vấn và Mức lương

p |> ggplot(aes(x= education, y= wage)) +  geom_point( color = 'skyblue') + xlab('Trình độ học vấn') + ylab('Mức lương')

2.2.4 Lọc dữ liệu

2.2.4.1 Lọc những người có Mức lương cao hơn 3000

p3 <- p[p$wage >= 3000,]
datatable(p3)
p |> ggplot(aes(x= education, y= wage)) + geom_point(color = 'lightpink') + geom_point( data=p |> filter (wage>= 3000), color = 'black') + xlab('Trình độ học vấn') + ylab('Mức lương')

Có 6 người trong cuộc khảo sát có mức lương lớn hơn 3000.

2.2.4.2 Lọc ra người có Mức lương cao nhất và thấp nhất trong cuộc khảo sát

min(p$wage)
## [1] 292
p |> ggplot(aes(x= education, y= wage)) + geom_point(color = 'lightpink') + geom_point( data=p |> filter (wage==292), color = 'black') + xlab('Trình độ học vấn') + ylab('Mức lương')

max(p$wage)
## [1] 5100
p |> ggplot(aes(x= education, y= wage)) + geom_point(color = 'plum') + geom_point( data=p |> filter (wage==5100), color = 'black') + xlab('Trình độ học vấn') + ylab('Mức lương')

Người có Mức lương thấp nhất trong cuộc khảo sát là 292$ với số năm đi học là 8.

Người có mức lương cao nhất trong cuộc khảo sát là 5100$ với số năm đi học là 17.

2.2.5 Kiểm định tính độc lập cho hai biến wage (Mức lương) và education (Số năm đi học)

Đặt giả thuyết

H0: Hai biến độc lập

H1: Hai biến không độc lập với nhau

hv <- cut(p$education, breaks = c(3,12,18), labels=c('thấp','cao'))
hl <- table(p$wa, hv)
hl
##             hv
##              thấp cao
##   thấp        185  67
##   trung bình  158 149
##   cao           2  34
chisq.test(hl)
## 
##  Pearson's Chi-squared test
## 
## data:  hl
## X-squared = 70.594, df = 2, p-value = 4.685e-16

Kết quả này cho chúng ta thấy rằng p-value < 0.05. Nên ta chưa đủ cơ sở để bác bỏ giả thuyết H0. Vậy hai biến Mức lương và Trình độ học vấn không độc lập với nhau.

2.3 Mối liên hệ giữa Trình độ học vấn, Mức lương và Hình thức lao động

2.3.1 Lập bảng tần số, tần suất, đồ thị

ftable(p$wa,p$occupation,p$education)
##                    4  5  6  7  8  9 10 11 12 13 14 15 16 17
##                                                            
## thấp       white   0  0  0  1  0  3  0  4 27  6 12  4 22 13
##            blue    2  2  3  8 14  9 19 13 80  6  2  0  2  0
## trung bình white   0  0  0  0  1  2  2  2 33  5 19  8 47 44
##            blue    0  1  1  2 10  9 12 10 73  7 15  0  3  1
## cao        white   0  0  0  0  0  0  0  1  0  2  1  0 17 14
##            blue    0  0  0  0  0  0  0  0  1  0  0  0  0  0

Ở mức thu nhập thấp có:

  • 1 người là nhân viên văn phòng với trình độ học vấn là 7.

  • 3 người là nhân viên văn phòng với trình độ học vấn là 9.

  • 4 người là nhân viên văn phòng với trình độ học vấn là 11.

  • 27 người là nhân viên văn phòng với trình độ học vấn là 12.

  • 6 người là nhân viên văn phòng với trình độ học vấn là 13.

  • 12 người là nhân viên văn phòng với trình độ học vấn là 14.

  • 4 người là nhân viên văn phòng với trình độ học vấn là 15.

  • 22 người là nhân viên văn phòng với trình độ học vấn là 16.

  • 13 người là nhân viên văn phòng với trình độ học vấn là 17.

  • 2 người làm công việc lao động tay chân với trình độ học vấn là 4.

  • 2 người làm công việc lao động tay chân với trình độ học vấn là 5.

  • 3 người làm công việc lao động tay chân với trình độ học vấn là 6.

  • 8 người làm công việc lao động tay chân với trình độ học vấn là 7.

  • 14 người làm công việc lao động tay chân với trình độ học vấn là 8.

  • 9 người làm công việc lao động tay chân với trình độ học vấn là 9.

  • 19 người làm công việc lao động tay chân với trình độ học vấn là 10.

  • 13 người làm công việc lao động tay chân với trình độ học vấn là 11.

  • 80 người làm công việc lao động tay chân với trình độ học vấn là 12.

  • 6 người làm công việc lao động tay chân với trình độ học vấn là 13.

  • 2 người làm công việc lao động tay chân với trình độ học vấn là 14.

  • 2 người làm công việc lao động tay chân với trình độ học vấn là 16.

Ở mức thu nhập trung bình có:

  • 1 người là nhân viên văn phòng với trình độ học vấn là 8.

  • 2 người là nhân viên văn phòng với trình độ học vấn là 9.

  • 2 người là nhân viên văn phòng với trình độ học vấn là 10.

  • 2 người là nhân viên văn phòng với trình độ học vấn là 11.

  • 33 người là nhân viên văn phòng với trình độ học vấn là 12.

  • 5 người là nhân viên văn phòng với trình độ học vấn là 13.

  • 19 người là nhân viên văn phòng với trình độ học vấn là 14.

  • 8 người là nhân viên văn phòng với trình độ học vấn là 15.

  • 47 người là nhân viên văn phòng với trình độ học vấn là 16.

  • 44 người là nhân viên văn phòng với trình độ học vấn là 17.

  • 1 người làm công việc lao động tay chân với trình độ học vấn là 5.

  • 1 người làm công việc lao động tay chân với trình độ học vấn là 6.

  • 2 người làm công việc lao động tay chân với trình độ học vấn là 7.

  • 10 người làm công việc lao động tay chân với trình độ học vấn là 8.

  • 9 người làm công việc lao động tay chân với trình độ học vấn là 9.

  • 12 người làm công việc lao động tay chân với trình độ học vấn là 10.

  • 10 người làm công việc lao động tay chân với trình độ học vấn là 11.

  • 73 người làm công việc lao động tay chân với trình độ học vấn là 12.

  • 7 người làm công việc lao động tay chân với trình độ học vấn là 13.

  • 15 người làm công việc lao động tay chân với trình độ học vấn là 14.

  • 3 người làm công việc lao động tay chân với trình độ học vấn là 16.

  • 1 người làm công việc lao động tay chân với trình độ học vấn là 17.

Ở mức thu nhập cao có:

  • 1 người là nhân viên văn phòng với trình độ học vấn là 11.

  • 2 người là nhân viên văn phòng với trình độ học vấn là 13.

  • 1 người là nhân viên văn phòng với trình độ học vấn là 14.

  • 17 người là nhân viên văn phòng với trình độ học vấn là 16.

  • 14 người là nhân viên văn phòng với trình độ học vấn là 17.

  • 1 người làm công việc lao động tay chân với trình độ học vấn là 12.

p |> ggplot(aes(x= education, y= wage)) + geom_point(aes(color= occupation)) + geom_smooth(formula = y ~ x, method = 'lm', color = 'yellow') + xlab('Số năm đi học') + ylab('Mức lương')

Đọc đồ thị ta thấy:

Số năm đi học dưới 12 đa số là người lao động tay chân và có mức thu nhập dưới 2000$

Số năm đi học trên 12 đa số là người làm việc văn phòng và có mức lương trung bình từ 500-3000$.

Người có mức lương cao nhất là 5100$ là người có số năm đi học là 17, đang làm nhân viên văn phòng.

Ta thấy đường hồi quy tuyến tính là đường dốc lên, thể hiện 2 biến số năm đi học và mức lương tỷ lệ thuận với nhau. Có nhiều điểm nằm trên và xung quanh đường hồi quy vì vậy ta có thể kết luận số năm đi học và mức lương có mối quan hệ tuyến tính với nhau. Điều này cho thấy số năm đi học có ảnh hưởng đến mức lương. Số năm đi học càng cao thì mức lương càng cao.

2.3.2 Lọc dữ liệu

2.3.2.1 Lọc ra người có mức thu nhập cao làm lao động tay chân.

p4 <- p[p$occupation =='blue' & p$education==12 & p$wa=='cao',]
p4
##     experience weeks occupation industry south smsa married gender union
## 479         27    47       blue       no   yes  yes     yes   male    no
##     education ethnicity wage  wa hv
## 479        12     other 2036 cao 12
p |> ggplot(aes(x= education, y= wage)) + geom_point(aes(color= occupation)) + geom_point(data=p |> filter (education==12 & wa=='cao'), color = 'black') + geom_smooth(formula = y ~ x, method = 'lm', color = 'yellow') + xlab('Số năm đi học') + ylab('Mức lương')

Có 1 người làm công việc lao động tay chân với trình độ học vấn là 12 có mức thu nhập cao.

3 TUẦN 4

data("PSID1982")
d <- PSID1982 
datatable(d)

3.1 ĐỒ THỊ DẠNG SCATTER

3.1.1 Đồ thị scatter thể hiện mối liên hệ giữa Học vấn với Mức Lương.

d |> ggplot( map = aes(x=education, y=wage))+ geom_point( color='yellow') + xlab('Học vấn') + ylab('Mức lương')

d |> ggplot( map = aes(x=education, y=wage))+ geom_point( color='pink') + xlab('Học vấn') + ylab('Mức lương') + geom_line(color = 'yellow')

Nhận xét: Hai đồ thị phân tán (scatter) trên đều thể hiện mối quan hệ giữa học vấn và mức lương của người tham gia khảo sát. Từ đồ thị ta thấy Mức lương dao động trong khoảng từ 292 đến 5100. Trong mức trình độ học vấn từ 1 đến 15 năm thì mức lương trung bình dưới 2000. Trong mức trình độ học vấn cao hơn 15 năm thì mức lương có sự dao động lớn hơn. Và mức lương cao nhất là 5100.

d |> ggplot( map = aes(x=education, y=wage))+ geom_point( color='pink') + geom_line(color = 'yellow') + geom_smooth(formula = y ~ x, method = 'lm', color = 'green') + xlab('Học vấn') + ylab('Mức Lương')

Ta thấy đường hồi quy tuyến tính là đường dốc lên, thể hiện 2 biến học vấn và mức lương tỷ lệ thuận với nhau. Có nhiều điểm nằm trên và xung quanh đường hồi quy vì vậy ta có thể kết luận học vấn và mức lương có mối quan hệ tuyến tính với nhau. Điều này cho thấy học vấn có ảnh hưởng đến mức lương. Học vấn càng cao thì mức lương càng cao.

3.1.2 Đồ thị scatter thể hiện mối liên hệ giữa Kinh nghiệm vói Mức Lương.

d |> ggplot( map = aes(x=experience, y=wage, color=occupation))+ geom_point() + geom_smooth(formula = y ~ x, method = 'lm', color = 'yellow') + xlab('Kinh nghiệm') + ylab('Mức Lương')

Đồ thị cho thấy mối quan hệ giữa 2 biến kinh nghiệm và mức lương. Ta thấy các điểm có sự phân bố đều nhau giữa các giá trị. Đường thẳng hồi quy (đường màu vàng) rất thoải, thể hiện 2 biến này không có sự tương quan hoặc tương quan rất yếu tới nhau. Vì vậy, kinh nghiệm không ảnh hưởng hay có ảnh hưởng rất ít đến mức lương. Nhìn vào đồ thị trên ta có thể thấy thêm rằng với cùng số năm kinh nghiệm thì người làm việc văn phòng sẽ có mức ương cao hơn người lao động tay chân.

3.1.3 Đồ thị thể hiện mối liên hệ giữa Số năm đi học với Mức lương

d |> ggplot(aes(x = wage, y = education)) +
  geom_point(aes(color = married), na.rm = T) +
  geom_smooth(formula =  y ~ x, method = 'lm', na.rm = T) +
  facet_grid(. ~ married) +
  xlab('Mức lương') +
  ylab('Số năm đi học')

3.2 ĐỒ THỊ DẠNG CỘT

d |> ggplot(aes(x=gender)) + geom_bar(aes(y= after_stat(100*count/sum(count))), fill="pink")+ labs(x='Giới tính',  y='Tỷ lệ %')

Nhận xét: Trong cuộc khảo sát, có xấp xỉ 87,5% là nam giới và xấp xỉ 12,5% là nữ giới.

d |> ggplot(aes(x = married, y = after_stat(count),fill = occupation)) +
  geom_bar(position = 'dodge') +
  ylab('Số Người') +
  xlab('Tình trạng hôn nhân')

d |> count(married, occupation) |>
  mutate(pCH = prop.table(n)) |>
  ggplot(aes(x = married, y = n, fill = occupation)) +
  geom_col(position = 'dodge') +
  geom_text(aes(label = percent(pCH, accuracy = .01)), position = position_dodge(1), vjust = -.5) +
  ylab('Số Người') +
  xlab('Tình trạng hôn nhân')

Từ hai biểu đồ trên ta thấy được: Có 10.08% người làm việc văn phòng chưa lập gia đình và 9.41% người làm việc lao động tay chân chưa lập gia đình. Có 38.66% người làm việc văn phòng đã lập gia đình và 41.85% người làm việc lao động tay chân đã lập gia đình.

d |> count(married, occupation) |>
  mutate(pCH = prop.table(n)) |>
  ggplot(aes(x = married, y = n, fill = occupation)) +
  geom_col(position = 'dodge') +
  geom_text(aes(label = percent(pCH, accuracy = .01)), position = position_dodge(1), vjust = -.5) +
  ylab('Số Người') +
  xlab('Tình trạng hôn nhân') + coord_flip()

Ta có thể chuyển biểu đồ trên từ biểu đồ dọc thành biểu đồ ngang.

d$wa <- cut(d$wage, breaks=c(291.9,1000,2000,5100.1), labels= c('thấp','trung bình','cao'))
d |> ggplot(aes(x = wa, y = after_stat(count),fill = married)) +
  geom_bar(position = 'dodge') +
  ylab('Số Người') +
  xlab('Mức lương')

Đọc đồ thị tôi thấy được đa số mọi người đều có mức lương trung bình, thấp. Ở mọi mức thu nhập tỷ lệ người đã kết hôn đều cao hơn người chưa kết hôn. Từ đó cho thấy tình trạng hôn nhân (đã kết hôn hay chưa kết hôn) không làm ảnh hưởng đến mức lương của người tham gia khảo sát.

d |> count(wa, married) |>
  mutate(pCH = prop.table(n)) |>
  ggplot(aes(x = wa, y = n, fill = married)) +
  geom_col(position = 'dodge') +
  geom_text(aes(label = percent(pCH, accuracy = .01)), position = position_dodge(1), vjust = -.5) +
  ylab('Số Người') +
  xlab('Mức lương')

Đọc đồ thị tôi thấy có 13.61% số người có mức thu nhập thấp chưa kết hôn, 28.74% số người có mức thu nhập thấp đã kết hôn. 5.55% số người có mức thu nhập trung bình chưa kết hôn, 46.05% số người có mức thu nhập trung bình đã kết hôn. 0.34% số người có mức nhập cao chưa kết hôn, 5.71% số người có mức thu nhập cao đã kết hôn.

d |> count(wa, married) |>
  group_by(wa) |>
  mutate(pH = n/sum(n)) |>
  ggplot(aes(x = wa, y = n, fill = married)) +
  geom_col() +
  geom_text(aes(label = percent(pH, accuracy = .01)), position = position_stack(vjust = 0.5)) +
  ylab('Số Người') +
  xlab('Mức lương')

Đọc đồ thị tôi thấy, trong mức thu thấp có 67.86% là người đã kết hôn và 32.14% là người chưa kết hôn. Trong mức thu nhập trung bình, có 89.25% là người đã kết hôn và 10.75% là người chưa kết hôn. Trong mức thu nhập cao, có 94.44% là người đã kết hôn và 5.56% là người chưa kết hôn.

4 TUẦN 3

4.1 Pivot_longer

4.1.1 Mô tả dữ liệu

  • Package: tidyr - Datasets: who đây là bộ dữ liệu ghi nhận số ca mắc bệnh lao của tổ chức y tế thế giới

  • Gồm 7240 quan sát và 60 biến

  1. country: đất. nước
  2. iso2: mã quốc gia 2 chữ cái
  3. iso3: mã quốc gia 3 chữ cái
  4. year: năm
  5. new_sp_m014 đến newrel_m3455: Số ca mắc lao mới được ghi nhận theo nhóm

4.1.2 Mô tả cấu trúc bộ dữ liệu

  • Gọi package tidyr và dataset who. Gán dataset vào bộ dữ liệu mới có tên là tt.
data('who')
tt <- who
str(tt)
## tibble [7,240 × 60] (S3: tbl_df/tbl/data.frame)
##  $ country     : chr [1:7240] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
##  $ iso2        : chr [1:7240] "AF" "AF" "AF" "AF" ...
##  $ iso3        : chr [1:7240] "AFG" "AFG" "AFG" "AFG" ...
##  $ year        : num [1:7240] 1980 1981 1982 1983 1984 ...
##  $ new_sp_m014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_m1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_m2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_m3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_m4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_m5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_m65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_f014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_f1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_f2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_f3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_f4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_f5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sp_f65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_m014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_m1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_m2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_m3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_m4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_m5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_m65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_f014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_f1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_f2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_f3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_f4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_f5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_sn_f65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_m014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_m1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_m2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_m3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_m4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_m5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_m65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_f014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_f1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_f2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_f3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_f4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_f5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ new_ep_f65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_m014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_m1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_m2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_m3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_m4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_m5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_m65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_f014 : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_f1524: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_f2534: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_f3544: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_f4554: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_f5564: num [1:7240] NA NA NA NA NA NA NA NA NA NA ...
##  $ newrel_f65  : num [1:7240] NA NA NA NA NA NA NA NA NA NA ...

4.1.3 Thực hiện pivot_longer

  • Lệnh pivot_longer giúp chuyển đổi bảng dữ liệu rộng thành dài. Lệnh pivot_longer tạo ra bảng dữ liệu mới lấy giá trị của các cột biến new_sp_m014,…,newrel_f65 chuyển thành 3 cột biến mới là chẩn đoán, giới tính và tuổi.
  • Lệnh values_drop_na = T giúp loại bỏ bớt cái ô trống trong bảng dữ liệu.
tt0 <- who %>% pivot_longer(cols= new_sp_m014:newrel_f65, names_to = c('chẩn đoán','giới tính', 'tuổi'), names_pattern = 'new_?(.*)_(.)(.*)' ,values_to = 'count')
str(tt0)
## tibble [405,440 × 8] (S3: tbl_df/tbl/data.frame)
##  $ country  : chr [1:405440] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
##  $ iso2     : chr [1:405440] "AF" "AF" "AF" "AF" ...
##  $ iso3     : chr [1:405440] "AFG" "AFG" "AFG" "AFG" ...
##  $ year     : num [1:405440] 1980 1980 1980 1980 1980 1980 1980 1980 1980 1980 ...
##  $ chẩn đoán: chr [1:405440] "sp" "sp" "sp" "sp" ...
##  $ giới tính: chr [1:405440] "m" "m" "m" "m" ...
##  $ tuổi     : chr [1:405440] "014" "1524" "2534" "3544" ...
##  $ count    : num [1:405440] NA NA NA NA NA NA NA NA NA NA ...
tt1 <- who %>% pivot_longer(cols=new_sp_m014:newrel_f65, names_to = c('chẩn đoán','giới tính', 'tuổi'), names_pattern = 'new_?(.*)_(.)(.*)' ,values_to = 'count',  values_drop_na = T)
str(tt1)
## tibble [76,046 × 8] (S3: tbl_df/tbl/data.frame)
##  $ country  : chr [1:76046] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
##  $ iso2     : chr [1:76046] "AF" "AF" "AF" "AF" ...
##  $ iso3     : chr [1:76046] "AFG" "AFG" "AFG" "AFG" ...
##  $ year     : num [1:76046] 1997 1997 1997 1997 1997 ...
##  $ chẩn đoán: chr [1:76046] "sp" "sp" "sp" "sp" ...
##  $ giới tính: chr [1:76046] "m" "m" "m" "m" ...
##  $ tuổi     : chr [1:76046] "014" "1524" "2534" "3544" ...
##  $ count    : num [1:76046] 0 10 6 3 5 2 0 5 38 36 ...

4.1.4 Thực hiện tính toán trên dữ liệu đã chuyển đổi từ lệnh pivot_longer

  • Lấy 6 dòng đầu và 6 dòng cuối trên bộ dữ liệu đã chuyển đổi
head(tt1)
## # A tibble: 6 × 8
##   country     iso2  iso3   year `chẩn đoán` `giới tính` tuổi  count
##   <chr>       <chr> <chr> <dbl> <chr>       <chr>       <chr> <dbl>
## 1 Afghanistan AF    AFG    1997 sp          m           014       0
## 2 Afghanistan AF    AFG    1997 sp          m           1524     10
## 3 Afghanistan AF    AFG    1997 sp          m           2534      6
## 4 Afghanistan AF    AFG    1997 sp          m           3544      3
## 5 Afghanistan AF    AFG    1997 sp          m           4554      5
## 6 Afghanistan AF    AFG    1997 sp          m           5564      2
tail(tt1)
## # A tibble: 6 × 8
##   country  iso2  iso3   year `chẩn đoán` `giới tính` tuổi  count
##   <chr>    <chr> <chr> <dbl> <chr>       <chr>       <chr> <dbl>
## 1 Zimbabwe ZW    ZWE    2013 rel         f           1524   2069
## 2 Zimbabwe ZW    ZWE    2013 rel         f           2534   4649
## 3 Zimbabwe ZW    ZWE    2013 rel         f           3544   3526
## 4 Zimbabwe ZW    ZWE    2013 rel         f           4554   1453
## 5 Zimbabwe ZW    ZWE    2013 rel         f           5564    811
## 6 Zimbabwe ZW    ZWE    2013 rel         f           65      725
  • Tính trung bình, phương sai, độ lệch chuẩn của biến count
mean(tt1$count)
## [1] 570.6746
  • Trung bình của biến count là 570.6746. Số ca mắc bệnh trung bình được tổ chức y tế thế giới ghi nhận là 570.6746 ca.
m <- tt1[tt1$`giới tính` == 'm',]
f <- tt1[tt1$`giới tính` == 'f',]

Trong số 76046 số ca mắc bệnh lao được tổ chức y tế thế giới ghi nhận thì có 38098 trường hợp người mắc bệnh là nam và 37948 trường hợp mắc bệnh là nữ.

4.2 pivot_wider

4.2.1 Mô tả dữ liệu

  • Package: tidyr - Datasets: fish_encounters (dữ liệu về thông tin số lần cá bơi qua trạm đo lường được ghi nhận )

  • Gồm 114 quan sát và 3 biến

  1. fish: định danh cá
  2. station: trạm đo lường
  3. seen: cá đã được nhìn thấy chưa

4.2.2 Mô tả cấu trúc dữ liệu

Gọi dataset fish_encounters. Gán dataset vào bộ dữ liệu mới có tên là f.

data('fish_encounters')
f <- fish_encounters
str(f)
## tibble [114 × 3] (S3: tbl_df/tbl/data.frame)
##  $ fish   : Factor w/ 19 levels "4842","4843",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ station: Factor w/ 11 levels "Release","I80_1",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ seen   : int [1:114] 1 1 1 1 1 1 1 1 1 1 ...

4.2.3 Cách sử dụng pivot_wider

  • Lệnh pivot_wider giúp chuyển dữ liệu bảng dữ liệu dài thành rộng. Lấy giá trị các cột station và seen để tạo thành 11 cột mới là Release, I80_1, Lisbon, Rstr, Base_TD, BCE, BCW, BCE2,BCW, MAE, MAW
f1 <- f %>% pivot_wider( names_from= station, values_from = seen, values_fill =0)
str(f1)
## tibble [19 × 12] (S3: tbl_df/tbl/data.frame)
##  $ fish   : Factor w/ 19 levels "4842","4843",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Release: int [1:19] 1 1 1 1 1 1 1 1 1 1 ...
##  $ I80_1  : int [1:19] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Lisbon : int [1:19] 1 1 1 1 1 1 0 0 0 0 ...
##  $ Rstr   : int [1:19] 1 1 1 1 0 1 0 1 0 0 ...
##  $ Base_TD: int [1:19] 1 1 1 1 0 0 0 1 0 0 ...
##  $ BCE    : int [1:19] 1 1 1 0 0 0 0 1 0 0 ...
##  $ BCW    : int [1:19] 1 1 1 0 0 0 0 1 0 0 ...
##  $ BCE2   : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...
##  $ BCW2   : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...
##  $ MAE    : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...
##  $ MAW    : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...

4.3 Mutate

  • Dùng lệnh mutate để tạo thêm 1 biến mới là cactram. Biến mới là tổng số trạm cá bơi qua ghi nhận được.
f2 <- mutate(f1,cactram=Release+I80_1+Lisbon+Rstr+Base_TD+BCE+BCW+BCE2+BCW2+MAE+MAW)
str(f2)
## tibble [19 × 13] (S3: tbl_df/tbl/data.frame)
##  $ fish   : Factor w/ 19 levels "4842","4843",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Release: int [1:19] 1 1 1 1 1 1 1 1 1 1 ...
##  $ I80_1  : int [1:19] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Lisbon : int [1:19] 1 1 1 1 1 1 0 0 0 0 ...
##  $ Rstr   : int [1:19] 1 1 1 1 0 1 0 1 0 0 ...
##  $ Base_TD: int [1:19] 1 1 1 1 0 0 0 1 0 0 ...
##  $ BCE    : int [1:19] 1 1 1 0 0 0 0 1 0 0 ...
##  $ BCW    : int [1:19] 1 1 1 0 0 0 0 1 0 0 ...
##  $ BCE2   : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...
##  $ BCW2   : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...
##  $ MAE    : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...
##  $ MAW    : int [1:19] 1 1 1 0 0 0 0 0 0 0 ...
##  $ cactram: int [1:19] 11 11 11 5 3 4 2 6 2 2 ...

5 TUẦN 2

5.1 Phân tổ không đều biến wage (lương) thành các mức thấp, trung bình, cao

data('PSID1982', package='AER')
d <- PSID1982
luong <-cut(d$wage, breaks=c(0,1000,2000,5100), labels=c('thấp', 'trung bình', 'cao'))
table(luong)
## luong
##       thấp trung bình        cao 
##        252        307         36
  • Trong 595 người tham gia khảo sát thì có 252 người (xấp xỉ 42.35%) có mức lương thấp, 307 người (xấp xỉ 51.6%) có mức lương trung bình và 36 người (xấp xỉ 6.05%) có mức lương cao.

5.2 Thành phần giới tính ở các mức thu nhập

wg <- d[d$wage >2000 & d$gender == 'male',]
wg1 <- d[d$wage >1000 & d$wage <= 2000 & d$gender == 'male',]
wg2 <- d[d$wage >1000 & d$wage <= 2000 & d$gender == 'female',]
wg3<- d[d$wage <= 1000 & d$gender == 'male',]
wg4<- d[d$wage <= 1000 & d$gender == 'female',]
  • Trong số 36 người có mức lương cao thì 100% đều là nam.
  • Trong số 307 người có mức lương trung bình thì có 296 (96.42%) người là nam và 11 người (3.58%) là nữ.
  • Trong số 252 người có mức lương thấp thì có 196 người (77.78%) là nam và 56 người (22.22%) là nữ.

5.3 Loại hình lao động ở các mức thu nhập

wo <- d[d$occupation == 'white' & d$wage > 2000,]
wo1 <- d[d$occupation =='blue' & d$wage > 2000,]
wo2 <- d[d$wage >1000 & d$wage <= 2000 & d$occupation == 'white',]
wo3 <- d[d$wage >1000 & d$wage <= 2000 & d$occupation == 'blue',]
wo4<- d[d$wage <= 1000 & d$occupation == 'white',]
wo5<- d[d$wage <= 1000 & d$occupation == 'blue',]
  • Trong số 36 người có mức lương cao thì có 35 người (97.22%) là nhân viên văn phòng và 1 người (2.78%) là lao động tay chân.
  • Trong số 307 người có mức lương trung bình thì có 163 (53.1%) người là nhân viên văn phòng và 144 người (46.9%) là người lao động tay chân.
  • Trong số 252 người có mức lương thấp thì có 92 người (36.5%) là nhân viên văn phòng và 160 người (63.5%) làm lao động tay chân.

5.4 Tình trạng hôn nhân ở các mức thu nhập

wm <- d[d$married == 'yes' & d$wage > 2000,]
wm1 <- d[d$married =='no' & d$wage > 2000,]
wm2 <- d[d$wage >1000 & d$wage <= 2000 & d$married == 'yes',]
wm3 <- d[d$wage >1000 & d$wage <= 2000 & d$married == 'no',]
wm4<- d[d$wage <= 1000 & d$married == 'yes',]
wm5<- d[d$wage <= 1000 & d$married == 'no',]
  • Trong số 36 người có mức lương cao thì có 34 người (94.44%) đã kết hôn và 2 người (5.56%) chưa kết hôn.
  • Trong số 307 người có mức lương trung bình thì có 274 (89.25%) người đã kết hôn và 33 người (10.75%) chưa kết hôn.
  • Trong số 252 người có mức lương thấp thì có 171 người (67.86%) đã kết hôn và 81 người (32.14%) chưa kết hôn.

5.5 Biểu đồ hist về số tuần làm việc trong năm.

hist(d$wage)

5.6 Biểu đồ hist về kinh nghiệm.

hist(d$experience)

## Biểu đồ hist về lương.

hist(d$wage)

5.7 Giá trị trung bình của mức lương theo từng mức giáo dục

aggregate(d$wage, list(d$education), FUN ='mean')
##    Group.1         x
## 1        4  577.0000
## 2        5  830.0000
## 3        6  818.2500
## 4        7  739.2727
## 5        8  892.5600
## 6        9  936.0435
## 7       10  912.6970
## 8       11  976.2333
## 9       12 1010.4299
## 10      13 1046.6923
## 11      14 1174.4490
## 12      15 1361.5000
## 13      16 1460.6484
## 14      17 1590.7500
  • Với số năm đi học là 4 thì mức lương trung bình là 577.
  • Với số năm đi học là 5 thì mức lương trung bình là 830.
  • Với số năm đi học là 6 thì mức lương trung bình là 818.25
  • Với số năm đi học là 7 thì mức lương trung bình là 739.27
  • Với số năm đi học là 8 thì mức lương trung bình là 892.56
  • Với số năm đi học là 9 thì mức lương trung bình là 936.0435
  • Với số năm đi học là 10 thì mức lương trung bình là 912.697
  • Với số năm đi học là 11 thì mức lương trung bình là 976.233
  • Với số năm đi học là 12 thì mức lương trung bình là 1010.4299
  • Với số năm đi học là 13 thì mức lương trung bình là 1046.6923
  • Với số năm đi học là 14 thì mức lương trung bình là 1174.449
  • Với số năm đi học là 15 thì mức lương trung bình là 1361.5
  • Với số năm đi học là 16 thì mức lương trung bình là 1460.6484
  • Với số năm đi học là 17 thì mức lương trung bình là 1590.75
library(tidyverse)
w <- d$wage
d %>% group_by(d$gender) %>% summarise( m= mean(d$experience))
## # A tibble: 2 × 2
##   `d$gender`     m
##   <fct>      <dbl>
## 1 male        22.9
## 2 female      22.9

6 TUẦN 1

6.1 Mô tả cấu trúc bộ dữ liệu

data('PSID1982', package='AER')
str(PSID1982)
## 'data.frame':    595 obs. of  12 variables:
##  $ experience: int  9 36 12 37 16 32 21 29 9 9 ...
##  $ weeks     : int  32 30 46 46 49 47 48 51 48 40 ...
##  $ occupation: Factor w/ 2 levels "white","blue": 1 2 2 2 1 2 2 2 1 1 ...
##  $ industry  : Factor w/ 2 levels "no","yes": 2 2 2 1 1 2 1 2 1 1 ...
##  $ south     : Factor w/ 2 levels "no","yes": 2 1 1 1 1 1 1 1 2 2 ...
##  $ smsa      : Factor w/ 2 levels "no","yes": 1 1 1 2 1 2 1 2 2 2 ...
##  $ married   : Factor w/ 2 levels "no","yes": 2 2 1 1 2 2 2 2 2 2 ...
##  $ gender    : Factor w/ 2 levels "male","female": 1 1 1 2 1 1 1 1 1 1 ...
##  $ union     : Factor w/ 2 levels "no","yes": 1 1 2 1 1 1 2 2 1 1 ...
##  $ education : int  9 11 12 10 16 12 12 10 16 16 ...
##  $ ethnicity : Factor w/ 2 levels "other","afam": 1 1 1 2 1 1 1 1 1 1 ...
##  $ wage      : num  515 912 954 751 1474 ...

6.2 Đổi tên bộ dữ liệu và lấy 6 dòng đầu và cuối của bộ dữ liệu

d <- PSID1982
head(d)
##   experience weeks occupation industry south smsa married gender union
## 1          9    32      white      yes   yes   no     yes   male    no
## 2         36    30       blue      yes    no   no     yes   male    no
## 3         12    46       blue      yes    no   no      no   male   yes
## 4         37    46       blue       no    no  yes      no female    no
## 5         16    49      white       no    no   no     yes   male    no
## 6         32    47       blue      yes    no  yes     yes   male    no
##   education ethnicity wage
## 1         9     other  515
## 2        11     other  912
## 3        12     other  954
## 4        10      afam  751
## 5        16     other 1474
## 6        12     other 1539
tail(d)
##     experience weeks occupation industry south smsa married gender union
## 590          9    44       blue      yes    no  yes     yes   male   yes
## 591         40    46       blue      yes    no  yes     yes   male   yes
## 592         12    47       blue      yes    no  yes     yes   male   yes
## 593         16    40       blue       no   yes   no      no   male    no
## 594         13    47       blue      yes    no  yes     yes   male   yes
## 595          7    50      white       no    no  yes      no female    no
##     education ethnicity wage
## 590        12     other  963
## 591         8     other  950
## 592        13     other 1166
## 593         8      afam  292
## 594        12     other 1150
## 595        12     other  585

6.3 Đổi tên biến trong bộ dữ liệu

names(d) <- c('exper','we','o','i','s','smsa','m','g','u','edu','eth','wa')

6.4 Tóm tắt thống kê biến wage

summary(d$wage)
## Length  Class   Mode 
##      0   NULL   NULL
  • Mức lương tối thiểu là 292 và mức lương tối đa là 5100
  • Có 25% (gần 148 người) có mức lương ít hơn 800 và 75% (gần 447 người) có mức lương nhiều hơn 800.
  • Có 50% (gần 297 người) có mức lương ít hơn 1080 vằ 50% (gần 298 người) có mức lương nhiều hơn 1080.
  • Có 75% (gần 447 người) có mức lương ít hơn 1350 và 25% (gần 148 người) có mức lương nhiều hơn 1350.
  • Mức lương trung bình là 1148.

6.5 Phân tổ dữ liệu biến wage và gán vào lương

lương <- cut(d$wa,4)

6.6 Lập bảng tần số cho biến lương

table(cut(d$wa,4))
## 
##     (287,1.49e+03] (1.49e+03,2.7e+03]  (2.7e+03,3.9e+03]  (3.9e+03,5.1e+03] 
##                487                 97                  9                  2

6.7 Lấy ra các quan sát từ bộ dữ liệu

6.7.1 Lấy ra các quan sát có age>2000

luong2000 <- d$wa[d$wa > 2000]
luong2000
##  [1] 2450 2680 2025 2300 2310 2492 2750 2100 2100 2400 2335 5100 2100 2096 4057
## [16] 2200 2625 2750 3125 3150 2200 2553 2500 2750 2708 2150 2167 3042 2931 2600
## [31] 2100 2050 2036 2417 2455 3125

6.7.2 Lấy ra các quan sát có wage>1800 và edu>=12

l18edu12 <- d[d$wa > 1800 & d$edu >=12,]
l18edu12
##     exper we     o   i   s smsa   m    g   u edu   eth   wa
## 18     31 47 white yes yes  yes yes male  no  16 other 2450
## 23     17 50 white  no  no  yes yes male  no  16 other 2680
## 29     37 49 white  no  no  yes yes male  no  14 other 1920
## 31     28 45 white yes  no  yes yes male  no  17 other 2025
## 32     36 47 white yes  no  yes yes male  no  16 other 2300
## 41     26 47 white  no yes  yes yes male  no  16 other 2310
## 44     13 46 white yes  no  yes yes male  no  17 other 2000
## 49     37 48 white yes  no   no yes male  no  16 other 2492
## 51     37 44 white yes  no  yes yes male  no  17 other 2750
## 52     31 49 white  no  no  yes yes male yes  16 other 2100
## 59     32 46 white yes  no  yes yes male  no  17 other 2100
## 96     35 49 white yes  no  yes yes male  no  16 other 2400
## 113    33 39 white  no  no  yes yes male  no  17 other 2335
## 119    22 50 white  no  no  yes yes male  no  17 other 5100
## 121    19 49 white yes  no   no  no male  no  16 other 2100
## 132    27 50 white  no yes   no yes male  no  17 other 1895
## 136    26 48 white yes  no  yes yes male  no  13 other 2096
## 168     9 50 white  no  no  yes yes male  no  17 other 4057
## 169    31 50 white  no yes   no yes male  no  17 other 1950
## 173    34 43 white yes  no  yes yes male  no  16 other 2200
## 206    18 47 white  no  no  yes yes male  no  13 other 2625
## 207    19 51 white  no  no  yes yes male  no  17 other 2750
## 212    13 49 white yes  no  yes yes male  no  17 other 2000
## 216    23 48 white  no yes  yes yes male  no  17 other 1900
## 231    29 48 white yes  no  yes yes male  no  16 other 3125
## 239    33 49 white  no  no   no yes male  no  16 other 3150
## 240    40 48  blue  no  no  yes yes male yes  12 other 1915
## 252    31 47 white  no  no  yes yes male  no  17  afam 2200
## 270    27 47 white  no yes  yes yes male  no  16 other 2553
## 275     7 49 white  no  no  yes yes male  no  17 other 2500
## 289    34 48 white  no  no  yes yes male  no  16 other 2750
## 316    36 50 white yes  no   no yes male  no  17 other 2708
## 341    13 49 white yes  no  yes yes male  no  17 other 2150
## 344    25 48 white yes  no  yes yes male  no  17 other 2167
## 348    33 25 white yes yes  yes  no male  no  16 other 3042
## 353    36 47 white yes  no  yes yes male  no  17 other 2931
## 368    15 48 white  no yes  yes yes male  no  16 other 1900
## 386    23 49 white  no yes   no yes male  no  14 other 2600
## 389    27 50  blue  no  no  yes  no male yes  14 other 1984
## 405    11 47 white  no yes  yes yes male  no  16 other 2100
## 427    33 48 white  no  no  yes yes male  no  17 other 2050
## 479    27 47  blue  no yes  yes yes male  no  12 other 2036
## 505    29 47 white  no  no   no yes male  no  16 other 2417
## 531     8 46 white  no  no  yes yes male  no  16 other 2000
## 539     9 48 white  no  no  yes yes male  no  17 other 2000
## 540    31 45 white yes  no  yes yes male  no  16 other 2455

6.7.3 Số quan sát và lượng biến trong l18edu12

dim(l18edu12)
## [1] 46 12