Как стать автором
Обновить

Комментарии 40

>Далее в каких-то временных точках просто на следующем шаге менять одно репродукционное число на другое.

Интересно посмотреть как меняется Rt, потому что есть подозрение, что с его помощью происходит подгонка модели под данные.

UPD — график оказывается уже есть в статье, а мне нужно внимательнее читать.
Вижу, что модель по России в целом совпадает с моделью, представленной 11 апреля на одном из новосибирских форумов. Та же модель, в свою очередь, до сегодняшнего дня давала хорошее совпадение
Это вы имели ввиду сообщение, где говорится что: «пандемии описываются специальными ф-циями (например, сигмоидой)»? Вы бы еще вот эту статью упомянули…
>> Видно, что количество переболевших в Германии около 40% и коэффициент детектированных случаев к фактически инфицированным равен 1:200

Ну то есть в Германии переболело 30 млн человек, где они прячут 300 000 — 500 000 трупов умерших? Вас не смущает что вы берете модель в которой нет карантина и применяете ее к стране где полтора месяца каратнин и делаете какие-то выводы из классической ситуации garbage in — garbage out? Вы так можете посчитать за сколько дрожжи растущие в стакане съедять весь земной шар, недолго получится, экспонента она такая функция.
Простите, а вы открывали документ на GitHub? Там есть исследование связи официально детектированных случаев инфицирования и смертности в Германии. Пока конечно рано говорить об этом, но похоже реальная смертность от вируса около 0,02% в Германии.
У вас уровень детектирования выводится исходя из зарегистрированного уровня насыщения на который заболеваемость вышла в результате ограничительных мер (а не исчерпания резервов уязвимой популяции). Ваши выводы о недетектированных случаях — бред.
Тест на антитела в самом сильно пострадавшем муниципалитете — Gangelt показал 14% наличие антител. В остальной Германии такой заболеваемости и смертности как там — не было, и цифры будут в разы ниже. Ваши 40% цифры — бред опровергнутый экспериментальными данными.

>> реальная смертность от вируса около 0,02% в Германии
Вы уже сообшили в Robert Koch Institut о своем открытии? А то у них устаревшие данные везде используются.
1/200 «с потолка». просто на примере США. по логике модели у них через пару недель должны закончиться резервы популяции. по кривой заражения это явно не так.
Вы однозначно правы. Нужен корректирующий фактор. Буду думать. В тексте, с вашего позволения, сделаю коррекцию. Возможно нужно сопоставить с данными серологических тестов.
А почему вы считаете, что восприимчивых 100%? Их порядка 20-30%. С учетом этого ваши цифры сойдутся с измеренным процентом тех, кто имеет антитела.
На французский авианосце (где в среднем более молодые и здоровые) заразилось около 60%, что совпадает с расчетами ученых для случая инфекции против которой нет иммунитета (считается что в любом случае заразиться не 100%, а 60-80%).
То есть теория о 20-30% восприимчивых точно неверная, в самом лучшем случае 50-60%.
Вы не понимаете ни смысла восприимчивости, ни смысла репродуктивного числа. 60% — это 1-1/R, где R — текущее репродуктивное число. Это условия эндемического равновесия, когда эпидемия превращается в эндемию, то есть количество больных почти не меняется со временем. Как пример — дико заразная (контагиозность 100%, R0 — 15-18) ветрянка у нас эндемическая.

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

Так и меряется — D1 — доза, заражающая 1% людей, D50 — доза, заражающая 50% людей, D99 — доза, заражающая 100%. Выделяемая доза (от инфекционного периода до тяжелой стадии) меняется где-то в 10**5 раз. Так вот, доза, выделяемая от большинства больных (80% — бессимптомные, 16% — легкие) — это доза к которой, похоже, восприимчиво 20-30% населения.

На конкретном авианосце — кубрики по 20 человек, где все спят очень тесно на 3-4 этажах подвесных коек. Во сне, как вы понимаете, ни чихание ни кашель не контролируется. Меры начали принимать чрез 20 дней, то есть 4 цикла распространения. Угу, в тестом кубрике с 4-5 чихающими инфицирующая доза возрастает па порядки в сравнении с обычным кратковременным контактом в транспорте.
возрастает па порядки в сравнении с обычным кратковременным контактом в транспорте.

Однако она, вероятно, будет куда меньше, чем если заболеет постоянный половой партнер с которым спишь в обнимку каждую ночь и целуешь взасос каждый день. Поэтому, по факту, без серьезных мер самоизоляции все равно переболеют 60%.

Потом вам уже кидали ссылки на результаты тестов в итальянских городках где тоже что-то около 60% получалось.

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

С постоянным половым партнером все-таки не спится рот в рот — это просто неудобно. То есть вы оказываетесь вне траектории кашля или чихания. А в кубрике с нижних полок куда ни чихни — на траектории будет чья-то голова. Или прямо, или отраженно от стен.

Про маленькие итальянские города — отвечу там, где спрашивалось. Там надо внимательно почитать источник.

В любом случае, Matshishkapeu прав. Если намеряли 14% переболевших, а расчет дает 40% — то надо править расчет. И самая очевидная правка — уменьшение числа восприимчивых в 3 раза.
Да мысль хорошая. Нужно проверить. Сейчас поверяем по штатам США и попробуем сравнить со всем населением. Любопытно, но совпадают точки введения карантина в разных странах. В Швеции, где не был введен карантин, видны даже «длинные выходные» на пасху.

Честно говоря, не понял что на графике
Это данные по эффективному числу репродукции. Извините, сам график не подписан. Огромное количество данных приходится обрабатывать. Внизу есть легенда расчетное vs реальное значения. Согласно представленной модели с каждым шагом эффективное число репродукции «уменьшается» на 1-P(t). Эта величина на самом деле — часть населения еще не имеющего иммунитет. Видно что это число сначала скакнуло вниз в начале пасхи, а потом вернулось назад. Такое ощущение, что люди просто сидели дома. Получился «естественный карантин» на это время.

В Швеции официально карантин не вводили и похоже в начале эпидемии люди просто ограничили число социальных контактов из тех что могли. Но на работу ходить надо, сады и школы открыты. Получился скачек вниз в начале эпидемии. А дальше все идет естественным путем, если не придираться к недельным периодам, практически гладкой линией в отличие от стран к официальным карантином. Также очень интересные ситуации в Италии и например Армении.
Ага, понял.
Не с потолка, это расчетное значение, для США оно равно 1:504. Хорошо тестируют.
>> для США оно равно 1:504
То есть согласно вашей модели в США на сегодняшний день при 1148 000 официальных больных в популяции больных 578.5 миллионов. Что в 1.6 раз раза превышает все население США. По второму кругу болеют, а как же надежды на выработку иммунитета?
У регрессионной прямой есть еще и значение b пересечения с осью ординат. При расчете это нужно учитывать.
>> У регрессионной прямой есть еще и значение b пересечения с осью ординат. При расчете это нужно учитывать.

Это значение говорит что при отсутсвии официальных случаев в США было 4 миллиона заболевших. Оно не объясняет где взять 250 миллионов дополнительных американцев чтобы числа сошлись. Мексика с Канадой дадут только 164 миллиона, надо еще Японию приплюсовать, тогда хватит даже с небольшим запасом. Итого, согласно модели на территории США болеет все население США, Мексики, Канады и тайно эвакуированная туда целиком Япония.
Я открыл, увидел в репозитории XLS-файл, вытащил оттуда одну серию предсказаний, посчитанных с помощью вашей рекуррентной формулы и решил этот репозиторий навсегда развидеть.

Да, формула для расчета непригодна — врет.
Забавная модель, интересная оценка отношения детектированных случаев к инфицированным, но оно слишком уж далеко от того, что получили по результатам анализа на антитела в LA County – news.usc.edu/168987/antibody-testing-results-covid-19-infections-los-angeles-county

Мне кажется, что такое расхождение может быть из-за того, что модель строится из предположения, что все люди одинаковы (имеют примерно одинаковое количество контактов, шанс заразиться и заразить для каждого равный). Если, например, предположить, что 80% контактов происходит среди 20% наиболее «активных» людей – вид графиков несколько поменяется.
Проще всего это понять на предельном случае: 20% постоянно общаются друг с другом и изредка с остальными, 80% почти ни с кем не общаются. При этом среди 20% получим классическую логистическую кривую, а среди 80 процент заражения будет невелик и скорость заражения будет пропорциональна количеству больных из 20%.
Возможно. Тогда кривая описывающая изменение величины P останется такой же. Нужно от всей популяции отнять 80%, с оставшимися 20% провести трюк из статьи и потом снова прибавить те же 80%. На логику самой модели это никак не влияет.
Ну да, если рассматривать предельный случай – получаем ровно те же кривые, но количество переболевших около 16% и коэффициент детектированных случаев к фактически инфицированным 1:40 (и летальность в 5 раз выше, чем ваша оценка).

Но если рассматривать не предельный случай – кривые могут быть не такими простыми, ну и параметров у модели становится значительно больше, оценивать их труднее (правда, часть параметров можно попытаться оценить из других эпидемий).

в модели есть еще один параметр — P0. который как я понимаю берется в 0.0001. и откуда это значение? почему вдруг в Германии на 24 февраля было 8.3 тысячи зараженных? а если их было 830, то модель выдаст 4% вместо 40%?

Это просто некая отправная точка для величины P. Можно взять любое значение в разумных пределах. По сути это количество зараженных в определенный момент времени. Если вы измените этот параметр, то кривая сместится во времени и вам придется сделать коррекцию. При совпадении точек получатся те же 40%. Модельное значение в 8,3 тыс. включает тех, кто не был протестирован. Модель на этот момент говорит о 41 позитивно протестированном. Реальное количество 16. Можно конечно было бы подобрать значение в точности соответствующее 16, тут вы правы. Поиграться в Excel можно меняя значения в ячейках отмаркированных желтым и оранжевым цветами.

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

Если мы следуем научному методу, то по другому и не получится. При построении модели я исходил из цепочки: предположение → модель → проверка → оценка. С моей точки зрения, качество модели можно оценить на основе ее прогнозов. Для Германии последняя коррекция была сделана 09.04.2020 и с тех пор не менялась.

На настоящий момент соответствие между рассчитанными и фактическими данными на основе регрессии составляет R2 = 0,9996. Что касается реального количества инфицированных, то вы правы. Это еще одно из предположений которое нужно подтвердить или опровергнуть.

В любом случае отношение между детектированными и реально инфицированными
случаями определяется в самый последний момент. Сама прогностическая модель работает раньше. Вопрос в другом: может ли помочь модель в вопросе решения уменьшения или увеличения карантинных мер? С моей точки зрения, это два совершенно независимых вопроса.

вот эта точность и выдает проблему. реальные данные не могут настолько точно совпадать с упрощенной моделью. Это как раз сигнал, что модель можно подогнать под любой результат. более того не учитывается, что детектированные случаи отстают от реальных инфицирований. Можно выбрать совершенно другой P0 и с помощью неизвестных чисел Rx (значений R0 при введении карантинных мер) и получить совершенно другой результат. Насчет того что модель не учитывает соотношение между детектированными и реальными случаями — не правда. выход на плато как раз очень сильно зависит от процента реально инфицированных (который как раз определяется здесь учитывая коэффициент детектирования)

Я правильно понял, что решить систему уравнений (пардон, не нашел, как визуализировать формулы в комментариях):

R_t = R_0(1 - P_t)

P_t = P_0 e^\frac{t (R_t - 1)}{D}

вы не сумели и поэтому начали пользоваться рекуррентной формулой:

P_{next} = P_{current} e^\frac{μ R_0 (1 - P_{current}) - 1}{D}


Есть у меня сомнения, что так можно было, но на проверку мне нужно некоторое время.
Проверил. Реккурентная формула сильно врет, т.е. на может быть использована для решения системы уравнений из вашей статьи, упомянутых в вашей статье. График аналитического решения (ну, как, спец.функция LambertW, конечно, численно вычисляется) сильно плавнее нарастает, чем у вас в статье и XLS-файле из github'а.

Вот ссылка на график. Код под спойлером:

Код
import math

import matplotlib.pyplot as plt
import numpy
from scipy.special import lambertw


def recurrent(p: float, r0: float, d: float) -> float:
    return p*math.exp((r0*(1-p)-1)/d)


def precize(p0: float, r0: float, d: float, time: float) -> float:
    if time == 0:
        return p0
    else:
        return d/r0*lambertw(p0*r0/d*time*math.exp(time*(r0-1)/d)).real/time


def residuial(p0: float, r: float, d: float, time: float) -> float:
    pt =  precize(p0, r, d, time)
    return pt - p0*math.exp(time*(r*(1-pt)-1)/d)


if __name__ == '__main__':

    p_excel = [0.0001000, 0.0001284, 0.0001649, 0.0002117, 0.0002718,
               0.0003489, 0.0004480, 0.0005751, 0.0007383, 0.0009478,
               0.0012166, 0.0015614, 0.0020038, 0.0025712, 0.0032985,
               0.0042305, 0.0054240, 0.0069513, 0.0089040, 0.0113974,
               0.0145762, 0.0186210, 0.0237545, 0.0302489, 0.0384313,
               0.0486874, 0.0614596, 0.0772363, 0.0965284, 0.1198273,
               0.1475419, 0.1799129, 0.2169145, 0.2581609, 0.3028467,
               0.3497541, 0.3973496, 0.4439643, 0.4880201, 0.5282394,
               0.5637810, 0.5942752, 0.6197686, 0.6406140, 0.6573471,
               0.6705785, 0.6809155, 0.6889150, 0.6950596, 0.6997525,
               0.7033210, 0.7060253, 0.7080694, 0.7096117, 0.7107735,
               0.7116478, 0.7123051, 0.7127991, 0.7131700, 0.7134486,
               0.7136577, 0.7138145, 0.7139323, 0.7140206, 0.7140869,
               0.7141366, 0.7141738, 0.7142018, 0.7142228, 0.7142385,
               0.7142503, 0.7142592, 0.7142658, 0.7142708, 0.7142745,
               0.7142773, 0.7142794, 0.7142810, 0.7142822, 0.7142831,
               0.7142837, 0.7142842, 0.7142846, 0.7142849, 0.7142851,
               0.7142852, 0.7142854, 0.7142854, 0.7142855, 0.7142856,
               0.7142856, 0.7142856, 0.7142857, 0.7142857, 0.7142857,
               0.7142857, 0.7142857, 0.7142857, 0.7142857, 0.7142857,
               0.7142857, 0.7142857, 0.7142857]

    p0 = p_excel[0]
    r0 = 3.5
    d = 10.0

    p_python = [p0]

    for i in range(1, len(p_excel)):
        p_python.append(recurrent(p_python[-1], r0, d))

    p_excel = numpy.array(p_excel)
    p_python = numpy.array(p_python)

    p_sci = [precize(p0, r0, d, t) for t in range(len(p_excel))]
    p_res = [residuial(p0, r0, d, t) for t in range(len(p_excel))]
    print()
    print(f'precision of analytical solution = {numpy.max(numpy.abs(p_res))}')
    print()

    tt = numpy.arange(0, len(p_excel))

    plt.plot(tt, p_excel, 'x', color='black', label='excel data')
    plt.plot(tt, p_python, color='blue', label='recurrent formula')
    plt.plot(tt, p_sci, color='red', label='analytical solution')
    plt.legend()
    plt.grid()
    plt.show()


Спасибо, весьма интересно. Выходит, все странные выводы автора не столько из-за несовершенства модели, сколько из-за неправильного расчета.
Тем более интересно, что автор получал практически идеальную подгонку под реальные данные. Так что если в модели много параметров, даже неправильно решая уравнения можно хорошо подогнать)
Спасибо, что не верите мне на слово, сомневаетесь и настолько дотошны. Я сам такой и не против разобраться. Вы не против если мы перенесем наш диспут в «диалоги», а здесь потом выложим их результат, каким бы он ни был? Просто диалог будет долгим и весьма детальным. Я отвечу на все ваши вопросы и с удовольствием выслушаю ваши контраргументы. Написал вам напрямую.
По мимо описанных выше проблем мне видится еще одна. Вы исходите из постоянности эффективности тестирования.
А эта величина судя по всему тоже меняется во времени, при это как под влиянием «экономических факторов», таких как доступность и точно тестов, а так же выборки для тестирования, так и под влиянием патогена, при росте кол-ва заболевших превышающем рост системы тестирования из тестирования начинают выпадать более легкие случаи. Т.е. предполагаемое репродуктивное число, это пальцем в небо. На его основе, пожалуй можно оценивать эффективность карантинных мероприятий, с учетом других факторов, но никак нельзя строить модель фактического заражения.
Автор, а не могли бы вы еще пальцем показать, где в статье по вашей ссылке [1] упоминаются величины Gr и D?

Также очень хочется понять, как вы ухитрились вывести некие формулы, описывающие динамику пандемии, не написав тех дифференциальных уравнений, решением которых они являются?
Из статьи они выводятся, проще посмотреть основною статью на английском о базовом репродукционном числе. Разделы «Estimation methods» и «Latent infectious period, isolation after diagnosis». Названия переменных там другие, но сути значений это не меняет.
Я еще раз перепроверил все. Как ни странно, но модель работает. Есть определенные проблемы с нахождением точек интервенции для некоторых стран и их ведением. В Excel, что я выложил важно при подгонке значений сопоставить величину помеченную как «Ratio.Detected» с высчитанным значением стоящим рядом и выделенным синим фоном.

В любом случае спасибо, за интерес. Я вам так скажу, я могу быть прав или не прав (в этом случае, за эту модель держаться не буду), важно действительно понять есть ли в ней смысл. Возможно модель нужно скорректировать, возможно, что она лишь отправная точка. В текущих условиях это может быть важным фактором на основе которого принимаются решения. И спасибо всем за аргументированные комментарии.
проще посмотреть основною статью на английском о базовом репродукционном числе. Разделы «Estimation methods» и «Latent infectious period, isolation after diagnosis». Названия переменных там другие, но сути значений это не меняет.

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

Фактор говорить ни о чем не может. Он может быть определен как… Ну и как же он вами определен?

И что значит «может»? У вас стохастическая модель?

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

Примерно? Это точно научная статья?

Его можно определить только в начале эпидемии, когда нет никаких ограничивающих факторов.

Ну и как? Где формула, соответствующая вашему утверждению?

Сама формула выглядит так: P_{sat} = 1 — 1/{R_0}

Эта не пойдет. Ведь, P_{sat} это финальное число заразившихся, а оно еще неизвестно в начале эпидемии.

Следующий абзац статьи:

Также есть эффективное число репродукции, которое также говорит нам о том, скольких людей заражает больной. В отличие от базового числа, эффективное меняется постоянно. Определить это значение можно используя формулу выше и зная количество зараженных в определенный момент времени: R_t = R_0(1 — P_t)

1) Опять «говорит». Ладно меняем на определено, как… И тут же два варианта, один в тексте, другой формулой. И они друг другу противоречат. Потому что больной заражает людей на некоем временном отрезке [t1..t2], а в формуле у вас никакого временного отрезка нет. Так как, что выкидываем?

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

А если формулу, то вообще научная статья на этом месте заканчивается.

P.S. Также очень бы хотелось бы увидеть отличия вашей модели от существующих «сompartmental models in epidemiology», если уж вы на них ссылаетесь. Где ваши диф.уравнения?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории