Почему автобус вечно опаздывает, или Доказанная теорема вашего невезения

Прокомментировать Просмотры: 6

Сразу оговорюсь: автобус приходит точно по графику. Просто не к вам.

Это похоже на обиду на вселенную, но на деле перед нами простая математика. Ей около ста лет, и у неё есть имя: inspection paradox, парадокс инспекции, или, по-русски, парадокс времени ожидания. Тем не менее на остановках о ней почти никто не вспоминает. И напрасно: именно она объясняет, как могут уживаться табличка «интервал 10 минут» и ваши честные пятнадцать минут на ветру.

Заняться этой темой меня заставило одно февральское утро. Я стою на остановке, на табличке гордо значится «интервал в часы пик — 10 минут», а приложение то обещает автобус «через 4 минуты», то «через 7», то вовсе его теряет. Спустя 22 минуты из-за поворота показываются сразу три автобуса, идущие бампер в бампер. Первый набит битком, второй наполовину пуст, третий совсем пустой и проносится мимо, не останавливаясь. На работу я опоздала явилась с готовой идеей для исследования.

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

Исходная точка: сферический автобус в вакууме

Начнём с идеальной картины. Автобус ходит строго раз в 10 минут, как швейцарские часы. Вы приходите на остановку в произвольный момент: расписание не изучали, просто вышли из дома.

Сколько вам предстоит ждать в среднем? Верно, 5 минут. С одинаковой вероятностью вы оказываетесь в любой точке десятиминутного промежутка, ждёте от нуля до десяти минут, то есть в среднем половину.

Составим таблицу:

Сценарий

Средний интервал

Среднее ожидание

Строго по расписанию

10 мин

5,0 мин

Пока результат совпадает с интуицией. Она довольна, но ненадолго.

Ты ждёшь

Теперь слегка испортим наш автобус. Средний интервал оставим равным 10 минутам, но пусть машины приходят неравномерно: 2 минуты, затем 18, снова 2, снова 18. В среднем получается (2 + 18) / 2 = 10. Диспетчер напишет в отчёте «интервал 10 минут» и будет совершенно прав.

Сколько же теперь ждёт пассажир?

Возьмём час. За это время набирается три пары «короткий + длинный». Из 60 минут на длинные интервалы приходится 54, а на короткие лишь 6. Следовательно, пассажир, пришедший наугад, в 90% случаев угодит в длинный интервал. Не в половине случаев, как хотелось бы, а в девяноста процентах.

В длинном интервале он прождёт в среднем 9 минут, в коротком одну. Считаем:

(54 × 9 + 6 × 1) / 60 = (486 + 6) / 60 = 8,2 мин

Средний интервал не изменился, а ждать приходится на 64% дольше.

Сценарий

Средний интервал

Среднее ожидание

Строго по расписанию

10 мин

5,0 мин

Чередование 2 / 18

10 мин

8,2 мин

В этом и заключается весь фокус. Длинные интервалы длинные (спасибо, кэп), поэтому именно в них оказывается больше людей. На остановку вы приходите не в случайный интервал, а в случайный момент времени, а моменты в основном сосредоточены внутри длинных интервалов. Короткий интервал пролетает почти пустым, длинный накапливает толпу, и вы стоите в её гуще.

Кстати, тот же механизм объясняет, почему у ваших друзей в среднем больше друзей, чем у вас, и почему официальный средний размер учебной группы в университете меньше того, что чувствуют сами студенты.

Общая формула, или проклятие теоремы

Если обобщить то, что мы только что сделали вручную, получится следующее. Вероятность попасть в интервал длиной T пропорциональна T. Внутри интервала мы ждём в среднем T/2. Перемножаем и усредняем:

E[ожидание] = E[T²] / (2 · E[T])

Поскольку E[T²] равно дисперсии плюс квадрат среднего, формулу можно записать в более удобном виде:

E[ожидание] = (E[T] / 2) · (1 + CV²)

здесь CV — коэффициент вариации, то есть стандартное отклонение интервала, делённое на его среднее значение.

Проверим на примере 2/18: среднее равно 10, отклонение 8, CV = 0,8, CV² = 0,64.

5 · (1 + 0,64) = 8,2

Всё сошлось!

Обратите внимание на главное. Первый множитель (половина интервала) — это то, что обещает табличка на остановке. Второй множитель — своего рода налог на беспорядок. При идеальном расписании CV = 0, и налог нулевой. Чем больше разброс, тем щедрее вы расплачиваетесь собственным временем. Причём расплата растёт квадратично.

Пуассон, не заглядывающий в расписание

Что ж, 2/18 — пример из учебника. А что, если автобусы приходят совершенно случайно? Каждую секунду с одной и той же крошечной вероятностью, без всякого расписания. Это пуассоновский поток, интервалы в котором подчиняются экспоненциальному распределению.

У экспоненциального распределения стандартное отклонение равно среднему. Значит, CV = 1 и CV² = 1.

5 · (1 + 1) = 10 мин

Средний интервал составляет 10 минут, и среднее ожидание тоже 10 минут.

А теперь вопрос на засыпку: какова средняя длина интервала, в который вы попали? По той же логике E[T²] / E[T], для экспоненты это 2 · E[T] = 20 минут. Средний интервал на маршруте равен 10 минутам, а средний интервал, в котором стоите именно вы, — 20. Это не ошибка вычислений, так работает теория вероятностей.

Сценарий

Средний интервал

Среднее ожидание

Строго по расписанию

10 мин

5,0 мин

Чередование 2 / 18

10 мин

8,2 мин

Пуассон (полный хаос)

10 мин

10,0 мин

В ожидании Годо

У экспоненциального распределения есть ещё одна особенность, из-за которой на остановке хочется прилечь прямо на асфальт. У него нет памяти.

Формально: P(T > s + t | T > s) = P(T > t). Простыми словами: если вы уже прождали 10 минут, до автобуса вам по-прежнему в среднем 10 минут. Простояли двадцать — всё равно десять. Вселенная не засчитывает уже отстоянное время.

Вы стоите, мёрзнете, внутренний голос твердит «ну теперь-то точно приедет», а математика отвечает «так же, как и пять минут назад».

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

Когда автобус превращается в паровоз

Почему автобусы вообще ходят неравномерно, если есть расписание? Здесь мы проваливаемся в чёрную дыру, наполовину состоящую из физики, наполовину из человеческой природы.

Это явление называется bus bunching, слипание автобусов. Механизм примерно таков. Автобус чуть опоздал: пробка, светофор, бабушка с тележкой. Пока он задерживался, на следующих остановках скопилось больше пассажиров, чем обычно. Поэтому на каждой остановке он стоит дольше: все заходят, оплачивают проезд, кто-то уточняет у водителя маршрут. Из-за этого он отстаёт ещё сильнее, а людей впереди становится ещё больше.

Следующий автобус наблюдает противоположную картину. Остановки почти пусты, их только что «вычистили». Он едет быстрее графика и нагоняет первого.

Перед нами положительная обратная связь. Равномерный интервал — это неустойчивое равновесие, как карандаш, поставленный на острие: любое отклонение само себя усиливает. Насколько я помню, модель этого процесса описали ещё в 60-х, так что транспортникам проблема давно известна. Но знать не значит победить.

В пределе автобусы ходят парами. Посчитаем: интервалы 0 и 20 минут, а среднее по-прежнему 10.

E[T²] = (0² + 20²) / 2 = 200
E[ожидание] = 200 / (2 · 10) = 10 мин

Иначе говоря, два автобуса подряд по времени ожидания равносильны одному автобусу раз в 20 минут. Просто с двумя водителями.

А если тройками (0, 0, 30), как в то февральское утро?

E[T²] = 900 / 3 = 300
E[ожидание] = 300 / 20 = 15 мин

Сценарий

Средний интервал

Среднее ожидание

Строго по расписанию

10 мин

5,0 мин

Чередование 2 / 18

10 мин

8,2 мин

Пуассон (полный хаос)

10 мин

10,0 мин

Парами (0 / 20)

10 мин

10,0 мин

Тройками (0 / 0 / 30)

10 мин

15,0 мин

Тройки хуже Пуассона. Пуассон хотя бы по-настоящему случаен, а паровозик — это организованный хаос: выглядит как три автобуса, а работает как один.

Мои измерения

Теория теорией, но как всё обстоит на реальном маршруте?

Простаивать на остановке с секундомером по три часа я не была готова, поэтому выбрала другой путь. Город публикует положение автобусов через API (тот самый, из которого приложение рисует точки на карте). Я написала скрипт, который каждые 30 секунд опрашивал его и фиксировал момент, когда автобус моего маршрута проезжал мою остановку. Две рабочие недели, 10 дней, утром с 7:00 до 10:00 и вечером с 17:00 до 20:00. Шаг опроса в 30 секунд даёт погрешность момента прибытия в пределах полминуты, а для интервалов в десятки минут это вполне терпимо.

Первая неприятность случилась на третий день. В логах обнаружился интервал в 27 минут, после которого автобус «материализовался» сразу через три остановки после моей. Выяснилось, что у некоторых машин трекер периодически отключается, и для API автобус попросту исчезает. Пришлось чистить данные: интервалы, в которых автобус пропадал с карты дольше чем на 5 минут, я отбросила. Таких набралось 6. Не исключаю, что пару случаев я всё же пропустила, так что данные, скорее всего, чуть пессимистичнее реальности.

Вот что получилось:

утро:  n=176, mean=10,2 мин, sd=7,1 мин, CV=0,70 → ожидание 7,6 мин
вечер: n=158, mean=11,4 мин, sd=10,3 мин, CV=0,90 → ожидание 10,4 мин

Утро

Вечер

Интервал по табличке

10 мин

10 мин

Средний интервал по факту

10,2 мин

11,4 мин

Стандартное отклонение

7,1 мин

10,3 мин

CV

0,70

0,90

Интервалов короче 2 минут

9%

17%

Самый длинный интервал

31 мин

41 мин

Ожидание по формуле

7,6 мин

10,4 мин

Проверка для утра: 5,1 × (1 + 0,49) = 7,6. Для вечера: 5,7 × (1 + 0,82) = 10,4. Всё сходится.

Средний интервал почти соответствует заявленному: перевозчик в среднем и правда пускает автобусы раз в 10 минут (утром) и раз в 11 с небольшим (вечером). Но вечером почти каждый шестой интервал короче двух минут, то есть каждый шестой автобус движется в паре с соседним. По времени ожидания вечерний маршрут — практически чистый Пуассон, хотя у него есть и расписание, и диспетчер, и даже табличка.

Любопытнее всего разброс по дням. Утренний CV колебался от 0,4 до 1,1, а худший день пришёлся на самый дождливый. Дождь рождает пробки, пробки дают первую задержку, а дальше карандаш падает сам.

Затем мне стало мало одной формулы, и я решила проверить её на себе. Двадцать утр подряд я выходила из дома в случайный момент: время выхода генерировал random.randint в пределах получаса, чтобы я не могла подогнать его под автобус. Приложение я при этом не открывала (это было тяжелее всего). Я записывала, сколько простояла.

n=20, среднее ожидание 8,1 мин, медиана 6,5 мин, максимум 24 мин

Формула обещала 7,6, получилось 8,1. Двадцать замеров — смехотворно мало: разброс ожидания составил около шести минут, поэтому стандартная ошибка порядка 1,3 минуты, и полминуты расхождения в неё легко укладываются. Максимум в 24 минуты, разумеется, пришёлся на дождливый вторник.

Второй раунд. Или нет?

Впрочем… Из формулы вытекает вещь, которую я сначала упустила, а она важнее всего остального.

Взгляните ещё раз: (E[T] / 2) · (1 + CV²). Частота автобусов входит сюда линейно, а разброс — квадратично. Сравним два маршрута:

Сценарий

Средний интервал

Среднее ожидание

Раз в 10 мин, хаос (CV = 1)

10 мин

10,0 мин

Раз в 15 мин, строго (CV = 0)

15 мин

7,5 мин

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

Теперь вернитесь к моей таблице. Утренний маршрут «раз в 10 минут» даёт 7,6 минуты ожидания. Идеальный автобус раз в 15 минут даёт 7,5. То есть мой маршрут по факту возит так, будто ходит в полтора раза реже. Треть машин на нём работает исключительно на CV.

Именно поэтому существует холдинг: автобус, пришедший на контрольный пункт раньше графика, намеренно стоит и ждёт. Со стороны это выглядит как издевательство («Ну поехали уже!»), но так срезают CV и не дают карандашу упасть. Пассажиры в салоне теряют минуту, зато все ожидающие на остановках впереди выигрывают несколько.

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

 

Источник

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов