재현가능연구 - Reproducible Research

재현가능연구 - Reproducible Research

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

개요

재현가능연구를 간단히 설명하면 과학연구의 산출물을 오픈소스로 내놓고 누구라도 검증해 볼 수 있게 만들라는 것이다.

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

현실의 예를 들어서 말하면 R이나 Python 같은 컴퓨터 랭귀지로 분석이나 실험 연구를 진행한 뒤 또는 하면서 거기에 사용한 소스코드와 데이터를 모두 한꺼번에 묶어서 압축파일로 묶은 뒤 github가 같은 곳에 배포해서 다른 사람들이 언제라도 연구결과를 재현하고 확인할 수 있게 한다는 것이다.

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

연구윤리와의 관련

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

연구윤리는 문제는 지속적으로 있어왔는데 검증이 제대로 되지 않거나 실수를 해서 잘못한 연구결과를 저널(학회지)에 발표하면서 생기는 연구자의 비도덕적 또는 불성실한 행위가 일반적인데 상당히 많은 논문들이 검증이 되지 않고 참고되거나 검증을 해보면 내용과 결과가 일치하지 않기도 한다. 특히 실험연구에서 발표자가 잘못된 내용임을 이미 알고 발표할 때 다른 사람이 재현을 할 수 없게 한 경우도 많이 있다고 한다.

연구자나 과학자가 잘못된 결과를 발표하는 것은 도덕적으로 문제가 없다. 하지만 결과를 누구라도 확인하고 검증할 수 있게해서 잘못된 것이 있다면 빨리 공지하고 오류에 대한 것을 보강하거나 잘못된 점을 인정하고 폐기해야 하는 것이 윤리이다.

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

데이터 사이언티스트(Data Scientist)가 필수적으로 익혀야할 것 중 하나로 유행이 되었고 지금은 주류가 되었다. 실제로도 적응하면 매우 유용하고 좋다.

재현가능연구의 실행 방법

  1. 배포물에 설명문, 코드, 데이터가 모두 포함되어 있어야 한다.
  2. 코드를 그대로 본인이 사용한 도구를 사용해서 재실행 했을때 원본 작성자가 의도한 대로 동일하게 작동해야 한다.
  3. 코드와 데이터 포맷은 가능한 특정한 것을 사용하지 않고 다른 사람들이 비용에 관계없이 사용할 수 있는 오픈소스 또는 무료 소프트웨어나 랭귀지를 사용한다.
  4. 다른 사람이 코드를 실행하면 자신이 배포한 문서의 내용과 동일한 결과를 볼 수 있어야한다.
  5. 재현을 하는데 필요한 모든 데이터가 제공되거나 모든 사람이 입수할 수 있어야 한다.
  6. 데이터는 분량이 많기 때문에 별도로 클라우드 스토리지를 이용하거나 웹사이트에 업로드한 후에 링크를 제공해도 되는데 어떤 사람이라도 공개된 공간에서 인증없이 받을 수 있어야 한다.

예를 들어 마이크로어레이로 단백질에 대한 연구를 실행했고 회귀분석을 했다고 하면 회귀분석에 사용한 데이터, 코드, 리포트가 배포물에 포함되어 있어야 하고 코드는 작동해서 동일한 내용의 리포트를 얻을 수 있게해 주어야한다.

재현가능연구를 위한 도구

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