본문 바로가기
카테고리 없음

[PoliscieR] 작업환경 구축하기 (feat. Project TIER)

by 간비상벨 2021. 2. 7.
반응형

2월 말부터 3월 초-중까지 바쁘게 달려야 하는 일정이 있어서 아마 주에 하나 정도씩 글을 올리게 될 것 같습니다. 앞서 STATA 혹은 R로 했던 연구들을 재현하면서 전처리와 분석, 그리고 시각화를 중심으로 포스팅할 계획이라고 밝힌 바 있습니다. 그런데 생각해보니 그에 앞서 먼저 짚고 넘어가야 될 내용이 있는 것 같아서 오늘의 주제는 "작업환경 구축하기"로 잡았습니다. 경험 상 첫 발을 내딛을 때, 잘 내디뎌야 다음 단계로 넘어가기가 수월합니다. 연구가 다 마무리되고 난 뒤에도 재현 가능한 결과들을 위한 정리도 수월하구요.

 

이번 포스팅은 제 블로그에 있는 Project TIER (Teaching Integrity in Empirical Research) 라는 포스팅에 바탕을 두고 있습니다. 해당 포스팅은 Project TIER라고 하는 연구 윤리 및 연구 투명성과 관련된 일종의 프로젝트 홈페이지의 내용 일부를 정리해 옮긴 것입니다. 따라서 아마 이번 포스팅은 Project TIER 홈페이지의 내용을 정리한 제 개인 블로그의 글(작성: 2020. 7. 1.)에서 약 7개월 간의 경험을 거쳐 업데이트된 내용을 "작업환경 구축하기"라고 라벨링 한 포스팅이 되겠습니다.

Project TIER (Teaching Integrity in Empirical Research)

사진출처: projecttier.org

Project TIER란?

일단 Project TIER (이하 TIER)은 Teaching Integrity in Empirical Research의 약자로 <경험연구의 연구윤리> 혹은 <경험연구의 학습윤리> 정도로 이해할 수 있습니다. TIER의 구체적인 내용은 해당 홈페이지에서 자세하게 살펴볼 수 있는데, 가서 보시기 불편하지 않게 앞에 언급한 제 네이버 포스팅에 간단히 정리해 놓았으니 살펴보시면 될 것 같습니다.

중요한 이유 (앎이란 다다익선...)

여기서는 더 간단히 TIER을 사회과학자들을 대상으로 한 일종의 연구윤리강령이라고 이해하시면 될 것 같습니다. 많은 사회과학자들이 경험적 연구를 수행하는데 필요한 규준과 절차를 제시하고 있는 게 바로 TIER입니다. 그러면 여기서 한 가지, "왜" 이런 게 필요한가라는 근본적인 의문이 떠오를 수 있습니다.

  1. 명목적으로는 투명성, 전문성, 그리고 재현 가능성을 제고하기 위해서입니다.

    • 사회과학이란 우리가 일반적으로 생각하는 물리학과 같이 실험실에서 여러 조건들을 통제하는 경성 과학(hard science)은 아니지만 마찬가지로 어떤 사회현상이 왜 나타나는가에 대한 지식을 생산하는 활동입니다. 어떤 자연현상을 대상으로 이러한 지식을 창출해내기 위한 규칙을 자연과학이라고 한다면, 사회현상을 대상으로 하면 사회과학이라고 하는 것이죠.

      • 따라서 과학은 지식 그 자체가 아니라 어떤 지식을 만들기 위한 논리적 도구이면서 동시에 규칙들의 집합이라고 할 수 있습니다.

      • 이 말은 제가 생산해낸 과학적 지식은 다른 사람도 저와 동일한 조건 하에서 같은 규칙과 규준을 알고 있다면 동일한 결과를 생산해낼 수 있어야 한다는 말과 같습니다.

      • 이 점에서 이러한 규칙/규준과 조건들을 전문적으로 통용되는 언어를 통해서 투명하게 드러내는 작업(투명성 + 전문성)은 그 결과가 재현 가능하며 과학적 결과물이라는 것을 확인시켜준다고 할 수 있습니다.

  2. 과학적 지식 생산과 그에 관련된 연구윤리를 제고하고자 하는 명분이 위와 같다면, 조금 더 직설적으로 말해서 이렇게 정립해두지 않으니까 종종 사고가 터졌기 때문입니다.

    • 요약: 모르는 게 아니라 안 해서 문제. 

    • 여기에 기가 막히게도 슬픈 사례가 하나 있습니다.

      • 이전의 선행연구들에서 보여주지 못했던 신박한 결과를 경험적 연구를 통해 제시한 한 대학원생 연구자(A)가 있었습니다. 그는 분야의 권위자 중 한 명이자 자신의 학부 때 지도교수(B)와 함께 그 논문을 권위 있는 저널에 게재하기에 이릅니다.

      • 그런데 그 논문 주제에 관심을 가지고 확장해보려고 하던 한 다른 연구자(C)가 연구를 재현하기 위해 조사하던 중 이상한 점을 몇 가지 발견합니다. (1) 일단 A가 가진 설문 데이터를 만들기 위해서는 단순히 응답자 수로만 추산해봐도 거의 백만 달러, 우리 돈으로 약 10억 원에 해당하는 비용이 예상되었습니다. (2) 그리고 A가 밝힌 설문조사 업체들에게 A가 한 것과 같은 방식의 조사를 의뢰하고 싶다고 문의하자 업체들이 자신들은 그런 조사는 하기 어려우며, 하더라도 대학원생 수준에서는 감당하기 어려운 예산일 것이라고 응답한 것입니다.

      • 결국 C는 다른 동료 몇과 함께 AB의 연구를 검토해 그 결과가 조작되었다는, 정확히는 데이터 자체가 조작되었다는 27쪽짜리 보고서를 작성하기에 이릅니다.

    • 위의 사례와 같은 사고(...?)가 몇 차례 터지니 자연스럽게 사회과학 분야에서도 TIER과 같은 일련의 규준이 마련되고 공시되며 강조되기 시작한 것이라고 할 수 있습니다.

      • 개인적으로는 사회과학에서 사용하는 자료나 연구 대상은 사회 현상, 즉 사람의 문제라 자연현상을 대할 때보다 여러 모로 가치(value)의 문제가 불거질 수 있습니다. 그런데 뭐랄까요... 엄청 기법이 빨리 들어온 것 같습니다. 정확히는 기법의 발전 속도와 확산이 엄청 빠르게 진행되어서 불거진 문제라고도 할 수 있을 것 같습니다. 연구 대상이 다른데, 방법은 같으니 그 사이에 존재할 수 있는 문제를 함께 고민했었어야 하는데 말이죠.

그런데 이걸 어디다 쓰느냐?

TIER이 어떻게 등장하게 되었는지를 떠나서, 그럼 이건 어디다 써먹느냐? 이게 작업환경을 구축하는 거랑 무슨 상관이 있냐 라고 생각하실 수 있습니다. 이전 포스팅에서 말씀드렸다시피, 체계적인 커리큘럼을 바탕으로 경험과학적 연구의 규칙을 학습해오셨다면 이미 아는 내용일 수 있습니다. 그런데 적어도 저는 과도기 단계에서 학사와 석사를 마치면서 위와 같은 내용을 처음에 차근차근 배웠다기보다는 다 따로따로 배웠습니다. 예를 들어, 과학철학에서 과학적 지식의 위상에 관한 내용 따로, 그리고 기법적으로 기초통계, 회귀분석 따로... 이런 식으로 말이죠. 아마 연구 주제를 발전시키는 과정에서 경험과학적 연구방법을 뒤늦게 공부하신 분들의 경우, 머릿속에서 저런 것들이 다 따로 놀고 있을 수 있다고 생각합니다 (네, 저였습니다... 나란 놈... 바보 똥멍청이...).

  • TIER을 소개해드린 이유는 TIER가 제시하는 일련의 프로토콜이 한 번쯤은 "연구윤리의 강령"으로서 알아둘 필요가 있다고 생각되는 것과 동시에 실질적으로 연구를 수행하는 데 필요한 팁들을 제시해주기 때문입니다.

  • TIER은 사회과학자들이 투명하고 전문적이며 재현가능한 연구를 수행하기 위해 필요한 작업 절차에 대한 개관(overview)을 제시하고 있습니다.

    • 즉, 재생산 가능한 문서를 만드는 것은 연구 절차 마지막까지 질질 끌다가 따로 정리해야 하는 작업이 아니라는 것을 의미합니다. 연구자는 데이터를 가지고 작업을 시작하기 이전도 이 같은 문서화 작업을 구성해야만 하고, 연구 과정에 따라서 이를 업데이트해야 한다는 것입니다.

    • R을 쓰던 STATA를 쓰던 이건 동일합니다. R 스크립트에 열심히 코멘트 달고 STATA do 파일에 열심히 코멘트 다는 게 괜히 다는 게 아니죠. 하지만 그것만으로는 부족합니다. 열심히 작업을 하며 나름 정리한다고 save as를 통해 저장을 하다 보면 어느 순간 우리는 끔찍한 혼종의 스크립트 파일을 마주하게 됩니다.[각주:1]

TIER 내 연구에 써먹어보기

아래가 TIER 프로토콜이 제안하는 문서화의 구조입니다.

  • 오리지널 데이터 파일 폴더를 만들어서 필요할 때, 연구에 사용하는 원자료를 불러올 수 있도록 하라는 것이죠. 한 번 불러오고 거기다가 덮어썼다가 문제 생기면 매번 새로 다운로드하지 말고.

  • 분석 데이터 파일은 오리지널 데이터를 실제로 전처리해서 분석에 사용하는 데이터를 저장하는 폴더를 말합니다.

  • 커맨드 파일 폴더는 분석 데이터를 바탕으로 연구의 결과물을 산출하는 코드 등의 스크립트를 보관하는 곳입니다.

  • 문서화 폴더는 최종 페이퍼와 데이터에 관한 부록, 프로젝트 전반에 대한 특기사항이 적힌 지침 등을 보관하는 공간입니다.

연구 폴더의 기본 구조 세팅

처음에 연구를 시작할 때, 폴더 구조는 기본적으로 세팅을 해놓으면 나중에 고생을 덜 할 수 있습니다 (경험에서 우러나오는 말...). 일단 저는 GitHub를 활용합니다.

Rproj 만들기

GitHub를 사용하신다면 .Rproj를 만들어서 연동시키면 되겠지만, 일단 여기서는 .Rproj를 이용해서 연구 폴더를 만드는 것을 살펴보겠습니다. 이 프로젝트를 이용하는 이유는 여러 가지가 있겠지만,

  1. 일일이 R-script의 작업 디렉토리를 설정해줄 필요가 없다는 것[각주:2]

  2. 연구 단위별로 관리를 하기 용이하다는 점에서 사용합니다.

먼저 Rstudio 우측 상단에 Project: (None)이라고 되어 있는 부분을 클릭합니다. 그러면 New Project를 만들 수 있는 버튼이 보입니다. 그걸 클릭해줍니다.

누르고 나면 어떻게 새로운 프로젝트를 만들 건지 물어봅니다. R이나 다른 프로그래밍을 하면서 항상 느끼는 것이지만, "결과는 동일할지 몰라도 그 결과를 얻는 방법은 한 가지가 아닙니다." 만약에 GitHub 사용이 능숙하신 분이라면 Version Control로 이미 GitHub에 만들어 높은 repository를 가져오실 수도 있을 것이고, 아니면 {usethis} 패키지를 이용해서 설치할 수도 있을 것입니다. 아니면 지금 저처럼 New Directory를 이용할 수도 있을 것이고, 직접 로컬 디렉토리를 지정해서 Exisitng Directory로 만들 수도 있습니다. 정답은 없습니다. 저는 보통 New Directory나 {usethis} 패키지를 많이 이용합니다.

 

[New Directory] - [New Project] 선택
새로운 프로젝트 만들어주기: 디렉토리 이름과 위치 설정

순서대로 실행하다보면 새로운 프로젝트의 디렉토리 이름과 위치를 설정해주는 선택창이 나올텐데요, 저는 보통 디렉토리 이름을 연도, 연구 유형(개인연구인지 공동연구인지), 그리고 그 프로젝트를 확인할 수 있는 라벨(keyword를 통해)로 이름을 짓습니다.

 

이름을 짓고 난 다음에는 로컬 디렉토리 어디에 이 프로젝트를 위치시킬 건지 설정할 수 있구요, 만약 이 프로젝트를 연동하는 git repository를 만들고 싶으면 그 아래의 Create a git repository 버튼을 누르면 됩니다. 그 아래의 {renv} 패키지에 대해서는 여기서 언급하지 않겠습니다.

 

새롭게 만든 프로젝트가 RStudio에서 구현된 결과

이렇게 설정을 하고 나면, 우측 상단의 Project가 지정한 이름으로 바뀌어 있고 getwd()를 통해 해당 프로젝트를 기본 작업 디렉토리로 설정하고 있음을 알 수 있습니다.

작업을 위한 세부 폴더 만들기

이제 다음은 세부 폴더들을 만들어줄 차례입니다. 저는 연구를 수행하면서 앞서 TIER에서 제안한 폴더 구조를 조금 바꾸어 다음과 같이 활용합니다. 적어도 저는 현재까지 이런 식으로 구성해서 연구 시작 전에 세팅하고 들어가는데, 나중에라도 손보거나 하기 쉽더라구요.

그럼 .Rproj가 구동되어 있다고 가정하고 순서대로 서브 디렉토리를 만들어보겠습니다. 저는 디렉토리를 생성하는 dir.create() 함수를 이용합니다.

# 문서화와 그 하위 폴더 만들기
dir.create("Documentations")
dir.create("Documentations/Literature")
dir.create("Documentations/Figures")
dir.create("Documentations/Tables")
dir.create("Documentations/Archive")

문서화 폴더 (Documentations)

먼저 문서와 관련된 (.tex, .docx, .Rmd, .hwp 등) 자료들을 집어넣는 것이 바로 문서화(Documentations) 폴더가 되겠습니다. 저는 위의 그림처럼 크게 선행연구(e.g. 다른 논문이나 책 등에 대한 pdf 자료)를 집어넣는 폴더와 나중에 문서화 폴더에서 최종 문서에 들어갈 표, 그림들을 보관하는 폴더들, 그리고 마지막으로 이전 버전의 자료들을 한 데 모아둘 아카이브(archive) 폴더를 만들어 둡니다.

  • 선행연구 폴더의 경우, 나중에 GitHub에 올리거나 타인에게 프로젝트를 공유할 때는 제외하고 공유합니다(git.ignore 이용). 자료의 저작권 문제 등을 고려해서요.

  • 문서화 자료 안에 종류에 따라서 manuscripts, slides 등과 같은 다른 유형의 결과물들을 구분해서 집어넣기 위한 폴더를 집어넣기도 합니다.

커맨드 파일

다음으로는 커맨드 파일입니다. 주로 분석하는 R-script가 들어가는 폴더가 됩니다.

dir.create("Commands")

데이터 폴더

마지막으로 데이터 폴더입니다. 저는 그냥 데이터 폴더라는 큰 울타리 안에 원자료와 전처리 후 분석 자료를 함께 넣어둡니다. 그리고 원자료 폴더 안에 코드 북 등과 같은 데이터와 관련된 자료를 넣어둡니다.

dir.create("Data")
dir.create("Data/Raw")
dir.create("Data/Raw/Codebooks")
dir.create("Data/Analysis")

이렇게 만들 때, 제가 고려하는 것은 큰 그림은 위에서와 같은 그림대로 구성하고 각 폴더의 이름에는 혹시 모르니 띄어쓰기를 넣지 않으며 맨 앞은 대문자로 작성한다는 것 정도? 입니다.

STATA로는?

STATA 자체를 이용해서 폴더 만들기는 자주 해보지는 않았습니다. 사실 이런 작업 절차가 습관이 된 것이 R로 넘어오고 난 다음이기 때문인데요, 위의 코드를 STATA 식으로 재구성하면 다음과 같이 do.file에 적어주시면 될 것 같습니다. 근데 저는 STATA 쓸 때에는 작업디렉토리 그냥 윈도우에서 열심히 새폴더 만들기로 그냥 했었습니다. 그랬던 과거의 나가 커서 지금의 제가 되었으니 뭐...

# 현재 작업폴더 확인하기
cd
# 원하는 작업 디렉토리로 재설정하기
cd "C:\새로운 작업공간\Project"

# 커맨드 폴더 만들어주기
mkdir "C:\새로운 작업공간\Project\Documentation\Commands"
doedit "C:\새로운 작업공간\Project\Documentation\Commands\script.do"
# 이제 모든 코드를 이 do에다 작성

# 문서화 폴더 만들어주기
mkdir "C:\새로운 작업공간\Project\Documentation"
mkdir "C:\새로운 작업공간\Project\Documentation\Figures"
mkdir "C:\새로운 작업공간\Project\Documentation\Tables"
mkdir "C:\새로운 작업공간\Project\Documentation\Archives"

# 데이터 폴더 만들어주기
mkdir "C:\새로운 작업공간\Project\Data"
mkdir "C:\새로운 작업공간\Project\Data\Raw"
mkdir "C:\새로운 작업공간\Project\Data\Raw\codebooks"
mkdir "C:\새로운 작업공간\Project\Data\Analysis"

나가며

정치학에도 여러 세부 분야와 다양한 접근법들이 있습니다. 하지만 저는 기본적으로 경험과학적 접근법을 따르고 있기 때문에 정치학에서 과학적 지식을 얻기 위한 조건---과학적 규칙과 규준을 따르는 일에 대해서는 언제나 소홀해지지 않도록 노력하고 있습니다. 그리고 가장 기본적인 작업 중 하나는 일관성 있고 투명한 작업 프로세스를 유지하는 것이고, 오늘 포스팅이 그에 관한 내용이었습니다.

 

저보다 더 고수분들이 (요즘 Slack이나 Facebook만 봐도 ㅎㄷㄷ...) 넘쳐나는 세상이지만 하나의 사례가 더해질 수록 효용은 R-square 같이 늘어날 것이라 기대하며 글을 적어보았습니다. 발전을 위한 조언, 자신만의 팁 등 생각나는 것이 있다면 모두 기탄없이 공유해주시면 좋을 것 같습니다 (더... 더... 잘하고 싶어요...!).

 

마지막으로 Rstudio를 사용하며 조금은 소홀해져버린 저의 옛 사랑... STATA의 사진을 남기며 떠납니다. 앞으로 이 칼럼 게시판에서는 볼 일 없을 아이...

안녕 STATA. 그 동안 고마웠다.

R meets Political Science by SH Park

⚡ 제 소개는 블로그 집필진에서 확인하실 수 있습니다.
🌱 활동 공간

 

pherephobia - Overview

Hi, I am a Ph.D. student in the Department of Political Science at the University of South Carolina. I study Comparative Politics, International Relations. - pherephobia

github.com

 

Political Science of Reality : 네이버 블로그

Social scientists always are commuters between two worlds: the world they make and the world they mirror – the world of abstract models and the empirical world they inhabit.” H. Gudmund, Real Virtuality (1988). https://shpark.netlify.com/

blog.naver.com

 

  1. 그리고 나는 스크립트를 돌리며 울부짖는다. 틀림없이 됐었는데, 그저께까지는 머지가 잘 됐었는데... [본문으로]
  2. 해당 프로젝트를 RStudio를 통해서 열면, 그 프로젝트가 기본 작업 디렉토리로 설정됩니다. 매번 setwd()로 설정해줄 필요가 없어서 마음에 들었습니다. [본문으로]
반응형

댓글