Bài giảng Ngôn ngữ R và xử lý thống kê - Phần 2: Sử dụng R cho tính toán xác suất

18 35 0
Bài giảng Ngôn ngữ R và xử lý thống kê - Phần 2: Sử dụng R cho tính toán xác suất

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng cung cấp cho người học các kiến thức: Sử dụng R cho tính toán xác suất, biến ngẫu nhiên và hàm phân phối, hàm phân phối Poisson,... Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn dùng làm tài liệu học tập và nghiên cứu. Mời các bạn cùng tham khảo chi tiết nội dung tài liệu.

R - Sử dụng R cho tính tốn xác suất 7.1 Hoán vị (permutation) Chúng ta biết 3! = 3.2.1 = 6, 0!=1 Nói chung, cơng thức tính số hoán vị cho số n là:n! n n -1 n - n - Trong R cách tính đơn giản với lệnh prod() sau: Tìm 3! > prod(3:1) [1] Tìm 10! > prod(10:1) [1] 3628800 Tìm 10.9.8.7.6.5.4 > prod(10:4) [1] 604800 Tìm (10.9.8.7.6.5.4) / (40.39.38.37.36) > prod(10:4) / prod(40:36) [1] 0.007659481 7.2 Tổ hợp (combination) Tổ hợp tính hàm choose(n,k) Thí dụ choose(5,2) = 10 7.3 Biến ngẫu nhiên hàm phân phối Khi nói đến “phân phối” (hay distribution) đề cập đến giá trị mà biến có Các hàm phân phối (distribution function) hàm mơ tả biến cách hệ thống “Có hệ thống” có nghĩa theo mơ hình tốn học cụ thể với thơng số cho trước Trong xác suất thống kê có nhiều hàm phân phối, em xét qua số hàm quan trọng thơng dụng nhất: phân phối nhị phân, phân phối Poisson, phân phối chuẩn Trong luật phân phối, có loại hàm quan trọng mà cần biết: hàm mật độ xác suất (probability density distribution); hàm phân phối tích lũy (cumulative probability distribution); hàm định bậc (quantile); hàm mô (simulation) R có hàm nh sẵn ứng dụng cho tính tốn xác suất Tên hàm gọi tiếp đầu ngữ để loại hàm phân phối, viết tắt tên hàm Các tiếp đầu ngữ d (chỉ distribution hay xác suất), p (chỉ cumulative probability, xác suất tích lũy), NDH 18 R q (chỉ định bậc hay quantile), r (chỉ random hay số ngẫu nhiên) Các tên viết tắt norm (normal, phân phối chuẩn), binom (binomial , phân phối nhị phân), pois (Poisson, phân phối Poisson), v.v… Bảng sau tóm tắt hàm thơng số cho hàm: Mật độ Tích lũy Định bậc Mơ pphoi Chuẩn dnorm(x, mean,sd) pnorm(q, mean, sd) qnorm(p, mean, sd) rnorm(n, mean, sd) Nhị phân dbinom(k, n, p) pbinom(q, n, p) qbinom (p, n, p) rbinom(k, n, prob) Poisson dpois(k, lambda) ppois(q, lambda) qpois(p, lambda) rpois(n, lambda) Uniform dunif(x,min,max) punif(q, min, max) qunif(p, min, max) runif(n, min, max) Negative dnbinom(x, k, p) pnbinom(q, k, p) qnbinom (p,k,prob) rbinom(n, n, prob) dbeta(x, pbeta(q,shape1, qbeta(p,shape1, rbeta(n,shape1, shape1,shape2) shape2) shape2) shape2) dgamma(x, shape, gamma(q,shape qgamma(p,shape rgamma(n, shape, rate, scale) ,rate,scale) , rate, scale) rate, scale) Geometric dgeom(x, p) pgeom(q, p) qgeom(p, prob) rgeom(n, prob) Exponentia dexp(x, rate) pexp(q, rate) qexp(p, rate) rexp(n, rate) binomial Beta Gamma l Weibull Cauchy dnorm(x, mean, sd) pnorm(q, mean, sd) qnorm(p, mean, sd) rnorm(n, mean, sd) dcauchy(x, location, pcauchy(q, qcauchy(p, rcauchy(n, scale) location, scale) location, scale) location, scale) F df(x, df1, df2) pf(q, df1, df2) qf(p, df1, df2) rf(n, df1, df2) T dt(x, df) pt(q, df) qt(p, df) rt(n, df) Chi- dchisq(x, df) pchi(q, df) qchisq(p, df) rchisq(n, df) squared NDH 19 R Chú thích: Trong bảng trên, df = degrees of freedome (bậc tự do);prob = probability (xác suất); n = sample size (số lượng mẫu) Các thơng số khác tham khảo thêm cho luật phân phối Riêng luật phân phối F, t, Chi-squared cịn có thơng số khác non-centrality parameter (ncp) cho số Tuy nhiên người sử dụng cho thơng số khác thích hợp, cần NDH 20 R 7.3.2 Hàm phân phối Poisson (Poisson distribution) Hàm phân phối Poisson, nói chung, giống với hàm nhị phân, ngoại trừ thông số p thường nhỏ n thường lớn Vì thế, hàm Poisson thường sử dụng để mô tả biến số xảy (như số người mắc ung thư dân số chẳng hạn) Hàm Poisson cịn ứng dụng nhiều thành cơng nghiên cứu kĩ thuật thị trường số lượng khách hàng đến nhà hàng NDH 21 R Ví dụ 4: Hàm mật độ Poisson (Poisson density probability function) Qua theo dõi nhiều tháng, người ta biết tỉ lệ đánh sai tả thư kí đánh máy Tính trung bình khoảng 2.000 chữ thư kí đánh sai chữ Hỏi xác suất mà thư kí đánh sai tả chữ, chữ bao nhiêu? Vì tần số thấp, giả định biến số “sai tả” (tạm đặt tên biến số X) hàm ngẫu nhiên theo luật phân phối Poisson Ở đây, có tỉ lệ sai tả trung bình λ = 1) Luật phân phối Poisson phát biểu xác suất mà X = k, với điều kiện tỉ lệ trung bình λ p(X = k) = e-λ λk /k! Do đó, đáp số cho câu hỏi là: e -1 /2! = 0,1839 tính R cách nhanh chóng hàm dpois sau: > dpois(2, 1) [1] 0.1839397 Chúng ta tính xác suất sai chữ, xác suất không sai chữ nào: > dpois(1, 1) [1] 0.3678794 > dpois(0, 1) [1] 0.3678794 > dpois(2,1) Chú ý hàm trên, đơn giản cung cấp thông số k = λ = Trên xác suất mà thư kí đánh sai tả chữ Nhưng xác suất mà thư kí đánh sai tả chữ (tức 3, 4, 5, … chữ) ước tính bằng: P X P X P X P( X 5) = X ≤ = – 0.3678 – 0.3678 – 0.1839 Bằng R, tính sau: # P(X ≤ 2) > ppois(2, 1) [1] 0.9196986 # 1-P(X ≤ 2) = 0.08 > 1-ppois(2, 1) [1] 0.0803014 7.3.3 Hàm phân phối chuẩn (Normal distribution) Hai luật phân phối mà vừa xem xét thuộc vào nhóm phân phối áp dụng cho biến số phi liên tục (discrete distributions), mà biến số có giá trị theo bậc thứ hay thể loại Đối với biến số liên tục, có vài luật phân phối thích hợp khác, mà quan trọng phân phối chuẩn Phân phối chuẩn tảng quan trọng phân tích thống kê Có thể nói hầu hết lí thuyết thống kê xây dựng tảng phân phối chuẩn Hàm mật độ phân phối chuẩn có dạng: NDH 22 R Ví dụ 5: Hàm mật độ phân phối chuẩn (Normal density probability function) Chiều cao trung bình phụ nữ Việt Nam 156 cm, với độ lệch chuẩn 4.6 cm NDH 23 R Hàm xác suất chuẩn tích lũy (cumulative normal probability function) Vì hiều cao biến số liên tục, thực tế muốn tìm xác suất cho giá trị cụ thể x, mà thường tìm xác suất cho khoảng giá trị a đến b Chẳng hạn muốn biết xác suất chiều cao từ 150 đến 160 cm (tức P(150 ≤ X ≤ 160), hay xác suất chiều cao thấp 145 cm, tức P(X < 145) Để tìm đáp số câu hỏi thế, cần đến hàm xác suất chuẩn tích lũy, định nghĩa sau: Xác suất chiều cao phụ nữ Việt nam thấp hay 150 cm > pnorm(150, 156, 4.6) [1] 0.0960575 Khoảng 9,6% phụ nữ Việt nam thấp hay 150 cm Hay xác suất chiều cao phụ nữ Việt Nam cao 165 cm là: > 1-pnorm(164, 156, 4.6) [1] 0.04100591 Nói cách khác, có khoảng 4.1% phụ nữ Việt Nam có chiều cao hay cao 165 cm Ví dụ 6: Ứng dụng luật phân phối chuẩn: Trong quần thể, biết áp suất máu trung bình 100 mmHg độ lệch chuẩn 13 mmHg, hỏi: có ngừơi quần thể có áp suất máu cao 120 mmHg? Câu trả lời R là: > 1-pnorm(120, mean=100, sd=13) [1] 0.0619679 Tức khoảng 6.2% người quần thể có áp suất máu cao 120 mmHg 7.3.4 Hàm phân phối chuẩn chuẩn hóa (Standardized Normal distribution) NDH 24 R > height plot(height, dnorm(height, 0, 1), type="l", ylab=”f(z)”, xlab=”z”, main="Probability distribution of height in Vietnamese women") Với phân phối chuẩn chuẩn hố, có tiện lợi dùng để mơ tả so sánh mật độ phân phối biến nào, tất chuyển sang số z Trong biểu đồ trên, trục tung xác suất z trục hoành biến số z Chúng ta tính tốn xác suất z nhỏ số (constant) dê dàng R Ví dụ, muốn tìm P(z ≤ -1.96) = ? cho phân phối mà trung bình độ lệch chuẩn > pnorm(-1.96, mean=0, sd=1) [1] 0.02499790 Hay P(z ≤ 1.96) = ? > pnorm(1.96, mean=0, sd=1) [1] 0.9750021 Do đó, P(-1.96 < z < 1.96) là: > pnorm(1.96) - pnorm(-1.96) [1] 0.9500042 NDH 25 R Nói cách khác, xác suất 95% z nằm -1.96 1.96 (Chú ý lệnh không cung cấp mean=0, sd=1, thực tế, pnorm giá trị mặc định (default value) thông số mean sd 1) Ví dụ (tiếp tục) Xin nhắc lại để tiện việc theo dõi, chiều cao trung bình phụ nữ Việt Nam 156 cm độ lệch chuẩn 4.6 cm Do đó, phụ nữ có chiều cao 170 cm có nghĩa z = (170 – 156) / 4.6 = 3.04 độ lệch chuẩn, ti lệ phụ nữ Việt Nam có chiều cao cao 170 cm thấp, khoảng 0.1% > 1-pnorm(3.04) [1] 0.001182891 Tìm định lượng (quantile) phân phối chuẩn Đôi cần làm tính tốn đảo ngược Chẳng hạn muốn biết: xác suất Z nhỏ số z cho trước p, z bao nhiêu? Diễn tả theo kí hiệu xác suất, muốn tìm z nếu: P(Z < z) = p Để trả lời câu hỏi này, sử dụng hàm qnorm(p, mean=, sd=) Ví dụ 7: Biết Z ~ N(0, 1) P(Z < z) = 0.95, muốn tìm z > qnorm(0.95, mean=0, sd=1) [1] 1.644854 Hay P(Z < z) = 0.975 cho phân phối chuẩn với trung bình độ lệch chuẩn 1: > qnorm(0.975, mean=0, sd=1) [1] 1.959964 Biểu đồ Trong ngơn ngữ R có nhiều cách để thiết kế biểu đồ gọn đẹp Phần lớn hàm để thiết kế biểu đồ có sẵn R, số loại biểu đồ tinh vi phức tạp khác thiết kế package chuyên dụng lattice hay trellis tải từ website R Trong chương cách vẽ biểu đồ thông dụng cách sử dụng hàm phổ biến R 8.1 Số liệu cho phân tích biểu đồ Sau biết qua mơi trường lựa chọn để thiết kế biểu đồ, sử dụng số hàm thông dụng để vẽ biểu đồ cho số liệu Theo tơi, biểu đồ chia thành loại chính: biểu đồ dùng để mơ tả biến số biểu đồ mối liên hệ hai hay nhiều biến số Tất nhiên, biến số liên tục hay không liên tục, cho nên, thực tế, có loại biểu đồ Trong phần sau đây, điểm qua loại biểu đồ, từ đơn giản đến phức tạp Có lẽ cách tốt để tìm hiểu cách vẽ đồ thị R liệu thực tế Tôi quay lại ví dụ (phần 4.2) Trong ví dụ đó, có liệu gồm cột (hay biến số): id, sex, age, bmi, hdl, ldl, tc, tg (Chú ý, id mã số 50 đối tượng nghiên cứu; sex giới tính (nam hay nữ); age độ tuổi; bmi tỉ số trọng lương; hdl high density cholesterol; ldl low density cholesterol; tc tổng số - total – cholesterol; tg triglycerides) Dữ liệu chứa directory directory c:/works/insulin tên chol.txt Trước vẽ đồ thị, NDH 26 R bắt đầu cách nhập liệu vào R > setwd(“c:/works/stats”) > cong attach(cong) Hay để tiện việc theo dõi nhập liệu lệnh sau đây: sex pie(table(ageg)) Thí dụ pie(table(cut(age,5))) NDH 29 R 8.5 Biểu đồ cho biến số liên tục: stripchart hist 8.5.1 Stripchart Biểu đồ strip cho thấy tính liên tục biến số Chẳng hạn muốn tìm hiểu tính liên tục triglyceride (tg), hàm stripchart() giúp mục tiêu này: > stripchart(tg, main=”Strip chart for triglycerides”, xlab=”mg/L”) 8.5.2 Histogram Age biến số liên tục Để vẽ biểu đồ tần số biến số age, đơn giản lệnh hist(age) Như đề cập trên, cải tiến đồ thị cách cho thêm tựa đề (main) tựa đề trục hoành (xlab) trục tung (ylab): > hist(age) > hist(age, main="Frequency distribution by age group", xlab="Age group", ylab="No of patients") Chúng ta biến đổi biểu đồ thành đồ thị phân phối xác suất hàm NDH 30 R plot(density) sau (kết Biểu đồ 12a): 0.01 Density 0.01 0.02 0.03 > plot(density(age),add=TRUE) Chúng ta vẽ hai đồ thị chồng lên cách dùng hàm interquartile sau (kết xem Biểu đồ 12b): 8.6 Biểu đồ hộp (boxplot) Để vẽ biểu đồ hộp biến số tc, đơn giản lệnh: Trong biểu đồ sau đây, so sánh tc hai nhóm nam nữ: > boxplot(tc ~ sex, main=”Box plot of total cholestrol by sex”, ylab="mg/L") NDH 31 R Kết trình bày Biểu đồ 14a Chúng ta biến đổ giao diện đồ thị cách dùng thông số horizontal=TRUE thay đổi màu thông số col sau (Biểu đồ 14b): > boxplot(tc~sex, horizontal=TRUE, main="Box plot of total cholesterol", ylab="mg/L", col = "pink") Bo x p lot of tota l c ho les te rol Nam mg/L mg/L Nu Box plot of to ta l choles terol by sex 3 Nam Nu Biểu đồ 14a Trong biểu đồ này, Biểu đồ 14b Total cholesterol cho thấy trung vị total cholesterol nữ giới giới tính, với màu sắc hình hộp nằm thấp nam giới, độ dao động ngang hai nhóm khơng khác 8.7 Phân tích biểu đồ cho hai biến liên tục 8.7.1 Biểu đồ tán xạ (scatter plot) Để tìm hiểu mối liên hệ hai biến, dùng biểu đồ tán xạ Để vẽ biểu đồ tán xạ mối liên hệ biến số tc hdl, sử dụng hàm plot Thông số thứ hàm plot trục hoành (x-axis) thơng số thứ trục tung Để tìm hiểu mối liên hệ tc hdl đơn giản lệnh: > plot(tc,hdl) NDH 32 R Chúng ta muốn phân biệt giới tính (nam nữ) biểu đồ Để vẽ biểu đồ đó, phải dùng đến hàm ifelse Trong lệnh sau đây, sex==”Nam” vẽ kí tự số 16 (ơ trịn), khơng nam vẽ kí tự số 22 (tức ô vuông): > plot(hdl, tc, pch=ifelse(sex=="Nam", 16, 22)) Kết Biểu đồ 16a Chúng ta thay kí tư thành “M” (nam) “F” nữ(xem Biểu đồ 16b): > plot(hdl, tc, pch=ifelse(sex=="Nam", “M”, “F”)) Chúng ta vẽ đường biểu diễn hồi qui tuyến tính (regression line) qua điểm cách tiếp tục lệnh sau đây: > plot(hdl ~ tc, pch=16, main="Total cholesterol and HDL cholesterol", xlab="Total cholesterol", ylab="HDL cholesterol", bty=”l”) > reg abline(reg) Kết Biểu đồ 17a Chúng ta dùng hàm trơn (smooth function) để biểu diễn mối liên hệ hai biến số Đồ thị sau sử dụng lowess (một hàm thông thường nhất) việc “làm trơn” số liệu tc hdl (Biểu đồ 17b) NDH 33 R >plot(hdl ~tc,pch=16, main="Total cholesterol and HDL cholesterol with LOEWSS smooth function", xlab="Total cholesterol", ylab="HDL cholesterol", bty=”l”) > lines(lowess(hdl, tc, f=2/3, iter=3), col="red") 8.8 Phân tích Biểu đồ cho nhiều biến: pairs Chúng ta tìm hiểu mối liên hệ biến số age, bmi, hdl, ldl tc cách dùng lệnh pairs Nhưng trước hết, phải đưa biến số vào data.frame gồm biến số vẽ được, sau sử dụng hàm pairs R > lipid pairs(lipid, pch=16) Kết là: NDH 34 R 8.9 Biểu đồ với sai số chuẩn (standard error) Trong biểu đồ sau đây, có nhóm (biến số x mơ khơng phải số liệu thật), nhóm có giá trị trung bình mean, độ tin cậy 95% (lcl ucl) Thông thường lcl=mean-1.96*SE ucl = mean+1.96*SE (SE sai số chuẩn) Chúng ta muốn vẽ biểu đồ cho nhóm với sai số chuẩn Các lệnh hàm sau cần thiết: > group mean lcl ucl plot(group, mean, ylim=range(c(lcl, ucl))) > arrows(group, ucl, group, lcl, length=0.5, angle=90, code=3) NDH 35 ... directory directory c:/works/insulin tên chol.txt Trước vẽ đồ thị, NDH 26 R bắt đầu cách nhập liệu vào R > setwd(“c:/works/stats”) > cong

Ngày đăng: 08/05/2021, 16:48

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan