# In thời gian xuất file
cat("Thời gian xuất file:", format(Sys.time(), "%Y-%m-%d %H:%M:%S"))
## Thời gian xuất file: 2023-07-16 08:34:33

Bài tập về nhà tuần 6

6.0 Phân tích 10 chỉ số

Chọn tự bộ dữ liệu WDI 10 chỉ số của Hoa Kỳ từ năm 2013 đến năm 2023 ( Một số chỉ số dữ liệu chưa cập nhập đầy đủ những năm gần đây)

  • Tổng dân số (Total population): SP.POP.TOTL
  • Chỉ số GDP (Gross Domestic Product): NY.GDP.MKTP.CD
  • Chỉ số tỷ lệ thất nghiệp (Unemployment rate): SL.UEM.TOTL.ZS
  • Tỷ lệ nghèo đói dưới ngưỡng 1.90 USD/ngày (Poverty headcount ratio at $1.90 a day): SI.POV.DDAY
  • Chỉ số tỷ lệ nghèo (Poverty headcount ratio): SI.POV.DDAY
  • Tỷ lệ sử dụng điện từ nguồn năng lượng tái tạo (Electricity from renewable sources): EG.ELC.RNEW.ZS
  • Thuế thu nhập cá nhân (Personal income tax): GC.TAX.YPKG.CN
  • Chỉ số tỷ lệ nữ trong lực lượng lao động (Female labor force participation rate): SL.TLF.CACT.FE.ZS
  • Tỷ lệ tiêm chủng trẻ em (Immunization, measles): SH.IMM.MEAS
  • Tỷ lệ người dùng Internet (Internet users): IT.NET.USER.ZS
library(WDI)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(DT)

# Lấy dữ liệu của Hoa Kỳ
countries <- "US"
# Lấy 10 chỉ số 
indicators <- c("SP.POP.TOTL", "NY.GDP.MKTP.CD", "NY.GDP.PCAP.CD", "SL.UEM.TOTL.ZS","SI.POV.DDAY","SI.POV.DDAY","EG.ELC.RNEW.ZS","GC.TAX.YPKG.CN","SL.TLF.CACT.FE.ZS", "SH.STA.DIAB.ZS")  

# Lấy dữ liệu từ Word Bank cho 10 chỉ số, thời gian từ 2013 đến 2023.
data <- WDI(country = countries, indicator = indicators, start = 2013, end = 2023)

# Chuyển đổi dữ liệu thành data frame
data_df <- as.data.frame(data)

# Thiết lập số dòng hiển thị trên mỗi trang
line <- 10

# Xem kết quả
datatable(data_df, options = list(pageLength = line))

6.0.1 Phân tích chỉ số tổng dân số (Total population): SP.POP.TOTL

# Gọi thư viện các gói cần thiết
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.4
## ✔ ggplot2   3.4.2     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)

# Lấy dữ liệu Tổng dân số của Mỹ từ World Bank
country_code <- "US"  
indicator_code <- "SP.POP.TOTL" 
data <- WDI(country = country_code, indicator = indicator_code, start = 2013, end = 2023)

Tính tỉ lệ tăng trưởng hằng năm

# Sắp xếp dữ liệu theo năm
data <- data %>% 
  arrange(year)

# Tính tỷ lệ tăng trưởng hàng năm
data <- data %>% 
  mutate(growth_rate = (SP.POP.TOTL - lag(SP.POP.TOTL)) / lag(SP.POP.TOTL))

# Hiển thị 10 dòng đầu tiên
head(data, 10)
##          country iso2c iso3c year SP.POP.TOTL growth_rate
## 1  United States    US   USA 2013   316059947          NA
## 2  United States    US   USA 2014   318386329 0.007360572
## 3  United States    US   USA 2015   320738994 0.007389341
## 4  United States    US   USA 2016   323071755 0.007273082
## 5  United States    US   USA 2017   325122128 0.006346494
## 6  United States    US   USA 2018   326838199 0.005278235
## 7  United States    US   USA 2019   328329953 0.004564197
## 8  United States    US   USA 2020   331511512 0.009690127
## 9  United States    US   USA 2021   332031554 0.001568700
## 10 United States    US   USA 2022   333287557 0.003782782

Biểu đồ tăng trưởng dân số

ggplot(data, aes(year, growth_rate)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ tăng trưởng dân số", title = "Xu hướng tăng trưởng dân số của Mỹ") +
  theme_minimal()
## Warning: Removed 1 row containing missing values (`geom_line()`).

Biểu đồ cho thấy biến đổi và xu hướng tăng trưởng dân số của Mỹ trong khoảng thời gian từ năm 2013 đến năm 2023. Nếu đường biểu đồ có xu hướng tăng dần, điều này cho thấy dân số của Mỹ đang gia tăng theo thời gian. Ngược lại, nếu đường biểu đồ có xu hướng giảm dần, có thể cho thấy sự chậm lại trong tăng trưởng dân số hoặc thậm chí là sự giảm số lượng dân số.

So sánh dân số giữa bang CA và bang GA

# Lấy dữ liệu Tổng dân số của California (CA) và Georgia (GA)
states <- c("CA", "GA")
indicator_code <- "SP.POP.TOTL" 
data <- WDI(country = states, indicator = indicator_code, start = 2013, end = 2023)

# Chuẩn bị dữ liệu
data <- data %>% 
  rename(State = iso2c) %>% 
  pivot_wider(names_from = State, values_from = SP.POP.TOTL)

# Vẽ biểu đồ so sánh dân số giữa California và Georgia
ggplot(data, aes(x = year)) +
  geom_col(aes(y = `CA`, fill = "California"), width = 0.4, position = position_dodge()) +
  geom_col(aes(y = `GA`, fill = "Georgia"), width = 0.4, position = position_dodge()) +
  labs(x = "Năm", y = "Tổng dân số", title = "So sánh dân số giữa California và Georgia") +
  scale_fill_manual(values = c("California" = "blue", "Georgia" = "green")) +
  theme_minimal()
## Warning: Removed 10 rows containing missing values (`geom_col()`).
## Removed 10 rows containing missing values (`geom_col()`).

6.0.2 Phân tích chỉ số GDP (Gross Domestic Product): NY.GDP.MKTP.CD

# Lấy dữ liệu GDP của Hoa Kỳ từ năm 2013 đến năm 2023
country_code <- "US"
indicator_code <- "NY.GDP.MKTP.CD"
start_year <- 2013
end_year <- 2023
data <- WDI(country = "US", indicator = indicator_code, start = 2013, end = 2023)
# Đổi tên cột
colnames(data)[colnames(data) == "NY.GDP.MKTP.CD"] <- "GDP"

Biểu đồ tăng trưởng GDP của Hoa Kỳ từ năm 2013 đến năm 2023

ggplot(data, aes(x = year, y = GDP)) +
  geom_line() +
  labs(x = "Năm", y = "GDP", title = "Tăng trưởng GDP của Hoa Kỳ từ năm 2013 đến năm 2023") +
  theme_minimal()

Đường cong biểu diễn giá trị GDP của Hoa Kỳ trong từng năm. Khi đường cong tăng lên, đó là dấu hiệu của sự tăng trưởng kinh tế, và khi đường cong giảm xuống, đó là dấu hiệu của sự suy thoái kinh tế. Biểu đồ cho thấy xu hướng chung và biến động của tăng trưởng GDP trong quá khứ và tạo ra cơ sở cho dự đoán về tương lai.

Từ biểu đồ, chúng ta có thể nhận ra các điểm quan trọng như:

Tăng trưởng kinh tế: Nếu đường cong có xu hướng tăng dần và ổn định, đó là dấu hiệu của sự phát triển kinh tế ổn định và bền vững. Suy thoái kinh tế: Nếu đường cong có xu hướng giảm dần hoặc có các đoạn đường dốc xuống, đó là dấu hiệu của sự suy thoái kinh tế.

so sánh GDP của Hoa Kỳ, Đức và Nhật Bản từ năm 2013 đến năm 2023

# Lấy dữ liệu GDP của Hoa Kỳ, Đức và Nhật Bản từ năm 2013 đến năm 2023
country_codes <- c("US", "DE", "JP")
indicator_code <- "NY.GDP.MKTP.CD"
data <- WDI(country = country_codes, indicator = indicator_code, start = 2013, end = 2023)

# Biểu đồ so sánh GDP của Hoa Kỳ, Đức và Nhật Bản từ năm 2013 đến năm 2023
ggplot(data, aes(x = year, y = NY.GDP.MKTP.CD, color = country)) +
  geom_line() +
  labs(x = "Năm", y = "GDP", title = "So sánh GDP của Hoa Kỳ, Đức và Nhật Bản từ năm 2013 đến năm 2023") +
  theme_minimal()

6.0.3 Phân tích chỉ số tỷ lệ thất nghiệp (Unemployment rate) của Hoa Kỳ từ năm 2013 đến năm 2023

# Lấy dữ liệu tỷ lệ thất nghiệp của Hoa Kỳ từ năm 2013 đến năm 2023
indicator_code <- "SL.UEM.TOTL.ZS"
data <- WDI(country = "US", indicator = indicator_code, start = 2013, end = 2023)

# Biểu đồ tỷ lệ thất nghiệp của Hoa Kỳ từ năm 2013 đến năm 2023
ggplot(data, aes(x = year, y = SL.UEM.TOTL.ZS)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ thất nghiệp", title = "Tỷ lệ thất nghiệp của Hoa Kỳ từ năm 2013 đến năm 2023") +
  theme_minimal()

Biểu đồ cho thấy xu hướng tỷ lệ thất nghiệp tăng hoặc giảm trong suốt khoảng thời gian từ năm 2013 đến năm 2023. Sự biến động này có thể phản ánh tình hình kinh tế và việc làm trong quốc gia. Nếu đường biểu đồ có xu hướng giảm dần, có thể cho thấy sự cải thiện của thị trường lao động. Ngược lại, nếu đường biểu đồ có xu hướng tăng dần, có thể cho thấy sự khó khăn trong việc tạo việc làm và giảm tỷ lệ thất nghiệp.

6.0.4 Phân tích chỉ số Tỷ lệ nghèo đói dưới ngưỡng 1.90 USD/ngày

# Lấy dữ liệu từ World Bank
usa_data <- WDI(country = "US", indicator = "SI.POV.DDAY", start = 2013, end = 2023)

# Chỉnh lại tên cột
colnames(usa_data)[colnames(usa_data) == "SI.POV.DDAY"] <- "value"

# Biểu đồ tỷ lệ nghèo đói
ggplot(usa_data, aes(x = year, y = value)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ nghèo đói", title = "Tỷ lệ nghèo đói dưới ngưỡng 1.90 USD/ngày - Hoa Kỳ") +
  theme_minimal()
## Warning: Removed 2 rows containing missing values (`geom_line()`).

Các điểm trên đường cong biểu thị giá trị của chỉ số “Tỷ lệ nghèo đói dưới ngưỡng 1.90 USD/ngày” trong từng năm. Khi đường cong tăng lên, tỷ lệ nghèo đói cũng tăng, và khi đường cong giảm xuống, tỷ lệ nghèo đói giảm. Điều này cho phép ta nhìn thấy xu hướng chung và những biến động của tình hình nghèo đói trong quá khứ và dự đoán tương lai.

6.0.5 Phân tích tỷ lệ sử dụng điện từ nguồn năng lượng tái tạo (Electricity from renewable sources): EG.ELC.RNEW.ZS

# Lấy dữ liệu tỷ lệ sử dụng điện từ nguồn năng lượng tái tạo cho Hoa Kỳ
usa_data <- WDI(country = "US", indicator = "EG.ELC.RNEW.ZS", start = 2013, end = 2023)

# Biểu đồ tỷ lệ sử dụng điện từ nguồn năng lượng tái tạo
ggplot(usa_data, aes(x = year, y = EG.ELC.RNEW.ZS)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ sử dụng điện từ nguồn năng lượng tái tạo", 
       title = "Tỷ lệ sử dụng điện từ nguồn năng lượng tái tạo của Hoa Kỳ từ năm 2013 đến 2023") +
  theme_minimal()
## Warning: Removed 7 rows containing missing values (`geom_line()`).

6.0.6 Phân tích chỉ số thuế thu nhập cá nhân (Personal income tax): GC.TAX.YPKG.CN

# Lấy dữ liệu thuế thu nhập cá nhân cho Hoa Kỳ
usa_tax_data <- WDI(country = "US", indicator = "GC.TAX.YPKG.CN", start = 2013, end = 2021)

# Xem dữ liệu
head(usa_tax_data)
##         country iso2c iso3c year GC.TAX.YPKG.CN
## 1 United States    US   USA 2021   2.417059e+12
## 2 United States    US   USA 2020   1.959574e+12
## 3 United States    US   USA 2019   1.938752e+12
## 4 United States    US   USA 2018   1.865645e+12
## 5 United States    US   USA 2017   1.868370e+12
## 6 United States    US   USA 2016   1.883862e+12

Biểu đồ tăng trưởng thuế thu nhập cá nhân

ggplot(usa_tax_data, aes(x = year, y = GC.TAX.YPKG.CN)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ thuế thu nhập cá nhân", title = "Tăng trưởng thuế thu nhập cá nhân Hoa Kỳ từ năm 2013 đến 2023") +
  theme_minimal()

Biểu đồ So sánh thuế thu nhập cá nhân giữa các năm

ggplot(usa_tax_data, aes(x = factor(year), y = GC.TAX.YPKG.CN)) +
  geom_bar(stat = "identity") +
  labs(x = "Năm", y = "Tỷ lệ thuế thu nhập cá nhân", title = "So sánh thuế thu nhập cá nhân Hoa Kỳ từ năm 2013 đến 2023") +
  theme_minimal()

6.0.7 Phân tích chỉ số tỷ lệ nữ trong lực lượng lao động (Female labor force participation rate): SL.TLF.CACT.FE.ZS

# Lấy dữ liệu tỷ lệ nữ trong lực lượng lao động cho Mỹ
usa_data <- WDI(country = "US", indicator = "SL.TLF.CACT.FE.ZS", start = 2013, end = 2023)

# Biểu đồ tỷ lệ nữ trong lực lượng lao động
ggplot(usa_data, aes(x = year, y = SL.TLF.CACT.FE.ZS)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ nữ trong lực lượng lao động", 
       title = "Tỷ lệ nữ trong lực lượng lao động của Mỹ từ năm 2013 đến 2023") +
  theme_minimal()

Thông qua biểu đồ, chúng ta có thể nhận thấy các xu hướng chung về tỷ lệ nữ trong lực lượng lao động. Nếu đường biểu đồ tăng dần, có thể chứng tỏ sự gia tăng sự tham gia của phụ nữ vào lực lượng lao động theo thời gian. Ngược lại, nếu đường biểu đồ giảm dần, có thể chỉ ra một xu hướng giảm sự tham gia của phụ nữ trong lực lượng lao động.

6.0.8 Phân tích chỉ số tỷ lệ nghèo (Poverty headcount ratio): SI.POV.DDAY từ năm 2008 đến năm 2020 (từ năm 2021 chưa có dữ liệu)

# Lấy dữ liệu chỉ số tỷ lệ nghèo cho Mỹ
usa_poverty_data <- WDI(country = "US", indicator = "SI.POV.DDAY", start = 2008, end = 2020)

# Xem dữ liệu
head(usa_poverty_data)
##         country iso2c iso3c year SI.POV.DDAY
## 1 United States    US   USA 2020         0.2
## 2 United States    US   USA 2019         1.0
## 3 United States    US   USA 2018         1.0
## 4 United States    US   USA 2017         1.2
## 5 United States    US   USA 2016         1.0
## 6 United States    US   USA 2015         1.2

# Biểu đồ tỷ lệ nghèo của Mỹ

library(ggplot2)
ggplot(usa_poverty_data, aes(x = year, y = SI.POV.DDAY)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ nghèo", title = "Tỷ lệ nghèo của Mỹ từ năm 2008 đến 2020") +
  theme_minimal()

6.0.9 Phân tích chỉ số Tỷ lệ tiêm chủng trẻ em (Immunization, measles) của Hoa Kỳ từ năm 2013 đến 2023

# Lấy dữ liệu Tỷ lệ tiêm chủng trẻ em cho Hoa Kỳ
data <- WDI(country = "US", indicator = "SH.IMM.MEAS", start = 2013, end = 2023)

# Biểu đồ Tỷ lệ tiêm chủng trẻ em
ggplot(data, aes(x = year, y = SH.IMM.MEAS)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ tiêm chủng trẻ em", title = "Tỷ lệ tiêm chủng trẻ em của Hoa Kỳ từ 2013 đến 2023") +
  theme_minimal()
## Warning: Removed 1 row containing missing values (`geom_line()`).

  • Biểu đồ có đường thẳng ngang, tức là tỷ lệ tiêm chủng trẻ em giữ nguyên trong suốt giai đoạn từ 2013 đến 2023. Điều này chỉ ra rằng không có sự thay đổi đáng kể về tỷ lệ tiêm chủng trong thời gian đó.
  • Biểu đồ có đường dốc xuống, tức là tỷ lệ tiêm chủng trẻ em giảm dần từ năm 2013 đến 2023. Điều này có thể cho thấy có những thay đổi tiêu cực trong việc tiêm chủng trẻ em trong khoảng thời gian đó.
  • Biểu đồ có đường dốc lên, tức là tỷ lệ tiêm chủng trẻ em tăng dần từ năm 2013 đến 2023. Điều này cho thấy có những cải thiện trong việc tiêm chủng trẻ em trong khoảng thời gian đó.

6.0.10 Phân tích tỷ lệ người dùng Internet cho Mỹ từ năm 2013 đến 2021

# Lấy dữ liệu tỷ lệ người dùng Internet cho Mỹ từ năm 2013 đến 2021
usa_internet_data <- WDI(country = "US", indicator = "IT.NET.USER.ZS", start = 2013, end = 2021)

# Xem kết quả
head(usa_internet_data)
##         country iso2c iso3c year IT.NET.USER.ZS
## 1 United States    US   USA 2021       91.75321
## 2 United States    US   USA 2020       90.62047
## 3 United States    US   USA 2019       89.43028
## 4 United States    US   USA 2018       88.49890
## 5 United States    US   USA 2017       87.27489
## 6 United States    US   USA 2016       85.54442

Biểu đồ tỷ lệ người dùng Internet

ggplot(usa_internet_data, aes(x = year, y = IT.NET.USER.ZS)) +
  geom_line() +
  labs(x = "Năm", y = "Tỷ lệ người dùng Internet", 
       title = "Tỷ lệ người dùng Internet của Mỹ từ 2013 đến 2021") +
  theme_minimal()

Biểu đồ thể hiện xu hướng tăng trưởng sử dụng Internet trong quốc gia này trong khoảng thời gian đó. Biểu đồ cho thấy tỷ lệ người dùng Internet tăng dần theo thời gian, từ mức thấp vào năm 2013 đến mức cao hơn vào năm 2021.

6.1 Cạo nội dung từ trang web

6.1.1 Cạo nội dung từ trang AllMusic

# Gọi các thư viện cần thiết
library(rvest)
## 
## Attaching package: 'rvest'
## The following object is masked from 'package:readr':
## 
##     guess_encoding
library(stringr)

# Đọc nội dung HTML của trang AllMusic
url <- "https://www.allmusic.com/newreleases"
page <- read_html(url)

# Trích xuất thông tin từ trang AllMusic
album_names <- page %>% html_nodes(".title") %>% html_text()
artist_names <- page %>% html_nodes(".artist") %>% html_text()

# Xử lý dữ liệu với gói stringr
formatted_album_names <- str_trim(album_names)
formatted_artist_names <- str_trim(artist_names)

# Tạo dataframe từ dữ liệu
data <- data.frame(Album = formatted_album_names, Artist = formatted_artist_names)

# Hiển thị kết quả
data
##                                                           Album
## 1                                                   Supermodels
## 2  Evenings at the Village Gate: John Coltrane with Eric Dolphy
## 3                                                     Evergreen
## 4                                             Sticks and Stones
## 5                                   Everyone Else Is a Stranger
## 6                                                         Rajan
## 7                                                Eye on the Bat
## 8                  Diggin' for Gold: Joe Meek's Tea Chest Tapes
## 9                                                    Pity/Piety
## 10                                              Continuous Hole
## 11                                   People Just Wanna Have Fun
## 12                                                Super Snooper
## 13                                                 Reminiscence
## 14                                                      Because
## 15                                   Ligeti: Études; Capriccios
## 16                                      Kerensa Briggs: Requiem
## 17                         Shostakovich: Symphoines Nos. 6 & 15
## 18                                   Byrd: Mass for Five Voices
## 19                                                    Mountains
## 20                                         The Ballad of Darren
## 21                                                  Starcatcher
## 22                                                       Austin
## 23                                       I Am Not There Anymore
## 24                                                   Mammoth II
## 25                               The Death of Randy Fitzsimmons
## 26                                               You're the One
## 27                                                   Relentless
## 28                                                         GUTS
## 29          It's the End of the World, But It's a Beautiful Day
## 30                                                      Tension
## 31                                               Not That Fancy
## 32                                                     Rockstar
##                                               Artist
## 1                                              Claud
## 2                        John Coltrane / Eric Dolphy
## 3                                              PVRIS
## 4  Lukas Nelson / Lukas Nelson & Promise of the Real
## 5                                          Lindstrøm
## 6                                        Night Beats
## 7                                          Palehound
## 8                 David John & the Mood / David John
## 9                                               Jesu
## 10                          Drew Daniel / John Wiese
## 11                                   Kool & the Gang
## 12                                           Snooper
## 13                                       Simon Bürki
## 14              Reginald Mobley / Baptiste Trotignon
## 15                                          Han Chen
## 16      Choir of King's College London / Joseph Fort
## 17     Gianandrea Noseda / London Symphony Orchestra
## 18                     The Gesualdo Six / Owain Park
## 19                                      Nils Lofgren
## 20                                              Blur
## 21                                   Greta Van Fleet
## 22                                       Post Malone
## 23                                     The Clientele
## 24                                       Mammoth WVH
## 25                                         The Hives
## 26                                  Rhiannon Giddens
## 27                                        Pretenders
## 28                                    Olivia Rodrigo
## 29                            Thirty Seconds to Mars
## 30                                     Kylie Minogue
## 31                                     Reba McEntire
## 32                                      Dolly Parton

6.1.2 Cạo nội dung từ trang TMDb

Xem thông tin 1 bộ phim cụ thể

library(httr)

api_key <- "78d7ffa317696d84e6048b2d920e8962"
movie_id <- "667538"

# Gửi yêu cầu GET đến TMDb API
response <- GET(paste0("https://api.themoviedb.org/3/movie/", movie_id),query = list(api_key = api_key))

# Trích xuất thông tin từ dữ liệu trả về
movie_data <- content(response, "parsed")
simplified_data <- movie_data[c("title", "release_date", "overview", "vote_average")]
# Xem kết quả
print(simplified_data)
## $title
## [1] "Transformers: Rise of the Beasts"
## 
## $release_date
## [1] "2023-06-06"
## 
## $overview
## [1] "When a new threat capable of destroying the entire planet emerges, Optimus Prime and the Autobots must team up with a powerful faction known as the Maximals. With the fate of humanity hanging in the balance, humans Noah and Elena will do whatever it takes to help the Transformers as they engage in the ultimate battle to save Earth."
## 
## $vote_average
## [1] 7.336

Xem danh sách các phim đang chiếu trên TMBd

# Gọi thư viện httr
library(httr)

api_key <- "78d7ffa317696d84e6048b2d920e8962"

# Gửi yêu cầu GET đến TMDb API
response <- GET("https://api.themoviedb.org/3/discover/movie",
                query = list(api_key = api_key))

# Trích xuất danh sách tên phim từ dữ liệu trả về
movie_data <- content(response, "parsed", simplifyVector = TRUE)
movie_titles <- movie_data$results$title
# Xem kết quả
print(movie_titles)
##  [1] "Transformers: Rise of the Beasts"             
##  [2] "Guardians of the Galaxy Vol. 3"               
##  [3] "Fast X"                                       
##  [4] "Knights of the Zodiac"                        
##  [5] "Sound of Freedom"                             
##  [6] "San Andreas"                                  
##  [7] "Spider-Man: Across the Spider-Verse"          
##  [8] "The Darkest Minds"                            
##  [9] "The Super Mario Bros. Movie"                  
## [10] "John Wick: Chapter 4"                         
## [11] "Barbie"                                       
## [12] "Sheroes"                                      
## [13] "Insidious: The Last Key"                      
## [14] "Elemental"                                    
## [15] "Mission: Impossible - Dead Reckoning Part One"
## [16] "The Out-Laws"                                 
## [17] "A Good Day to Die Hard"                       
## [18] "Confidential Informant"                       
## [19] "My Fault"                                     
## [20] "The Conjuring: The Devil Made Me Do It"

6.2 Viết một hàm xử lý công việc

Để viết 1 hàm ta sử dụng cú pháp function(){} để tạo 1 hàm xử lý các yêu cầu theo đề bài

VD : Giã sử trong công ty ABC có các nhân sự gồm nhân viên các phòng ban, trưởng phòng, giám đốc.Tiền lương được tính như sau :

  • nhân viên lương 20$ 1 ngày,1 tháng làm đủ 22 ngày, tiền lương được tính là 22 x 20$, phụ cấp của nhân viên là 3% tiền lương
  • trưởng phòng lương 35$ 1 ngày,,tiền lương được tính là 22x 35$,phụ cấp của trưởng phòng là 5 % tiền lương
  • giám đốc lương 50$ ngày,1 tháng làm đủ 22 ngày, tiền lương được tính là 22x50$,phụ cấp giám đốc là 8% tiền lương. Nếu ai nghỉ ngày nào thì ngày đó không tính lương ngày đó.

Tính lương khi các chức danh làm việc đủ 22 ngày

calculateSalary <- function(position, workingDays) {
  if (position == "Nhân viên") {
    baseSalary <- 20
    allowance <- 0.03
  } else if (position == "Trưởng phòng") {
    baseSalary <- 35
    allowance <- 0.05
  } else if (position == "Giám đốc") {
    baseSalary <- 50
    allowance <- 0.08
  }
  
  salary <- baseSalary * workingDays
  totalSalary <- salary + (salary * allowance)
  
  return(totalSalary)
}

# tính lương nhân viên
employees <- c("Nhân viên", "Trưởng phòng", "Giám đốc")
workingDays <- c(22, 22, 22)

for (i in seq_along(employees)) {
  salary <- calculateSalary(employees[i], workingDays[i])
  print(paste("Lương của", employees[i], "là:", salary))
}
## [1] "Lương của Nhân viên là: 453.2"
## [1] "Lương của Trưởng phòng là: 808.5"
## [1] "Lương của Giám đốc là: 1188"

Tính lương khi nhân viên làm 18 ngày, trưởng phòng làm 20 ngày, giám đốc làm 22 ngày

calculateSalary <- function(position, workingDays) {
  if (position == "Nhân viên") { baseSalary <- 20; allowance <- 0.03 }
  else if (position == "Trưởng phòng") { baseSalary <- 35; allowance <- 0.05 }
  else if (position == "Giám đốc") { baseSalary <- 50; allowance <- 0.08 }
  
  salary <- baseSalary * workingDays
  totalSalary <- salary + (salary * allowance)
  
  return(totalSalary)
}

employees <- c("Nhân viên", "Trưởng phòng", "Giám đốc")
workingDays <- c(18, 20, 22)

for (i in seq_along(employees)) {
  salary <- calculateSalary(employees[i], workingDays[i]); 
  print(paste("Lương của", employees[i], "là:", salary))
}
## [1] "Lương của Nhân viên là: 370.8"
## [1] "Lương của Trưởng phòng là: 735"
## [1] "Lương của Giám đốc là: 1188"

Bài tập về nhà tuần 5

5.1 Xem nội dung bên trong của các biến

# Gọi bộ dữ liệu
library(AER)
## Loading required package: car
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:purrr':
## 
##     some
## The following object is masked from 'package:dplyr':
## 
##     recode
## Loading required package: lmtest
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: sandwich
## Loading required package: survival
data(CASchools)
# Xem nội dung của biến Teachers
gv <- unique(CASchools$teachers)
# Xem 10 dòng đầu của biến Teachers
head(gv, 10)
##  [1]  10.90  11.15  82.90  14.00  71.50   6.40  10.00  42.50  19.00 108.00
# Xem 10 dòng cuối của biến Teachers
tail(gv, 10)
##  [1]  32.87  98.42  87.06  12.33  44.59 124.09  59.73 208.48  20.15  93.40
# Xem 4 dòng ở giữa của biến Teachers
CASchools$teachers[(length(CASchools$teachers)/2 - 2):(length(CASchools$teachers)/2 + 1)]
## [1] 150.00 107.21   6.05  61.99
# Gán lệnh unique(CASchools$school) vào sc
sc <- unique(CASchools$school)
# Xem 6 dòng đầu tiên của biến School
head(sc, 6)
## [1] "Sunol Glen Unified"              "Manzanita Elementary"           
## [3] "Thermalito Union Elementary"     "Golden Feather Union Elementary"
## [5] "Palermo Union Elementary"        "Burrel Union Elementary"
# Xem 10 dòng cuối của biến School
tail(sc, 10)
##  [1] "Orinda Union Elementary"      "Hillsborough City Elementary"
##  [3] "Cold Spring Elementary"       "Portola Valley Elementary"   
##  [5] "Saratoga Union Elementary"    "Las Lomitas Elementary"      
##  [7] "Los Altos Elementary"         "Somis Union Elementary"      
##  [9] "Plumas Elementary"            "Wheatland Elementary"
# Xem nội dung 6 dòng ở giữa của biến Schools

CASchools$school[(length(CASchools$school)/2 - 2):(length(CASchools$school)/2 + 3)]
## [1] "Rosemead Elementary"         "Grass Valley Elementary"    
## [3] "Buena Vista Elementary"      "Kernville Union Elementary" 
## [5] "Galt Joint Union Elementary" "Southside Elementary"
# Xem danh sách các biến trong bộ dữ liệu CASchools
names(CASchools)
##  [1] "district"    "school"      "county"      "grades"      "students"   
##  [6] "teachers"    "calworks"    "lunch"       "computer"    "expenditure"
## [11] "income"      "english"     "read"        "math"
# Sử dụng hàm summary để xem thống kê mô tả của biến expenditure
summary(CASchools$expenditure)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    3926    4906    5215    5312    5601    7712
# Sắp xếp dữ liệu và hiển thị một số mẫu đầu tiên
head(sort(CASchools$expenditure))
## [1] 3926.070 4016.416 4023.532 4079.129 4136.251 4138.306

Lệnh này sẽ sắp xếp các giá trị chi tiêu cho mỗi học sinh trong bộ dữ liệu “CASchools” theo thứ tự tăng dần, sau đó hiển thị một số mẫu đầu tiên trong danh sách đã sắp xếp.

5.2 Xem biến nào là biến định tính, biến định lượng

5.2.0 Sử dụng hàm str để xem thông tin về các biến trong bộ dữ liệu

str(CASchools)
## 'data.frame':    420 obs. of  14 variables:
##  $ district   : chr  "75119" "61499" "61549" "61457" ...
##  $ school     : chr  "Sunol Glen Unified" "Manzanita Elementary" "Thermalito Union Elementary" "Golden Feather Union Elementary" ...
##  $ county     : Factor w/ 45 levels "Alameda","Butte",..: 1 2 2 2 2 6 29 11 6 25 ...
##  $ grades     : Factor w/ 2 levels "KK-06","KK-08": 2 2 2 2 2 2 2 2 2 1 ...
##  $ students   : num  195 240 1550 243 1335 ...
##  $ teachers   : num  10.9 11.1 82.9 14 71.5 ...
##  $ calworks   : num  0.51 15.42 55.03 36.48 33.11 ...
##  $ lunch      : num  2.04 47.92 76.32 77.05 78.43 ...
##  $ computer   : num  67 101 169 85 171 25 28 66 35 0 ...
##  $ expenditure: num  6385 5099 5502 7102 5236 ...
##  $ income     : num  22.69 9.82 8.98 8.98 9.08 ...
##  $ english    : num  0 4.58 30 0 13.86 ...
##  $ read       : num  692 660 636 652 642 ...
##  $ math       : num  690 662 651 644 640 ...

Hàm trên sẽ hiển thị thông tin về các biến trong bộ dữ liệu CASchools, bao gồm tên biến, loại dữ liệu và một số giá trị mẫu. Ta có thể xem đâu là biến có loại dữ liệu định tính chr (character) và đâu là biến có loại dữ liệu định lượng num (numeric)

5.2.1 Sử dụng hàm class để xem 1 biến là biến định tính hay biến định lượng

# Sử dụng hàm class để xem biến math
class(CASchools$math)
## [1] "numeric"

Kết quả trả về là numeric, đây là biến định lượng

# Sử dụng hàm class để xem biến district
class(CASchools$district)
## [1] "character"

Kết quả trả về là character, đây là biến định tính

5.2.2 Sử dụng hàm sapply để xác định loại dữ liệu của từng biến

sapply(CASchools, class)
##    district      school      county      grades    students    teachers 
## "character" "character"    "factor"    "factor"   "numeric"   "numeric" 
##    calworks       lunch    computer expenditure      income     english 
##   "numeric"   "numeric"   "numeric"   "numeric"   "numeric"   "numeric" 
##        read        math 
##   "numeric"   "numeric"

5.3 Vẽ biểu đồ

5.3.0 Biểu đồ Pie chart

Được sử dụng để biểu diễn tỷ lệ phần trăm của các biến định tính

# Vẽ biểu đồ pie chart của biến district
library(ggplot2)
ggplot(CASchools, aes(x = "", fill = district)) +
  geom_bar(width = 1) +
  coord_polar("y", start = 0) +
  theme_void()

Ý nghĩa của biểu đồ hình tròn là hiển thị tỷ lệ phần trăm của các giá trị khác nhau của biến district trong bộ dữ liệu. Mỗi phần trăm được biểu diễn bằng một phần trong đồ tròn, và màu sắc của mỗi phần tương ứng với giá trị của district.

5.3.1 Biểu đồ tương quan (Correlation plot)

Được sử dụng để hiển thị mức độ tương quan giữa các biến định lượng

# Cài đặt các gói cần thiết
options(repos = "https://cran.rstudio.com/")
install.packages("corrplot")
## Installing package into 'C:/Users/Heckler Koch/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'corrplot' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\Heckler Koch\AppData\Local\Temp\RtmpGgDZbw\downloaded_packages
library(ggplot2)
update.packages("corrplot")
library(corrplot)
## corrplot 0.92 loaded
# Vẽ biểu đồ tương quan giữa các biến  students,expenditure,calworks,lunch
tq <- CASchools[c("students", "expenditure", "calworks","lunch")]
bieudo <- cor(tq)
corrplot(bieudo, method = "circle")

5.3.2 Biểu đồ Histogram

Biểu đồ histogram là một công cụ phân tích dữ liệu thường được sử dụng để hiển thị phân phối tần suất của một biến số.

# vẽ biểu đồ histogram cho biến income trong bộ dữ liệu CASchools
library(ggplot2)
ggplot(CASchools, aes(x = income)) +
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

5.4 Phân tích hồi quy tuyến tính với bộ dữ liệu CASchools

Phân tích mối quan hệ giữa số lượng học sinh và kinh phí giáo dục.Ta có thể coi biến students là biến phụ thuộc và biến expenditure là biến độc lập. Mục tiêu của phân tích hồi quy tuyến tính là xem liệu có mối tương quan và ảnh hưởng giữa kinh phí giáo dục và số lượng học sinh trong các trường học.

# Sử dụng hàm lm để phân tích hồi quy
sm <- lm(students ~ expenditure, data = CASchools)
summary(sm)
## 
## Call:
## lm(formula = students ~ expenditure, data = CASchools)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3433.7 -2192.7 -1398.1   325.6 24929.8 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 6310.8178  1605.0426   3.932 9.86e-05 ***
## expenditure   -0.6931     0.3000  -2.310   0.0214 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3893 on 418 degrees of freedom
## Multiple R-squared:  0.01261,    Adjusted R-squared:  0.01025 
## F-statistic: 5.337 on 1 and 418 DF,  p-value: 0.02136

Dựa vào kết quả chạy ta thấy:

Residuals: Mô tả về các giá trị dư thừa (residuals) của mô hình, bao gồm giá trị tối thiểu Min = -3433.7, phân vị thứ nhất (1Q)= -2192.7, trung vị (Median)= -1398.1, phân vị thứ ba (3Q)= 325.6 và giá trị tối đa (Max)= 24929.8

Coefficients: Hiển thị các hệ số ước lượng trong mô hình

Ước lượng hệ số (Estimate):

  • Intercept: 6310.8178
  • expenditure: -0.6931

Độ lệch chuẩn của ước lượng (Standard Error):

  • Intercept: 1605.0426
  • expenditure: 0.3000

Giá trị t (t value):

  • Intercept: 3.932
  • expenditure: -2.310

Giá trị p (Pr(>|t|)):

  • Intercept: 9.86e-05 (rất thấp, cho thấy sự tương quan có ý nghĩa đáng kể)
  • expenditure: 0.0214 (thấp, cho thấy sự tương quan có ý nghĩa đáng kể)

Độ lỗi chuẩn của dư thừa (Residual standard error): 3893

  • R-quadrat (Multiple R-squared): 0.01261 (cho biết mức độ giải thích của mô hình)

  • R-quadrat đã điều chỉnh (Adjusted R-squared): 0.01025 (đã điều chỉnh dựa trên số lượng biến trong mô hình)

  • Giá trị F (F-statistic): 5.337 (để kiểm tra toàn bộ mô hình)

  • Giá trị p của F (p-value): 0.02136 (thấp, cho thấy mô hình có ý nghĩa đáng kể)

Bài tập về nhà tuần 4

#Gọi package AER và bộ dữ liệu CASchools
library(AER)
data(CASchools)

4.1 So sánh trung bình giữa các nhóm

4.1.1 So sánh trung bình số học sinh giữa các quận

tapply(CASchools$students, CASchools$county, mean)
##         Alameda           Butte       Calaveras    Contra Costa       El Dorado 
##        195.0000       1152.5000        777.0000       2725.8571       1372.9000 
##          Fresno           Glenn        Humboldt        Imperial            Inyo 
##        504.4167        137.6667        379.7059       1936.0000       1510.0000 
##            Kern           Kings            Lake          Lassen     Los Angeles 
##       3108.3333       1507.4444        445.0000        565.2000       5830.9259 
##          Madera           Marin       Mendocino          Merced        Monterey 
##       1021.8000       1642.8750        337.0000       2112.0000       3549.4286 
##          Nevada          Orange          Placer       Riverside      Sacramento 
##        951.0000       8223.9091       1880.8182       2848.5000       3511.4286 
##      San Benito  San Bernardino       San Diego     San Joaquin San Luis Obispo 
##       2146.6667       6469.7000       6170.2857        366.0000        217.5000 
##       San Mateo   Santa Barbara     Santa Clara      Santa Cruz          Shasta 
##       3289.2353       2409.2727       5931.9000       1184.5714        936.7692 
##        Siskiyou          Sonoma      Stanislaus          Sutter          Tehama 
##        430.2222        984.0000       3006.0000        259.1667        859.1250 
##         Trinity          Tulare        Tuolumne         Ventura            Yuba 
##        294.0000        898.9583        652.1667       4627.7778        939.5000

4.1.2 So sánh trung bình kinh phí giáo dục giữa các quận

tapply(CASchools$expenditure, CASchools$county, mean)
##         Alameda           Butte       Calaveras    Contra Costa       El Dorado 
##        6384.911        5776.724        5482.677        5269.445        5309.967 
##          Fresno           Glenn        Humboldt        Imperial            Inyo 
##        5396.978        4363.346        5449.528        5036.141        5189.628 
##            Kern           Kings            Lake          Lassen     Los Angeles 
##        5165.863        5267.910        5762.261        4944.442        5055.672 
##          Madera           Marin       Mendocino          Merced        Monterey 
##        5587.214        6158.656        6089.911        5227.237        5171.937 
##          Nevada          Orange          Placer       Riverside      Sacramento 
##        5560.375        4980.176        5026.351        4904.150        5212.460 
##      San Benito  San Bernardino       San Diego     San Joaquin San Luis Obispo 
##        5137.167        5015.355        5412.878        4885.268        5058.711 
##       San Mateo   Santa Barbara     Santa Clara      Santa Cruz          Shasta 
##        5715.444        5307.868        5560.497        5889.167        5479.120 
##        Siskiyou          Sonoma      Stanislaus          Sutter          Tehama 
##        6241.181        5660.046        4855.546        4613.043        5008.996 
##         Trinity          Tulare        Tuolumne         Ventura            Yuba 
##        5827.908        4852.233        5408.842        4964.327        5384.865

4.2 Vẽ biểu đồ phân phối

# Biểu đồ phân phối số học sinh
hist(CASchools$students, xlab = "Số lượng học sinh trong trường", main = "Phân phối số học sinh")

# Biểu đồ phân phối kinh phí giáo dục
hist(CASchools$expenditure, xlab = "Kinh phí giáo dục của trường", main = "Phân phối kinh phí giáo dục")

4.3 Phân tích hồi quy trong bộ dữ liệu CASchools

Để phân tích hồi quy dữ liệu trong bộ dữ liệu CASchools từ gói AER trong R, ta sử dụng hàm lm() để thực hiện mô hình hồi quy.

# Phân tích hồi quy với biến phụ thuộc là "students" (Số lượng học sinh trong trường) và biến độc lập là "teachers" (số lượng giáo viên):

lm(students ~ teachers, data = CASchools)
## 
## Call:
## lm(formula = students ~ teachers, data = CASchools)
## 
## Coefficients:
## (Intercept)     teachers  
##      -51.16        20.76
# Gán hàm lm(students ~ teachers, data = CASchools) vào us
us <- lm(students ~ teachers, data = CASchools)
# Tóm tắt mô hình hồi quy
summary(us)
## 
## Call:
## lm(formula = students ~ teachers, data = CASchools)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2444.60   -65.53    10.21    55.35  1878.92 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -51.1628    17.6074  -2.906  0.00386 ** 
## teachers     20.7640     0.0773 268.620  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 297.3 on 418 degrees of freedom
## Multiple R-squared:  0.9942, Adjusted R-squared:  0.9942 
## F-statistic: 7.216e+04 on 1 and 418 DF,  p-value: < 2.2e-16

4.4 Đồ thị scatter plots

# Tải gói dữ liệu
library(ggplot2)
library(AER)

4.4.1 Đồ thị scatter plots đa biến của biến students và teachers

# Tạo ma trận biểu đồ phân tán
ggplot(CASchools, aes(x = students, y = teachers)) +
  geom_point(aes(color = expenditure)) +
  labs(x = "Số lượng học sinh trong trường", y = "Số lượng giáo viên") +
  geom_smooth(method = "lm", se = FALSE)
## `geom_smooth()` using formula = 'y ~ x'

Qua đồ thị, chúng ta có thể quan sát mẫu mực chung về quan hệ giữa số lượng học sinh và số lượng giáo viên trong các trường học. Nếu có sự tương quan dương mạnh, chúng ta có thể thấy rằng các trường học có số lượng học sinh cao thường có số lượng giáo viên tương đối cao và ngược lại. Điều này có thể cho thấy một sự phụ thuộc giữa số lượng học sinh và số lượng giáo viên trong hệ thống giáo dục.

4.1.2 Đồ thị scatter plots đa biến của biến expenditure và income

ggplot(CASchools, aes(x = expenditure, y = income)) +
  geom_point(aes(color = expenditure)) +
  labs(x = "Chi tiêu cho mỗi học sinh", y = "Thu nhập trung bình của quận") +
  geom_smooth(method = "lm", se = FALSE)
## `geom_smooth()` using formula = 'y ~ x'

Qua đồ thị, chúng ta có thể quan sát mẫu mực chung về quan hệ giữa chi tiêu cho mỗi học sinh và thu nhập trung bình của quận. Nếu có sự tương quan dương, chúng ta có thể thấy rằng các trường học có chi tiêu cho học sinh cao thường có thu nhập trung bình trong khu vực tương đối cao và ngược lại. Điều này có thể cho thấy một mối quan hệ giữa kinh phí giáo dục và thu nhập trung bình trong khu vực trong hệ thống giáo dục.

Bài tập về nhà tuần 3

3.1 Lệnh pivot_longer

dùng để chuyển đổi dữ liệu từ dạng rộng (wide) sang dạng dài (long)

library(dplyr)
library(tidyr)
library(AER)
data("CASchools")
# Chuyển đổi dữ liệu từ dạng rộng sang dạng dài
long <- CASchools %>%
  pivot_longer(cols = c(income, expenditure, students),
               names_to = "variable",
               values_to = "value")
# Hiển thị kết quả
head(long)
## # A tibble: 6 × 13
##   district school   county grades teachers calworks lunch computer english  read
##   <chr>    <chr>    <fct>  <fct>     <dbl>    <dbl> <dbl>    <dbl>   <dbl> <dbl>
## 1 75119    Sunol G… Alame… KK-08      10.9    0.510  2.04       67    0     692.
## 2 75119    Sunol G… Alame… KK-08      10.9    0.510  2.04       67    0     692.
## 3 75119    Sunol G… Alame… KK-08      10.9    0.510  2.04       67    0     692.
## 4 61499    Manzani… Butte  KK-08      11.1   15.4   47.9       101    4.58  660.
## 5 61499    Manzani… Butte  KK-08      11.1   15.4   47.9       101    4.58  660.
## 6 61499    Manzani… Butte  KK-08      11.1   15.4   47.9       101    4.58  660.
## # ℹ 3 more variables: math <dbl>, variable <chr>, value <dbl>

3.2 Kiểm định sự tương quan

3.2.1 Tương quan giữa students (số lượng học sinh) và teachers (số lượng giáo viên)

data(CASchools)
correlation <- cor(CASchools$students, CASchools$teachers)
print(correlation)
## [1] 0.9971161
  • Kết quả kiểm định tương quan giữa số lượng học sinh (students) và số lượng giáo viên (teachers) là 0.9971161. Giá trị tương quan này gần bằng 1, cho thấy có một mối quan hệ dương rất mạnh giữa số lượng học sinh và số lượng giáo viên trong bộ dữ liệu CASchools.

  • Ý nghĩa của giá trị tương quan này là khi số lượng học sinh tăng, số lượng giáo viên cũng có xu hướng tăng theo và ngược lại. Kết quả này hợp lý với nhận thức chung rằng các trường học thường cần có đủ giáo viên để đảm bảo chất lượng giảng dạy cho số lượng học sinh tăng lên.

3.2.2 Tương quan giữa calworks (tỷ lệ học sinh nhận trợ cấp ) và lunch (tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí):

correlation <- cor(CASchools$calworks, CASchools$lunch)
print(correlation)
## [1] 0.7394218
  • Kết quả kiểm định tương quan giữa calworks (tỷ lệ học sinh nhận trợ cấp ) và lunch (tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí) là 0.7394218. Giá trị tương quan này có giá trị dương mạnh, cho thấy có một mối quan hệ đáng kể giữa tỷ lệ học sinh nhận trợ cấp và tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí trong bộ dữ liệu CASchools.

  • Ý nghĩa của giá trị tương quan này là khi tỷ lệ học sinh nhận trợ cấp calworks tăng, tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí cũng có xu hướng tăng theo và ngược lại. Điều này có thể chỉ ra rằng các trường học có tỷ lệ cao hơn của học sinh nhận trợ cấp CalWORKs cũng có xu hướng có tỷ lệ cao hơn của học sinh tham gia chương trình bữa trưa miễn phí.

3.2.3 Tương quan giữa expenditure (kinh phí giáo dục) và income (thu nhập trung bình trong khu vực):

correlation <- cor(CASchools$expenditure, CASchools$income)
print(correlation)
## [1] 0.3144845
  • Kết quả kiểm định tương quan giữa kinh phí giáo dục (expenditure) và thu nhập trung bình trong khu vực (income) là 0.3144845. Giá trị tương quan này cho thấy có một mối quan hệ tương đối yếu giữa kinh phí giáo dục và thu nhập trung bình trong khu vực trong bộ dữ liệu CASchools.

  • Ý nghĩa của giá trị tương quan này là có một mức độ tương quan nhất định giữa kinh phí giáo dục và thu nhập trung bình trong khu vực, tuy nhiên mối quan hệ này không mạnh. Điều này có thể chỉ ra rằng trong bộ dữ liệu CASchools, mức độ tăng/giảm kinh phí giáo dục không thể giải thích bởi mức độ tăng/giảm thu nhập trung bình trong khu vực.

3.3 Phân tích dữ liệu data CASchools

3.3.1 Tính các thống kê mô tả

summary(CASchools[c("students", "teachers", "expenditure", "income")])
##     students          teachers        expenditure       income      
##  Min.   :   81.0   Min.   :   4.85   Min.   :3926   Min.   : 5.335  
##  1st Qu.:  379.0   1st Qu.:  19.66   1st Qu.:4906   1st Qu.:10.639  
##  Median :  950.5   Median :  48.56   Median :5215   Median :13.728  
##  Mean   : 2628.8   Mean   : 129.07   Mean   :5312   Mean   :15.317  
##  3rd Qu.: 3008.0   3rd Qu.: 146.35   3rd Qu.:5601   3rd Qu.:17.629  
##  Max.   :27176.0   Max.   :1429.00   Max.   :7712   Max.   :55.328

3.3.2 Tính ma trận tương quan cho các biến số

cor_matrix <- cor(CASchools[c("students", "teachers", "expenditure", "income")])
cor_matrix
##                students    teachers expenditure     income
## students     1.00000000  0.99711606 -0.11228455 0.02839221
## teachers     0.99711606  1.00000000 -0.09519483 0.04300655
## expenditure -0.11228455 -0.09519483  1.00000000 0.31448448
## income       0.02839221  0.04300655  0.31448448 1.00000000

3.3.3 Vẽ biểu đồ tương quan giữa các biến

3.3.3.1 Biểu đồ tương quan giữa 2 biến students và teachers

plot(CASchools$students, CASchools$teachers, xlab = "Số lượng học sinh trong trường", ylab = "Số lượng giáo viên")

3.3.3.2 Biểu đồ tương quan giữa 2 biến calworks và lunch

plot(CASchools$calworks, CASchools$lunch, xlab = "Tỷ lệ học sinh nhận trợ cấp", ylab = "Tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí")

Bài tập về nhà tuần 2

2.Giới thiệu

Bộ dữ liệu chứa dữ liệu về hiệu suất kiểm tra, đặc điểm của trường học và nền tảng nhân khẩu học của học sinh cho các học khu ở California.

Khung dữ liệu chứa 240 quan sát và 14 biến. Gồm :

  • Distric: Tên quận chứa trường học
  • School: Tên trường
  • County: Tên hạt chứa trường học
  • Grades: Cấp học của trường học.
  • Students: Số lượng học sinh trong trường
  • Teachers: Số lượng giáo viên
  • Calworks: Tỷ lệ học sinh nhận trợ cấp
  • Lunch: Tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí
  • Computer: Số lượng máy tính trên học sinh
  • Expenditure: Kinh phí giáo dục của trường
  • Income: Thu nhập trung bình trong khu vực, tính theo 1000 USD
  • English: Điểm trung bình môn tiếng anh trong trường
  • Read: Điểm đọc trung bình
  • Math: Điểm trung bình môn toán

2.1 Gọi tệp dữ liệu

library(AER)
# Tải tệp dữ liệu CASchools
data("CASchools")

# Gán dữ liệu CASchools vào cas
cas <- CASchools

2.2 Lập bảng tần số cho biến county

table(cas$county)
## 
##         Alameda           Butte       Calaveras    Contra Costa       El Dorado 
##               1               6               1               7              10 
##          Fresno           Glenn        Humboldt        Imperial            Inyo 
##              12               3              17               6               1 
##            Kern           Kings            Lake          Lassen     Los Angeles 
##              27               9               2               5              27 
##          Madera           Marin       Mendocino          Merced        Monterey 
##               5               8               1              11               7 
##          Nevada          Orange          Placer       Riverside      Sacramento 
##               9              11              11               4               7 
##      San Benito  San Bernardino       San Diego     San Joaquin San Luis Obispo 
##               3              10              21               6               2 
##       San Mateo   Santa Barbara     Santa Clara      Santa Cruz          Shasta 
##              17              11              20               7              13 
##        Siskiyou          Sonoma      Stanislaus          Sutter          Tehama 
##               9              29               7               6               8 
##         Trinity          Tulare        Tuolumne         Ventura            Yuba 
##               2              24               6               9               2

Từ kết quả trên ta thấy số lần xuất hiện của mỗi giá trị của biến “county” trong bộ dữ liệu. Cụ thể, nó cho biết số lượng trường học trong mỗi hạt (county) và số lượng trường học tương ứng với mỗi hạt. Ví dụ,Alameda có 1 trường học, Butte có 6 trường học, Calaveras có 1 trường học , các chỉ số còn lại tương tự

# Cấu trúc cơ bản của bộ dữ liệu gồm số lượng quan sát và giá trị
str(cas)
## 'data.frame':    420 obs. of  14 variables:
##  $ district   : chr  "75119" "61499" "61549" "61457" ...
##  $ school     : chr  "Sunol Glen Unified" "Manzanita Elementary" "Thermalito Union Elementary" "Golden Feather Union Elementary" ...
##  $ county     : Factor w/ 45 levels "Alameda","Butte",..: 1 2 2 2 2 6 29 11 6 25 ...
##  $ grades     : Factor w/ 2 levels "KK-06","KK-08": 2 2 2 2 2 2 2 2 2 1 ...
##  $ students   : num  195 240 1550 243 1335 ...
##  $ teachers   : num  10.9 11.1 82.9 14 71.5 ...
##  $ calworks   : num  0.51 15.42 55.03 36.48 33.11 ...
##  $ lunch      : num  2.04 47.92 76.32 77.05 78.43 ...
##  $ computer   : num  67 101 169 85 171 25 28 66 35 0 ...
##  $ expenditure: num  6385 5099 5502 7102 5236 ...
##  $ income     : num  22.69 9.82 8.98 8.98 9.08 ...
##  $ english    : num  0 4.58 30 0 13.86 ...
##  $ read       : num  692 660 636 652 642 ...
##  $ math       : num  690 662 651 644 640 ...
# Tập hợp các biến số vào vas
vas <- setdiff(names(cas),c("district","school","county","grades","read","math"))
# Mức độ chi tiêu cho mỗi học sinh khác nhau
round(t(psych::describe(cas$expenditure)), 1)
##              X1
## vars        1.0
## n         420.0
## mean     5312.4
## sd        633.9
## median   5214.5
## trimmed  5252.9
## mad       487.2
## min      3926.1
## max      7711.5
## range    3785.4
## skew        1.1
## kurtosis    1.9
## se         30.9
# Biểu đồ mức độ chi tiêu cho mỗi học sinh khác nhau
library(ggplot2)
qplot(expenditure, data = cas) + xlim(0, 8000) + xlab("Số tiền chi tiêu cho mỗi học sinh ($)") + ylab("Số lượng trường học")
## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 2 rows containing missing values (`geom_bar()`).

2.3 Tính toán và định dạng độ tương quan

corExp <- cor(cas["expenditure"], cas[setdiff(vas,"expenditure")])
corExp <- round(t(corExp), 2)
corExp[order(corExp[, 1], decreasing = TRUE), , drop = FALSE]
##          expenditure
## income          0.31
## calworks        0.07
## lunch          -0.06
## computer       -0.07
## english        -0.07
## teachers       -0.10
## students       -0.11

Từ kết quả ta thấy

  • income: Độ tương quan là 0.31. Có một mức tương quan dương vừa phải giữa thu nhập và chi tiêu. Điều này cho thấy rằng có một mối liên hệ tương đối giữa thu nhập và mức chi tiêu trong dữ liệu. Giá trị tương quan 0.31 cho thấy mức độ tương quan không mạnh mẽ, nhưng vẫn có một sự tương quan dương nhất định giữa hai biến.
  • Độ tương quan là 0.07. Có một mức tương quan dương nhỏ giữa sự tham gia vào chương trình CalWORKs (hỗ trợ tiền mặt cho gia đình có trẻ em) và mức chi tiêu. Tuy nhiên, giá trị tương quan này rất nhỏ, cho thấy mối liên hệ không mạnh mẽ giữa hai biến.
  • lunch: Độ tương quan là -0.06. Có một mức tương quan âm nhỏ giữa việc nhận bữa trưa miễn phí và mức chi tiêu. Giá trị tương quan này cũng rất nhỏ, cho thấy mối liên hệ không mạnh mẽ giữa hai biến.
  • computer: Độ tương quan là -0.07. Có một mức tương quan âm nhỏ giữa việc sở hữu máy tính và mức chi tiêu. Giá trị tương quan này cũng rất nhỏ, cho thấy mối liên hệ không mạnh mẽ giữa hai biến.
  • english: Độ tương quan là -0.07. Có một mức tương quan âm nhỏ giữa điểm môn tiếng Anh và mức chi tiêu. Giá trị tương quan này cũng rất nhỏ, cho thấy mối liên hệ không mạnh mẽ giữa hai biến.
  • teachers: Độ tương quan là -0.10. Có một mức tương quan âm nhỏ giữa số lượng giáo viên và mức chi tiêu. Giá trị tương quan này cũng rất nhỏ, cho thấy mối liên hệ không mạnh mẽ giữa hai biến.
  • Độ tương quan là -0.11. Có một mức tương quan âm nhỏ giữa số lượng học sinh và mức chi tiêu trong bộ dữ liệu CASchools. Giá trị tương quan âm cho thấy rằng khi số lượng học sinh tăng, mức chi tiêu trong trường học có xu hướng giảm đi một chút.
# Mối tương quan giữa tỷ lệ học sinh nhận trợ cấp và tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí
cor(CASchools$calworks, CASchools$lunch)
## [1] 0.7394218

Giá trị tương quan 0.7394218 cho thấy có một mối liên hệ dương mạnh giữa hai biến. Điều này có thể được hiểu như sau: Khi tỷ lệ % đủ điều kiện hỗ trợ thu nhập tăng, thì tỷ lệ bữa trưa cũng có xu hướng tăng, khi tỷ lệ % đủ điều kiện hỗ trợ thu nhập giảm, tỷ lệ bữa trưa cũng có xu hướng giảm. Mối tương quan này cho thấy có sự tương quan tích cực giữa hai biến này trong bộ dữ liệu CASchools.

2.4 Tóm tắt thống kê cho dữ liệu

summary(cas$math)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   605.4   639.4   652.5   653.3   665.9   709.5
  • Giá trị nhỏ nhất (Minimum): 605.4
  • Tứ phân vị thứ nhất (1st Quartile): 639.4
  • Giá trị trung vị (Median): 652.5
  • Giá trị trung bình (Mean): 653.3
  • Tứ phân vị thứ ba (3rd Quartile): 665.9
  • Giá trị lớn nhất (Maximum): 709.5

Ý nghĩa của các giá trị này là:

  • Giá trị nhỏ nhất (Minimum) là 605.4, đại diện cho điểm toán trung bình thấp nhất trong dữ liệu.
  • Tứ phân vị thứ nhất (1st Quartile) là 639.4, chỉ có 25% giá trị dưới giá trị này.
  • Giá trị trung vị (Median) là 652.5, chỉ có 50% giá trị nằm dưới giá trị này và 50% nằm trên giá trị này. Đây cũng có thể được hiểu là giá trị trung bình ở trung tâm của phân phối.
  • Giá trị trung bình (Mean) là 653.3, đại diện cho giá trị trung bình của biến read trong toàn bộ dữ liệu.
  • Tứ phân vị thứ ba (3rd Quartile) là 665.9, chỉ có 75% giá trị nằm dưới giá trị này.
  • Giá trị lớn nhất (Maximum) là 709.5, đại diện cho điểm toán trung bình cao nhất trong dữ liệu.
summary(cas$read)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   604.5   640.4   655.8   655.0   668.7   704.0
  • Giá trị nhỏ nhất (Minimum): 604.5
  • Tứ phân vị thứ nhất (1st Quartile): 640.4
  • Giá trị trung vị (Median): 655.8
  • Giá trị trung bình (Mean): 655.0
  • Tứ phân vị thứ ba (3rd Quartile): 668.7
  • Giá trị lớn nhất (Maximum): 704.0

Ý nghĩa của các giá trị này là:

  • Giá trị nhỏ nhất (Minimum) là 604.5, đại diện cho điểm đọc trung bình thấp nhất trong dữ liệu.
  • Tứ phân vị thứ nhất (1st Quartile) là 640.4, chỉ có 25% giá trị dưới giá trị này.
  • Giá trị trung vị (Median) là 655.8, chỉ có 50% giá trị nằm dưới giá trị này và 50% nằm trên giá trị này. Đây cũng có thể được hiểu là giá trị trung bình ở trung tâm của phân phối.
  • Giá trị trung bình (Mean) là 655.0, đại diện cho giá trị trung bình của biến read trong toàn bộ dữ liệu.
  • Tứ phân vị thứ ba (3rd Quartile) là 668.7, chỉ có 75% giá trị nằm dưới giá trị này.
  • Giá trị lớn nhất (Maximum) là 704.0, đại diện cho điểm đọc trung bình cao nhất trong dữ liệu.

Hàm tính trung bình

Trung bình điểm đọc

mean(cas$read)
## [1] 654.9705

Trung bình điểm toán

mean(cas$math)
## [1] 653.3426

Hàm lượng tử

quantile(cas$math,0.6)
##    60% 
## 657.78

Có 60 % điểm trung bình môn toán dưới 657.78

quantile(cas$read,0.35)
##     35% 
## 646.685

Có 35 % điểm đọc trung bình dưới 646.685

Hàm phương sai Var

var (cas$read)
## [1] 404.3309

Phương sai 404.3309 cho biết rằng các giá trị trong biến read của bộ dữ liệu CASchool có sự biến đổi lớn quanh giá trị trung bình. Điều này có thể cho thấy sự đa dạng và phân tán của khả năng đọc trong các học sinh trong bộ dữ liệu này

var (cas$math)
## [1] 351.7201

Phương sai 351.7201 cho biết rằng các giá trị trong biến math của bộ dữ liệu CASchool có sự biến đổi lớn quanh giá trị trung bình. Điều này có thể cho thấy sự đa dạng và phân tán của khả năng toán học trong các học sinh trong bộ dữ liệu này.

Vẽ đồ thị cho biến math

library(ggplot2)
library(AER)
data(CASchools)
ggplot(data = CASchools, aes(x = 1:nrow(CASchools), y = math)) +
  geom_line() +
  labs(x = "Index", y = "Điểm toán", title = "Đồ thị điểm toán trung bình")

Vẽ đồ thị cho biến read

plot(CASchools$read, type = "l", xlab = "Index", ylab = "Điểm đọc trung bình", main = "Đồ thị điểm đọc trung bình")

Bài tập về nhà tuần 1

1.Giới thiệu

Bộ dữ liệu chứa dữ liệu về hiệu suất kiểm tra, đặc điểm của trường học và nền tảng nhân khẩu học của học sinh cho các học khu ở California.

Khung dữ liệu chứa 240 quan sát và 14 biến. Gồm :

  • Distric: Tên quận chứa trường học
  • School: Tên trường
  • County: Tên hạt chứa trường học
  • Grades: Cấp học của trường học.
  • Students: Số lượng học sinh trong trường
  • Teachers: Số lượng giáo viên
  • Calworks: Tỷ lệ học sinh nhận trợ cấp
  • Lunch: Tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí
  • Computer: Số lượng máy tính trên học sinh
  • Expenditure: Kinh phí giáo dục của trường
  • Income: Thu nhập trung bình trong khu vực, tính theo 1000 USD
  • English: Điểm trung bình môn tiếng anh trong trường
  • Read: Điểm đọc trung bình
  • Math: Điểm trung bình môn toán

1.2 Trích xuất dữ liệu

Gọi thư viện package AER

Hiển thị cấu trúc bên trong của gói dữ liệu

data("CASchools")
str(CASchools)
## 'data.frame':    420 obs. of  14 variables:
##  $ district   : chr  "75119" "61499" "61549" "61457" ...
##  $ school     : chr  "Sunol Glen Unified" "Manzanita Elementary" "Thermalito Union Elementary" "Golden Feather Union Elementary" ...
##  $ county     : Factor w/ 45 levels "Alameda","Butte",..: 1 2 2 2 2 6 29 11 6 25 ...
##  $ grades     : Factor w/ 2 levels "KK-06","KK-08": 2 2 2 2 2 2 2 2 2 1 ...
##  $ students   : num  195 240 1550 243 1335 ...
##  $ teachers   : num  10.9 11.1 82.9 14 71.5 ...
##  $ calworks   : num  0.51 15.42 55.03 36.48 33.11 ...
##  $ lunch      : num  2.04 47.92 76.32 77.05 78.43 ...
##  $ computer   : num  67 101 169 85 171 25 28 66 35 0 ...
##  $ expenditure: num  6385 5099 5502 7102 5236 ...
##  $ income     : num  22.69 9.82 8.98 8.98 9.08 ...
##  $ english    : num  0 4.58 30 0 13.86 ...
##  $ read       : num  692 660 636 652 642 ...
##  $ math       : num  690 662 651 644 640 ...

1.3 Mô tả dữ liệu

summary(CASchools)
##    district            school                  county      grades   
##  Length:420         Length:420         Sonoma     : 29   KK-06: 61  
##  Class :character   Class :character   Kern       : 27   KK-08:359  
##  Mode  :character   Mode  :character   Los Angeles: 27              
##                                        Tulare     : 24              
##                                        San Diego  : 21              
##                                        Santa Clara: 20              
##                                        (Other)    :272              
##     students          teachers          calworks          lunch       
##  Min.   :   81.0   Min.   :   4.85   Min.   : 0.000   Min.   :  0.00  
##  1st Qu.:  379.0   1st Qu.:  19.66   1st Qu.: 4.395   1st Qu.: 23.28  
##  Median :  950.5   Median :  48.56   Median :10.520   Median : 41.75  
##  Mean   : 2628.8   Mean   : 129.07   Mean   :13.246   Mean   : 44.71  
##  3rd Qu.: 3008.0   3rd Qu.: 146.35   3rd Qu.:18.981   3rd Qu.: 66.86  
##  Max.   :27176.0   Max.   :1429.00   Max.   :78.994   Max.   :100.00  
##                                                                       
##     computer       expenditure       income          english      
##  Min.   :   0.0   Min.   :3926   Min.   : 5.335   Min.   : 0.000  
##  1st Qu.:  46.0   1st Qu.:4906   1st Qu.:10.639   1st Qu.: 1.941  
##  Median : 117.5   Median :5215   Median :13.728   Median : 8.778  
##  Mean   : 303.4   Mean   :5312   Mean   :15.317   Mean   :15.768  
##  3rd Qu.: 375.2   3rd Qu.:5601   3rd Qu.:17.629   3rd Qu.:22.970  
##  Max.   :3324.0   Max.   :7712   Max.   :55.328   Max.   :85.540  
##                                                                   
##       read            math      
##  Min.   :604.5   Min.   :605.4  
##  1st Qu.:640.4   1st Qu.:639.4  
##  Median :655.8   Median :652.5  
##  Mean   :655.0   Mean   :653.3  
##  3rd Qu.:668.7   3rd Qu.:665.9  
##  Max.   :704.0   Max.   :709.5  
## 

Trong 420 quan sát :

students : Số lượng học sinh trong trường

  • Số lượng học sinh trong trường thấp nhất là 81
  • Số lượng học sinh trong trường trung bình là 950
  • Số lượng học sinh trong trường cao nhất là 27176

teachers : Số lượng giáo viên

  • số giáo viên thấp nhất là 4.85
  • số giáo viên trung bình là 48.56
  • số giáo viên cao nhất là 1429

calworks : Tỷ lệ học sinh nhận trợ cấp

  • Tỷ lệ học sinh nhận trợ cấp thấp nhất là 0
  • Tỷ lệ học sinh nhận trợ cấp trung bình là 10.520
  • Tỷ lệ học sinh nhận trợ cấp cao nhất là 78.994

lunch : Tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí

  • Tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí thấp nhất là 0
  • Tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí trung bình là 41.75
  • Tỷ lệ học sinh tham gia chương trình bữa trưa miễn phí cao nhất là 100

computer : Số lượng máy tính

  • số lượng máy tính thấp nhất là 0
  • số lượng máy tính trung bình là 117.5
  • số lượng máy tính cao nhất là 3324

expenditure : Kinh phí giáo dục của trường

  • Kinh phí giáo dục của trường thấp nhất là 3926
  • Kinh phí giáo dục của trường trung bình là 5215
  • Kinh phí giáo dục của trường cao nhất là 7712

income : Thu nhập trung bình trong khu vực, tính theo 1000 USD - Thu nhập trung bình trong khu vực thấp nhất là 5.335 - Thu nhập trung bình trong khu vực trung bình là 13.728 - Thu nhập trung bình trong khu vực cao nhất là 55.328

english : Điểm trung bình môn tiếng anh trong trường

  • Điểm trung bình môn tiếng anh trong trường thấp nhất là 0
  • Điểm trung bình môn tiếng anh trong trường trung bình là 8.778
  • Điểm trung bình môn tiếng anh trong trường cao nhất là 85.540

read : Điểm đọc trung bình

  • điểm đọc trung bình thấp nhất là 604.5
  • điểm đọc trung bình là 655.8
  • điểm đọc trung bình cao nhất là 704.0

math : Điểm trung bình môn toán

  • điểm trung bình môn toán thấp nhất là 605.4
  • điểm trung bình môn toán trung bình là 652.5
  • điểm trung bình môn toán cao nhất là 709.5
# Gán tên mới là từ viết tắt cho các biến trong CASchools

names(CASchools) <- c("dis","sch","cou","gra","stu","tea","cal","lun","com","exp","inc","eng","rea","mat")
# Lấy 4 dòng đầu tiên của bảng dữ liệu
head(CASchools,4)
##     dis                             sch     cou   gra  stu   tea     cal
## 1 75119              Sunol Glen Unified Alameda KK-08  195 10.90  0.5102
## 2 61499            Manzanita Elementary   Butte KK-08  240 11.15 15.4167
## 3 61549     Thermalito Union Elementary   Butte KK-08 1550 82.90 55.0323
## 4 61457 Golden Feather Union Elementary   Butte KK-08  243 14.00 36.4754
##       lun com      exp    inc       eng   rea   mat
## 1  2.0408  67 6384.911 22.690  0.000000 691.6 690.0
## 2 47.9167 101 5099.381  9.824  4.583333 660.5 661.9
## 3 76.3226 169 5501.955  8.978 30.000002 636.3 650.9
## 4 77.0492  85 7101.831  8.978  0.000000 651.9 643.5
# Lấy 4 dòng cuối của bảng dữ liệu
tail(CASchools,4)
##       dis                    sch         cou   gra  stu    tea     cal     lun
## 417 69518   Los Altos Elementary Santa Clara KK-08 3724 208.48  1.0741  1.5038
## 418 72611 Somis Union Elementary     Ventura KK-08  441  20.15  3.5635 37.1938
## 419 72744      Plumas Elementary        Yuba KK-08  101   5.00 11.8812 59.4059
## 420 72751   Wheatland Elementary        Yuba KK-08 1778  93.40  6.9235 47.5712
##     com      exp      inc       eng   rea   mat
## 417 721 5741.463 41.73411  4.726101 704.0 709.5
## 418  45 4402.832 23.73300 24.263039 648.3 641.7
## 419  14 4776.336  9.95200  2.970297 667.9 676.5
## 420 313 5993.393 12.50200  5.005624 660.5 651.0
# Gán biến mat trong bộ dữ liệu CASchools vào bn
bn <- CASchools$mat

# Phân tổ dữ liệu cho biến math, phân thành 5 tổ
cut(bn,5)
##   [1] (689,710] (647,668] (647,668] (626,647] (626,647] (605,626] (605,626]
##   [8] (605,626] (605,626] (605,626] (605,626] (605,626] (605,626] (605,626]
##  [15] (605,626] (605,626] (605,626] (605,626] (605,626] (605,626] (605,626]
##  [22] (605,626] (605,626] (605,626] (605,626] (605,626] (605,626] (626,647]
##  [29] (626,647] (605,626] (626,647] (626,647] (626,647] (605,626] (626,647]
##  [36] (626,647] (626,647] (605,626] (626,647] (626,647] (626,647] (626,647]
##  [43] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [50] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [57] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [64] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [71] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [78] (605,626] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [85] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [92] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
##  [99] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
## [106] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
## [113] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
## [120] (626,647] (626,647] (647,668] (626,647] (626,647] (626,647] (626,647]
## [127] (647,668] (647,668] (626,647] (626,647] (626,647] (647,668] (626,647]
## [134] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647] (626,647]
## [141] (626,647] (626,647] (647,668] (626,647] (626,647] (626,647] (626,647]
## [148] (647,668] (626,647] (626,647] (626,647] (647,668] (647,668] (626,647]
## [155] (626,647] (647,668] (647,668] (626,647] (647,668] (647,668] (626,647]
## [162] (626,647] (626,647] (647,668] (647,668] (647,668] (626,647] (647,668]
## [169] (647,668] (647,668] (626,647] (647,668] (647,668] (647,668] (626,647]
## [176] (626,647] (626,647] (647,668] (647,668] (626,647] (647,668] (647,668]
## [183] (647,668] (626,647] (647,668] (647,668] (647,668] (647,668] (647,668]
## [190] (647,668] (647,668] (647,668] (647,668] (647,668] (626,647] (647,668]
## [197] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [204] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [211] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [218] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [225] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [232] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [239] (626,647] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [246] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [253] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [260] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [267] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (668,689]
## [274] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [281] (647,668] (647,668] (647,668] (647,668] (647,668] (668,689] (668,689]
## [288] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [295] (647,668] (647,668] (647,668] (647,668] (647,668] (668,689] (647,668]
## [302] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668] (647,668]
## [309] (647,668] (647,668] (647,668] (668,689] (647,668] (647,668] (668,689]
## [316] (647,668] (647,668] (647,668] (647,668] (647,668] (668,689] (647,668]
## [323] (647,668] (668,689] (668,689] (647,668] (668,689] (668,689] (668,689]
## [330] (668,689] (668,689] (668,689] (647,668] (647,668] (668,689] (668,689]
## [337] (647,668] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689]
## [344] (668,689] (647,668] (647,668] (668,689] (668,689] (647,668] (668,689]
## [351] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689]
## [358] (647,668] (668,689] (668,689] (647,668] (668,689] (668,689] (668,689]
## [365] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689]
## [372] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689]
## [379] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689]
## [386] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689]
## [393] (668,689] (668,689] (668,689] (668,689] (668,689] (668,689] (689,710]
## [400] (668,689] (668,689] (668,689] (689,710] (689,710] (689,710] (689,710]
## [407] (689,710] (689,710] (689,710] (689,710] (689,710] (689,710] (689,710]
## [414] (689,710] (689,710] (689,710] (689,710] (626,647] (668,689] (647,668]
## Levels: (605,626] (626,647] (647,668] (668,689] (689,710]
# Lập bảng tần số cho biến math
table(cut(bn,5))
## 
## (605,626] (626,647] (647,668] (668,689] (689,710] 
##        26       132       168        77        17

Từ bảng tần số ta thấy số điểm (605,626) có 26 người đạt được, số điểm ( 626,647) có 132 người đạt được, số điểm (647,668) có 168 người đạt được, số điểm ( 668,689) có 77 người đạt được và số điểm ( 689,710) có 17 người đạt được.