R$ meta package를 이용해 forest plot 및 funnel plot 그리기
by Youngjun Na
메타분석을 할 수 있는 R 코드입니다. 기본적인 effect size 계산과 forest plot 및 funnel plot을 그려보도록 하겠습니다.
메타분석에 대한 소개는 다루지 않습니다. 자세히 공부해보고 싶으신 분은 Introduction to Meta-Analysis란 책을 추천해 드립니다.
1. 데이터 정리
R의 meta package
를 이용하여 분석을 진행합니다.
엑셀 양식은 다음 github에 제시하였습니다. 사실 어떤 양식으로 정리를 하던지 상관 없지만 아래의 코드를 사용하기 위해선 정해진 양식에 따라 정리를 해야 합니다.
메타분석을 아는 것 보다 중요한 것은 논문을 수집하고 수집된 각각의 논문을 정확하게 분석하고 입력하는 것입니다. 만약 사용할 데이터 자체가 잘못되었다면 분석은 의미가 없습니다. 메타분석은 단지 연구를 할 수 있는 하나의 툴일 뿐입니다. 달을 봐야 하는데 달을 가리키는 손가락만 보지 않기를 바랍니다.
2. R codes
먼저 meta package
와 dplyr 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)
}
}
Subscribe via RSS