본문 바로가기

비단뱀과 알/[R] tidyverse

[R] tidyverse 패키지 입문 : R이 뭔디

일하기 싫습니다.

그래서 문득 제가 실시간으로 멍때리면서 쳐다보고 있는 이 R에 대해서 좀 끄적여 보려고 합니다.

 

 

0. R이 뭐임?

 

사실 여기까지 오셔서 이 글을 읽고 계신 정도면 정말로 R이 뭔지 몰라서 오신 분들은 거의 없을 것 같아요.

R은 통계분석 및 그래프 그리기에 특화된 프로그래밍 언어입니다.

 

https://www.r-project.org/

 

R: The R Project for Statistical Computing

 

www.r-project.org

 

특징으로는,

  • 필요한 기능이 담긴 패키지를 설치한 후 로딩해서 구동되는 방식입니다.
  • R studio 라는, 굉장히 잘 만들어진 편집기가 존재합니다.
    • 또한 이미 파이썬 등을 접해보신 분들께서는 '아나콘다(Anaconda)' 라는 것에 좀 익숙하실텐데, 당연히 콘다로도 설치가 가능하며, 가상환경을 통해 버전 관리를 할 수도 있고, 주피터 노트북(Jupyter notebook)으로도 돌아갑니다.
  • 완전히 동일하지는 않지만, 코드의 기본적인 골자가 파이썬과 유사한 면이 많습니다. 일타쌍피 가능

 

한 마디로 "접근성이 좋다" 입니다.

제가 생각하는 R만의 장단점을 끄적여보면, 우선 장점으로는

  • 공짜입니다. 일단 이걸로 STATA나 SAS보다 진입장벽이 훨씬 낮습니다.
  • Posit cloud 라는 클라우드 서비스가 있습니다. 무료판으로 돌릴 경우, 램 1GB에 싱글코어, 백그라운드 구동 시간이 1시간이라는 눈물나는 성능으로 제한되어 있지만, 와이파이만 터진다면 핸드폰이나 태블릿으로도 설치 없이 R을 실행은 시킬 수 있다는 어마무시한 장점이 있습니다.
  • R studio에는 자체적인 마크다운(markdown) 편집기가 있어서, 수식과 코드를 포함한 보고서 작성이 쉽습니다. 파일이 MS워드로도 변환이 돼서 웬만해서는 호환성도 좋습니다.
  • 데이터 분석 자체는 어렵지 않습니다. 가령 단순 선형회귀는 물론, PCA / GLM / LASSO / Ridge / Quantile regression / Cubic spline / B-spline 등 구글링만 해봐도 뭔소린지 한 줄도 못알아먹겠는 모형들을 단 한 줄의 코드로 뽑아내고, 섞고, 그림까지 그릴 수 있습니다 (물론 이런 다양한 통계 모형들이 익숙하신 분들도 계시겠지만 그렇다면 R에 익숙하지 않을 리가 없을 겁니다).
  • 그림이 정말 예쁘게 나옵니다. 아직도 흑백에 해상도는 화질구지인 19XX년대 논문 그래프를 뽑아내는 모 소프트웨어들과는 달리, 두 세줄 짜리 간단한 코드만으로 깔끔하고 컬러풀한 그림을 그릴 수가 있습니다.

 

당연히, 장점이 있다면 단점도 있을 겁니다.

  • 상술했다시피, 데이터 분석 자체는 어렵지 않습니다. 그 말은 내가 가야할 길을 어느 정도는 알고서 써야 한다는 뜻입니다. 전혀 들어맞지 않는 모형을 돌려도, 예를 들어 결과가 0 아니면 1로만 나오는 모형에 직선 회귀 식을 fitting해도, R은 결과를 뱉습니다. 사전 지식이 부족하다면 분석의 첫 단추부터 잘못 끼워도 모를 수 있습니다.
  • 코딩이 처음이시라면 문법이 썩 쉬운 편은 아닙니다. 혹자는 쉽다고 하는데, 패키지로 돌아가는 언어인 만큼 양도 방대하고 문법이 그다지 친절하지는 않습니다.
  • 독학하기엔 자료가 조금 중구난방입니다. 내가 필요한 건 '저기까지 차와 기차 중 뭘 타야 하는지' 인데, R 자체에서 제공하는 도움말은 대부분 '자가용은 왼쪽이 브레이크 오른쪽이 악셀이다', '기차를 탈거면 티켓을 끊고 지정 좌석에 앉아서 가라' 이딴 식입니다. 맨 땅에서 가이드 없이 시작하기엔 꽤 막막할 수 있습니다.
  • 다른 언어에 비해 성능이 조금 후집니다(?). 예를 들어, 다른 언어와 비슷한 기능과 문법을 갖는 for 문(혹은, for-loop)의 경우, R에서는 그들보다 성능이 훨씬 구려 R 내에서는 거즘 '최후의 수단' 같은 이미지입니다.

 

물론 제가 R을 쓰는 이유는, 제 환경에선 R을 통해 소통하는 게 가장 편해서 이기도 하고, "공짜"라는 압도적인 장점이 있기 때문입니다. 하루 이틀 쓸 것도 아니고 나만 쓸 것도 아닌데 비용 생각을 안할 수가 없습니다.

 

그럼에도 단점들을 읽어보면 꽤나 치명적인데, 어째서 우리의 R은 아직까지 살아있는 걸까요? 공짜 통계처리 언어라면 파이썬으로도 할 수 있고, 심지어 성능도 더 구리다면서.

 

개인적으로 생각하는 답은, R은 통계적 처리만을 '배타적으로' 수행하기 위해 고안된 툴이라서 그렇지 않나 합니다. 무슨 말이냐면, 전 세계에서 R을 쓰는 목적은 '통계' 하나라서 그런 것 같다 싶습니다. 거기에 인풋 비용이 없어 누구나 쉽게 접근이 가능하니, 그래서 위처럼 분석도 그림도 쉽게쉽게 뽑아낼 수 있는 형태의 R이 만들어진 게 아닐까 해요.

 

그럼 R에 입문해보자! 하는데, 뭐부터 해야 할지 모르겠습니다.

그렇지만 R에 익숙하신 대부분의 분들께서는 아마 초심자에게 '이거 먼저 해라' 라는 게 비슷할 것 같습니다.

TMI가 길어져서 뺐지만, 지금의 R의 명줄을 담당하는 바로 그 패키지,

tibble 이라는 자료 형태로 하드웨어적인 효율성은 키우면서, 데이터를 만지작 거리는 웬만한 일은 다 할 수 있게 만든 그 패키지.

 

바로 'tidyverse(타이디버스)' 라는 이름의 패키지입니다.

 

그런고로 요 tidyverse와, 이 데이터로 그림을 그릴 수 있는 ggplot2 라는 패키지, 마지막으로 선형 회귀분석을 R에서 구현하는 게 얼마나 쉬운 일인지를 보여 드리기 위한 lm() 함수까지, 시간이 날 때마다 주저리주저리 다뤄 보도록 할게요.