Nota do autor: Este tutorial foi produzido para atender um pedido de um dos participantes do curso de Imersão em Revisão Sistemática e Meta-Análise ministrado por mim e pelo professor Vinicius Civile. Se você também busca aprimorar a visualização gráfica do seu forest plot, espero que este material seja útil!
Tradicionalmente, o Forest Plot permite avaliar a magnitude do efeito estimado, seu intervalo de confiança e sua significância estatística por meio da linha de nulidade (0 para diferenças ou 1 para razões).
Entretanto, uma diferença estatisticamente significante nem sempre representa um benefício importante para a prática clínica. Em muitas situações, o pesquisador deseja interpretar os resultados considerando um limiar previamente definido de importância clínica.
O pacote meta Balduzzi et al.
(2019) permite incorporar um limiar de relevância clínica
diretamente ao Forest Plot por meio do argumento cid dentro
da função forest(). Esse argumento recebe o valor da
diferença considerada clinicamente importante para o desfecho em estudo
e adiciona ao gráfico uma linha vertical correspondente a esse
limiar.
Neste tutorial, veremos como utilizar esse recurso para tornar a interpretação do Forest Plot mais informativa, distinguindo significância estatística de relevância clínica.
cidDiferentemente da linha de nulidade, que representa apenas a ausencia
de efeito estatístico significativo, a linha adicionada pelo argumento
cid representa um limiar de importância clínica previamente
estabelecido pelo pesquisador.
Esse valor deve ser definido antes da análise e fundamentado em critérios clínicos, evidências da literatura ou consenso entre especialistas. Dependendo do contexto, esse valor pode corresponder à MCID descrita na literatura ou a outro limiar de importância clínica previamente definido para a tomada de decisão Guyatt et al. (2011).
Ao adicionar essa linha ao Forest Plot, torna-se possível avaliar simultanemaente:
se existe evidência de benefício estatístico;
se a magnitude do efeito é comparável com um benefício clinicamente importante.
Para demonstrar a aplicação prática neste tutorial, utilizaremos o mesmo exemplo de dados trabalhado durante o nosso curso, no qual realizamos juntos a extração dos dados dos artigos originais, a avaliação do risco de viés e os cálculos da metanálise.
O cenário clínico avalia a eficácia do uso de jogos interativos com videogame (realidade virtual) para a melhora do equilíbrio postural em indivíduos acometidos por Acidente Vascular Cerebral (AVC).
Os dados resultantes das etapas de extração e síntese quantitativa estão apresentados na tabela e no código a seguir. A partir deles, construiremos o Forest Plot adicionando a linha de relevância clínica para interpretar a relevância prática do benefício observado.
Os dados consolidados para os estudos incluídos estão estruturados abaixo:
Aqui está a explicação em tópicos de cada uma das colunas (vetores) do banco de dados, contextualizada exatamente para o cálculo da meta-análise para o desfecho equilíbrio postural:
Study (Caractere/Texto): Nome do primeiro
autor e ano de publicação de cada ensaio clínico incluído na metanálise
(ex: Cho 2012, Fritz 2013, Morone 2014). Serve para identificar
individualmente cada estudo no Forest Plot.
n_e (Numérico): Número de participantes
(tamanho da amostra) alocados no Grupo Experimental
(que recebeu a intervenção com videogames/realidade virtual).
effect_e (Numérico): Efeito médio observado
no Grupo Experimental. Representa a variação média da
pontuação na Escala de Equilíbrio de Berg (diferença pós-tratamento
versus pré-tratamento). Valores positivos indicam ganho médio em pontos
na escala após a intervenção.
dp_e (Numérico): Desvio Padrão
(Standard Deviation) do efeito no Grupo
Experimental. Mede a dispersão ou variabilidade das mudanças
nos escores do equilíbrio entre os indivíduos desse grupo.
n_c (Numérico): Número de participantes
(tamanho da amostra) alocados no Grupo Controle (que
recebeu o tratamento convencional ou comparador).
effect_c (Numérico): Efeito médio observado
no Grupo Controle. Também mensurado pela diferença
média da pontuação pós-pré na Escala de Equilíbrio de Berg para o grupo
controle.
dp_c (Numérico): Desvio Padrão do efeito no
Grupo Controle, refletindo a variabilidade das
respostas individuais dos participantes do grupo controle.
A partir de agora, utilizaremos o pacote meta para
realizar a síntese quantitativa dos nossos dados.
Pré-requisito: Este tutorial pressupõe que você já tenha alguma experiência prévia com a linguagem R (como instalação de pacotes, manipulação básica de data frames e execução de funções). O nosso foco aqui será especificamente a condução da metanálise e a customização gráfica das linhas de equivalência.
Para dados contínuos, como a diferença de pontuação pré e
pós-intervenção na Escala de Equilíbrio de Berg Berg et al. (1992), utilizaremos a função
metacont(). Ela calculará a Diferença de Médias (Mean
Difference - MD) para cada estudo individual e a estimativa do
efeito global sumarizado.
# Instalar o pacote se ainda não tiver instalado:
# install.packages("meta")
# Carrega o pacote meta
library(meta)
## Loading required package: metabook
## Loading 'meta' package (version 8.5-0).
## Type 'help(meta)' for a brief overview.
# Conduzindo a metanálise para dados contínuos
meta_avc <- metacont(n.e = n_e, mean.e = effect_e, sd.e = dp_e,
n.c = n_c, mean.c = effect_c, sd.c = dp_c,
studlab = Study,
data = dados,
sm = "MD", # Mean Difference (Diferença de Médias)
method.tau = "REML", # Método para estimar a heterogeneidade
random = TRUE, # Modelo de efeitos aleatórios
common = FALSE)
Para este tutorial, estamos utilizando a versão 8.5-0 do pacote meta. Como este tutorial pressupõe que você já possui familiaridade com a linguagem R e com a condução de metanálises, a ideia aqui não é detalhar exaustivamente cada argumento da função metacont().
Nosso foco principal está na extração das estimativas calculadas e na customização gráfica das linhas de equivalência no Forest Plot.
Caso deseje explorar em detalhes todos os parâmetros aceitos pela
função (como métodos de estimação de τ^2, transformações de dados ou
opções de ajuste de variância), você pode consultar a documentação
oficial executando help(metacont) ou ?metacont
no seu console do R. Ou me procure no Instagram e mande um direct que eu
respondo.
Antes de adicionarmos os limiares de relevância clínica, vamos gerar o Forest Plot padrão. Este gráfico exibirá apenas a linha vertical de nulidade (0), indicando se há ou não significância estatística na diferença de médias da Escala de Equilíbrio de Berg.
Para construir o Forest Plot com o pacote meta,
utilizamos a função forest(), a seguir:
forest(meta_avc,
label.left = "Favours Control",
label.right = "Favours Video Games")
Observe que o gráfico tradicional nos permite confirmar que o efeito global é estatisticamente significante (pois o intervalo de confiança não cruza a linha do zero) e a favor do vídeo game.
No entanto, ele não nos responde diretamente se esse ganho de pontos na Escala de Berg é grande o suficiente para ser clinicamente importante. Para resolver essa limitação, passaremos ao Passo 2, adicionando o limiar de relevância clínica.
cidAntes de construirmos o gráfico, precisamos definir qual valor será
utilizado no argumento cid.
Em estudos reais, esse valor deve ser estabelecido a priori e fundamentado em literatura científica, consenso de especialistas ou critérios clínicos previamente definidos. Não existe um valor universal aplicável a todos os desfechos.
Neste tutorial, meu objetivo é demonstrar o funcionamento do
argumento cid do pacote meta. Por esse
motivo, utilizarei 2,5 pontos como um limiar ilustrativo de benefício
clínico adicional da Escala de Equilíbrio de Berg.
Essa escolha foi feita apenas para fins didáticos e permite visualizar como a inclusão da linha de relevância clínica modifica a intepretação do Fores Plot.
forest(meta_avc,
label.left = "Favours Control",
label.right = "Favours Video Games",
cid = 2.5)
A meta-análise estimou uma diferença de 1,77 pontos (IC95%: 1,00 a 2,54) em favor da intervenção.
Como o intervalo de confiança não cruza a linha de nulidade, existe evidência de benefício estatisticamente significativo.
Entretanto, considerando o limiar ilustrativo de relevância clínica
definida pelo argumento cid (2,5 pontos), observa-se que a
estimativa permanece abaixo desse valor, enquanrto o limite superior do
intervalo de confiança o ultrapassa discretamente.
Isso indica que, embora a intervenção apresente benefício estatisticamente significativo, os dados ainda são inconclusivos quanto à relevância clínica, pois o intervalo de confiança é compatível tanto com efeitos inferiores ao limiar definido quanto com um benefício clinicamente importante.
O pacote meta permite que você personalize totalmente a
aparência gráfica da linha de relevância clínica para adequá-la ao
estilo visual do seu relatório ou aos padrões de formatação de
periódicos científicos.
É importante destacar que esses argumentos modificam apenas a apresentação gráfica do limiar de relevância clínica no Forest Plot. Eles não alteram os cálculos da metanálise, a estimativa do efeito, os intervalos de confiança nem qualquer outro resultado estatístico, servindo exclusivamente para facilitar a interpretação visual dos achados.
Para isso, podemos adicionar os seguintes argumentos gráficos à
função forest():
col.cid: Define a cor da linha (ex: “firebrick”,
“darkblue”, “darkgreen”).
lty.cid: Define o estilo da linha (ex: 1 para
sólida, 2 para tracejada, 3 para pontilhada, 4 para
ponto-traço).
forest(meta_avc,
label.left = "Favours Control",
label.right = "Favours Video Games",
cid = 2.5,
col.cid = "firebrick",
lty.cid = 2)
Além de alterar a cor e o estilo da linha, o pacote meta oferece o
argumento fill.cid, que permite destacar visualmente a região
compreendida entre a linha de nulidade (0) e o valor definido no
argumento cid.
Esse recurso cria uma área sombreada no gráfico, facilitando a identificação visual da faixa correspondente ao limiar de relevância clínica e tornando a interpretação do Forest Plot mais intuitiva.
forest(meta_avc,
label.left = "Favours Control",
label.right = "Favours Video Games",
cid = 2.5,
col.cid = "firebrick",
lty.cid = 2,
fill = "lavender",
fill.cid= "white")