Bài tập 1

Bài 1. 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ó:

set.seed(50)
xVec <- sample(0:999, 250, replace=T)
yVec <- sample(0:999, 250, replace=T)
xVec
##   [1] 367  10 819  94 862 881 813 374 706 903 271  17 986 764 276 474 339 761
##  [19] 830 439 420 481 966 795 624 988 473 777 568 957 159  12 609 216 161 814
##  [37] 926 905 362 250 518 852 593 835  86 325 678 455 773 996 935 180 975 259
##  [55] 793 656 749  59  49 997 640 487 271 465 398 958 755 435 499 722 335 778
##  [73] 915 500  94 215 805 239 810 104 755  55 868 233 125 581 441 332 257  68
##  [91]  43 662 114 853 440 669 979 811 385 765 470 526 591 234 665 345 799 610
## [109] 221 646 391 253 261 640 865 563 477 130 206 388 504 988 469 855 752 887
## [127] 450  40 161 705 319 346 611 778 769 274 541 667 286 692 160  78 605 310
## [145]  23 949  87 895 362 344 598 561 510 777 251 485 786 369 576 607 778 919
## [163] 651 765 498 963 961 212 777  31 635 201 324 387 746 770 258 885 648 650
## [181] 725 440 232 272 924 799 438  25 376 218 665 996 247 708 960  78 762 102
## [199] 598 151 227 873 618 390 892 113 839 978 962 926 757 397 521 358 274  98
## [217] 711 189 601 921 450 409 814 827  79 150 566 120 983   3 703  46 317 257
## [235] 523 180 840 402 680 512 954 927 687 261 449 398 800 211 139 795
yVec
##   [1] 537   8 702  95 134 236 162   4 901 617  74 519 161 237 412  56 225 726
##  [19] 269 915 333 723 384 530 941 906 782  88 681   1 200 446 289  47 508  72
##  [37] 721  79  83 159 929 827 653 320 839  39 467 800 869 171 692 261 172 313
##  [55]  91 444 593 528 174  50 397 258   0 273 840 417 845 121 542 559 769 549
##  [73] 453 866 210 263 505 181 696 402 685 566 259 788 642 334 171 902 369 130
##  [91] 253 425 216 158 797 170  71 601 656 519 578 579 842 452 392 970 306 680
## [109] 792 662 243 284 868 875 262 401 594  92 795 880 171 225 582 424 366 402
## [127] 436 432 700 665 699 379 216 232 476 550 253 979 796  85 417 291 772 509
## [145] 134 140 836 974 456 236 196 990 403 954 486 483 473 512 846  66 943  19
## [163] 556 456 545 658 655 628 514 594 258 623 629 989  86 738 992 208 441 223
## [181]   0 301 758 386 510 197 870 910 933 641 872  21 242 904 326 647 988 381
## [199] 496   2 753 624 301 996 116 621 714  48 600 501 965 920 279 189 188 180
## [217] 360 237 755 328 555  50 783 856 927 214 759  39 700 764 131 179 666 111
## [235] 667 243 114 790 654 959 560 359 868  64 508 963 460 698 686 426

Giả sử rằng \(x=(x_{1},x_{2}....,x_{n})\)\(y=(y_{1},y_{2},...,y_{n})\) ký hiệu cho 2 vecto xVec và yVec:

  1. Tạo ra véc tơ số có dạng sau \((x_{1}-2x_{2}-x_{3},x_{2}+2x_{3}-x_{4},...,x_{n-x}+2x_{n-1}-x_{n})\)
  2. Thực hiện tính phép tính sau: \[ \sum_{i=1}^{n-1} \frac{e^{-x_{i+1}}}{x_i+10} \]
#Ý a
# chiều dài của vecto xVec
n <- length(xVec)
xVec[-c(n-1,n)] + 2*xVec[-c(1,n)] - xVec[c(1,2)]
##   [1]   20 1638  640 1808 2257 2497 1194 1776 2145 1435  -62 1979 2147 1306  857
##  [16] 1142 1494 2411 1341 1269 1015 2403 2189 2033 2233 1924 1660 1903 2115 1265
##  [31] -184 1220  674  528 1422 2656 2369 1619  495 1276 1855 2028 1896  997  369
##  [46] 1671 1221 1991 2398 2856  928 2120 1126 1835 1738 2144  500  147 1676 2267
##  [61] 1247 1019  834 1251 1947 2458 1258 1423 1576 1382 1524 2598 1548  678  157
##  [76] 1815  916 1849  651 1604  498 1781  967  473  920 1453  738  836   26  144
##  [91] 1000  880 1453 1723 1411 2617 2234 1571 1548 1695 1155 1698  692 1554  988
## [106] 1933 1652 1042 1146 1418  530  765 1174 2360 1624 1507  370  532  615 1386
## [121] 2113 1916 1812 2349 2159 1777  163  352 1204 1333  644 1558 1800 2306  950
## [136] 1346 1508 1229 1303 1002  -51 1278  858  346 1554 1113 1510 1609  683 1530
## [151] 1353 1571 1697 1269  854 2047 1157 1511 1423 2153 2249 2211 1814 1751 2057
## [166] 2875 1018 1756  472 1291  670  839  731 1869 1919 1276 1661 2171 1581 2090
## [181] 1238  894  409 2110 2155 1665  121  767  445 1538 2290 1480 1296 2618  749
## [196] 1592  599 1288  533  595 1606 2099 1031 2164  751 1781 2428 2892 2447 2430
## [211] 1184 1429  870  896  103 1510  722 1381 2076 1811  901 2027 2101  975   12
## [226] 1272  439 2076  622 1399  428  670  464 1293  516 1850 1277 1752 1337 2410
## [241] 2441 2291  842 1149  878 1988  855  479
#ý b
sum(exp(xVec[-1]/xVec[-length(xVec)]+10))
## [1] 1.29604e+106

Bài 2

Bài 2. 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:

  1. Tìm và in ra tất cả các giá trị trong véc tơ yVec mà các giá trị đó > 600.
  2. Tại các vị trí nào trong véc tơ yVec mà các giá trị lớn hơn 600.
  3. Các giá trị nào trong véc tơ xVec có giá trị giống như trong yVec > 600 (các giá trị trong xVec và yVec cùng lớn hơn 600 tại cùng vị trí).
  4. Có bao nhiêu giá trị trong véc tơ xVec chia hết cho 2 (số chẵn, sử dụng module 2 bằng phép tính %%)
  5. Lấy ra các giá trị trong véc tơ yVec tại các vị trí 1,4,7,10,13,….
xVec
##   [1] 367  10 819  94 862 881 813 374 706 903 271  17 986 764 276 474 339 761
##  [19] 830 439 420 481 966 795 624 988 473 777 568 957 159  12 609 216 161 814
##  [37] 926 905 362 250 518 852 593 835  86 325 678 455 773 996 935 180 975 259
##  [55] 793 656 749  59  49 997 640 487 271 465 398 958 755 435 499 722 335 778
##  [73] 915 500  94 215 805 239 810 104 755  55 868 233 125 581 441 332 257  68
##  [91]  43 662 114 853 440 669 979 811 385 765 470 526 591 234 665 345 799 610
## [109] 221 646 391 253 261 640 865 563 477 130 206 388 504 988 469 855 752 887
## [127] 450  40 161 705 319 346 611 778 769 274 541 667 286 692 160  78 605 310
## [145]  23 949  87 895 362 344 598 561 510 777 251 485 786 369 576 607 778 919
## [163] 651 765 498 963 961 212 777  31 635 201 324 387 746 770 258 885 648 650
## [181] 725 440 232 272 924 799 438  25 376 218 665 996 247 708 960  78 762 102
## [199] 598 151 227 873 618 390 892 113 839 978 962 926 757 397 521 358 274  98
## [217] 711 189 601 921 450 409 814 827  79 150 566 120 983   3 703  46 317 257
## [235] 523 180 840 402 680 512 954 927 687 261 449 398 800 211 139 795
yVec
##   [1] 537   8 702  95 134 236 162   4 901 617  74 519 161 237 412  56 225 726
##  [19] 269 915 333 723 384 530 941 906 782  88 681   1 200 446 289  47 508  72
##  [37] 721  79  83 159 929 827 653 320 839  39 467 800 869 171 692 261 172 313
##  [55]  91 444 593 528 174  50 397 258   0 273 840 417 845 121 542 559 769 549
##  [73] 453 866 210 263 505 181 696 402 685 566 259 788 642 334 171 902 369 130
##  [91] 253 425 216 158 797 170  71 601 656 519 578 579 842 452 392 970 306 680
## [109] 792 662 243 284 868 875 262 401 594  92 795 880 171 225 582 424 366 402
## [127] 436 432 700 665 699 379 216 232 476 550 253 979 796  85 417 291 772 509
## [145] 134 140 836 974 456 236 196 990 403 954 486 483 473 512 846  66 943  19
## [163] 556 456 545 658 655 628 514 594 258 623 629 989  86 738 992 208 441 223
## [181]   0 301 758 386 510 197 870 910 933 641 872  21 242 904 326 647 988 381
## [199] 496   2 753 624 301 996 116 621 714  48 600 501 965 920 279 189 188 180
## [217] 360 237 755 328 555  50 783 856 927 214 759  39 700 764 131 179 666 111
## [235] 667 243 114 790 654 959 560 359 868  64 508 963 460 698 686 426
#a
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
#b
s1 <- abs(yVec > 600)
s1
##   [1] 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1
##  [38] 0 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1
##  [75] 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 0
## [112] 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1
## [149] 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 0
## [186] 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0
## [223] 1 1 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 1 0
#c
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
#d
s3 <- abs(xVec%%2==0)
sum(s3)
## [1] 117
#e
yVec[c(TRUE,FALSE,FALSE)]
##  [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

#Bài 3 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

Bài 4

height <-  c(180,165,160,193)
weight <-  c(87,58,65,100)
data <- data.frame(weight, height)
bim <- (data$weight) / (data$height/100)^2
bim
## [1] 26.85185 21.30395 25.39062 26.84636
weight[bim > 25]
## [1]  87  65 100

Bài 5 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")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
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:

  1. Tính tần số xuất hiện các trường phái hội họa?
  2. 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)?
  3. 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 đồ?
# tính tần số xuất hiện của trường phái hội họa
school = painters$School
school.freq = table(school)
cbind(school.freq)
##   school.freq
## A          10
## B           6
## C           6
## D          10
## E           7
## F           4
## G           7
## H           4
#Tính tần suất xuất hiện của trường phái hội họa
porb.schol <- school.freq/nrow(painters)
round(cbind(porb.schol),2)
##   porb.schol
## A       0.19
## B       0.11
## C       0.11
## D       0.19
## E       0.13
## F       0.07
## G       0.13
## H       0.07
#trực quan biểu đồ 
barplot(school.freq)

colors = c("red", "purple", "green", "violet", "#f8884d", "blue", "pink", "cyan")
barplot(school.freq,col=colors)