# 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
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)
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))
# 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()`).
# 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()
# 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.
# 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.
# 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()`).
# 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()
# 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.
# 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()
# 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()`).
# 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.
# 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
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"
Để 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 :
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"
# 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.
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)
# 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
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"
Đượ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.
Đượ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")
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`.
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):
Độ lệch chuẩn của ước lượng (Standard Error):
Giá trị t (t value):
Giá trị p (Pr(>|t|)):
Độ 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ể)
#Gọi package AER và bộ dữ liệu CASchools
library(AER)
data(CASchools)
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
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
# 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")
Để 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
# Tải gói dữ liệu
library(ggplot2)
library(AER)
# 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.
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.
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>
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.
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í.
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.
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
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
plot(CASchools$students, CASchools$teachers, xlab = "Số lượng học sinh trong trường", ylab = "Số lượng giáo viên")
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ộ 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 :
library(AER)
# Tải tệp dữ liệu CASchools
data("CASchools")
# Gán dữ liệu CASchools vào cas
cas <- CASchools
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()`).
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
# 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.
summary(cas$math)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 605.4 639.4 652.5 653.3 665.9 709.5
Ý nghĩa của các giá trị này là:
summary(cas$read)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 604.5 640.4 655.8 655.0 668.7 704.0
Ý nghĩa của các giá trị này là:
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ộ 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 :
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 ...
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
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
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 - 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
read : Điểm đọc trung bình
math : Điểm trung bình môn toán
# 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.