Khai thác dữ liệu cơ bản với R

Nguyen Ngoc Hien

Tháng 3 20, 2022

Nội dung

  • Cài đặt R
  • Lệnh cơ bản với đối tượng (objects) và hàm (functions)
  • Nhập dữ liệu từ Excel (.csv)
  • Trực quan hóa dữ liệu
  • Thống kê ứng dụng
  • Những ứng dụng khác

Nội dung được trích từ sách Khai thác dữ liệu với R

Cài đặt R

Để cài đặt R với phiên bản mới nhất bạn đọc thực hiện các bước sau:

  1. Bước 1: Truy cập vào website https://cran.r-project.org/.
  2. Bước 2: Tải phiên bản phù hợp với hệ điều hành.
  3. Bước 3: Cài đặt và khởi động phần mềm R như một phần mềm thông thường khác

Tập tin thực hành

Tập tin dữ liệu sau đây được sử dụng kèm theo sách Khai thác dữ liệu với R

https://github.com/ngochien1990/khai-thac-du-lieu-voi-r

Lệnh cơ bản với đối tượng (objects) và hàm (functions)

Môi trường R

Lệnh cơ bản với đối tượng (objects) và hàm (functions)

Ngôn ngữ R sử dụng dấu “<-” hoặc “=” hoặc “->” để gán dữ liệu cho biến hoặc đối tượng

value.1 <- 1
value.2 <- 2
value.1 + value.2
## [1] 3

Lệnh cơ bản với đối tượng (objects) và hàm (functions)

Khai báo đối tượng dạng vector. Trong đó, hàm c(concatenate), được sử dụng để gán vector cho đối tượng

numeric.data <- c(1, 2, 3, 4, 5, 6, 7)
numeric.data + 1
## [1] 2 3 4 5 6 7 8

Lệnh cơ bản với đối tượng (objects) và hàm (functions)

Khai báo đối tượng dạng bảng. Trong đó, hàm data.frame, được sử dụng để gán bảng cho đối tượng

A <- c(1, 3, 4)
B <- c(2, 3, 5)
my.table <- data.frame(A, B)
my.table # hiển thị my.table 
##   A B
## 1 1 2
## 2 3 3
## 3 4 5

Lệnh cơ bản với đối tượng (objects) và hàm (functions)

Bạn đọc có thể tạo ra một hàm riêng bằng cách sử dụng những phép toán và hàm đã có bằng hàm function

my.fuction <- function(x,y)
  {data.frame(x, y)}

A <- c(1, 3, 4)
B <- c(2, 3, 5)
my.fuction(A,B) 
##   x y
## 1 1 2
## 2 3 3
## 3 4 5

Nhập dữ liệu từ các tập tin có định dạng khác nhau

Bạn cũng có thể nhập dữ liệu từ nhiều nguồn khác nhau: (.txt), (.csv), (.xlsx), (.sav), (.rda)

Trong trường hợp dữ liệu được lưu bằng phần mềm Excel có định dạng là .xls hay .xlsx, bạn đọc nên chuyển định dạng trên thành định dạng .csv (Comma delimited) như sau:

  1. Mở tập tin excel chứa dữ liệu, chọn Save as.
  2. Chọn Save as type “CSV (Comma delimited)”.
  3. Lưu vào thư mục mong muốn.

Nhập dữ liệu từ Excel (.csv)

Bạn đọc nhập tập dữ liệu có định dạng .csv vào R bằng cách sử dụng hàm read.csv.

#Thiết lập đường link chứa tập tin .csv mong muốn
setwd("C:/Tap tin thuc hanh R/Muc 2-Doi tuong va ham") 
#Gán tập dữ liệu cho data.csv
data.csv <- read.csv("excelfile.csv", header = TRUE) 
data.csv
##   A  B  C
## 1 1 32 43
## 2 2  3  5
## 3 3 34 32
## 4 4  3 32

Trực quan hóa dữ liệu

Điểm mạnh tuyệt đối của R là khả năng trực quan hóa dữ liệu. Trong đó, một số các biểu đồ thông dụng:

  1. Biểu đồ thanh (bar chart)
  2. Biểu đồ tròn (pie chart)
  3. Biểu đồ hộp (box plot)
  4. Biểu đồ chấm (dot plot)
  5. Biểu đồ phân tán (scatter plot)
  6. Biểu đồ đo lường tính liên tục (strip chart)
  7. Biểu đồ tương quan nhiều cặp (pairs)
  8. Biểu đồ đường thẳng (mat plot)
  9. Biểu đồ tần suất (histogram)
  10. Vv….

Trực quan hóa dữ liệu

Biểu đồ thanh (bar chart)

#Thiết lập đường link chứa tập tin .csv mong muốn
setwd("C:/Tap tin thuc hanh R/Muc 5-Bieu do") 
#Gán tập dữ liệu cho data.csv
plot.data <- read.csv("graphicsData.csv", header = TRUE)
head(plot.data) #hiển thị một số dòng dữ liệu trong tập dữ liệu
##   machines date output.1 output.2 output.3 defects  OEE  fuel failureMinutes
## 1     ma.1 1980      854     1052      926      17 0.95 63.20         109.11
## 2     ma.2 1981      801      992      925      10 0.68 77.47         114.48
## 3     ma.3 1982      421      473      436       7 0.63 69.64          66.06
## 4     ma.4 1983     1056     1177     1190      16 0.87 83.69         202.87
## 5     ma.5 1984     1132     1099     1040      14 0.91 75.72         322.65
## 6     ma.6 1985     1057     1088     1026      13 0.45 46.02         182.74
##   useStatus maintenance men
## 1   Operate        Nu.4   6
## 2   Operate        Nu.4   6
## 3      Stop        Nu.1   4
## 4   Operate        Nu.1   6
## 5      Stop        Nu.2   8
## 6      Stop        Nu.1   6

Trực quan hóa dữ liệu

Biểu đồ thanh (bar chart)

#Sử dụng tập dữ liệu plot.data 
attach(plot.data) 
#Tóm tắt cột useStatus theo bảng tần số 
barData.1 <- table(useStatus) 
#Vector màu tương ứng cho các phân loại của biến useStatus 
colorRange.1 <-topo.colors(length(unique( useStatus))) 
#Vẽ biểu đồ thanh ngang 
barplot(barData.1, horiz = TRUE, density = 10, col = colorRange.1) 
#Gán nhãn 
title(main = "Horizontal bar", xlab = "Status", ylab = "Frequency")

Trực quan hóa dữ liệu

Biểu đồ thanh (bar chart)

Trực quan hóa dữ liệu

Biểu đồ tròn (pie chart)

#Sử dụng tập dữ liệu plot.data
attach(plot.data)
#Tóm tắt cột maintenance theo bảng tần số 
pieData.1 <- table(maintenance) 
#Biểu đồ pie của biến maintenance 
pie(pieData.1, main = "Simple pie 2D") 

Trực quan hóa dữ liệu

Biểu đồ tròn (pie chart)

Trực quan hóa dữ liệu

Biểu đồ hộp (box plot)

#Sử dụng tập dữ liệu plot.data (hướng dẫn trang 113) 
attach(plot.data) 
#Tạo ra khung biểu đồ với 1 hàng và 2 cột 
par(mfrow = c(1,2)) 
#Biểu đồ hộp ngang (horizontal box plot) 
boxplot(fuel ~ useStatus, xlab = "Status", ylab = "Fuel") 
#Gán nhãn 
title(main = "Horizontal Box plot") 
#Vector màu tương ứng cho các phân loại của biến men 
colorBox <- rainbow(length(unique(men)))
boxplot(defects ~ men, horizontal = TRUE, col = colorBox,
xlab ="Defects", ylab = "Group of Men") 
#Gán nhãn 
title(main = "Vertical Box plot") 
#Gán chú thích 
legend("topleft", legend = unique(men), fill = colorBox)

Trực quan hóa dữ liệu

Biểu đồ hộp (box plot)

Trực quan hóa dữ liệu

Biểu đồ hộp (box plots)

Trực quan hóa dữ liệu

Biểu đồ Sunbrust

Thống kê ứng dụng

R tồn tại để thực hiện các bài toán thống kê ứng dụng. Một số nội dung cơ bản bao gồm:

  1. Thống kê mô tả
  2. Biến ngẫu nhiên và phân phối xác suất
  3. Kiểm định giả thuyết thống kê
  4. Phân tích phương sai
  5. Phân tích hồi quy
  6. Vv….

Thống kê mô tả

Mục đính là mô tả, tóm tắt và hiểu được khuynh hướng tập trung và phân tán của tập dữ liệu. Ví dụ như:

#Thiết lập đường link chứa tập tin .csv mong muốn
setwd("C:/Tap tin thuc hanh R/Muc 3-Cac ham thong ke co ban")
#Gán tập dữ liệu cho data.csv
data <-read.csv("descriptiveStatistics.csv", header = TRUE) 
#Kích hoạt tập dữ liệu
attach(data)
#Cấu trúc của tập dữ liệu
str(data)
## 'data.frame':    50 obs. of  3 variables:
##  $ Course     : chr  "Lean" "Lean" "Lean" "Lean" ...
##  $ Score      : int  8 6 9 7 10 8 7 5 7 7 ...
##  $ Countryside: chr  "HCM" "HaNoi" "NamDinh" "Hue" ...

Thống kê mô tả

Bảng tóm tắt các đại lượng thống kê mô tả cho biến Score của tập dữ liệu “data”:

summary(Score) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00    5.25    7.00    7.30    8.75   10.00

Kiểm định giả thuyết thống kê

Mục đính là kểm định giả thuyết có hay không sự khác biệt một cách có ý nghĩa của tham số tổng thế: trung bình, phương sai, tỷ lệ….

Vi dụ: Người quản lý nhân sự muốn kiểm định có hay không mối liên hệ giữa kết quả học tập và mức độ hiệu quả trong việc hoàn thành các nhiệm vụ được giao. Có 3 mức độ để phân loại kết quả học tập “excellence”, “good” và “pass” đánh giá hiệu quả làm việc theo 4 mức độ “A.plus”, “A”, “B”, “C”. Dữ liệu được thu thập bằng cách khảo sát 98 nhân viên.

##            A.plus  A  B  C
## excellence     20 10 15 19
## good            8 17 20 10
## pass            7 20 15 30

Kiểm định giả thuyết thống kê

#Nhập dữ liệu vào R
A.plus <- c(20, 8, 7)
A <- c(10, 17, 20)
B <- c(15, 20, 15)
C <- c(19, 10, 30)
#Tạo bảng dữ liệu 
test.chisq <- data.frame(A.plus, A, B, C) 
#Đặt tên cho các hàng của bảng dữ liệu 
row.names(test.chisq) <- c("excellence","good","pass")
test.chisq 
##            A.plus  A  B  C
## excellence     20 10 15 19
## good            8 17 20 10
## pass            7 20 15 30

Kiểm định giả thuyết thống kê

#Kiểm định tính độc lập giữa 2 biến 
chisq.test(test.chisq)
## 
##  Pearson's Chi-squared test
## 
## data:  test.chisq
## X-squared = 21.213, df = 6, p-value = 0.00168

Phân tích hồi quy

Phân tích hồi quy là tìm hiểu mối liên hệ (dự báo) giữa một biến phụ thuộc (response variable) với một hoặc nhiều biến độc lập (independent variable) hay còn gọi là biến giải thích (explanatory variable).

#Thiết lập thư mục 
setwd("C:/Tap tin thuc hanh R/Muc 8-Hoi quy tuyen tinh") 
#Gán tập dữ liệu cho đối tượng 
reg.data <- read.csv("linearRegression.csv", header = TRUE) 
#Kích hoạt tập dữ liệu 
attach(reg.data)
#Cấu trúc của tập dữ liệu 
str(reg.data)
## 'data.frame':    20 obs. of  3 variables:
##  $ response: num  77.3 75.3 96.4 87.7 58.5 94.5 103 64 77.3 83.7 ...
##  $ indepenA: num  7.8 4.3 8.8 5.1 2.6 6.6 8.4 3.2 3.7 5.3 ...
##  $ indepenB: int  6 7 20 8 2 12 18 5 10 8 ...

Phân tích hồi quy

Phương trình hồi quy:

response = 55.7410 + 2.1624 × indepenA + 1.5685 × indepenB

summary(lm(response ~ indepenA + indepenB))
## 
## Call:
## lm(formula = response ~ indepenA + indepenB)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.7396 -2.2012  0.3163  2.6905  8.3830 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  55.7410     3.6630  15.217 2.46e-11 ***
## indepenA      2.1624     0.7213   2.998  0.00809 ** 
## indepenB      1.5685     0.2268   6.916 2.50e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.763 on 17 degrees of freedom
## Multiple R-squared:  0.8699, Adjusted R-squared:  0.8546 
## F-statistic: 56.82 on 2 and 17 DF,  p-value: 2.967e-08

Những ứng dụng khác

Có quá nhiều các ứng dụng trong R, ví dụ như: Phương pháp Six Sigma, Khai thác văn bản, Machine learning, vv…

Tuy nhiên, biết về R căn bản là nền tảng quan trong để tìm hiểu thêm những ứng dụng chuyên sâu hơn.

Khai thác dữ liệu với R

https://github.com/ngochien1990/khai-thac-du-lieu-voi-r