Задачка по теории вероятностей

Отличная задачка для тех, кто любит боль.

Задача. Агафья Степанна стала ипохондриком и теперь очень боится заболеть — она каждый час измеряет свою температуру градусником. Она бывает больше либо равной 36,6° (т. е. 36,6° плюс «надбавка».), причём «надбавка» распределена экспоненциально с параметром \(\lambda=4\). Если результат измерения превысил 37°, то Степанна начинает волноваться и оттого температурит так, что каждый следующий час результат измерения увеличивается по сравнению с предыдущим на случайную величину, имеющую то же самое распределение, что и надбавка (\(\mathop{\mathrm{Exp}}(4)\)). Как только достигнут или превышен потолок в 40°, Степанна теряет сознание, холодеет, и через час её температура возвращается на отметку 36,6°, а сама Степанна приходит в сознание и радуется тому, что абсолютно здорова. После этого она снова каждый час мерит температуру по тому же принципу.

  • Каково матожидание её температуры за всё время?
  • Какой процент всего времени Степанна температурит (\(t\geqslant37^{\circ}\))? Какова средняя продолжительность её здорового состояния? Какова средняя продолжительность её болезни? (Длина блуждания.)
  • Если ипохондрик потеряла сознание, то какова вероятность, что она увидела на градуснике отметку выше, чем 40,5°? (Условная вероятность.)
  • Новое условие: предположим, что если температура подскакивает до 41° или выше, то старушка умирает. (Это вполне возможное событие: если было 39,9°, а потом раз — и резко подскочила на 1,15° или выше; вероятность скачка на 1,15° или более равна ≈0,01.) Сколько часов в среднем живут старушки с того момента, как становятся ипохондриками? Каково матожидание температуры живых старушек? Если температура в пределах нормы, то какова вероятность умереть при следующем взлёте температуры? А в один из десяти следующих взлётов? (Длина блуждания. Теперь из матожидания будут выброшены аутлайеры, оно чуть понизится, но совсем на кроху.)
  • Как изменятся все ответы в предыдущих пунктах, если после потери сознания старушкина температура падает не до 36,6°, а до 36,6° плюс надбавка (т. е. сразу разыгрывается случайным образом)?

Я боль не очень люблю, поэтому приведу не решение, а собственные размышления на тему.

Мне кажется, имеет смысл рассмотреть такой случайный процесс: есть нижняя граница коридора (36,6), средняя (37), верхняя (40) и смертельная (41). В коридоре в каждый момент времени с пола подпрыгивает частица. Как только в момент времени величина выскакивает из средней границы коридора, то начинается случайное блуждание вверх. Как только в результате случайного однонаправленного блуждания частица пробивает потолок, то частица падает на пол, и снова начинаются случайные прыжки с пола. Если же, вылетая, частица пересекла смертельную границу, то игра заканчивается. Требуется найти среднюю вертикальную координату этой частицы, а также долю наблюдений, когда частица вне меньшего коридора... Вроде всё понятно.
Кстати, процент времени болезни не может быть равен 100, так как после каждого «рекорда» следующий период она здорова (36,6), а длина температуренья конечна (кстати, это потребуется доказать в процессе решения).

Реализация Агафьи Степанны в программе Mathematica.

t = 1;    (* Начальный момент времени... 1 или 0 на вкус*)
x = 36.6; (* Пол *)
i = 1;    (* Для того чтобы делать циклы *)
cycles = 10000; (* Как бы количество циклов *)
coord = { }; (* Резервируем место под запись наблюдений *)
While[i < cycles, (* Главный цикл *)
 x += RandomVariate[ExponentialDistribution[4]]; (* Разыгрываем прыжок темп. с пола *)
 If[ (* НАЧАЛО ЕСЛИ *)
  x < 37, (* ЕСЛИ не выскочили, то *)
  AppendTo[coord, {t, x}]; (* ТОГДА Пишем в хронику номер наблюдения и темп., *)
  x = 36.6; t++, (* Обнуляем частицу, разыгрываем следующее наблюдение *)
      While[x < 40, (* ИНАЧЕ ЦИКЛ2: будем расти, пока меньше 40 *)
     AppendTo[coord, {t, x}];    (* Пишем в хронику номер наблюдения и темп., *)
        x += RandomVariate[ExponentialDistribution[4]]; (* Снова растём, ибо больны *)
        t++ (* Разыгрываем следующее наблюдение *)
       ]; (*КОНЕЦ ЦИКЛ2, когда стало выше 40 *)
      AppendTo[coord, {t, x}]; (* Пишем точку, которая выше 40 *)
            t++; (* Ждём 1 час, пока без сознания *)
      x = 36.6;  (* Охлаждаем тело *)
      AppendTo[coord, {t, x}]; (* Записываем здоровое наблюдение *)
(* Закомментировать предыдущую строку для последнего пункта задачи *)
      t++; (* Разыгрываем следующее наблюдение *)
(* Закомментировать предыдущую строку для последнего пункта задачи *)
  ]; (* КОНЕЦ ЕСЛИ
 i++ (* Перейти к следующей процедуре проверки
 ]; (* Конец главного цикла
(*Print[TraditionalForm[coord]];*)
(* Предыдущая строка, если снять комментарий, выводит таблицу наблюдений *)
(* Я по ней проверял, не потерялось ли чего *)
 
(* А теперь рисуем все наблюдения *)
Show[
 ListPlot[coord, PlotStyle -> Directive[PointSize[Medium], Black], (* Наблюдения чёрными точками *)
  PlotRange -> All],
 ListLinePlot[{{0, 37}, {t, 37}}, (* Горизонтальные линии пороговых уровней *)
  PlotStyle -> {Thickness[0.002], Red, Dashed}],
  ListLinePlot[{{0, 40}, {t, 40}},
   PlotStyle -> {Thickness[0.002], Red, Dashed}],
 ListLinePlot[{{0, 41}, {t, 41}},
  PlotStyle -> {Thickness[0.002], Red, Dashed}]
 ]

20 наблюдений:
20 cycles

200 наблюдений:
200 cycles

2 000 наблюдений:
2000 cycles

20 000 наблюдений:
20000 cycles

Посмотрев на скриншоты, можно прийти к выводу (правда, это надо ещё и обосновать), что если температура подскочит выше 42°, то старушка взрывается... шутка! Можно прийти к выводу, что если принять условие пункта 4, то дни старушки сочтены, длина жизни конечна; ведь так много аутлайеров...

Особенность программы: количество циклов становится количеством наблюдений, когда частица в коридоре. В итоге реально всего шагов в симуляторе становится не столько, сколько циклов, а раза в 3,3 больше. Можно было бы реализовать так, чтобы сколько задали, столько и было, но это нужно подумать и что-то основное поменять (наложить проверку не на номер цикла, на t).

P.S. MathJax поддерживает знаки нестрогого неравенства с наклонными чёрточками, кои так характерны для русской типографики: \leqslant и \geqslant. Не забудьте включить AMS в конфигурации MathJax, и будет вам счастье: \(\leqslant\), \(\geqslant\).

About Andreï Kostyrka

Науколюб, грамматический нацист, антитеист. Пишу стихотворения, сочиняю музыку, верстаю книги, занимаюсь эконометрикой и настраиваю фортепиано.
Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *