หากฉันมีโอกาส 58% ในการชนะหนึ่งแต้มโอกาสที่ฉันจะชนะเกมปิงปองถึง 21 ชนะด้วย 2 คืออะไร


90

ฉันมีการเดิมพันกับเพื่อนร่วมงานที่ออกจากเกมปิงปอง 50 เกม (ก่อนชนะ 21 คะแนนชนะ 2 คะแนน) ฉันจะชนะ 50 คะแนนจนถึงตอนนี้เราเล่น 15 เกมแล้วโดยเฉลี่ยฉันชนะ 58% ของ คะแนนรวมทั้งฉันชนะทุกเกมจนถึงตอนนี้ ดังนั้นเราจึงสงสัยว่าถ้าฉันมีโอกาส 58% ที่จะได้รับคะแนนและเขามีโอกาส 42% ที่จะได้รับคะแนนสิ่งที่เป็นโอกาสร้อยละที่ฉันจะชนะเกม มีสูตรที่เราสามารถเสียบโอกาส% ต่างกันได้หรือไม่?

เราได้สำรวจและถามนักวิทยาศาสตร์ด้านข้อมูลที่ บริษัท ของเรา แต่ไม่พบคำตอบที่ตรง

แก้ไข:ว้าวฉันปลิวไปด้วยการตอบสนองอย่างถี่ถ้วน ขอบคุณมาก ๆ เลย !!! ในกรณีที่ผู้คนอยากรู้อยากเห็นฉันได้รับการปรับปรุงวิธีการเดิมพันของฉัน: ตอนนี้ฉันชนะแล้ว 18 จาก 50 เกมดังนั้นฉันต้องชนะอีก 32 เกม ฉันได้รับคะแนน 58.7% จากคะแนนทั้งหมดและฝ่ายตรงข้ามของฉันได้รับคะแนน 41.3% ค่าเบี่ยงเบนมาตรฐานสำหรับคู่ต่อสู้ของฉันคือ 3.52 คะแนนเฉลี่ยของเขาคือ 14.83 และคะแนนเฉลี่ยของเขาคือ 15.50 ด้านล่างนี้เป็นภาพหน้าจอของคะแนนของแต่ละเกมจนถึงตอนนี้ ฉันสามารถอัปเดตได้เรื่อย ๆ เมื่อการเดิมพันดำเนินไปหากผู้คนสนใจ

แก้ไข # 2 : น่าเสียดายที่เราสามารถเล่นเกมได้เพียงไม่กี่เกมเท่านั้นด้านล่างคือผลลัพธ์ ฉันจะเปลี่ยนภาพต่อไปเรื่อย ๆ ดังนั้นฉันจึงไม่มีภาพหน้าจอมากมาย

การปรับปรุงครั้งสุดท้าย : ในที่สุดฉันก็สูญเสียเพื่อนร่วมงานของฉันในเกม # 28 เขาเอาชนะฉัน 21-13 ขอบคุณสำหรับความช่วยเหลือของคุณ!

ป้อนคำอธิบายรูปภาพที่นี่


11
มีเป็นสูตรสำหรับมันอยู่ในรูปแบบพี21 / ( 1 - 2 P + 2 P 2 )ครั้งปริญญา-20 พหุนาม: 21 เงื่อนไขในทุก (มีค่าสัมประสิทธิ์ขนาดใหญ่ที่ใหญ่เกิน1.6 × 10 16 ) หากคะแนนทั้งหมดเป็นอิสระคุณมีโอกาส0.432 % ที่จะชนะใน 35 เกมถัดไป p=0.58,p21/(12p+2p2)1.6×10160.432%
whuber

8
ฉันสงสัยว่าทุกจุด (และเกม) เป็นอิสระจากกัน (ด้วยเหตุผลหลายประการ) การไม่เป็นอิสระอาจส่งผลกระทบอย่างใหญ่หลวงต่อคำตอบ
Mark L. Stone

8
สมมติว่าเป็นเกมเดียวกับที่ฉันเล่นฉันจำได้ว่าการเสิร์ฟหนึ่งรายการมีข้อได้เปรียบ ดังนั้นการเพิกเฉยทุกอย่างเกี่ยวกับ "มือร้อน" อาจเป็นไปได้ว่าคุณชนะ 68% เมื่อเสิร์ฟและ 48% เมื่อไม่ได้เล่น - นั่นจะเป็นการบิดเบือนความน่าจะเป็นทั้งหมด แม้ว่ามันจะออกมาเป็น 58% เราจึงไม่มีข้อมูลเพียงพอ ..
ฮันส์โอลส์สัน

5
แค่แสดงความคิดเห็น - 21 คะแนน? เทเบิลเทนนิสเปลี่ยนไปเป็นรูปแบบ 11 จุดที่ดีที่สุดของเกมที่ 7 2 ทำหน้าที่ต่อผู้เล่นในเวลากลับไปในปี 2001
rcgldr

5
ฉันจะโพสต์การอัปเดตเกี่ยวกับการเดิมพันนี้ทุกๆ ~ 5 เกมหรือมากกว่านั้น น่าเสียดายที่เราได้เล่นเกมสองสามครั้งต่อสัปดาห์เนื่องจากเราเล่นหลังเลิกงานเท่านั้น
richard

คำตอบ:


119

การวิเคราะห์มีความซับซ้อนโดยโอกาสที่เกมจะเข้าสู่ "การทำงานล่วงเวลา" เพื่อที่จะชนะโดยมีกำไรขั้นต่ำอย่างน้อยสองจุด (ไม่อย่างนั้นจะง่ายเหมือนวิธีแก้ปัญหาที่แสดงไว้ที่https://stats.stackexchange.com/a/327015/919 ) ฉันจะแสดงวิธีการเห็นภาพปัญหาและใช้สิ่งนั้นเพื่อแยกมันออกเป็นผลงานที่คำนวณโดยง่าย คำตอบ. ผลลัพธ์แม้ว่าจะยุ่งเหยิงนิดหน่อยก็จัดการได้ การจำลองแสดงให้เห็นถึงความถูกต้อง


ให้เป็นความน่าจะเป็นที่จะได้แต้ม p ถือว่าทุกจุดมีความเป็นอิสระ โอกาสที่คุณจะชนะเกมสามารถแบ่งออกเป็นเหตุการณ์ (nonoverlapping) ตามจำนวนคะแนนที่ฝ่ายตรงข้ามของคุณมีในตอนท้ายโดยสมมติว่าคุณไม่เข้าสู่การทำงานล่วงเวลา ( ) หรือทำงานล่วงเวลา ในกรณีหลังเป็น (หรือจะกลายเป็น) ชัดเจนว่าในบางขั้นตอนคะแนนเป็น 20-200,1,,19

มีการสร้างภาพที่ดีคือ ให้คะแนนระหว่างเกมถูกพล็อตเป็นคะแนนโดยที่xคือคะแนนของคุณและyคือคะแนนของฝ่ายตรงข้าม เป็นเกมที่คลี่คะแนนย้ายไปตามขัดแตะจำนวนเต็มในด้านแรกเริ่มต้นที่( 0 , 0 ) , การสร้างเส้นทางเกม มันจบลงเป็นครั้งแรกหนึ่งของคุณได้คะแนนไม่น้อยกว่า21และมีอัตรากำไรขั้นต้นอย่างน้อย2 คะแนนที่ชนะนั้นจะรวมเป็นสองชุดคือ "ขอบเขตการดูดซับ" ของกระบวนการนี้โดยที่เส้นทางของเกมจะต้องยุติลง(x,y)xy(0,0)212

รูป

รูปนี้แสดงส่วนหนึ่งของขอบเขตการดูดซับ (มันขยายไปเรื่อย ๆ และไปทางขวา) พร้อมกับเส้นทางของเกมที่เข้าสู่การทำงานล่วงเวลา (ด้วยความสูญเสียสำหรับคุณอนิจจา)

มานับกัน จำนวนวิธีที่เกมสามารถจบลงด้วยคะแนนสำหรับคู่ต่อสู้ของคุณคือจำนวนเส้นทางที่แตกต่างกันในจำนวนเต็ม( x , y )คะแนนเริ่มต้นที่คะแนนเริ่มต้น( 0 , 0 )และสิ้นสุดที่คะแนนสุดท้าย( 20 , Y ) เส้นทางดังกล่าวถูกกำหนดโดยคะแนน20 + yในเกมที่คุณชนะ พวกเขาสอดคล้องกับชุดย่อยขนาด20ของตัวเลข1 , 2 , , 20 +y(x,y)(0,0)(20,y)20+y201,2,,20+yและมีของพวกเขา เนื่องจากในแต่ละเส้นทางดังกล่าวคุณจะได้รับคะแนน (ด้วยความน่าจะเป็นอิสระในแต่ละครั้งนับคะแนนสุดท้าย) และฝ่ายตรงข้ามของคุณชนะคะแนน (ด้วยความน่าจะเป็นอิสระในแต่ละครั้ง) เส้นทางที่เกี่ยวข้องกับบัญชีสำหรับโอกาสทั้งหมด 21py1-py(20+y20)21py1py

f(y)=(20+y20)p21(1p)y.

ในทำนองเดียวกันมีวิธีที่จะมาถึงคิดเป็น 20-20 เสมอ ในสถานการณ์นี้คุณไม่ชนะแน่นอน เราอาจคำนวณโอกาสในการชนะของคุณโดยใช้หลักการทั่วไป: ลืมว่ามีกี่คะแนนที่ทำคะแนนได้แล้วและเริ่มติดตามผลต่างของคะแนน เกมดังกล่าวมีความแตกต่างเป็นและจะสิ้นสุดเมื่อถึงหรือครั้งแรกจำเป็นต้องผ่านไปพร้อมกัน ให้เป็นโอกาสที่คุณจะชนะเมื่อความแตกต่างคือ (20,20)0+2-2±1กรัม(ฉัน)ฉัน{-1,0,1}(20+2020)(20,20)0+22±1g(i)i{1,0,1}\}

เนื่องจากโอกาสของคุณที่จะชนะในทุกสถานการณ์คือเราจึงมีp

g(0)=pg(1)+(1p)g(1),g(1)=p+(1p)g(0),g(1)=pg(0).

คำตอบเฉพาะของระบบสมการเชิงเส้นสำหรับเวกเตอร์หมายถึง(g(1),g(0),g(1))

g(0)=p212p+2p2.

ดังนั้นนี่เป็นโอกาสของคุณที่จะได้รับชัยชนะครั้งเดียวครั้งซึ่งเกิดขึ้นกับโอกาสของ )( 20 + 20)(20,20)(20+2020)p20(1p)20

ดังนั้นโอกาสในการชนะของคุณคือผลรวมของความเป็นไปได้ที่ไม่ปะติดปะต่อเหล่านี้ทั้งหมดเท่ากับ

y=019f(y)+g(0)p20(1p)20(20+2020)=y=019(20+y20)p21(1p)y+p212p+2p2p20(1p)20(20+2020)=p2112p+2p2(y=019(20+y20)(12p+2p2)(1p)y+(20+2020)p(1p)20).

สิ่งที่อยู่ในวงเล็บด้านขวาเป็นพหุนามในพี(ดูเหมือนว่าระดับของมันคือแต่ข้อตกลงชั้นนำทั้งหมดยกเลิก: ระดับของมันคือ )p2120

เมื่อโอกาสชนะจะใกล้เคียงกับp=0.580.855913992.

คุณไม่ควรมีปัญหาในการสรุปการวิเคราะห์นี้กับเกมที่ยุติด้วยคะแนนใด ๆ เมื่อมาร์จิ้นที่ต้องการมากกว่าผลลัพธ์จะซับซ้อนมากขึ้น แต่ก็ตรงไปตรงมา2

บังเอิญด้วยโอกาสเหล่านี้ในการชนะคุณมีมีโอกาสในการชนะเกมแรก นั่นไม่สอดคล้องกับสิ่งที่คุณรายงานซึ่งอาจกระตุ้นให้เราดำเนินการต่อไปหากผลลัพธ์ของแต่ละประเด็นมีความเป็นอิสระ เราจึงคาดว่าคุณจะมีโอกาส(0.8559)159.7%15

(0.8559)350.432%

ในการชนะเกมที่เหลือทั้งหมดโดยถือว่าพวกเขาดำเนินการตามข้อสมมติเหล่านี้ทั้งหมด มันฟังดูไม่น่าจะเป็นการพนันที่ดีที่จะทำเว้นแต่ว่าผลตอบแทนจะมาก!35


ฉันชอบที่จะตรวจสอบงานเช่นนี้ด้วยการจำลองอย่างรวดเร็ว นี่คือRรหัสในการสร้างเกมเป็นหมื่นในหนึ่งวินาที ถือว่าเกมนี้มีคะแนนไม่เกิน 126 คะแนน (มีเกมเพียงไม่กี่เกมที่ต้องดำเนินการต่อไปดังนั้นสมมติฐานนี้จึงไม่มีผลกระทบต่อผลลัพธ์อย่างมีนัยสำคัญ)

n <- 21      # Points your opponent needs to win
m <- 21      # Points you need to win
margin <- 2  # Minimum winning margin
p <- .58     # Your chance of winning a point
n.sim <- 1e4 # Iterations in the simulation

sim <- replicate(n.sim, {
  x <- sample(1:0, 3*(m+n), prob=c(p, 1-p), replace=TRUE)
  points.1 <- cumsum(x)
  points.0 <- cumsum(1-x)
  win.1 <- points.1 >= m & points.0 <= points.1-margin
  win.0 <- points.0 >= n & points.1 <= points.0-margin
  which.max(c(win.1, TRUE)) < which.max(c(win.0, TRUE))
})
mean(sim)

เมื่อฉันทำสิ่งนี้คุณได้รับรางวัล 8,570 รายจาก 10,000 ซ้ำ สามารถคำนวณคะแนน Z (ที่มีการแจกแจงแบบปกติประมาณ) เพื่อทดสอบผลลัพธ์ดังกล่าว:

Z <- (mean(sim) - 0.85591399165186659) / (sd(sim)/sqrt(n.sim))
message(round(Z, 3)) # Should be between -3 and 3, roughly.

ค่าในการจำลองนี้สอดคล้องอย่างสมบูรณ์กับการคำนวณทางทฤษฎีที่กล่าวมา0.31


ภาคผนวก 1

ในแง่ของการอัปเดตคำถามซึ่งแสดงผลลัพธ์ของ 18 เกมแรกนี่คือการสร้างเส้นทางเกมที่สอดคล้องกับข้อมูลเหล่านี้ คุณจะเห็นได้ว่าเกมสองหรือสามเกมนั้นใกล้จะสูญเสีย (เส้นทางใดก็ตามที่ลงท้ายด้วยสี่เหลี่ยมสีเทาอ่อนเป็นการสูญเสียสำหรับคุณ)

รูปที่ 2

การใช้ประโยชน์ของตัวเลขนี้รวมถึงการสังเกต:

  • เส้นทางมุ่งไปรอบ ๆ ความลาดชันที่กำหนดโดยอัตราส่วน 267: 380 ของคะแนนรวมเท่ากับประมาณ 58.7%

  • การกระจายของเส้นทางรอบ ๆ ความลาดชันนั้นแสดงให้เห็นถึงการเปลี่ยนแปลงที่คาดหวังเมื่อคะแนนเป็นอิสระ

    • หากมีการให้คะแนนเป็นเส้นริ้วรอยแต่ละเส้นทางจะมีแนวยาวและแนวยาว

    • ในชุดยาวของเกมที่คล้ายกันคาดว่าจะเห็นเส้นทางที่มีแนวโน้มที่จะอยู่ในช่วงสีแต่ยังคาดว่าจะมีไม่กี่ที่จะขยายเกินกว่านั้น

    • โอกาสของเกมหนึ่งหรือสองเส้นทางที่มีอยู่โดยทั่วไปเหนือสเปรดนี้บ่งบอกถึงความเป็นไปได้ที่คู่ต่อสู้ของคุณจะชนะเกมในที่สุดอาจจะเร็วกว่าในภายหลัง


ภาคผนวก 2

มีการร้องขอรหัสเพื่อสร้างรูป นี่คือ (ทำความสะอาดเพื่อสร้างกราฟิกที่ดีกว่าเล็กน้อย)

library(data.table)
library(ggplot2)

n <- 21      # Points your opponent needs to win
m <- 21      # Points you need to win
margin <- 2  # Minimum winning margin
p <- 0.58     # Your chance of winning a point
#
# Quick and dirty generation of a game that goes into overtime.
#
done <- FALSE
iter <- 0
iter.max <- 2000
while(!done & iter < iter.max) {
  Y <- sample(1:0, 3*(m+n), prob=c(p, 1-p), replace=TRUE)
  Y <- data.table(You=c(0,cumsum(Y)), Opponent=c(0,cumsum(1-Y)))
  Y[, Complete := (You >= m & You-Opponent >= margin) |
      (Opponent >= n & Opponent-You >= margin)]
  Y <- Y[1:which.max(Complete)]
  done <- nrow(Y[You==m-1 & Opponent==n-1 & !Complete]) > 0
  iter <- iter+1
}
if (iter >= iter.max) warning("Unable to find a solution. Using last.")
i.max <- max(n+margin, m+margin, max(c(Y$You, Y$Opponent))) + 1
#
# Represent the relevant part of the lattice.
#
X <- as.data.table(expand.grid(You=0:i.max,
                               Opponent=0:i.max))
X[, Win := (You == m & You-Opponent >= margin) |
    (You > m & You-Opponent == margin)]
X[, Loss := (Opponent == n & You-Opponent <= -margin) |
    (Opponent > n & You-Opponent == -margin)]
#
# Represent the absorbing boundary.
#
A <- data.table(x=c(m, m, i.max, 0, n-margin, i.max-margin),
                y=c(0, m-margin, i.max-margin, n, n, i.max),
                Winner=rep(c("You", "Opponent"), each=3))
#
# Plotting.
#
ggplot(X[Win==TRUE | Loss==TRUE], aes(You, Opponent)) +
  geom_path(aes(x, y, color=Winner, group=Winner), inherit.aes=FALSE,
            data=A, size=1.5) +
  geom_point(data=X, color="#c0c0c0") +
  geom_point(aes(fill=Win), size=3, shape=22, show.legend=FALSE) +
  geom_path(data=Y, size=1) +
  coord_equal(xlim=c(-1/2, i.max-1/2), ylim=c(-1/2, i.max-1/2),
              ratio=1, expand=FALSE) +
  ggtitle("Example Game Path",
          paste0("You need ", m, " points to win; opponent needs ", n,
                 "; and the margin is ", margin, "."))

การแยกเป็นอย่างไร ไม่กำหนดค่าซ้ำของคุณ? ตัวอย่างเช่นเมื่อค่าสัมประสิทธิ์ทวินามเป็น1เมื่อแล้ว21 แต่หนึ่งในการกำหนดค่าหลังคือหนึ่งที่พบสำหรับ (เช่น 21 คะแนนชนะสำหรับผู้เล่นของเรา, 0 สำหรับฝ่ายตรงข้าม) เราไม่ควรลบความน่าจะเป็นของการตัดกันไหม นี่คือสิ่งที่บล็อกฉันตั้งแต่แรก f(y)y=01y=1(2120)=21y=0
Easymode44

1
@whuber: ยอดเยี่ยมก็จะเป็นส่วน "การสร้างภาพที่ดี" ของr codeการเปิดเผยการใช้งานหรือไม่ ขอบคุณมาก.
แมกซีมีเลียน

7
@tefan ค่าของฉันถูกคำนวณโดยใช้เลขคณิตเชิงเหตุผลที่แน่นอน (ในMathematica ) และถูกปัดเศษในตอนท้าย ฉันสงสัยว่าคุณอาจคำนวณโดยใช้จุดลอยตัวที่มีความแม่นยำสองเท่าเท่านั้นดังนั้นสมมติว่าตัวเลขสองสามตัวสุดท้ายของคุณไม่ถูกต้อง ในฐานะที่เป็นจำนวนตรรกยะค่าเป็น
2494929816061114641968058046704583744174849151775019163577995310486129149305191822350025177001953125000000000000000000000000000000000000.
whuber

4
@ Maximilian ฉันโพสต์โค้ดเพื่อการสร้างภาพ
whuber

3
ฉันคิดว่าวิธีที่ง่ายกว่าในการจัดการการทำงานล่วงเวลาคือการทำแต้มเป็นคู่เมื่อถึง 20-20 สิ่งเดียวที่สำคัญไม่ว่าจะเป็นผู้เล่นคนแรกที่ชนะทั้งคู่ (ความน่าจะเป็น0.58²) หรือผู้ชนะที่สอง (0.42²) หากมีสิ่งอื่นเกิดขึ้นให้เพิกเฉยและเล่นต่อไปจนกว่าจะมีสิ่งใดสิ่งหนึ่งข้างต้นเกิดขึ้น ความน่าจะเป็นชนะของผู้เล่นคนแรกหลังจาก 20-20 จึงเป็น0.58² / (0.58² + 0.42²) และผู้เล่นคนที่สองคือ0.42² / (0.58² + 0.42²)
supercat

25

การใช้การแจกแจงทวินามและสมมติว่าทุกจุดเป็นอิสระ:

  • ความน่าจะเป็นที่ผู้เล่นได้รับถึงในคะแนนแรก(โดยคำนึงถึงความจริงที่ต้องได้คะแนนสุดท้าย) คือ58%2140n=2140(n120)0.58210.42n21 =k=2140(40k)0.58k0.4240k 0.80695

  • ความน่าจะเป็นผู้เล่นได้รับจากจุดเล่นเป็นทวินาม0.074635 ตามเงื่อนไขแล้วความน่าจะเป็นที่ผู้เล่นชนะด้วยแต้มสองแต้มคือ58%2040(4020)0.58200.42200.07463558%0.5820.582+0.4220.656006

ดังนั้นความน่าจะเป็นโดยรวมของผู้เล่นชนะคือประมาณ58%0.80695+0.074635×0.656006 0.8559

ความน่าจะเป็นของผู้เล่นชนะเกมแรกนั้นมีค่าประมาณซึ่งไม่น่าเป็นไปได้ ความน่าจะเป็นของผู้เล่นชนะเกมสุดท้ายคือประมาณซึ่งไม่น่าเป็นไปได้ 58%150.85559150.096958%350.85559350.0043


2
ส่วน"ความน่าจะเป็นที่ผู้เล่นชนะด้วยแต้มสองแต้มคือ "58%0.582/(0.582+0.422)0.656006สามารถใช้คำอธิบายได้เนื่องจากเป็นส่วนที่ยากที่สุดในนี้ ปัญหา.
JiK

1
@JiK:หรือมากกว่านั้นหลังจากนั้นความน่าจะเป็นของจุดแตกหักคือดังนั้นความน่าจะเป็นที่ผู้เล่นที่ดีกว่าจะได้รับสองหน้ามากกว่าผู้เล่นที่แย่ลงคือ - ไม่เช่นนั้นพวกเขาจะกลับไปที่ตำแหน่งเดิม20200.582+0.4220.5820.582+0.422
Henry

3
คำตอบที่กระชับกว่าคำตอบยอดนิยม แต่ฉันเดาว่าเนื่องจากไม่มีรูปภาพและโพสต์ใน 12 ชั่วโมงต่อมาจะได้รับคะแนนน้อยกว่า 80 คะแนน = |
Attackfarm

17

ฉันไปกับคำตอบการคำนวณ นี่คือฟังก์ชัน R ที่จำลองเกมปิงปองโดยที่ผู้ชนะต้องชนะ 2 ข้อโต้แย้งเดียวคือความน่าจะเป็นที่คุณจะได้รับแต้ม มันจะคืนคะแนนสุดท้ายของเกมนั้น:

## data simulation function ----------------------------------------------------
sim_game <- function(pt_chance) {
  them <- 0
  you <- 0
  while (sum((them < 21 & you < 21), abs(them - you) < 2) > 0) {
    if (rbinom(1, 1, pt_chance) == 1) {
      you <- you + 1
      them <- them + 0
    } else {
      you <- you + 0
      them <- them + 1
    }
  }
  return(list(them = them, you = you))
}

ก่อนอื่นให้แน่ใจว่ามันใช้งานได้โดยการจำลอง 10,000 เกมที่คุณมีโอกาส 50% ที่จะชนะในแต่ละจุด เราควรสังเกตว่าเปอร์เซ็นต์การชนะของคุณอยู่ที่ประมาณ 50%:

## testing 10,000 games --------------------------------------------------------
set.seed(1839)
results <- lapply(1:10000, function(x) sim_game(.5))
results <- as.data.frame(do.call(rbind, results))
results$you_win <- unlist(results$you) > unlist(results$them)
mean(results$you_win)

สิ่งนี้จะส่งคืน. 4955 เกี่ยวกับสิ่งที่เราคาดหวัง ลองเชื่อมต่อ 58% ของคุณกัน:

## simulate 10,000 games -------------------------------------------------------
set.seed(1839)
results <- lapply(1:10000, function(x) sim_game(.58))
results <- as.data.frame(do.call(rbind, results))
results$you_win <- unlist(results$you) > unlist(results$them)
mean(results$you_win)

สิ่งนี้จะส่งคืน. 8606 ดังนั้นคุณต้องเกี่ยวกับโอกาสที่ 86.06% ในการชนะหนึ่งเกม

ตอนนี้เราสามารถจำลอง 35 ชุดของเกมและดูว่าคุณจะชนะทั้งหมด 35 ครั้ง:

## how often do you win all 35? ------------------------------------------------
set.seed(1839)
won_all_35 <- c()
for (i in 1:10000) {
  results <- lapply(1:35, function(x) sim_game(.58))
  results <- as.data.frame(do.call(rbind, results))
  results$you_win <- unlist(results$you) > unlist(results$them)
  won_all_35[i] <- mean(results$you_win) == 1
}
mean(won_all_35)

ผลตอบแทนนี้คือ. 0037 ซึ่งหมายความว่าคุณมีโอกาส 0.37% ที่จะชนะในอีก 35 เกม นี่ถือว่าเกมทั้งหมดและคะแนนทั้งหมดเป็นอิสระจากกัน คุณสามารถโปรแกรมที่ชัดเจนลงในฟังก์ชั่นด้านบนหากคุณต้องการ

หมายเหตุ: ฉันกำลังทำสิ่งนี้ในทันที ฉันแน่ใจว่ามีวิธีการเขียนโปรแกรมที่มีประสิทธิภาพมากกว่านี้


ลองpbetterwins <- pbinom(19,40,0.42) + dbinom(20,40,0.42) * 0.58^2/(0.58^2+0.42^2); pbetterwins; pbetterwins^35คำนวณโดยใช้การแจกแจงทวินาม ใกล้พอที่จะจำลองสถานการณ์ของคุณได้
เฮนรี่

15

เราควรสมมติว่าโอกาส 58% ในการชนะได้รับการแก้ไขและคะแนนนั้นมีความเป็นอิสระหรือไม่?

ผมเชื่อว่าคำตอบ Whuber เป็นหนึ่งที่ดีและเขียนได้งดงามและอธิบายว่าเมื่อพิจารณาก็คือว่าทุกจุดมีความเป็นอิสระจากหน้าหนึ่ง อย่างไรก็ตามฉันเชื่อว่าในทางปฏิบัติมันเป็นเพียงจุดเริ่มต้นที่น่าสนใจ (เชิงทฤษฎี / อุดมคติ) ฉันจินตนาการว่าในความเป็นจริงแล้วคะแนนไม่ได้แยกจากกันและอาจทำให้ฝ่ายตรงข้ามเพื่อนร่วมงานของคุณชนะมากขึ้นหรือน้อยลงอย่างน้อยหนึ่งครั้งจาก 50 ครั้ง

ตอนแรกฉันจินตนาการว่าการพึ่งพาคะแนนจะเป็นกระบวนการแบบสุ่มนั่นคือไม่ได้ควบคุมโดยผู้เล่น (เช่นเมื่อใครชนะหรือแพ้การเล่นที่แตกต่างกัน) และสิ่งนี้ควรสร้างการกระจายตัวของผลลัพธ์ที่เป็นประโยชน์มากขึ้น จุดนี้หนึ่งในห้าสิบ

ความคิดที่สองอย่างไรก็ตามอาจแนะนำสิ่งที่ตรงกันข้าม : ความจริงที่ว่าคุณ "บรรลุ" สิ่งที่มีโอกาส 9.7% อาจให้ผลประโยชน์ (แต่เพียงเล็กน้อยเท่านั้น) จากมุมมองแบบเบย์ไปสู่ความคิดเกี่ยวกับกลไกที่เป็นที่นิยม ชนะความน่าจะเป็นสูงกว่า 85% ในการชนะเกม (หรืออย่างน้อยก็ทำให้มีโอกาสน้อยกว่าที่ฝ่ายตรงข้ามของคุณจะมีความน่าจะเป็นสูงกว่า 15% ตามที่กล่าวไว้ในสองย่อหน้าก่อนหน้า) ตัวอย่างเช่นอาจเป็นไปได้ว่าคุณทำคะแนนได้ดีกว่าเมื่อตำแหน่งของคุณไม่ค่อยดี (มันไม่แปลกสำหรับคนที่ทำคะแนนแตกต่างกันมากในการแข่งขันคะแนนในการสนับสนุนหรือต่อต้านมากกว่าคะแนนปกติ) คุณสามารถปรับปรุงการประมาณการของ 85% โดยคำนึงถึงพลวัตเหล่านี้และคุณมีโอกาสมากกว่า 85% ที่จะชนะเกม

อย่างไรก็ตามมันอาจผิดมากที่จะใช้สถิติคะแนนง่าย ๆ นี้เพื่อให้คำตอบ ใช่คุณสามารถทำได้ แต่จะไม่ถูกต้องเนื่องจากสถานที่ (ความเป็นอิสระของคะแนน) ไม่จำเป็นต้องถูกต้องและมีอิทธิพลต่อคำตอบอย่างมาก สถิติ 42/58 เป็นข้อมูลเพิ่มเติมแต่เราไม่ทราบวิธีการใช้งานอย่างถูกต้อง (ความถูกต้องของแบบจำลอง) และการใช้ข้อมูลอาจให้คำตอบด้วยความแม่นยำสูงซึ่งไม่มีอยู่จริง


ตัวอย่าง

ตัวอย่าง: แบบจำลองที่สมเหตุสมผลพอ ๆ กันกับผลลัพธ์ที่ต่างกันโดยสิ้นเชิง

ดังนั้นคำถามสมมุติ (สมมติว่าเป็นอิสระและรู้ทฤษฎีความน่าจะเป็นสำหรับประเด็นเหล่านี้) เป็นที่น่าสนใจและสามารถตอบได้ในตัวเอง แต่จะน่ารำคาญและสงสัย / เหยียดหยาม; คำตอบของกรณีสมมุตินั้นไม่ได้เกี่ยวข้องกับปัญหาเดิมของคุณมากนักและอาจเป็นสาเหตุที่นักสถิติ / นักวิทยาศาสตร์ข้อมูลที่ บริษัท ของคุณไม่เต็มใจที่จะให้คำตอบตรงๆ

เพียงเพื่อให้เป็นตัวอย่างทางเลือก (ไม่จำเป็นต้องดีกว่า) ที่ให้คำสั่งที่สับสน (เคาน์เตอร์ -) 'Q: ความน่าจะเป็นที่จะชนะทั้งหมด 50 เกมคืออะไรถ้าฉันชนะ 15 เกม? หากเราไม่เริ่มคิดว่า 'คะแนนคะแนน 42/58 มีความเกี่ยวข้องหรือให้การคาดการณ์ที่ดีกว่า' จากนั้นเราจะเริ่มทำนายความน่าจะเป็นของคุณที่จะชนะเกมและคาดการณ์ว่าจะชนะอีก 35 เกมจากการชนะก่อนหน้านี้ 15 เกม:

  • ด้วยเทคนิคแบบเบย์สำหรับความเป็นไปได้ในการชนะเกมของคุณนี่หมายถึง:ซึ่งประมาณ 31% สำหรับเครื่องแบบก่อนหน้า f (x) = 1 ถึงแม้ว่ามันอาจจะมองโลกในแง่ดีเกินไปก็ตาม แต่ถ้าคุณพิจารณาการกระจายเบต้าด้วยระหว่าง 1 ถึง 5 คุณจะได้รับ: β=αp(win another 35 | after already 15)=01f(p)p5001f(p)p15β=α

โอกาสหลังเป็นหน้าที่ของการกระจายเบต้าก่อนหน้า

ซึ่งหมายความว่าฉันจะไม่มองโลกในแง่ร้ายเช่นเดียวกับการทำนาย 0.432% ตรงไปตรงมาความจริงที่ว่าคุณชนะ 15 เกมแล้วควรยกระดับความน่าจะเป็นที่คุณจะชนะในอีก 35 เกม


หมายเหตุขึ้นอยู่กับข้อมูลใหม่

จากข้อมูลของคุณสำหรับเกม 18 เกมฉันลองปรับรุ่นเบต้า - ทวินาม การเปลี่ยนแปลงและและการคำนวณความน่าจะเป็นที่จะได้คะแนน i, 21 (ผ่าน i, 20) หรือคะแนน 20,20 จากนั้นรวมบันทึกของพวกเขาเพื่อ คะแนนบันทึกความน่าจะเป็นบีตา= ( 1 - μ ) να=μνβ=(1μ)ν

มันแสดงให้เห็นว่าพารามิเตอร์สูงมาก(การกระจายตัวเล็กน้อยในการแจกแจงเบตาพื้นฐาน) มีความเป็นไปได้สูงกว่าและอาจมีการกระจายตัวเล็กน้อย นั่นหมายความว่าข้อมูลไม่แนะนำให้ใช้พารามิเตอร์ตัวแปรสำหรับความน่าจะเป็นที่จะได้รับคะแนนแทนที่จะดีกว่าโอกาส 58% ที่คุณจะชนะแน่นอน ข้อมูลใหม่นี้ให้การสนับสนุนเป็นพิเศษสำหรับการวิเคราะห์ของ Whuber ซึ่งจะให้คะแนนตามการกระจายแบบทวินาม แต่แน่นอนว่านี่ยังถือว่าว่าโมเดลนั้นเป็นแบบสแตติกและคุณและเพื่อนร่วมงานของคุณจะทำงานตามแบบจำลองแบบสุ่ม (ซึ่งทุกเกมและทุกจุดมีความเป็นอิสระ)ν

การประเมินความเป็นไปได้สูงสุดสำหรับพารามิเตอร์ของการแจกแจงแบบเบต้าแทนที่โอกาสชนะที่คงที่ 58%:

การประมาณความน่าจะเป็นสูงสุดสำหรับการกระจายเบต้าของโอกาสชนะ 58p

ถาม: ฉันจะอ่านกราฟ "LogLikelihood สำหรับพารามิเตอร์ mu และ nu" ได้อย่างไร

A:

  • 1) การประเมินความน่าจะเป็นสูงสุด (MLE) เป็นวิธีที่เหมาะสมกับแบบจำลอง ความน่าจะเป็นหมายถึงความน่าจะเป็นของข้อมูลที่กำหนดพารามิเตอร์ของแบบจำลองจากนั้นเราจะค้นหาแบบจำลองที่ทำให้เกิดประโยชน์สูงสุด มีปรัชญาและคณิตศาสตร์มากมายอยู่เบื้องหลัง
  • 2)พล็อตเป็นวิธีการคำนวณแบบสันหลังยาวเพื่อไปยัง MLE ที่เหมาะสม ฉันแค่คำนวณค่าที่เป็นไปได้ทั้งหมดบนกริดและดูว่า Valeu คืออะไร หากคุณต้องการให้เร็วขึ้นคุณสามารถใช้วิธีการคำนวณ / อัลกอริทึมซ้ำที่ค้นหาวิธีที่เหมาะสมหรืออาจเป็นไปได้ว่าอาจมีวิธีการวิเคราะห์โดยตรง
  • 3)พารามิเตอร์และเกี่ยวข้องกับการแจกแจงเบต้าhttps://en.wikipedia.org/wiki/Beta_distributionซึ่งใช้เป็นแบบจำลองสำหรับ p = 0.58 (เพื่อให้ไม่คงที่ แต่จะแตกต่างกันไปตามเวลา เวลา). แบบจำลอง 'beta-p' นี้ถูกรวมเข้ากับแบบจำลองแบบทวินามเพื่อรับการคาดคะเนความน่าจะเป็นที่จะได้คะแนนที่แน่นอน มันเกือบจะเหมือนกับการกระจายตัวแบบเบต้า - ทวินาม คุณจะเห็นว่าสิ่งที่ดีที่สุดคือซึ่งไม่น่าแปลกใจ ค่าสูง (หมายถึงการกระจายตัวต่ำ) ฉันคิด / คาดว่าอย่างน้อยก็มีการกระจายมากเกินไปν μ 0.6 νμνμ0.6ν

รหัส / การคำนวณสำหรับกราฟ 1

posterior <- sapply(seq(1,5,0.1), function(x) {
    integrate(function(p) dbeta(p,x,x)*p^50,0,1)[1]$value/
    integrate(function(p) dbeta(p,x,x)*p^15,0,1)[1]$value
  }
)

prior <- sapply(seq(1,5,0.1), function(x) {
  integrate(function(p) dbeta(p,x,x)*p^35,0,1)[1]$value
}
)

layout(t(c(1,2)))


plot(  seq(1,5,0.1), posterior,
       ylim = c(0,0.32),
       xlab = expression(paste(alpha, " and ", beta ," values for prior beta-distribution")),
       ylab = "P(win another 35| after already 15)"
)
title("posterior probability assuming beta-distribution")

plot(  seq(1,5,0.1), prior,
       ylim = c(0,0.32),
       xlab = expression(paste(alpha, " and ", beta ," values for prior beta-distribution")),
       ylab = "P(win 35)"
)
title("prior probability assuming beta-distribution")

รหัส / การคำนวณสำหรับกราฟ 2

library("shape")

# probability that you win and opponent has kl points
Pwl <- function(a,b,kl,kw=21) {
  kt <- kl+kw-1
  Pwl <- choose(kt,kw-1) * beta(kw+a,kl+b)/beta(a,b)
  Pwl
}

# probability to end in the 20-20 score
Pww <- function(a,b,kl=20,kw=20) {
  kt <- kl+kw
  Pww <- choose(kt,kw) * beta(kw+a,kl+b)/beta(a,b)
  Pww
}

# probability that you lin with kw points
Plw <- function(a,b,kl=21,kw) {
  kt <- kl+kw-1
  Plw <- choose(kt,kw) * beta(kw+a,kl+b)/beta(a,b)
  Plw
}

# calculation of log likelihood for data consisting of 17 opponent scores and 1 tie-position 
# parametezation change from mu (mean) and nu to a and b 
loglike <- function(mu,nu) { 
  a <- mu*nu
  b <- (1-mu)*nu
  scores <- c(18, 17, 11, 13, 15, 15, 16, 9, 17, 17, 13, 8, 17, 11, 17, 13, 19) 
  ps <- sapply(scores, function(x) log(Pwl(a,b,x)))
  loglike <- sum(ps,log(Pww(a,b)))
  loglike
}

#vectors and matrices for plotting contour
mu <- c(1:199)/200
nu <- 2^(c(0:400)/40)
z <- matrix(rep(0,length(nu)*length(mu)),length(mu))
for (i in 1:length(mu)) {
  for(j in 1:length(nu)) {
    z[i,j] <- loglike(mu[i],nu[j])
  }
}

#plotting
levs <- c(-900,-800,-700,-600,-500,-400,-300,-200,-100,-90,-80,-70,-60,-55,-52.5,-50,-47.5)
# contour plot
filled.contour(mu,log(nu),z,
               xlab="mu",ylab="log(nu)",         
               #levels=c(-500,-400,-300,-200,-100,-10:-1),
               color.palette=function(n) {hsv(c(seq(0.15,0.7,length.out=n),0),
                                              c(seq(0.7,0.2,length.out=n),0),
                                              c(seq(1,0.7,length.out=n),0.9))},
               levels=levs,
               plot.axes= c({
                 contour(mu,log(nu),z,add=1, levels=levs)
                 title("loglikelihood for parameters mu and nu")
                 axis(1)
                 axis(2)
               },""),
               xlim=range(mu)+c(-0.05,0.05),
               ylim=range(log(nu))+c(-0.05,0.05)
)

2
+1 ฉันขอขอบคุณมุมมองใหม่ แต่ฉันจะท้าทายการยืนยันว่าการพึ่งพาจุดต่าง ๆ ทำให้มีโอกาสมากขึ้นที่ฝ่ายตรงข้ามจะชนะในอีก 35 เกม ในความเป็นจริงมันสามารถไปทางใดทางหนึ่ง กลไกที่เป็นไปได้สำหรับข้อสรุปที่ตรงกันข้ามคือว่าคุณแข็งแกร่งกว่าขอบ 58-42 ในจุดที่แนะนำและเมื่อเรียกใช้คุณสามารถชุมนุมเพื่อเอาชนะเกมใด ๆ แม้ว่าจะอยู่ด้านหลังก็ตาม ปัญหาที่แท้จริงในการไม่สมมติความเป็นอิสระเกี่ยวข้องกับวิธีการสร้างแบบจำลองที่ไม่เป็นอิสระ
whuber

@whuber คุณพูดถูก ฉันยังเถียงด้วยวิธีใดวิธีหนึ่ง 1) ความคิดแรกของฉันไปในทิศทางเดียวการพึ่งพาอาศัยจะเป็นแบบสุ่มเช่นผู้คนมีช่วงเวลาที่ไม่ดีและช่วงเวลาที่แย่และไม่ดีที่ควบคุมไม่ได้และสิ่งนี้ฉันจินตนาการว่าจะสร้างการกระจายตัวที่กว้างขึ้นของผลลัพธ์ 2) อย่างไรก็ตามจากนั้นฉันก็นึกถึงหลักการของ Bayesian และวิธีที่เกม 15 เกมที่ชนะอาจมีผลต่อการวิเคราะห์ (อย่างน้อยคำถามในโพสต์นั้นเป็นสถานการณ์ที่แตกต่างจากคำถามในหัวข้อ) และอาจมีกลไกที่เป็นประโยชน์ต่อ ผู้เล่นที่แข็งแกร่ง
Martijn Weterings

1
ในครึ่งหลังของโพสต์ของฉันฉันให้เพียงตัวอย่างเดียวซึ่งระบุว่าความน่าจะเป็นที่จะชนะควรสูงกว่า 86% แต่ในขณะที่คณิตศาสตร์ทั้งหมดนี้ฟังดูมีความแม่นยำมาก แต่ในความเป็นจริงเราไม่แน่ใจจริง ๆ เนื่องจากแบบจำลองของเราไม่ดี (ด้วยจำนวนที่มากขึ้นการลดความแม่นยำข้อมูลส่วนตัว) ที่ได้รับจากข้อมูลจำนวนเล็กน้อยนี้
Martijn Weterings

2
@ เมื่อฉันได้แก้ไขคำตอบของฉัน นั่นเป็นความคิดเห็นที่ดีและฉันหวังว่าจะได้คำตอบที่ชัดเจนยิ่งขึ้นในตอนนี้
Martijn Weterings

1
2)พล็อตเป็นวิธีการคำนวณแบบสันหลังยาวเพื่อไปยัง MLE ที่เหมาะสม ฉันแค่คำนวณค่าที่เป็นไปได้ทั้งหมดบนกริดและดูว่า Valeu คืออะไร หากคุณต้องการให้เร็วขึ้นคุณสามารถใช้วิธีการคำนวณ / อัลกอริทึมซ้ำที่ค้นหาวิธีที่เหมาะสมหรืออาจเป็นไปได้ว่าอาจมีวิธีการวิเคราะห์โดยตรง
Martijn Weterings

12

ความพยายามมากสามารถใช้กับโมเดลที่สมบูรณ์แบบได้ แต่บางครั้งแบบจำลองที่ไม่ดีก็ดีกว่า และไม่มีสิ่งใดบอกว่าแบบจำลองที่ไม่ดีเช่นทฤษฎีขีด จำกัด กลาง - ทุกอย่างเป็นเส้นโค้งปกติ

เราจะไม่สนใจ "การทำงานล่วงเวลา" เราจะจำลองผลรวมของคะแนนแต่ละคะแนนเป็นโค้งปกติ เราจะจำลองรูปแบบการเล่น 38 รอบและใครก็ตามที่มีคะแนนมากที่สุดชนะแทนที่จะเป็นคนแรกถึง 20 เกมนี้คล้ายกับเกมที่ฉลาดมาก!

และสุ่มสี่สุ่มห้าฉันจะอ้างว่าเราเข้าใกล้คำตอบที่ถูก

XX

E(X)0.58Var(X)E(X)(1E(X))0.24

Xii=138Xi

E(i=138Xi)38E(X)22.04

Var(i=138Xi)X9.12

SD(i=138Xi)38Var(X))3.02

i=138Xi<19i=138Xi>19

22.04193.021.0115.62%

1%

58%58%


@Yakk, heck ที่ 38 มาจากไหน? นอกจากนี้ฉันค่อนข้างแน่ใจว่า var (38 * x) = 38 ^ 2 * var (X) ไม่ใช่ 38 * var (X) "การคำนวณกลับดีมากของคุณ" ค้างไว้หลังจากที่คุณแก้ไขข้อผิดพลาดนั้นอย่างไร?
use_norm_approx

@use_ ฉันใช้เลอะเทอะ 38 * X เป็น "รวม 38 อิสระ Xs" ไม่ใช่ "หนึ่ง X คูณ 38" 38 มาจาก "ผู้ใดชนะมากกว่า 19 ชัยชนะก่อนชนะเกม" ฉันสามารถใช้ 39 เกมและเกมแรก> 19.5 แทน; ผลลัพธ์จะคล้ายกัน
Yakk

3

จากการจำลองดูเหมือนว่าความน่าจะเป็นในการชนะเกมใด ๆ จะอยู่ที่ประมาณ 85.5%

ความน่าจะเป็นที่จะชนะ 2 เท่า (ซึ่งเป็นวิธีที่ฉันอ่านชื่อ แต่ดูเหมือนจะไม่เป็นสิ่งที่คุณถาม) ประมาณ 10.1%

เรียกใช้รหัสด้านล่าง

set.seed(328409)
sim.game <- function(p)
{
 x1 = 0 
 x2 = 0 
 while( (max(c(x1,x2)) < 21) | abs(x1-x2)<2  ) 
 {
   if(runif(1) < p) x1 = x1 + 1 else x2 = x2 + 1 
 }
 return( c(x1,x2) ) 
}

S <- matrix(0, 1e5, 2)
for(k in 1:1e5) S[k,] <- sim.game(0.58)

mean( (S[,1]-S[,2]) == 2 ) #chance of winning by 2
mean(S[,1]>S[,2]) #chance of winning

1
สิ่งนี้ได้ใกล้เคียงกับโซลูชันการวิเคราะห์ของ Whuber มาก: dbinom(20,40,0.58)*0.58^2/(1-2*0.58+2*0.58^2)+dbinom(20,39,0.58)*0.58ให้ 10.04%
Martijn Weterings
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.