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. ага, точно... как про динозавра: или встречу, или не встречу - 50на50... логично ведь! :)

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

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

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

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

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

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

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

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

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

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

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

Понравилась заметка? Подпишитесь на RSS-feed или email-рассылку.

Хотите поделиться ссылкой с другими? Добавьте в закладки:



Есть вопросы или предложения? Пишите письма на адрес mytribune АТ yandex.ru.

С уважением,
      Илья Весенний