메타분석을 할 수 있는 R 코드입니다. 기본적인 effect size 계산과 forest plot 및 funnel plot을 그려보도록 하겠습니다.
메타분석에 대한 소개는 다루지 않습니다. 자세히 공부해보고 싶으신 분은 Introduction to Meta-Analysis란 책을 추천해 드립니다.

1. 데이터 정리

R의 meta package를 이용하여 분석을 진행합니다.
엑셀 양식은 다음 github에 제시하였습니다. 사실 어떤 양식으로 정리를 하던지 상관 없지만 아래의 코드를 사용하기 위해선 정해진 양식에 따라 정리를 해야 합니다.

메타분석을 아는 것 보다 중요한 것은 논문을 수집하고 수집된 각각의 논문을 정확하게 분석하고 입력하는 것입니다. 만약 사용할 데이터 자체가 잘못되었다면 분석은 의미가 없습니다. 메타분석은 단지 연구를 할 수 있는 하나의 툴일 뿐입니다. 달을 봐야 하는데 달을 가리키는 손가락만 보지 않기를 바랍니다.

2. R codes

먼저 meta packagedplyr package를 설치합니다.

install.packages("meta")
install.packages("dplyr")
install.packages("readxl")

설치한 김에 실행도

library(dplyr)
library(meta)

setwd를 이용해 데이터의 위치(working directory)를 지정해 줍니다.

setwd("E:/GitHub/animal_science")

사용할 데이터를 지정하고

#read df
data<-readxl::read_excel("meta_dataframe.xlsx")

effect size를 계산하고 forest plot 및 funnel plot을 그려줄 함수를 만듭니다.

#function
meta_function<-function(data, treats, responses){
  #packages
  require(meta)
  require(dplyr)

  #data filtering
  meta1<-filter(data, treat==treats)
  meta2<-filter(meta1, response==responses)

  #meta-analysis
  meta3<-metacont(n1,m1,s1,n2,m2,s2, sm="SMD", study, data=meta2)
  forest(meta3, leftcols="studlab", digits=3)
  funnel(meta3)
}

함수를 동작시킵니다.

meta_function(data,"Sodium bicarbonate", "pH")

예쁘게 나옵니다.

for 문을 이용해 조사한 모든 경우의 수를 분석하는 코드는 다음과 같습니다.

#packages
library(meta)
library(dplyr)

#read df
df<-readxl::read_excel("meta_dataframe.xlsx")

#filtering the data
treat<-group_by(df, treat) %>% summarise() #grouping the treatment
n<-nrow(treat)

#for loop
for(i in 0:(n-1)){
  i=i+1
  trt<-treat[i,1]
  meta<-filter(df, treat==paste(trt[1,1]))

  response<-group_by(meta, response) %>% summarise() #grouping the response
  m<-nrow(response)

  for(j in 0:(m-1)){
    j=j+1
    resp<-response[j,1]

    meta1<-filter(meta, response==paste(resp[1,1]))
    meta2<-metacont(n1,m1,s1,n2,m2,s2, sm="SMD", study, data=meta1)

    forest(meta2, leftcols="studlab", digits=3)
    funnel(meta2)
  }
}