การแก้ปัญหาด้วยการจำลองสถานการณ์
ความพยายามครั้งแรกของฉันคือการจำลองสิ่งนี้บนคอมพิวเตอร์ซึ่งสามารถพลิกเหรียญยุติธรรมจำนวนมากได้อย่างรวดเร็ว ด้านล่างเป็นตัวอย่างของการทดสอบ milion หนึ่งครั้ง เหตุการณ์ 'ที่จำนวนครั้งที่รูปแบบ' 1-0-0 'เกิดขึ้นในเหรียญ flips คือ 20 หรือมากกว่านั้นเกิดขึ้นประมาณหนึ่งครั้งในการทดลองสามพันครั้งดังนั้นสิ่งที่คุณสังเกตจึงไม่น่าจะเป็นไปได้ เหรียญ).Xn = 100
โปรดทราบว่าฮิสโตแกรมนั้นใช้สำหรับการจำลองและบรรทัดนั้นคือการคำนวณที่แน่นอนซึ่งอธิบายเพิ่มเติมด้านล่าง
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)
การแก้ปัญหาด้วยการคำนวณที่แน่นอน
สำหรับวิธีการวิเคราะห์คุณสามารถใช้ความจริงที่ว่า'ความน่าจะเป็นในการสังเกต 20 หรือมากกว่านั้น' 1-0-0 'ในการโยน 100 เหรียญมีค่าเท่ากับ 1 ลบความน่าจะเป็นที่จะใช้ 100 flips ในการวน 20 ครั้ง' . นี่คือการแก้ไขในขั้นตอนต่อไปนี้:
รอเวลาสำหรับความน่าจะเป็นในการพลิก '1-0-0'
การแจกแจง, , จำนวนครั้งที่คุณต้องพลิกจนกว่าคุณจะได้หนึ่งลำดับ '1-0-0' ที่แน่นอนสามารถคำนวณได้ดังนี้:ฉยังไม่มีข้อความ, x = 1( n )
ลองวิเคราะห์วิธีการ '1-0-0' ในฐานะลูกโซ่มาร์คอฟ เราปฏิบัติตามสถานะที่อธิบายโดยคำต่อท้ายของสตริงการพลิก: '1', '1-0' หรือ '1-0-0' ตัวอย่างเช่นหากคุณมีการพลิกแปดครั้งต่อไปนี้ 10101100 คุณจะผ่านตามลำดับแปดสถานะดังต่อไปนี้: '1', '1-0', '1', '1-0', '1', '1', '1-0', '1-0-0' และใช้เวลาแปดครั้งถึง '1-0-0' โปรดทราบว่าคุณไม่มีโอกาสเท่าเทียมกันในการเข้าถึงสถานะ '1-0-0' ในทุก ๆ ครั้ง ดังนั้นคุณจะไม่สามารถรุ่นนี้เป็นกระจายทวินาม คุณควรปฏิบัติตามทรีของความน่าจะเป็น สถานะ '1' สามารถไปที่ '1' และ '1-0', รัฐ '1-0' สามารถเข้าไปใน '1' และ '1-0-0', และสถานะ '1-0-0' เป็นสถานะที่น่าสนใจ คุณสามารถเขียนมันเป็น:
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}
และความน่าจะเป็นที่จะมาถึงรูปแบบ '1-0-0' หลังจากที่มีการหมุน '1' ครั้งแรก (คุณเริ่มต้นด้วยสถานะ '0' ที่ยังไม่มีการพลิกหัว) ภายใน flips จะเท่ากับความน่าจะเป็นครึ่งเท่า ที่จะอยู่ในสถานะ '1-0' ภายในพลิก :nn - 1
ฉยังไม่มีข้อความค, x = 1( n ) =Fn - 22n - 1
โดยที่คือหมายเลข -th Fibonnaci ความน่าจะเป็นแบบไม่มีเงื่อนไขคือผลรวมFผมผม
ฉยังไม่มีข้อความ, x = 1( n ) =Σk = 1n - 20.5kฉยังไม่มีข้อความค, x = 1( 1 + ( n - k ) ) =0.5nΣk = 1n - 2Fk
กำลังรอเวลาสำหรับความน่าจะเป็นในการพลิกคูณ '1-0-0'k
สิ่งนี้คุณสามารถคำนวณได้โดยการโน้มน้าวใจ
ฉยังไม่มีข้อความ, x = k( n ) =Σl = 1nฉยังไม่มีข้อความ, x = 1( l )ฉยังไม่มีข้อความ, x = 1( n - l )
คุณจะได้รับความน่าจะเป็นที่จะสังเกตรูปแบบ 20 หรือมากกว่า '1-0-0' (ขึ้นอยู่กับสมมติฐานว่าเหรียญมีความยุติธรรม)
> # exact computation
> 1-Fx[20]
[1] 0.0003247105
> # estimated from simulation
> sum(counts>=20)/10^6
[1] 0.000337
นี่คือรหัส R เพื่อคำนวณ:
# 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)
คอมพิวเตอร์สำหรับเหรียญที่ไม่เป็นธรรม
เราสามารถสรุปการคำนวณความน่าจะเป็นข้างต้นเพื่อสังเกตรูปแบบใน flips เมื่อความน่าจะเป็นของ '1 = head' คือและการพลิกเป็นอิสระxnพี
ตอนนี้เราใช้การสรุปตัวเลขของฟีโบนักชี:
Fn( x ) =⎧⎩⎨1xx (Fn - 1+Fn - 2)ถ้า n = 1ถ้า n = 2ถ้า n > 2
ความน่าจะเป็นคือ:
ฉยังไม่มีข้อความค, x = 1 , p( n ) = ( 1 - p)n - 1Fn - 2( ( 1 - p)- 1- 1 )
และ
ฉยังไม่มีข้อความ, x = 1 , p( n ) =Σk = 1n - 2p ( 1 - p)k - 1ฉยังไม่มีข้อความค, x = 1 , p( 1 + n - k ) = p ( 1 - p)n - 1Σk = 1n - 2Fk( ( 1 - p)- 1- 1 )
เมื่อเราวางแผนสิ่งนี้คุณจะได้รับ:
ดังนั้นในขณะที่ค่า p มีขนาดเล็กสำหรับเหรียญยุติธรรม 0.0003247 เราต้องทราบว่ามันไม่ดีกว่ามาก (เพียงคำสั่งเดียว) สำหรับเหรียญที่ไม่เป็นธรรมที่แตกต่างกัน อัตราส่วนโอกาสหรือปัจจัย Bayesเป็นประมาณ 11 เมื่อสมมติฐาน ( ) เปรียบเทียบกับทางเลือกสมมติฐานpซึ่งหมายความว่าอัตราส่วนอัตราต่อรองหลังสูงกว่าอัตราเดิมพันก่อนหน้าเพียงสิบเท่าp = 0.5p = 0.33
ดังนั้นหากคุณคิดว่าก่อนการทดสอบว่าเหรียญนั้นไม่ยุติธรรมเลยคุณควรคิดว่าเหรียญนั้นไม่ยุติธรรม
เหรียญที่มีแต่ไม่ยุติธรรมเกี่ยวกับเหตุการณ์ '1-0-0'พีh e a ds=พีt a i l s
เราสามารถทดสอบความน่าจะเป็นของเหรียญยุติธรรมได้ง่ายขึ้นโดยการนับจำนวนหัวและก้อยและใช้การแจกแจงทวินามเพื่อจำลองแบบการสังเกตเหล่านี้และทดสอบว่าการสังเกตนั้นมีความเฉพาะหรือไม่
อย่างไรก็ตามอาจเป็นไปได้ว่าเหรียญกำลังพลิกโดยเฉลี่ยมีจำนวนหัวและก้อยเท่ากัน แต่ไม่ยุติธรรมกับรูปแบบบางอย่าง ตัวอย่างเช่นเหรียญอาจมีความสัมพันธ์กับการโยนเหรียญสำเร็จ (ฉันจินตนาการถึงกลไกบางอย่างที่มีช่องว่างภายในโลหะของเหรียญที่เต็มไปด้วยทรายที่จะไหลเหมือนนาฬิกาทรายไปทางด้านตรงข้ามของเหรียญก่อนหน้านี้ซึ่งโหลดเหรียญ มีแนวโน้มที่จะลดลงในด้านเดียวกับด้านก่อนหน้า)
ให้พลิกเหรียญแรกเป็นหัวน่าจะเท่ากันและหางและพลิกประสบความสำเร็จจะมีความน่าจะเป็นด้านเดียวกับพลิกก่อน จากนั้นการจำลองที่คล้ายกันซึ่งเป็นจุดเริ่มต้นของโพสต์นี้จะให้ความน่าจะเป็นดังต่อไปนี้สำหรับจำนวนครั้งที่รูปแบบ '1-0-0' เกิน 20:พี
คุณสามารถเห็นได้ว่ามันเป็นไปได้ที่จะทำให้มันมีความเป็นไปได้น้อยที่จะสังเกตรูปแบบ '1-0-0' (ที่ใดที่หนึ่งรอบเหรียญที่มีความสัมพันธ์เชิงลบบางอย่าง) แต่น่าทึ่งกว่านั้นคือ มีแนวโน้มที่จะได้รับรูปแบบ '1-0-0' สำหรับต่ำคุณจะได้รับก้อยหลังหัวเป็นส่วนแรก '1-0' ของรูปแบบ '1-0-0' แต่คุณไม่ได้รับบ่อยสองหางในแถว '0-0' ส่วนหนึ่งของรูปแบบ ตรงกันข้ามเป็นจริงสำหรับค่าสูงp = 0.45พีพี
# 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),]))
การใช้คณิตศาสตร์ในสถิติ
ข้างต้นเป็นสิ่งที่ดี แต่ไม่ใช่คำตอบสำหรับคำถามโดยตรง
คุณคิดว่านี่เป็นเหรียญที่ยุติธรรมหรือไม่?
เพื่อตอบคำถามนั้นเราสามารถใช้คณิตศาสตร์ข้างต้น แต่ควรอธิบายสถานการณ์เป้าหมายคำจำกัดความของความเป็นธรรมและอื่น ๆ ได้ดีหากไม่มีความรู้เกี่ยวกับภูมิหลังและสถานการณ์ใด ๆ การคำนวณใด ๆ จะเป็นการออกกำลังกายทางคณิตศาสตร์และไม่ใช่คำตอบ คำถามที่ชัดเจน
คำถามที่เปิดหนึ่งคือทำไมและวิธีการที่เรากำลังมองหารูปแบบ '1-0-0'
- ตัวอย่างเช่นรูปแบบนี้อาจไม่ใช่เป้าหมายซึ่งได้รับการตัดสินใจก่อนที่จะทำการสอบสวน บางทีมันอาจเป็นเพียงบางสิ่งที่ 'โดดเด่น' ในข้อมูลและเป็นสิ่งที่ได้รับความสนใจหลังจากการทดสอบ ในกรณีที่หนึ่งต้องพิจารณาว่าใครจะมีผลทำให้การเปรียบเทียบหลาย
- ปัญหาอื่นคือความน่าจะเป็นที่คำนวณข้างต้นเป็นค่า p ความหมายของค่า p ต้องได้รับการพิจารณาอย่างรอบคอบ มันเป็นไม่น่าจะเป็นที่เหรียญเป็นธรรม ความน่าจะเป็นที่จะสังเกตเห็นผลลัพธ์เฉพาะนั้นคือถ้าเหรียญนั้นยุติธรรม หากมีสภาพแวดล้อมที่ใครรู้ว่าการกระจายตัวของความเป็นธรรมของเหรียญบางหรือหนึ่งสามารถทำให้สมมติฐานที่เหมาะสมแล้วหนึ่งสามารถใช้เวลานี้ในบัญชีและใช้การแสดงออกคชกรรม
- อะไรคือความยุติธรรมสิ่งที่ไม่ยุติธรรม ในที่สุดหากมีการทดลองมากพออาจพบว่ามีความไม่ยุติธรรมเล็กน้อย แต่มันมีความเกี่ยวข้องและการค้นหาดังกล่าวไม่ลำเอียงหรือไม่ เมื่อเรายึดติดกับแนวทางปฏิบัติบ่อยครั้งเราควรอธิบายบางอย่างเช่นขอบเขตด้านบนซึ่งเราพิจารณาว่าเป็นงานเหรียญ (ขนาดของเอฟเฟกต์ที่เกี่ยวข้อง) จากนั้นเราสามารถใช้บางสิ่งที่คล้ายกับการทดสอบสองด้านแบบสองด้านเพื่อตัดสินว่าเหรียญนั้นยุติธรรมหรือไม่ (เกี่ยวกับรูปแบบ '1-0-0')