5 Ứng dụng
5.5 Thí nghiệm mô phỏng
chọn là phân phối chuẩn; hoặc phân phối đều trên đoạn Œ d=2; d=2;
c D Œ1CZ2 1=2. - xN D 1 n Pn iD1xi, O D r 1 n Pn iD1.xi x/N 2 là trung bình mẫu, độ lệch tiêu chuẩn của mẫu.
Khi đó Xi có trung bình là xN và phương sai O2:
E.Xi/ D Ef Nx Cc ŒxIi xN C O Zig
D E.x/N CcE.xIi/ cE.x/N C O E.Zi/
D NxCcxN cxN C O 0 D Nx (do E.xIi/ D Nx và EZi D 0)
Var.Xi/ D Varf Nx Cc ŒxIi xN C O Zig D Varf Nx cxN CcxIi Cc ZO ig D Var fcxIi Cc ZO ig D c2Var.xIi/Cc2O2Var.Zi/ ( do xIi và Zi độc lập) D c2O2 Cc2O2Z2 D c2O2Œ1CZ2 D O 2 1CZ2 Œ1CZ2 D O2 (vì c D q 1 1CZ2 )
Bằng việc sử dụng (5.13) thay cho (5.4), ta đã thay thế FO bằng một ước lượng đã được làm trơn, có cùng trung bình và phương sai với FO. Việc hiệu chỉnh như vậy gọi là làm trơn mẫu bootstrap.
5.5 Thí nghiệm mô phỏng
Mục 5.5 sẽ thực hiện một thí nghiệm mô phỏng để so sánh các phương pháp boostrap đã trình bày trong các mục 5.2, 5.3 và 5.4.
Giá trị được tính trong thí nghiệm này là sai số tuyện đối của trung vị trên độ lệch tiêu chuẩn
5.5 Thí nghiệm mô phỏng
trong đó .F / là trung vị của phân phối F và .F / là độ lệch tiêu chuẩn của phân phối F.
Thí nghiệm Monte-Carlo được thực hiện vớin D 13và Xi i nd N.0; 1/,
i D 1; 2; : : : ; n được tạo ngẫu nhiên bằng phần mềm thống kê R. Trong trường hợp này, kỳ vọng thực sự của R bằng
EFR D 0:95
Bảng 5.3 (Tính bởi Efron, xem [3]) trình bày các giá trị EFR được tính theo các phương pháp đã trình bày ở các mục 5.2, 5.3 và 5.4. Bảng có 10 hàng, ứng với 10 phép thử được lặp lại, khi thực hiện một phép thử mới, mẫu .X1; X2; : : : ; Xn/ sẽ được khởi tạo mới. Do đó, ta chỉ cần xác định các tính EFR trên một hàng, các hàng sau được tính tương tự. Cột 1 và cột 2 tính EFR theo các xác suất được tính bởi công thức (5.8) và (5.12). Các cột từ 3 đến 7 sử dụng mẫu bootstrap được làm trơn theo (5.13) nên không thể sử dụng các xác suất bootstrap được tính bởi (5.8) và (5.12). Do đó các giá trị trong cột 3 đến cột 7 được tính bằng mô phỏng Monte-Carlo, ứng với mỗi phép thử, ta thực hiện N D 50 lần lặp để tạo
50 giá trị bootstrap xj, với xj D .x1j; x2j; : : : ; xnj/, j D 1; 2; : : : ; N. Các giá trị trung bình trong các cột này là ước lượng không chệch của kỳ vọng bootstrap ER với sai số chuẩn ở mỗi cột vào khoảng 0:15. (Trong mỗi phép thử, cùng một tập số ngẫu nhiên được sử dụng để tạo bốn phân phối đều khác nhau cho Zi, d D 0; 0:25; 0:5; 1)
Giải thích cách tạo các cột trong bảng 5.3:
Chương trình được sử dụng để tính bảng 5.3 là phần mềm thống kê R. Mỗi hàng ứng với một phép thử, lặp lại 10 lần được 10 hàng. Ứng với mỗi phép thử một mẫu ngẫu nhiên cỡ n D13 Xi i nd N.0; 1/ được tạo mới.
5.5 Thí nghiệm mô phỏng
Cột 1:
- Với X D .X1; X2; : : : ; Xn/ là mẫu bootstrap tương ứng thì
R D jt .X
/ .F /O j
.F /O
với.F /O D x.7/là trung vị của phân phốiFO và .F /O D
r
1
13.Xi X /N 2
là độ lệch tiêu chuẩn của phân phối FO.
t .X/ D X.7/ . (Sau khi sắp lại thứ tự ta có X.1/ X.2/ : : : X.n/ ). Giá trị cần tính là EFR, EFR D 13 X lD1 jx.l/ x.7/j .F /O P rob ( R D jx.l/ x.7/ .F /O ) (5.15) mà P rob ( R D jx.l/ x.7/ .F /O ) D P robnX.7/ D x.l/o.
Với P robnX.7/ D x.l/o là xác suất bootstrap được tính ở bảng 5.1. - Tạo mẫu ngẫu nhiên gồm 13 giá trị có phân phối chuẩn tắc. (Trong R, dùng lệnh x <- rnorm(13, mean = 0, sd = 1)).
- Sau khi sắp lại thứ tự ta có x.1/ x.2/ : : : x.n/.
- Tính EFR theo công thức (5.15) với các xác suất bootstrap tính bởi (5.8).
Cột 2:
- Thực hiện tương tự như cột 1 nhưng thay thế FO bằng FOS Y M với các xác suất bootstrap ứng với phân phối FOS Y M tính ở bảng 5.2.
- Từ tập fx.1/; x.2/; : : : ; x.13/g lấy đối xứng qua x.m/ được 2x.m/ x.1/; 2x.m/ x.2/; : : : ; 2x.m/ x.n/, tổng cộng có 2n 1 D 25 giá trị.
5.5 Thí nghiệm mô phỏng
- Với Z D .Z.1/ ; Z.2/ ; : : : ; Z.n/ / là mẫu bootstrap cỡ n D 2m 1 rút từ FOS Y M, Z
.1/ Z.2/ : : : Z.n/. Khi đó,
R D jt .Z
/ .FOS Y M/j
.FOS Y M/
với.FOS Y M/ D z.13/ D x.7/là trung vị của phân phốiFOS Y M, .FOS Y M/ D
r
1
25.Zi Z/N 2 là độ lệch tiêu chuẩn của phân phối FOS Y M. - EFR tính bởi EFR D 13 X lD1 jz.l/ x.7/ .FOS Y M/ P rob ˚ Z.m/ D z.l/ (5.16)
với P rob˚Z.m/ D z.l/ được tính bởi .5:12/ ở bảng 5.2. Cột 3 đến cột 7:
- Như đã trình bày ở trang 57, từ cột 3 đến cột 7, N = 50 mô phỏng Monte-Carlo được thực hiện cho mỗi phép thử. Các bước thực hiện như sau
Bước 1: Tạo mẫu ngẫu nhiên gồm 13 giá trị có phân phối chuẩn tắc. (Khi tính trên cùng 1 hàng thì sử dụng cùng mẫu được tạo khi tính cột 1 và 2)
Bước 2: Tạo mẫu ngẫu nhiên 2 chiều f.Ii; Zi/; i D 1; 2; : : : ; ng từ phân phối 2 chiều của vetơ ngẫu nhiên .; / (Cách tạo vectơ ngẫu nhiên, xem mục 3.4 và phụ lục A, mục 2). Trong đó
- và độc lập.
- có phân phối đều trên tập hợp f1; 2; : : : ; ng, có phân phối đều trên đoạn Œ d=2; d=2. (Riêng cột 7 là tạo có phân phối tam giác với tham số . 1=p
2; 0; 1=p
5.5 Thí nghiệm mô phỏng
- Các bước cụ thể như sau:
B1: Tạo 2 số ngẫu nhiênU1 và U2 có phân phối đều trong khoảng
.0; 1/.
B2: - Đặt I D j nếu j 1
n U1 j
n hay I D Int.nU1/ C 1
(Int.x/: phần nguyên của x, Int.x/ < x C 1). (Một cách khác để tạo mẫu fIi; i D 1; : : : ; 13g là tra bảng số ngẫu nhiên ở phụ lục B)
- ĐặtZ D . d=2/Cd U2 (Nếu U có phân phối đều trên .0; 1/
thì aC.b a/U có phân phối đều trên .a; b/).
B3: Lặp lại B1 và B2 n lần ta thu được mẫu ngẫu nhiên 2 chiều f.Ii; Zi/; i D 1; 2; : : : ; ng cần tạo.
Bước 3: Tính Xi theo (5.13)
Xi D NxCc ŒxIi xN C O Zi ; i D 1; : : : ; n
Bây giờ, X thay bởi mẫu bootstrap mới X1; X2; : : : ; Xn. Vậy
F phải thay bởi phân phối của Xi (như nhau với mọi i D
1; 2; : : : ; n). Gọi Fsmoot h là phân phối của Xi, khi đó R.X; F / D jt .X / .F /j
.F / sẽ thay bởi R.X
; Fsmoot h/ như sau
R.X; Fsmoot h/ D jt .X / .Fsmoot h/j .Fsmoot h/ (5.17) trong đó, t .X/ D t .X1; X2; : : : ; X13/ D X.7/ . .Fsmoot h/ D O D r 1 13.Xi X /N 2.
5.5 Thí nghiệm mô phỏng
Bước 4: Lặp lại 50 lần từ bước 2 và 3, thu được R1; R2; : : : ; R50. Tính ER D 1 50 50 X iD1 Ri (5.18)
- Đối với cột 3: khi tạo các biến ngẫu nhiên Zi, i D 1; 2; : : : ; n có phân phối đều trên đoạn Œ d=2; d=2 với d D 0, suy ra Zi D 0,
i D 1; 2; : : : ; n. Khi đó c D Œ1CZ2 1=2 D 1, viết lại (5.13)
Xi D Nx CcŒxIi xN CZi D xIi
như vậy thực chất Xi được chọn giống như (5.4). Do đó khi N ! 1, giá trị ER tính trong cột 3 sẽ bằng với giá trị tính trong cột 1 theo luật mạnh số lớn Kolgomorov.
- Các cột 4 đến 6 được tính như đã nêu bên trên, với khác biệt là các biến ngẫu nhiên Zi; i D 1; 2; : : : ; n có phân phối đều trên đoạn
Œ d=2; d=2 với d lần lượt bằng 0:25; 0:5; 1 ứng với cột 4,5 và 6. - Cột 7 được tính tương tự như các cột 3,4,5 và 6, nhưng thay Zi là biến ngẫu nhiên có phân phối tam giác với tham số. 1=p
2; 0; 1=p
2/. Khi đó Z2 D 1=12. Cách tạo biến ngẫu nhiên có phân phối tam giác xem ở ví dụ 4.4, chương 4.
5.5 Thí nghiệm mô phỏng Cột 1 2 3 4 5 6 7 STT .5:8/ .5:12/ d = 0 d = .25 d = .5 d = 1 Zi triangular dist. 1 1.07 1.18 1.09 1.10 1.12 1.11 1.16 2 0.96 0.74 1.10 1.10 1.08 1.09 1.15 3 1.22 0.74 1.36 1.35 1.33 1.43 1.52 4 1.38 1.51 1.44 1.41 1.38 1.28 1.30 5 1.00 0.83 1.03 1.05 1.09 1.14 1.17 6 1.13 1.21 1.27 1.26 1.23 1.20 1.26 7 1.07 0.98 1.01 0.94 0.83 0.79 0.92 8 1.51 1.40 1.40 1.45 1.47 1.51 1.50 9 0.56 0.64 0.69 0.71 0.74 0.80 0.81 10 1.05 0.86 1.14 1.17 1.20 1.13 1.22 Trung bình 1.09 1.01 1.15 1.15 1.15 1.15 1.20 Độ lệch chuẩn 0.26 0.30 0.23 0.23 0.23 0.23 0.22
Bảng 5.3: 10 phép thử Monte-Carlo với Xi N.0; 1/, i D 1; 2; : : : ; 13 được sử dụng để so sánh các phương pháp ước lượng kỳ vọng của biến ngẫu nhiên .5:14/. Giá trị kỳ vọng thực sự là 0.95. Cột 1 và 2 sử tính kỳ vọng ER sử dụng các công thức tính xác xuất bootstrap ở .5:8/ và.5:12/, theo dạng gốc và dạng đối xứng. Từ cột 3 trở đi áp dụng mô phỏng Monte - Carlo cho mỗi phép thử, ứng với mỗi phép thử lặp lại N D50 lần mẫu bootstrap. Cột 3 ("d D0") và cột 1 sẽ bằng nhau khiN ! 1
Phụ lục A
Chương trình mô phỏng
Phụ lục A trình bày chương trình tính các bảng 5.1, 5.2 và 5.3 trong chương 5. 1. Khai báo cơ sở
n = 13; N = 100; tri = 200 # Tao vec-to xs bootrap prob = 1:13
for(i in 1:13) prob[i] = round(boot.prob(i,13),digit=4) probsym = 1:25
for(i in 1:25) probsym[i] = round(boot.probsym(i,13),digit=4) v.er1 = 1:tri; v.er2 = 1:tri; v.er3 = 1:tri; v.er4 = 1:tri v.er5 = 1:tri; v.er6 = 1:tri; v.er7 = 1:tri
source("D:\\R_Works\\R_boostrap\\runboot.R") tab
2. Các hàm sử dụng trong chương trình
#Cac ham lien quan
# Ham tinh xac suat bootstrap theo phuong trinh (4.8) boot.prob <- function(l,n){
prob = 0; m = (n + 1)/2 for(j in 0:(m-1)){
prob = prob + (dbinom(j,n,prob=(l-1)/n) - dbinom(j,n,prob=l/n)) }
prob }
# Ham tinh xac suat bootstrap theo phuong trinh (4.12) boot.probsym <- function(l,n){
prob = 0; m = (n + 1)/2 for(j in 0:(m-1)){
prob = prob + (dbinom(j,n,prob=(l-1)/(2*n-1)) - dbinom(j,n,prob=l/(2*n-1)))
} prob }
#Ham tao cac so ngau nhien co phan phoi deu va tam giac ge.triangle <- function(n, a, b, c){ v.i = 1:n; v.z = 1:n for(i in 1:n){ v.i[i] = sample(1:n,1,prob=rep(1/n,n)) v.z[i] = rtriangle(1,a,b,c) }
rval <- list(I = v.i, Z = v.z) } ge.vec <- function(n,d){ v.i = 1:n; v.z = 1:n for(i in 1:n){ v.i[i] = sample(1:n,1,prob=rep(1/n,n)) v.z[i] = runif(1,-d/2,d/2) }
rval <- list(I = v.i, Z = v.z) }
3. Chương trình chính
# Chuong trinh tinh bang for(k in 1:tri){
#Tao mau
gauss = rnorm(13,0,1) #Tao cot 1
x = sort(gauss); mean.x = mean(x) se.x = (sqrt((n-1)/n)*sd(x))/sqrt(n) r1 = abs(x - median(x))/se.x
v.er1[k] = sum(r1*prob) #Tao cot 2
z = 1:(2*n-1); z[1:n] = x
for(i in (n+1):(2*n-1)) z[i] = 2*median(x) - x[i-n] z = sort(z)
#Tao cot 3 r = 1:N; d = 0 sig2.z = (d/2 - (-d/2))^2/12; c = 1/sqrt(1 + sig2.z) for(l in 1:N){ u = ge.vec(n,d) x.b = 1:n for(i in 1:n){
x.b[i] = mean.x + c*(x[u$I[i]] - mean.x + se.x*u$Z[i]) } r[l] = abs(median(x.b) - median(x))/se.x } v.er3[k] = mean(r) #Tao cot 4 d = 0.25; sig2.z = (d/2 - (-d/2))^2/12 c = 1/sqrt(1 + sig2.z) for(l in 1:N){ u = ge.vec(n,d) for(i in 1:n){
x.b[i] = mean.x + c*(x[u$I[i]] - mean.x + se.x*u$Z[i]) } r[l] = abs(median(x.b) - median(x))/se.x } v.er4[k] = mean(r) #Tao cot 5 d = 0.5; sig2.z = (d/2 - (-d/2))^2/12 c = 1/sqrt(1 + sig2.z) for(l in 1:N){ u = ge.vec(n,d) for(i in 1:n){
x.b[i] = mean.x + c*(x[u$I[i]] - mean.x + se.x*u$Z[i]) } r[l] = abs(median(x.b) - median(x))/se.x } v.er5[k] = mean(r) #Tao cot 6 d = 0.5; sig2.z = (d/2 - (-d/2))^2/12 c = 1/sqrt(1 + sig2.z) for(l in 1:N){ u = ge.vec(n,d)
for(i in 1:n){
x.b[i] = mean.x + c*(x[u$I[i]] - mean.x + se.x*u$Z[i]) } r[l] = abs(median(x.b) - median(x))/se.x } v.er6[k] = mean(r) #Tao cot 7 a = -1/sqrt(2); b = -a; m = 0
sig2.z = (a^2 + b^2 + c^2 -a*b - a*c - b*c)/18 c = 1/sqrt(1 + sig2.z)
for(l in 1:N){
u = ge.triangle(n,a,b,m) for(i in 1:n){
x.b[i] = mean.x + c*(x[u$I[i]] - mean.x + se.x*u$Z[i]) } r[l] = abs(median(x.b) - median(x))/se.x } v.er7[k] = mean(r) } cot1 = round(c(v.er1,mean(v.er1),sd(v.er1)),digit=2) cot2 = round(c(v.er2,mean(v.er2),sd(v.er2)),digit=2) cot3 = round(c(v.er3,mean(v.er3),sd(v.er3)),digit=2) cot4 = round(c(v.er4,mean(v.er4),sd(v.er4)),digit=2) cot5 = round(c(v.er5,mean(v.er5),sd(v.er5)),digit=2) cot6 = round(c(v.er6,mean(v.er6),sd(v.er6)),digit=2) cot7 = round(c(v.er7,mean(v.er7),sd(v.er7)),digit=2) stt = c(1:tri,’AVE.’,’SD.’)
tab = data.frame(STT = stt, col1 = cot1, col2 = cot2, + col3 = cot3, col4 = cot4, col5 = cot5, col6 = cot6, + col7 = cot7)
Phụ lục B
Bảng số ngẫu nhiên
Cách sử dụng bảng số ngẫu nhiên: Để chọn một mẫu ngẫu nhiên cỡ
n từ tổng thế có N phần tử, ta thực hiện các bước sau
Đánh số các phần tử trong tổng thể; ví dụ, nếu một tổng thế có 80
phần tử, thì đánh số thứ tự từ 01, 02, . . . , 80.
Chọn ngẫu nhiên một điểm trong bảng để bắt đầu tra (cách đơn giản nhất là nhắm mắt lại và đặt ngẫu nhiên ngón tay lên một vị trí nào đó trong bảng số, điểm bắt đầu tra sẽ là điểm ở ngay đầu ngón tay). Chọn hướng để tra, chọn một trong các hướng sau: từ trên xuống dưới, từ trái qua phải hoặc từ phải qua trái, từ dưới lên trên. (khi di chuyển đến cuối hàng hoặc cột thì di chuyển đến một cột hoặc hàng mới; lưu ý: không sử dụng một cột hoặc một hàng 2 lần, bỏ qua những số đã gặp).
Chọn n số đầu tiên trong bảng mà có x chữ số cuối nằm giữa 0 và N
(Nếu N là số có hai chữ số thì x bằng 2; nếu N là số có bốn chữ số thì x bằng 4, v.v. . . ). Bỏ qua những số lớn hơn N (ví dụ, nếu tổng thể có 80 phần tử được đánh số từ 01, 02, . . . , 80 thì ta bỏ qua các số từ 81, . . . , 99 và 00).
Ví dụ B.1. Giả sử ta cần chọn một mẫu ngẫu nhiên gồm 12 phần tử từ một tổng thể có 80 phần tử. Đánh số các phần tử của tổng thể từ 01, 02, . . . , 80. Chọn ngẫu nhiên một điểm để bắt đầu tra trong bảng số ngẫu nhiên, giả sử chọn được điểm bắt đầu được ở hàng 7 cột 6, bảng B.1. Thực hiện tra từ trên xuống dưới và bỏ qua các số lớn hơn 80, bỏ qua 00 và những số đã gặp, được kết quả sau: 42; 80; 09; 45; 15; 38; 04; 08; 14; 37; 43; 77.
Bảng B.1: BẢNG SỐ NGẪU NHIÊN (01) (08) (16) (24) (32) (40) (48) (56) (64) (72) 11164 36318 75061 37674 26320 75100 10431 20418 19228 91792 21215 91791 76831 58678 87054 31687 93205 43685 19732 08468 10438 44482 66558 37649 08882 90870 12462 41810 01806 02977 36792 26236 33266 66583 60881 97395 20461 36742 02852 50564 73944 04773 12032 51414 82384 38370 00249 80709 72605 67497 49563 12872 14063 93104 78483 72717 68714 18048 25005 04151 64208 48237 41701 73117 33242 42314 83049 21933 92813 04763 51486 72875 38605 29341 80749 80151 33835 52602 79147 08868 99756 26360 64516 17971 48478 09610 04638 17141 09227 10606 71325 55217 13015 72907 00431 45117 33827 92873 02953 85474 65285 97198 12138 53010 94601 15838 16805 61004 43516 17020 17264 57327 38224 29301 31381 38109 34976 65692 98566 29550 95639 99754 31199 92558 68368 04985 51092 37780 40261 14479 61555 76404 86210 11808 12841 45147 97438 60022 12645 62000 78137 98768 04689 87130 79225 08153 84967 64539 79493 74917 62490 99215 84987 28759 19177 14733 24550 28067 68894 38490 24216 63444 21283 07044 92729 37284 13211 37485 10415 36457 16975 95428 33226 55903 31605 43817 22250 03918 46999 98501 59138 39542 71168 57609 91510 77904 74244 50940 31553 62562 29478 59652 50414 31966 87912 87154 12944 49862 96566 48825 96155 95009 27429 72918 08457 78134 48407 26061 58754 05326 29621 66583 62966 12468 20245 14015 04014 35713 03980 03024 12639 75291 71020 17265 41598 64074 64629 63293 53307 48766 14544 37134 54714 02401 63228 26831 19386 15457 17999 18306 83403 88827 09834 11333 68431 31706 26652 04711 34593 22561 67642 05204 30697 44806 96989 68403 85621 45556 35434 09532 64041 99011 14610 40273 09482 62864 01573 82274 81446 32477