Network meta-analysis

Career/R|2023. 1. 6. 14:09

https://nogrowth.tistory.com/92

 

<Meta-analysis> #2. RevMan practice

지난번 참고했던 논문을 바탕으로, RevMan을 이용하여 같은 과정을 진행해보도록 하자. RevMan Review를 시작하면, 다음과 같은 화면을 볼 수 있고 해당 화면의 요소들을 하나씩 채워 나가는 방식으로

nogrowth.tistory.com

 

이전 글에서 RevMan에서 할 수 없었던 Network meta-analysis를 R을 이용하여 해 보자.

 

original article에서는 Stata의 mvmeta library를 사용하였으나 R이 친숙하므로 R을 사용한다. 

 

출처는 

https://bookdown.org/MathiasHarrer/Doing_Meta_Analysis_in_R/netwma.html#frequentist-ma

 

Chapter 12 Network Meta-Analysis | Doing Meta-Analysis in R

W hen we perform meta-analyses of clinical trials or other types of intervention studies, we usually estimate the true effect size of one specific treatment. We include studies in which the same...

bookdown.org

위의 글은 R에서 메타분석을 시행하는 방법을 잘 설명해 둔 bookdown으로서, 추후 참고하면 좋겠다.

 

 

Network meta-analysis

메타분석을 위해 연구를 수집하다 보면 다음과 같은 상황이 발생한다.

 

연구 1 : X 질환에 대해 A와 B 치료법을 비교

연구 2 : X 질환에 대해 A와 C 치료법을 비교

연구 3 : X 질환에 대해 B와 C 치료법을 비교

연구 4 : X 질환에 대해 A와 D 치료법을 비교

연구 5 : X 질환에 대해 B와 D 치료법을 비교

연구 6 : X 질환에 대해 C와 E 치료법을 비교

 

만약 연구 1에서 A> B라는 결과가 나왔고

연구 5에서 B> D라는 결과가 나왔다면 우리는 간접적으로 A> B> D라고 우위를 짐작해볼 수 있다.

 

위의 상황을 그림으로 표현해 보면,

이와 같은 상황이 된다.

 

따라서 선이 이어진 두 치료법 사이는 "직접비교"가 된 것이고,

선이 이어지지 않은 치료법 사이는 직접 비교되지 않은 것이므로 "간접비교"만 가능한 상황이다. 

 

 

 

 

Preparation

R의 meta와 netmeta package를 이용한다.

 

기본적으로 TE(treatment effect), seTE(TE의 standard error), t1, t2, study label을 포함하여 netmeta 객체를 만들 수 있다.

 

이와 같은 dataframe을 만들고 random model / fixed model을 결정하여 network graph를 만들면,

nm.fe <- netmeta(TE, seTE, treat1, treat2, studlab, data=d, 
                 comb.fixed=TRUE, comb.random=FALSE)
nm.re <- netmeta(TE, seTE, treat1, treat2, studlab, data=d, 
                 comb.fixed=F, comb.random=T)
netgraph(nm.fe)
netgraph(nm.re)

이와 같은 그래프를 그릴 수 있다. 

 

다음 함수로 통계치를 요약해 보면,

summary(nm.fe)

이런 결과를 볼 수 있고, 연구간 이질성이 매우 큰 것을 알 수 있다.

 

 

일관성 검정을 할 수 있는데, 

전체 모델에 대하여

decomp.design(nm.fe)

p value가 매우 작으므로 일관성이 없음을 알 수 있고 (내가 임의로 만든 데이터이고 모든 비교군이 다르므로..)

 

각 치료별 일관성에 대하여

print(netsplit(nm.fe), digits=3)

 

 

특정 intervention에 대한 forest plot은 다음과 같다.

forest(nm.fe, ref="A", digits=3)

 

 

치료별 rank도 구할 수 있다.

rankNmFe <- netrank(nm.fe, small.values = "bad")
print(rankNmFe, sort=F)

 

 

이렇게 R의 meta와 netmeta package를 이용하여 network meta-analysis를 간단히 해 보았다.

댓글()