terça-feira, maio 26, 2020

Diz que é uma espécie de gripe.

Tenho tido várias conversas (remotas) acerca da COVID-19 com um leque alargado de pessoas, desde médicos responsáveis por unidades de cuidados intensivos até desconhecidos no Facebook a alegar que, como a esperança média de vida é 80 anos, não faz mal alguém morrer de COVID-19 aos 81 porque se não fosse disso seria de outra coisa (1). Uma correlação que me saltou à vista é que quem menoriza a gravidade desta doença, dizendo que é como uma gripe, é quem está mais longe de lidar com os que morrem dela (2). E há várias razões para rejeitar essa hipótese de que a COVID-19 é só uma gripe fora de época.

O SARS-CoV 2 é um parente próximo do SARS-CoV, o vírus da SARS, ambos da linhagem B dos coronavirus humanos. As proteínas são praticamente idênticas, o perfil clínico é semelhante (3) e são muito diferentes dos coronavirus da linhagem A, que causam gripe, como o OC43 (4). Em particular, as proteínas membranares às quais os SARS-CoV e SARS-CoV 2 se ligam para entrar nas células humanas são diferentes daquelas às quais se ligam vírus da gripe como o OC43. Isto faz com que a doença seja diferente, à parte do ponto comum de infectarem os pulmões, com mais complicações no sistema nervoso (5), rins (6) e outros órgãos (7). Vai demorar até se saber quais são as consequências de ter COVID-19. E também nisto é muito diferente da gripe. A gripe é uma doença que conhecemos bem mas esta é uma doença nova que encontrámos há uns meses pela primeira vez.

Mas o argumento mais comum diz para ignorar diferenças no vírus e quadro clínico, alegando que a COVID-19 é como a gripe porque mata pouco. O que só se poderia concluir se a doença já fosse bem conhecida em vez de uma doença nova cujos efeitos a longo prazo ninguém conhece. No entanto, mesmo a curto prazo isto é falso. A letalidade por infecção da gripe sazonal é inferior a 0.1%. Mata menos de uma pessoa em cada mil infectados. Dos 712 doentes com COVID-19 no cruzeiro Diamond Princess, morreram 14 (8), o que dá 2%. Eram pessoas mais velhas do que a média mas os testes serológicos a 70 mil pessoas em Espanha mostram que só 5% foram infectados por este vírus (9). Com 47 milhões de habitantes e 27 mil mortos, isto dá uma letalidade por infecção de pouco mais de 1%. Se a letalidade fosse de 0.1% teria de haver 27 milhões de infectados em Espanha, 4.1 milhões na Suécia e 1.3 milhões em Portugal. Não é plausível que 1.3 milhões de portugueses tenham contraído esta doença, 13% da população, e só se tenha apanhado 31 mil casos positivos em quase 700 mil testes feitos a 300 mil suspeitos. Uma letalidade de 1%, ou perto disso, é muito mais plausível com os números que vemos em vários países.

Um país que demonstra claramente a diferença entre a gripe sazonal e a COVID-19 é o Brasil. Infelizmente. O Brasil é um país tropical e, por isso, é pouco afectado pela gripe. Em 2019, por exemplo, morreram mil e cem pessoas com as várias estirpes de gripe no Brasil (10). Neste momento morrem mil pessoas por dia com COVID-19, e só contando os números oficiais de casos confirmados. É que, além da letalidade por infecção ser dez vezes maior, também é um vírus mais contagioso. Em vez de infectar 15% da população, se a epidemia se descontrola infecta 70%. Assim, se mata dez vezes mais por infecção e infecta cinco vezes mais pessoas, o resultado é cinquenta vezes mais mortes do que com a gripe. O número pode não ser exactamente este. Depende certamente de muitos factores, desde a distribuição etária da população à qualidade do sistema de saúde. Mas é óbvio que a COVID-19 não é uma gripe.

O intrigante nisto é o número de pessoas que insiste no contrário. Algumas, como Bolsonaro, têm claros interesses em propagar a ideia de que isto é só uma gripe. Mas em muitos casos penso que é por a virtude epistémica de suspender uma opinião até se ter dados, e mudar de opinião em função desses dados, é vista por muitos como uma falha de carácter. O que se quer é pessoas inabalavelmente convictas, e de preferência convictas de que “eles” estão todos a planear isto para nos fazer mal. Vi muito disso numa breve passagem pelo grupo de Facebook #sairdecasa, que tem «o grande objectivo de ser contra os confinamentos» (11). Numa conversa com Rui Lima, um dos moderadores, mencionei os dados de Espanha que mostram que a COVID-19 tem uma mortalidade por infecção de 1% e não dez vezes menor como ele defendia. Lima disse que eu não podia fazer as contas assim e que tinha de considerar só Madrid: «Em Madrid a Seroprevalencia é 11,3%... A região tem quase 7.000.000 de habitantes, 8900 mortos à data de hoje». Quando apontei que isso dava 1% de letalidade à mesma e que 0.1% era impossível porque exigiria 8.9 milhões de infectados entre 7 milhões de habitantes, acusou-me de dizer «que os serológicos estão errados». Por achar esse argumento suspeito, de tão obviamente falso que era, acabei expulso do grupo (11).

Esta atitude de pôr a convicção à frente dos factos é muito comum. Na astrologia, homeopatia, religiões, entre caçadores de OVNI e fantasmas e essas coisas. Mas este caso é excepcional. Porque, neste caso, esta teimosia irresponsável vai matar muita gente.

1- A esperança média de vida aos 80 anos é de 9.2 anos na Europa. É isso que perde quem morre de COVID-19 nessa idade, além do sofrimento óbvio de dias de asfixia a agravar-se até matar. Citando, «a esperança média de vida na europa ronda os 80 anos. A média de mortes por covid19 ronda os 81. Isto quer dizer que nunca poderemos recuperar pessoas que já estão em fim de vida. Parando ou não a economia as pessoas vão morrer. De Covid, de gripe sazonal ou de outra coisa qualquer. Podemos tentar adiar a idade de vida ao máximo mas nunca poderemos artificializar a vida.» Hélder Costa, num comentário no grupo público #sairdecasa
2- Por exemplo, André Dias, doutorado em modelação de doenças pulmonares: Autópsia de um Equivoco - SARS cov-19
3- Xu et. al, Systematic Comparison of Two Animal-to-Human Transmitted Human Coronaviruses: SARS-CoV-2 and SARS-CoV
4- Wikipedia, Human coronavirus OC43, e Betacoronavirus
5- Baig et. al., Evidence of the COVID-19 Virus Targeting the CNS: Tissue Distribution, Host–Virus Interaction, and Proposed Neurotropic Mechanisms
6- John’s Hopkins Medicine, Coronavirus: Kidney Damage Caused by COVID-19
7- CNN, Covid-19 infects intestines, kidneys and other organs, studies find
8- Wikipedia, Diamond Princess
9- El Pais, Antibody study shows just 5% of Spaniards have contracted the coronavirus
10- BBC Brasil, Coronavírus: média diária de mortes no Brasil já é 3 vezes a da gripe
11- Estão aqui neste post do Facebook os objectivos do grupo e uma conversa que resume bem a minha breve estadia: #sairdecasa

segunda-feira, abril 13, 2020

Mais modelos.

Em abstracto, um modelo matemático é um conjunto de operações sobre parâmetros ajustáveis. Conforme o que queremos fazer, seja separar exemplos em classes, estimar distribuições ou aproximar uma curva a um conjunto de pontos, mexemos nesses parâmetros até ficar como queremos. A popularidade da curva logística na modelação amadora da COVID-19, a tal curva que maltratei no post anterior (1), deve-se à facilidade com que aproxima qualquer coisa que pareça um “S”, seja o acumulado de infectados seja os casos novos por dia. No entanto, para o problema concreto de analisar os dados, o modelo não é uma mera abstracção matemática. É uma ferramenta que deve servir para ajudar a esclarecer o que se passa ou ajudar a prever o que ainda não sabemos. Há modelos que ajudam a prever mesmo sem se perceber o que fazem mas isso só funciona quando os dados aos quais se ajusta o modelo vêm da mesma distribuição daquilo que queremos prever. Com a COVID-19 em Portugal não dá para fazer isso porque não temos um lote de Portugais onde treinar e validar os modelos que depois serviriam para fazer previsões acerca deste Portugal em que vivemos. Portanto a abordagem tem de ser a outra. Precisamos de modelos cujos parâmetros correspondam a algum aspecto da realidade, que nos ajudem a perceber o que se passa e, se os parâmetros estiverem correctos, permitam prever o que pode acontecer a seguir. É isso que os epidemiologistas tentam fazer.

Eu não sou epidemiologista mas, aproveitando que se sabe poucos dos parâmetros necessários para um modelo a sério, vou atalhar com um modelo simplificado. O meu é assim:



Dos susceptíveis, no início quase toda a gente, vão saindo todos os dias uma fracção proporcional aos contagiosos. Esta fracção aumenta os infectados, que mais tarde se tornam contagiosos. Os valores nas arestas do grafo são as fracções por dia. Os contagiosos podem tornar-se sintomáticos ou assintomáticos, podem mais tarde curar-se e deixar de contagiar, ou ir parar ao hospital e ter mais azar com a doença. Assumo que no hospital já não vão contagiar muita gente pelo que quem contagia, neste modelo, são os contagiosos, os assintomáticos e os sintomáticos. Estes últimos são quem tem sintomas suficientes para ir ao hospital, ser declarado suspeito e eventualmente testado confirmando a doença. Por isso, é o total dos sintomáticos que comparo com o total de casos confirmados em Portugal para ajustar o modelo.

O parâmetro que ajusto é apenas o primeiro, a taxa de contágio*. Aquele valor de 0.522 resulta de ajustar a curva à fase inicial de crescimento exponencial. Depois, a partir do dia 31 da simulação (é o dia que optimiza o ajuste aos dados da DGS), o valor é reajustado para ter em conta as medidas de mitigação. Na curva que obtive fica a 0.031. Ou seja, cerca de 3% de probabilidade por dia, em média, de alguém com COVID-19 contagiar outra pessoa neste momento. Os restantes parâmetros são inventados com base no que parece ser o tempo de incubação e duração da doença, mas são muito questionáveis e, por isso, repeti o ajuste mil vezes variando aleatoriamente os outros parâmetros até ±30% do seu valor original. Estas são as curvas cujo ajuste foi pelo menos tão bom quanto o original:



Primeiro, as más notícias. É mais fácil prever o passado do que o futuro e se bem que todas as curvas se aproximem dos dados a dispersão das previsões é enorme, dependendo muito de parâmetros cujo valor desconhecemos. E uma percentagem significativa dispara para valores muito altos, com dois terços das simulações prevendo até 50 mil confirmados nos próximos 3 meses, mesmo mantendo as medidas de mitigação. Julgo que na DGS também sabem disto e é por isso que estão a apertar com medidas adicionais. Não estamos safos ainda. Mas também há boas notícias. Primeiro, parece que o tal pico já passou. Na verdade, ocorreu logo quando se impôs as medidas de mitigação, iniciando o decaimento da fracção de infectados e, por isso, de contagiosos. O problema é que esse decaimento pode ser ainda lento e demorar a reflectir-se nos casos que observamos, os sintomáticos, que só surgem mais tarde com o progredir da doença. Segundo, mesmo nas simulações mais pessimistas é óbvio que as medidas que se tem tomado tiveram um impacto grande na propagação da doença. Mais importante ainda, apesar da curva com os parâmetros que escolhi estar no limite optimista da distribuição das simulações, o meu modelo em si é pessimista. Eu estou a assumir que a população é homogénea e a aplicar a toda a população os parâmetros que ajustam a curva aos casos confirmados. Mas a população é heterogénea, algumas pessoas resistem melhor que outras, e os casos que temos até agora são tendencialmente de pessoas mais susceptíveis. Não consigo estimar essa heterogeneidade mas é um factor importante e é provável que a curva real seja mais favorável do que a minha.

Adianta de pouco ajustar modelos arbitrários aos dados que temos ou tentar descobrir “o pico” porque o que importa é o que vem a seguir e isso depende de muitos parâmetros desconhecidos. Mais importantes ainda do que os parâmetros biológicos da doença são os factores psicológicos e económicos das pessoas. O bicho não está morto. Mexe-se pouco porque lhe pusemos um pé em cima e levantar o pé agora seria um desastre. Para evitar esse desastre é preciso resolver com urgência os problemas de quem não tem meios para ficar em casa à espera da vacina. Se bem que geralmente os problemas dos pobres sejam os menos prioritários, desta vez tenho esperança que lhes dêem a devida importância porque, situação rara, desta vez a saúde e a vida dos ricos depende das condições em que vivem os pobres. É preciso agora que todos percebam o perigo que correm se não colaborarem.

* Ajusto também o número inicial de infectados para dar certo com os dados da DGS a partir do 10º dia da simulação

Actualizei o código na pasta partilhada. Mas aviso que cada vez tem mais tralha feita cada vez com menos tempo e com código cada vez mais confuso.

1- Inflexão

quinta-feira, abril 09, 2020

Inflexão.

Tenho implicado regularmente com quem usa a curva logística para prever quando a epidemia estará controlada. Em parte é feitio. Gosto de implicar. Mas, neste caso, tenho outras razões para isso.

Se pusermos um pouco de iogurte em leite morno, os bacilos começam a reproduzir-se. Cada um divide-se em dois, esses dois em quatro, oito, dezasseis, e assim por diante. A isto chama-se crescimento exponencial porque o número depende de uma constante elevada ao tempo e que, por isso, tem o tempo em expoente. Mas é mais fácil perceber a curva exponencial como sendo em cada instante proporcional ao que era no instante anterior. Seja a crescer seja a diminuir. Por exemplo, o pneu furado perde, a cada instante, uma fracção constante da pressão que tinha, num decaimento exponencial também.

Mas voltemos ao iogurte. Como o leite morno não é infinito, eventualmente os bacilos terão menos alimento e o seu crescimento irá abrandar até ficar tudo em iogurte. Assim, por causa desta limitação, o número de bacilos em função do tempo não dispara para o infinito mas faz uma curva em “S”, eventualmente estabilizando. A função logística é um bom modelo para estes casos em que o crescimento exponencial encrava no limite rígido da capacidade do sistema. É também isto que acontece quando um vírus se propaga tanto pela população que começa a ser difícil encontrar vítimas por infectar. Eventualmente há tanta gente doente ou imune que a infecção pára de crescer. Uma propriedade simpática da curva logística é que o ponto em que a taxa de crescimento deixa de aumentar e começa a diminuir (o famoso ponto de inflexão) corresponde a metade do valor máximo. Diz-nos logo onde a curva vai parar. Por isso muita gente procura o ponto de inflexão da COVID-19 para prever o patamar. Não é boa ideia.

O gráfico abaixo mostra o número de casos confirmados na Coreia do Sul contando a partir do dia em que houve pelo menos 100. Ajustando a curva logística aos dados até ao dia 15, até ao dia 16, e assim por diante até ao dia 20, o resultado é bastante consistente. Tendo passado o ponto de inflexão no dia 10, o abrandamento do crescimento a seguir sugere a tal curva em “S” que pára por volta dos oito mil casos. O problema é que não pára. E a razão para isto é que o “S”, neste caso, não tem nada que ver com o iogurte ou a infecção descontrolada. Com cinquenta milhões de habitantes, não é por ter oito mil infectados que o vírus fica com falta de espaço para crescer. O abrandamento deveu-se apenas à redução na taxa de novas infecções por causa das medidas tomadas e o crescimento a seguir depende do valor em que ficou essa taxa. E isso não dá para ver com a curva logística.



Para explorar isto corri umas simulações. Considero que uma pessoa infectada demora alguns dias até contagiar os outros, depois tem 50% de probabilidade de não ter sintomas, continuando a contagiar os outros até se curar. Se tiver sintomas acaba por ser testada*. São essas pessoas que notamos no número de confirmados. O gráfico abaixo mostra dois casos. Em ambos os casos, a infecção começa com 200 infectados, que uns dias depois se tornam contagiosos e começam a passar a doença a outra pessoa com 20% de probabilidade por dia. Isto dá o tal crescimento exponencial. Ao dia 40, nesta simulação, o governo toma medidas extraordinárias e a taxa de contágio cai abruptamente. Pode ver-se um efeito imediato no grupo das pessoas contagiosas. Mas isto só se vê na simulação. Na realidade, não sabemos o que se passa com essas pessoas porque só vemos o sub-conjunto que tem sintomas. Neste, o efeito surge gradualmente e aparenta chegar ao tal ponto de inflexão no dia 50, aproximadamente, quando a curva parece afastar-se da exponencial. Mas isto não é por ter chegado a meio caminho do máximo. Não é uma curva logística. É apenas o efeito da taxa de contágio ter diminuído por causa das medidas tomadas.



Isto também mostra como o resultado depende crucialmente da eficácia das medidas. O gráfico da direita mostra a simulação em que a probabilidade de contágio caiu para 1.2% por dia. Neste caso**, a propagação baixou o suficiente para a epidemia ficar controlada. Mas se as medidas tomadas baixarem a taxa de contágio dos 20% originais para 2.2% em vez de 1.2%, ficando aquém só um ponto percentual, a doença continua descontrolada. É por isso que me preocupa a travagem na queda da taxa de crescimento dos casos de COVID-19 em Portugal, que podemos ver no gráfico abaixo. Se chegarmos a 1 sabemos que o problema está controlado, pelo menos enquanto mantivermos as medidas de mitigação que temos agora em vigor. Mas até lá não adianta andar à procura do “ponto de inflexão” ou a fazer previsões de patamares com modelos logísticos. A curva logística é o modelo errado porque estamos muito longe de atingir o máximo de capacidade do vírus infectar a população. E o progresso futuro, mesmo mantendo as condições como estão agora, depende muito de diferenças demasiado pequenas para se detectar por enquanto olhando para os pontos.



* Na pasta partilhada incluí o código para estes gráficos e simulação. Estão lá os parâmetros para estas probabilidades para quem quiser ver, e simulo também os casos críticos, mortos e recuperados, mas esses detalhes não são importantes para este post. Está tudo aqui.
** A simulação é estocástica e não dá sempre exactamente os mesmos resultados. Mas corri várias vezes e, com estes valores, dá isto em geral.

segunda-feira, março 30, 2020

Região do Norte.

Editado a 31 de Março: Os números publicados no dia 30 estavam engatados. Contaram muitos casos em duplicado quando integraram dados das autarquias com os do sistema de vigilância epidemiológica (2). Por isso, vou ignorar os dados de dia 30 e acrescentar algumas correcções ao post, em itálico

A Câmara do Porto «deixa de reconhecer autoridade à senhora directora-geral da Saúde» se declarar medidas mais extremas para conter a propagação do SARS-CoV-2. Politiquices à parte, eu queria ver se havia alguma razão para preocupação com o aumento de casos confirmados de COVID-19 na Região do Norte. Um problema de olhar para os dados em mais detalhe, em vez de considerar o agregado, é que aumenta o peso relativo de factores estranhos ao que procuramos. Por exemplo, entre os dias 26 e 27 de Março não houve novos casos confirmados na região de Lisboa. Isto não foi por folga do vírus. Entre o vírus e os dados de que dispomos interpõem-se sempre atrasos nos testes, problemas nos registos e outros factores alheios à epidemia. Nos valores agregados estes desvios pontuais tendem a cancelar-se e o total de casos confirmados em Portugal varia de dia para dia de forma bastante estável. Mas visto de perto o ruído é maior. Os gráficos abaixo mostram a proporção de casos novos e casos acumulados somando por região NUTS-II os dados dos concelhos.

Substituí o gráfico original por este, que omite o dia 30.



No gráfico da esquerda nota-se bem a grande variação diária. É um exemplo visual do perigo de fazer análises com grão mais fino que o do ruído. Mas o gráfico da direita, com os valores acumulados, é mais estável. Pode-se ver que, realmente, a Região do Norte tem um peso maior no total de casos confirmados mas, por outro lado, a proporção de casos no Norte não parece estar a aumentar muito. Talvez um pouco mas com oscilações tão grandes de dia para dia não é claro se é por tendência se é por acaso. Ainda assim, parece que nos três últimos dias o Norte tem sido responsável por uma fracção crescente dos casos novos.

Uma forma de tentar perceber porquê seria olhar em detalhe para os dados dos concelhos e procurar padrões que sugerissem uma explicação. Este método de data mining tem uma longa tradição, desde o tempo em que se fazia com folhas de chá ou entranhas de animais. O problema disto, além do ruído, é que o número de padrões possíveis explode combinatoriamente com a quantidade de factores considerados, praticamente garantindo à partida que vamos encontrar explicações para todos os gostos. O mais prudente é fazer o contrário: formular hipóteses que se possa testar com os dados e depois procurar especificamente o que nos permita testar essas hipóteses. O que vier a mais pode ser admitido como hipótese a testar com novos dados mas não mais do que isso.

Assim, decidi considerar três possibilidades. A primeira é a de que na região Norte a taxa de crescimento está maior por toda a região. A segunda é a de que o crescimento se deve mais à contribuição de muitos concelhos pequenos. E a terceira é que o problema principal está no concelho do Porto. Só esta última é que daria razão à directora-geral da Saúde. Para ver isto, represento abaixo a proporção de casos novos em cada dia distribuídos pelos vários concelhos. Cada concelho está marcado no eixo das abcissas em função do (logaritmo) do número total de casos. O Porto é o ponto mais à direita. As linhas mostram a distribuição de casos novos em cada dia.

Conclusão original, baseada nos dados errados: Até ontem, o Porto estava a contribuir uma fracção modesta, com o grosso dos casos provindo, em agregado, de concelhos no meio da distribuição. Mas hoje o cenário mudou radicalmente, com o Porto açambarcando a maior parte da área debaixo da curva. A menos que isto se deva a algum problema contabilístico (ou erro da minha parte), penso que a directora-geral da Saúde tem razão.

Na verdade, não se nota nada de particularmente grave no Porto. É o concelho com mais casos no total na Região do Norte mas o problema parece ser generalizado, com o grosso dos casos desta região contribuídos agora pelo agregado da vários concelhos. Não se justifica por isso tentar isolar um concelho em particular.



Como da minha opinião não dependem milhares de vidas, posso encarar esta conclusão como provisória e aguardar uns dias até ter mais dados para reavaliar estas hipóteses. Na DGS não têm esse luxo. Não lhes invejo a responsabilidade de decidir já o que fazer, ou não fazer, sabendo que qualquer opção poderá ter consequências trágicas.

Principalmente porque não é trivial recolher estes dados em tempo real, com muito pouca possibilidade de controlar os números atempadamente e dependendo de pessoas que estão, ao mesmo tempo, a resolver problemas sérios com os doentes.

Actualizei novamente o código e os dados na pasta pasta partilhada, já com as alterações com que corrigi o post.

1- Público, Câmara do Porto critica cerco sanitário ao Porto. E questiona “autoridade” da directora-geral da Saúde
2- JN, Cerco sanitário no Porto "não faz qualquer sentido", diz secretário de Estado

sábado, março 28, 2020

Nós e os outros.

Este gráfico mostra a evolução da taxa de crescimento dos casos confirmados para este grupo de países, contando o dia 0 como sendo o dia em que o número de casos confirmados passou os 100. Para cada período de 5 dias, começando nos dias 0 a 4, calculo a taxa de crescimento exponencial. Com base nessa, calculo uma dispersão de valores para a taxa de crescimento por bootstrapping residual (1). A linha mais grossa representa a mediana desses valores e as linhas mais finas os percentis 10% e 90%.



Em todos estes países houve uma fase inicial em que as curvas se afastaram da exponencial, o que julgo ser por causa da transição conforme tomavam medidas de mitigação. Isto nota-se pela maior dispersão dos valores. A Suécia parece ser excepção, talvez por não ter tomado medidas excepcionais. Apesar disso, a taxa de propagação do vírus na Suécia diminuiu e parece ser relativamente baixa. Mas mais sobre isso adiante. O maior crescimento nesta fase inicial foi na China, o que não é estranho porque foi o primeiro país afectado. Os outros já sabiam o que por aí vinha. Portugal parece ter aplicado bem a lição. Manteve a taxa de crescimento comparativamente baixa no início e agora tem estado a diminuir. Mas por cá a procissão ainda vai no adro. Metaforicamente, que procissões nesta altura é má ideia.

Na fase intermédia podemos ver que a Alemanha, Itália e EUA tiveram mais dificuldade do que a China a travar a propagação. A Alemanha agora está como a Itália estava há uns dez dias mas os EUA estão bem pior. As coisas nos EUA parecem estar a melhorar mas aquele tempo perdido pode ter resultados trágicos. Com crescimento exponencial não se brinca. E um exemplo disso é a Itália. Há quase duas semanas que a Itália tem conseguido manter a taxa de propagação relativamente baixa, entre 1.2 e 1.1. Mas isso não chega, e serviu para ultrapassar a China, porque um crescimento exponencial a 1.1 por dia duplica os casos a cada semana. É uma lição importante para a Alemanha, os EUA e para nós também. O nosso gráfico vai bem encaminhado mas não podemos adiar muito a chegada ao 1.0.

O que me traz à Suécia. Apesar das medidas na Suécia terem sido mais suaves do que nos outros países, a taxa de propagação tem-se mantido baixa. Não faço ideia porquê. Pode ser por factores culturais, pelo clima ou outra coisa qualquer. Mas o que se vê no caso da Itália é que baixo não chega. Se se mantiver em 1.1 eventualmente vai dar em tragédia.

Há quem critique as medidas tomadas em Portugal como extremas. Eu discordo. Portugal tem um avanço em relação à China por ter tomado medidas eficazes mais cedo e está melhor do que a Alemanha e os EUA estavam nesta fase. Mas o factor de crescimento não está muito abaixo do que estava na Itália há vinte dias atrás. É muito importante que o nosso percurso daqui em diante seja mais favorável, mesmo que isso exija sacrifícios.

Actualizei o código na pasta partilhada. Incluí o código que uso para recolher informação desta página do Ministério da Saúde, Ponto de Situação Atual em Portugal. Mas como recorro a API usadas pela página mas não documentadas, recomendo que usem essas funções com moderação não vá alguém chatear-se e mudar a API. Já perdi tempo que chegue com a porcaria dos boletins em pdf, cada um com um formato ligeiramente diferente.

1- Mais sobre isso no post anterior.

quarta-feira, março 25, 2020

Os testes.

Tenho encontrado alegações de uma suposta ocultação de casos de COVID-19 por limitações no número de testes. É claro que os 2362 casos confirmados são uma fracção dos casos em Portugal. Há doentes ainda sem sintomas, outros cujos sintomas serão leves demais para irem ao médico e assim por diante. Seria bom testar toda a gente para encontrar os focos de infecção mas não é viável. Por isso, em valor absoluto, estamos a subestimar o número de casos. Mas, se os testes forem feitos de forma consistente, a variação diária será um bom indicador de como a infecção se está a propagar pela população e do efeito das medidas tomadas. O mesmo para os casos suspeitos. Basta que os critérios de diagnóstico sejam aplicados de forma consistente.

Antes de explicar por que me parece ser esse o caso, queria apontar que quando dizem que o número de testes está a diminuir estão a especular. Até dia 15 de Março, os boletins da DGS indicavam os casos confirmados, infirmados, e aguardando resultados. Havia também um gráfico com confirmados e excluídos por data de início de sintomas. A partir de dia 16 de Março passou a haver “não confirmados” e o os excluídos desapareceram do gráfico dia 17. Isto sugere que, a partir desta data, estão a incluir testes negativos e casos não testados na mesma categoria. Por isso, neste momento, não conseguimos saber pelos boletins quantos casos foram testados. Não vejo nada de sinistro nisto. Com o aumento do número de casos aumenta também a probabilidade de haver falhas pontuais, demoras e outros problemas. Se bem que me agradasse ver isso tudo discriminado, compreendo que a prioridade na DGS não seja satisfazer os epidemiologistas de Facebook. Portanto, se virem alguém dizer que olhou para o boletim e viu que ontem houve menos testes que anteontem, sejam cépticos. Não está lá essa informação.

O que parece preocupar algumas pessoas é ainda mais estranho. Assumindo que todos os suspeitos são testados (o que, a ser verdade, será bom), contam o número de novos casos suspeitos e concluem que há menos testes porque há menos casos suspeitos. Não percebo onde é que isso é má notícia. É precisamente o que esperamos resultar das medidas de mitigação. Olhando para os dados desde dia 16*, parece-me não haver qualquer crise ou rotura. O boneco abaixo mostra isto, à esquerda com os valores diários de casos novos e à direita com os valores acumulados até cada data. Os casos a aguardar resultados parecem estar a acumular-se, com mais peso em cada dia, mas isso não parece ter grande efeito na detecção dos casos confirmados e, quando comparados com o total, o problema não é significativo. Até porque reduzir o número de testes pode ter um impacto pequeno no número de casos confirmados porque os testes não são aleatórios. As prioridades tenderão a dar precedência aos casos mais prováveis e quanto mais para baixo na lista menos casos reais se perde.



Mas há outra forma de testarmos se o processo decorre com normalidade. Como a percentagem de infectados na população é ainda pequena, o aumento de casos é aproximadamente exponencial. O que varia com as medidas tomadas será a taxa de crescimento, que deverá ir diminuindo gradualmente, mas o tipo de curva deve manter-se em cada janela de tempo. Excepto se houver perturbações na recolha de dados. Se deixa de haver testes ou se mudam protocolos há um salto súbito nos números e, nesse período, a exponencial já não se ajusta bem. Podemos medir isso pelo erro residual de cada ponto à curva ajustada, e podemos usar depois esses erros, distribuindo-os aleatoriamente pela curva, para gerar curvas hipotéticas que teríamos se a perturbação tivesse calhado noutro lado. Este é o método de residual bootstrapping, que ilustro na figura abaixo.


Os pontos da esquerda fazem um “cotovelo” que não encaixa numa curva exponencial e por isso têm um desvio considerável da curva ajustada. Se distribuirmos esses desvios aleatoriamente pela curva podemos gerar pontos que darão curvas diferentes, representadas pela mancha de linhas laranja. À direita isso não acontece. A curva ajusta-se bem aos pontos, os residuais são pequenos e a família de curvas fica numa gama mais estreita. Foi assim que calculei famílias de valores para a taxa de crescimento em janelas de 5 dias terminando nas datas indicadas na figura abaixo, quer para casos suspeitos quer para casos confirmados. Cada pontinho é um valor calculado para a taxa de crescimento, e as nuvens dão uma ideia da dispersão desses valores em cada dia, com as “barrigas” indicando maior densidade de valores.


Podemos ver que a taxa inicial de crescimento dos casos confirmados era muito grande, provavelmente pelo aumento inicial no número de testes, mas depois aproximou-se da taxa de crescimento dos casos suspeitos. Entre 13 e 16 de Março houve um desvio grande em relação à curva exponencial, que se pode ver pela maior dispersão dos valores, que indica que o ajuste não é bom. Isto sugere uma alteração brusca, seja nos protocolos seja no comportamento dos suspeitos, o que não é de estranhar nessa altura. Mas a partir de dia 16 as coisas estabilizaram e, com uma taxa de crescimento a diminuir, os dados ajustam-se bem às curvas exponenciais. Além disso, nota-se que os suspeitos estão cerca de dois dias à frente dos confirmados, o que se explica pelo atraso relativo nos resultados dos testes. Este perfil não me parece consistente com uma rotura na capacidade de fazer testes ou outro problema súbito qualquer. Mais ainda, mesmo que houvesse uma conspiração da DGS para nos ocultar estes números, julgo que era preciso um esforço considerável para os falsificar tão bem. Portanto, neste momento, não partilho da opinião de quem diz que os números não valem nada porque não se está a testar. Mas será interessante ver o que acontece nos próximos dias, porque penso que haverá uma revisão dos protocolos de teste e diagnóstico. E isso poderá dar outro safanão nos números e demorar uns dias a estabilizar novamente.

* Porque é uma chatice extrair aqueles dados; o boletim parece ser uma coisa feita em Powerpoint e depois exportado para pdf, e mudaram várias vezes o formato...

Nota: actualizei o código na pasta partilhada. Seguindo a sugestão do Raúl Fernandes (obrigado, Raúl) incluí um ficheiro com a lista de bibliotecas que é necessário para correr isto. Já agora, se algum aluno meu olhar para este código, saliento que estamos a viver uma emergência e isto foi tudo feito à pressa.

domingo, março 22, 2020

Modelos

O modelo mais básico da epidemiologia é o dos susceptíveis (S), dos infectados (I) e dos recuperados (R), aos quais chamarei removidos por incluirem não só os que já não apanham a doença por terem ganhado imunidade mas também os que ficaram imunes por óbito. A ideia deste modelo é que pessoas infectadas contagiam os susceptíveis com uma certa taxa mas depois, no final do curso da doença, já não voltarão a contraí-la e, por isso, são removidos da população em risco. Assim, inicialmente o número de infectados vai crescendo exponencialmente em função da taxa de contágio mas, como o número de susceptíveis começa a diminuir, eventualmente a taxa de crescimento dos infectados é ultrapassada pela taxa de remoção (por recobro ou óbito) e o número de infectados começa a cair. O gráfico abaixo mostra uma comparação das curvas obtidas aplicando este modelo a uma gripe normal e à COVID-19 para uma população de 10 milhões de habitantes (1).


Tenho encontrado pessoas a criticar o alegado exagero das medidas que se está a tomar. Curiosamente, fogem de especificar a que medidas se referem. Lavar as mãos? Proibir missas e jogos de futebol? O que fazem é alegar vagamente que este novo vírus não é muito diferente da gripe normal. Mas é. É muito mais contagioso. A taxa de contágio dos vírus da gripe é aproximadamente 1.15, o número médio de pessoas que um doente infecta antes de recuperar. Para o vírus da COVID-19 as estimativas variam entre 2 e 2.5, ou mais se não houver sequer precauções elementares. Parece pouca diferença mas o que conta é o que está acima de 1, que é o que faz a epidemia crescer. Por isso podemos pensar na COVID-19 como sendo dez vezes mais contagiosa do que a gripe. E isto nota-se nas curvas simuladas assumindo estes parâmetros. Enquanto que um surto de gripe infecta, no pico, oitenta mil pessoas em Portugal, se deixarmos a COVID-19 à vontade ultrapassa os dois milhões. Isto é o número de pessoas doentes em simultâneo. Além disso, a doença é mais grave e prolongada. Em cada 10 pessoas, uma precisa de cuidados hospitalares, o que daria duzentos mil portugueses gravemente doentes para 35 mil camas e 1500 ventiladores disponíveis em Portugal. E isto assumindo que todos os outros doentes se curavam milagrosamente neste período para vagar lugares e equipamento. Eu simpatizo com quem questiona a autoridade e sou sempre a favor do cepticismo. Mas antes de dizerem asneiras façam as contas. Isto não é uma gripe.

Outra linha de argumentação que tem surgido é a comparação com o número de pessoas que morre em Portugal de pneumonia, de gripe e assim por diante. As contas são fáceis de fazer. A esperança média de vida em Portugal é 81 anos o que, com cerca de 10 milhões de habitantes, dá 10 mil mortes por mês. Morre por mês em Portugal quase tanta gente quanto as 13 mil pessoas que morreram em todo o mundo por causa do novo coronavírus desde o início do ano. Mas isto não são boas notícias. Primeiro, porque morreram 13 mil pessoas mesmo apesar de se tentar tomar as tais medidas que alguns acham exageradas. E, em segundo lugar, isto é apenas o início. O gráfico abaixo mostra a posição dos vários países contando as semanas passadas desde o primeiro caso reportado e se a corrida até ao pico fosse em Portugal (2).



Devo apontar que isto não são previsões. Pelo menos por cá, é provável que se consiga retardar a epidemia durante cerca de um ano até haver vacina. Com uma vacina a taxa de contágio fica muito reduzida (3) e a epidemia fica controlada. Infelizmente, as medidas de higiene e distanciamento social só funcionam onde há água canalizada e não é preciso reunir pessoas diariamente à volta do poço. Temo que muitos países farão a trágica escalada até ao cume daquele pico. Mas por cá as medidas que estamos a adoptar parecem fazer efeito e o aumento em proporção ao número de casos está a diminuir. O painel da esquerda mostra o número de casos em cada dia em proporção ao dia anterior a partir de 11 de Março (antes disso há muita flutuação porque os números são pequenos), a recta ajustada aos pontos e a mancha que dá ideia da incerteza no declive(4). Como esta redução faz os pontos desviarem-se da exponencial, podemos (pelo menos quem sofra do mesmo que eu) sentir-nos tentados a usar o modelo SIR. Isto é um erro porque o SIR pressupõe uma taxa constante de contágio e o que trava a infecção é a redução na fracção de indivíduos susceptíveis. Não é o que se passa agora e, como mostra o gráfico da direita, se formos ajustando o SIR aos dados que vêm vamos subestimar muito o perigo que ainda há por o modelo confundir o abrandamento causado pelas medidas tomadas com o ponto de inflexão na curva. Por exemplo, o modelo com os dados até hoje prevê um factor de contágio de 1.2 e um tempo de recuperação de cerca de um dia.



É por isso que eu prefiro ir seguindo o que acontece usando curvas exponenciais ajustadas ao período mais recente, conforme os dados vão chegando. Por um lado, isto dá uma ideia visual do impacto futuro das medidas que vamos tomando, algo que não é perceptível no gráfico do declive. Mas, por outro lado, não comete o erro de presumir que nos estamos a afastar da fase de crescimento exponencial. Enquanto apenas uma fracção pequena de pessoas estiver infectada, e é crítico que assim se mantenha, o crescimento será exponencial. O que muda é o factor de multiplicação. Aqui fica então o boneco para hoje:


Nota: Se alguém quiser experimentar isto, pus o código e os dados nesta pasta partilhada. Precisam de Python 3.x e algumas bibliotecas; o mais prático será instalar a distribuição Anaconda (https://www.anaconda.com/distribution/). Se notarem erros, agradeço que me digam, de preferência depois de os corrigirem :)

1- Os parâmetros para a gripe tirei desta apresentação e para a COVID-19 usei um r0 de 2.2 e uma duração média de duas semanas.
2- Segundo dados do ECDC, aqui, e considerando apenas países com mais de 200 casos confirmados num só dia.
3- Muita gente julga que a vacina serve para nos protegermos individualmente. Em geral, a eficácia para isso é pouca, reduzindo apenas a probabilidade de ser infectado. Mas, colectivamente, se toda a gente se vacinar reduz-se o tal factor de propagação e a doença não arranca sequer. A protecção vem de não haver gente doente para nos contagiar.
4- A mancha e o desvio padrão no declive foram calculados por bootstrapping residual usando 1000 réplicas.