Hãy thực hiện các câu lệnh sau để có các véc tơ số xVec và yVec; hàm sample cho phép lấy ra một số ngẫu nhiên trong khoảng từ 0:999 và thực hiện lấy 250 số, tham số replce = T có nghĩa là có thể lấy lặp lại số đã có: a) Tạo ra véc tơ số có dạng sau \[\left(x_1+2 x_2-x_3 ; x_2+2 x_3-x_4 ; \ldots ; x_{n-2}+2 x_{n-1}-x_n\right)\]
set.seed(50)
xVec <- sample(0:999, 250, replace=T)
yVec <- sample(0:999, 250, replace=T)
n= length(xVec)
xVec[-c(n-1, n)] + 2*xVec[-c(1,n)]-xVec[-c(2,1)]->ketqua
print(ketqua)
## [1] -432 1554 145 937 1811 2133 855 883 2241 1428 -681 1225 2238 842 885
## [16] 391 1031 1982 1288 798 416 1618 1932 1055 2127 1157 1459 956 2323 1263
## [31] -426 1014 880 -276 863 1761 2374 1379 344 434 1629 1203 2177 682 58
## [46] 1226 815 1005 1830 2686 320 1871 700 1189 1356 2095 818 -840 1403 1790
## [61] 1343 564 803 303 1559 2033 1126 711 1608 614 976 2108 1821 473 -281
## [76] 1586 473 1755 263 1559 -3 1558 1209 -98 846 1131 848 778 350 -508
## [91] 1253 37 1380 1064 799 1816 2216 816 1445 1179 931 1474 394 1219 556
## [106] 1333 1798 406 1122 1175 636 135 676 1807 1514 1387 531 154 478 408
## [121] 2011 1071 1427 1472 2076 1747 369 -343 1252 997 400 790 1398 2042 776
## [136] 689 1589 547 1510 934 -289 978 1202 -593 1834 228 1515 1275 452 979
## [151] 1210 804 1813 794 435 1688 948 914 1012 1244 1965 1456 1683 798 1463
## [166] 2673 608 1735 204 1100 713 462 352 1109 2028 401 1380 1531 1223 1660
## [181] 1373 632 -148 1321 2084 1650 112 559 147 552 2410 782 703 2550 354
## [196] 1500 368 1147 673 -268 1355 1719 506 2061 279 813 1833 1976 2057 2043
## [211] 1030 1081 963 808 -241 1331 488 470 1993 1412 454 1210 2389 835 -187
## [226] 1162 -177 2083 286 1363 478 423 308 1123 43 1458 964 1250 750 1493
## [241] 2121 2040 760 761 445 1787 1083 -306
b)Thực hiện phép tính sau: \[ \sum_{i=1}^{n-1} \frac{e^{-x_{i+1}}}{x_i+10} \]
result <- sum(exp(-xVec[-n]) / (xVec[-1] + 10))
print(result)
## [1] 6.989232e-05
Sử dụng các véc tơ xVec và yVec tạo ra từ bài tập số 1 và các hàm thống kê có sẵn trong R như mean, sqrt, sum and abs. Thực hiện các công việc sau:
print(yVec[yVec>600])
## [1] 702 901 617 726 915 723 941 906 782 681 721 929 827 653 839 800 869 692 840
## [20] 845 769 866 696 685 788 642 902 797 601 656 842 970 680 792 662 868 875 795
## [39] 880 700 665 699 979 796 772 836 974 990 954 846 943 658 655 628 623 629 989
## [58] 738 992 758 870 910 933 641 872 904 647 988 753 624 996 621 714 965 920 755
## [77] 783 856 927 759 700 764 666 667 790 654 959 868 963 698 686
print(which(yVec > 600))
## [1] 3 9 10 18 20 22 25 26 27 29 37 41 42 43 45 48 49 51 65
## [20] 67 71 74 79 81 84 85 88 95 98 99 103 106 108 109 110 113 114 119
## [39] 120 129 130 131 138 139 143 147 148 152 154 159 161 166 167 168 172 173 174
## [58] 176 177 183 187 188 189 190 191 194 196 197 201 202 204 206 207 211 212 219
## [77] 223 224 225 227 229 230 233 235 238 239 240 243 246 248 249
print(xVec[yVec >600])
## [1] 819 706 903 761 439 481 624 988 473 568 926 518 852 593 86 455 773 935 398
## [20] 755 335 500 810 755 233 125 332 440 811 385 591 345 610 221 646 261 640 206
## [39] 388 161 705 319 667 286 605 87 895 561 777 576 778 963 961 212 201 324 387
## [58] 770 258 232 438 25 376 218 665 708 78 762 227 873 390 113 839 757 397 601
## [77] 814 827 79 566 983 3 317 523 402 680 512 687 398 211 139
so_gia_tri_chan <- sum(xVec %% 2 == 0)
print(so_gia_tri_chan)
## [1] 117
e)Lấy ra các giá trị trong véc tơ yVec tại các vị trí 1,4,7,10,13,….
print(yVec[seq(1, length(yVec), by = 3)])
## [1] 537 95 162 617 161 56 269 723 941 88 200 47 721 159 653 39 869 261 91
## [20] 528 397 273 845 559 453 263 696 566 642 902 253 158 71 519 842 970 792 284
## [39] 262 92 171 424 436 665 216 550 796 291 134 974 196 954 473 66 556 658 514
## [58] 623 86 208 0 386 870 641 242 647 496 624 116 48 965 189 360 328 783 214
## [77] 700 179 667 790 560 64 460 426
Hàm cumprod cho phép tính tích lũy của một dãy số. Sử dụng tính chất của hàm cumprod, hãy tính giá trị của biểu thức sau: \[ \mathrm{S}=1+\frac{2}{3}+\left(\frac{2}{3} \frac{4}{5}\right)+\left(\frac{2}{3} \frac{4}{5} \frac{6}{7}\right)+\cdots+\left(\frac{2}{3} \frac{4}{5} \cdots \frac{38}{39}\right) \]
1 + sum(cumprod(seq(2,38, by = 2) / seq(3, 39, by = 2)))
## [1] 6.976346
Assume that we have registered the height and weight for four people: Heights in cm are 180, 165, 160, 193; weights in kg are 87, 58, 65, 100. Make two vectors, height and weight, with the data. The bodymass index (BMI) is defined as: \[ \frac{\text { weight in } \mathrm{kg}}{\text { (height in } \mathrm{m})^2} \]
hight <- c(180, 165, 160, 193)
Weight <- c(87, 58, 65, 100)
data <- data.frame(hight, Weight)
BMI <- (data$Weight) / (data$hight / 100)^2
print(BMI)
## [1] 26.85185 21.30395 25.39062 26.84636
weights_over_25 <- data$weight[BMI > 25]
print(weights_over_25)
## NULL
Tập dữ liệu painters có trong thư viện MASS, để lấy tập dữ liệu này, thực hiện các lệnh sau: install.packages(“MASS”) library(MASS) data(“painters”) Sau khi đã tải được dữ liệu, áp dụng phân tích dữ liệu thống kê cho biến định tính (biến school - trường phái hội họa cho từng họa sỹ), hãy thực hiện các nội dung sau:
a)Tính tần số xuất hiện các trường phái hội họa?
library(MASS)
data("painters")
school<- painters$School
freq.school <- table(school)
cbind(freq.school)
## freq.school
## A 10
## B 6
## C 6
## D 10
## E 7
## F 4
## G 7
## H 4
b)Tính tần suất xuất hiện các trường phái hội họa (làm tròn đến 2 chữ số sau phần thập phân)?
prob.school<- freq.school / nrow(painters)
cbind(round(prob.school,2))
## [,1]
## A 0.19
## B 0.11
## C 0.11
## D 0.19
## E 0.13
## F 0.07
## G 0.13
## H 0.07
c)Trực quan biến định tính school bằng biểu đồ thanh (thể hiện qua các cột với màu khác nhau), giải thích kết quả nhận được bằng biểu đồ?
colors <- c("#a8e6cf", "#dcedc1", "#ffd3b6","#ffaaa5","#CCCCFF","#6699FF","#99FFFF","#FF9966")
barplot(freq.school, col = colors)