Статьи

Подробнее о «Потрясающих шансах» — Визуализация вероятностей

После моего  предыдущего поста , еще несколько вещей. Как уже упоминал Фредерик, действительно возможно вычислить вероятность всех пар. Точнее, все пары встречаются не так часто: некоторые команды могут играть против (почти) всех, а другие — нет. Из предыдущей таблицы можно вычислить вероятность того, что последняя команда сыграет против команды 1. Или команды 2 (числа взяты из    файла xls, упомянутого ранее). Чтобы сделать это просто

> table(M[,2*n])/length(M[,2*n])*100

       1        2        3        5        7       10       11 
11.82500 12.61212 12.61212 13.25279 19.31173 18.70767 11.67856

Здесь последняя команда (как я их оценил) имеет 11,8% шансов сыграть против команды 1 и 19,3% — против команды 7. Если мы вычислим все вероятности, мы получим

> S
       1     2     3     5     7    10    11    13
4   0.00 14.16 14.16  0.00 22.22 21.25 13.05 15.13
6  12.52 13.19 13.19 14.11 20.13  0.00 12.35 14.47
8  18.78  0.00 19.54 21.50  0.00  0.00 18.39 21.76
9  18.78 19.54  0.00 21.50  0.00  0.00 18.39 21.76
12 14.68 15.54 15.54 16.56  0.00 23.19 14.47  0.00
14 11.64 12.37 12.37 13.05 18.96 18.25  0.00 13.34
15 11.77 12.55 12.55  0.00 19.36 18.59 11.64 13.50
16 11.82 12.61 12.61 13.25 19.31 18.70 11.67  0.00

это можно увидеть ниже

Белые области не могут быть достигнуты, в то время как красные более вероятны. Здесь мы вычисляем вероятность того, что домашняя команда (указанная на  оси X ) сыграет с какой-либо командой посетителей (на  оси Y ). Тот факт, что эти вероятности не являются равномерными, кажется странным. Но я думаю, что это происходит из-за этих ограничений …

Еще один странный момент: зайти в тупик. По крайней мере, с техникой, которую я использовал. До сих пор я их не считал. Но мы можем, просто следующий код

> U=c(4,6,8,9,12,14,15,16)
> a1=U[1]
> b1=U[2]
> c1=U[3]
> d1=U[4]
> e1=U[5]
> f1=U[6]
> g1=U[7]
> h1=U[8]
> a2=b2=c2=d2=e2=f2=g2=h2=NA
> posa2=(1:n)%notin%c(LISTEIMPOSSIBLE[,a1])
> if(length(posa2)==0){na=na+1}
> for(a2 in posa2){
+ posb2=(1:n)%notin%c(LISTEIMPOSSIBLE[,b1],a2)
+ if(length(posb2)==0){na=na+1}
+ for(b2 in posb2){
+ posc2=(1:n)%notin%c(LISTEIMPOSSIBLE[,c1],a2,b2)
+ if(length(posc2)==0){na=na+1}
+ for(c2 in posc2){
+ posd2=(1:n)%notin%c(LISTEIMPOSSIBLE[,d1],
+ a2,b2,c2)
+ if(length(posd2)==0){na=na+1}
+ for(d2 in posd2){
+ pose2=(1:n)%notin%c(LISTEIMPOSSIBLE[,e1],
+ a2,b2,c2,d2)
+ if(length(pose2)==0){na=na+1}
+ for(e2 in pose2){
+ posf2=(1:n)%notin%c(LISTEIMPOSSIBLE[,f1],
+ a2,b2,c2,d2,e2)
+ if(length(posf2)==0){na=na+1}
+ for(f2 in posf2){
+ posg2=(1:n)%notin%c(LISTEIMPOSSIBLE[,g1],
+ a2,b2,c2,d2,e2,f2)
+ if(length(posg2)==0){na=na+1}
+ for(g2 in posg2){
+ posh2=(1:n)%notin%c(LISTEIMPOSSIBLE[,h1],
+ a2,b2,c2,d2,e2,f2,g2)
+ if(length(posh2)==0){na=na+1}
+ for(h2 in posh2){
+ s=s+1
+ V=c(a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2,g1,g2,h1,h2)
+ }}}}}}}}

При первоначальном заказе команды хозяев количество тупиков было

> na
[1] 657

Вероятность получения тупика тогда

> 657/(657+5463)
[1] 0.1073529

(657 сценариев закончились тупиком, а 5463 — хорошо). Худший случай был получен, когда мы рассмотрели

 [1]    6    4   16   14   12   15    8    9

В этом случае вероятность получения тупика была

> 4047/(4047+5463)
[1] 0.4255521

Здесь это явно зависит от порядка. Так что если мы рисуем — случайным образом — порядок хозяев, то есть

> Urandom=sample(U,size=8)

Распределение вероятности возникновения тупика

Все эти вычисления были основаны на моем понимании рисунков. Но Кристоф (aka @ ciebiera ) в своем блоге  krzysztofciebiera.blogspot.ca/…  получил разные результаты. Например, исходя из моих  предыдущих расчетов , вероятность получить идентичные пары составляла 0,018349% (1 шанс из 5463), но Кристоф получил — основываясь на процедуре УЕФА (как он это назвал) — вероятность 0,0181337%. Что не является строго одним и тем же, но оба вычисления дают относительно близкие результаты …