연구의 장기 재현성을 높이는 방법 (특히 R과 Sweave 사용)


31

상황 : 재현 가능한 연구에 대한 이전 질문에 대한 답으로 Jake는

JASA 아카이브를 작성할 때 발견 한 한 가지 문제점은 CRAN 패키지의 버전 및 기본값이 변경되었다는 것입니다. 따라서 해당 아카이브에는 사용한 패키지 버전도 포함됩니다. 사람들이 패키지를 변경하면 비 네트 기반 시스템이 작동하지 않을 수 있습니다 (패키지 내에 패키지 내에 추가 패키지를 포함시키는 방법을 잘 모름).

마지막으로 R 자체가 변경 될 때 어떻게해야하는지 궁금합니다. 예를 들어 종이에 사용 된 전체 계산 환경을 재현하여 가상 머신이 크지 않은 가상 머신을 생성 할 수있는 방법이 있습니까?

의문:

  • 나중에 재현 가능한 데이터 분석을 재현 할 수있는 좋은 전략은 무엇입니까 (예 : 게시 후 5 년, 10 년 또는 20 년)?
  • 특히 Sweave와 R을 사용할 때 지속적인 재현성을 극대화하기위한 좋은 전략은 무엇입니까?

이것은 재현 가능한 데이터 분석 프로젝트가 기본값, 패키지 등이 약간 다른 다른 사람의 컴퓨터에서 실행되도록하는 문제와 관련이있는 것 같습니다.


이론적 인 동작을 확인하기 위해 RUnit을 사용한 단위 테스트를 고려 했습니까?

답변:


18

어느 정도는 불가능합니다. 유명한 Pentium 부동 소수점 버그의 경우를 고려하십시오. 모델, 데이터, 매개 변수, 패키지, 모든 외부 패키지, 호스트 시스템 또는 언어 (예 : R) 및 OS를 보존 할 필요는 없습니다. 잠재적으로 하드웨어가 모두 작동했을 가능성이 있습니다. 이제 일부 결과는 시뮬레이션 기반 일 수 있으며 특정 기계 클러스터가 필요할 수 있습니다 ...

그것은 실용적 일뿐입니다.

즉, 개정 제어에서 코드 (및 데이터)의 버전을 관리하는 실용적인 방법은 모든 관련 소프트웨어의 버전을 저장하고 단일 최상위 스크립트를 실행하여 결과를 재현 할 수있게하는 것입니다. 충분하다 "타협.

귀하의 마일리지가 다를 수 있습니다. 이것은 또한 분야 나 산업에 따라 다릅니다. 그러나 오래된 시스템은 바보 같은 시스템의 불가능에 대해 기억하십시오. 당신은 단지 더 똑똑한 바보를 만듭니다.


1
(+1) 나는 당신에게만 동의 할 수 있습니다. 특히 R에 대해 (a) 패키지를 업데이트 한 후 (최근에 발생하는) 일부 계산이 재현 가능하게 유지되고 (b) 하루 종일 종속성과의 충돌이 발생하지 않도록하는 것이 매우 어렵습니다 (예 : 에 대한 lme4).
chl

13

재현성의 첫 번째 단계는 데이터를 미래의 연구원이 쉽게 읽을 수있는 형식으로 만드는 것입니다. 플랫 파일은 여기에 분명한 선택입니다 (Fairbairn in press).

장기적으로 코드를 유용하게 만들려면 코드의 기능과 작동 방식을 모두 설명하는 명확한 문서를 작성하여 툴 체인이 사라지면 향후 시스템에서 분석을 다시 구현할 수 있습니다. .


1
먼저 합의 된 견고한 데이터 및 메타 데이터.
mindless.panda

11

한 가지 전략은 cacher패키지 를 사용하는 것 입니다.

  • Peng RD, Eckel SP (2009). "캐시 된 계산을 사용한 분산 재현 가능한 연구", 과학 및 엔지니어링의 IEEE 컴퓨팅, 11 (1), 28-34. ( PDF 온라인 )
  • Roger Peng 웹 사이트 에서 더 많은 기사를 참조하십시오

더 많은 논의와 예는이 책에서 찾을 수 있습니다 :

그러나, 나는 지속적인 재현성을 보장하는데있어서 그 효과에 대한 직접적인 경험이 없다.


7

가상 머신 라우트에 관심이 있다면 특정 버전의 R과 패키지가 설치된 작은 리눅스 배포판을 통해 가능할 것이라고 생각합니다. 데이터는 스크립트와 함께 포함되며 모든 것을 가상 상자 파일 에 패키지 합니다.

인텔 CPU 버그와 같이 앞에서 언급 한 하드웨어 문제는 해결되지 않습니다.


4

나는 이미 존재하는 훌륭한 답변 외에 두 가지를 추천 할 것입니다.

  • 코드의 키 포인트에서 현재 데이터를 플랫 파일로 덤프하고 주석에 적절하게 이름을 지정하고 설명하여 한 패키지가 차이점이 발생한 다른 결과를 생성했는지 강조 표시합니다. 이러한 데이터 파일과 원본 입력 및 결과 출력은 '재현 가능한 연구 세트'에 포함되어야합니다.

  • 예를 들어 TestThat 과 같은 코드를 사용하여 코드 내에 관련된 패키지에 대한 테스트를 포함하십시오 . 어려운 부분은 작고 재현 가능한 테스트를 수행하여 패키지 와 관련된 패키지의 변경 사항을 강조 할 가능성이 있음 분석 수 있습니다. 이것은 적어도 환경에 차이가 있다는 것을 다른 사람에게 강조 할 것입니다.


1

좋은 제안입니다. 지금 살펴볼 것이 많습니다.

매우 중요한 고려 사항 중 하나는 작업이 처음에 "올바르게"이루어 지도록하는 것입니다. 이것은 Sweave 와 같은 도구가 수행하는 역할이며, 수행 한 작업과 수행 한 작업이 동일 할 가능성을 높입니다.


1
: 수마트라 프로젝트도 도움이 될 수 있습니다 하나입니다 neuralensemble.org/trac/sumatra/wiki . 커맨드 라인 인터페이스를 사용하여 코드를 실행하거나 R 또는 다른 코드로 실행할 수 있습니다. 파이썬 API도 있습니다. R- 블로거에 대한 재현 가능한 연구를위한 R 중심 도구에 대한 멋진 블로그 게시물이 있으며 Sumatra 사용에 대해서도 언급합니다. r-bloggers.com/managing-a-statistical-analysis-project- –-guidelines-and-best-practices /
Josh Hemann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.