, m − 1 và xn/mgọi là số giả ngẫu nhiên, xn/m được dùng để xấp xỉ giá trị của một biếnsố ngẫu nhiên phân phối đều trong khoảng 0, 1.. Một cách khác để tạo số giả ngẫu nhiên bằng cách tín
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
NGUYỄN THỊ KIM LOAN
MÔ PHỎNG THỐNG KÊ VÀ ỨNG DỤNG
Chuyên ngành: Lý thuyết Xác suất và Thống kê Toán học
Mã số: 60.46.15
LUẬN VĂN THẠC SĨ: TOÁN HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC PGS TS NGUYỄN BÁC VĂN
Thành phố Hố Chí Minh – 2011
Trang 2Lời cảm ơn
Tôi xin gửi lời cảm ơn chân thành và sâu sắc nhất đến PGS TS NguyễnBác Văn, người Thầy đã tận tình dạy dỗ, hướng dẫn tôi trong suốt quátrình thực hiện luận văn cao học và tạo mọi điều kiện để tôi có thểhoàn thành luận văn này
Tôi xin gửi lời cảm ơn đến các thầy cô khoa Toán − Tin học đã tạođiều kiện cho tôi hoàn thành khóa học
Tôi xin cảm ơn gia đình, bạn bè đã động viên và tạo mọi điều kiệntốt nhất để tôi tiếp tục theo đuổi việc học tập nghiên cứu
Học viên Nguyễn Thị Kim Loan
Trang 3Mục lục
1.1 Tạo số giả ngẫu nhiên 4
1.2 Sử dụng số ngẫu nhiên để tính tích phân 6
1.3 Bảng số ngẫu nhiên 14
2 TẠO BIẾN NGẪU NHIÊN RỜI RẠC 16 2.1 Phương pháp biến đổi ngược 16
2.2 Tạo hoán vị ngẫu nhiên và ứng dụng trong y khoa 18
2.3 Tạo biến ngẫu nhiên có phân phối Poisson 30
2.4 Tạo biến ngẫu nhiên có phân phối nhị thức 33
2.5 Phương pháp chấp nhận − bác bỏ 36
2.6 Phương pháp hỗn hợp 38
2.7 Tạo vectơ ngẫu nhiên 40
3 TẠO BIẾN NGẪU NHIÊN LIÊN TỤC 43 3.1 Phương pháp biến đổi ngược 43
3.2 Phương pháp bác bỏ 47
Trang 43.3 Tạo vectơ ngẫu nhiên có phân phối chuẩn hai chiều.
Ứng dụng tạo số liệu giả về (tầm cao, vòng ngực) của
thiếu niên 54
4 DÙNG MÔ PHỎNG ĐỂ SO SÁNH HIỆU QUẢ CỦA CÁC PHƯƠNG PHÁP BOOTSTRAP KHÁC NHAU 61 5 GIỚI THIỆU VỀ PHẦN MỀM R 87 5.1 Các phép tính cơ bản trong R 88
5.2 Mô phỏng trong R 88
5.2.1 Tạo một dãy số trong R 88
5.2.2 Các hàm phân phối xác suất 90
5.3 Vẽ đồ thị 92
5.4 Lập trình trong R 96
Trang 5Lời mở đầu
Mô phỏng là cách để mô hình hóa các hiện tượng ngẫu nhiên, nhờvậy mà kết quả mô phỏng thường rất chặt chẽ và phù hợp với kết quảthực tế Bằng cách quan sát các kết quả mô phỏng các nhà nghiên cứucó thể có cái nhìn tiên đoán về thế giới thực Bên cạnh đó, trong mộtsố nghiên cứu, người thực hiện có thể gặp phải những khó khăn (thiếusố liệu, tốn thời gian, kinh phí để thực hiện những thí nghiệm) Khiđó, có thể nhờ mô phỏng để xấp xỉ thực tế, như vậy đòi hỏi ít thờigian, công sức và tiền bạc so với những phương pháp tiếp cận khác.Chính vì những lý do trên, trong luận văn này tôi hệ thống lại nhữngphương pháp mô phỏng trong thống kê, sau đó đi sâu vào thực hiệnmột số mô phỏng thực tế để ứng dụng Luận văn gồm 5 chương
+ Chương 1 tìm hiểu về cách tạo số ngẫu nhiên
+ Chương 2 và 3 trình bày các phương pháp tạo số liệu giả về biếnngẫu nhiên rời rạc và liên tục
+ Chương 4 dùng mô phỏng để so sánh hiệu quả của ba phương phápbootstrap khác nhau
+ Chương 5 giới thiệu về phần mềm R
Trang 61.1 Tạo số giả ngẫu nhiên
Phương pháp phổ biến nhất để tạo số ngẫu nhiên gọi là phương pháp
Trang 71.1 TẠO SỐ GIẢ NGẪU NHIÊN
với a và m là những số nguyên dương cho trước, xn là số dư của phépchia axn−1 cho m Mỗi xn nhận giá trị trong 0, 1, , m − 1 và xn/mgọi là số giả ngẫu nhiên, xn/m được dùng để xấp xỉ giá trị của một biếnsố ngẫu nhiên phân phối đều trong khoảng (0, 1)
Vì mỗi xn nhận giá trị trong 0, 1, , m − 1, vậy sau hữu hạn giá trịđược tạo thì sẽ có giá trị lặp lại, và lúc đó toàn bộ dãy sẽ bắt đầu lặplại Do đó, chúng ta muốn chọn a và m, với x0 bất kỳ, sao cho số lượngbiến ngẫu nhiên được tạo lớn nhất trước khi quá trình lặp lại xảy ra.Để làm được điều đó, hằng số a và m nên chọn thỏa 3 tiêu chuẩnsau
1 Với x0 bất kỳ, dãy kết quả có dáng vẻ của những biến ngẫu nhiênđộc lập phân phối đều trong khoảng (0, 1)
2 Với x0 bất kỳ, số lượng những biến số có thể được tạo ra là lớntrước khi xảy ra sự lặp lại
3 Những giá trị có thể được tính một cách hiệu quả bằng máy tính.Một nguyên tắc giúp thỏa mãn 3 điều kiện trên là m nên được chọnlà số nguyên tố lớn, số đó phù hợp với kích cỡ dữ liệu của máy tính
Ví dụ, với máy tính 32 bit, chọn m = 231 − 1 và a = 75 = 16.807, vớimáy tính 36 bit, chọn m = 235 − 31 và a = 55 Hai cách chọn a và mđó đều cho kết quả tốt
Một cách khác để tạo số giả ngẫu nhiên bằng cách tính toán đệ quy
xn = (axn−1 + c) mod mPhương pháp này gọi là phương pháp đồng dư hỗn tạp (bao gồm mộtphép nhân và một phép cộng) Khi sử dụng cách này, m được chọn
Trang 81.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
bằng kích thước dữ liệu của máy tính, khi đó việc tính (axn−1 + c)mod m, tức là chia (axn−1 + c) cho m, sẽ khá hiệu quả
Vậy điểm bắt đầu trong mô phỏng máy tính của hệ thống, chúng
ta giả sử rằng có thể tạo một dãy số giả ngẫu nhiên xấp xỉ giá trị củanhững biến ngẫu nhiên độc lập và có phân phối đều trong khoảng(0, 1)
1.2 Sử dụng số ngẫu nhiên để tính tích phân
Một trong những ứng dụng gần nhất của số ngẫu nhiên là tính tíchphân
Đặt g(x) là một hàm số và giả sử ta cần tính θ với
θ =
Z 1 0
g(x)dxLưu ý, biến ngẫu nhiên U có phân phối đều trên (0, 1), nên
θ = E[g(U )]
Nếu U1, , Uk là những biến ngẫu nhiên độc lập, có phân phối đềutrên (0, 1) thì dẫn đến những biến ngẫu nhiên g(U1), , g(Uk) cũngđộc lập, có cùng phân phối, có kỳ vọng là θ Do đó, theo luật mạnh sốlớn Kolmogorov, với xác suất 1,
Vì vậy, ta xấp xỉ θ bằng cách tạo ra một số lớn những số ngẫu nhiên
ui và tính trung bình cộng của g(ui) Phương pháp để xấp xỉ tích phân
như vậy gọi là phương pháp Monte Carlo.
Trang 91.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
Nếu ta muốn tính
θ =
Z b a
g(x)dxthì, bằng cách thay
g(a + [b − a]y)(b − a)dy
=
Z 1 0
h(y)dyvới h(y) = (b − a)g(a + [b − a]y) Do đó, ta có thể xấp xỉ θ bằng cáchtạo số ngẫu nhiên, sau đó tính giá trị trung bình của h
Tương tự, nếu muốn tính
θ =
Z ∞ 0
g(x)dxthì, bằng cách thay
y = 1
x + 1 và dy = − dx
(x + 1)2 = −y2dxthu được
θ =
Z 1 0
h(y)dyvới
Z 1 0
Z 1 0
g(x1, , xn)dx1dx2 dxn
Trang 101.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
Sử dụng phương pháp Monter Carlo để ước lượng θ, θ biểu diễn theokỳ vọng:
θ = E[g(U1, , Un)]
với U1, , Un là những biến ngẫu nhiên độc lập, có phân phối đềutrên khoảng (0, 1) Do đó, nếu tạo k tập độc lập, mỗi tập chứa n biếnsố ngẫu nhiên độc lập có phân phối đều trong khoảng (0, 1)
U11, , Un1
U12, , Un2
U1k, , Unkthì, vì những biến số ngẫu nhiên g(Ui
1, , Uni), i = 1, , k là nhữngbiến số ngẫu nhiên độc lập và có cùng phân phối với kỳ vọng θ, ta cóthể ước lượng θ bởi Pk
i=1g(U1i, , Uni)/k
Ví dụ 1a Ước lượng π
Giả sử vectơ ngẫu nhiên (X, Y ) có phân phối đều thuộc hình vuôngcó diện tích là 4, tâm O Nghĩa là, nó là một điểm ngẫu nhiên trongmiền chỉ định như hình
Ta xem xét xác suất để điểm ngẫu nhiên nằm trong hình tròn có bánkính 1
Trang 111.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
Lưu ý, vì (X, Y ) có phân phối đều thuộc hình vuông nên
P {(X, Y )thuộc hình tròn} = P {X2+Y2 ≤ 1} = diện tích hình tròn
diện tích hình vuông =
π4Vậy, nếu ta tạo một số lượng lớn những điểm ngẫu nhiên độc lập tronghình vuông, thì tỷ lệ những điểm rơi vào trong hình tròn xấp xỉ π/4.Nếu X và Y độc lập và có phân phối đều trên (−1, 1) thì hàm mật độđồng thời của chúng là
f (x, y) = f (x)f (y)
= 1
2 ·
12
= 1
4, −1 ≤ x ≤ 1, −1 ≤ y ≤ 1
Vì hàm mật độ của (X, Y ) là hằng số trong hình vuông nên (X, Y ) cóphân phối đều trong hình vuông Nếu U có phân phối đều trên (0, 1)thì 2U có phân phối đều trên (0, 2), 2U − 1 có phân phối đều trên(−1, 1) Do đó, nếu ta tạo số ngẫu nhiên U1 và U2, đặt
X = 2U1− 1và
Y = 2U2− 1và định nghĩa
Trang 121.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
thì
E[I] = P {X2+ Y2 ≤ 1} = π
4
Ta có thể ước lượng π
4 bằng cách tạo một số lượng lớn các cặp sốngẫu nhiên u1, u2 và lấy ước lượng π
4 là tỉ lệ những cặp thỏa điều kiện(2u1 − 1)2+ (2u2− 1)2 ≤ 1.2
Bây giờ, chúng ta sẽ sử dụng phần mềm R để tạo 5, 10, 20, 30, 100, 1000,
2000, 5000, 10000, 20000 cặp (u1, u2) và cho xấp xỉ π
Trang 131.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
+ }
> comau < − c(5, 10, 20, 30, 100, 1000, 2000, 5000, 8000, 10000)
> vector.pi = vector()
> for (i in 1:10) vector.pi[1] = pi(comau[i])
> ketqua = data.frame(comau, uocluongpi = vector.pi)
> ketqua
Ta thu bảng kết quả:
Thứ tự Cỡ mẫu Ước lượng π
3, ta sẽ chỉ ra cách tạo giá trị của những biến ngẫu nhiên có phân phốitùy ý Với khả năng tạo những biến ngẫu nhiên tùy ý, chúng ta có thểmô phỏng một hệ thống xác suất dựa theo những luật xác suất đặc biệtcủa hệ thống
Trang 141.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
Trang 151.2 SỬ DỤNG SỐ NGẪU NHIÊN ĐỂ TÍNH TÍCH PHÂN
[97] 0.98752256 0.64516183 0.85128559 0.31577016
Vẽ biểu đồ
> hist(a, main = "Histogram of creating 100 random numbers")
Ta tạo thêm một bảng 10000 số ngẫu nhiên bằng lệnh
> b < − runif (10000, 0, 1)
và vẽ biểu đồ biểu diễn những số ngẫu nhiên mới tạo
> hist(b, main = "Histogram of creating 10000 random numbers")
Qua hai biểu đồ trên, ta có nhận xét: Kiểm tra các dãy số giả ngẫunhiên có tuân theo luật phân phối đều trong khoảng (0, 1), ta chỉ cầnvẽ biểu đồ tần số của dãy biến ngẫu nhiên vừa tạo Trong R, dùng
lệnh hist() để vẽ biểu đồ tần số.
Trang 161.3 BẢNG SỐ NGẪU NHIÊN
1.3 Bảng số ngẫu nhiên
Bảng số ngẫu nhiên đã được sử dụng cho các số liệu thống kê cho cáccông việc như chọn ngẫu nhiên các mẫu
Các bảng số ngẫu nhiên gồm các chữ số từ 0 đến 9, với tần số xảy raxấp xỉ bằng nhau Ở đây gồm 7 bảng
Cách sử dụng bảng số ngẫu nhiên
• Bảng số ngẫu nhiên gồm 7 bảng (từ bảng 1 đến bảng 7) Chúng tacó thể sử dụng ngày trong tuần để xác định bảng chọn lựa, hoặcchọn bảng 1 cho thí nghiệm đầu tiên, bảng 2 cho thí nghiệm thứhai,
• Chọn ngẫu nhiên một điểm trong bảng để bắt đầu tra (có thểnhắm mắt lại và di chuyển đầu bút chì đến một vị trí bất kỳ trongbảng tra, điểm bắt đầu tra là điểm ở ngay đầu bút chì)
• Chọn hướng để tra: có thể chọn một trong các hướng sau đây+ Từ trên xuống dưới (theo cột)
+ Từ dưới lên trên (theo cột)
+ Từ trái qua phải (theo dòng)
+ Từ phải qua trái (theo dòng)
+
Khi đã chuyển đến cuối một hàng hoặc cuối một cột thì phải chuyểnsang cột mới hoặc hàng mới (không được lựa chọn một cột hoặc mộthàng từ hai lần trở lên.)
Trang 171.3 BẢNG SỐ NGẪU NHIÊN
Ví dụ: Tạo kết quả gieo xúc xắc 11 lần.
Như đã biết khi gieo xúc xắc có thể xuất hiện một trong các mặt sau
A = { 1 chấm, 2 chấm, 3 chấm, 4 chấm, 5 chấm, 6 chấm }
Ta dùng bảng số ngẫu nhiên để thực hiện thí nghiệm này
Hôm nay là thứ năm nên ta chọn bảng 5
Chọn ngẫu nhiên dòng 6 cột 7: Ta thực hiện tra theo cột (từ trên xuốngdưới), bỏ qua những số nhỏ hơn 1 và lớn hơn 6 Ta được kết quả
Trang 18Chương 2
TẠO BIẾN NGẪU NHIÊN RỜI RẠC
2.1 Phương pháp biến đổi ngược
= pj
Trang 192.1 PHƯƠNG PHÁP BIẾN ĐỔI NGƯỢC
Do đó, X có phân phối như mong muốn
Chú thích
1 Thuật toán (đã biết các xác suất p0, p1, và các giá trị x0, x1, )Tạo một số ngẫu nhiên U
Nếu U < p0 đặt X = x0 và dừng
Nếu p0 ≤ U < p0+ p1 đặt X = x1 và dừng
Nếu p0+ p1 ≤ U < p0 + p1+ p2 đặt X = x2 và dừng
pháp này gọi là phương pháp biến đổi ngược cho trường hợp tạo
biến ngẫu nhiên rời rạc.2
Thời gian cần thiết để tạo biến ngẫu nhiên rời rạc bằng phươngpháp biến đổi ngược tỷ lệ với số khoảng cần tìm Vì vậy nên xemxét các giá trị xj của X theo thứ tự các pj giảm dần
Ví dụ 2a Mô phỏng một biến ngẫu nhiên rời rạc X như sau
p1 = 0.20, p2 = 0.15, p3 = 0.25, p4 = 0.40 với pj = P {X = j}
Ta tạo số ngẫu nhiên U,
Trang 202.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
Nếu U < 0.2 đặt X = 1 và dừngNếu 0.2 ≤ U < 0.35 đặt X = 2 và dừngNếu 0.35 ≤ U < 0.60 đặt X = 3 và dừng
Nếu 0.60 ≤ U đặt X = 4Tuy nhiên có một phương pháp hiệu quả hơn như sau
Nếu U < 0.40 đặt X = 4 và dừngNếu 0.40 ≤ U < 0.65 đặt X = 3 và dừngNếu 0.65 ≤ U < 0.85 đặt X = 1 và dừng
Nếu 0.85 ≤ U đặt X = 2.2Trường hợp đặc biệt: Không cần tìm khoảng chứa số ngẫu nhiên khibiến ngẫu nhiên cần tìm có phân phối rời rạc đồng đều Nghĩa là, giảsử cần tạo giá trị của X , X nhận với cùng xác suất một trong các giá trị
1, 2, , n Tức, P {X = j} = 1/n, j = 1, , n Đầu tiên, tạo số ngẫunhiên U và đặt
X = j nếu j − 1
n ≤ U <
jnNên X = j nếu j − 1 ≤ nU < j; hoặc,
X = Int(nU ) + 1với Int(x) ký hiệu là [x] là phần nguyên của x (x − 1 < Int(x) ≤ x)
2.2 Tạo hoán vị ngẫu nhiên và ứng dụng trong y khoa.
Ví dụ 2b Tạo một hoán vị ngẫu nhiên
Yêu cầu: Tạo một hoán vị của các số 1, 2, , n
Trang 212.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
vị trí đó với một số ở vị trí n Tiếp theo, chọn một trong những vị tríthứ 1, 2, , n − 1 , sau đó thay đổi số trong vị trí đó với một số ở vị trí
n − 1, và tiếp tục đến khi kết thúc
Chú ý, có thể xem 0 ≤ U < 1, cho nên Int(kU) + 1 nhận giá trị bất kỳtrong các giá trị 1, 2, , k
Thuật toán tạo một hoán vị ngẫu nhiên:
Bước 1: Đặt P1, P2, , Pn là hoán vị bất kỳ của 1, 2, , n (có thể chọn
Pj = j, j = 1, 2, , n)
Bước 2: Đặt k = n
Bước 3: Tạo một số ngẫu nhiên U và đặt I = Int(kU) + 1
Bước 4: Đánh tráo giá trị của PI và Pk
Bước 5: Đặt k = k − 1 và nếu k > 1, quay lại bước 3
Bước 6: P1, P2, , Pn là hoán vị ngẫu nhiên mong muốn
Ví dụ: Trường hợp n = 4 và hoán vị ban đầu là 1, 2, 3, 4
Đầu tiên, đặt k = 4
Giá trị đầu tiên của I (I nhận các giá trị đồng khả năng 1, 2, 3, 4) là
Trang 222.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
I = 3 chẳng hạn, phần tử ở vị trí 3 và 4 được đổi chỗ nên có hoán vịmới là 1, 2, 4, 3
Tiếp theo, I = Int(3U) + 1, giả sử I = 2, phần tử ở vị trí 2 và 3 sẽ đượcđổi chỗ, hoán vị mới là 1, 4, 2, 3
Nếu giá trị cuối cùng (lúc này k = 2 và I = Int(2U) + 1) của I là I = 2,thì hoán vị cuối cùng là 1, 4, 2, 3 và đây chính là giá trị của hoán vịngẫu nhiên.2
Một tính chất quan trọng của thuật toán trên là còn tạo được mộttập con ngẫu nhiên với kích thước r, 1 ≤ r ≤ n Chỉ áp dụng thuậttoán khi vị trí n, n − 1, , n − r + 1 được lấp đầy Những phần tử trongnhững vị trí này thiết lập tập con ngẫu nhiên cần tìm (Ở đây ta cóthể giả sử r ≤ n/2 vì nếu r > n/2 thì có thể chọn một tập con ngẫunhiên có kích thước n − r và đặt những phần tử không nằm trong tậpcon này là một tập con ngẫu nhiên có kích thước r.)
Ứng dụng trong y khoa.
Tạo một tập con ngẫu nhiên rất quan trọng trong các phép thử thuộc
y khoa Ví dụ, một trung tâm y khoa có kế hoạch kiểm tra một loạithuốc mới làm giảm lượng chất béo trong máu Để kiểm tra hiệu quảcủa nó, trung tâm đã tuyển 1000 người tình nguyện để kiểm tra Hàmlượng chất béo trong máu của họ có thể bị ảnh hưởng bởi những nhântố bên ngoài khi kiểm tra (như thay đổi điều kiện thời tiết), dẫn đếnquyết định chia người tình nguyện thành hai nhóm, nhóm thử gồmcó 500 người, nhóm đối chứng còn lại 500 người sẽ dùng thuốc trấn
an (placebo) Những người tình nguyện và người chịu trách nhiệm đưathuốc đều không được biết ai thuộc nhóm nào (kiểm định hai chiều
bí mật) Vậy phải xác định nhóm những người tình nguyện được làm
Trang 232.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
nhóm thử
Ở đây, ta xác định yêu cầu của bài toán: "Có 1000 người mang mã sốtừ 1 đến n = 1000 Ta chia 1000 người này thành 2 nhóm, mỗi nhómcó 500 người để thực hiện cuộc thí nghiệm"
1000 và sử dụng hàm as.integer
> random < − runif (n)
> int < − as.interger(random*1000)
Bước 3: Xác định int là số chẵn hay lẻ bằng hàm %% và cho vào biếnodd Dùng hàm replace để chia nhóm: nếu odd là số lẻ, cho vào nhómA; nếu odd là số chẵn, cho vào nhóm B, và gọi nhóm bằng tên mới làgroup
> odd < − int %%2
> group < − odd
> group < − replace (group, odd ==1, "A")
> group < − replace (group, odd ==1, "B")
Bước 4: Dùng hàm data.frame để chứa tất cả số liệu có liên quan như
id và group vào một một dữ liệu có tên là grouping và in ra
> grouping < − data.frame(id, group)
Trang 242.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
Tóm lại, để tạo bảng gồm 500 mã số của những người lập thành nhómthử thuốc ta thực hiện như sau
Trang 252.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
> grouping < − data.frame(id, group)
Cột 1 ghi số thứ tự.
Cột 2 ghi mã số của từng người từ 1 đến 1000.
Trang 262.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
Cột 3 cho biết mỗi người sẽ được sắp vào nhóm nào trong hai nhóm A
hoặc B
Rõ ràng, người ta muốn nhóm thử và nhóm đối chứng giống nhau ở tấtcả các khía cạnh, chỉ trừ những thành viên ở nhóm thử nhận thuốc,trong khi những thành viên ở nhóm đối chứng nhận thuốc trấn an, dovậy, sau đó có thể kết luận bất kỳ phản ứng khác nhau giữa hai nhómthật ra là do thuốc Cách đề xuất tốt nhất là chọn 500 trong 1000 tìnhnguyện viên một cách hoàn toàn ngẫu nhiên để đưa vào nhóm thử,nghĩa là chọn một trong
1000500
tập con (cỡ 500) để làm nhóm thử.Trong 1000 người tham gia, chọn ngẫu nhiên 500 người thực hiện cuộcthí nghiệm
Bước 1: Lên danh sách từ 1 đến 1000, bằng cách thực hiện lệnh
Bước 3: In ra đối tượng vừa chọn lựa
> select
Chúng ta cần sắp xếp lại theo thứ tự để dễ làm việc hơn bằng cáchdùng lệnh
> sort (select)
Trang 272.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
Trang 282.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
ta sẽ được một danh sách hoàn toàn mới
Chú ý Một cách khác để tạo hoán vị ngẫu nhiên là tạo n số ngẫu
nhiên U1, U2, , Un, sắp xếp chúng theo thứ tự không giảm, và sử dụngnhững chỉ số của các giá trị kế tiếp để tạo thành một hoán vị ngẫunhiên Ví dụ, nếu n = 4, và U1 = 0.4, U2 = 0.1, U3 = 0.8, U4 = 0.7 thì
do U2 < U1 < U4 < U3, hoán vị ngẫu nhiên là 2, 1, 4, 3 Điểm khó củaphương pháp này là sắp thứ tự n số ngẫu nhiên yêu cầu làm nlog(n)lần so sánh.2
Ví dụ 2b Tính giá trị trung bình
Giả sử ta muốn tính a = Pn
i=1a(i)/n, với n lớn và a(i), i = 1, , n lànhững số phức tạp và khó tính Để tính a, lưu ý rằng nếu X là biến
Trang 292.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
ngẫu nhiên rời rạc có phân phối đều trên {1, , n}, thì biến ngẫunhiên a(X) có kỳ vọng cho bởi
Vì vậy, nếu tạo k biến ngẫu nhiên rời rạc có phân phối đều Xi, i =
1, , k bằng cách tạo k số ngẫu nhiên Ui và đặt Xi = Int(nUi) + 1 thìmỗi biến Xi sẽ có phân phối đều trên {1, , n} và mỗi biến số ngẫunhiên a(Xi) sẽ có kỳ vọng a, vậy theo luật mạnh số lớn khi k lớn thìtrung bình cộng của a(Xi), (i = 1, , k) sẽ xấp xỉ a Do đó
Trang 302.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
hoặc, tương đương với
qj < 1 − U ≤ qj−1Từ đó, ta có thể xác định X:
X = M in{j : qj < 1 − U }Mặt khác, ta có a < b thì log(a) < log(b), vậy
X = M in{j : j log(q) < log(1 − U )}
X = Int(log(1 − U )
log(q) ) + 1Cuối cùng, chú ý 1 − U cũng có phân phối đều trên khoảng (0, 1), nênsuy ra
X ≡ Int
log(U )log(q)
+ 1cũng là biến ngẫu nhiên có phân phối hình học với tham số p.2
Ví dụ 2d Tạo một dãy biến ngẫu nhiên độc lập có phân phối Bernoulli
Giả sử tạo n biến ngẫu nhiên X1, , Xn độc lập và có cùng phân phốiBernoulli với tham số p, bằng cách tạo n số ngẫu nhiên U1, , Un vàđặt
Trang 312.2 TẠO HOÁN VỊ NGẪU NHIÊN VÀ ỨNG DỤNG TRONG Y KHOA.
phân phối hình học N, bằng với số phép thử của lần thành công đầu
tiên khi tất cả phép thử có xác suất thành công là p
Giả sử, giá trị mô phỏng của N là N = j
Nếu j > n đặt Xi = 0, i = 1, , n;
Nếu j ≤ n đặt X1 = = Xj−1 = 0, Xj = 1;
và nếu j < n lặp lại phép toán trước đó để thu được giá trị của n − j
biến ngẫu nhiên Bernoulli còn lại
(Khi p > 1/2, bởi vì muốn cùng một lúc tạo nhiều biến ngẫu nhiên
Bernoulli, ta nên tạo số phép thử của phép thử đầu thất bại hơn là phép
thử đầu thành công)
Áp dụng khi các Xi độc lập nhưng không cùng phân phối Bernoulli
Ngoài ra, đặt pi = P {Xi = ui} và qi = 1 − pi Mô phỏng chuỗi Bernoulli
bằng cách tạo giá trị của X, với j = 1, , n
X =
j, nếu phép thử thứ j là phép thử đầu tiên, kết quả là thất bại
n + 1, nếu không có phép thử nào trong n phép thử kết quả là thất bạiĐể tạo X, đặt
qn+1 = 0,và
Trang 322.3 TẠO BIẾN NGẪU NHIÊN CÓ PHÂN PHỐI POISSON
Vì vậy, ta có thể mô phỏng X bằng cách tạo một số ngẫu nhiên U vàđặt
Nếu X = n + 1, mô phỏng dãy biến ngẫu nhiên Bernoulli là Xi =
1 − ui, i = 1, , n
Nếu X = j, j ≤ n, đặt Xi = 1 − ui, i = 1, , j − 1, Xj = uj; nếu j < nthì tạo những biến ngẫu nhiên còn lại Xj+1, , Xn theo cách tươngtự
2.3 Tạo biến ngẫu nhiên có phân phối Poisson
X là biến ngẫu nhiên có phân phối Poisson với tham số λ nếu
pi = P {X = i} = e−λλ
i
i!, i = 0, 1, Sử dụng phương pháp biến đổi ngược để tạo biến ngẫu nhiên có phânphối Poisson với tham số λ, với
pi+1 = λ
i + 1pi, i ≥ 0 (2.1)(i = i + 1, p = pi = P {X = i}, F = F (i) = P {X ≤ i})
Thuật toán biến đổi ngược để tạo một biến ngẫu nhiên có phân phốiPoisson với tham số λ như sau
Bước 1: Tạo số ngẫu nhiên U
Trang 332.3 TẠO BIẾN NGẪU NHIÊN CÓ PHÂN PHỐI POISSON
Để tạo một biến ngẫu nhiên có phân phối Poisson với tham số λ,
đầu tiên tạo một số ngẫu nhiên U và kiểm tra U < e−λ = p0 Nếu
U < e−λ = p0 thì đặt X = 0
Nếu U ≥ e−λ = p0 thì tính p1 trong bước 4 bằng cách sử dụng tính toán
đệ quy ở phương trình (2.1) Tiếp theo kiểm tra U < p0+ p1 và nếu xảy
ra thì đặt X = 1, và tiếp tục
Thuật toán lần lượt kiểm tra giá trị Poisson từ 0, 1, Số lần so sánh
là i + 1, trung bình cần 1 + λ lần kiểm tra Khi λ nhỏ thì tốt hơn khi
λ lớn Vì một biến ngẫu nhiên có phân phối Poisson với tham số λ sẽ
nhận một trong hai giá trị nguyên gần với λ, thuật toán còn hiệu quả
hơn ở chỗ, ngay lần đầu tiên ta kiểm tra từ một giá trị nào đó thay vì
phải kiểm tra bắt đầu từ 0
Ví dụ, đặt I = Int(λ) và sử dụng phương trình (2.1) để xác định F (I)
Bây giờ, tạo một biến ngẫu nhiên X có phân phối Poisson với tham số
λ bằng cách tạo một số ngẫu nhiên U, lưu ý xem X ≤ I hay không
bằng cách xem U ≤ F (I) hay không Sau đó, quá trình kiểm tra bắt
đầu từ I trở xuống trong trường hợp X ≤ I, và từ I + 1 trở lên trong
trường hợp ngược lại
Số lần kiểm tra trung bình của thuật toán ' 1 + E[|X − λ|]với X ∼ N(λ, λ)
= 1 +
√λE
|X − λ|
√λ
= 1 +
√λE[|Z|]với Z ∼ N(0, 1)
= 1 + 0.798
√λBây giờ, ta sẽ sử dụng thuật toán biến đổi ngược để tạo 10 biến ngẫu
nhiên có phân phối Poisson với λ = 2
>Poisson < − function(a){
Trang 342.3 TẠO BIẾN NGẪU NHIÊN CÓ PHÂN PHỐI POISSON
Trang 352.4 TẠO BIẾN NGẪU NHIÊN CÓ PHÂN PHỐI NHỊ THỨC
Ngoài ra, ta có thể sử dụng lệnh rpois được tích hợp sẵn trong R để tạo
10 biến ngẫu nhiên có phân phối Poisson với λ = 2
2.4 Tạo biến ngẫu nhiên có phân phối nhị thức
Giả sử ta muốn tạo một giá trị của biến ngẫu nhiên Xcó phân phối nhịthức theo tham số (n, p) có hàm mật độ xác suất xác định bởi
P {X = i} = n!
i!(n − 1)!p
i(1 − p)n−i, i = 0, 1, , nDùng phương pháp biến đổi ngược bằng cách sử dụng phép toán đệ quy
Bước 3: Nếu U < F , đặt X = i và dừng
Bước 4: pr = [c(n − i)/(i + 1)]pr, F = F + pr, i = i + 1
Bước 5: Trở lại bước 3
Thuật toán kiểm tra lần lượt các giá trị X từ 0, 1, , n Vì vậy, số lần
Trang 362.4 TẠO BIẾN NGẪU NHIÊN CÓ PHÂN PHỐI NHỊ THỨC
kiểm tra là i + 1 Cho nên, trung bình sẽ có 1 + np kiểm tra để tạo X.Một biến ngẫu nhiên có phân phối nhị thức (n, p) chỉ ra số lần thànhcông trong n phép thử, với xác suất thành công là p Bên cạnh đó, biếnngẫu nhiên có phân phối nhị thức cũng tìm được bằng cách tạo biếnngẫu nhiên có phân phối nhị thức (n, 1 − p) Vì, khi p > 1
2, có thể tạobiến ngẫu nhiên có phân phối nhị thức (n, 1 − p) bằng phương phápbiến đổi ngược và trừ đi giá trị của nó từ n để thu được giá trị mongmuốn
Ghi chú
1 Cách khác để tạo một biến ngẫu nhiên X có phân phối nhịthức (n, p) là dùng giải thích số lần thành công trong n phép thửBernoulli độc lập, khi mỗi phép thử có xác suất thành công là p
Do đó, ta cũng có thể mô phỏng X bằng cách tạo kết quả của nphép thử Bernoulli
2 Trong trường hợp biến ngẫu nhiên có phân phối Poisson, khi thamsố np lớn, tốt nhất đầu tiên xác định nếu giá trị được tạo nhỏ hơnhoặc bằng I ≡ Int(np) hoặc lớn hơn I , sau đó bắt đầu kiểm tra
I, I − 1, ; ngược lại thì bắt đầu kiểm tra từ I + 1 trở lên.2Tạo biến ngẫu nhiên có phân phối nhị thức với n = 7, p = 0.75
Trang 372.4 TẠO BIẾN NGẪU NHIÊN CÓ PHÂN PHỐI NHỊ THỨC
Trang 382.5 PHƯƠNG PHÁP CHẤP NHẬN − BÁC BỎ
2.5 Phương pháp chấp nhận − bác bỏ
Giả sử có một phương pháp hiệu quả để mô phỏng một biến ngẫu nhiêncó hàm phân phối xác suất {qj, j ≥ 0} Dựa trên biến mới tạo, môphỏng một biến ngẫu nhiên có hàm xác suất {pj, j ≥ 0} bằng cách:Đầu tiên mô phỏng biến ngẫu nhiên Y có hàm xác suất {qj}, sau đóchấp nhận giá trị mô phỏng này với xác suất tỷ lệ với pY
q Y Cụ thể, giả sử c là hằng số, sao cho:
pj
qj ≤ c, ∀j, pj > 0 (2.2)
Phương pháp này gọi là phương pháp bác bỏ hoặc phương pháp chấp
nhận bác bỏ để mô phỏng một biến ngẫu nhiên X có hàm phân phối
pj = P {X = j}
Phương pháp bác bỏ
Bước 1: Mô phỏng biến ngẫu nhiên Y có hàm mật độ xác suất qj.Bước 2: Tạo số ngẫu nhiên U, độc lập với Y
Bước 3: Nếu U < pY/cqY, lấy X = Y và dừng
Ngược lại, trở về bước 1
Bây giờ, chúng ta sẽ chứng minh phương pháp bác bỏ
Định lý Thuật toán chấp nhận - bác bỏ tạo một biến ngẫu nhiên X thỏa
P {X = j} = pj, j = 0,
Hơn nữa, số bước lặp lại cần thiết của thuật toán để thu được X là một biến ngẫu nhiên hình học với trung bình c.
Chứng minh
Trang 392.5 PHƯƠNG PHÁP CHẤP NHẬN − BÁC BỎ
Đầu tiên, xác định
P {Y = j,chấp nhận j} = P (Y = j)P (chấp nhận|Y = j)
= qj pj
cqj
= pjcLấy tổng tất cả những giá trị j mà xác suất để biến ngẫu nhiên đượctạo chấp nhận
c, chúng ta nhận thấy số bước lặp cần thiết là biến ngẫu nhiên cóphân phối hình học với trung bình c Do đó,
= pj2
Chú ý Chấp nhận giá trị Y với xác suất p Y
cq Y nghĩa là tạo một số ngẫunhiên U và chấp nhận Y nếu U ≤ p Y
cq Y
Ví dụ 2e Giả sử chúng ta muốn mô phỏng giá trị của một biến
ngẫu nhiên X, X nhận một trong các giá trị 1, 2, , 10 với xác suấttương ứng là 0.11, 0.12, 0.09, 0.08, 0.12, 0.10, 0.09, 0.09, 0.10, 0.10 Bên cạnhphương pháp biến đổi ngược thì phương pháp bác bỏ được sử dụngvới q là hàm mật độ của phân phối đều rời rạc trên 1, , 10, tức là,
qj = 1/10, j = 1, , 10 Với cách chọn {qj} như vậy, ta có thể chọn cbởi
c = M axpj
qj
= 1.2
Trang 402.6 PHƯƠNG PHÁP HỖN HỢP
và thuật toán như sau:
Bước 1: Tạo số ngẫu nhiên U1 và đặt Y = Int(10U1) + 1
Bước 2: Tạo số ngẫu nhiên thứ hai U2
Bước 3: Nếu U2 ≤ pY
0.12, lấy X = Y và dừng Ngược lại, trở về bước 1.Trong bước 3, 0.12 có được bằng cách tính cqY = 1.2/10 = 0.12 Trungbình, thuật toán này đòi hỏi 1.2 bước lặp để tạo giá trị X.2
2.6 Phương pháp hỗn hợp
Giả sử có một phương pháp hiệu quả để mô phỏng giá trị của một biếnngẫu nhiên có một trong hai hàm mật độ xác suất {p(1)
j , j ≥ 0} hoặc{p(2)j , j ≥ 0} và chúng ta muốn mô phỏng giá trị của biến ngẫu nhiên
X có hàm mật độ xác suất
P {X = j} = αp(1)j + (1 − α)p(2)j , j ≥ 0 (2.3)với 0 < α < 1
Một cách để mô phỏng biến ngẫu nhiên X , nếu X1 và X2 là biếnngẫu nhiên có hàm mật độ xác suất lần lượt là p(1)
j và p(2)
j , thì biếnngẫu nhiên X được định nghĩa
X =
X1 với xác suất α
X2 với xác suất 1 − αsẽ có hàm mật độ xác suất như (2.3) Từ đó, có thể tạo giá trị của biếnngẫu nhiên X bằng cách tạo số ngẫu nhiên U , sau đó tạo một giá trịcủa X1 nếu U < α và của X2 nếu U > α
Thuật toán:
Bước 1: Tạo số ngẫu nhiên U