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)
giả sử rằng \(x=(x_1,x_2,\dots,x_n)\) và \(y=(y_1,y_2,..,y_n)\) kí hiệu cho xVec và yVec
\[ \sum_{i-1}^{n-1} \frac{e^{-x_{i+1}}}{x_i+10} \]
n =length(xVec)
xVec[-c(n-1,n)] + 2*xVec[-c(1,n)] - xVec[-c(1,2)] ->ketqua
head(ketqua)
## [1] -432 1554 145 937 1811 2133
sum(exp(-xVec[-c(1)])/(xVec[-c(n)]+10))
## [1] 5.029496e-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:
Tìm và in ra tất cả các giá trị trong véc tơ yVec mà các giá trị đó \(> 600\).
Tại các vị trí nào trong véc tơ yVec mà các giá trị lớn hơn \(600\).
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í).
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 \(%%\))
Lấy ra các giá trị trong véc tơ yVec tại các vị trí \(1,4,7,10,13,....\)
yVec[yVec > 600] -> result
head(result)
## [1] 702 901 617 726 915 723
b)
tail(which(yVec > 600))
## [1] 239 240 243 246 248 249
tail(xVec[yVec > 600])
## [1] 680 512 687 398 211 139
max(which(yVec %% 2 == 0))
## [1] 250
tail(yVec[seq(1,250,2)])
## [1] 654 560 868 508 460 686
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:
\[ S= 1 + \frac{2}{3} + (\frac{2}{3}\frac{4}{5}) + (\frac{2}{3}\frac{4}{5}(\frac{6}{7}) + \dots + (\frac{2}{3}\frac{4}{5}\dots(\frac{38}{39})) \]
1+sum(cumprod(seq(2,38,2)/seq(3,39,2)))
## [1] 6.976346
Hãy đọc bài toán sau bằng tiếng Anh và giải quyết bài toán: 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:
Make a vector with the BMI values for the four people.
Make a vector with the weights for those people who have a BMI larger than 25.
\[ \frac{\text{weight in kg}}{\left(\text{height in m}\right)^2} \]
height <- c(180, 165, 160, 193)
weight <- c(87,58,65,100)
data = data.frame(weight, height)
BMI <- (data$weight)/(data$height/100)^2
BMI
## [1] 26.85185 21.30395 25.39062 26.84636
data$weight[BMI > 25]
## [1] 87 65 100
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:
Tính tần số xuất hiện các trường phái hội họa?
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)?
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 đồ?
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
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
par(mar=c(1,1,1,1))
color <- c("#eb2a2a","#24d5e3", "#4ad31f", "#d917a7","#9a26e7","#601406","#a94200","#601406","#a94200")
barplot(freq.school, col=color)