A testagem em massa da população é uma medida essencial na luta para conter a disseminação do coronavírus. Essa opção pode resultar em escassez de reagentes e materiais que são utilizados nos testes. Como resolver esse problema? Testando misturas de amostras de pesssoas e utilizando a matemática.
Com o medo antecipado de uma segunda onda de COVID-19, muitos especialistas concordam que a triagem em grande escala é necessária para impedir a propagação do coronavírus. Testes imunológicos, sorológicos ou antigênicos de amostras representativas da população também podem ajudar a estimar a prevalência da doença, avaliar a imunidade do rebanho e adaptar as medidas de gestão da pandemia.
A implementação bem-sucedida de uma estratégia de triagem em massa requer acesso a recursos substanciais em termos de pessoal e equipamento. O aumento da demanda global resultou em uma escassez de reagentes necessários para testes de laboratório, trazendo preocupações para os gestores de saúde pública no Canadá e em todo o mundo.
Dado que, em sua maioria, os resultados dos testes são (felizmente) negativos, será que podemos usar a matemática para melhorar a informação trazida por esses testes, reduzindo o número de testes a ser realizados? A resposta é sim, desde que sejam realizados testes de grupo em misturas de amostras criteriosamente construídas.
Triagem de grupo
Suponha que um laboratório tenha recebido 100 amostras para testes diagnósticos. Ele os divide aleatoriamente em 5 grupos de tamanho 20. Em seguida, usa metade de cada uma das 20 amostras de cada um dos grupos para obter uma mistura de amostras e aplica o teste nessa amostra.
Se um teste em uma amostra agrupada for negativo, pode-se concluir imediatamente que ninguém naquele agrupamento é infectado. Se o teste for positivo, a segunda metade de cada uma das 20 amostras é testada individualmente.
Se as 100 amostras iniciais vierem de indivíduos saudáveis, este procedimento reduz o número de testes para ser realizado de 100 para 5. Se apenas um indivíduo estiver infectado, então 5 + 20 = 25 testes são suficientes para identificar essa pessoa. Se dois indivíduos estão infectados, 25 testes também são suficientes para identificá-los se eles estão no mesmo grupo, mas se eles pertencerem a grupos diferentes então 5 + 20 + 20 = 45 testes são necessários. Se houver três ou mais pessoas infectadas o número de testes necessários é obtido via um cálculo similar.
Como pode ser visto, a triagem em grupo pode trazer uma economia significativa de recursos, desde que, é claro, a sensibilidade e a especificidade do teste não sejam afetadas pela mistura de amostras, como foi assumido acima, uma vez que isso é frequentemente o caso na prática.
Alternativamente, o laboratório poderia ter aplicado a mesma estratégia de triagem a 10 grupos de 10 amostras. Se apenas um indivíduo estiver infectado, apenas 20 testes serão necessários para identificar essa pessoa. Nesse caso seria necessário realizar 10 testes para concluir que ninguém foi infectado.
Qual dessas duas estratégias é a melhor? Existem outras estratégias que são preferíveis? A resposta depende da prevalência da doença, ou seja, a proporção da população que está infectada.
Em uma nota publicada em The Annals of Mathematical Statistics, em 1943, Robert Dorfman relatou que, em sua forma mais básica, a triagem em grupo já havia sido usada durante a Segunda Guerra Mundial para testar a ocorrência de sífilis entre os convocados do exército. Essa abordagem se tornou o padrão para testagem em massa de populações e agora existem muitas variações desse procedimento, que são utilizadas em testes para diversos tipos de vírus, como o HIV em toda a América do Norte, a influenza e o vírus do Nilo Ocidental.
Otimizando o algoritmo
Dorfman mostrou como determinar o tamanho ótimo do grupo baseado em $p \in [0, 1]$, a prevalência da doença. Denote $n ≥ 2$ o tamanho do grupo e suponha que seus membros formem uma amostra aleatória representativa da população.
Se $X$ denota o número desconhecido de pessoas infectadas no grupo, então esta variável segue uma distribuição binomial1 com parâmetros $n$ e $p$, a partir da qual pode-se obter
\[\text{Pr}(X=0)=(1–p)^n,\]
uma vez que cada indivíduo tem uma probabilidade de $1-p$ de ser saudável, e assim segue que
\[\text{Pr}(X>0)=1–\text{Pr}(X=0)=1–(1–p)^n.\]
Se $X=0$, então só é necessário realizar $N=1$ teste. No entanto, se $X > 0$, então $N= n+1$ testes serão necessários. O número médio de testes a serem realizados, chamado de expectativa de $N$, denotado por $E(N)$, é igual a
\[\begin{array}{r c l}E(N) &=&1×\text{Pr}(X=0)+(n+1)×\text{Pr}(X>0) \\&=& n+1-n(1-p)^n.\end{array}\]
Esta função aumenta com $p$. Se $p = 0$ então $E(N) =1$, o que é óbvio, já que ninguém tem a doença e, portanto, um único teste é necessário para confirmá-la. Se $p = 1$, temos $E(N) = n + 1$ porque o primeiro teste será necessariamente positivo.
Para qualquer valor de $p \in [0, 1]$, é possível determinar o custo relativo
relacionado ao uso do grupo de triagem estudando o comportamento da razão
\[E(N)/n=1+1/n–(1–p)^n\]
como função de $n$. Quanto menor for $E(N)/n$, mais vale a pena usar o teste de grupo, desde, é claro, que essa razão seja menor do que 1. Quando $p = 0$ temos que $E(N) / n = 1/n$, e assim vale a pena considerar um grupo de tamanho $n$ tão grande quanto
possível. Quando $p =1$, teremos sempre
\[E(N)/n=1+1/n>1\]
porque o teste do grupo será sempre positivo e, portanto, só aumentará o custo relativo do teste.
Para um valor fixo de $p$, a função $100 \times E(N)/n$, representa a porcentagem média de testes executado em função do tamanho, $n$, do grupo. A Figura 1 mostra o gráfico desta função para diferentes valores de $p$, correspondendo a uma prevalência de 1% (preto), 2% (castanho), 5% (laranja), 8% (vermelho), 10% (azul) e 15% (verde). Como pode ser visto, o tamanho ideal das misturas de amostras, que corresponde ao mínimo da curva, varia de acordo com a proporção, $p$, de indivíduos infectados na população. A tabela a seguir, apresentada por Dorfman, fornece a escolha otimal de $n$ para alguns valores de $p$.
$p$ (%) | $n$ | Custo relativo (%) |
1 | 11 | 20 |
2 | 8 | 27 |
5 | 5 | 43 |
8 | 4 | 53 |
10 | 4 | 59 |
15 | 3 | 72 |
Generalizações
O protocolo do teste descrito acima é um exemplo de algoritmo adaptativo de duas rodadas. É dito ser adaptativo porque a escolha (e, portanto, o número) de testes a serem realizados na segunda rodada depende do resultado do teste realizado na primeira rodada. Existem várias maneiras de melhorar o desempenho deste tipo de algoritmo. Em particular, o procedimento pode ser estendido aumentando o número de rodadas.
Apresentamos agora um algoritmo clássico, que chamaremos de algoritmo de divisão binária, e que possui certas propriedades de otimalidade (ver Figura 2).
a) Escolha um número inteiro $n$ sob a forma $n = 2^s$ e execute $k$ rodadas de testes, onde $k ≤s+1$.
b) Na primeira rodada, teste uma mistura de amostras de todo o grupo.
c) Se o teste for positivo, o grupo é dividido em dois subgrupos de $2^{s-1}$ amostras e uma mistura de cada um é testado.
d) O procedimento é continuado até a $k$-ésima rodada, onde todos os integrantes de um subgrupo que testou positivo na rodada anterior são testados individualmente. No caso particular de $k=s+1$, este subgrupo terá apenas dois membros.
Se o grupo contém um único indivíduo infectado, este algoritmo irá identificá-lo/la em exatamente $s+1=\log_2(n)+1$ rodadas. Como regra geral, quanto maior for o número de rodadas, melhor será a economia gerada por esta abordagem.
No entanto, se na prática, levar de 24 a 48 horas para um teste produzir um resultado conclusivo, o tempo de retorno para entrega dos resultados da análise pode ser contraproducente.
Também deve-se observar que a melhoria de eficácia trazida por esse tipo de procedimento requer amostras maiores do que aquelas utilizadas em outros procedimentos. Essa característica do algoritmo não será considerada problemática e será assumida em todos os algoritmos apresentados a seguir.
Um algoritmo não-adaptativo
Para controlar melhor o tempo de resposta, métodos de triagem de grupo não adaptativos também podem ser considerados. Estes protocolos envolvem apenas uma rodada, permitindo que todos os testes sejam realizados simultaneamente. Eles são bastante eficazes para a detecção de doenças, se uma estimativa confiável da prevalência da doença estiver disponível.
Vamos explicar esse conceito usando o exemplo a seguir, desenvolvido por uma equipe de pesquisadores do Ruanda-Canadá, formada como parte da resposta atual ao COVID-19. Primeiro, uma amostra aleatória de tamanho $n = 3^m$ é obtida. Em seguida, uma correspondência é estabelecida entre os $3^m$ indivíduos e os pontos de um hipercubo discreto $\{0, 1, 2\}^m$. Veja a Figura 3 para uma ilustração do caso em que $m = 3$.
A abordagem proposta consiste em realizar simultaneamente $3m$ testes em misturas de amostras, cada qual contendo $3^{m-1}$ indivíduos.
No entanto, as combinações de amostras são realizadas através de critérios específicos que utilizam a seleção de secções do hipercubo. Mais precisamente, se $x_1,\ldots,x_m $ denotam os eixos das coordenadas do hipercubo, cada uma das misturas corresponde aos indivíduos localizados no hiperplano $x_i=t$, onde $i\in \{1,\ldots,m\}$ e $t\in \{0,1,2\}$ é uma secção de $3^{m-1}$ indivíduos.
Quando $m=3$, como mostrado na Figura 3, então $3 \times 3 =9$ testes são realizados em grupos de $3^2=9$ indivíduos. Quando $m=4$, que foi o valor usado para a implementação em Ruanda, 12 testes são realizados em uma amostra de $n=81$ indivíduos. Isso significa que cada amostra é dividida em quatro porções iguais, cada qual contribuindo para quatro testes diferentes. Além disso, cada teste é uma mistura de 27 amostras.
Essa abordagem é baseada em uma técnica de construção de códigos para seleção de amostras que realizam, por construção, correção de possíveis erros na detecção de indivíduos infectados, e está descrita na caixa “Construindo um algoritmo não adaptativo”, que é apresentada na sequencia. Uma das suas grandes vantagens é que a composição das misturas é realizada de tal forma que se houver apenas um indivíduo infectado na amostra, ele/ela pode ser identificado com certeza. Se mais de uma pessoa estiver infectada, entretanto, uma segunda rodada de testes é necessária.
Vamos examinar o exemplo do Ruanda-Canadá para o caso em que $n = 81=3^4$.
Sabendo que o número $X$ de indivíduos infectados na amostra segue uma distribuição binomial com parâmetros $n = 81$ e $p$, temos que
\[\text{Pr}(X ≤1)=(1 – p)^{81}+81p(1-p)^{80}.\]
Esta estratégia é interessante desde que a probabilidade que $X ≤ 1$ seja grande. Mas para garantir que $\text{Pr}(X ≤ 1) ≥ 0.95$, por exemplo, devemos ter $p ≤ 0.44\%$; em outras palavras, a prevalência da doença deve ser baixa. Com prevalência de 1% temos que
$\text{Pr}(X ≤ 1) = 0.806$ e em quase 20% dos casos teremos que recorrer a uma segunda rodada para identificar os infectados. No entanto, ainda considerando a prevalência de 1%, temos que
\[\text{Pr}(X=2)=\pmatrix{81 \\\ 2}p^2(1-p)^{79}=0.146,\]
e assim, segue que $\text{Pr}(X ≤ 2) = 0.952$.
Os custos podem ser facilmente controlados se formos engenhosos na forma como conduzimos a segunda rodada, quando há mais de um indivíduo infectado. Por exemplo, todos os casos associados a $X=2$ infectados satisfazem a seguinte propriedade (consulte a Figura 4 onde mostramos, no caso de $m=3$, os indivíduos com teste positivo assinalados pelo colchete):
Para qualquer valor de $i \in \{1, \ldots, m\},$ existem no máximo duas secções da forma $x_i = s$ e $x_i = t$ resultando em um teste positivo, e há pelo menos um valor de $i$ para o qual há exatamente duas dessas fatias levando a testes positivos.
Se $k$ é o número de valores de $i \in {1,\ldots ,m}$ para os quais existem dois testes positivos da forma especificada em (P), o número de testes adicionais necessários para identificar todos os indivíduos infectados é dado na tabela a seguir.
$k$ | Número de testes adicionais |
1 | 0 |
2 | 4 |
3 | 8 |
4 | 16 |
Se a propriedade (P) não for válida, todos os indivíduos pertencentes as fatias que apresentaram teste positivo devem ser testados, resultando em um máximo de 81 testes adicionais. No final, o custo relativo total é gual a 100 × 17/81 ≈ 21%.
Perspectivas
A busca por algoritmos adequados para testar grupo de pessoas, e assim ajudar no combate ao coronavírus está evoluindo rapidamente. Por exemplo, um algoritmo foi recentemente desenvolvido e implementado em um laboratório por uma equipe de pesquisadores israelenses. Este algoritmo realiza 48 testes em uma única amostra aleatória de tamanho $8 \times 48 = 384$, onde cada amostra individual é dividida em seis partes iguais. Cada um dos testes é baseado na mistura de 48 dessas sub-amostras, uma por indivíduo. Cada uma dessas amostras está, portanto, presente em seis testes diferentes. No laboratório, um robô foi programado para preparar as 48 misturas de amostras. O algoritmo pode identificar até quatro indivíduos infectados. Assim sendo, nesse procedimento, o número de testes realizados será 1/8 do total de testes que seriam utilizados se cada indivíduo fosse testado separadamente. Como previamente explicado, quanto menor a porcentagem de indivíduos infectados, melhor será o desempenho do algoritmo.
É claro que outras considerações entram em jogo ao desenvolver um procedimento de teste estatístico. Para simplificar, assumimos implicitamente aqui que o teste usado é infalível. Na prática, mesmo o melhor dos testes de detecção de uma doença pode fornecer falsos positivos ou falsos negativos. A sensibilidade e especificidade de um teste são considerações importantes ao recomendar sua implementação, bem como sua viabilidade em termos de tempo, custo e manipulações.
Construindo um algoritmo não adaptativo
Queremos construir um algoritmo não adaptativo para testar um grupo de pessoas. Vamos representá-lo por uma tabela com $T$ linhas e $n$ colunas, ou equivalentemente por uma matriz de dimensão $T \times n$, onde todos os elementos da matriz são iguais a 0 ou 1. A $i$-ésima linha da matriz corresponde ao $i$-ésimo teste. As entradas iguais a 1 na $j$-ésima coluna representam os testes em que o $j$-ésimo indivíduo participa. Assim, $m_{ij} = 1$ se o $j$-ésimo indivíduo contribui para o $i$-ésimo teste e $m_{ij} = 0$, caso contrário.
Vamos construir um vetor $X$ de comprimento $n$ representando o grupo a ser testado: sua $i$-ésima coordenada, $x_i,$ é 1 se o $i$-ésimo indivíduo está infectado e 0, caso contrário. Se considerarmos $X$ como sendo uma palavra de tamanho $n$, então suas (poucas) coordenadas que assumem valor 1 indicarão a ocorrência de erros na transmissão da palavra $X_0$, cujas coordenadas eram todas iguais a 0, originalmente. Algoritmos com códigos que efetuam correção de erros são usados para corrigir os erros que ocorreram na transmissão de $X_0$, o que equivale a identificar as coordenadas de $x_i,$ de $X$ que são iguais a 1, que é exatamente o objetivo pretendido pelo teste. Em geral, um algoritmo de correção de erro pode apenas corrigir no máximo $k$ erros, onde o valor de $k$ é predeterminado.
A matriz $M$ é matriz de código. Uma propriedade suficiente para o código corrigir $k$ erros é que esta matriz seja $k$-disjunta. Vamos definir esse conceito. Queremos evitar que um indivíduo $j_{k+1}$ infectado passe despercebido quando os indivíduos $j_1, \ldots, j_k$ (não necessariamente distintos) são infectados. Há uma correspondência de um para um entre a coluna $j$ (ou seja, o indivíduo $j$) e o conjunto $A_j$ de elementos de $\{1, \ldots , T\}$ que possuem entradas iguais a 1 (ou seja, o conjunto de testes em que o indivíduo $j$ participa). Se os indivíduos $j_1, \ldots , j_k$ estiverem infectados, então todos os testes correspondente ao conjunto $A_{j_1} \cup \cdots \cup A_{j_k}$ serão positivos. Para que o $j_{k+1}$-ésimo indivíduo infectado não seja ignorado pela testagem, o conjunto $A_{j_{k +1}}$ não pode ser um sub-conjunto de $A_{j_1} \cup \cdots \cup A_{j_k}$. A matriz $M$ será $k$-disjunta se essa propriedade se verificar para todos os $j_1, \ldots , j_k$ casos e qualquer $j_{k+1}$ caso diferente de $j_1, \ldots ,j_k$. A matriz de dimensão $12 \times 81$ correspondente ao exemplo acima, usado no experimento de Ruanda é uma matriz 1-disjunta.
Existem duas estratégias principais para construir matrizes $k$-disjuntas.
A primeira é probabilística: matrizes são geradas aleatoriamente com entradas iguais a $1$ com probabilidade $q$ e $0$, com probabilidade $1-q$. Para valores adequadamente escolhidos de $n, T$ e $k$ , a probabilidade de que a matriz seja $k$-disjuntas é diferente de zero; uma matriz $k$-disjuntas pode, portanto, ser gerada por tentativa e erro.
O segundo método, que é algébrico, deriva da teoria do código de correção de erros de Reed-Solomon. Utilizando esse procedimento é possível construir matrizes $M$ nas quais todas as linhas têm o mesmo número $m$ de entradas diferentes de zero e todas as colunas têm o mesmo número $c$ de entradas diferentes de zero. Assim, todos os testes são feitos em subgrupos de tamanho $m$ e cada indivíduo contribui para $c$ testes separados.
- Esta aproximação é razoável, desde que a população seja grande em relação ao tamanho dos grupos ↩