Open dotcom opened 5 years ago
Simply isn't it P(c>b) * P(b>a)
?
In general,
P(c>b>a) = P(b>a|c>b)P(c>b) ≠ P(c>b)P(b>a)
Because "simply P(b>a)" differs from "P(b>a) with b that satisfies c>b" .
P(c>b>a)
can be evaluated using the multivariate normal cumulative distribution function
X = C - B
Y = B - A
We want P(X>0, Y>0)
.
However, computing multivariate normal cumulative distribution function is so difficult.
4 variables example:
P(d>b>c>a) = P(d>b|b>c,c>a)P(b>c|c>a)P(c>a)
ok, I will make an effort to consider whether it can be implemented and send a pull request, if you hope.
>>> a = Rating()
>>> b = Rating()
>>> c = Rating()
>>> ranks_probability([(a,)(b,),(c,)], ranks=[0,1,2])
0.1210593088888
Probrem
Oh, awesome! Thank you for letting me know my mistake.
The function ranks_probability
looks good but I don't want to adopt it as a part of this library. There are 2 reasons:
Instead, would you paste the function as code at this issue?
ok. I agree with the implementation philosophy that this library is a transparent implementation of Trueskill. I will only discuss (or paste function) the implementation here on this matter.
Thanks for your kindness!
@dotcom did you ever get around to a ranks_probability method?
I think, if I want to calculate the win percentage for two players, I should calculate the difference distribution. X - Y ~ N(μ1 - μ2, σ12 + σ22) I think that it is sufficient to definitely integrate N in the interval of 0 or more.
But, if game is contained three or more players, how should I predict the ranking probability?