29 янв. 2010 г.

Плотность распределения

Добрый день.

Вчера мы считали вероятности для частного случая задачи о двух конвертах, а сегодня будем разбираться, где там была ошибка и почему с «очевидными» решениями надо быть очень аккуратным.

Если вы ещё не прочитали прошлую заметку с ошибкой, то дальнейшее чтение этой записи особой пользы не принесёт. Опыт показывает, что особенно хорошо удаётся понять те грабли, на которые только что наступил. Поэтому я рекомендую сначала прочитать вчерашнее рассуждение, чтобы интуиция подтвердила, что «так всё и есть» (или разум остановил, потому что «так не бывает»).

Действовать сегодня будем так:
1. Поставим эксперимент, чтобы убедиться в наличии ошибки.
2. Рассмотрим наглядное и интуитивно понятное объяснение. Так будет легче почувствовать, что именно сделано «не так».
3. Решим задачу честно, а не как вчера.

Одна из главных тонкостей рассматриваемого частного случая - непрерывность интервала, на котором мы работаем. Если бы было известно, что в конвертах могут быть только целые значения, то мы бы не допустили ошибки, потому что отдельно рассмотрели бы случаи чётной и нечётной сумм в конвертах: если сумма нечётная, то заведомо надо менять конверт, так как в нём меньшее из двух значений. Но в непрерывном случае этой проблемы нет, поэтому ничего не мешало ошибиться.

1. Как и договаривались, сначала поставим эксперимент, чтобы снять многие сомнения. Если верить статистике, большинство подписчиков используют Google Reader. Это значит, что как минимум браузер, способный выполнять Javascript, есть почти у всех. Задача у нас простая, поэтому и эксперимент ставится в несколько строчек:
<script type="text/javascript">
m = 10; // min value
n = 100; // max value
var q = [0, 0]; // init quantities
for(i=0;i<10000;i++) { // nb experiments
r = (Math.random()*(n-m+1))+m; // random value from 10 to 100
var v = [r, 2*r]; // generate pair of envelopes
c = (Math.random() > 0.5) ? 0 : 1; // random envelope
chosen = v[c]; // value in chosen envelope
if ( (chosen >= 20) && (chosen <= 100) ) // interesting
q[c]++; // calc quantities
} // for
document.write('Quantities of envelopes on [20..100]: '+
q[0]+', '+q[1]+', ratio: '+q[0]/q[1]); // print anwer
</script>

Что получается? Как минимум, результат заметно отличается от «доказанного» вчера. Для случаев, когда в вытянутом конверте сумма лежит в интервале от 20 до 100, мы посчитали количества ситуаций 'конверт оказался меньшим из двух' и 'конверт оказался большим из двух'. Выяснилось, что первое число примерно в два раза больше, чем второе. Но вчера-то мы пришли к выводу, что эти числа должны быть примерно равны!

Плотности распределения двух случайных величин2. Теперь давайте подключим воображение. Вчера я предложил неправильную иллюстрацию, чтобы возникло сомнение. На картинке справа мы видим голубой прямоугольник - он соответствует графику плотности случайной величины, равномерно распределённой от 10 до 100 (значение в меньшем конверте).

А жёлтый прямоугольник соответствует графику плотности случайной величины, равномерно распределённой от 20 до 200. Площади под графиками должны быть одинаковыми, а жёлтый прямоугольник в два раза шире, поэтому он в два раза ниже синего. Там, где наши прямоугольники пересекаются, цвета для наглядности «смешиваются» - получаем зелёный цвет.

Избавились от пересечения областейЧтобы было проще представить, передвинем часть синего прямоугольника вверх - так мы избежим пересечения. Теперь очень хорошо видно, что для любого числа, попавшего в интервал от 20 до 100, вероятность того, что оно является меньшим в своей паре (синим), в два раза превосходит вероятность того, что оно большее в своей паре чисел (жёлтое).

Такая визуализация очень полезна, так как подобные образы хорошо помогают интуиции свыкнуться с не очень естественными вывихами реального мира. Да, теперь чётко видно, что вероятности событий '2X во втором конверте' и 'X/2 во втором конверте' не могут быть равны. Но это только вспомогательная иллюстрация, а не решение.

3. А теперь решим задачу честно.
Введём два равновероятных события H1 и H2: это вытягивание первого и второго конверта. И события A - попадание случайной величины X в интервал от 20 до 100.

То есть, имеем следующее:
P(H1)=P(H2)=1/2,
A = {20 <= X <= 100}.

Тогда рассчитаем условные вероятности (P(A|B) - это вероятность того, что событие A произошло, если уже произошло событие B):
P(A|H1) = P(A∩H1) / P(H1) = 8/9,
P(A|H2) = P(A∩H2) / P(H2) = 4/9.

Если это не выглядит понятно, то предлагаю ознакомиться с прозрачным комментарием AAbrosov. Он разбил интервал на 19 равных областей длины 10 (от 10 до 20, от 20 до 30, ... от 190 до 200). Первый конверт одинаково часто попадает в первые 9 интервалов, а второй - одинаково часто попадает в последние 18 интервалов. Остаётся посчитать, с какой вероятностью каждый из конвертов попадёт в интересную нам область от 20 до 100. Первый конверт это делает в 8 случаях из 9 (все интервалы, кроме [10..20]). А второй конверт это делает в 8 случаях из 18 (все интервалы, кроме последних 10 [100..110], [110..120], ... , [190..200]). Так мы получили те же условные вероятности, но чуть длиннее и нагляднее.

А что нам надо найти? Нам нужно P(H1|A) - вероятность того, что мы вытянули первый конверт при том, что мы уже попали в интересный нам интервал (от 20 до 100).

Посчитать это нам поможет теорема Байеса:
P(H1|A) = (P(H1)P(A|H1)) / (P(H1)P(A|H1) + P(H2)P(A|H2)) = (4/9) / (4/9 + 2/9) = 4/6 = 2/3.

Так мы вычислили, что если в вытянутом конверте оказалось от 20 до 100 денег, то с вероятностью 2/3 этот конверт является меньшим в своей паре. Раньше мы имели иллюзию, что эта вероятность 50%, поэтому ожидали, что смена конверта принесёт +25% к текущей сумме в среднем (так как (2X+X/2)/2 = 5X/4). Но теперь мы понимаем, что 2X во втором конверте будет с ещё большей вероятностью.

Поэтому правильные вычисления выглядят так: (2*2X + 1*X/2)/3 = 3X/2. Другими словами, замена конверта позволит увеличить сумму в полтора раза (в среднем). Поэтому его тем более надо менять.

Получается, что полный ответ к данному частному случаю задачи о двух конвертах звучит так:
- Если вытянутое число больше 100, то менять конверт не следует, так как это гарантированно приведёт к уменьшению выигрыша,
- Если вытянутое число меньше 20, то обязательно надо сменить конверт, так как это гарантирует увеличение выигрыша,
- В остальных случаях тоже следует сменить конверт, так как вероятность удвоения суммы в два раза больше вероятности её сокращения, да ещё и возможный выигрыш при замене больше возможного проигрыша.

Будьте осторожны с рассуждениями о вероятностях. Часто так бывает, что всё выглядит правильно и очевидно, но оказывается совершенно неверным. И чем рассуждение яснее и очевиднее, тем сильнее заблуждение :)

Хороших вам выходных!

9 комментариев:

  1. Анонимный29.01.2010, 12:33

    Джаваскрипт выполняется здесь: pastehtml.com/view/5t61eqo.html

    ОтветитьУдалить
  2. 2Илья: Ой, а десерт? В смысле - вики поменять?! ;-)

    вот ЭТО: "Другими словами, чем меньше сумма в открытом конверте, тем с большей вероятностью следует сменить конверт, и наоборот, чем больше сумма в открытом конверте, тем скорее следует оставить этот конверт себе. В нашем случае (равномерное распределение от 10 до 100 рублей) легко подсчитать: если выпало до 55 рублей, выгоднее брать другой конверт; если больше — оставлять."

    с учетом этого: "В остальных случаях тоже следует сменить конверт, так как вероятность удвоения суммы в два раза больше вероятности её сокращения, да ещё и возможный выигрыш при замене больше возможного проигрыша."

    p.s.Или уже разом всю статью?! ;-)

    ОтветитьУдалить
  3. Анонимный29.01.2010, 20:35

    ага, точно... как про динозавра: или встречу, или не встречу - 50на50... логично ведь! :)

    ОтветитьУдалить
  4. Мне вот другое интересно... Есть ли какая-то разница, в чем измерять успех такого игрока? Ну допустим человек много раз подряд выбирает конверты. Он может стремиться к тому чтобы максимизировать свой выигрыш в рублях, а может - к тому, чтобы в бОльшем количестве случаев выбрать бОльший конверт.

    Получается, что если он выбрал меньший конверт, до для первого случая он сыграл хоть и не лучшим образом, но все-таки в плюс. А если рассматривать второй подход, то выбор меньшего конверта - безусловная неудача.

    Или стратегия не зависит от правил игры? Надо подумать над этим.

    ОтветитьУдалить
  5. Юлия А, я сейчас не вижу разницы между максимизацией количества выигрышей и максимизацией суммы выигрыша. То есть, конечно, легко придумать ситуацию, в которой человек выигрывает малую сумму, но делает много побед, или выигрывает очень большую сумму, но имеет мало побед. Но я не представляю, как это можно учесть, не зная распределения сумм в конвертах, не зная ограничений снизу и сверху...

    ОтветитьУдалить
  6. Анонимный10.02.2010, 00:24

    Илья,
    разве границы диапазона (которые мы приняли от 10 до 100) заданы в задаче? вроде нет, а значит все наши разбивания на интервалы лишены смысла...

    ОтветитьУдалить
  7. incapsulated, как сказано в первом абзаце этой записи, в предыдущей заметке мы считали вероятности для частного случая задачи о двух конвертах. А здесь мы разбирались в ошибках, которые можно было легко сделать.

    Наш частный случай именно так и формулируется: случайная величина в меньшем конверте равномерно распределена на интервале от 10 до 100.

    Разбирать частные случаи бывает очень полезно, если хочется хорошо понять исходную постановку.

    ОтветитьУдалить
  8. Анонимный12.02.2010, 21:51

    ну хорошо, если задан интервал возможных сумм - разобрались. но в общей-то задаче ни слова об интервалах?

    ОтветитьУдалить
  9. incapsulated, а с общей задачей мы разобрались раньше, поэтому здесь о ней речи не было. Пишите, пожалуйста, если остались вопросы.

    ОтветитьУдалить