Giải bài toán bằng mô phỏng
Nỗ lực đầu tiên của tôi là mô phỏng cái này trên máy tính, có thể lật rất nhiều đồng xu công bằng rất nhanh. Dưới đây là một ví dụ với một thử nghiệm triệu. Sự kiện 'số lần mô hình' 1-0-0 'xảy ra trong lần lật đồng xu là 20 lần trở lên' xảy ra khoảng ba nghìn lần thử nghiệm, do đó, những gì bạn quan sát được không có khả năng xảy ra (đối với một hội chợ đồng tiền).Xn=100
Lưu ý rằng histrogram là dành cho mô phỏng và dòng là tính toán chính xác được giải thích thêm dưới đây.
set.seed(1)
# number of trials
n <- 10^6
# flip coins
q <- matrix(rbinom(100*n, 1, 0.5),n)
# function to compute number of 100 patterns
npattern <- function(x) {
sum((1-x[-c(99,100)])*(1-x[-c(1,100)])*x[-c(1,2)])
}
# apply function on data
counts <- sapply(1:n, function(x) npattern(q[x,]))
hist(counts, freq = 0)
# estimated probability
sum(counts>=20)/10^6
10^6/sum(counts>=20)
Giải bài toán với một tính toán chính xác
Đối với cách tiếp cận phân tích, bạn có thể sử dụng thực tế là 'xác suất để quan sát 20 chuỗi trở lên' 1-0-0 'trong 100 lần lật đồng xu bằng với 1 trừ đi xác suất phải mất hơn 100 lần lật để thực hiện 20 chuỗi' . Điều này được giải quyết trong các bước sau:
Thời gian chờ đợi để xác suất lật '1-0-0'
Phân phối, , về số lần bạn cần lật cho đến khi bạn nhận được chính xác một chuỗi '1-0-0' có thể được tính như sau:fN,x=1(n)
Hãy phân tích các cách để có được "1-0-0" dưới dạng chuỗi Markov. Chúng tôi theo dõi các trạng thái được mô tả bằng hậu tố của chuỗi lần lật: '1', '1-0' hoặc '1-0-0'. Ví dụ: nếu bạn có tám lần lật 10101100 sau thì bạn đã vượt qua, theo thứ tự, tám trạng thái sau: '1', '1-0', '1', '1-0', '1', '1', '1-0', '1-0-0' và phải mất tám lần lật để đạt được '1-0-0'. Lưu ý rằng bạn không có xác suất bằng nhau để đạt trạng thái '1-0-0' trong mỗi lần lật. Vì vậy, bạn không thể mô hình hóa này như là một phân phối nhị thức . Thay vào đó bạn nên theo một cây xác suất. Trạng thái '1' có thể đi vào '1' và '1-0', trạng thái '1-0' có thể đi vào '1' và '1-0-0', và trạng thái '1-0-0' là trạng thái hấp thụ. Bạn có thể viết nó thành:
number of flips
1 2 3 4 5 6 7 8 9 .... n
'1' 1 1 2 3 5 8 13 21 34 .... F_n
'1-0' 0 1 1 2 3 5 8 13 21 F_{n-1}
'1-0-0' 0 0 1 2 4 7 12 20 33 sum_{x=1}^{n-2} F_{x}
và xác suất để đạt được mẫu '1-0-0', sau khi đã cán '1' đầu tiên (bạn bắt đầu với trạng thái '0', chưa lật đầu), trong vòng lần lật là một nửa lần xác suất ở trạng thái '1-0' trong vòng :nn−1
fNc,x=1(n)=Fn−22n−1
trong đó là số Fibonnaci thứ . Xác suất không có điều kiện là một tổngFii
fN,x=1(n)=∑k=1n−20.5kfNc,x=1(1+(n−k))=0.5n∑k=1n−2Fk
Thời gian chờ đợi để xác suất lật lần '1-0-0'k
Điều này bạn có thể tính toán bằng một tích chập.
fN,x=k(n)=∑l=1nfN,x=1(l)fN,x=1(n−l)
bạn sẽ có xác suất để quan sát 20 mẫu '1-0-0' trở lên (dựa trên giả thuyết rằng đồng tiền là công bằng)
> # exact computation
> 1-Fx[20]
[1] 0.0003247105
> # estimated from simulation
> sum(counts>=20)/10^6
[1] 0.000337
Đây là mã R để tính toán nó:
# fibonacci numbers
fn <- c(1,1)
for (i in 3:99) {
fn <- c(fn,fn[i-1]+fn[i-2])
}
# matrix to contain the probabilities
ps <- matrix(rep(0,101*33),33)
# waiting time probabilities to flip one pattern
ps[1,] <- c(0,0,cumsum(fn))/2^(c(1:101))
#convoluting to get the others
for (i in 2:33) {
for (n in 3:101) {
for (l in c(1:(n-2))) {
ps[i,n] = ps[i,n] + ps[1,l]*ps[i-1,n-l]
}
}
}
# cumulative probabilities to get x patterns in n flips
Fx <- 1-rowSums(ps[,1:100])
# probabilities to get x patterns in n flips
fx <- Fx[-1]-Fx[-33]
#plot in the previous histogram
lines(c(1:32)-0.5,fx)
Tính toán cho các đồng tiền không công bằng
Chúng ta có thể khái quát tính toán trên của xác suất để quan sát các mẫu trong lần lật, khi xác suất '1 = đầu' là và các lần lật là độc lập.xnp
Bây giờ chúng tôi sử dụng tổng quát hóa các số Fibonacci:
Fn(x)=⎧⎩⎨1xx(Fn−1+Fn−2)if n=1if n=2if n>2
các xác suất bây giờ là:
fNc,x=1,p(n)=(1−p)n−1Fn−2((1−p)−1−1)
và
fN,x=1,p(n)=∑k=1n−2p(1−p)k−1fNc,x=1,p(1+n−k)=p(1−p)n−1∑k=1n−2Fk((1−p)−1−1)
Khi chúng tôi vẽ điều này, bạn nhận được:
Vì vậy, trong khi giá trị p là nhỏ đối với một đồng tiền công bằng 0,0003247, chúng tôi phải lưu ý rằng nó không tốt hơn nhiều (chỉ một đơn hàng) cho các đồng tiền không công bằng khác nhau. Tỷ lệ khả năng, hoặc yếu tố Bayes , vào khoảng 11 khi giả thuyết null ( ) được so sánh với giả thuyết thay thế . Điều này có nghĩa là tỷ lệ cược sau chỉ cao hơn mười lần so với tỷ lệ cược trước đó.p=0.5p=0.33
Do đó, nếu bạn nghĩ trước khi thử nghiệm rằng đồng tiền này không chắc là không công bằng, thì bây giờ bạn vẫn nên nghĩ rằng đồng tiền này khó có thể không công bằng.
Một đồng xu có nhưng không công bằng về các lần xuất hiện '1-0-0'pheads=ptails
Người ta có thể dễ dàng kiểm tra xác suất của một đồng tiền công bằng bằng cách đếm số lượng đầu và đuôi và sử dụng phân phối nhị thức để mô hình hóa các quan sát này và kiểm tra xem quan sát đó có đặc biệt hay không.
Tuy nhiên, có thể là đồng xu đang lật, trung bình, một số lượng đầu và đuôi bằng nhau nhưng không công bằng đối với các mẫu nhất định. Ví dụ, đồng xu có thể có một số tương quan để thành công lật đồng xu (tôi tưởng tượng một số cơ chế với các lỗ hổng bên trong kim loại của đồng xu được lấp đầy bằng cát sẽ chảy như một chiếc đồng hồ cát về phía đối diện của lần lật đồng xu trước đó, đang nạp đồng xu có nhiều khả năng rơi vào cùng phía với bên trước).
Đặt đồng xu đầu tiên là các đầu và đuôi có xác suất bằng nhau và các lần lật thành công có xác suất cùng phía với lần lật trước. Sau đó, một mô phỏng tương tự như phần đầu của bài đăng này sẽ đưa ra các xác suất sau cho số lần mẫu '1-0-0' vượt quá 20:p
Bạn có thể thấy rằng có thể làm cho nó trở nên trơn tru hơn khi quan sát mô hình '1-0-0' (đâu đó quanh một đồng xu có một số tương quan tiêu cực), nhưng kịch tính hơn là người ta có thể làm cho nó ít hơn nhiều có khả năng làm nổi bật mô hình '1-0-0'. Đối với thấp, bạn nhận được nhiều lần đuôi sau một cái đầu, phần '1-0' đầu tiên của mẫu '1-0-0', nhưng bạn không thường xuyên nhận được hai đuôi liên tiếp là '0-0' một phần của mô hình. Điều ngược lại là đúng với các giá trị cao .p=0.45pp
# number of trials
set.seed(1)
n <- 10^6
p <- seq(0.3,0.6,0.02)
np <- length(p)
mcounts <- matrix(rep(0,33*np),33)
pb <- txtProgressBar(title = "progress bar", min = 0,
max = np, style=3)
for (i in 1:np) {
# flip first coins
qfirst <- matrix(rbinom(n, 1, 0.5),n)*2-1
# flip the changes of the sign of the coin
qrest <- matrix(rbinom(99*n, 1, p[i]),n)*2-1
# determining the sign of the coins
qprod <- t(sapply(1:n, function(x) qfirst[x]*cumprod(qrest[x,])))
# representing in terms of 1s and 0s
qcoins <- cbind(qfirst,qprod)*0.5+0.5
counts <- sapply(1:n, function(x) npattern(qcoins[x,]))
mcounts[,i] <- sapply(1:33, function(x) sum(counts==x))
setTxtProgressBar(pb, i)
}
close(pb)
plot(p,colSums(mcounts[c(20:33),]),
type="l", xlab="p same flip", ylab="counts/million trials",
main="observation of 20 or more times '1-0-0' pattern \n for coin with correlated flips")
points(p,colSums(mcounts[c(20:33),]))
Sử dụng toán học trong thống kê
Trên đây là tất cả tốt nhưng nó không phải là một câu trả lời trực tiếp cho câu hỏi
"bạn có nghĩ rằng đây là một đồng tiền công bằng?"
Để trả lời câu hỏi đó, người ta có thể sử dụng toán học ở trên, nhưng trước tiên người ta phải mô tả rất rõ tình huống, mục tiêu, định nghĩa về sự công bằng, v.v. Không có bất kỳ kiến thức nào về nền tảng và hoàn cảnh, bất kỳ tính toán nào sẽ chỉ là bài tập toán và không phải là câu trả lời cho câu hỏi rõ ràng.
Một câu hỏi mở là tại sao và làm thế nào chúng ta đang tìm kiếm mô hình '1-0-0'.
- Ví dụ, có thể mẫu này không phải là mục tiêu, được quyết định trước khi thực hiện điều tra. Có lẽ nó chỉ là thứ gì đó 'nổi bật' trong dữ liệu và nó là thứ được chú ý sau thí nghiệm. Trong trường hợp đó, người ta cần xem xét rằng người ta đang thực hiện nhiều so sánh một cách hiệu quả .
- Một vấn đề khác là xác suất tính toán ở trên là giá trị p. Ý nghĩa của giá trị p cần được xem xét cẩn thận. Nó không phải là xác suất mà đồng tiền là công bằng. Thay vào đó, xác suất để quan sát một kết quả cụ thể nếu đồng tiền là công bằng. Nếu người ta có một môi trường trong đó người ta biết một số phân phối về tính công bằng của tiền xu, hoặc người ta có thể đưa ra một giả định hợp lý, thì người ta có thể tính đến điều này và sử dụng biểu thức Bayes .
- Cái gì công bằng, cái gì không công bằng. Cuối cùng, được đưa ra đủ thử nghiệm, người ta có thể tìm thấy một chút bất công nhỏ bé. Nhưng nó có liên quan và là một tìm kiếm như vậy không thiên vị? Khi chúng ta tuân theo cách tiếp cận thường xuyên, thì người ta nên mô tả một cái gì đó giống như một ranh giới ở trên mà chúng ta xem xét một hội chợ tiền xu (một số kích thước hiệu ứng có liên quan). Sau đó, người ta có thể sử dụng một cái gì đó tương tự như thử nghiệm t hai mặt để quyết định xem đồng tiền có công bằng hay không (liên quan đến mẫu '1-0-0').