Effect Sizes

Uma introdução prática tamanho de Efeitos para metanálise em R.

Effect Sizes

Uma introdução prática aos tamanho de efeitos para metanálise em R

1. Fundamentos

1.1. O que é tamanho de efeito?

O tamanho de efeito é uma métrica utilizada para quantificar a relação entre duas entidades, capturando tanto a direção quanto a magnitude desse fenômeno. Diferente de um simples teste de hipótese (que diz se algo funcionou ou não), o tamanho de efeito nos diz o quanto funcionou. Essencialmente, é a moeda comum que permite comparar e combinar resultados de estudos diferentes em uma metanálise.

1.2. Entendendo Amostragem

a) População vs. Amostragem

Imagine que quiséssemos saber o nível médio exato de Hemoglobina Glicada (HbA1c) de todos os pacientes diabéticos do mundo sob tratamento com um novo fármaco.

Se tivéssemos recursos infinitos, mediríamos a HbA1c de cada um desses milhões de pacientes. Ao final, teríamos uma distribuição com uma média exata (ex: 7,5%) e um desvio padrão exato. Na estatística, chamamos esses valores de Parâmetros Populacionais. Eles representam a verdade biológica absoluta sobre aquele tratamento.

o mundo real, nunca temos tempo, dinheiro ou capacidade logística para medir a população inteira. É aqui que entra a ciência prática: nós fazemos uma Amostragem.

Quando um pesquisador publica um Ensaio Clínico Randomizado (RCT) com 100 pacientes para testar esse fármaco, ele está pegando apenas uma pequena fatia da população global. Com base nos dados desses 100 pacientes, ele calcula uma média e um desvio padrão. Mas atenção: estes não são os Parâmetros Populacionais. Eles são apenas Estimativas.


A Realidade Estatística: É extremamente improvável que a média de HbA1c encontrada nesse estudo seja exatamente igual à média real da população mundial (7,5%). Sempre haverá um erro aleatório.


b) Teorema do Limite Central: E se repetíssemos a amostragem?

O que aconteceria se, em vez de fazer apenas um estudo medindo a HbA1c de 100 pacientes, nós repetíssemos esse mesmo estudo 1.000 vezes? Teríamos 1.000 médias diferentes (7,2%, 7,1%, 7,5%, 7,3%…). Se colocarmos todas essas médias em um gráfico (histograma), observaremos um fenômeno fascinante:

  1. A maioria das médias dos estudos vai se acumular em torno de um valor central.

  2. Algumas poucas médias (os estudos “azarados” ou extremos) ficarão mais afastadas.

Aqui está representada uma distribuição verdadeira do nível de HbA1C em % de uma população. Foram feitos 10 estudos com 3 participantes que tentaram estimar a média da hemoglobina glicada da população. Perceba que esses estudos não conseguem estimar perfeitamente a média populacional. Existe uma diferença que é chamada de erro amostral.

Figure 1: Aqui está representada uma distribuição verdadeira do nível de HbA1C em % de uma população. Foram feitos 10 estudos com 3 participantes que tentaram estimar a média da hemoglobina glicada da população. Perceba que esses estudos não conseguem estimar perfeitamente a média populacional. Existe uma diferença que é chamada de erro amostral.

Essa coleção de médias de vários estudos hipotéticos cria o que chamamos de Distribuição Amostral. Aqui entra uma das regras mais importantes da estatística para a metanálise. Você pode se perguntar: “E se os dados originais dos pacientes não forem normais?” (Ex: tempo de internação hospitalar, que geralmente não segue uma curva normal).

O Teorema do Limite Central afirma que, independentemente da distribuição dos dados originais (seja uniforme, exponencial, etc.), se pegarmos as médias dessas amostragens, a distribuição dessas médias será sempre Normal (uma curva de sino).

Foram retiradas amostras pequenas (n = 5), médias (n = 30) e grandes (n = 100) de uma distribuição populacional exponencial e calculadas a média de cada amostra. Perceba que a distribuição amostral das médias (mesmo que a distribuição amostral original não seja normal) vai aproximando-se de uma distribuição normal. Perceba também que quanto maior a amostra menor o desvio padrão dessa distribuição amostral (vamos chamar depois isso de menor erro amostral :D)

Figure 2: Foram retiradas amostras pequenas (n = 5), médias (n = 30) e grandes (n = 100) de uma distribuição populacional exponencial e calculadas a média de cada amostra. Perceba que a distribuição amostral das médias (mesmo que a distribuição amostral original não seja normal) vai aproximando-se de uma distribuição normal. Perceba também que quanto maior a amostra menor o desvio padrão dessa distribuição amostral (vamos chamar depois isso de menor erro amostral :D)


Por que isso importa na medicina? Não precisamos nos preocupar tanto se a variável biológica original (como carga viral ) tem uma distribuição estranha. Desde que tenhamos um número amostral suficiente (geralmente acima de 30), podemos assumir que as médias dos estudos que vamos combinar na metanálise se comportam como uma curva Normal.


c) Erro Padrão: Quão precisa é a média das amostragens?

Agora que sabemos que as médias de vários estudos formam uma curva, precisamos medir a “largura” dessa curva. É aqui que muita gente confunde Desvio Padrão com Erro Padrão. Vamos diferenciar:

Simulação feita com 5.000 estudos com tamanho amostral pequeno (n = 30) com média verdadeira de HbA1c de 7% e desvio padrão de 1%. Perceba que esses 5.000 estudos tem uma distribuição amostral de média seguindo uma distribuição normal. O desvio padrão dessa distribuição amostral chama-se erro padrçao.

Figure 3: Simulação feita com 5.000 estudos com tamanho amostral pequeno (n = 30) com média verdadeira de HbA1c de 7% e desvio padrão de 1%. Perceba que esses 5.000 estudos tem uma distribuição amostral de média seguindo uma distribuição normal. O desvio padrão dessa distribuição amostral chama-se erro padrçao.


Como interpretar?: O Erro Padrão é uma medição do quão representativas são nossas amostragens em relação à população.

Foi feita uma simulação com desvio padrão fixo de 15 e valores crescentes de tamanho amostral (5, 10, 15...). Perceba que o erro padrão decresce aproximadamente exponencialmente com o tamanho amostral.

Figure 4: Foi feita uma simulação com desvio padrão fixo de 15 e valores crescentes de tamanho amostral (5, 10, 15…). Perceba que o erro padrão decresce aproximadamente exponencialmente com o tamanho amostral.

Nota: O Erro Padrão será sempre menor que o Desvio Padrão, pois as médias são naturalmente menos dispersas do que as observações individuais.

Em cinza temos a distribuição populacional do nível de HbA1c (%), perceba que ela é mais espalhada. Ao fazer estudos para retirar a média desse valor, temos uma quantidade menos espalhada de médias. O desvio padrão dessa distribuição amostral é chamado de erro padrão.

Figure 5: Em cinza temos a distribuição populacional do nível de HbA1c (%), perceba que ela é mais espalhada. Ao fazer estudos para retirar a média desse valor, temos uma quantidade menos espalhada de médias. O desvio padrão dessa distribuição amostral é chamado de erro padrão.


d) Erro Padrão: E se eu tiver apenas um estudo?

Você deve estar pensando: “Mas eu só tenho UM estudo em mãos, eu não repeti a amostragem 1.000 vezes. Como eu descubro o Erro Padrão?”

A estatística nos dá um atalho. É possível estimar o erro padrão tendo apenas uma amostragem (o estudo que você está lendo). Existe uma “Fórmula Especial” para o Erro Padrão da Média:

\[SE = \frac{s}{\sqrt{n}}\]

Onde:

Interpretação para Metanálise: Olhe para a fórmula. O \(n\) está no denominador. Isso prova matematicamente que quanto maior o número de pacientes (\(n\)), menor será o erro padrão (\(SE\)).Na metanálise, estudos com \(SE\) menor (mais precisos) ganharão mais peso na decisão final.


2. Dados Contínuos (Variáveis Numéricas)

2.1. Grupo Único: Média Aritmétrica Simples

A média aritmética é uma das medidas de tendência central possíveis de serem utilizadas em metanálises. Ela deve ser necessariamente utilizada quando todos os estudos utilizam a mesma métrica e não há um grupo controle. Por exemplo, para investigar a altura média de uma população.

Ela é calculada da seguinte forma:

\[ \bar{x} = \frac{\sum_{i=1}^{n} x_i}{n} \]

# Definir semente para reprodutibilidade
set.seed(100)

# Gerar uma amostra aleatória (n=50) com média 20 e desvio padrão 5
sample <- rnorm(n = 50, mean = 20, sd = 5)

# Calcular a média
media_calculada <- mean(sample)
media_calculada
[1] 20.40754


Nós já falamos sobre como calcular o erro padrão da média. Mas aqui está relembrando para você!

\[ SE_{\bar{x}} = \frac{s}{\sqrt{n}} \]

# Calcular o Erro Padrão (SD dividido pela raiz quadrada de n)
erro_padrao <- sd(sample) / sqrt(50)
erro_padrao
[1] 0.5791284


Para conduzir uma metanálise de médias, seu banco de dados precisa obrigatoriamente conter três informações (colunas) de cada estudo incluído:



Estudos n mean sd
Lee (2014) 25 55 1.2
Silva (2016) 30 60 1.3
Ferreira (2020) 28 61 0.9



2.2. Dois grupos com mesma escala: Diferença de Médias Brutas (Não Padronizadas)

a) O que é?

A Diferença de Médias (MD) bruta é a forma mais simples e intuitiva de medir um efeito. Ela é simplesmente a subtração da média do grupo intervenção pela média do grupo controle.

\[ MD_{between} = \bar{x}_1 - \bar{x}_2 \]
# Grupo 1 (Intervenção): Média 130 mmHg, SD 15
# Grupo 2 (Controle): Média 140 mmHg, SD 15

n1 <- 20; m1 <- 130; s1 <- 15
n2 <- 20; m2 <- 140; s2 <- 15

MD <- m1 - m2
MD
[1] -10


Quando usar? Só podemos usar a MD quando todos os estudos incluídos na metanálise mediram o desfecho exatamente na mesma escala/unidade. Exemplo Prático (Pressão Arterial): Imagine que você está estudando um novo anti-hipertensivo.

Como ambos falam a “mesma língua” (mmHg), podemos calcular que o remédio baixou a pressão em média -10 mmHg. Isso é uma diferença de média bruta.

b) Erro Padrão

❓ Entendendo a Problemática

Nós temos duas formas de calcular o erro padrão, a depender se considerarmos que as duas medidas pertencentes a uma mesma população ou duas populações diferentes. No primeiro caso, consideramos que o desvio padrão verdadeiro de cada grupo é igual entre si. Ou seja, está é um pressuposto estatístico de homocedasticidade. No segundo caso os desvio padrões não tem o mesmo valor, então estamos falando de heterocedasticidade.

Em cenários de desbalanceamento amostral (\(n_1 \neq n_2\)), a abordagem agrupada falha em capturar a verdadeira incerteza da estimativa. Isso gera um erro comum em metanálise, já que o estudo com menor número de pacientes geralmente possui a maior variância (grande variabilidade em amostra pequena). Isso faz com quê:

⚖️ Assumindo o mesmo desvio padrão (homocedasticidade)

Calcula-se o desvio padrão agrupado (\(s_{pooled}\)) através da fórmula

\[ s_{pooled} = \sqrt{\frac{(n_1 - 1)s^2_1 + (n_2 - 1)s^2_2}{n_1 + n_2 - 2}} \]

Então, utilizamos esse desvio padrão agrupado para calcular o erro padrão. \[ SE_{MD_{between}} = s_{pooled} \sqrt{\frac{1}{n_1} + \frac{1}{n_2}} \]

s_pooled <- sqrt( (((n1-1)*s1^2) + ((n2-1)*s2^2)) / (n1 + n2 - 2) )

se_md <- s_pooled * sqrt((1/n1) + (1/n2))
se_md
[1] 4.743416
≠ Assumindo desvios padrões diferentes (heterocedasticidade)
\[ SE_{unpooled} = \sqrt{ \frac{s_1^2}{n_1} + \frac{s_2^2}{n_2} } \]
se_unpooled <- sqrt( (s1^2 / n1) + (s2^2 / n2) )

se_unpooled
[1] 4.743416


Para conduzir uma metanálise de diferenças de médias brutas, seu banco de dados precisa obrigatoriamente conter seis informações (colunas) de cada estudo incluído:


Estudos n_tratamento mean_tratamento sd_tratamento n_controle mean_controle sd_controle
Lee (2014) 25 55 1.2 25 50 1.5
Silva (2016) 30 60 1.3 25 48 1.4
Ferreira (2020) 28 61 0.9 25 40 1.2


2.3. Dois grupos com escalas diferentes: Diferença de Médias Padronizadas

a) O que é?

A diferença de médias padronizadas (SMD) expressa a diferença entre os grupos em unidades de desvios-padrão, e não na unidade original de medida. Quando usar? É essencial quando os estudos medem o mesmo desfecho (construto), mas usam escalas/instrumentos diferentes.

Exemplo Prático (Depressão): Você quer ver se Terapia Cognitiva Comportamental reduz depressão.Estudo A usou a Escala de Beck (BDI) (vai de 0 a 63).Estudo B usou a Escala de Hamilton (HAM-D) (vai de 0 a 50).Não podemos unir estudos que utilizam Beck com os que utilizam Hamilton sem fazer nenhum tratamento.

A solução é padronizar! Esse procedimento que falamos acima sobre calcular a diferença baseada em unidades de desvio padrão é, em outras palavras, calcular o Cohen’s d. Por exemplo, se o resultado for \(d = -0.5\), significa que o tratamento reduziu a depressão em “meio desvio padrão”, independente da escala usada.


Interpretação Visual (Sobreposição) O Cohen’s d nos diz o quanto as curvas dos dois grupos se separaram:

Representação visual do d de Cohen. Perceba que quanto maior o seu valor, maior a separação entre os grupos. E, assim, consequemente, menor será a área de intersecção entre as curvas. Por isso, que ele representa uma forma de quantificar a diferença entre grupos.

Figure 6: Representação visual do d de Cohen. Perceba que quanto maior o seu valor, maior a separação entre os grupos. E, assim, consequemente, menor será a área de intersecção entre as curvas. Por isso, que ele representa uma forma de quantificar a diferença entre grupos.

b) Erro Padrão

📌 Fórmula Mais Comum (Homocedasticidade)

Essa fórmula para o cálculo do d de Cohen utiliza o desvio padrão agrupado. E, como falamos antes, ele assume que ambos os desvios padrões são iguais. Porém, essa fórmula acaba sendo mais utilizada.

\[ d = \frac{\bar{x}_1 - \bar{x}_2}{s_{pooled}} \]

👀 Fórmulas para Heterocedasticidade

Existem duas formas de calcular o d de Cohen assumindo que os desvios não são os mesmos. Podemos fazer uma média entre os dois.

\[ d = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2 + s_2^2}{2}}} \] Uma forma mais comum e segura de fazer isso é utilizando uma métrica chamada Delta de Glass. Invés de dividir pela média de dois desvios padrões, dividimos apenas pelo desvio do grupo controle.

\[ \Delta_{\text{Glass}} = \frac{\bar{x}_1 - \bar{x}_2}{SD_{\text{controle}}} \]

Embora seja comum assumir variâncias iguais (Homocedasticidade) e usar o desvio padrão agrupado (Pooled) para calcular o d de Cohen, isso pode ser um erro se o tratamento alterar a variabilidade dos dados.

c) Correção para Tamanho Amostral Pequeno

Em estudos com amostras pequenas (especialmente quando o \(n\) total \(\le 20\)), o cálculo padrão do SMD tende a superestimar o verdadeiro tamanho do efeito na população. Isso ocorre porque o desvio padrão da amostra, usado no denominador do Cohen’s \(d\), tende a subestimar o desvio padrão real da população nesses casos.Como a metanálise frequentemente lida com estudos pequenos, usar o SMD bruto pode inflar artificialmente o resultado final da intervenção.

Para corrigir esse viés, aplicamos um fator de correção (\(J\)) ao SMD bruto. O resultado é uma métrica ajustada chamada Hedges’ \(g\).

\[g = \text{Cohen's } d \times J\]

O fator de correção \(J\) é sempre menor que 1, o que “puxa” o valor do efeito ligeiramente para baixo.

Convergência do g de Hedges para o d de Cohen a medida que o tamanho amostral aumenta. Ou seja, a diminuição do tamanho do efeito ocorre apenas em tamanhos amostrais pequenos.

Figure 7: Convergência do g de Hedges para o d de Cohen a medida que o tamanho amostral aumenta. Ou seja, a diminuição do tamanho do efeito ocorre apenas em tamanhos amostrais pequenos.

A fórmula de aproximação mais comum para esse fator depende do tamanho total da amostra (\(N\)):

\[J \approx 1 - \frac{3}{4N - 9}\]
smd_bruto <- 0.5   # Cohen's d
n_total   <- 10    # Amostra extremamente pequena (5 em cada grupo)

# Fator de correção J
correction_factor <- 1 - (3 / (4 * n_total - 9))

# Hedges' g
hedges_g_manual <- smd_bruto * correction_factor

c(smd_bruto = smd_bruto, hedges_g = hedges_g_manual)
smd_bruto  hedges_g 
0.5000000 0.4516129 

Um ponto de confusão comum na literatura científica é a nomenclatura. Muitos autores usam o termo “SMD” ou até mesmo “Cohen’s \(d\)” de forma genérica, mesmo quando aplicaram a correção de Hedges. Ao extrair dados para sua metanálise, é crucial verificar na metodologia do artigo se o valor reportado foi corrigido para viés de pequena amostra.

Para conduzir uma metanálise de diferenças de médias brutas, seu banco de dados precisa obrigatoriamente conter seis informações (colunas) de cada estudo incluído:


Estudos n_tratamento mean_tratamento sd_tratamento n_controle mean_controle sd_controle
Lee (2014) 25 55 1.2 25 50 1.5
Silva (2016) 30 60 1.3 25 48 1.4
Ferreira (2020) 28 61 0.9 25 40 1.2



2.4. Um grupo e duas métricas: Correlação

a) O que é?

A correlação é uma medida de tamanho de efeito que expressa a força da relação (“co-variação”) entre duas variáveis contínuas.Exemplo Prático: Imagine que queremos investigar a relação entre Idade (anos) e Pressão Arterial Sistólica (mmHg). Se a correlação for positiva e forte, significa que conforme a idade aumenta, a pressão também tende a subir.

A forma mais comum é a Correlação de Pearson (\(r\)). Uma de suas maiores vantagens é que ela padroniza os dados. Isso significa que não importa a unidade de medida usada no estudo original.Estudo Exemplo, o estudo A mediu altura em centímetros. Estudo B mediu altura em polegadas.Uma correlação de \(r=0.50\) no Estudo A é matematicamente idêntica a \(r=0.50\) no Estudo B, permitindo que comparemos os efeitos diretamente.

A correlação de Pearson é calculada da seguinte forma:

\[ r_{xy} = \frac{\sigma^2_{xy}}{\sigma_x \sigma_y} \]


E esse resultado pode ser obtido através da função cor:

x <- c(10, 12, 15, 20, 25)
y <- c(6, 16, 18, 21, 35)

# Correlação entre x e y 
r <- cor(x,y)
r
[1] 0.9481413


O erro padrão associado é calculado através da fórmula:

\[ SE_{r_{xy}} = \frac{1 - r^2_{xy}}{\sqrt{n - 2}} \]

b) Interpretando magnitude

Cohen propôs regras de bolso para classificar a força dessa relação, mas lembre-se que o contexto clínico importa muito.

c) O Problema Estatístico e a Solução (Fisher’s z)

Assim como acontece com proporções, correlações são “presas” dentro de um intervalo (de -1 a +1).Se um estudo encontra uma correlação muito alta (ex: \(r = 0.95\) entre dois testes diagnósticos), a distribuição amostral fica espremida no teto do 1.0, gerando erros padrões incorretos e enviesados.Para corrigir isso na metanálise, usamos a Transformação Fisher’s z. Ela “estica” o intervalo de -1 a 1 para infinito, tornando a distribuição Normal e permitindo cálculos precisos de erro padrão.

Aqui está a transformação feita para moldar a distribuição amostral em formato de distribuição normal:

\[ z = 0.5 \log_e \left( \frac{1 + r}{1 - r} \right) \]

# Calculate Fisher's z
z <- 0.5*log((1+r)/(1-r))
z
[1] 1.813054
Por que não podemos usar correlações brutas na metanálise? Aqui fizemos a simulação de 5.000 estudos pequenos (n=30) onde a correlação populacional é alta (0.85). Na distribuição amostral da correlação de Pearson vemos que ela fica assimétrica, espremida à direita. Quando fazemos a transformação de Fischer a distribuição torna-se aproximadamente normal e simétrica, com intervalos indo de menos a mais infinito.

Figure 8: Por que não podemos usar correlações brutas na metanálise? Aqui fizemos a simulação de 5.000 estudos pequenos (n=30) onde a correlação populacional é alta (0.85). Na distribuição amostral da correlação de Pearson vemos que ela fica assimétrica, espremida à direita. Quando fazemos a transformação de Fischer a distribuição torna-se aproximadamente normal e simétrica, com intervalos indo de menos a mais infinito.

Sabendo o tamanho amostral podemos calcular o erro padrão do Z de Fischer através dessa fórmula:

\[ SE_z = \frac{1}{\sqrt{n - 3}} \]


Para conduzir uma metanálise de correlação, seu banco de dados precisa obrigatoriamente conter duas informações (colunas) de cada estudo incluído:


Estudos n cor
Lee (2014) 25 0.88
Silva (2016) 30 0.80
Ferreira (2020) 28 0.71


3. Dados Binários (Sim/Não, Sucesso/Fracasso)

3.1. Grupo Único: Proporções

a) O que é?

A proporção é uma medida de tendência central que especifica quantas unidades de uma amostra pertencem a um subgrupo específico (ex: prevalência de uma doença). Novamente, trata-se de uma medida em que não há comparação de grupos. Ela varia entre 0 e 1 e é calculada dividindo o número de eventos (\(k\)) pelo tamanho total da amostra (\(n\)).

A proporção é calculada como:

\[ p = \frac{k}{n} \]

# Definir valores: k (eventos) e n (total)
k <- 50
n <- 200

# Cálculo da Proporção Bruta 
p <- k / n
p
[1] 0.25


O erro padrão da proporção é calculado como:

\[ SE_p = \sqrt{\frac{p(1-p)}{n}} \]
# Erro Padrão da Proporção
se_p <- sqrt((p * (1 - p)) / n)
se_p
[1] 0.03061862

b) O problema dos extremos

Como a proporção é limitada entre 0 e 1, surgem problemas quando o valor de \(p\) é muito próximo de 0 ou de 1.


A. Simulação de distribuição amostral de 10.000 estudos de grande tamanho (n = 300) em que a proporção populacional (verdadeira) é alta (0.95). Isso faz com que a distribuição de proporção bruta seja espremida e assimétrica para a direita. B. O erro padrão associado a essa distribuição é máximo  no centro e menor nas pontas, o que não é intuitivo pois nas pontas temos menor certeza.

Figure 9: A. Simulação de distribuição amostral de 10.000 estudos de grande tamanho (n = 300) em que a proporção populacional (verdadeira) é alta (0.95). Isso faz com que a distribuição de proporção bruta seja espremida e assimétrica para a direita. B. O erro padrão associado a essa distribuição é máximo no centro e menor nas pontas, o que não é intuitivo pois nas pontas temos menor certeza.

c) A solução 😁

Para corrigir isso em metanálises, utilizamos a transformação em log natural - chamada de logit. Ela remove a restrição de intervalo 0-1, garantindo que a distribuição amostral seja aproximadamente normal e os erros padrão não sejam enviesados.

A transformação da proporção para logit da proporção:

\[ p_{\text{logit}} = \log_e \left( \frac{p}{1-p} \right) \]

# O logit transforma o intervalo 0-1 em -inf a +inf
p_logit <- log(p / (1 - p))
p_logit
[1] -1.098612


O erro padrão do logit da proporção:

\[ SE_{p_{\text{logit}}} = \sqrt{\frac{1}{np} + \frac{1}{n(1-p)}} \]

se_logit <- sqrt((1 / (n * p)) + (1 / (n * (1 - p))))
se_logit
[1] 0.1632993


A. Simulação de distribuição amostral de 10.000 estudos de grande tamanho (n = 300) em que a proporção populacional (verdadeira) é alta (0.95) após a transformação logit. Isso faz com que a distribuição assuma um formato aproximadamente normal em que os limites transformam-se em menos e mais infinito. B. O erro padrão associado a essa distribuição é máximo nas pontas e menor no centro, o queé intuitivo pois no centro temos maior certeza.

Figure 10: A. Simulação de distribuição amostral de 10.000 estudos de grande tamanho (n = 300) em que a proporção populacional (verdadeira) é alta (0.95) após a transformação logit. Isso faz com que a distribuição assuma um formato aproximadamente normal em que os limites transformam-se em menos e mais infinito. B. O erro padrão associado a essa distribuição é máximo nas pontas e menor no centro, o queé intuitivo pois no centro temos maior certeza.

Para conduzir uma metanálise de médias, seu banco de dados precisa obrigatoriamente conter duas informações (colunas) de cada estudo incluído:


Estudos event n
Lee (2014) 25 55
Silva (2016) 30 60
Ferreira (2020) 28 61


3.2. Razão de dois Grupos: Razão de Riscos (Risk Ratio)

a) O que é?

A Razão de Risco (também conhecida como Risco Relativo ou Risk Ratio - RR) é uma medida de efeito intuitiva e amplamente utilizada em pesquisas médicas, especialmente em ensaios clínicos controlados com desfechos binários, como “morte vs. sobrevida” ou “doença vs. sem doença”.

O RR compara a probabilidade de um evento ocorrer no grupo tratado versus no grupo controle. Os dados brutos são geralmente extraídos de uma tabela \(2 \times 2\):

Evento (\(E\)) Não Evento (\(\neg E\)) Total
Tratamento \(a\) \(b\) \(n_{trat}\)
Controle \(c\) \(d\) \(n_{cont}\)


O risco em cada grupo é calculado dividindo o número de eventos pelo total de pacientes naquele grupo. Assim, a Razão de Risco é definida como:

\[ RR = \frac{p_{trat}}{p_{cont}} = \frac{a / n_{trat}}{c / n_{cont}} \]

Vamos supor que estamos avaliando a segurança de um fármaco para o sistema renal. Então, separamos um grupo controle um grupo tratamento (que tomou o fármaco). Um \(RR\) de 2 significa que pacientes que utilizam o fármaco apresentam um risco duas vezes maior de desenvolver nefropatia em comparação àqueles que utilizam placebo. Então, por exemplo, se o grupo controle apresentou um risco de 5% de nefropatia, o grupo tratamento apresentou de 10%.

b) Novamente… O problema da assimetria 😁

Embora o RR seja intuitivo para interpretação clínica, ele possui propriedades estatísticas que dificultam a metanálise direta. Efeitos de mesma magnitude não são equidistantes em torno do valor nulo (1).

Um efeito benéfico que reduz o risco pela metade resulta em um RR de 0,5. O efeito oposto (dobrar o risco) resulta em um RR de 2,0 (e não 1,5).

Isso significa que a distribuição das Razões de Risco não segue uma curva normal. Para corrigir isso e garantir a normalidade assintótica necessária para os cálculos de ponderação na metanálise, realizamos uma transformação logarítmica natural:

\[ \text{Log}RR = \ln(RR) \]

Nesta escala logarítmica, os valores são centralizados em 0 (nenhum efeito) e tornam-se simétricos (ex: \(\ln(0,5) \approx -0,69\) e \(\ln(2) \approx +0,69\)).

c) Erro Padrão

\[ SE_{LogRR} = \sqrt{\frac{1}{a} - \frac{1}{n_{trat}} + \frac{1}{c} - \frac{1}{n_{cont}}} \]

events_treat <- 46    
n_treat      <- 248   
events_ctrl  <- 77    
n_ctrl       <- 251 

# Riscos Individuais 
risk_treat <- events_treat / n_treat
risk_ctrl  <- events_ctrl / n_ctrl

# Razão de Risco (RR) 
RR <- risk_treat / risk_ctrl

# Transformação Logarítmica 
log_RR <- log(RR)

# Erro Padrão (SE) na escala Log 
se_log_rr <- sqrt((1/events_treat) + (1/events_ctrl) - (1/n_treat) - (1/n_ctrl))

c(risk_ratio = RR, log_RR = log_RR, se_RR = se_log_rr)
risk_ratio     log_RR      se_RR 
 0.6046292 -0.5031398  0.1634314 


Para conduzir uma metanálise de razão de riscos, seu banco de dados precisa obrigatoriamente conter quatro informações (colunas) de cada estudo incluído:


Estudos event_tratamento n_tratamento event_controle n_controle
Lee (2014) 25 55 20 55
Silva (2016) 30 60 22 60
Ferreira (2020) 28 61 21 61


3.3. Outra razão de dois grupos: Razão de Chances (Odds Ratio)

a) O que é chance?

Enquanto o Risk Ratio compara probabilidades (riscos), o Odds Ratio (OR), ou Razão de Chances, compara… chances (Odds). Embora pareçam sinônimos na linguagem informal, em estatística, “Risco” e “Chance” são matematicamente distintos. A intuição por trás do Odd é a razão entre o sucesso e o fracasso (ou evento e não-evento).

Imagine que estamos analisando um time de futebol e vamos anotar quantas vitórias e derrotas ele tem. Vamos convencionar que 🔵 = Vitória (Evento/Sucesso) e 🔴 = Derrota (Não-Evento/Falha). Então, vamos supor que esse time em análise teve 3 vitórias e 2 derrotas (🔵🔵🔵🔴🔴). Assim:

\[P(\text{Vencer}) = \frac{3 \text{ (azuis)}}{5 \text{ (total)}} = 0,6 \text{ ou } 60\%\]

\[\text{Odd} = \frac{3 \text{ (azuis)}}{2 \text{ (vermelhos)}} = 1,5\]

Mais formalmente podemos pensar em Razão de Chances a partir da tabela \(2 \times 2\):

Evento (\(E\)) Não Evento (\(\neg E\))
Tratamento \(a\) \(b\)
Controle \(c\) \(d\)

Analisando a tabela vemos que temos duas razões de chances. A do evento ocorrer no grupo tratado e de ocorrer no grupo controle:

\[ \text{Odd}_{trat} = \frac{a}{b} \quad \text{e} \quad \text{Odd}_{cont} = \frac{c}{d} \]

b) E novamente… A assimetria!

Assim como no Risco Relativo, os Odds sofrem com problemas de assimetria.

Note que o inverso de 0,25 é 4. Em uma escala linear, 0,25 está muito perto de 1 (o valor nulo), enquanto 4 está muito longe. Para resolver isso e realizar a metanálise, usamos a transformação logarítmica. O logaritmo do Odd é chamado de Logit.

\[\text{Logit} = \ln(\text{Odd}) = \ln\left(\frac{p}{1-p}\right)\]

Ao aplicar o Log, tornamos a distribuição simétrica ao redor de zero:

Aqui está um resumo de todas as transformações que falamos acima!

Medida Original Problema Estatístico Transformação Necessária
Proporção Presa entre 0 e 1 Logit: \(\ln(\frac{p}{1-p})\)
Razão de Risco (RR) Razão assimétrica Log Natural: \(\ln(RR)\)
Razão de Chances (OR) Assimétrica e não linear Log Natural: \(\ln(OR)\)
Correlação (\(r\)) Teto/Chão em +1 e -1 Fisher’s \(z\): \(0.5 \times \ln(\frac{1+r}{1-r})\)


c) E se divirmos duas chances? Temos as razões de chances!

O Odds Ratio (OR) é simplesmente a chance do evento no grupo tratado dividida pela chance do evento no grupo controle.

\[ OR = \frac{\text{Odd}_{trat}}{\text{Odd}_{cont}} = \frac{a/b}{c/d} = \frac{a \times d}{b \times c} \]

d) Erro Padrão

E também podemos calcular o erro padrão do odds ratio atravé da fórmula:

\[ SE_{\text{Log}OR} = \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}} \]

events_treat <- 23    
no_events_treat <- 117 
events_ctrl  <- 6     
no_events_ctrl <- 210  

# Cálculo dos Odds Individuais 
odd_treat <- events_treat / no_events_treat
odd_ctrl  <- events_ctrl / no_events_ctrl

# Odds Ratio (OR) 
OR <- odd_treat / odd_ctrl

# Erro Padrão (Log Scale) 
log_OR <- log(OR)
se_log_or <- sqrt((1/events_treat) + (1/no_events_treat) + 
                  (1/events_ctrl) + (1/no_events_ctrl))

c(chance_tratamento = odd_treat, chance_controle = odd_ctrl)
chance_tratamento   chance_controle 
       0.19658120        0.02857143 


e) Diferença de Odds Ratio para Risk Ratio

Quando eles divergem? Quando o evento é raro (ex: < 10%), o \(OR \approx RR\). Porém, quando o evento é comum, o OR tende a exagerar o efeito percebido. Observe este exemplo prático de um estudo:

O Risco Relativo é 0,5 (redução de 50%). O Odds Ratio é 0,47. Note que, mesmo com números pequenos, eles já não são idênticos. Em eventos frequentes, essa distância aumenta drasticamente. Porém, fique tranquilo que existem fórmulas para converter OR em RR se necessário!


Para conduzir uma metanálise de razão de chances, seu banco de dados precisa obrigatoriamente conter quatro informações (colunas) de cada estudo incluído:


Estudos event_tratamento n_tratamento event_controle n_controle
Lee (2014) 25 55 20 55
Silva (2016) 30 60 22 60
Ferreira (2020) 28 61 21 61


3.4. Diferença Absoluta de Dois Grupos: Diferença de Riscos (Risk Difference)

Além das razões (divisões), existe uma terceira medida fundamental: a Diferença de Risco (RD), também chamada de Redução Absoluta do Risco. Ao contrário do RR e OR que são medidas relativas, a RD é uma medida absoluta.

Ela é calculada simplesmente subtraindo o risco do grupo controle pelo risco do grupo intervenção.

\[RD = Risk_{trat} - Risk_{cont}\]

Exemplo: Imagine um estudo sobre apendicectomia:

\[RD = 5,3\% - 1,3\% = +4,0\%\]

Isso significa que a cirurgia adicionou um risco de 4% no desenvolvimento de uma infecção local.

# Grupo tratado
events_treat <- 53
n_treat      <- 1000
non_events_treat <- n_treat - events_treat

# Grupo Controle 
events_ctrl  <- 13
n_ctrl       <- 1000
non_events_ctrl <- n_ctrl - events_ctrl

# Riscos do Grupo Tratamento e Controle
risk_treat <- events_treat / n_treat
risk_ctrl  <- events_ctrl / n_ctrl

# Diferença de Risco (RD) 
RD <- risk_treat - risk_ctrl

RD
[1] 0.04


Para conduzir uma metanálise de diferença de riscos, seu banco de dados precisa obrigatoriamente conter quatro informações (colunas) de cada estudo incluído:


Estudos event_tratamento n_tratamento event_controle n_controle
Lee (2014) 25 55 20 55
Silva (2016) 30 60 22 60
Ferreira (2020) 28 61 21 61


4. Pacote meta

O pacote meta é amplamente adotado em publicações médicas por seguir rigorosamente a metodologia da Cochrane Collaboration. Ele automatiza o fluxo complexo de transformar dados brutos em estimativas combinadas.

4.1. Entendendo os Argumentos das Funções

As funções principais (metabin, metacont, metacor) compartilham argumentos que definem o rigor da sua análise:

4.2. Os Bastidores: TE e seTE

Ao rodar o código, o R gera um objeto que armazena dois valores fundamentais que sãoa acessados através do $:

4.3. Dados Contínuos

Primeiro devemos carregar os pacotes que iremos utilizar. Aqui vamos utilizar o meta e o dplyr. Se não os tem baixado pode utilizar o install.packages.

library(meta)
library(dplyr)

Agora vamos simular dois estudos que investigaram a atuação de um fármaco em diminuir a pressão arterial. Então, a medida é a pressão arterial média.

df_cont <- data.frame(
  estudo = c("Estudo A", "Estudo B"),
  n_e = c(50, 100), m_e = c(120, 115), sd_e = c(10, 12), # Grupo Experimental
  n_c = c(50, 100), m_c = c(130, 130), sd_c = c(10, 12)  # Grupo Controle
)

df_cont
    estudo n_e m_e sd_e n_c m_c sd_c
1 Estudo A  50 120   10  50 130   10
2 Estudo B 100 115   12 100 130   12

a) Diferença de Médias - metacont

# Note: pooledvar=FALSE aplica a heterocedasticidade (Unpooled) como discutido.
meta_md <- metacont(n.e = n_e, mean.e = m_e, sd.e = sd_e,
                    n.c = n_c, mean.c = m_c, sd.c = sd_c,
                    data = df_cont, studlab = estudo,
                    sm = "MD", pooledvar = FALSE)

df_cont %>%
  mutate(mean_diff = meta_md$TE,
         se_mean_diff = meta_md$seTE)
    estudo n_e m_e sd_e n_c m_c sd_c mean_diff se_mean_diff
1 Estudo A  50 120   10  50 130   10       -10     2.000000
2 Estudo B 100 115   12 100 130   12       -15     1.697056

b) Diferença de Médias Padronizadas - metacont

# O pacote 'meta' usa Hedges' g por padrão para SMD.
meta_smd <- metacont(n.e = n_e, mean.e = m_e, sd.e = sd_e,
                     n.c = n_c, mean.c = m_c, sd.c = sd_c,
                     data = df_cont, studlab = estudo,
                     sm = "SMD", method.smd = "Hedges")

df_cont %>%
  mutate(hedges_g = meta_smd$TE,
         se_hedges_g = meta_smd$seTE)
    estudo n_e m_e sd_e n_c m_c sd_c   hedges_g se_hedges_g
1 Estudo A  50 120   10  50 130   10 -0.9923241   0.2124035
2 Estudo B 100 115   12 100 130   12 -1.2452582   0.1547602

c) Correlação - metacor

Aqui vamos simular dois estudos que avaliaram a correlação entre idade e capacidade pulmonar.

df_cor <- data.frame(
  estudo = c("Estudo A", "Estudo B"),
  r = c(0.45, 0.60),
  n = c(120, 85)
)

df_cor
    estudo    r   n
1 Estudo A 0.45 120
2 Estudo B 0.60  85

O meta calcula automaticamente o z de Fischer:

# Cálculo automático de Fisher's z
meta_r <- metacor(cor = r, n = n, data = df_cor, 
                  studlab = estudo, sm = "ZCOR")

df_cor %>%
  mutate(fisher_z = meta_r$TE,
         se_fisher_z= meta_smd$seTE)
    estudo    r   n  fisher_z se_fisher_z
1 Estudo A 0.45 120 0.4847003   0.2124035
2 Estudo B 0.60  85 0.6931472   0.1547602

4.4. Dados Binários - metabin

Todas as formas de dado binário utilizam a função metabin o que muda é só o que vai ser inserido no argumento sm. Vamos simular dois estudos que investigaram a incidência de infarto em um pequeno município.

df_bin <- data.frame(
  estudo = c("Estudo A", "Estudo B"),
  ev_e = c(5, 46),  n_e = c(100, 248), # Experimental
  ev_c = c(10, 77), n_c = c(100, 251)  # Controle
)

df_bin
    estudo ev_e n_e ev_c n_c
1 Estudo A    5 100   10 100
2 Estudo B   46 248   77 251

a) Razão de Riscos

meta_rr <- metabin(event.e = ev_e, n.e = n_e, 
                   event.c = ev_c, n.c = n_c,
                   data = df_bin, studlab = estudo, 
                   sm = "RR")

df_bin %>%
  mutate(risk_ratio = meta_rr$TE,
         se_risk_ratio= meta_rr$seTE)
    estudo ev_e n_e ev_c n_c risk_ratio se_risk_ratio
1 Estudo A    5 100   10 100 -0.6931472     0.5291503
2 Estudo B   46 248   77 251 -0.5031398     0.1634314

b) Razão de Chances

meta_or <- metabin(event.e = ev_e, n.e = n_e, 
                   event.c = ev_c, n.c = n_c,
                   data = df_bin, studlab = estudo, 
                   sm = "OR")

df_bin %>%
  mutate(odds_ratio = meta_or$TE,
         se_odds_ratio= meta_or$seTE)
    estudo ev_e n_e ev_c n_c odds_ratio se_odds_ratio
1 Estudo A    5 100   10 100 -0.7472144     0.5671309
2 Estudo B   46 248   77 251 -0.6643764     0.2131285

c) Diferença de Riscos

meta_or <- metabin(event.e = ev_e, n.e = n_e, 
                   event.c = ev_c, n.c = n_c,
                   data = df_bin, studlab = estudo, 
                   sm = "OR")

df_bin %>%
  mutate(odds_ratio = meta_or$TE,
         se_odds_ratio= meta_or$seTE)
    estudo ev_e n_e ev_c n_c odds_ratio se_odds_ratio
1 Estudo A    5 100   10 100 -0.7472144     0.5671309
2 Estudo B   46 248   77 251 -0.6643764     0.2131285

Gostou? Veja também: