재현가능연구 - Reproducible Research

한국어로는 적당한 용어가 형성되지 않아 보통 영어를 그대로 읽어 리프로듀서블 리서치(Reproducible Research)라고 부른다. 발음이 매우 길어 불편하지만 적당히 바꿀한 것이 아직은 없다. 한국어로 굳이 바꾸면 “재현가능연구”가 된다. 이하 재현가능연구로 표현하겠다.

재현가능연구는 쉽게 말하면 논문 또는 연구 문서 내에 실제 연구에 사용한 소스 코드와 데이터를 모두 한꺼번에 포함시켜 내용물을 받아본 사람은 누구나 쉽게 다시 재현이 가능할 수 있게 배포자가 배포물을 체계적으로 관리하고 배포하는 것을 말한다.

구체적으로 말하면 R이나 Python 같은 컴퓨터 랭귀지로 분석을 실행한 후 그 소스코드와 데이터를 모두 한꺼번에 묶어서 배포하는 것을 말한다.

R 랭귀지는 Sweave(스위브), Knitr(니터)등을 이용해 TeX(텍)이나 Markdown(마크다운) 스타일의 문서를 작성하고 코드를 안에 함께 내장하는 스타일이 널리 알려져 애용되고 있다.

재현가능연구는 과학 연구를 할 때 연구성과물을 성의있게 관리하는 방법에 대한 일종의 계몽운동이며 패러다임이라고 할 수 있다. 제현가능연구에 대한 필요성이 제기된 처음 발단은 바이오연구의 특정 논문을 재현하고 오류를 찾아내는데 1년이상이 걸렸으며 참조 논문들 모두가 해당 논문의 오류를 그대로 받아들여 문제점까지 그대로 계승해서 엉망진창이 되어 버린 사건이다. 그 이후로 데이터와 소스코드, 기술된 내용을 한꺼번에 저장, 관리, 배포하고 공유하자는 운동으로 시작되었고 현재 미국에서는 현재 보급이 많이 되었다.

Reproducible Research는 논문이나 연구보고서의 재현성을 확보하는 것 외에도 분석 보고서를 간단하게 출판물(PDF), 웹페이지(HTML)로 배포가 가능하게 만들며 온라인 저널리즘(블로깅)까지도 가능하다.

데이터 사이언티스트(Data Scientist)가 필수적으로 익혀야할 것 중 하나로 유행처럼 번지고 있으며 실제로도 적응하면 매우 유용하게 쓰인다.

재현가능연구의 요점

배포한 리포트에 설명문, 코드, 데이터가 모두 포함되어 있어야 한다 데이터는 분량이 많기 때문에 별도로 클라우드 스토리지를 이용하거나 웹사이트에 업로드한 후에 링크를 제공하기도 한다

  • 코드를 그대로 특정 도구를 이형해 재실행 했을때 원본 작성자가 의도한 대로 동일하게 작동해야 한다. 예를 들어 선형회귀에 대한 분석 보고서를 작성했다면 회귀모델을 사용할 때 만든 데이터, 설명, 코드가 포함되어 있어야 한다.
  • 코드를 실행하면 동일한 결과가 나와야 한다.
  • 재현을 하는데 필요한 모든 데이터가 제공되거나 모든 사람이 입수할 수 있어야 한다.

재현가능연구를 위한 도구

현재 가장 잘 알려진 재현가능연구를 도구는 Rstudio + knitr의 조합이다. R언어가 원래 논문이나 연구 리포트를 쓰는데 필요한 도구를 제공하고 있는데 이 자체로도 사실상 Reproducible Research를 지원하는 것이며 knitr는 이 작업을 더 편하게 할 수 있도록 지원하는 R패키지이다. 이외에도 다른 것을 선택해서 쓸 수 있지만 Rstudio + knitr 만큼 잘되어 있는 것은 아직 없다.