58 % 확률로 포인트를 획득 한 경우 핑퐁 게임에서 21로 이기면 2로 이길 확률은 얼마입니까?


90

50 명의 탁구 게임 (21 점을 이기고 2 점을 이기고 있음) 중 50 명을 모두 이길 것입니다. 지금까지 15 게임을했고 평균적으로 58 %를 이겼습니다. 포인트, 그리고 지금까지 모든 게임에서 이겼습니다. 따라서 58 %의 확률로 이길 가능성이 있고 42 %의 확률로 이길 가능성이 궁금합니다. 게임에서 이길 확률은 얼마입니까? 차이 % 확률에 꽂을 수있는 공식이 있습니까?

우리는 온통 구글을 검색하고 회사의 데이터 과학자들에게 물었지만 정확한 답을 찾지 못했습니다.

편집 : 와우, 나는 철저한 답변으로 날아갔습니다. 정말 감사합니다 !!! 사람들이 궁금한 경우 내 베팅이 어떻게 진행되는지에 대한 업데이트가 있습니다. 이제 50 게임 중 18 게임을 이겼으므로 32 게임을 더 이겨야합니다. 나는 모든 포인트의 58.7 %를 얻었고, 따라서 상대는 41.3 %의 포인트를 얻었습니다. 상대의 표준 편차는 3.52이고 평균 점수는 14.83이며 평균 점수는 15.50입니다. 아래는 지금까지 각 게임의 점수 스크린 샷입니다. 사람들이 관심이 있다면 베팅이 진행되는 동안 계속 업데이트 할 수 있습니다.

편집 # 2 : 불행히도 우리는 몇 가지 더 많은 게임을 할 수있었습니다. 아래는 결과입니다. 점수의 스크린 샷이 없어 그림을 계속 교체하려고합니다.

최종 업데이트 : 마침내 게임 # 28에서 동료에게졌습니다. 그는 나를 21-13으로 이겼다. 당신의 모든 도움에 감사드립니다!

여기에 이미지 설명을 입력하십시오


11
거기 이다 공식은 :에 대한 그 형식에있어 모든 21 개 개의 용어 (큰 계수, 최대가 초과 : 배 정도 20 다항식 ). 모든 점수가 독립적 인 경우, 다음 35 경기에서 이길 확률은 입니다. P 21 / ( 1 - 2 P + 2 P 2 ) 1.6 × 10 16 0.432 %p=0.58,p21/(12p+2p2)1.6×10160.432%
whuber

8
나는 모든 포인트 (및 게임)가 서로 독립적이라는 것을 의심한다 (다양한 이유로). 비 독립성은 답변에 큰 영향을 줄 수 있습니다.
Mark L. Stone

8
그것이 내가 한 게임과 같다고 가정 할 때, 나는 봉사하는 것이 유리하다는 것을 기억합니다. "핫 핸드"에 대한 모든 것을 무시하면 서빙 할 때 68 %, 그렇지 않을 때 48 %를 이길 수 있습니다. 이는 모든 확률을 왜곡시킵니다. 이 58 %로 고르게 경우에도 우리는 따라서 충분한 정보를 가지고 있지 않습니다 ..
한스 올슨

5
그냥 코멘트-21 점? 탁구는 2001 년에 한 번에 한 플레이어 당 2 인분 씩 11 점 형식으로 최고 7 경기로 전환했습니다.
rcgldr

5
나는 ~ 5 게임 정도 마다이 내기에 대한 업데이트를 계속 게시 할 것입니다. 안타깝게도 일과 후에 만 ​​게임을하기 때문에 주당 몇 차례 만 게임을합니다.
richard

답변:


119

게임이 최소한 2 점의 마진으로 이기기 위해 "시간외"로 갈 것이라는 전망으로 인해 분석이 복잡합니다. (그렇지 않으면 https://stats.stackexchange.com/a/327015/919에 표시된 솔루션만큼 간단합니다 .) 문제를 시각화하고이를 사용하여 쉽게 계산할 수있는 기여로 나누는 방법을 보여 드리겠습니다. 대답. 약간 지저분하지만 결과는 관리 가능합니다. 시뮬레이션은 정확성을 나타냅니다.


하자 점을 승리의 확률합니다. p 모든 점이 독립적이라고 가정하십시오. 초과 근무를하지 않거나 ( ) 초과 근무를한다고 가정 할 때 상대방이 몇 점을 가졌는지에 따라 게임에서 이길 확률은 (겹치지 않는) 이벤트로 분류 될 수 있습니다. . 후자의 경우 어떤 단계에서 점수가 20-20임을 알 수 있습니다.0,1,,19

멋진 시각화가 있습니다. 게임 중 점수를 포인트 여기서 는 점수이고 는 상대 점수입니다. 게임이 전개됨에 따라 점수는 에서 시작하는 1 사분면의 정수 격자를 따라 이동 하여 게임 경로를 만듭니다. 당신 중 하나가 이상을 기록하고 이상의 마진을 가질 때 처음 종료됩니다 . 이러한 승점은 게임 경로가 끝나야하는이 프로세스의 "흡수 경계"라는 두 세트의 포인트를 형성합니다.x y ( 0 , 0 ) 21 2(x,y)xy(0,0)212

그림

이 그림은 초과 근무 시간 (경고 손실)과 함께 흡수 경계 (무한 위와 오른쪽으로 확장)의 일부를 보여줍니다.

세어 보자. 게임으로 종료 할 수있는 방법의 수 상대에 대한 포인트의 정수 격자 별개의 경로의 수 초기 점수에서 시작 점수 끝에서 두 번째 점수에 종료하고 . 이러한 경로는 게임에서이긴 포인트 중 어느 것에 의해 결정됩니다 . 따라서 숫자 의 크기 의 하위 집합에 해당 하며 이 있습니다. 이러한 각 경로에서 당신은 포인트를 얻었고 ( 매번 독립적 인 확률로 , 최종 포인트를 세어) 상대는 이겼습니다.( x , y ) ( 0 , 0 ) ( 20 , y ) 20 + y 20 1 , 2 , , 20 + yy(x,y)(0,0)(20,y)20+y201,2,,20+y(20+y20)21py 점 ( 매번 독립 확률이 인 경우), 와 연관된 경로 는1py

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

마찬가지로 20-20 타이를 나타내는 방법이 에 도달 합니다. 이 상황에서는 확실한 승리가 없습니다. 공통 컨벤션을 채택하여 승리 가능성을 계산할 수 있습니다. 지금까지 득점 한 점수를 잊고 포인트 차이를 추적하기 시작합니다. 게임의 차이는 이며 처음 또는 도달하면 종료 되며 반드시 경로를 따라 을 통과해야 합니다. 보자 는 차동 때 이길 수있는 기회가 될 .(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+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


빠른 시뮬레이션으로 이와 같은 작업을 확인하고 싶습니다. 다음은 R1 초에 수만 개의 게임을 생성하는 코드입니다. 그것은 게임이 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)

내가 이것을 실행했을 때, 당신은 10,000 번의 반복 중에서 8,570 건을 이겼습니다. 이러한 결과를 테스트하기 위해 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, "."))

는 어떻게 분리되어 있습니까? 반복 구성하지 않습니까? 예를 들어, 경우 이항 계수는 입니다. 때 다음 . 그러나 후자의 구성 중 하나는 에서 찾은 것과 정확히 일치합니다 (즉, 플레이어의 경우 21 점, 상대방의 경우 0). 교차로의 확률을 빼면 안됩니까? 이것이 처음에 나를 막 았던 것입니다. f(y)y=01y=1(2120)=21y=0
Easymode44

1
@ whuber : 훌륭합니다. 또한 r code구현 공개 의 "좋은 시각화"부분 일까요? 많은 감사합니다.
Maximilian

7
@Stefan 나의 값은 정확한 합리적 산술 ( 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

  • 점 플레이어가 점에서 을 얻을 확률 은 이항 입니다. 이에 따라 플레이어가 2 점 마진으로 이길 확률 은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 : ~ 이상의 평등에 도달하면 결정적인 포인트가 될 확률은 이므로 더 나은 플레이어가 더 나쁜 플레이어보다 2 배 앞서 나올 확률은 -그렇지 않으면 같은 위치로 돌아갑니다20200.582+0.4220.5820.582+0.422
Henry

3
최고 답변보다 훨씬 더 간결한 답변이지만 사진이없고 12 시간 후에 게시 된 후 80 표를 얻지 못한 것 같습니다. = |
Attackfarm

17

나는 계산 답을 가지고 갔다. 다음은 승자가 2로이기는 탁구 게임을 시뮬레이트하는 R 함수입니다. 유일한 논점은 당신이 포인트를 이길 확률입니다. 해당 게임의 최종 점수를 반환합니다.

## 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))
}

먼저 각 포인트에서 50 %의 확률로 승리하는 10,000 개의 게임을 시뮬레이션하여 작동하는지 확인하십시오. 귀하의 승리 율은 약 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을 반환합니다. 이는 다음 35 개 게임에서 약 0.37 %의 확률로 이길 수 있음을 의미합니다. 이것은 모든 게임과 모든 포인트가 서로 독립적이라고 가정합니다. 원하는 경우 위의 함수에 명시 적으로 프로그래밍 할 수 있습니다.

참고 : 나는 이것을 즉시하고 있습니다. 이것을 프로그래밍하는 데 더 계산적으로 효율적인 방법이 있다고 확신합니다.


pbetterwins <- pbinom(19,40,0.42) + dbinom(20,40,0.42) * 0.58^2/(0.58^2+0.42^2); pbetterwins; pbetterwins^35이항 분포를 사용하여 계산을 시도하십시오 . 시뮬레이션에
Henry

15

우리는 이길 확률이 58 %이고 고정되어 있다고 가정해야합니까?

Whuber의 답변은 좋은 답변이며 모든 포인트가 다음 포인트와 독립적이라는 점을 고려할 때 아름답게 작성되고 설명되었습니다 . 그러나 실제로는 흥미로운 출발점이라고 생각합니다 (이론적 / 이상화). 실제로 포인트가 서로 독립적이지 않다고 생각하면 동료 상대가 50 명 중 한 번 이상 이길 가능성이 높아질 수 있습니다.

처음에는 포인트의 의존성이 임의의 프로세스가 될 것이라고 생각했습니다 . 즉, 플레이어가 제어하지 않는 것입니다 (예 : 플레이어가 다르게이기거나 잃어버린 경우). 이것은 50 점 만점입니다.

그러나 두 번째 생각은 반대를 암시 할 수 있습니다. 9.7 %의 확률로 무언가를 이미 "달랐다"는 사실은 베이지안의 관점에서 당신을 이끌어내는 메커니즘을 선호하는 것에 대한 아이디어에 약간의 이익을 줄 수 있습니다. 85 % 이상의 확률로 게임에서 이길 수 있습니다 (또는 적어도 앞의 두 단락에서 논한 것처럼 상대방이 15 %보다 훨씬 높은 확률을 갖도록하십시오). 예를 들어, 자신의 위치가 좋지 않을 때 더 나은 점수를받을 수 있습니다 (일반 점수보다 호의 또는 반대 점수에서 다른 점수를받는 사람들에게는 이상하지 않습니다). 이러한 역학을 고려하여 85 %의 추정치를 향상시킬 수 있으며 게임에서 이길 확률이 85 % 이상일 수 있습니다.

어쨌든 이 간단한 점 통계 를 사용하여 답을 제공하는 것은 매우 잘못 될 수 있습니다 . 그렇습니다.하지만 구내 (포인트의 독립성)가 반드시 정확하지 않고 대답에 큰 영향을 미치기 때문에 옳지 않습니다 . 42/58 통계는 더 많은 정보 이지만이를 사용하는 방법 (모델의 정확성)을 잘 알지 못하며 정보 를 사용하면 실제로 가지고 있지 않은 높은 정밀도로 답을 제공 할 수 있습니다.


예 : 완전히 다른 결과를 가진 동등하게 합리적인 모델

따라서 가설적인 질문 (독립적 인 점과이 점에 대한 알려진 이론적, 확률을 가정)은 그 자체로 흥미롭고 대답 할 수 있지만 성 가시고 회의적이거나 냉소적입니다. 가상의 사례에 대한 대답은 근본적 / 원래 문제와 관련이 없으며 회사의 통계 학자 / 데이터 과학자가 정답을 제공하기를 꺼리는 이유 일 수 있습니다.

혼란스러운 (카운터-) 진술 을 제공하는 대안 적 예를 (필수적으로 나쁘지 않은) 제시 하기 위해 'Q : 내가 이미 15를 이겼다면 총 50 게임을 모두 이길 확률은 얼마입니까?' 우리가 '포인트 점수 42/58이 관련성이 있거나 우리에게 더 나은 예측을 제공한다'고 생각하지 않는다면, 우리는 게임에서 이길 확률을 예측하고 이전에 얻은 승리만을 기반으로 다른 35 게임을 이길 것으로 예측하기 시작합니다. 15 게임 :

  • 게임에서 이길 확률에 대한 베이지안 기법을 사용하면 다음과 같은 의미가됩니다. 이는 너무 낙관적 일 수 있지만 균일 한 이전 f (x) = 1 인 경우 약 31 %입니다. 그러나 1과 5 사이의 사용하는 베타 배포판을 고려하면 다음과 같이됩니다.p(win another 35 | after already 15)=01f(p)p5001f(p)p15β=α

이전 베타 배포의 기능으로 후부 기회

즉, 0.432 %의 단순한 예측만큼 비관적이지는 않을 것 입니다. 이미 15 경기에서 이겼다는 사실은 다음 35 경기에서 이길 확률을 높여야 합니다.


새로운 데이터를 기반으로 한 메모

18 게임에 대한 데이터를 기반으로 베타 이항 모델을 피팅하려고했습니다. 가변 및 및 (I 통해 20) I, 21 점에 도달하거나 20,20 점수는 다음에 자신의 기록을 합계 확률을 계산 로그 우도 점수.α=μνβ=(1μ)ν

이는 매우 높은 파라미터 (기본 베타 분포에서 적은 분산)가 더 높은 가능성을 가지며 따라서 거의 없음을 보여줍니다 . 즉,이 데이터는 고정 된 58 %의 이길 확률이 아니라 포인트를 이길 확률에 변수 매개 변수를 사용하는 것이 더 낫다는 것을 의미하지는 않습니다. 이 새로운 데이터는 Whuber의 분석에 대한 추가 지원을 제공하며 이항 분포를 기반으로 점수를 가정합니다. 그러나 물론 이것은 여전히 ​​모델이 정적이며 또한 모든 게임과 포인트가 독립적 인 임의의 모델에 따라 사용자와 동료가 행동한다고 ​​가정합니다.ν

고정 된 58 % 당첨 확률 대신 베타 분포의 매개 변수에 대한 최대 가능성 추정 :

58p 당첨 확률의 베타 배포에 대한 최대 가능성 추정

Q : "LogLikelihood for parameters mu and nu"그래프를 어떻게 읽습니까?

에이:

  • 1) 최대 우도 추정 (MLE)은 모형에 적합합니다. 우도는 모형의 매개 변수가 주어진 데이터의 확률을 의미하며이를 최대화하는 모형을 찾습니다. 그 뒤에 많은 철학과 수학이 있습니다.
  • 2) 줄거리는 최적의 MLE에 도달하기위한 게으른 계산 방법입니다. 그리드에서 가능한 모든 값을 계산하고 valeu가 무엇인지 확인합니다. 더 빨라야하는 경우 최적을 찾는 계산 반복 방법 / 알고리즘을 사용하거나 직접 분석 솔루션이있을 수 있습니다.
  • 3) 매개 변수 및 는 p = 0.58의 모델로 사용되는 베타 배포판 https://en.wikipedia.org/wiki/Beta_distribution 과 관련이 있습니다 (고정되지 않고 시간에 따라 다름). 시각). 이 모형 '베타 -p'는 이항 모형과 결합하여 확률을 예측하여 특정 점수에 도달하는 것입니다. 베타 이항 분포와 거의 동일합니다. 최적의 값은 이며 놀라운 것은 아닙니다. 값 (저 분산을 의미한다)이 높다. 나는 적어도 약간의과 분산을 상상 / 예상했다.μνμ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) 그러나 나는 베이지안 원리와 15 원 게임이 어떻게 분석에 영향을 미칠 수 있는지에 대해 생각하고 있었고 (적어도 게시물의 질문은 제목의 질문과는 다른 상황입니다.) 더 강한 선수.
Martijn Weterings

1
필자의 후반부에서는 승리 확률이 86 %보다 커야한다고 주장하는 한 가지 예를 제시합니다. 그러나이 모든 수학은 매우 정확하게 들리지만 실제로는 적은 양의 정보가 주어지면 모델이 나쁘고 (정확한 감소, 주관적 정보가 많이 있기 때문에) 확실하지 않습니다.
Martijn Weterings

2
@ whuber 내 답변을 편집했습니다. 그것은 좋은 의견이었으며, 지금은 대답에서 더 명확 해지기를 바랍니다.
Martijn Weterings

1
2) 줄거리는 최적의 MLE에 도달하기위한 게으른 계산 방법입니다. 그리드에서 가능한 모든 값을 계산하고 valeu가 무엇인지 확인합니다. 더 빨라야하는 경우 최적을 찾는 계산 반복 방법 / 알고리즘을 사용하거나 직접 분석 솔루션이있을 수 있습니다.
Martijn Weterings

12

완벽한 모델에 많은 노력을 기울일 수 있습니다. 그러나 때로는 나쁜 모델이 더 좋습니다. 그리고 중앙 한계 정리와 같은 나쁜 모델은 없습니다. 모든 것이 정상적인 곡선입니다.

"시간외"는 무시합니다. 개별 점의 합을 정규 곡선으로 모델링합니다. 우리는 38 라운드를 플레이하며 1 ~ 20 점 대신에 가장 많은 포인트를 얻은 사람을 모델링합니다. 이것은 매우 유사한 게임입니다!

그리고 맹목적으로, 우리가 정답에 가까워 졌다고 주장 할 것입니다.

점의 분포로 하자 . 점을 얻으면 값은 1이고 그렇지 않으면 0입니다.XX

따라서 = ~ 및 = = ~ 입니다.E(X)0.58Var(X)E(X)(1E(X))0.24

경우 독립 포인트는 다음 당신이 38 라운드를 재생 후 얻는 점이다.Xii=138Xi

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

Var(i=138Xi) = 38 * Var ( ) = ~X9.12

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

우리 원유 모델에서, 우리는 경우 잃게 이길 경우 .i=138Xi<19i=138Xi>19

22.04193.02 는 평균에서 벗어난 표준 편차 이며 z 점수 차트를 후 의 실패 확률을 나타 냅니다.1.0115.62%

보다 엄격한 답변과 비교 하면 올바른 값의 약 입니다.1%

확률로 가정 하고 완벽 하게 모델링하는보다 엄격한 모델보다는 승리 확률 의 신뢰성을 검사하는 것이 일반적으로 더 좋습니다 .58%58%


@ Yakk, 도대체 38은 어디에서 왔습니까? 또한 38 * var (X)가 아니라 var (38 * x) = 38 ^ 2 * var (X)라고 확신합니다. 해당 오류를 수정 한 후 "봉투 계산의 아주 좋은 결과"는 어떻게 유지됩니까?
use_norm_approx

@use_ 나는 조잡한 38 * X를 "하나의 X 곱하기 38"이 아닌 "38 개의 독립 X의 합"으로 사용하고 있습니다. 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 %를
마티 Weterings에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.