Ciência e Tecnologia ·

COVID-19: como simular a evolução da doença

Quando os epidemiologistas apresentam aqueles gráficos da evolução da doença COVID-19, eles não estão a exercer adivinhação, mas antes a efetuar previsões com base em modelos matemáticos construídos com algoritmos mais ou menos complicados...

... e com um conjunto de variáveis bem caraterizadas no momento da previsão. Assim, para se prever o futuro, é necessário conhecer muito bem o presente.

Em muitas áreas, deste a química à biologia, passando pela economia e a geografia humana, a simulação pode ajudar-nos a prever o futuro, permitindo a antecipação de algumas ações de mitigação do que de mau possa vir a acontecer, ou a recrudescer o que de bom o futuro nos possa trazer.

As simulações que implicam modelos matemáticos mais complicados recorrem a muitas linhas de programação em C, C++, python, swift, ou outras linguagens da moda. Contudo, no âmbito deste artigo não se pretende recorrer a essas ferramentas, mas antes a um simulador mais friendly que não implica necessariamente um grande background computacional.

Assim, o simulador disponível em insightmaker é um quanto nos baste para nos iniciarmos no mundo das previsões. Para começar, vou simular a evolução de uma doença, que bem pode ser a COVID-19.

Para o efeito, vou considerar uma população de 100 pessoas que, num determinado momento, podem assumir apenas um dos seguintes três estados: saudável, infetado ou recuperado. Impõe-se ainda a seguinte restrição ao modelo: um indivíduo recuperado fica imune, por isso não voltará a ficar infetado. O processo de simulação do estado de um indivíduo baseia-se no valor dos números aleatórios gerados a partir de um distribuição uniforme. É uma estratégia semelhante à utilizada nos jogos mais comuns. Nesta simulação, vou assumir que probabilidade de um determinado indivíduo são ficar infetado é 0.3 e a deste recuperar, num determinado instante, é de 0.2. Assim, para cada instante, o simulador gera números aleatórios entre 0 e 1. Se o indivíduo se encontrar no estado "saudável", passará a infetado se o valor sorteado for inferior ou igual a 0.3. Por sua vez, se o seu estado atual for infetado, passará a "recuperado" se o número sorteado for inferior ou igual a 0.2. É claro que estes valores de referência resultam de um exercício mental da minha parte e não carecem de qualquer rigor científico, como pode ser erradamente suposto.

Feita a caraterização da situação, vou usar o simulador gratuito disponível no sítio supra citado. O uso deste recurso carece de uma inscrição, que deve ser feita antes de criar o modelo.

Após a autenticação no sítio e da limpeza do simulador (é preciso apagar o texto que aparece por defeito) obtemos um painel clean.

Clicando em “Add Primitives” é possível adicionar um conjunto de “primitivas” ao painel de trabalho. Nesta simulação serão adicionadas três estados “State”. O primeiro será renomeado para “saudável”; o segundo para “infetado” e o terceiro para "recuperado". Ou seja, cada indivíduo assumirá um destes estados na forma sequencial apresentada. Inicialmente encontra-se no estado saudável, seguidamente passará ao estado infetado e depois ao recuperado.

Gráfico um
Gráfico um

O passo seguinte é ligar dois estados através de uma transição, que vamos renomear “infetar”. Esta transição é responsável por alterar o estado saudável para infetado.

Gráfico um

Vamos ainda adicionar outra transição que representa a mudança do estado infetado para recuperado. Vamos renomear esta como “recuperar”.

Gráfico um

Chegou a altura de testar o modelo. Para isso é necessário definir ainda algumas condições iniciais. Vamos admitir que o estado inicial de um indivíduo é o saudável. Para fazer isto, clicar no estado “saudável". No menu lateral são apresentadas as caraterísticas desta primitiva. Fazer “Start Active = true”. Contudo, ainda falta calibrar as transições. Clicar em “infetar” e registar ajustar conforme a figura seguinte. Fazer o mesmo para a transição “recuperar", mas agora o valor a registar é 0.2.

Gráfico um

Clicar em simular. Obtém-se um gráfico semelhante ao da figura. Não é nada espetacular, pois representa a evolução de apenas um indivíduo. Isso não serve de grande coisa 😡!!!

Gráfico um

Como referi anteriormente, pretende-se que a população seja constituída por 100 indivíduos. Para incluir esse dado no modelo, começar por selecionar tudo o que aparece no painel de trabalho (estados e transições). Em “Add primitives” escolher “make a folder”. Renomear a pasta para pessoa. No painel lateral que aparece quando se escolha a pasta, atribuir o comportamento “Behavior” de Agent. Adicionar mais uma primitiva, desta vez uma “Add agente population”. Renomear para “População” e no painel lateral definir “Agent Base”= pessoa. Clicar em simular.

Ter paciência, vá lá até é rápido!! Mais tarde sugiro alterar a população para 1000 e ver o que acontece. Aparece um gráfico mais elaborado do que o anterior e, já agora, com mais informação. Agora já é possível prever o que irá acontecer a esta população de 100 indivíduos ao longo dos próximos vinte anos, a manterem-se os parâmetros utilizados para calibrar o modelo. A interpretação da figura leva-nos a prever que nos segundo e terceiro ano teremos um pico de infeção. Para tornar a simulação mais engraçada, fazer variar o tamanho da população, bem como as probabilidades de um indivíduo ficar infetado ou de recuperar.

Gráfico um

Este modelo assume que as probabilidades são constantes. Num próximo artigo irei explorar como pode ser criado um modelo em que essas probabilidades dependem da taxa de incidência da doença, ou seja, como fazer refletir no modelo o impacto do índice de transmissibilidade (Rt).


Thanks for reading, if you liked this article please share it on Twitter .

Author

Picture of Jorge M.

Jorge M.

Professor e responsável pelo clube a minha carreira.

Wikipedia · Mauritius