



















Preview text:
BÀI THỰC HÀNH XÁC SUẤT THỐNG KÊ  MỤC LỤC 
I. Giới thiệu về phần mềm R 
1. Giới thiệu chung về phần mềm R  2. Tính năng của R 
II. Sử dụng phần mềm R trong tính toán với Xác suất, Thống kê. 
1. Các lệnh cơ bản về xác suất 
2. Sử dụng phần mềm R trong tính toán với Thống kê 
III. Áp dụng phần mềm R vào bài tập của sinh viên khoa Dược  1. Phần xác suất  2. Phần thống kê 
IV. Bài tập thực hành thống kê mô tả trong R 
I. Giới thiệu về phần mềm R 
1. Giới thiệu chung về phần mềm R 
 R là một phần mềm mã nguồn mở (cũng được gọi là ngôn ngữ R, lập trình R, thống kê R…) sử 
dụng cho phân tích thống kê và vẽ biểu đồ. Về bản chất, R là ngôn ngữ máy tính đa năng có thể 
sử dụng cho nhiều mục tiêu khác nhau, từ tính toán đơn giản, toán học giải trí, tính toán ma 
trận đến các phân tích thống kê phức tạp. Vì là một ngôn ngữ, cho nên người ta có thể sử dụng 
R để phát triển thành các phần mềm chuyên môn cho một vấn đề tính toán cá biệt. 
 Vì tính hữu dụng và là mã nguồn mở cho nên trong những năm gần đây phần mềm R đã 
được phát triển rất mạnh mẽ. Càng ngày càng có nhiều nhà thống kê học, toán học, nghiên cứu 
trong mọi lĩnh vực đã chuyển sang sử dụng R để phân tích dữ liệu khoa học. R đang được đánh 
giá là một phần mềm thống kê miễn phí rất thành công.  2. Tính năng của R 
 R cho phép giải quyết một khối lượng lớn những bài toán trong tính toán xác suất, tính toán 
và phân tích thống kê và đồ thị. Các bài toán thống kê phổ biến như hồi quy tuyến tính và phi     
tuyến, ước lượng và kiểm định thống kê cổ điển, phân tích chuỗi thời gian,…đều có thể được  thực hiện trên R. 
II. Sử dụng phần mềm R trong tính toán với Xác suất, Thống kê. 
1. Các lệnh cơ bản về xác suất: 
 Hoán vị, chỉnh hợp, tổ hợp  Phép toán  Hàm lệnh  Hoán vị  prod(n:1)  Chỉnh hợp  permutations(n,k)  Tổ hợp  choose(,.k) 
 Chọn mẫu ngẫu nhiên 
Cách chọn mẫu cỡ n trong tổng thể N  Hàm trong R 
Chọn mẫu ngẫu nhiên không hoàn lại  sample(1:N,n) 
Chọn mẫu ngẫu nhiên có hoàn lại  sample(1:N,n, replace = TRUE) 
2. Sử dụng phần mềm R trong tính toán với Thống kê 
 Các hàm số trong thống kê 
Tính toán trong thống kê 
Hàm trong phần mềm R 
Nhập số liệu của một đối tượng  c() 
Số nhỏ nhất của đối tượng  min() 
Số lớn nhất của đối tượng  max() 
Tính tổng các số hạng của đối tượng  sum() 
Tính số trung bình của các số liệu  mean()  Tính phương sai  var()  Tính độ lệch chuẩn  sd()  Tính trung vị  median()  length() 
Tính số các số hạng của một đối tượng  table() 
Lập bảng tần số từ dữ liệu  cut() 
Từ dãy các số liệu rời rạc ta muốn lập 
bảng tần số theo khoảng  cov(x,y) 
Hiệp phương sai của hai biến số x và y  cor(x,y) 
Hệ số tương quan của hai biến số x và y  cov(X) cor(X) 
Hiệp phương sai của các biến số trong X     
Hệ số tương quan của các biến số trong  X 
 Các phân phối thường dùng trong Thống kê  Phân phối 
Mật độ p(x) 
Xác suất tích lũy  Phân vị P(  Ngẫu nhiên 
X≤ x) = p 
P( X ≤ x)  Chuẩn 
dnorm(x,mean,sd) pnorm(q,mean,sd) qnorm(p,mean,sd) rnorm(n,mean,sd)  T  dt(x,df)  pt(q,df)  qt(p,df)  rt(n,df)  F  df(x,df1,df2)  pf(q,df1,df2)  qf(p,df1,df2)  rf(n,df1,df2)  dchisq(x,df)  pchi(q,df)  qchisq(p,df)  rchisq(n,df)  χ 2  Nhị thức  dbinom(k,n,p)  pbinom(q,n,p)  qbinom(p,n,p)  rbinom(k,n,prob)  Poisson  λ  λ  λ  λ  dpois(k, )  ppois(q, )  qpois(p, )  rpois(n, )  Exponential  λ  λ  λ  λ  dexp(x, )  pexp(q, )  qexp(p, )  rexp(n, )  Đều U(a,b)  dunif(x,a,b)  punif(q,a,b)  qunif(p,a,b)  runif(n,a,b) 
 Một số hàm lệnh của phần mềm R trong kiểm định và phân tích hồi quy  Kiểm định 
Hàm trong phần mềm R     
Kiểm định t - một mẫu  t.test() 
Kiểm định t – hai mẫu  t.test(x~y) 
Kiểm định t – cho các biến số theo cặp  (paired, t.test) 
Kiểm định tỉ lệ; So sánh 2 tỉ lệ  prop.test; binom.test() 
Kiểm định Chi bình phương ( χ 2 )  chisq.test()  Kiểm định Fisher  fisher.test()  Kiểm định nhị thức  binom.test()  Kiểm định chuẩn (0,1)  z.test() 
Kiểm định tương quan hai biến x và y  cor.test(x,y) 
Kiểm định F về tỉ số hai phương sai  var.test(x,y) 
Hệ số tương quan, cỡ mẫu, và các giá trị xác suất  library(psych) 
của data.frame hoặc ma trận X  corr.test(X) 
Hệ số tương quan của data.frame hoặc ma trận X  pairs.panels() 
Hồi quy tuyến tính hai biến  lm(y~x) 
Hồi quy tuyến tính nhiều biến  lm(y~x1+x2+x3) 
Shapiro – Wilk test về tính chuẩn  shapiro.test() 
III. Áp dụng tích hợp phần mềm R vào bài tập của sinh viên Dược  1.Phần xác suất  Chương 1,2,3 
Ví dụ 1: Một học sinh xếp 10 quyển sách lên kệ sách. Hỏi có bao nhiêu cách sắp  xếp?  Giải:  > prod(10:1)  [1] 3628800 
Ví dụ 2: Một nhóm trong lớp học có 6 nam và 4 nữ, chọn ra 3 bạn để đi vệ sinh. 
Hỏi có bao nhiêu cách chọn?      Giải:  choose(10,3)  [1] 120 
Ví dụ 3: Một bà mẹ dự sinh 3 người con( mỗi lần sinh một đứa con), giả sử xác 
suất được người con gái là 0.48. Tính xác suất để trong 3 lần sinh đó có ba con gái  Trả lời  > dbinom(3,3,0.48)  [1] 0.110592 
Ví dụ 4: Xác suất mắc bệnh sau khi dùng vacxin là 0,001. Dùng vacxin cho 5000 trẻ 
em. Tìm xác suất để 5 trẻ bị bệnh khi dùng vacxin  Giải:  > dpois(5,5)  [1] 0.1754674 
Ví dụ 5: Giả sử độ cao của trẻ em từ độ tuổi 8 đến 10 tuổi là biến ngẫu nhiên có 
phân phối chuẩn ( 𝜇,𝜎2 ). Biết chiều cao trung bình là = 1,3 m và độ lệch chuẩn 
= 0,01. Tính xác suất để trẻ em có độ cao nằm trong khoảng (1,2m; 1,4m).  Giải: 
> pnorm((1.4-1.3)/sqrt(0.01))-pnorm((1.2-1.3)/sqrt(0.01))  [1] 0.6826895  2.Phần thống kê 
Ví dụ 6: Đo chiều cao X của 100 sinh viên của một trường, ta thu được bảng số  liệu sau:  Chiều cao (cm)  156  160  164  168  172  176  180  Số sinh viên  10  14  26  28  12  8  2 
Tính trung bình và phương sai mẫu?     
> Chieucao=c(156,160,164,168,172,176,180) 
> Sosinhvien=c(10,14,26,28,12,8,2) 
> x=rep(Chieucao,Sosinhvien)  > mean(x)  [1] 166  > var(x)  [1] 33.778  > sd(x)  [1] 5.812 
Ví dụ 7: Xét nghiệm Cholesterol toàn phần X (mmol/lít) cho 500 người ta thu được  kết quả:  Khoảng Cholesterol  35-40  40-45  45-50 50-55 55-60  60-65  65-70  Trung tâm lớp xi  37.5  42.5  47.5  52.5  57.5  62.5  67.5  Số người ni  19  42  125  155  83  55  21 
Với độ tin cậy 95% hãy ước lượng khoảng tin cậy của lượng Cholesterol trung bình 
của những người ở độ tuổi trên Giải: 
> luongCholesterol=c(37.5,42.5,47.5,52.5,57.5,62.5,67.5) 
> songuoi=c(19,42,125,155,83,55,21) 
> x=rep(luongCholesterol,songuoi) 
> t.test(x,conf.level=0.95)  One Sample t-test data: x 
t = 169.32, df = 499, p-value < 2.2e-16 
alternative hypothesis: true mean is not equal to 0 
95 percent confidence interval: 51.79198  53.00802 sample estimates:  mean of x       52.4 
Ví dụ 8: Hàm lượng X (mg/viên) Tettracyclin loại 0,05 được quy định là 50(mg/viên). 
Kiểm tra hàm lượng của một lô thuốc ta nhận được kết quả sau: 
X (mg/viên) 49,8 49,6 49,5 50,1 49,7 49,9 49,8 50,5 50,4 50,0 
Với mức ý nghĩa 5%, hãy kiểm tra xem hàm lượng lô thuốc trên có đáp ứng được yêu cầu  quy định không?  Giải:  > library(BSDA) 
> x=c(49.8,49.6,49.5,50.1,49.7,49.9,49.8,50.5,50.4,50.0) 
> t.test(x, mu=50, alt = "two.sided") 
One Sample t-test data: x t = -0.67742,  df = 9, p-value = 0.5152 
alternative hypothesis: true mean is not equal to 50 95 percent confidence  interval:  49.69624 50.16376  sample estimates:  mean of x   49.93 
Ví dụ 3: Định lượng hàm lượng của Tetracyclin clorhydrat X trong 20 viên thuốc 
loại 500mg và thu được kết quả sau:  Hàm lượng 102  103  104  95  96  97  98  99  Số viên  1  2  4  5  3  2  2  1 
Với độ tin cậy 95%, hãy xác định khoảng tin cậy cho hàm lượng trung bình của 
Tetracyclin clorhydrat trong lô thuốc trên.  Giải:      > library(BSDA) 
> hamluong=c(102,103,104,95,96,97,98,99) 
> sovienthuoc=c(1,2,4,5,3,2,2,1) 
> x=rep(hamluong,sovienthuoc) 
> t.test(x,conf.level=0.95)  One Sample t-test 
data: x t = 120.09, df = 19, p-value < 2.2e-16 
alternative hypothesis: true mean is not equal to 0 
95 percent confidence interval: 97.07806  100.52194 sample estimates:  mean of x   98.8 
IV. Bài tập thực hành thống kê mô tả trong R 
Câu hỏi 1: Trong phần mềm R hãy đọc tệp dữ liệu duong1.csv cho trước trong thư mục 
“thuchanhr10.4” ở ổ C rồi ghi lại dưới dạng một data.frame chuyên dụng trong phần mềm R với  tên duong1.rda  Trả lời: 
> setwd("d:/thuchanhr10.4") 
> duong1<-read.csv('duong1.csv',row.names=1) 
> save(duong1,file="duong1.rda")  > View(duong1)                   
Câu hỏi 2: Hãy mô tả chung về tệp dữ liệu duong1.rda? (Như cấu trúc; số chiều;…)  Trả lời: 
Trong phần mềm R nhập và thực thi lần lượt các lệnh:  > attach(duong1)  > str(duong1)  > dim(duong1) 
Báo cáo kết quả trong phần mềm R       
Câu hỏi 3: Hãy tạo biến số có tên là reduce để phản ánh mức giảm của chỉ số đường huyết của 
các bệnh nhân sau quá trình điều trị? Ý nghĩa của biến số này theo giá trị âm/dương? Theo 
anh/chị tiên lượng thì độ tuổi (age) hoặc bệnh nền (base) sẽ có tác động như thế nào tới kết  quả điều trị?   Trả lời :  > reduce<- before-after  > head(reduce,10)    - 
Vì reduce đo mức giảm của chỉ số đường huyết cho nên khi reduce có giá trị dương 
(chẳng hạn5.2) có nghĩa là nhờ điều trị chỉ số đường huyết của bệnh nhân tương ứng đã giảm 
(được 5.2). Còn khi reduce có giá trị âm (chẳng hạn -0.9) có nghĩa là điều trị không hiệu quả vì 
chỉ số đường huyết của bệnh nhân tương ứng đã tăng 0.9 (giảm âm).  - 
Theo logic tự nhiên, người có tuổi tác (age) cao, hoặc đang có bệnh nền (base= “yes”), 
thì kết quả điều trị sẽ kém hiệu quả hơn so với trường hợp bệnh nhân còn trẻ hoặc không có  bệnh nền. 
Câu hỏi 4: Hãy tạo biến có tên bmi để đo chỉ khối cơ thể của mỗi bệnh nhân? Theo tiên lượng 
thì bmi có tương quan như thế nào với chiều hướng tốt của điều trị?  Trả lời:  > bmi<-weight/height^2       head(bmi, 5)    - 
Theo phân loại của Hiệp hội đái đường các nước châu Á (IDI & WPRO), chỉ số bmi của 
người châu Á từ 18,50 đến 22,9 kg/m2 là người có cân nặng bình thường; bmi dưới 18,5 là nhẹ 
cân, từ 23-24,9 là thừa cân; bmi từ 25 trở lên là béo phì và dễ mắc bệnh tật. Do đó với bmi từ 
25 trở lên và nếu nó càng lớn thì càng không tốt cho việc điều trị bệnh tật nói chung và bệnh  tiểu đường nói riêng. 
Câu hỏi 5: Hãy cho biết tổng quan về các biến với các quan sát trong tệp dữ liệu tệp dữ liệu 
duong1.rda (Như giá trị lớn nhất, giá trị nhỏ nhất, giá trị trung bình, Median…) Trả lời:   summary(duong 1)   
 Qua bảng số liệu ta thấy được 100 quan sát tương ứng với 100 bệnh nhân với 11 biến trong 
đó biến age, height, weight, before, after là biến numeric và những biến id, edu, job, city, base, 
tr là các biến định tính (character).   Biến “age” ta có: 
+ Người có độ tuổi cao nhất (Max): 87 tuổi     
+ Người có độ tuổi thấp nhất (Min): 28 tuổi + 
Người có độ tuổi trung bình (Mean): 45 tuổi Biến  “id” ta có:  + Id cao nhất ( Max): 100 
+ Id thấp nhất (Min): 1 + Id 
trung bình (Mean): 50.50 Biến  :weight” ta có: 
+ Người có cân nặng cao nhất (Max): 83 
+ Người có cân nặng thấp nhất (Min): 48 + 
Người có cân nặng trung bình (Mean): 63.91   Biến “height” ta có: 
+ Người có chiều cao cao nhất (Max): 1.96 
+ Người có chiều cao thấp nhất (Min): 1.21 + 
Người có chiều cao trung bình (Mean): 1.561 Biến  “before” ta có: 
+ Before cao nhất (Max): 22.2 
+ Before thấp nhất (Min): 8.4 + 
Before trung bình (Mean): 14.28 Biến  “after” ta có: 
+ After cao nhất (Max): 17.4 
+ After thấp nhất (Min): 5.4 
+ Afterr tung bình (Mean): 10.63 
Câu hỏi 6: Hãy biểu diễn các biến numeric thông qua biểu đồ hình cột và đưa ra nhận xét  Trả lời: 
> hist(duong1$age, main="Do tuoi", xlab="So tuoi", ylab="So nguoi")   Nhận xét: 
+ Khoảng tuổi có nhiều người nhất  (Max: 30 – 40 tuổi ) 
+ Khoảng tuổi có ít người nhất (Min: 20 –  30 tuổi )     
> hist(duong1$height, main="Chieu cao", xlab="Chieu cao", ylab="So nguoi")   Nhận xét: 
+ Khoảng chiều cao có nhiều người nhất  (Max: 1.5 – 1.6m ) 
+ Khoảng chiều cao có ít người nhất (Min: 1.9 –  2m ) 
> hist(duong1$weight, main="Can nang", xlab="Chi so", ylab="So nguoi")   Nhận xét: 
+ Khoảng cân nặng có nhiều người nhất  (Max: 65 – 70kg ) 
+ Khoảng cân nặng có ít người nhất (Min: >  80kg)     
> hist(duong1$before, main="Chi so duong huyet truoc", xlab="Chi so", ylab="So nguoi")   Nhận xét: 
+ Chỉ số đường huyết trước có nhiều người nhất  (Max: 10 – 20 ) 
+ Chỉ số đường huyết trước có ít người nhất  (Min: <10 và >20) 
> hist(duong1$after, main="Chi so duong huyet sau", 
xlab="Chi so", ylab="So nguoi")   Nhận xét:  + Chỉ số  đường huyết 
sau có nhiều người nhất  (Max: 8 – 10 ) 
+ Chỉ số đường huyết sau có ít người  nhất (Min: 16  – 18 ) 
Câu hỏi 7: Hãy biểu diễn các biến numeric dưới dạng hàm phân phối xác suất?  Trả lời:                                 
Câu hỏi 8: Chia các biến numeric thành nhiều nhóm nhỏ và biểu biễn bằng biểu đồ hình tròn:     
Trả lời: Chẳng hạn với biến before, ta có thể chia 100 bệnh nhân thành 3 nhóm hoặc 4 nhóm  như sau:   
- Vậy nếu chia chỉ số đường huyết trước điều trị (before) thành 3 nhóm ta có: 
+ Nhóm 1: có chỉ số đường huyết từ 8,38 đến 13 có 43 bệnh nhân 
+ Nhóm 2: có chỉ số đường huyết từ 13 đến 17,6 có 36 bệnh nhân 
+ Nhóm 3: có chỉ số đường huyết từ 17,6 đến 22,2 có 21 bệnh nhân 
- Còn nếu chia chỉ số đường huyết trước điều trị (before) thành 4 nhóm thì ta có: 
+ Nhóm 1: có chỉ số đường huyết từ 8,39 đến 11,8 có 27 bệnh nhân 
+ Nhóm 2: có chỉ số đường huyết từ 11,8 đến 15,3 có 33 bệnh nhân 
+ Nhóm 3: có chỉ số đường huyết từ 15,3 đến 18,8 có 31 bệnh nhân 
+ Nhóm 4: có chỉ số đường huyết từ 18,8 đến 22,2 có 9 bệnh nhân 
Để đạt được hiệu quả cao trong quá trình điều trị, người ta có thể chia bệnh nhân thành những 
nhóm có chỉ số đường huyết gần nhau để áp dụng các phác đồ điều trị giống nhau     
Câu hỏi 9: Hãy theo dõi bệnh nhân theo từng nhóm có cùng chỉ số, cùng thuộc tính và biểu diễn 
bởi biểu đồ hình cột? 
 Trả lời : Chẳng hạn ta theo dõi nhóm bệnh nhân có cùng chỉsố đường huyết trước điều trị 
(before) với cùng phác đồ điều trị (tr)