“Trên con đường thành công không có dấu chân của kẻ lười biếng.”
Xét tập dữ liệu 2, 4.4, 3, 3, 2, 2.2, 2, 4. Để tính
trung bình của tập dữ liệu chúng ta dùng hàm mean().
x <- c(2, 4.4, 3, 3, 2, 2.2, 2, 4)
mean(x)
## [1] 2.825
Để tính trung vị của tập dữ liệu chúng ta dùng hàm
median().
median(x)
## [1] 2.6
Để tìm yếu vị (mode) của tập dữ liệu, chúng ta dùng hàm
table() để đếm tần số xuất hiện của các giá trị.
table(x)
## x
## 2 2.2 3 4 4.4
## 3 1 2 1 1
Khi đó yếu vị là giá trị có tần số cao nhất. Ở đây ta thấy 2 là yếu vị vì nó là giá trị có tần số cao nhất.
Để tìm giá trị nhỏ nhất và lớn nhất của tập dữ liệu chúng ta dùng hàm
min() và max() tương ứng.
min(x)
## [1] 2
max(x)
## [1] 4.4
Để xác định khoảng biến thiên (khoảng giá trị, phạm vi) chúng ta dùng
hàm range().
range(x)
## [1] 2.0 4.4
Nếu dữ liệu có chứa NA hoặc NaN thì chúng
ta cần loại bỏ hoặc thay thế chúng trước khi tính toán với các hàm
trên.
mean(c(1,4,NA))
## [1] NA
mean(c(1,4,NaN))
## [1] NaN
mean(c(1,4,NA), na.rm=TRUE)
## [1] 2.5
mean(c(1,4,NaN), na.rm=TRUE)
## [1] 2.5
median(c(1,4,NA), na.rm = T)
## [1] 2.5
Xét tập dữ liệu sẵn có trong R là chickwts.
chickwts
## weight feed
## 1 179 horsebean
## 2 160 horsebean
## 3 136 horsebean
## 4 227 horsebean
## 5 217 horsebean
## 6 168 horsebean
## 7 108 horsebean
## 8 124 horsebean
## 9 143 horsebean
## 10 140 horsebean
## 11 309 linseed
## 12 229 linseed
## 13 181 linseed
## 14 141 linseed
## 15 260 linseed
## 16 203 linseed
## 17 148 linseed
## 18 169 linseed
## 19 213 linseed
## 20 257 linseed
## 21 244 linseed
## 22 271 linseed
## 23 243 soybean
## 24 230 soybean
## 25 248 soybean
## 26 327 soybean
## 27 329 soybean
## 28 250 soybean
## 29 193 soybean
## 30 271 soybean
## 31 316 soybean
## 32 267 soybean
## 33 199 soybean
## 34 171 soybean
## 35 158 soybean
## 36 248 soybean
## 37 423 sunflower
## 38 340 sunflower
## 39 392 sunflower
## 40 339 sunflower
## 41 341 sunflower
## 42 226 sunflower
## 43 320 sunflower
## 44 295 sunflower
## 45 334 sunflower
## 46 322 sunflower
## 47 297 sunflower
## 48 318 sunflower
## 49 325 meatmeal
## 50 257 meatmeal
## 51 303 meatmeal
## 52 315 meatmeal
## 53 380 meatmeal
## 54 153 meatmeal
## 55 263 meatmeal
## 56 242 meatmeal
## 57 206 meatmeal
## 58 344 meatmeal
## 59 258 meatmeal
## 60 368 casein
## 61 390 casein
## 62 379 casein
## 63 260 casein
## 64 404 casein
## 65 318 casein
## 66 352 casein
## 67 359 casein
## 68 216 casein
## 69 222 casein
## 70 283 casein
## 71 332 casein
min, max,
range, mean, median cho trọng
lượng gà trong tập dữ liệu.min(chickwts$weight)
## [1] 108
max(chickwts$weight)
## [1] 423
range(chickwts$weight)
## [1] 108 423
mean(chickwts$weight)
## [1] 261.3099
median(chickwts$weight)
## [1] 258
mean(chickwts$weight[chickwts$feed=="casein"])
## [1] 323.5833
mean(chickwts$weight[chickwts$feed=="horsebean"])
## [1] 160.2
mean(chickwts$weight[chickwts$feed=="linseed"])
## [1] 218.75
mean(chickwts$weight[chickwts$feed=="meatmeal"])
## [1] 276.9091
mean(chickwts$weight[chickwts$feed=="soybean"])
## [1] 246.4286
mean(chickwts$weight[chickwts$feed=="sunflower"])
## [1] 328.9167
tapply(chickwts$weight,INDEX=chickwts$feed,FUN=mean)
## casein horsebean linseed meatmeal soybean sunflower
## 323.5833 160.2000 218.7500 276.9091 246.4286 328.9167
Ở mục này chúng chủ yếu đề cập đến biến định tính. Trong tập dữ liệu
chickwts thì feed là biến định tính. Để lập
bảng phân phối tần số cho biến này chúng ta cũng dùng hàm
table().
table(chickwts$feed)
##
## casein horsebean linseed meatmeal soybean sunflower
## 12 10 12 11 14 12
Để lập bảng phân phối tần suất chúng ta dùng hàm
prop.table().
prop.table(table(chickwts$feed))
##
## casein horsebean linseed meatmeal soybean sunflower
## 0.1690141 0.1408451 0.1690141 0.1549296 0.1971831 0.1690141
Để tính tỷ lệ (mẫu) gà ăn thức ăn soybean chúng ta có
thể dùng một trong hai cách sau.
sum(chickwts$feed == "soybean")/nrow(chickwts)
## [1] 0.1971831
mean(chickwts$feed == "soybean")
## [1] 0.1971831
Tượng tự như vậy ta có thể tính tỷ lệ gà ăn các loại thức ăn còn lại. Ở đây ta thấy tỷ lệ chính là tần suất.
Để làm tròn kết quả tính toán chúng ta dùng hàm
round().
round(0.1971831, digits = 3)
## [1] 0.197
round(mean(chickwts$feed == "soybean"), digits = 3)
## [1] 0.197
Bài tập 8.1
Xét tập dữ liệu chickwts.
Xét tập dữ liệu sẵn có InsectSprays. Mở cửa sổ trợ
giúp để xem thông tin về tập dữ liệu này.
count.tapply() để tính tổng số côn trùng cho từng
loại thuốc trừ sâu bọ.tapply().Để tính bách phân vị của tập dữ liệu chúng ta dùng hàm
quantile().
x <- c(2,4.4,3,3,2,2.2,2,4)
Bách phân vị thứ 80:
quantile(x, prob = 0.8)
## 80%
## 3.6
Tứ phân vị:
quantile(x, prob = c(0.25, 0.50, 0.75))
## 25% 50% 75%
## 2.00 2.60 3.25
Thập phân vị:
quantile(x, prob = seq(0.1, 0.9, by = 0.1))
## 10% 20% 30% 40% 50% 60% 70% 80% 90%
## 2.00 2.00 2.02 2.16 2.60 3.00 3.00 3.60 4.12
Để tìm 6 giá trị tóm tắt dữ liệu chúng ta dùng hàm
summary().
summary(x)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.000 2.000 2.600 2.825 3.250 4.400
Để tính phương sai của tập dữ liệu chúng ta dùng hàm
var().
x <- c(2,4.4,3,3,2,2.2,2,4)
var(x)
## [1] 0.9078571
var(chickwts$weight)
## [1] 6095.503
Để tính độ lệch chuẩn của tập dữ liệu chúng ta dùng hàm
sd().
sd(x)
## [1] 0.9528154
sd(chickwts$weight)
## [1] 78.0737
Để tính độ trải giữa của tập dữ liệu chúng ta dùng hàm
IQR().
IQR(x)
## [1] 1.25
IQR(chickwts$weight)
## [1] 119
Bài tập 8.2.
chickwts để tính phân vị thứ 10, 30 và
90 cho trọng lượng gà. Sử dụng hàm tapply() để xác định
loại thức ăn nào có phương sai trọng lượng lớn nhất.quakes sẵn có trong R để thực hiện các
câu sau:
depth.mag mà có depth sâu hơn hoặc bằng 400km.cut() để tạo factor tên
depthcut từ biến depth có các mức độ là \([40, 200), [200, 360), [360, 520), [520,
680]\).mag theo từng
mức độ depthcut.tapply()để tính phân vị thứ 80 của biến
mag theo từng mức độ depthcut.Trong R hàm cov() dùng để tính hiệp phương sai mẫu.
x <- c(2, 4.4, 3, 3, 2, 2.2, 2, 4)
y <- c(1, 4.4, 1, 3, 2, 2.2, 2, 7)
cov(x,y)
## [1] 1.479286
Để tính hệ số tương quan mẫu chúng ta dùng hàm
cor().
cor(x,y)
## [1] 0.7713962
| Hàm/Toán tử | Ý nghĩa |
|---|---|
mean()
|
Trung bình |
median()
|
Trung vị |
table()
|
Bảng tần số |
prop.table()
|
Bảng tần suất |
min()
|
Giá trị nhỏ nhất |
max()
|
Giá trị lớn nhất |
range()
|
Khoảng biến thiên (khoảng giá trị, phạm vi) |
round()
|
Làm tròn số |
tapply()
|
Áp dụng hàm cho từng nhóm giá trị |
quantile()
|
Bách phân vị |
summary()
|
Sáu giá trị tóm tắt dữ liệu |
var()
|
Phương sai |
sd()
|
Độ lệch chuẩn |
IQR()
|
Độ trải giữa |
cov()
|
Hiệp phương sai |
cor()
|
Hệ số tương quan |