7
$\begingroup$

In a 5 horse race. Lets say the probability of a horse to win the race are as follows:

Horse A : 25% Horse B : 4% Horse C : 35% Horse D : 10% Horse E : 26%

How would you determine the probability of Horse E finishing the race in front of Horse C ? i.e. (Horse E could come 4th and Horse C 5th).

Is there a method for determining the probability given the information available ?

$\endgroup$
9
  • 6
    $\begingroup$ The possible answers range from 26% to 100-35 = 65%. Think about how a horse runs when it's not winning. Maybe E is a great horse but awkward and fails to win only by stumbling and therefore finishes either first or last, in which case it will always be behind C unless E wins: that's the 65% answer. Switching the roles of the horses in this scenario gives the other extreme. Note that this analysis allows the runs of the horses to be independent or not. $\endgroup$
    – whuber
    Commented Jan 29, 2023 at 18:57
  • 1
    $\begingroup$ I voted to close this question, with the reason 'duplicate' because the same issue occurs often and not because it is neccesarily also answered in the other questions. A problem with deriving a win probability indirectly from other win probabilities is that there is no certain answer and without a framework to tackle the problem based on assumptions to make an estimate answer this question is too broad. $\endgroup$ Commented Jan 29, 2023 at 19:09
  • 1
    $\begingroup$ @Henry my duplicate close response was more like, this sounds very familiar. I didn't do a big search for duplicates, and also I can provide only one duplicate example. In a second thought I realized that the 'problem' with the question (that it shares with those other "duplicates") is that the context is not sufficiently bounded. I believe that these questions can be useful and interesting, but without a context it leads to many different open ends. The way to tackle this problem would be to start with finding out the mechanics of the underlying game and also the goal that we want to achieve. $\endgroup$ Commented Jan 30, 2023 at 12:46
  • 1
    $\begingroup$ So those cases (a), (b), (c), (d) can be in a way duplicates in the sense that it leads to the same discussions about how to properly specify the latent variable model to get some answer about the probabilities. Those tactics are all the same, but also very broad. When the question is broad in it's context (no information about what sort of latent variables would be suitable) then it is more or less duplicate in the sense of leading to the same type of answers that describe ways to express the model. (The current two answers here actually don't do this and give unmotivated answers instead) $\endgroup$ Commented Jan 30, 2023 at 12:53
  • 1
    $\begingroup$ @JarleTufto as I explained in a follow up comment, I see the problem is also in ambiguity and broadness (which it shares with other questions and that aspect has been questioned and answered before). As I show in my answer (but maybe whuber's comment does this better) there are many different answers possible. Without further handles to tackle the problem there is not much too say about this type of problem except that it is unclear or broad. $\endgroup$ Commented Jan 30, 2023 at 15:18

3 Answers 3

7
$\begingroup$

This is similar to Christian Hennig's answer.

If you make the strong assumption that the probabilities are in effect weights, and the first horse is sampled with probabilities proportional to the weights of all the horses, the second horse sampled with probabilities proportional to the weights of all the horses except that already selected as the first horse, and so on, then the answer to your question is simple, namely $$\frac{P(E)}{P(E)+P(C)}= \frac{26\%}{26\%+35\%}=\frac{26}{61}\approx 0.426$$ since, if at any stage neither E nor C have been sampled yet and one of them is sampled at that stage, the probability that it is E is $\frac{26}{61}$ and that it is C is $\frac{35}{61}$. Other assumptions about horses which do not come first finish would produce different results.

This is how R's sample() function does weighted samples without replacement, so it is easy to simulate, for example with

positions <- function(probs){  
  h <- names(probs)
  result <- sample(h, prob=probs)
  c(which(result == h[1]), which(result == h[2]), which(result == h[3]), 
    which(result == h[4]), which(result == h[5]))  #  positions in simulation
  }

set.seed(2023)
probsABCDE <- c("A"=0.25, "B"=0.04, "C"=0.35, "D"=0.10, "E"=0.26)
sims <- replicate(10^5, positions(probsABCDE))
rownames(sims) <- names(probsABCDE)
rowMeans(sims == 1) # who comes first
#       A       B       C       D       E 
# 0.24825 0.04160 0.34847 0.09984 0.26184 

which is close to the original probabilities allowing for simulation noise.

Actually addressing the question of the probability of Horse E finishing the race in front of Horse C, the simulated probability is close to the theoretical probability allowing for simulation noise:

mean(sims["E",] < sims["C",])
# 0.42862
probsABCDE["E"] / (probsABCDE["E"] + probsABCDE["C"]) 
# 0.4262295
$\endgroup$
5
  • $\begingroup$ "If you make the strong assumption that the probabilities are in effect weights, and the first horse is sampled with probabilities proportional to the weights of all the horses" - an equivalent (but also unreasonable for horse races!) assumption is that the horses' finishing times are independent exponentially distributed variables, with rate parameter $\lambda$ equal (or proportional, doesn't matter provided you scale them all in up the same way) to the desired probability of winning. In other words, the mean finishing time for each horse is the reciprocal of their probability of winning. $\endgroup$
    – Silverfish
    Commented Jan 30, 2023 at 14:57
  • 3
    $\begingroup$ This works because if finishing time $T_A\sim\operatorname{Exp}(\lambda_A)$ etc, then the fastest finishing time of the other horses is another exponential random variable $T_{others}=\min(T_B,T_C,T_D,T_E)\sim\operatorname{Exp}(\lambda_B+\lambda_C+\lambda_D+\lambda_E)$ and the probability A wins is given by the comparison $\Pr(T_A < T_{others})=\frac{\lambda_A}{\lambda_A+\lambda_{others}}=\frac{\lambda_A}{\lambda_A+\lambda_B+\lambda_C+\lambda_D+\lambda_E}$, equivalent to the weighting answer $\endgroup$
    – Silverfish
    Commented Jan 30, 2023 at 15:07
  • $\begingroup$ @Silverfish is the assumption of exponential distributed finishing times really an argument that it works? $\endgroup$ Commented Jan 30, 2023 at 15:35
  • $\begingroup$ "This works" = "by the following math, this explicit probability distribution produces the same result as the vaguer 'weighting' argument" ≠ "this is a realistic model of horse races" (as I hope my comment on it being an unreasonable model makes very clear!) $\endgroup$
    – Silverfish
    Commented Jan 30, 2023 at 16:09
  • 1
    $\begingroup$ @Silverfish: I think it is the memorylessness of exponential distributions which leads to "the second horse sampled with probabilities proportional to the weights of all the horses except that already selected as the first horse" sort of assumption I made. But you could also get sort of assumption that without requiring independent exponential distributions $\endgroup$
    – Henry
    Commented Jan 30, 2023 at 16:21
6
$\begingroup$

The given information is not enough to compute these probabilities in general, because it may be that for example Horse C is of a kind that it either wins or gets frustrated and finishes last. But it may also just be the best horse and if it doesn't win it may be very likely that it comes second. Which of these is the case is not captured by the data you have.

The problem can be solved making a simplifying assumption that in reality not may b0e true, even though it doesn't look wildly unrealistic either. The assumption I'm thinking of is that we assume that for all ranks the relative probability of any horse finishing on a lower rank assuming that certain given horses occupy the higher ranks is the same among the horses that don't yet have finished.

This for example implies that the probability for Horse A being second given that we know Horse C has won is $\frac{25}{25+4+10+26}=\frac{25}{100-35}=38.5\%$.

This assumption will determine the probabilities for all possible rankings, which can be fully computed using a fairly simple computer program (but complicated enough that I won't take the time to write it for you), going down from rank 1. One can then add all probabilities for cases in which E is ahead of C (or write the program so that it only computes those).

There may be a simpler way of doing this, but if nobody else explains it, here you are.

PS: The answer by Henry uses the same assumption, and it looks like $\frac{26}{61}$ is the result even without running a program.

$\endgroup$
1
$\begingroup$

Let $p_i$, $i=1,2,\dots,n$ denote the probabilities that each horse wins given in the problem statement. A model that leads to simple calculations is to assume that some monotonically decreasing transformation $Z_i$ of the race times $T_i$ follow exponential distributions with rate parameters $\lambda_i=p_i$. For instance, this would be consistent with the assumption that the race times follow Gumbel distribution with different locations which is perhaps not entirely unrealistic.

The probability that horse $i$ wins is then the probability that $Z_i$ is the smallest order statistic which indeed clearly is $\lambda_i/\sum_{j=1}^n \lambda_j=p_i$.

By the product rule and and the memoryless property of the exponential distribution the probability of a particular ranking $(\sigma(1),\sigma(2),\dots,\sigma(n))$ is $$ \prod_{i=1}^n\frac{p_{\sigma(i)}}{\sum_{j=i}^n p_{\sigma(j)}}. $$

The following R code verifies that the probabilities of all rankings computed this way sums to 1:

library(combinat)
#> 
#> Attaching package: 'combinat'
#> The following object is masked from 'package:utils':
#> 
#>     combn
revcumsum <- function(x) 
  rev(cumsum(rev(x)))
probranking <- function(sigma, p) {
  n <- length(p)
  prod(p[sigma]/revcumsum(p[sigma]))
}
p <- c(.25,.04,.35,.1,.26)
n <- length(p)
sum(unlist(permn(1:n, probranking, p = p)))
#> [1] 1
$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.