Nesse banco de dados vamos examinar o resultado de 13 estudos analisando a efetividade da vacina Bacillus Calmette-Guerin (BCG) contra tuberculose.
Análises em R requerem a utilização de pacotes com as ferramentas necessárias para a análise de dados. Nesse momento utlizaremos os pacote metafor.
library("metafor")
## Loading required package: Matrix
## Loading required package: metadat
##
## Loading the 'metafor' package (version 3.8-1). For an
## introduction to the package please type: help(metafor)
Primeiro precisamos visualizar nosso banco de dados. O banco de dados pode ser visualizado em dat.bcg. Para facilitar tanto a visualização como a análise ao longo das linha de código, nos vamos renomear o banco de dados.
print(dat.bcg)
## trial author year tpos tneg cpos cneg ablat alloc
## 1 1 Aronson 1948 4 119 11 128 44 random
## 2 2 Ferguson & Simes 1949 6 300 29 274 55 random
## 3 3 Rosenthal et al 1960 3 228 11 209 42 random
## 4 4 Hart & Sutherland 1977 62 13536 248 12619 52 random
## 5 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate
## 6 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate
## 7 7 Vandiviere et al 1973 8 2537 10 619 19 random
## 8 8 TPT Madras 1980 505 87886 499 87892 13 random
## 9 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random
## 10 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic
## 11 11 Comstock et al 1974 186 50448 141 27197 18 systematic
## 12 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic
## 13 13 Comstock et al 1976 27 16886 29 17825 33 systematic
De agora em diante o banco de dados dat.bcg recebe o nome dados. Para isso, basta apenas designar o banco de dados ao nome de sua preferência.
Nesse caso teremos: dados <- dat.bcg
Essa função tem por objetivo calcular o tamanho do efeito de variáveis. Esse passo é de fundamental importância para a metanálise. Essa função esta integrada ao pacote metafor, dessa forma, nenhuma instalação adicional é necessária.
dados <- dados <- escalc(measure = "RR", ai = tpos, bi = tneg,
ci = cpos, di = cneg,
slab = paste(author, ", ", year, sep = ""), data = dat.bcg)
OBS: Para uma descrição detalhada da função escalc recomendamos a função help(escalc).
Usaremos uma análise de efeito randômico (analise de variância e logarítmica de risco). Também iremos renomear essa análise como fizemos na etapa anterior com a função escalc.
resultado <- rma(yi, vi, data = dados)
Nessa etapa, conluiremos com forest plot de nossa análise. Se todas as linhas de código anteriores estiverem corretas, a criação do forest plot obedecerá uma linha de código simples. É importante que o leitor tenha em mente que essa é apenas uma análise rápida e “crua”. Existem etapas adicionais que certamente darão um rigor maior a análise dos dados.
forest(resultado)
Podemos também adicionar outros comandos para deixar o forest plot mais apresentável. Para inserir os título é necessário utulizar o argumento header. Esse argumento pode ser um operador lógico (TRUE or FALSE), ou pode ser uma string da sua escolha. No exemplo abaixo irei inserir “Author(s) and Year”.
forest(resultado, header = "Author(s) and Year")
É possivel fazer modificações mais específicas no forest plot. Aqui modificaremos a cor do diamente. Essa abordagem não é muito comum, mas pode auxiliar num destaque do tamanho de efeito final.
forest(resultado, header = "Author(s) and Year", col = "red")
É possivel adicionar predições por mei da função predict.rma. ela calcula valores previstos, erros padrão correspondentes, intervalos de confiança e intervalos de previsão da função rma (que foi renomeada como resultado)
predict(resultado, transf = exp)
##
## pred ci.lb ci.ub pi.lb pi.ub
## 0.4894 0.3441 0.6962 0.1546 1.5490
Agora vamos adicionar a predição dos valores obtidos no nosso forest plot usando o argumento addpred
forest(resultado, header = "Author(s) and Year", col = "red", addpred = TRUE)
Existe uma grande variadedade de possibilidades para modificões nos forest plot. Aqui mostraremos algumas que podem ser muito úteis e trazer mais detalhes na análise.
forest(resultado, atransf = exp, at = log(c(.05, .25, 1, 4)), xlim = c(-16, 6),
ilab = cbind(dados$tpos, dados$tneg, dados$cpos, dados$cneg), ilab.xpos = c(-9.5, -8, -6, -4.5),
cex = .75, header = "Author(s) and Year", col = "red",
addpred = TRUE)
op <- par(cex = .75, font = 2)
text(c(-9.5, -8, -6, -4.5), resultado$k + 2, c("TB+", "TB-", "TB+", "TB-"))
text(c(-8.75, -5.25), resultado$k + 3, c("Vaccinated", "Control"))
par(op)
A idéia básica de tutorial foi apresentar de maneira rápida uma metanálise realizada com o software R. Muitas outras análises e adequações podem ser feitas. Para uma análise mais aprofundada nesse tópico recomendamos esse material adicional.