library(carData)
## Warning: package 'carData' was built under R version 4.2.3
data("Davis")
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## 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(tidyr)
## Warning: package 'tidyr' was built under R version 4.2.3
davis_wide <- Davis %>%
pivot_wider(names_from = sex,
values_from = height,
values_fn = list)
print(davis_wide)
## # A tibble: 192 × 5
## weight repwt repht M F
## <int> <int> <int> <list> <list>
## 1 77 77 180 <int [1]> <NULL>
## 2 58 51 159 <NULL> <int [1]>
## 3 53 54 158 <NULL> <int [1]>
## 4 68 70 175 <int [1]> <NULL>
## 5 59 59 155 <NULL> <int [2]>
## 6 76 76 165 <int [1]> <NULL>
## 7 76 77 165 <int [1]> <int [1]>
## 8 69 73 180 <int [1]> <NULL>
## 9 71 71 175 <int [1]> <NULL>
## 10 65 64 170 <int [1]> <NULL>
## # ℹ 182 more rows
davis1 <- na.omit(davis_wide)
Trong ví dụ trên, em đã pivot các giá trị trong cột “weight” của data Davis từ dạng dài sang dạng rộng, với cột “sex” làm tên cột mới và giá trị của các cột được lấy từ cột “weight”.
Bằng cách sử dụng values_fn = list, các giá trị trong cột “height” sẽ được tổng hợp thành một list trong kết quả.
print(davis1)
## # A tibble: 174 × 5
## weight repwt repht M F
## <int> <int> <int> <list> <list>
## 1 77 77 180 <int [1]> <NULL>
## 2 58 51 159 <NULL> <int [1]>
## 3 53 54 158 <NULL> <int [1]>
## 4 68 70 175 <int [1]> <NULL>
## 5 59 59 155 <NULL> <int [2]>
## 6 76 76 165 <int [1]> <NULL>
## 7 76 77 165 <int [1]> <int [1]>
## 8 69 73 180 <int [1]> <NULL>
## 9 71 71 175 <int [1]> <NULL>
## 10 65 64 170 <int [1]> <NULL>
## # ℹ 164 more rows
library(dplyr)
bmi <- mutate(Davis, bmi= weight/(height/100)^2)
Em sử dụng lệnh mutate để thêm một cột mới “bmi” (chỉ số khối cơ thể) bằng cách tính toán trên cột “weight” và “height” theo công thứ . Kết quả là bộ dữ liệu mới có thêm cột “bmi” chứa chỉ số khối cơ thể tính được từ cột “weight” và “height”.
library(dplyr)
newbmi <- na.omit(bmi)
ketqua <- mutate(newbmi,
ketqua = case_when(
bmi < 18.5 ~ "Gay",
bmi >= 18.5 & bmi < 24.9 ~ "Binhthuong",
bmi >= 25 & bmi <30 ~ "thuacan",
bmi > 30 ~ "beophi"
))
ketqua
## sex weight height repwt repht bmi ketqua
## 1 M 77 182 77 180 23.24598 Binhthuong
## 2 F 58 161 51 159 22.37568 Binhthuong
## 3 F 53 161 54 158 20.44674 Binhthuong
## 4 M 68 177 70 175 21.70513 Binhthuong
## 5 F 59 157 59 155 23.93606 Binhthuong
## 6 M 76 170 76 165 26.29758 thuacan
## 7 M 76 167 77 165 27.25089 thuacan
## 8 M 69 186 73 180 19.94450 Binhthuong
## 9 M 71 178 71 175 22.40879 Binhthuong
## 10 M 65 171 64 170 22.22906 Binhthuong
## 11 M 70 175 75 174 22.85714 Binhthuong
## 12 F 166 57 56 163 510.92644 beophi
## 13 F 51 161 52 158 19.67517 Binhthuong
## 14 F 64 168 64 165 22.67574 Binhthuong
## 15 F 52 163 57 160 19.57168 Binhthuong
## 16 F 65 166 66 165 23.58833 Binhthuong
## 17 M 92 187 101 185 26.30902 thuacan
## 18 F 62 168 62 165 21.96712 Binhthuong
## 19 M 76 197 75 200 19.58309 Binhthuong
## 20 F 61 175 61 171 19.91837 Binhthuong
## 21 M 119 180 124 178 36.72840 beophi
## 22 F 61 170 61 170 21.10727 Binhthuong
## 23 M 65 175 66 173 21.22449 Binhthuong
## 24 M 66 173 70 170 22.05219 Binhthuong
## 25 F 54 171 59 168 18.46722 Gay
## 26 F 50 166 50 165 18.14487 Gay
## 27 F 63 169 61 168 22.05805 Binhthuong
## 28 F 58 166 60 160 21.04805 Binhthuong
## 29 F 39 157 41 153 15.82214 Gay
## 30 M 101 183 100 180 30.15916 beophi
## 31 F 71 166 71 165 25.76571 thuacan
## 32 M 75 178 73 175 23.67125 Binhthuong
## 33 M 79 173 76 173 26.39580 thuacan
## 34 F 52 164 52 161 19.33373 Binhthuong
## 35 F 68 169 63 170 23.80869 Binhthuong
## 36 M 64 176 65 175 20.66116 Binhthuong
## 37 F 56 166 54 165 20.32225 Binhthuong
## 38 M 69 174 69 171 22.79033 Binhthuong
## 39 M 88 178 86 175 27.77427 thuacan
## 40 M 65 187 67 188 18.58789 Binhthuong
## 41 F 54 164 53 160 20.07733 Binhthuong
## 42 M 80 178 80 178 25.24934 thuacan
## 43 F 63 163 59 159 23.71184 Binhthuong
## 44 M 78 183 80 180 23.29123 Binhthuong
## 45 M 85 179 82 175 26.52851 thuacan
## 46 F 54 160 55 158 21.09375 Binhthuong
## 49 F 54 174 56 173 17.83591 Gay
## 50 F 75 162 75 158 28.57796 thuacan
## 51 M 82 182 85 183 24.75546 Binhthuong
## 52 F 56 165 57 163 20.56933 Binhthuong
## 53 M 74 169 73 170 25.90946 thuacan
## 54 M 102 185 107 185 29.80278 thuacan
## 56 M 65 176 64 172 20.98399 Binhthuong
## 58 M 73 183 74 180 21.79820 Binhthuong
## 59 M 75 172 70 169 25.35154 thuacan
## 60 M 57 173 58 170 19.04507 Binhthuong
## 61 M 68 165 69 165 24.97704 <NA>
## 62 M 71 177 71 170 22.66271 Binhthuong
## 63 M 71 180 76 175 21.91358 Binhthuong
## 64 F 78 173 75 169 26.06168 thuacan
## 65 M 97 189 98 185 27.15489 thuacan
## 66 F 60 162 59 160 22.86237 Binhthuong
## 67 F 64 165 63 163 23.50781 Binhthuong
## 68 F 64 164 62 161 23.79536 Binhthuong
## 69 F 52 158 51 155 20.83000 Binhthuong
## 70 M 80 178 76 175 25.24934 thuacan
## 71 F 62 175 61 171 20.24490 Binhthuong
## 72 M 66 173 66 175 22.05219 Binhthuong
## 73 F 55 165 54 163 20.20202 Binhthuong
## 74 F 56 163 57 159 21.07720 Binhthuong
## 75 F 50 166 50 161 18.14487 Gay
## 77 F 50 160 55 150 19.53125 Binhthuong
## 78 F 63 160 64 158 24.60937 Binhthuong
## 79 M 69 182 70 180 20.83082 Binhthuong
## 80 M 69 183 70 183 20.60378 Binhthuong
## 81 F 61 165 60 163 22.40588 Binhthuong
## 82 M 55 168 56 170 19.48696 Binhthuong
## 83 F 53 169 52 175 18.55677 Binhthuong
## 84 F 60 167 55 163 21.51386 Binhthuong
## 85 F 56 170 56 170 19.37716 Binhthuong
## 86 M 59 182 61 183 17.81186 Gay
## 87 M 62 178 66 175 19.56824 Binhthuong
## 88 F 53 165 53 165 19.46740 Binhthuong
## 89 F 57 163 59 160 21.45357 Binhthuong
## 90 F 57 162 56 160 21.71925 Binhthuong
## 91 M 70 173 68 170 23.38869 Binhthuong
## 92 F 56 161 56 161 21.60410 Binhthuong
## 93 M 84 184 86 183 24.81096 Binhthuong
## 94 M 69 180 71 180 21.29630 Binhthuong
## 95 M 88 189 87 185 24.63537 Binhthuong
## 96 F 56 165 57 160 20.56933 Binhthuong
## 97 M 103 185 101 182 30.09496 beophi
## 98 F 50 169 50 165 17.50639 Gay
## 99 F 52 159 52 153 20.56881 Binhthuong
## 101 F 55 164 55 163 20.44914 Binhthuong
## 102 M 63 178 63 175 19.88385 Binhthuong
## 103 F 47 163 47 160 17.68979 Gay
## 104 F 45 163 45 160 16.93703 Gay
## 105 F 62 175 63 173 20.24490 Binhthuong
## 106 F 53 164 51 160 19.70553 Binhthuong
## 107 F 52 152 51 150 22.50693 Binhthuong
## 108 F 57 167 55 164 20.43817 Binhthuong
## 109 F 64 166 64 165 23.22543 Binhthuong
## 110 F 59 166 55 163 21.41094 Binhthuong
## 111 M 84 183 90 183 25.08286 thuacan
## 112 M 79 179 79 171 24.65591 Binhthuong
## 113 F 55 174 57 171 18.16620 Gay
## 114 M 67 179 67 179 20.91071 Binhthuong
## 115 F 76 167 77 165 27.25089 thuacan
## 116 F 62 168 62 163 21.96712 Binhthuong
## 117 M 83 184 83 181 24.51560 Binhthuong
## 118 M 96 184 94 183 28.35539 thuacan
## 119 M 75 169 76 165 26.25958 thuacan
## 120 M 65 178 66 178 20.51509 Binhthuong
## 121 M 78 178 77 175 24.61810 Binhthuong
## 122 M 69 167 73 165 24.74094 Binhthuong
## 123 F 68 178 68 175 21.46194 Binhthuong
## 124 F 55 165 55 163 20.20202 Binhthuong
## 128 F 45 157 45 153 18.25632 Gay
## 129 F 68 171 68 169 23.25502 Binhthuong
## 130 F 44 157 44 155 17.85062 Gay
## 131 F 62 166 61 163 22.49964 Binhthuong
## 132 M 87 185 89 185 25.42001 thuacan
## 133 F 56 160 53 158 21.87500 Binhthuong
## 134 F 50 148 47 148 22.82688 Binhthuong
## 135 M 83 177 84 175 26.49303 thuacan
## 136 F 53 162 53 160 20.19509 Binhthuong
## 137 F 64 172 62 168 21.63332 Binhthuong
## 139 M 90 188 91 185 25.46401 thuacan
## 140 M 85 191 83 188 23.29980 Binhthuong
## 141 M 66 175 68 175 21.55102 Binhthuong
## 142 F 52 163 53 160 19.57168 Binhthuong
## 143 F 53 165 55 163 19.46740 Binhthuong
## 144 F 54 176 55 176 17.43285 Gay
## 145 F 64 171 66 171 21.88708 Binhthuong
## 146 F 55 160 55 155 21.48437 Binhthuong
## 147 F 55 165 55 165 20.20202 Binhthuong
## 148 F 59 157 55 158 23.93606 Binhthuong
## 149 F 70 173 67 170 23.38869 Binhthuong
## 150 M 88 184 86 183 25.99244 thuacan
## 151 F 57 168 58 165 20.19558 Binhthuong
## 152 F 47 162 47 160 17.90886 Gay
## 153 F 47 150 45 152 20.88889 Binhthuong
## 155 F 48 163 44 160 18.06617 Gay
## 156 M 54 169 58 165 18.90690 Binhthuong
## 157 M 69 172 68 174 23.32342 Binhthuong
## 160 F 57 167 56 165 20.43817 Binhthuong
## 161 F 51 163 50 160 19.19530 Binhthuong
## 162 F 54 161 54 160 20.83253 Binhthuong
## 163 F 53 162 52 158 20.19509 Binhthuong
## 164 F 59 172 58 171 19.94321 Binhthuong
## 165 M 56 163 58 161 21.07720 Binhthuong
## 166 F 59 159 59 155 23.33768 Binhthuong
## 167 F 63 170 62 168 21.79931 Binhthuong
## 168 F 66 166 66 165 23.95123 Binhthuong
## 169 M 96 191 95 188 26.31507 thuacan
## 170 F 53 158 50 155 21.23057 Binhthuong
## 171 M 76 169 75 165 26.60971 thuacan
## 173 M 61 170 61 170 21.10727 Binhthuong
## 175 M 62 168 64 168 21.96712 Binhthuong
## 176 M 71 178 68 178 22.40879 Binhthuong
## 178 M 66 170 67 165 22.83737 Binhthuong
## 179 M 81 178 82 175 25.56495 thuacan
## 180 M 68 174 68 173 22.46003 Binhthuong
## 181 M 80 176 78 175 25.82645 thuacan
## 184 F 63 165 59 160 23.14050 Binhthuong
## 185 M 70 173 70 173 23.38869 Binhthuong
## 186 F 56 162 56 160 21.33821 Binhthuong
## 187 F 60 172 55 168 20.28123 Binhthuong
## 188 F 58 169 54 166 20.30741 Binhthuong
## 189 M 76 183 75 180 22.69402 Binhthuong
## 190 F 50 158 49 155 20.02884 Binhthuong
## 191 M 88 185 93 188 25.71220 thuacan
## 192 M 89 173 86 173 29.73704 thuacan
## 193 F 59 164 59 165 21.93635 Binhthuong
## 194 F 51 156 51 158 20.95661 Binhthuong
## 195 F 62 164 61 161 23.05175 Binhthuong
## 196 M 74 175 71 175 24.16327 Binhthuong
## 197 M 83 180 80 180 25.61728 thuacan
## 199 M 90 181 91 178 27.47169 thuacan
## 200 M 79 177 81 178 25.21625 thuacan
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
ggplot(data = newbmi, aes(x = bmi)) +
geom_histogram(binwidth = 1, fill = "steelblue", color = "black") + labs(x = "BMI", y = "Frequency", title = "BMI Distribution")
### Vẽ biểu đồ Histogram phân tích dữ liệu Câu lệnh trên cho chúng ta
tạo một bộ dữ liệu mẫu newbmi có một cột BMI. Sau đó, chúng ta sử dụng
hàm ggplot() và geom_histogram() để tạo biểu đồ histogram. Tham số
binwidth xác định độ rộng của các khoảng bin trong histogram. Bạn có thể
điều chỉnh giá trị binwidth để thay đổi độ chi tiết của biểu đồ. Các
tham số fill và color được sử dụng để tùy chỉnh màu sắc của histogram.
Cuối cùng, chúng ta sử dụng hàm labs() để đặt tên cho trục x, trục y và
tiêu đề của biểu đồ.
Khi chạy mã trên, bạn sẽ thấy một biểu đồ histogram hiển thị phân phối của chỉ số BMI, với trục x đại diện cho các giá trị BMI và trục y đại diện cho tần suất.
library(dplyr)
ttestbmi <- t.test(newbmi$bmi ~ newbmi$sex, data = newbmi)
print(ttestbmi)
##
## Welch Two Sample t-test
##
## data: newbmi$bmi by newbmi$sex
## t = 0.42105, df = 98.973, p-value = 0.6746
## alternative hypothesis: true difference in means between group F and group M is not equal to 0
## 95 percent confidence interval:
## -7.761724 11.943027
## sample estimates:
## mean in group F mean in group M
## 26.00885 23.91820
Dựa vào kết quả kiểm định t-test Welch Two Sample, chúng ta có thể rút ra các kết luận sau:
Giá trị p-value là 0.6746, lớn hơn ngưỡng ý nghĩa thông thường (0.05). Điều này cho thấy không có đủ bằng chứng để bác bỏ giả thiết không có sự khác biệt giữa hai nhóm (group F và group M) về chỉ số BMI.
Giá trị t-statistic là 0.42105. Giá trị này cho thấy sự khác biệt giữa hai nhóm không lớn.
Khoảng tin cậy 95% cho giá trị trung bình của hai nhóm là -7.761724 đến 11.943027. Khoảng tin cậy này cho phép ta ước lượng khoảng giá trị trung bình thực tế có thể nằm trong khoảng này với độ tin cậy 95%.
Ước lượng giá trị trung bình của nhóm F là 26.00885 và nhóm M là 23.91820.
Dựa trên kết quả trên, chúng ta không có đủ bằng chứng để kết luận rằng có sự khác biệt có ý nghĩa thống kê về chỉ số BMI giữa hai nhóm F và M.
kiemdinh <- cor.test(newbmi$weight, newbmi$height, method = "pearson")
print(kiemdinh)
##
## Pearson's product-moment correlation
##
## data: newbmi$weight and newbmi$height
## t = 2.0888, df = 179, p-value = 0.03814
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.008593128 0.293511390
## sample estimates:
## cor
## 0.1542575
Kết quả kiểm tra tương quan Pearson’s product-moment cho thấy:
Giá trị p-value là 0.03814, nhỏ hơn ngưỡng ý nghĩa thông thường (0.05). Điều này cho thấy có đủ bằng chứng để bác bỏ giả thiết không có mối quan hệ tương quan giữa biến “weight” và “height”. Có sự tương quan đáng kể giữa hai biến.
Giá trị t-statistic là 2.0888, cho thấy mức độ khác biệt tương quan giữa hai biến.
Khoảng tin cậy 95% cho hệ số tương quan nằm trong khoảng 0.008593128 đến 0.293511390. Khoảng tin cậy này cho phép ước lượng khoảng giá trị tương quan thực tế có thể nằm trong khoảng này với độ tin cậy 95%.
Ước lượng hệ số tương quan là 0.1542575. Giá trị này cho thấy mức độ tương quan dương nhẹ giữa biến “weight” và “height”.
Dựa trên kết quả trên, ta có thể kết luận rằng tồn tại một mối quan hệ tương quan dương nhẹ và có ý nghĩa thống kê giữa cân nặng (weight) và chiều cao (height). Tuy nhiên, mối quan hệ này không mạnh và chỉ có mức độ tương quan nhỏ.
sexbmi <- table(ketqua$ketqua,ketqua$sex)
print(sexbmi)
##
## F M
## beophi 1 3
## Binhthuong 80 49
## Gay 14 1
## thuacan 4 28
Dựa vào bảng tần số BMI theo giới tính bạn đã cung cấp, chúng ta có các thông tin sau:
Giới tính “Female”:
Số lượng quan sát trong phạm vi “beophi”: 1 Số lượng quan sát trong phạm vi “Binhthuong”: 80 Số lượng quan sát trong phạm vi “Gay”: 14 Số lượng quan sát trong phạm vi “thuacan”: 4 Giới tính “Male”:
Số lượng quan sát trong phạm vi “beophi”: 3 Số lượng quan sát trong phạm vi “Binhthuong”: 49 Số lượng quan sát trong phạm vi “Gay”: 1 Số lượng quan sát trong phạm vi “thuacan”: 28 Bảng tần số này cho thấy phân phối của các phạm vi BMI theo giới tính. Ví dụ, có 1 quan sát nữ thuộc phạm vi “beophi”, 3 quan sát nam thuộc phạm vi “beophi”, có 80 quan sát nữ thuộc phạm vi “Binhthuong”, và cứ tiếp tục như vậy.
Bảng tần số này có thể cung cấp thông tin về mối quan hệ giữa BMI và giới tính, cho phép phân tích sự phân bố BMI giữa nam và nữ trong tập dữ liệu.
bmi_df <- as.data.frame.matrix(sexbmi)
ggplot(bmi_df, aes(x = rownames(bmi_df))) +
geom_col(aes(y = F, fill = "Female"), position = "dodge") +
geom_col(aes(y = M, fill = "Male"), position = "dodge") +
labs(x = "BMI", y = "So luong", fill = "Gioi tinh") +
scale_fill_manual(values = c("Female" = "pink", "Male" = "blue")) +
theme_minimal()
### Biểu đồ cột BMI và các thông số của nó Khi chạy đoạn mã trên, chúng
ta sẽ nhìn thấy biểu đồ cột hiển thị phân phối BMI theo giới tính, với
các cột tương ứng với số lượng quan sát cho từng phạm vi BMI và màu sắc
biểu thị giới tính tương ứng.
library(dplyr)
bmi_groups <- cut(Davis$weight / ((Davis$height/100)^2),
breaks = c(0, 18.5, 25, 30, Inf),
labels = c("Dưới chuẩn", "Bình thường", "Thừa cân", "Béo phì"))
table(bmi_groups)
## bmi_groups
## Dưới chuẩn Bình thường Thừa cân Béo phì
## 18 143 35 4
Trong đoạn mã trên, em sử dụng hàm cut() để phân tổ biến BMI thành các nhóm dựa trên các ngưỡng (breaks) đã cho. Trong ví dụ này, chúng ta phân tổ BMI thành 4 nhóm: Dưới chuẩn, Bình thường, Thừa cân và Béo phì. Kết quả trả về là một factor có chứa các nhãn tương ứng với từng nhóm BMI.
bmi_freq <- table(bmi_groups)
barplot(bmi_freq, xlab = "Nhóm BMI", ylab = "Tần số", main = "Biểu đồ tần số BMI")
correlation <- cor(newbmi$weight, newbmi$bmi)
print(correlation)
## [1] 0.5476132
Kết quả 0.5476132 là một giá trị gần 1 cho thấy mối tương quan dương mạnh giữa biến weight và biến bmi
correlation1 <- cor(newbmi$height, newbmi$bmi)
print(correlation1)
## [1] -0.6621572
Kết quả -0.6621572 là một giá trị gần -1 cho thấy mối tương quan rất yếu giữa biến height và biến bmi
library(ggplot2)
ggplot(data = Davis, aes(x = weight, y = height, color = sex)) +
geom_point() +
labs(x = "Weight", y = "Height", color = "sex")
### Biểu đồ phân tán đa biến - Biểu đồ phân tán đa biến của tập dữ liệu
newdata cho biết mối quan hệ giữa các biến trong tập dữ liệu, bao gồm
“weight” (cân nặng), “height” (chiều cao), “sex” (giới tính)
Mối quan hệ giữa cân nặng và chiều cao: ta thấy rằng các điểm dữ liệu phân bố xung quanh một đường thẳng, có thể có một mối quan hệ tuyến tính giữa cân nặng và chiều cao.
Mối quan hệ giữa giới tính và cân nặng/chiều cao: Giới tính có mối quan hệ với cân nặng và chiều cao
Sự phân bố của cân nặng, chiều cao và giới tính: Biểu đồ phân tán đa biến cũng cho phép bạn nhìn thấy phân phối của các biến trên các trục x và y. Bạn có thể xem xét xem cân nặng, chiều cao và tuổi có phân phối đều hay không đều và có thể nhận ra các điểm dữ liệu bất thường hoặc ngoại lệ.
Tương tác giữa giới tính và các biến khác: Biểu đồ phân tán đa biến cung cấp cơ hội để xem xét sự tương tác giữa giới tính và các biến khác. Bạn có thể nhìn thấy xem có sự khác biệt về cân nặng, chiều cao và tuổi giữa nam và nữ trong tập dữ liệu Davis.
Tóm lại, biểu đồ phân tán đa biến của tập dữ liệu Davis giúp bạn phân tích mối quan hệ giữa các biến và hiểu rõ hơn về mẫu và sự tương tác trong dữ liệu.
Regenerate response
library(car)
## Warning: package 'car' was built under R version 4.2.3
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
data("Salaries")
dat <- Salaries
dat <- na.omit(dat)
names(dat) <- c("hocvi","thuhang","namtotnghiepPhD","namphucvu","gioitinh","luong")
table(Salaries$rank)
##
## AsstProf AssocProf Prof
## 67 64 266
table(Salaries$yrs.service)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## 11 13 15 22 13 8 11 18 18 15 11 14 5 1 8 9 8 6 15 19 10 6 8 16 2 8
## 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 48 49 51 53 57 60
## 7 11 9 1 9 10 1 4 2 5 6 4 8 4 5 1 4 3 4 1 1 3 1 1 1 1
table(Salaries$sex)
##
## Female Male
## 39 358
table( dat$hocvi)
##
## AsstProf AssocProf Prof
## 67 64 266
summary(dat)
## hocvi thuhang namtotnghiepPhD namphucvu gioitinh
## AsstProf : 67 A:181 Min. : 1.00 Min. : 0.00 Female: 39
## AssocProf: 64 B:216 1st Qu.:12.00 1st Qu.: 7.00 Male :358
## Prof :266 Median :21.00 Median :16.00
## Mean :22.31 Mean :17.61
## 3rd Qu.:32.00 3rd Qu.:27.00
## Max. :56.00 Max. :60.00
## luong
## Min. : 57800
## 1st Qu.: 91000
## Median :107300
## Mean :113706
## 3rd Qu.:134185
## Max. :231545
mean(dat$luong)
## [1] 113706.5
Lệnh này cho biết mức lương trung bình gần 11400 đô la
sd(dat$luong)
## [1] 30289.04
Độ lệch chuẩn này cho biết mức độ phân tán của giá trị thống kê so với giá trị trung bình
quantile(dat$luong)
## 0% 25% 50% 75% 100%
## 57800 91000 107300 134185 231545
Hàm Quantile chỉ ra rằng có khoảng: 25% người có thu nhập <= 91000\(, 50% người có thu nhập <=107300\), 75% người có thu nhập <=134185$ và gần 100% người có thu nhập <=231545$
hist(dat$luong)
Biểu đồ kiểm định Histogram cho thấy rằng dữ liệu không tuân theo quy
luật phân phối chuẩn
plot(dat$hocvi,dat$luong, pch=16, xlab = " Năm Phục Vụ", ylab = "Tiền Lương")
Lệnh plot vẽ biểu đồ tương quan hai biến năm phục vụ và tiền lương. Qua
biểu đồ cho thấy mối tương quan giữa năm phục vụ và tiền tương đối
thấp
Dữ liệu được trích xuất từ lương tháng 09 năm 2008 Trợ lý Giáo sư, Phó Giáo sư và Giáo sư tại một trường cao đẳng ở Hoa Kỳ. Dữ liệu được thu thập như một phần trong nỗ lực không ngừng của ban quản lý trường đại học nhằm theo dõi sự khác biệt về lương giữa nam và nữ giảng viên.Dữ liệu trong gói package gồm các biến: rank (chức vụ), yrs.since.phd(tính từ năm đạt được bằng đến thời điểm hiện tại), yrs.service(năm phục vụ trong ngành), sex(giới tính), salary(lương)
library(car) # Gọi package Car
data("Salaries")
str(Salaries) # Cấu trúc của dữ liệu Salaries
## 'data.frame': 397 obs. of 6 variables:
## $ rank : Factor w/ 3 levels "AsstProf","AssocProf",..: 3 3 1 3 3 2 3 3 3 3 ...
## $ discipline : Factor w/ 2 levels "A","B": 2 2 2 2 2 2 2 2 2 2 ...
## $ yrs.since.phd: int 19 20 4 45 40 6 30 45 21 18 ...
## $ yrs.service : int 18 16 3 39 41 6 23 45 20 18 ...
## $ sex : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 1 ...
## $ salary : int 139750 173200 79750 115000 141500 97000 175000 147765 119250 129000 ...
a <- Salaries # Gán Salaries vào biến a
names(a) <- c("r","d","ysp","ys","s","sa") # đặt tên các biến có trong data
head(a) # Đọc 6 dòng đầu tiên của a
## r d ysp ys s sa
## 1 Prof B 19 18 Male 139750
## 2 Prof B 20 16 Male 173200
## 3 AsstProf B 4 3 Male 79750
## 4 Prof B 45 39 Male 115000
## 5 Prof B 40 41 Male 141500
## 6 AssocProf B 6 6 Male 97000
Prof <- a[a$r=="Prof",] # Lọc các người có học vị Giáo sư
head(Prof)# Đọc 6 dòng đầu tiên người có học vị Giáo sư
## r d ysp ys s sa
## 1 Prof B 19 18 Male 139750
## 2 Prof B 20 16 Male 173200
## 4 Prof B 45 39 Male 115000
## 5 Prof B 40 41 Male 141500
## 7 Prof B 30 23 Male 175000
## 8 Prof B 45 45 Male 147765
Prof20 <- a[a$r=="Prof"&a$ys>=20,]# câu lệnh này có ý nghia Lọc các vị có học vị Giáo sư và có thời gian phục vụ hơn 20 năm
Prof10 <- a[a$r=="Prof"&a$ys<=10,]
hocvi <- a$r#gắn biến Học vị vào hocvi
luong <- a$sa# gắn biến Lương vào luong
table(cut(luong,3))
##
## (5.76e+04,1.16e+05] (1.16e+05,1.74e+05] (1.74e+05,2.32e+05]
## 237 145 15
namphucvu <- a$ys
table(cut(luong,6)) # Chia lương ra 6 khoảng và lập bảng tần số
##
## (5.76e+04,8.68e+04] (8.68e+04,1.16e+05] (1.16e+05,1.45e+05] (1.45e+05,1.74e+05]
## 78 159 91 54
## (1.74e+05,2.03e+05] (2.03e+05,2.32e+05]
## 12 3
Profexperience <- a[a$r=="Prof"&a$ys==30,] # Câu lệnh này lọc ra những vị có học vị giáo sư và có thời gian phục vụ 30 năm. Kết quả thu được 9 quan sát
head(Profexperience)# Sau đó em dùng lệnh này để đọc 6 quan sát đầu tiên
## r d ysp ys s sa
## 23 Prof A 34 30 Male 93904
## 129 Prof A 32 30 Male 113278
## 186 Prof B 33 30 Male 134000
## 242 Prof A 31 30 Male 122875
## 260 Prof A 32 30 Male 92550
## 266 Prof A 36 30 Male 134800
sex <- a$s # Gắn biến giới tính s vào sex
sexProf <- a[a$r=="Prof"&a$s=="Female",]#Câu lệnh này lọc ra những vị giáo sư là nữ
str(sexProf)# Lệnh này cho biết có 18 quan sát những vị giáo sư là nữ
## 'data.frame': 18 obs. of 6 variables:
## $ r : Factor w/ 3 levels "AsstProf","AssocProf",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ d : Factor w/ 2 levels "A","B": 2 1 2 2 2 2 2 1 2 1 ...
## $ ysp: int 18 39 23 25 17 17 20 12 36 29 ...
## $ ys : int 18 36 19 25 17 18 14 0 26 27 ...
## $ s : Factor w/ 2 levels "Female","Male": 1 1 1 1 1 1 1 1 1 1 ...
## $ sa : int 129000 137000 151768 140096 111512 122960 127512 105000 144651 91000 ...
RichProfMan <- a[a$r=="Prof"&a$sa>100000&a$s=="Male",]# Lệnh này dùng để lọc những vị giáo sư nam có mức lương trên 10000$
str(RichProfMan)#Lệnh này cho biết có 213 vị giáo sư nam có mức lương trên 100000$
## 'data.frame': 213 obs. of 6 variables:
## $ r : Factor w/ 3 levels "AsstProf","AssocProf",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ d : Factor w/ 2 levels "A","B": 2 2 2 2 2 2 2 2 2 2 ...
## $ ysp: int 19 20 45 40 30 45 21 20 12 19 ...
## $ ys : int 18 16 39 41 23 45 20 18 3 20 ...
## $ s : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 2 ...
## $ sa : int 139750 173200 115000 141500 175000 147765 119250 104800 117150 101000 ...
cor.test(luong,namphucvu,method = "pearson") # Thống kê Pearson's
##
## Pearson's product-moment correlation
##
## data: luong and namphucvu
## t = 7.0602, df = 395, p-value = 7.529e-12
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2443740 0.4193506
## sample estimates:
## cor
## 0.3347447
Trong đó P-value=7.529e-12 < 5% điều này cho thấy mối tương quan giữa lương và năm phục vụ có ý nghĩa thống kê Với độ tin cậy 95% chúng ta có khoảng tin cậy từ [0.244-0.419] Hệ số tương quan trong trường hợp này là 0.33>0 điều đó thể hiện rằng có mối tương quan thuận giữa lương và năm phục vụ