Một trong những lợi thế của R là có thể sử dụng như một máy tính với các phép tính nhanh, thuận tiện. Sử dụng cho tính toán ma trận.
12+5
## [1] 17
16+4-2
## [1] 18
-27*12/21
## [1] -15.42857
(25-5)^3
## [1] 8000
sqrt(25)
## [1] 5
pi
## [1] 3.141593
2 + 3*pi
## [1] 11.42478
log(10) #Logarit cơ số e
## [1] 2.302585
log10(100) #Logarit cơ số 10
## [1] 2
exp(2.7689) # e^2.7689
## [1] 15.94109
cos(pi)
## [1] -1
x <- c(1:10)
sum(x)
## [1] 55
x*2
## [1] 2 4 6 8 10 12 14 16 18 20
#Tính tổng bình phương
sum(x^2)
## [1] 385
#Tính tổng bình phương hiệu chỉnh
sum((x-mean(x))^2)
## [1] 82.5
#Tính phương sai
var(x)
## [1] 9.166667
#Tính độ lệch chuẩn
sd(x)
## [1] 3.02765
#Viết hàm tính tổng
tong = function(x){
sum = 0
for(i in 1:length(x)){
sum = sum + x[i]
}
return (sum)
}
#Viết hàm tính trung bình, gọi lại hàm tong(x)
trung_binh = function(x){
trungbinh <- tong(x)/length(x)
return(trungbinh)
}
#Viết hàm tính giá trị phương sai, variance(x)
phuongsai = function(x) {
a = (x - trung_binh(x))^2
sum = 0
for (i in 1:length(x)) {
sum = sum + a[i]
}
return(sum/(length(x)-1))
}
#Viết hàm tìm giá trị lớn nhất
lonnhat <- function(x){
ln <- x[1]
for (i in 1: length(x)){
if(ln < x[i]){
ln = x[i]
}
}
return(ln)
}
#Viết hàm tìm giá trị nhỏ nhất
nhonhat <- function(x){
nn <- x[1]
for(i in 1:length(x)){
if(nn > x[i]){
nn = x[i]
}
}
return(nn)
}
y <- c(1:20)
tong(y)
## [1] 210
sum(y)
## [1] 210
trung_binh(y)
## [1] 10.5
phuongsai(y)
## [1] 35
var(y)
## [1] 35
lonnhat(y)
## [1] 20
nhonhat(y)
## [1] 1
Hệ số tương quan Pearson là hệ số quan trọng trong việc xác định tính tương quan giữa 2 biến số, cho bởi công thức sau: Hiệp phương sai cov(x, y): Trong lý thuyết xác suất và thống kê, hiệp phương sai là độ đo sự biến thiên cùng nhau của hai biến ngẫu nhiên (phân biệt với phương sai - đo mức độ biến thiên của một biến).
Nếu 2 biến có xu hướng thay đổi cùng nhau (nghĩa là, khi một biến có giá trị cao hơn giá trị kỳ vòng thì biến kia có xu hướng cũng cao hơn giá trị kỳ vọng), thì hiệp phương sai giữa hai biến này có giá trị dương. Mặt khác, nếu một biến nằm trên giá trị kì vọng còn biến kia có xu hướng nằm dưới giá trị kì vọng, thì hiệp phương sai của hai biến này có giá trị âm.
\[r_{xy} = \dfrac{\sum_{i=1}^{n}(x_i-\overline{x}{})(y_i-\overline{y})}{\sqrt{\sum_{i=1}^{n}(x_i-\overline{x})^2 \sum_{i=1}^{n}(y_i-\overline{y})^2}} = \dfrac{cov(x,y)}{\sqrt{Var(x)Var(y)}}\]
# Viết hàm tính hiệp phương sai covariance
covariance <- function(x, y){
a = (x - mean(x))*(y-mean(y))
sum = 0
if(length(x) == length(y)){
for (i in 1:length(x)){
sum = sum + a[i]
}
}
return(sum/(length(x)-1))
}
x1 <- c(1:9)
y1 <- c(2:10)
covariance(x1, y1)
## [1] 7.5
#Kiểm tra tính trùng khớp với hàm cov(x,y)
cov(x1, y1)
## [1] 7.5
pearson <- function(x, y){
heso <- covariance(x, y)/(sqrt(phuongsai(x)*phuongsai(y)))
return(heso)
}
x1 <- c(1:9)
y1 <- c(-1,-3.5, -6, 2:7)
pearson(x1, y1)
## [1] 0.8678657
#Kiểm tra tính tương đồng với hàm cor()
cor(x1, y1)
## [1] 0.8678657
Khái niệm
Phân phối đồng nhất trong tiếng Anh là Uniform Distribution.
Trong thống kê, phân phối đồng nhất là một dạng phân phối xác suất thống kê trong đó tất cả các kết quả đều có khả năng xảy ra như nhau, mỗi biến có cùng một xác suất để cho ra một kết quả. Ví dụ một bộ bài có phân phối đồng nhất bởi vì khả năng rút ra một lá cơ, lá rô, lá nhép (chuồn) hay lá bích đều như nhau.
Việc tung đồng xu cũng có phân phối đồng nhất vì xác suất xuất hiện mặt ngửa hoặc mặt sấp trong một lần tung đồng xu là như nhau, với điều kiện đồng xu đó là đồng chất.
Phân phối đồng nhất có thể được hình dung trực quan là một đường thẳng nằm ngang, do đó, khi tung đồng xu kết quả tung đồng xu được mặt ngửa hay mặt xấp đều có xác suất p = 0,5 và được biểu diễn bằng một đường nằm ngang từ mức 0,5 ở trục y.
#### 3.1. Viết hàm mô tả tung đồng xu Chúng ta sử dụng hàm runif(n, min=..,max =..) để tạo ra một dãy số có phân phối đều, mặc định thì min = 0 và max = 1. Mỗi lần tung chúng ta quy ước nếu giá trị tung được nhỏ hơn hoặc bằng 1/2 thì là mặt ngửa, lớn hơn 1/2 là mặt xấp Tiếp tục sử dụng hàm replicate(n, funs()) để thực hiện việc tung đồng xu này 1000 lần. Dùng bảng tần số để thống kê việc tung đồng xu.
tung_xu <- function(){
x <- runif(1, min = 0, max = 1)
if(x<=1/2) "Ngua" else "Xap"}
tung_1000 <- function(n){
replicate(n,tung_xu() )
}
z <- tung_1000(1000)
table(z)/length(z)
## z
## Ngua Xap
## 0.504 0.496
Tung xúc sắc về bản chất kết quả chính là một phân phối đồng nhất vì xác suất thu được các mặt có các chấm là như nhau, đều bằng 1/6
toss.die = function(){
x = runif(1)
if(x <=1/6) 1 else{
if(x <= 2/6) 2 else{
if(x <=3/6 )3 else{
if(x <=4/6) 4 else{
if(x <=5/6) 5 else 6
}
}
}
}
}
sample.die = function(n){
replicate(n,toss.die())
}
X = sample.die(1000)
table(X)/length(X) #Tần suất xuất hiện của từng mặt trong n lần tung
## X
## 1 2 3 4 5 6
## 0.161 0.165 0.180 0.170 0.162 0.162
solve_2 = function(a,b,c){
if(a==0){
if(b==0 & c==0){
print("Phuong trinh vo so nghiem")
}
if(b==0 & c != 0 ){
print("Phuong trinh vo nghiem")
}
else {
print("Phuong trinh co nghiem :")
print(-c/b)
}
}
else{
delta = b^2-4*a*c
if(delta <0){
print("Phuong trinh vo nghiem")
}
else if(delta == 0){
x = -b/(2*a)
print("Phuong trinh co nghiem kep x = ")
print(x)
}
else if(delta > 0 ){
x1 = (-b + sqrt(delta))/(2*a)
x2 = (-b - sqrt(delta))/(2*a)
print("Phuong trinh co 2 nghiem phan biet:")
print(x1)
print(x2)
}
}
}
solve_2(1,2,3)
## [1] "Phuong trinh vo nghiem"