Tung đồng xu

Author

Duc Nguyen | tuhocr.com

Published

October 10, 2026

Đề bài: Ta có 1 đồng xu không rõ là 2 mặt này có cân đối hay không (vì nếu là đồng xu hoàn hảo thì xác suất mặt ngửa hay mặt sấp sẽ là 1/2). Tung 100 lần, đếm số lượt mặt ngửa và kiểm định tỷ lệ mặt ngửa có phải là 1/2 hay không (kiểm định xem đồng xu có cân đối hoàn hảo không)?

Giả sử đồng xu có xác suất ra mặt ngửa là \(P(X = \text{ngửa})\), do đó xác suất ra mặt sấp là \(P(X = \text{sấp}) = 1 - P(X = \text{ngửa})\).

Frequentist

Thực hiện 1 lần thử nghiệm [rút từ không gian mẫu ra 1 đồng xu để tung 100 lần]:

Ta tung đồng xu 100 lần, thu được 57 lần ngửa.

Do vậy xác suất ra mặt ngửa là p = 57/100 = 0.57, được tính từ mẫu (sample). Ta ước lượng ra quần thể (population) cũng là \(\hat{p} = 0.57\) với khoảng tin cậy 95% là [0.467 ; 0.667]

Kiểm định giả thuyết về tỷ lệ tổng thể (population proportion)

prop.test(x = 57, # số lần thu được mặt ngửa (success)
          n = 100, # tổng lần tung đồng xu (trial)
          p = 0.5, # so sánh với xác suất 50%
          conf.level = 0.95,
          alternative = "two.sided")

    1-sample proportions test with continuity correction

data:  57 out of 100, null probability 0.5
X-squared = 1.69, df = 1, p-value = 0.1936
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
 0.4672127 0.6673464
sample estimates:
   p 
0.57 

\(\text{H0: đồng xu cân bằng, xác suất ngửa bằng 50%.}\)

\(\text{H1: đồng xu không cân bằng, xác suất ngửa khác 50%.}\)

Với dữ liệu 57/100 và kiểm định hai phía, p-value xấp xỉ 0.1936, nên chưa đủ bằng chứng để chống lại giả thuyết H0, do đó ta fail to reject H0, nghĩa là đồng xu cân bằng.

Khoảng tin cậy theo trường phái Frequentist: Nếu thực hiện rất nhiều lần thử nghiệm (mỗi lần thử nghiệm tung 100 đồng xu và ghi nhận số mặt ngửa) thì 95% số khoảng tin cậy đó sẽ chứa giá trị thực của \(P\) (true population proportion) là 0.5.

Vì đây là khoảng tin cậy Frequentist [0.467 ; 0.667] nên ta không thể nói là khoảng tin cậy này có xác suất 95% chứa giá trị true proportion ==> Do đó để phát biểu khoảng tin cậy [lower, upper] có xác suất 95% chứa giá trị true proportion thì cần tính Bayesian Credible Interval.

Mô phỏng 95% Frequentist Confident Interval

1 lần thử nghiệm

set.seed(4)

dongxu <- sample(x = c("NGỬA", "SẤP"),
                 size = 100,
                 prob = c(0.5, 0.5),
                 replace = T
                 )
table(dongxu)
dongxu
NGỬA  SẤP 
  57   43 
prop.test(x = 57, # số lần thu được mặt ngửa (success)
          n = 100, # tổng lần tung đồng xu (trial)
          p = 0.5, # so sánh với xác suất 50%
          conf.level = 0.95,
          alternative = "two.sided",
          correct = T) # hiệu chỉnh khoảng tin cậy theo Wilson score

    1-sample proportions test with continuity correction

data:  57 out of 100, null probability 0.5
X-squared = 1.69, df = 1, p-value = 0.1936
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
 0.4672127 0.6673464
sample estimates:
   p 
0.57 
# 95% CI theo Wald
p_ok <- 57/100

\[\hat{p} \pm z \times SE(\hat{p})= \hat{p} \pm 1.96 \times \sqrt{\frac{\hat{p} \times (1-\hat{p})}{n}}\]

# upper limit
p_ok + 1.96 * sqrt((p_ok*(1-p_ok))/100)
[1] 0.6670348
# lower limit
p_ok - 1.96 * sqrt((p_ok*(1-p_ok))/100)
[1] 0.4729652

prop.test() is calculated using the Wilson score (với correct = F)

Cách tính khoảng tin cậy trong lệnh `prop.test()

library(binom)
binom::binom.confint(x = 57, 
                     n = 100, 
                     conf.level = 0.95,
                     methods = "all")
          method  x   n      mean     lower     upper
1  agresti-coull 57 100 0.5700000 0.4721200 0.6627009
2     asymptotic 57 100 0.5700000 0.4729669 0.6670331
3          bayes 57 100 0.5693069 0.4730578 0.6647936
4        cloglog 57 100 0.5700000 0.4672266 0.6601779
5          exact 57 100 0.5700000 0.4671337 0.6686090
6          logit 57 100 0.5700000 0.4715207 0.6632347
7         probit 57 100 0.5700000 0.4718324 0.6640029
8        profile 57 100 0.5700000 0.4721113 0.6643420
9            lrt 57 100 0.5700000 0.4721031 0.6643469
10     prop.test 57 100 0.5700000 0.4672127 0.6673464
11        wilson 57 100 0.5700000 0.4721539 0.6626670

100 lần thử nghiệm

sim_coin <- list()
for(i in 1:100){
dongxu <- sample(x = c("NGỬA", "SẤP"),
                 size = 100,
                 prob = c(0.5, 0.5),
                 replace = T
                 )
sim_coin[[i]] <- table(dongxu)
}
sim_coin_master <- do.call(rbind, sim_coin)
sim_coin_master <- as.data.frame(sim_coin_master)
sim_coin_master$p_sample <- sim_coin_master$NGỬA / 100
sim_coin_master
    NGỬA SẤP p_sample
1     44  56     0.44
2     47  53     0.47
3     44  56     0.44
4     49  51     0.49
5     42  58     0.42
6     47  53     0.47
7     50  50     0.50
8     55  45     0.55
9     38  62     0.38
10    48  52     0.48
11    47  53     0.47
12    51  49     0.51
13    55  45     0.55
14    52  48     0.52
15    54  46     0.54
16    48  52     0.48
17    49  51     0.49
18    53  47     0.53
19    60  40     0.60
20    53  47     0.53
21    54  46     0.54
22    49  51     0.49
23    49  51     0.49
24    50  50     0.50
25    43  57     0.43
26    50  50     0.50
27    53  47     0.53
28    41  59     0.41
29    45  55     0.45
30    50  50     0.50
31    44  56     0.44
32    51  49     0.51
33    51  49     0.51
34    55  45     0.55
35    39  61     0.39
36    41  59     0.41
37    52  48     0.52
38    54  46     0.54
39    49  51     0.49
40    47  53     0.47
41    51  49     0.51
42    48  52     0.48
43    48  52     0.48
44    42  58     0.42
45    57  43     0.57
46    54  46     0.54
47    60  40     0.60
48    49  51     0.49
49    47  53     0.47
50    46  54     0.46
51    53  47     0.53
52    50  50     0.50
53    50  50     0.50
54    57  43     0.57
55    47  53     0.47
56    49  51     0.49
57    51  49     0.51
58    55  45     0.55
59    48  52     0.48
60    54  46     0.54
61    59  41     0.59
62    36  64     0.36
63    44  56     0.44
64    58  42     0.58
65    50  50     0.50
66    52  48     0.52
67    50  50     0.50
68    49  51     0.49
69    49  51     0.49
70    47  53     0.47
71    59  41     0.59
72    51  49     0.51
73    48  52     0.48
74    49  51     0.49
75    44  56     0.44
76    53  47     0.53
77    42  58     0.42
78    49  51     0.49
79    49  51     0.49
80    55  45     0.55
81    55  45     0.55
82    56  44     0.56
83    53  47     0.53
84    56  44     0.56
85    47  53     0.47
86    52  48     0.52
87    43  57     0.43
88    45  55     0.45
89    50  50     0.50
90    55  45     0.55
91    58  42     0.58
92    53  47     0.53
93    58  42     0.58
94    53  47     0.53
95    50  50     0.50
96    48  52     0.48
97    48  52     0.48
98    47  53     0.47
99    53  47     0.53
100   55  45     0.55

Thêm giá trị lower và upper limit

sim_coin_master$lowerCI <- NA
sim_coin_master$upperCI <- NA
sim_coin_master$pvalue <- NA

for(i in 1:100){

p_test <- prop.test(x = sim_coin_master[i, 1], 
          n = 100, 
          p = 0.5,
          conf.level = 0.95,
          alternative = "two.sided",
          correct = T)

sim_coin_master$lowerCI[i] <- round(p_test$conf.int[1], 4)
sim_coin_master$upperCI[i] <- round(p_test$conf.int[2], 4)
sim_coin_master$pvalue[i] <- round(p_test$p.value, 4)
}
sim_coin_master$RUN <- paste0("sample_", 1:100)

sim_coin_master
    NGỬA SẤP p_sample lowerCI upperCI pvalue        RUN
1     44  56     0.44  0.3420  0.5426 0.2713   sample_1
2     47  53     0.47  0.3704  0.5720 0.6171   sample_2
3     44  56     0.44  0.3420  0.5426 0.2713   sample_3
4     49  51     0.49  0.3894  0.5913 0.9203   sample_4
5     42  58     0.42  0.3233  0.5229 0.1336   sample_5
6     47  53     0.47  0.3704  0.5720 0.6171   sample_6
7     50  50     0.50  0.4038  0.5962 1.0000   sample_7
8     55  45     0.55  0.4475  0.6486 0.3681   sample_8
9     38  62     0.38  0.2864  0.4829 0.0214   sample_9
10    48  52     0.48  0.3799  0.5817 0.7642  sample_10
11    47  53     0.47  0.3704  0.5720 0.6171  sample_11
12    51  49     0.51  0.4087  0.6106 0.9203  sample_12
13    55  45     0.55  0.4475  0.6486 0.3681  sample_13
14    52  48     0.52  0.4183  0.6201 0.7642  sample_14
15    54  46     0.54  0.4378  0.6391 0.4839  sample_15
16    48  52     0.48  0.3799  0.5817 0.7642  sample_16
17    49  51     0.49  0.3894  0.5913 0.9203  sample_17
18    53  47     0.53  0.4280  0.6296 0.6171  sample_18
19    60  40     0.60  0.4970  0.6952 0.0574  sample_19
20    53  47     0.53  0.4280  0.6296 0.6171  sample_20
21    54  46     0.54  0.4378  0.6391 0.4839  sample_21
22    49  51     0.49  0.3894  0.5913 0.9203  sample_22
23    49  51     0.49  0.3894  0.5913 0.9203  sample_23
24    50  50     0.50  0.4038  0.5962 1.0000  sample_24
25    43  57     0.43  0.3327  0.5328 0.1936  sample_25
26    50  50     0.50  0.4038  0.5962 1.0000  sample_26
27    53  47     0.53  0.4280  0.6296 0.6171  sample_27
28    41  59     0.41  0.3140  0.5130 0.0891  sample_28
29    45  55     0.45  0.3514  0.5525 0.3681  sample_29
30    50  50     0.50  0.4038  0.5962 1.0000  sample_30
31    44  56     0.44  0.3420  0.5426 0.2713  sample_31
32    51  49     0.51  0.4087  0.6106 0.9203  sample_32
33    51  49     0.51  0.4087  0.6106 0.9203  sample_33
34    55  45     0.55  0.4475  0.6486 0.3681  sample_34
35    39  61     0.39  0.2956  0.4930 0.0357  sample_35
36    41  59     0.41  0.3140  0.5130 0.0891  sample_36
37    52  48     0.52  0.4183  0.6201 0.7642  sample_37
38    54  46     0.54  0.4378  0.6391 0.4839  sample_38
39    49  51     0.49  0.3894  0.5913 0.9203  sample_39
40    47  53     0.47  0.3704  0.5720 0.6171  sample_40
41    51  49     0.51  0.4087  0.6106 0.9203  sample_41
42    48  52     0.48  0.3799  0.5817 0.7642  sample_42
43    48  52     0.48  0.3799  0.5817 0.7642  sample_43
44    42  58     0.42  0.3233  0.5229 0.1336  sample_44
45    57  43     0.57  0.4672  0.6673 0.1936  sample_45
46    54  46     0.54  0.4378  0.6391 0.4839  sample_46
47    60  40     0.60  0.4970  0.6952 0.0574  sample_47
48    49  51     0.49  0.3894  0.5913 0.9203  sample_48
49    47  53     0.47  0.3704  0.5720 0.6171  sample_49
50    46  54     0.46  0.3609  0.5622 0.4839  sample_50
51    53  47     0.53  0.4280  0.6296 0.6171  sample_51
52    50  50     0.50  0.4038  0.5962 1.0000  sample_52
53    50  50     0.50  0.4038  0.5962 1.0000  sample_53
54    57  43     0.57  0.4672  0.6673 0.1936  sample_54
55    47  53     0.47  0.3704  0.5720 0.6171  sample_55
56    49  51     0.49  0.3894  0.5913 0.9203  sample_56
57    51  49     0.51  0.4087  0.6106 0.9203  sample_57
58    55  45     0.55  0.4475  0.6486 0.3681  sample_58
59    48  52     0.48  0.3799  0.5817 0.7642  sample_59
60    54  46     0.54  0.4378  0.6391 0.4839  sample_60
61    59  41     0.59  0.4870  0.6860 0.0891  sample_61
62    36  64     0.36  0.2682  0.4627 0.0069  sample_62
63    44  56     0.44  0.3420  0.5426 0.2713  sample_63
64    58  42     0.58  0.4771  0.6767 0.1336  sample_64
65    50  50     0.50  0.4038  0.5962 1.0000  sample_65
66    52  48     0.52  0.4183  0.6201 0.7642  sample_66
67    50  50     0.50  0.4038  0.5962 1.0000  sample_67
68    49  51     0.49  0.3894  0.5913 0.9203  sample_68
69    49  51     0.49  0.3894  0.5913 0.9203  sample_69
70    47  53     0.47  0.3704  0.5720 0.6171  sample_70
71    59  41     0.59  0.4870  0.6860 0.0891  sample_71
72    51  49     0.51  0.4087  0.6106 0.9203  sample_72
73    48  52     0.48  0.3799  0.5817 0.7642  sample_73
74    49  51     0.49  0.3894  0.5913 0.9203  sample_74
75    44  56     0.44  0.3420  0.5426 0.2713  sample_75
76    53  47     0.53  0.4280  0.6296 0.6171  sample_76
77    42  58     0.42  0.3233  0.5229 0.1336  sample_77
78    49  51     0.49  0.3894  0.5913 0.9203  sample_78
79    49  51     0.49  0.3894  0.5913 0.9203  sample_79
80    55  45     0.55  0.4475  0.6486 0.3681  sample_80
81    55  45     0.55  0.4475  0.6486 0.3681  sample_81
82    56  44     0.56  0.4574  0.6580 0.2713  sample_82
83    53  47     0.53  0.4280  0.6296 0.6171  sample_83
84    56  44     0.56  0.4574  0.6580 0.2713  sample_84
85    47  53     0.47  0.3704  0.5720 0.6171  sample_85
86    52  48     0.52  0.4183  0.6201 0.7642  sample_86
87    43  57     0.43  0.3327  0.5328 0.1936  sample_87
88    45  55     0.45  0.3514  0.5525 0.3681  sample_88
89    50  50     0.50  0.4038  0.5962 1.0000  sample_89
90    55  45     0.55  0.4475  0.6486 0.3681  sample_90
91    58  42     0.58  0.4771  0.6767 0.1336  sample_91
92    53  47     0.53  0.4280  0.6296 0.6171  sample_92
93    58  42     0.58  0.4771  0.6767 0.1336  sample_93
94    53  47     0.53  0.4280  0.6296 0.6171  sample_94
95    50  50     0.50  0.4038  0.5962 1.0000  sample_95
96    48  52     0.48  0.3799  0.5817 0.7642  sample_96
97    48  52     0.48  0.3799  0.5817 0.7642  sample_97
98    47  53     0.47  0.3704  0.5720 0.6171  sample_98
99    53  47     0.53  0.4280  0.6296 0.6171  sample_99
100   55  45     0.55  0.4475  0.6486 0.3681 sample_100

Vẽ đồ thị 95% Frequentist CI

sim_coin_master$RUN <- factor(sim_coin_master$RUN,
                              levels = rev(sim_coin_master$RUN))

sim_coin_master$NOTE <- ifelse(test = sim_coin_master$pvalue >= 0.05,
                              yes = "p-value >= 0.05 (H0 đúng)",
                              no = "p-value < 0.05 (H0 sai)"
                              )
table(sim_coin_master$NOTE)

  p-value < 0.05 (H0 sai) p-value >= 0.05 (H0 đúng) 
                        3                        97 
sim_coin_master$NOTE <- factor(sim_coin_master$NOTE,
                               levels = c("p-value >= 0.05 (H0 đúng)",
                                          "p-value < 0.05 (H0 sai)"))
library(ggplot2)

p1 <- ggplot(data = sim_coin_master,
       mapping = aes(x = p_sample,
                     y = RUN)) +
  
  geom_errorbar(mapping = aes(xmin = lowerCI,
                              xmax = upperCI,
                              color = NOTE),
                width = 0.1) +
  
  geom_point(shape = 21,
             color = "black",
             fill = "white") +
  
  geom_vline(xintercept = 0.5,
             color = "blue",
             lty = 2) +
  
  scale_color_manual(values = c("darkgreen", "red")) +
  
  labs(x = "Xác suất ra mặt ngửa (trong 100 lần tung đồng xu)",
       y = "Lần thử nghiệm") +

  theme_bw(base_size = 16,
           ink = "black",
           paper = "white") +

  theme(axis.title = element_text(color = "black")) +

  theme(axis.text = element_text(color = "black")) +
  
  theme(axis.ticks = element_line(color = "black")) +

  theme(strip.text = element_text(color = "black")) 
  
ggsave(filename = "p1.png",
       plot = p1,
       width = 8,
       height = 18,
       dpi = 300,
       units = "in")

Sampling distribution

Sampling distribution (phân phối lấy mẫu) là phân phối xác suất của 1 chỉ số thống kê (parameter), trong trường hợp này là “tần suất ra mặt ngửa” được tính từ rất nhiều lần lấy mẫu ngẫu nhiên từ quần thể (ta dùng kỹ thuật mô phỏng để tạo ra nhiều lần lấy mẫu ngẫu nhiên).

In statistics, a sampling distribution or finite-sample distribution is the probability distribution of a given random-sample-based statistic.

par(mfrow = c(1,2))
hist(sim_coin_master$p_sample,
     breaks = 10,
     main = "Histogram của giá trị các xác suất mặt ngửa",
     xlab = "Giá trị xác suất của mặt ngửa\ntrong các lần thử nghiệm (mỗi lẫn tung 100 đồng xu)")
abline(v = 0.5, lwd = 4, col = "red", lty = 2)
library(rcompanion)
rcompanion:::plotNormalDensity(sim_coin_master$p_sample)
abline(v = 0.5, lwd = 4, col = "red", lty = 2)

Bayesian

Câu hỏi: Ta nhìn đồng xu có vẻ không cân bằng lắm, nên ta có giả thuyết là A1 là xác suất mặt ngửa là 0,4 và cũng có thể xác suất mặt ngửa là A2 là 0.6. Tiến hành thí nghiệm tung 100 lần thì thấy có 57 lần mặt ngửa. Như vậy xác suất đồng xu mặt ngửa sau khi quan sát thấy kết quả thực tế này thì ta nghĩ là bao nhiêu? Hay là, xác suất mặt ngửa ở lần tung tiếp theo ta nghĩ là bao nhiêu.

Tiếp cận xác suất theo dữ liệu rời rạc (biến phân loại)

Cách tiếp cận: Áp dụng định lý Bayes cho trường hợp tung đồng xu, tính theo công thức xác suất đầy đủ, ta có các giả thuyết prior ban đầu cho mặt ngửa là 0.4 và 0.6.

\(P(A1) = 0.4\)

\(P(A2) = 0.6\)

Mục tiêu là dùng định lý Bayes để cập nhật xác suất của hai giả thuyết sau khi quan sát dữ liệu.

Xác định \(P(D|A1)\)

Gọi \(D\) là sự kiện quan sát được 57 lần ngửa trong 100 lần tung đồng xu.

Theo phân phối nhị thức, ta có [xác suất] [để xảy ra kết quả có 57 lần ngửa trong 100 lần tung đồng xu], với xác suất ngửa (cho trước) p = P(A1) = 0.4 là:

\[P(X = k \text{ | ra mặt ngửa với giả định prior P(A1) = 0.4}) = \binom{n}{k} p^k (1-p)^{n-k}\]

\[P(X = 57 \text{ | ra mặt ngửa}) = \binom{100}{57} \left(0.4\right)^{57} \left(1-0.4\right)^{100-57} = 0.0002285 = 0.022\%\]

choose(n = 100, k = 57) * (0.4)^(57) * (1-0.4)^(100-57)
[1] 0.0002285792

Do vậy xác suất quan sát dữ liệu \(D\) nếu (theo điều kiện) xác suất mặt ngửa \(A1\) cho trước là 0.4 sẽ là

\[P(D|A1) = 0.022\%\]

con số này cho thấy có rất ít khả năng [nếu tung 100 lần lên mà thu được 57 lần mặt ngửa], bởi vì dễ nhận thấy xác suất mặt ngửa (cho trước) chỉ khoảng 0.4 thì làm sao có đến 57 lần ngửa được.

Xác định \(P(D|A2)\)

Tương tự, nếu xác suất mặt ngửa theo giả thuyết A2 là 0.6, thì ta có

\[P(X = k \text{ | ra mặt ngửa với giả định prior P(A2) = 0.6}) = \binom{n}{k} p^k (1-p)^{n-k}\]

\[P(X = 57 \text{ | ra mặt ngửa}) = \binom{100}{57} \left(0.6\right)^{57} \left(1-0.6\right)^{100-57} = 0.06672895 = 6.67\%\]

choose(n = 100, k = 57) * (0.6)^(57) * (1-0.6)^(100-57)
[1] 0.06672895

Do vậy xác suất quan sát dữ liệu \(D\) nếu (theo điều kiện) xác suất mặt ngửa \(A2\) cho trước là 0.6 sẽ là

\[P(D|A2) = 6.67\%\]

con số này cho thấy có NHIỀU khả năng [nếu tung 100 lần lên mà thu được 57 lần mặt ngửa], bởi vì dễ nhận thấy xác suất mặt ngửa (cho trước) chỉ khoảng A2 = 0.6 thì DỄ THU ĐƯỢC KẾT QUẢ 57 lần ngửa hơn là xác suất mặt ngửa (cho trước) chỉ khoảng A1 = 0.4.

Áp dụng công thức xác suất đầy đủ

Ta có xác suất xuất hiện sự kiện 57 lần ngửa trong 100 lần tung sẽ là tổng của các sự kiện xác suất đơn lẻ, theo công thức sau:

\[P(D) = P(D | A1) \cdot P(A1) + P(D | A2) \cdot P(A2)\] Thế các giá trị prior \(P(A1)\) và \(P(A2)\) vào

\[P(D) = 0.0002285 \cdot 0.4 + 0.06672895 \cdot 0.6 = 0.04012877 = 4\%\]

(0.0002285 * 0.4) + (0.06672895 * 0.6)
[1] 0.04012877

Như vậy với 100 lần tung bất kỳ thì xác suất để thu được 57 lần ngửa là 4% với hai giả định ban đầu là xác suất mặt ngửa \(P(A1)=0.4\) và \(P(A2)=0.6\).

Đây chính là xác suất biên của dữ liệu \(D\) xét trên cả hai giả thuyết prior ban đầu về khả năng ra mặt ngửa của đồng xu, xác suất này còn gọi là phần chuẩn hóa cho công thức định lý Bayes.

Áp dụng định lý Bayes hiệu chỉnh xác suất hậu nghiệm cho kịch bản P(A1)

Định lý Bayes áp dụng như sau

\[P(A1 | D) = \frac{P(D|A1) \cdot P(A1)}{P(D)} = \frac{0.0002285 \cdot 0.4}{0.04012877}=0.002277668 = 0.22\%\]

(0.0002285 * 0.4) / 0.04012877
[1] 0.002277668

Như vậy, ban đầu ta tin là xác suất mặt ngửa \(P(A1)=0.4\) (prior) tuy nhiên khi quan sát dữ liệu \(D\) (data likelihood) thấy có 57 lần ngửa trong 100 lần tung, ta đã hiệu chỉnh lại [xác suất để xảy ra sự kiện mặt ngửa] trong [kịch bản niềm tin xác suất ban đầu \(P(A1)=0.4\)] chỉ là 0.22% (posterior), nghĩa là kịch bản xác suất mặt ngửa của đồng xu 0.4 này là rất thấp.

Do vậy, posterior là xác suất xảy ra [giá trị tham số] mà ta ước lượng ban đầu (prior), chứ tự thân posterior không phải là giá trị tham số đó!

Hay nói cách khác: Xác suất mà đồng xu có đặc điểm [xác suất mặt ngửa là 0.4] chỉ là 0.22%, do đó đồng xu này không bị lệch về phía [xác suất mặt ngửa là 0.4].

Áp dụng định lý Bayes hiệu chỉnh xác suất hậu nghiệm cho kịch bản P(A2)

Định lý Bayes áp dụng như sau

\[P(A2 | D) = \frac{P(D|A2) \cdot P(A2)}{P(D)} = \frac{0.06672895 \cdot 0.6}{0.04012877}=0.9977223 = 99.7\%\]

(0.06672895 * 0.6) / 0.04012877
[1] 0.9977223

Giải thích tương tự, ta có Xác suất mà đồng xu có đặc điểm [xác suất mặt ngửa là 0.6] lên đến 99.7%, do đó đồng xu này bị lệch về phía [xác suất mặt ngửa là 0.6].

Tóm lại: Ban đầu ta tin rằng xác suất mặt ngửa là 40% (kịch bản A1) và cũng có thể là 60% (kịch bản A2). Sau khi quan sát 57 lần ngửa trong 100 lần tung đồng xu, dữ liệu này ủng hộ mạnh mẽ giả thuyết là xác suất mặt ngửa là 0.6 (ủng hộ kịch bản A2), bởi vì xác suất hậu nghiệm của giả thuyết A2 này tăng lên đến 99.7%, so với xác suất hậu nghiệm của giả thuyết A1 chỉ là \(1- 0.9977223 = 0.002277668\)

Lưu ý rằng kết luận trên phụ thuộc vào giả thuyết (hai kịch bản A1 và A2) về xác suất ra mặt ngửa 0.4 và 0.6 mà thôi, nó không có nghĩa là ta chứng minh xác suất trực (true prorortion) thực tế chính xác có phải là 0.6 hay không. Muốn tìm ra true proportion ta phải thực hiện thêm thí nghiệm để “update datat” từ đó mới lần tìm ra kết quả chính xác của xác suất mặt ngửa đồng xu, hay nói cách khác để kiểm định xem đồng xu có công bằng hay không.

Update dữ liệu để tăng độ chính xác

Đặc điểm của suy luận Bayesian là posterior của lần thử nghiệm trước sẽ trở thành prior của lần thử nghiệm sau, giúp update dần mô hình xác suất để tiến trình suy luận gần đúng con số chính xác của quần thể.

Giả sử ta thực hiện tiếp 1 lần tung xác suất, lần này thu được 54 mặt ngửa, thì posterior lúc này được tính như sau:

Dựa trên lần thử nghiệm trước, ta khu trú kịch bản xác suất đồng xu là \(P(A2) = 0.6\), giờ ta có thể tạo ra thêm 1 kịch bản xác suất là \(P(A3) = 0.5\). Áp dụng cách tính tương tự, ta sẽ có:

Tính \(P(A2)\) và \(P(A3)\)

\[P(X = 54 \text{ | ra mặt ngửa}) = \binom{100}{54} \left(0.6\right)^{54} \left(1-0.6\right)^{100-54} = 0.03811036 = 3.81\% = P(A2)\]

choose(n = 100, k = 54) * (0.6)^(54) * (1-0.6)^(100-54)
[1] 0.03811036

\[P(X = 54 \text{ | ra mặt ngửa}) = \binom{100}{54} \left(0.5\right)^{54} \left(1-0.5\right)^{100-54} = 0.0579584 = 5.57\% = P(A3)\]

choose(n = 100, k = 54) * (0.5)^(54) * (1-0.5)^(100-54)
[1] 0.0579584

Ta thấy với dữ liệu mới là 54 lần ngửa trong 100 lần tung đồng xu, thì khi giả thuyết đồng xu công bằng \(P(A3) = 0.5\) thì xác suất ra đúng con số 54 lần ngửa sẽ cao hơn nếu giả thuyết đồng bị lệch \(P(A2) = 0.6\).

Tính \(P(D)\)

\[P(D) = P(D | A2) \cdot P(A2) + P(D | A3) \cdot P(A3)\] Thế các giá trị prior \(P(A2)\) và \(P(A3)\) vào

\[P(D) = 0.03811036 \cdot 0.6 + 0.0579584 \cdot 0.5 = 0.05184542 = 5.18\%\]

(0.03811036 * 0.6) + (0.0579584 * 0.5)
[1] 0.05184542

Lúc này với dữ liệu 54 lần ngửa trong 100 lần tung, ta tính:

Tính xác suất để xuất kịch bản A2 khi ta biết dữ liệu D là 54 lần mặt ngửa trong 100 lần tung. Hay nói gọn hơn là: P(A2|D) là xác suất cho giả thuyết A2 = 0.6

\[P(A2 | D) = \frac{P(D|A2) \cdot P(A2)}{P(D)} = \frac{0.03811036 \cdot 0.6}{0.05184542}=0.441046 = 44.1\%\]

0.03811036*0.6/0.05184542
[1] 0.441046

P(A3|D) là xác suất cho giả thuyết A3 = 0.5

\[P(A3 | D) = \frac{P(D|A3) \cdot P(A3)}{P(D)} = \frac{0.0579584 \cdot 0.5}{0.05184542}=0.5589539 = 55.9\%\]

0.0579584*0.5/0.05184542
[1] 0.5589539

Như vậy ở lần thử nghiệm tiếp theo ta thu được 54 lần mặt ngửa trong 100 lần tung, thì kịch bản A3 đồng xu công bằng $P(A3) = 0.5 có xác suất là 55.9% cao hơn kịch bản đồng xu bị lệch về mặt ngửa \(P(A2) = 0.6\) vì xác suất cho kịch bản A2 thấp hơn, chỉ còn 100 - 55.9 = 44.1%. Hay nói cách khác sau mỗi lần thử nghiệm ta có thể đề xuất ra kịch bản xác suất phù hợp hơn, nhuyễn hơn để kiểm chứng và chọn lựa kịch bản xác suất cao nhất cho lần hiệu chỉnh tiếp theo cho đến khi thu được true proportion.

Lưu ý: mũi tên này không phải “bê nguyên xi” giá trị posterior vào prior, mà posterior giúp chọn prior (kịch bản niềm tin xác suất ban đầu) phù hợp cho lần hiệu chỉnh xác suất tiếp theo.

Tiếp cận xác suất theo dữ liệu liên tục (biến numeric)

Cách tiếp cận xác suất Bayesian trong trường hợp này được tính chính xác hơn khi ta có một dãy prior (numeric) với xác suất từ 0.4 đến 0.6 (vì ta tin rằng xác suất đồng xu ra mặt ngửa có thể dao động trong khoảng này), khi đó ta sẽ dùng phân phối Beta và áp dụng package R để tính ra kết quả.

Các bạn xem video của GS Nguyễn Văn Tuấn trình bày rất rõ ở đây. Bài giảng 55: Suy luận Bayes với mô hình beta-binomial

Minh họa trực quan về phân phối xác suất posterior khi update dữ liệu, từ đó đề xuất ra xác suất “true proportion” chính xác hơn khi có thêm evidence/data dữ liệu mới.

https://mariokrapp.com/2025/08/05/coin_flip.html

Tài liệu tham khảo

Playlist nhập môn Bayes

https://www.probabilisticworld.com/anatomy-bayes-theorem/

https://phas.ubc.ca/~oser/p509/Lec_05.pdf

https://rpubs.com/lengockhanhi/308836

A_Gentle_Introduction_to_the_Comparison_Between_Nu